From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Herring Subject: Re: [PATCH] of/platform: Allow missing address for dev name lookup Date: Fri, 18 Nov 2011 16:12:43 -0600 Message-ID: <4EC6D85B.6020005@calxeda.com> References: <1321628948.21392.37.camel@zalecze.wat.corp.google.com> <4EC6838F.8020705@calxeda.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org To: Wojciech Baranowski Cc: devicetree-discuss@lists.ozlabs.org, Grant Likely , linux-kernel@vger.kernel.org List-Id: devicetree@vger.kernel.org On 11/18/2011 10:45 AM, Wojciech Baranowski wrote: > On Fri, Nov 18, 2011 at 11:10 AM, Rob Herring wrote: >> On 11/18/2011 09:09 AM, Wojciech Baranowski wrote: >>> While looking up linux name for platform device, check the address only if it >>> has been supplied in lookup table. >>> >> And the reason you want to do this is? > > Name lookup table is used to provide names for platform devices on the > board I'm working on. I'm adding /sound node without address for audio > subsystem and don't want to break that convention. auxdata is really meant to be a temporary solution to plug platform_data. All platform devices do not necessarily go into the DT. The DT should describe the h/w. For sound I would expect this to be all the h/w blocks like i2s, dma, codec and then information on how they are connected. Can you show what your sound binding looks like. Rob > >>> Signed-off-by: Wojciech Baranowski >>> --- >>> drivers/of/platform.c | 8 +++++--- >>> 1 files changed, 5 insertions(+), 3 deletions(-) >>> >>> diff --git a/drivers/of/platform.c b/drivers/of/platform.c >>> index cbd5d70..94763c0 100644 >>> --- a/drivers/of/platform.c >>> +++ b/drivers/of/platform.c >>> @@ -314,12 +314,14 @@ static const struct of_dev_auxdata *of_dev_lookup(const struct of_dev_auxdata *l >>> if (!lookup) >>> return NULL; >>> >>> - for(; lookup->name != NULL; lookup++) { >>> + for (; lookup->name != NULL; lookup++) { >>> if (!of_device_is_compatible(np, lookup->compatible)) >>> continue; >>> - if (of_address_to_resource(np, 0, &res)) >>> + if (lookup->phys_addr && >>> + of_address_to_resource(np, 0, &res)) >>> continue; >>> - if (res.start != lookup->phys_addr) >>> + if (lookup->phys_addr && >>> + res.start != lookup->phys_addr) >>> continue; >>> pr_debug("%s: devname=%s\n", np->full_name, lookup->name); >>> return lookup; >> >>