From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753182AbdLMOjR (ORCPT ); Wed, 13 Dec 2017 09:39:17 -0500 Received: from mail-pl0-f65.google.com ([209.85.160.65]:36434 "EHLO mail-pl0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753128AbdLMOjP (ORCPT ); Wed, 13 Dec 2017 09:39:15 -0500 X-Google-Smtp-Source: ACJfBouxnK1r/edYTg0kO2yM8CE/zEgwYaM5UnWO0tsAwEx+0gyPkqHQEmRQOlnppA43LZowJebS+g== Date: Wed, 13 Dec 2017 20:09:12 +0530 From: Viresh Kumar To: Russell King - ARM Linux Cc: Greg Kroah-Hartman , nm@ti.com, Rajendra Nayak , s.hauer@pengutronix.de, Stephen Boyd , linux-kernel@vger.kernel.org, xuwei5@hisilicon.com, robdclark@gmail.com, robh+dt@kernel.org, fabio.estevam@nxp.com, Vincent Guittot , shawnguo@kernel.org, linux-arm-kernel@lists.infradead.org, l.stach@pengutronix.de Subject: Re: [PATCH V4 08/12] boot_constraint: Manage deferrable constraints Message-ID: <20171213143912.GN3322@vireshk-i7> References: <88c7a0a6421d267c118f501ea1e920b04649002d.1509284255.git.viresh.kumar@linaro.org> <20171213095345.GJ13194@kroah.com> <20171213102707.GD3322@vireshk-i7> <20171213103315.GI10595@n2100.armlinux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20171213103315.GI10595@n2100.armlinux.org.uk> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 13-12-17, 10:33, Russell King - ARM Linux wrote: > On Wed, Dec 13, 2017 at 03:57:07PM +0530, Viresh Kumar wrote: > > On 13-12-17, 10:53, Greg Kroah-Hartman wrote: > > > On Sun, Oct 29, 2017 at 07:18:56PM +0530, Viresh Kumar wrote: > > > > +static void add_deferrable_of_single(struct device_node *np, > > > > + struct dev_boot_constraint *constraints, > > > > + int count) > > > > +{ > > > > + struct device *dev; > > > > + int ret; > > > > + > > > > + if (!of_device_is_available(np)) > > > > + return; > > > > + > > > > + ret = of_platform_bus_create(np, NULL, NULL, NULL, false); > > > > + if (ret) > > > > + return; > > > > + > > > > + if (of_device_is_compatible(np, "arm,primecell")) { > > > > > > Why is "arm,primecell" in the core code here? > > > > All we need here is a struct device pointer to add constraints. But how we get > > the device node depends on what bus type the device corresponds to. Currently > > this only support amba and platform devices, but we may need to get spi, i2c, > > etc later on. > > > > How do you suggest to keep this stuff out of core here ? Are you asking me to > > add a generic API in the OF core to find the struct device pointer using a node > > pointer ? > > Why do we need this? Why can't we lookup the "struct device" by DT > node, and then look at the device's bus type and decide what to do > from that? My requirement is only to get the struct device * for the DT node and I don't really need to get into the bus specific details at all. I was not sure if there is a way to lookup for the "struct device" by its DT node currently and so depended on helpers like of_find_device_by_node(). Can you please point me to the routine (or the way we can traverse all devices) ? > Wouldn't a better solution be to use fwnode stuff for this, and > make the bus-type handling a property of the bus type itself, > pushing the bus specific code into the bus layer? As I said earlier, I don't really need to work at the bus level. I just need the device structure and so that may not be required. -- viresh