From owner-freebsd-hackers@freebsd.org Sat Apr 13 10:22:15 2019 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C3443157463C for ; Sat, 13 Apr 2019 10:22:15 +0000 (UTC) (envelope-from freebsdnewbie@freenet.de) Received: from mout2.freenet.de (mout2.freenet.de [195.4.92.92]) (using TLSv1.2 with cipher ECDHE-RSA-CHACHA20-POLY1305 (256/256 bits)) (Client CN "*.freenet.de", Issuer "TeleSec ServerPass Class 2 CA" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 98FDF76A5D for ; Sat, 13 Apr 2019 10:22:14 +0000 (UTC) (envelope-from freebsdnewbie@freenet.de) Received: from [195.4.92.165] (helo=mjail2.freenet.de) by mout2.freenet.de with esmtpa (ID freebsdnewbie@freenet.de) (port 25) (Exim 4.90_1 #2) id 1hFFnO-0000CN-Ny for freebsd-hackers@freebsd.org; Sat, 13 Apr 2019 12:22:02 +0200 Received: from [::1] (port=51670 helo=mjail2.freenet.de) by mjail2.freenet.de with esmtpa (ID freebsdnewbie@freenet.de) (Exim 4.90_1 #2) id 1hFFnO-0003gQ-NP for freebsd-hackers@freebsd.org; Sat, 13 Apr 2019 12:22:02 +0200 Received: from sub7.freenet.de ([195.4.92.126]:41686) by mjail2.freenet.de with esmtpa (ID freebsdnewbie@freenet.de) (Exim 4.90_1 #2) id 1hFFlF-0002dk-V9 for freebsd-hackers@freebsd.org; Sat, 13 Apr 2019 12:19:49 +0200 Received: from p4ffc6259.dip0.t-ipconnect.de ([79.252.98.89]:49293 helo=freebsd-t450.fritz.box) by sub7.freenet.de with esmtpsa (ID freebsdnewbie@freenet.de) (TLSv1.2:ECDHE-RSA-CHACHA20-POLY1305:256) (port 587) (Exim 4.90_1 #2) id 1hFFlF-0004aw-SO for freebsd-hackers@freebsd.org; Sat, 13 Apr 2019 12:19:49 +0200 Date: Sat, 13 Apr 2019 12:19:47 +0200 From: Manuel =?iso-8859-15?Q?St=FChn?= To: freebsd-hackers@freebsd.org Subject: Allocate resources from dts-node Message-ID: <20190413101947.GA5005@freebsd-t450.fritz.box> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline User-Agent: Mutt/1.11.4 (2019-03-13) X-Originated-At: 79.252.98.89!49293 X-Rspamd-Queue-Id: 98FDF76A5D X-Spamd-Bar: --- Authentication-Results: mx1.freebsd.org; spf=pass (mx1.freebsd.org: domain of freebsdnewbie@freenet.de designates 195.4.92.92 as permitted sender) smtp.mailfrom=freebsdnewbie@freenet.de X-Spamd-Result: default: False [-3.97 / 15.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; RCVD_COUNT_FIVE(0.00)[5]; RWL_MAILSPIKE_POSSIBLE(0.00)[92.92.4.195.rep.mailspike.net : 127.0.0.17]; FROM_HAS_DN(0.00)[]; R_SPF_ALLOW(-0.20)[+ip4:195.4.92.0/23]; FREEMAIL_FROM(0.00)[freenet.de]; MIME_GOOD(-0.10)[text/plain]; MIME_TRACE(0.00)[0:+]; TO_DN_NONE(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; RCVD_TLS_LAST(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MX_GOOD(-0.01)[emig.freenet.de,emig.freenet.de,emig.freenet.de,emig.freenet.de]; NEURAL_HAM_SHORT(-0.84)[-0.839,0]; DMARC_NA(0.00)[freenet.de]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; IP_SCORE(-0.72)[ip: (-1.61), ipnet: 195.4.0.0/16(-1.05), asn: 5430(-0.95), country: DE(-0.01)]; FROM_EQ_ENVFROM(0.00)[]; RCVD_IN_DNSWL_LOW(-0.10)[92.92.4.195.list.dnswl.org : 127.0.5.1]; R_DKIM_NA(0.00)[]; FREEMAIL_ENVFROM(0.00)[freenet.de]; ASN(0.00)[asn:5430, ipnet:195.4.0.0/16, country:DE]; RECEIVED_SPAMHAUS_PBL(0.00)[89.98.252.79.zen.spamhaus.org : 127.0.0.10] X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 13 Apr 2019 10:22:16 -0000 Hi, during the process of preparing a NanoPI NEO2 port i found some bugs in allwinners a10_codec implementation i'm now trying to fix. But i'm struggeling with the resource management. In the codec@1c22c00 section of the sunxi-h3-h5.dtsi there is a xref to another node containing a needed register address and width: codec: codec@1c22c00 { [..] reg = <0x01c22c00 0x400>; allwinner,codec-analog-controls = <&codec_analog> [..] } codec_analog: codec-analog@1f015c0 { compatible = "allwinner,sun8i-h3-codec-analog"; reg = <0x01f015c0 0x4>; }; The driver kept crashing until i changed the dts file to something like this: codec: codec@1c22c00 { [..] reg = <0x01c22c00 0x400 0x01f015c0 0x4>; [..] } The driver wants to allocate both registers at once with bus_alloc_resources() and a struct resource_spec describing two memory sections and an interrupt section. I'm failing in glueing the resource described by "reg" in codec_analog into the a10_codec driver. The raw content I managed to retrieve correctly by using these OF_* stuff in the drivers attach()-function: [..] phandle_t analognode, analogref; OF_getencprop(node, "allwinner,codec-analog-controls", &analogref, sizeof(analogref)) analognode = OF_node_from_xref(analogref); pcell_t reg[2]; OF_getencprop(analognode, "reg", reg, sizeof(reg)) [..] The contents of reg[2] are the correct values, but now i do not find how to correctly make them available to the driver as resource: int rid = 2; struct resource *res = bus_alloc_resource(dev, SYS_RES_MEMORY, &rid, reg[0], reg[0]+reg[1]-1, reg[1], RF_ACTIVE ); This does not return a valid resource pointer. Is this anyhow the correct way to do? Any help greatly appreciated :) -- Manuel