From: Greg KH <gregkh@linuxfoundation.org>
To: Tomasz Figa <t.figa@samsung.com>
Cc: Stephen Warren <swarren@wwwdotorg.org>,
Kishon Vijay Abraham I <kishon@ti.com>,
Alan Stern <stern@rowland.harvard.edu>,
Tomasz Figa <tomasz.figa@gmail.com>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
broonie@kernel.org,
Sylwester Nawrocki <sylvester.nawrocki@gmail.com>,
Sascha Hauer <s.hauer@pengutronix.de>,
kyungmin.park@samsung.com, balbi@ti.com, jg1.han@samsung.com,
s.nawrocki@samsung.com, kgene.kim@samsung.com,
grant.likely@linaro.org, tony@atomide.com, arnd@arndb.de,
swarren@nvidia.com, devicetree@vger.kernel.org,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-samsung-soc@vger.kernel.org, linux-omap@vger.kernel.org,
linux-usb@vger.kernel.org, linux-media@vger.kernel.org,
linux-fbdev@vger.kernel.org, akpm@linux-foundation.org,
balajitk@ti.com, george.cherian@ti.com, nsekhar@ti.com,
olof@lixom.net, b.zolnierkie@samsung.com,
Daniel Lezcano <daniel.lezcano@linaro.org>
Subject: Re: [PATCH 01/15] drivers: phy: add generic PHY framework
Date: Tue, 23 Jul 2013 11:04:14 -0700 [thread overview]
Message-ID: <20130723180414.GA9630@kroah.com> (raw)
In-Reply-To: <19656720.FrnhefyPXl@amdc1227>
On Tue, Jul 23, 2013 at 07:48:11PM +0200, Tomasz Figa wrote:
> On Tuesday 23 of July 2013 10:37:11 Greg KH wrote:
> > On Tue, Jul 23, 2013 at 06:50:29PM +0200, Tomasz Figa wrote:
> > > > Ick, no. Why can't you just pass the pointer to the phy itself? If
> > > > you
> > > > had a "priv" pointer to search from, then you could have just passed
> > > > the
> > > > original phy pointer in the first place, right?
> > >
> > > IMHO it would be better if you provided some code example, but let's
> > > try to check if I understood you correctly.
> >
> > It's not my code that I want to have added, so I don't have to write
> > examples, I just get to complain about the existing stuff :)
>
> Still, I think that some small code snippets illustrating the idea are
> really helpful.
>
> > > 8><--------------------------------------------------------------------
> > > ----
> > >
> > > [Board file]
> > >
> > > static struct phy my_phy;
> > >
> > > static struct platform_device phy_pdev = {
> > >
> > > /* ... */
> > > .platform_data = &my_phy;
> > > /* ... */
> > >
> > > };
> > >
> > > static struct platform_device phy_pdev = {
> > >
> > > /* ... */
> > > .platform_data = &my_phy;
> > > /* ... */
> > >
> > > };
> > >
> > > [Provider driver]
> > >
> > > struct phy *phy = pdev->dev.platform_data;
> > >
> > > ret = phy_create(phy);
> > >
> > > [Consumer driver]
> > >
> > > struct phy *phy = pdev->dev.platform_data;
> > >
> > > ret = phy_get(&pdev->dev, phy);
> > >
> > > -----------------------------------------------------------------------
> > > -><8
> > >
> > > Is this what you mean?
> >
> > No. Well, kind of. What's wrong with using the platform data structure
> > unique to the board to have the pointer?
> >
> > For example (just randomly picking one), the ata-pxa driver would change
> > include/linux/platform_data/ata-pxa.h to have a phy pointer in it:
> >
> > struct phy;
> >
> > struct pata_pxa_pdata {
> > /* PXA DMA DREQ<0:2> pin */
> > uint32_t dma_dreq;
> > /* Register shift */
> > uint32_t reg_shift;
> > /* IRQ flags */
> > uint32_t irq_flags;
> > /* PHY */
> > struct phy *phy;
> > };
> >
> > Then, when you create the platform, set the phy* pointer with a call to
> > phy_create(). Then you can use that pointer wherever that plaform data
> > is available (i.e. whereever platform_data is at).
>
> Hmm? So, do you suggest to call phy_create() from board file? What phy_ops
> struct and other hardware parameters would it take?
>
> > > > The issue is that a string "name" is not going to scale at all, as it
> > > > requires hard-coded information that will change over time (as the
> > > > existing clock interface is already showing.)
> > >
> > > I fully agree that a simple, single string will not scale even in some,
> > > not so uncommon cases, but there is already a lot of existing lookup
> > > solutions over the kernel and so there is no point in introducing
> > > another one.
> > I'm trying to get _rid_ of lookup "solutions" and just use a real
> > pointer, as you should. I'll go tackle those other ones after this one
> > is taken care of, to show how the others should be handled as well.
>
> There was a reason for introducing lookup solutions. The reason was that in
> board file there is no way to get a pointer to something that is going to be
> created much later in time. We don't do time travel ;-).
>
> > > > Please just pass the real "phy" pointer around, that's what it is
> > > > there
> > > > for. Your "board binding" logic/code should be able to handle this,
> > > > as
> > > > it somehow was going to do the same thing with a "name".
> > >
> > > It's technically correct, but quality of this solution isn't really
> > > nice, because it's a layering violation (at least if I understood what
> > > you mean). This is because you need to have full definition of struct
> > > phy in board file and a structure that is used as private data in PHY
> > > core comes from platform code.
> >
> > No, just a pointer, you don't need the "full" structure until you get to
> > some .c code that actually manipulates the phy itself, for all other
> > places, you are just dealing with a pointer and a structure you never
> > reference.
> >
> > Does that make more sense?
>
> Well, to the point that I think I now understood your suggestion.
> Unfortunately the suggestion alone isn't really something that can be done,
> considering how driver core and generic frameworks work.
Ok, given that I seem to be totally confused as to exactly how the
board-specific frameworks work, I'll take your word for it.
But again, I will not accept "lookup by name" type solutions, when the
"name" is dynamic and will change. Because you are using a "name", you
can deal with a pointer, putting it _somewhere_ in your board-specific
data structures, as you are going to need to store it anyway (hint, you
had to get that "name" from somewhere, right?)
And maybe the way that these "generic frameworks" are created is wrong,
given that you don't feel that a generic pointer can be passed to the
needed devices. That seems like a huge problem, one that has already
been pointed out is causing issues with other subsystems.
So maybe they need to be fixed?
thanks,
greg k-h
next prev parent reply other threads:[~2013-07-23 18:03 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-18 6:46 [PATCH 00/15] PHY framework Kishon Vijay Abraham I
2013-07-18 6:46 ` [PATCH 01/15] drivers: phy: add generic " Kishon Vijay Abraham I
2013-07-18 7:20 ` Greg KH
2013-07-18 8:59 ` Kishon Vijay Abraham I
2013-07-18 15:49 ` Greg KH
2013-07-19 5:37 ` Kishon Vijay Abraham I
2013-07-19 5:43 ` Greg KH
2013-07-19 5:55 ` Kishon Vijay Abraham I
2013-07-19 6:29 ` Greg KH
2013-07-19 6:36 ` Kishon Vijay Abraham I
2013-07-19 15:54 ` Stephen Warren
2013-07-20 3:15 ` Kishon Vijay Abraham I
2013-07-19 23:50 ` Greg KH
2013-07-20 3:19 ` Kishon Vijay Abraham I
2013-07-20 22:00 ` Greg KH
2013-07-21 2:32 ` Alan Stern
2013-07-21 2:59 ` Greg KH
2013-07-21 10:22 ` Sascha Hauer
2013-07-21 15:48 ` Greg KH
2013-07-21 17:14 ` Sylwester Nawrocki
2013-07-21 19:22 ` Alan Stern
2013-07-22 7:25 ` Kishon Vijay Abraham I
2013-07-22 14:44 ` Alan Stern
2013-07-23 5:47 ` Kishon Vijay Abraham I
2013-07-23 7:29 ` Tomasz Figa
2013-07-23 7:55 ` Tomasz Figa
2013-07-23 14:37 ` Alan Stern
2013-07-23 14:50 ` Tomasz Figa
2013-07-23 15:18 ` Kishon Vijay Abraham I
2013-07-23 16:18 ` Greg KH
2013-07-23 16:28 ` Kishon Vijay Abraham I
2013-07-23 16:35 ` Greg KH
2013-07-23 16:50 ` Tomasz Figa
2013-07-23 17:37 ` Greg KH
2013-07-23 17:44 ` Mark Brown
2013-07-23 18:01 ` Greg KH
2013-07-23 19:31 ` Mark Brown
2013-07-23 19:44 ` Greg KH
2013-07-23 20:07 ` Tomasz Figa
2013-07-23 20:50 ` Greg KH
2013-07-23 21:05 ` Tomasz Figa
2013-07-23 21:23 ` Greg KH
2013-07-23 23:48 ` Mark Brown
2013-07-23 17:48 ` Tomasz Figa
2013-07-23 18:04 ` Greg KH [this message]
2013-07-23 20:46 ` Tomasz Figa
2013-07-23 19:36 ` Alan Stern
2013-07-23 20:20 ` Tomasz Figa
2013-07-23 20:53 ` Alan Stern
2013-07-23 21:02 ` Tomasz Figa
2013-07-23 21:14 ` Alan Stern
2013-07-23 21:31 ` Tomasz Figa
2013-07-24 18:32 ` Arnd Bergmann
[not found] ` <51F0B373.5050907@ti.com>
2013-07-25 7:54 ` Arnd Bergmann
2013-07-25 9:29 ` Sylwester Nawrocki
2013-07-25 9:29 ` Mark Brown
2013-07-25 10:16 ` Laurent Pinchart
2013-07-25 11:00 ` Arnd Bergmann
2013-07-25 11:10 ` Laurent Pinchart
2013-07-25 12:09 ` Mark Brown
2013-07-23 17:34 ` Mark Brown
2013-07-22 15:04 ` Greg KH
2013-07-23 5:34 ` Kishon Vijay Abraham I
2013-07-21 10:31 ` Tomasz Figa
2013-07-21 11:07 ` Kishon Vijay Abraham I
2013-07-21 11:12 ` Tomasz Figa
2013-07-21 15:46 ` Greg KH
2013-07-30 7:11 ` Felipe Balbi
2013-07-31 5:44 ` Kishon Vijay Abraham I
2013-07-31 6:15 ` Felipe Balbi
2013-08-13 10:44 ` Kishon Vijay Abraham I
2013-08-13 11:37 ` Tomasz Figa
2013-08-13 12:05 ` Kishon Vijay Abraham I
2013-08-13 22:19 ` Sylwester Nawrocki
2013-08-13 23:04 ` Tomasz Figa
2013-08-14 15:05 ` Kishon Vijay Abraham I
2013-08-19 5:28 ` Kishon Vijay Abraham I
2013-08-20 12:26 ` Felipe Balbi
2013-07-18 6:46 ` [PATCH 02/15] usb: phy: omap-usb2: use the new " Kishon Vijay Abraham I
2013-07-18 7:21 ` Greg KH
2013-07-18 9:00 ` Kishon Vijay Abraham I
2013-07-18 6:46 ` [PATCH 03/15] usb: phy: twl4030: " Kishon Vijay Abraham I
2013-07-18 6:46 ` [PATCH 04/15] ARM: OMAP: USB: Add phy binding information Kishon Vijay Abraham I
2013-07-18 7:02 ` Tony Lindgren
2013-07-18 6:46 ` [PATCH 05/15] ARM: dts: omap: update usb_otg_hs data Kishon Vijay Abraham I
2013-07-18 7:05 ` Tony Lindgren
2013-07-18 6:46 ` [PATCH 06/15] usb: musb: omap2430: use the new generic PHY framework Kishon Vijay Abraham I
2013-07-18 6:46 ` [PATCH 07/15] usb: phy: omap-usb2: remove *set_suspend* callback from omap-usb2 Kishon Vijay Abraham I
2013-07-18 6:46 ` [PATCH 08/15] usb: phy: twl4030-usb: remove *set_suspend* and *phy_init* ops Kishon Vijay Abraham I
2013-07-18 6:46 ` [PATCH 09/15] phy: Add driver for Exynos MIPI CSIS/DSIM DPHYs Kishon Vijay Abraham I
2013-07-18 6:46 ` [PATCH 10/15] video: exynos_mipi_dsim: Use the generic PHY driver Kishon Vijay Abraham I
2013-07-18 6:46 ` [PATCH 11/15] exynos4-is: Use the generic MIPI CSIS " Kishon Vijay Abraham I
2013-07-18 6:46 ` [PATCH 12/15] ARM: Samsung: Remove the MIPI PHY setup code Kishon Vijay Abraham I
2013-07-18 6:46 ` [PATCH 13/15] phy: Add driver for Exynos DP PHY Kishon Vijay Abraham I
2013-07-18 6:46 ` [PATCH 14/15] video: exynos_dp: remove non-DT support for Exynos Display Port Kishon Vijay Abraham I
2013-07-18 6:46 ` [PATCH 15/15] video: exynos_dp: Use the generic PHY driver Kishon Vijay Abraham I
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130723180414.GA9630@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=b.zolnierkie@samsung.com \
--cc=balajitk@ti.com \
--cc=balbi@ti.com \
--cc=broonie@kernel.org \
--cc=daniel.lezcano@linaro.org \
--cc=devicetree@vger.kernel.org \
--cc=george.cherian@ti.com \
--cc=grant.likely@linaro.org \
--cc=jg1.han@samsung.com \
--cc=kgene.kim@samsung.com \
--cc=kishon@ti.com \
--cc=kyungmin.park@samsung.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=nsekhar@ti.com \
--cc=olof@lixom.net \
--cc=s.hauer@pengutronix.de \
--cc=s.nawrocki@samsung.com \
--cc=stern@rowland.harvard.edu \
--cc=swarren@nvidia.com \
--cc=swarren@wwwdotorg.org \
--cc=sylvester.nawrocki@gmail.com \
--cc=t.figa@samsung.com \
--cc=tomasz.figa@gmail.com \
--cc=tony@atomide.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).