From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Warren Date: Wed, 10 Oct 2012 16:50:20 +0000 Subject: Re: [PATCH 05/14] media: add a V4L2 OF parser Message-Id: <5075A74C.80106@wwwdotorg.org> List-Id: References: <1348754853-28619-1-git-send-email-g.liakhovetski@gmx.de> <201210081653.55984.hverkuil@xs4all.nl> <2002286.8sbBLyKbDe@avalon> In-Reply-To: <2002286.8sbBLyKbDe@avalon> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Laurent Pinchart Cc: Guennadi Liakhovetski , Hans Verkuil , Sylwester Nawrocki , Sylwester Nawrocki , linux-media@vger.kernel.org, devicetree-discuss@lists.ozlabs.org, Magnus Damm , linux-sh@vger.kernel.org, Mark Brown , Arnd Bergmann , Grant Likely On 10/10/2012 07:18 AM, Laurent Pinchart wrote: > On Monday 08 October 2012 17:15:53 Guennadi Liakhovetski wrote: ... >> But how do you get the subdev pointer? With the notifier I get it from >> i2c_get_clientdata(client) and what do you do without it? How do you get >> to the client? >> >>> And can't it get that from DT as well? >> >> No, I don't think there is a way to get a device pointer from a DT node. I don't believe there's a generic API for this (although perhaps there could be), but it can be implemented quite easily. For example, on Tegra, the SMMU needs to flip a bit in the AHB register space in order to enable itself. The SMMU DT node contains a phandle that points at the AHB DT node. The SMMU driver parses the phandle and passes the DT node pointer to the AHB driver. The AHB driver looks up the struct device that was instantiated for that node. See drivers/amba/tegra-ahb.c:tegra_ahb_enable_smmu(). There are a few other cases of similar code in the kernel, although I can't remember the others! From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Warren Subject: Re: [PATCH 05/14] media: add a V4L2 OF parser Date: Wed, 10 Oct 2012 10:50:20 -0600 Message-ID: <5075A74C.80106@wwwdotorg.org> References: <1348754853-28619-1-git-send-email-g.liakhovetski@gmx.de> <201210081653.55984.hverkuil@xs4all.nl> <2002286.8sbBLyKbDe@avalon> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <2002286.8sbBLyKbDe@avalon> Sender: linux-media-owner@vger.kernel.org To: Laurent Pinchart Cc: Guennadi Liakhovetski , Hans Verkuil , Sylwester Nawrocki , Sylwester Nawrocki , linux-media@vger.kernel.org, devicetree-discuss@lists.ozlabs.org, Magnus Damm , linux-sh@vger.kernel.org, Mark Brown , Arnd Bergmann , Grant Likely List-Id: devicetree@vger.kernel.org On 10/10/2012 07:18 AM, Laurent Pinchart wrote: > On Monday 08 October 2012 17:15:53 Guennadi Liakhovetski wrote: ... >> But how do you get the subdev pointer? With the notifier I get it from >> i2c_get_clientdata(client) and what do you do without it? How do you get >> to the client? >> >>> And can't it get that from DT as well? >> >> No, I don't think there is a way to get a device pointer from a DT node. I don't believe there's a generic API for this (although perhaps there could be), but it can be implemented quite easily. For example, on Tegra, the SMMU needs to flip a bit in the AHB register space in order to enable itself. The SMMU DT node contains a phandle that points at the AHB DT node. The SMMU driver parses the phandle and passes the DT node pointer to the AHB driver. The AHB driver looks up the struct device that was instantiated for that node. See drivers/amba/tegra-ahb.c:tegra_ahb_enable_smmu(). There are a few other cases of similar code in the kernel, although I can't remember the others!