All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: Kishon Vijay Abraham I <kishon@ti.com>
Cc: 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, Stephen Warren <swarren@wwwdotorg.org>,
	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 09:18:46 -0700	[thread overview]
Message-ID: <20130723161846.GD2486@kroah.com> (raw)
In-Reply-To: <51EE9EC0.6060905@ti.com>

On Tue, Jul 23, 2013 at 08:48:24PM +0530, Kishon Vijay Abraham I wrote:
> Hi,
> 
> On Tuesday 23 July 2013 08:07 PM, Alan Stern wrote:
> > On Tue, 23 Jul 2013, Tomasz Figa wrote:
> > 
> >> On Tuesday 23 of July 2013 09:29:32 Tomasz Figa wrote:
> >>> Hi Alan,
> > 
> > Thanks for helping to clarify the issues here.
> > 
> >>>> Okay.  Are PHYs _always_ platform devices?
> >>>
> >>> They can be i2c, spi or any other device types as well.
> > 
> > In those other cases, presumably there is no platform data associated
> > with the PHY since it isn't a platform device.  Then how does the
> > kernel know which controller is attached to the PHY?  Is this spelled
> > out in platform data associated with the PHY's i2c/spi/whatever parent?
> 
> Yes. I think we could use i2c_board_info for passing platform data.
> > 
> >>>>>> 	PHY.  Currently this information is represented by name or 
> >> ID
> >>>>>> 	strings embedded in platform data.
> >>>>>
> >>>>> right. It's embedded in the platform data of the controller.
> >>>>
> >>>> It must also be embedded in the PHY's platform data somehow.
> >>>> Otherwise, how would the kernel know which PHY to use?
> >>>
> >>> By using a PHY lookup as Stephen and I suggested in our previous
> >>> replies. Without any extra data in platform data. (I have even posted a
> >>> code example.)
> > 
> > I don't understand, because I don't know what "a PHY lookup" does.
> 
> It is how the PHY framework finds a PHY, when the controller (say USB)requests
> a PHY from the PHY framework.
> > 
> >>>> In this case, it doesn't matter where the platform_device structures
> >>>> are created or where the driver source code is.  Let's take a simple
> >>>> example.  Suppose the system design includes a PHY named "foo".  Then
> >>>> the board file could contain:
> >>>>
> >>>> struct phy_info { ... } phy_foo;
> >>>> EXPORT_SYMBOL_GPL(phy_foo);
> >>>>
> >>>> and a header file would contain:
> >>>>
> >>>> extern struct phy_info phy_foo;
> >>>>
> >>>> The PHY supplier could then call phy_create(&phy_foo), and the PHY
> >>>> client could call phy_find(&phy_foo).  Or something like that; make up
> >>>> your own structure tags and function names.
> >>>>
> >>>> It's still possible to have conflicts, but now two PHYs with the same
> >>>> name (or a misspelled name somewhere) will cause an error at link
> >>>> time.
> >>>
> >>> This is incorrect, sorry. First of all it's a layering violation - you
> >>> export random driver-specific symbols from one driver to another. Then
> > 
> > No, that's not what I said.  Neither the PHY driver nor the controller
> > driver exports anything to the other.  Instead, both drivers use data
> > exported by the board file.
> 
> I think instead we can use the same data while creating the platform data of
> the controller and the PHY.
> The PHY driver while creating the PHY (using PHY framework) will also pass the
> *data* it actually got from the platform data to the framework.
> The PHY user driver (USB), while requesting for the PHY (from the PHY
> framework) will pass the *data* it got from its platform data.
> The PHY framework can do a comparison of the *data* pointers it has and return
> the appropriate PHY to the controller.
> > 
> >>> imagine 4 SoCs - A, B, C, D. There are two PHY types PHY1 and PHY2 and
> >>> there are two types of consumer drivers (e.g. USB host controllers). Now
> >>> consider following mapping:
> >>>
> >>> SoC	PHY	consumer
> >>> A	PHY1	HOST1
> >>> B	PHY1	HOST2
> >>> C	PHY2	HOST1
> >>> D	PHY2	HOST2
> >>>
> >>> So we have to be able to use any of the PHYs with any of the host
> >>> drivers. This means you would have to export symbol with the same name
> >>> from both PHY drivers, which obviously would not work in this case,
> >>> because having both drivers enabled (in a multiplatform aware
> >>> configuration) would lead to linking conflict.
> > 
> > You're right; the scheme was too simple.  Instead, the board file must
> > export two types of data structures, one for PHYs and one for
> > controllers.  Like this:
> > 
> > struct phy_info {
> > 	/* Info for the controller attached to this PHY */
> > 	struct controller_info	*hinfo;
> > };
> > 
> > struct controller_info {
> > 	/* Info for the PHY which this controller is attached to */
> > 	struct phy_info		*pinfo;
> > };
> > 
> > The board file for SoC A would contain:
> > 
> > struct phy_info phy1 = {&host1);
> > EXPORT_SYMBOL(phy1);
> > struct controller_info host1 = {&phy1};
> > EXPORT_SYMBOL(host1);
> > 
> > The board file for SoC B would contain:
> > 
> > struct phy_info phy1 = {&host2);
> > EXPORT_SYMBOL(phy1);
> > struct controller_info host2 = {&phy1};
> > EXPORT_SYMBOL(host2);
> 
> I meant something like this
> struct phy_info {
> 	const char *name;
> };
> 
> struct phy_platform_data {
> 	.
> 	.
> 	struct phy_info *info;
> };
> 
> struct usb_controller_platform_data {
> 	.
> 	.
> 	struct phy_info *info;
> };
> 
> struct phy_info phy_info;
> 
> While creating the phy device
> 	struct phy_platform_data phy_data;
> 	phy_data.info = &info;
> 	platform_device_add_data(pdev, &phy_data, sizeof(*phy_data))
> 	platform_device_add();
> 
> While creating the controller device
> 	struct usb_controller_platform_data controller_data;
> 	controller_data.info = &info;
> 	platform_device_add_data(pdev, &controller_data, sizeof(*controller_data))
> 	platform_device_add();
> 
> Then modify PHY framework API phy create
> 	phy_create((struct device *dev, const struct phy_ops *ops,
>         void *priv)  {//API changed to take void pointer instead of label
> 		. //existing implementation
> 		.
> 		phy->priv = priv;
> 	}
> 
> 	struct phy *phy_get(struct device *dev, const char *string, void *priv) {
> //API changed to take an additional pointer
> 		phy_lookup(priv)
> 	}
> 
> 	static struct phy *phy_lookup(void *priv) {
> 		.
> 		.
> 		if (phy->priv==priv) //instead of string comparison, we'll use pointer
> 			return phy;
> 	}
> 
> PHY driver should be like
> 	phy_create((dev, ops, pdata->info);
> 
> The controller driver would do
> 	phy_get(dev, NULL, pdata->info);
> 
> Now the PHY framework will check for a match of *priv* pointer and return the PHY.
> 
> I think this should be possible?

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?

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.)

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".

thanks,

greg k-h

WARNING: multiple messages have this Message-ID (diff)
From: Greg KH <gregkh@linuxfoundation.org>
To: linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 01/15] drivers: phy: add generic PHY framework
Date: Tue, 23 Jul 2013 16:18:46 +0000	[thread overview]
Message-ID: <20130723161846.GD2486@kroah.com> (raw)
In-Reply-To: <51EE9EC0.6060905@ti.com>

On Tue, Jul 23, 2013 at 08:48:24PM +0530, Kishon Vijay Abraham I wrote:
> Hi,
> 
> On Tuesday 23 July 2013 08:07 PM, Alan Stern wrote:
> > On Tue, 23 Jul 2013, Tomasz Figa wrote:
> > 
> >> On Tuesday 23 of July 2013 09:29:32 Tomasz Figa wrote:
> >>> Hi Alan,
> > 
> > Thanks for helping to clarify the issues here.
> > 
> >>>> Okay.  Are PHYs _always_ platform devices?
> >>>
> >>> They can be i2c, spi or any other device types as well.
> > 
> > In those other cases, presumably there is no platform data associated
> > with the PHY since it isn't a platform device.  Then how does the
> > kernel know which controller is attached to the PHY?  Is this spelled
> > out in platform data associated with the PHY's i2c/spi/whatever parent?
> 
> Yes. I think we could use i2c_board_info for passing platform data.
> > 
> >>>>>> 	PHY.  Currently this information is represented by name or 
> >> ID
> >>>>>> 	strings embedded in platform data.
> >>>>>
> >>>>> right. It's embedded in the platform data of the controller.
> >>>>
> >>>> It must also be embedded in the PHY's platform data somehow.
> >>>> Otherwise, how would the kernel know which PHY to use?
> >>>
> >>> By using a PHY lookup as Stephen and I suggested in our previous
> >>> replies. Without any extra data in platform data. (I have even posted a
> >>> code example.)
> > 
> > I don't understand, because I don't know what "a PHY lookup" does.
> 
> It is how the PHY framework finds a PHY, when the controller (say USB)requests
> a PHY from the PHY framework.
> > 
> >>>> In this case, it doesn't matter where the platform_device structures
> >>>> are created or where the driver source code is.  Let's take a simple
> >>>> example.  Suppose the system design includes a PHY named "foo".  Then
> >>>> the board file could contain:
> >>>>
> >>>> struct phy_info { ... } phy_foo;
> >>>> EXPORT_SYMBOL_GPL(phy_foo);
> >>>>
> >>>> and a header file would contain:
> >>>>
> >>>> extern struct phy_info phy_foo;
> >>>>
> >>>> The PHY supplier could then call phy_create(&phy_foo), and the PHY
> >>>> client could call phy_find(&phy_foo).  Or something like that; make up
> >>>> your own structure tags and function names.
> >>>>
> >>>> It's still possible to have conflicts, but now two PHYs with the same
> >>>> name (or a misspelled name somewhere) will cause an error at link
> >>>> time.
> >>>
> >>> This is incorrect, sorry. First of all it's a layering violation - you
> >>> export random driver-specific symbols from one driver to another. Then
> > 
> > No, that's not what I said.  Neither the PHY driver nor the controller
> > driver exports anything to the other.  Instead, both drivers use data
> > exported by the board file.
> 
> I think instead we can use the same data while creating the platform data of
> the controller and the PHY.
> The PHY driver while creating the PHY (using PHY framework) will also pass the
> *data* it actually got from the platform data to the framework.
> The PHY user driver (USB), while requesting for the PHY (from the PHY
> framework) will pass the *data* it got from its platform data.
> The PHY framework can do a comparison of the *data* pointers it has and return
> the appropriate PHY to the controller.
> > 
> >>> imagine 4 SoCs - A, B, C, D. There are two PHY types PHY1 and PHY2 and
> >>> there are two types of consumer drivers (e.g. USB host controllers). Now
> >>> consider following mapping:
> >>>
> >>> SoC	PHY	consumer
> >>> A	PHY1	HOST1
> >>> B	PHY1	HOST2
> >>> C	PHY2	HOST1
> >>> D	PHY2	HOST2
> >>>
> >>> So we have to be able to use any of the PHYs with any of the host
> >>> drivers. This means you would have to export symbol with the same name
> >>> from both PHY drivers, which obviously would not work in this case,
> >>> because having both drivers enabled (in a multiplatform aware
> >>> configuration) would lead to linking conflict.
> > 
> > You're right; the scheme was too simple.  Instead, the board file must
> > export two types of data structures, one for PHYs and one for
> > controllers.  Like this:
> > 
> > struct phy_info {
> > 	/* Info for the controller attached to this PHY */
> > 	struct controller_info	*hinfo;
> > };
> > 
> > struct controller_info {
> > 	/* Info for the PHY which this controller is attached to */
> > 	struct phy_info		*pinfo;
> > };
> > 
> > The board file for SoC A would contain:
> > 
> > struct phy_info phy1 = {&host1);
> > EXPORT_SYMBOL(phy1);
> > struct controller_info host1 = {&phy1};
> > EXPORT_SYMBOL(host1);
> > 
> > The board file for SoC B would contain:
> > 
> > struct phy_info phy1 = {&host2);
> > EXPORT_SYMBOL(phy1);
> > struct controller_info host2 = {&phy1};
> > EXPORT_SYMBOL(host2);
> 
> I meant something like this
> struct phy_info {
> 	const char *name;
> };
> 
> struct phy_platform_data {
> 	.
> 	.
> 	struct phy_info *info;
> };
> 
> struct usb_controller_platform_data {
> 	.
> 	.
> 	struct phy_info *info;
> };
> 
> struct phy_info phy_info;
> 
> While creating the phy device
> 	struct phy_platform_data phy_data;
> 	phy_data.info = &info;
> 	platform_device_add_data(pdev, &phy_data, sizeof(*phy_data))
> 	platform_device_add();
> 
> While creating the controller device
> 	struct usb_controller_platform_data controller_data;
> 	controller_data.info = &info;
> 	platform_device_add_data(pdev, &controller_data, sizeof(*controller_data))
> 	platform_device_add();
> 
> Then modify PHY framework API phy create
> 	phy_create((struct device *dev, const struct phy_ops *ops,
>         void *priv)  {//API changed to take void pointer instead of label
> 		. //existing implementation
> 		.
> 		phy->priv = priv;
> 	}
> 
> 	struct phy *phy_get(struct device *dev, const char *string, void *priv) {
> //API changed to take an additional pointer
> 		phy_lookup(priv)
> 	}
> 
> 	static struct phy *phy_lookup(void *priv) {
> 		.
> 		.
> 		if (phy->priv=priv) //instead of string comparison, we'll use pointer
> 			return phy;
> 	}
> 
> PHY driver should be like
> 	phy_create((dev, ops, pdata->info);
> 
> The controller driver would do
> 	phy_get(dev, NULL, pdata->info);
> 
> Now the PHY framework will check for a match of *priv* pointer and return the PHY.
> 
> I think this should be possible?

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?

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.)

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".

thanks,

greg k-h

WARNING: multiple messages have this Message-ID (diff)
From: Greg KH <gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>
To: Kishon Vijay Abraham I <kishon-l0cyMroinI0@public.gmane.org>
Cc: Alan Stern
	<stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz@public.gmane.org>,
	Tomasz Figa <tomasz.figa-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Laurent Pinchart
	<laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>,
	broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
	Sylwester Nawrocki
	<sylvester.nawrocki-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Sascha Hauer <s.hauer-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>,
	kyungmin.park-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
	balbi-l0cyMroinI0@public.gmane.org,
	jg1.han-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
	s.nawrocki-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
	kgene.kim-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
	grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
	tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org,
	arnd-r2nGTMty4D4@public.gmane.org,
	swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-fbdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org,
	balajitk-l0cyMroinI0@public.gmane.org,
	george.cherian-l0cyMroinI0@public.gmane.org,
	nsekhar-l0cyMroinI0@public.gmane.org,
	olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org,
	Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>,
	b.zolnierkie-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org, Daniel
Subject: Re: [PATCH 01/15] drivers: phy: add generic PHY framework
Date: Tue, 23 Jul 2013 09:18:46 -0700	[thread overview]
Message-ID: <20130723161846.GD2486@kroah.com> (raw)
In-Reply-To: <51EE9EC0.6060905-l0cyMroinI0@public.gmane.org>

On Tue, Jul 23, 2013 at 08:48:24PM +0530, Kishon Vijay Abraham I wrote:
> Hi,
> 
> On Tuesday 23 July 2013 08:07 PM, Alan Stern wrote:
> > On Tue, 23 Jul 2013, Tomasz Figa wrote:
> > 
> >> On Tuesday 23 of July 2013 09:29:32 Tomasz Figa wrote:
> >>> Hi Alan,
> > 
> > Thanks for helping to clarify the issues here.
> > 
> >>>> Okay.  Are PHYs _always_ platform devices?
> >>>
> >>> They can be i2c, spi or any other device types as well.
> > 
> > In those other cases, presumably there is no platform data associated
> > with the PHY since it isn't a platform device.  Then how does the
> > kernel know which controller is attached to the PHY?  Is this spelled
> > out in platform data associated with the PHY's i2c/spi/whatever parent?
> 
> Yes. I think we could use i2c_board_info for passing platform data.
> > 
> >>>>>> 	PHY.  Currently this information is represented by name or 
> >> ID
> >>>>>> 	strings embedded in platform data.
> >>>>>
> >>>>> right. It's embedded in the platform data of the controller.
> >>>>
> >>>> It must also be embedded in the PHY's platform data somehow.
> >>>> Otherwise, how would the kernel know which PHY to use?
> >>>
> >>> By using a PHY lookup as Stephen and I suggested in our previous
> >>> replies. Without any extra data in platform data. (I have even posted a
> >>> code example.)
> > 
> > I don't understand, because I don't know what "a PHY lookup" does.
> 
> It is how the PHY framework finds a PHY, when the controller (say USB)requests
> a PHY from the PHY framework.
> > 
> >>>> In this case, it doesn't matter where the platform_device structures
> >>>> are created or where the driver source code is.  Let's take a simple
> >>>> example.  Suppose the system design includes a PHY named "foo".  Then
> >>>> the board file could contain:
> >>>>
> >>>> struct phy_info { ... } phy_foo;
> >>>> EXPORT_SYMBOL_GPL(phy_foo);
> >>>>
> >>>> and a header file would contain:
> >>>>
> >>>> extern struct phy_info phy_foo;
> >>>>
> >>>> The PHY supplier could then call phy_create(&phy_foo), and the PHY
> >>>> client could call phy_find(&phy_foo).  Or something like that; make up
> >>>> your own structure tags and function names.
> >>>>
> >>>> It's still possible to have conflicts, but now two PHYs with the same
> >>>> name (or a misspelled name somewhere) will cause an error at link
> >>>> time.
> >>>
> >>> This is incorrect, sorry. First of all it's a layering violation - you
> >>> export random driver-specific symbols from one driver to another. Then
> > 
> > No, that's not what I said.  Neither the PHY driver nor the controller
> > driver exports anything to the other.  Instead, both drivers use data
> > exported by the board file.
> 
> I think instead we can use the same data while creating the platform data of
> the controller and the PHY.
> The PHY driver while creating the PHY (using PHY framework) will also pass the
> *data* it actually got from the platform data to the framework.
> The PHY user driver (USB), while requesting for the PHY (from the PHY
> framework) will pass the *data* it got from its platform data.
> The PHY framework can do a comparison of the *data* pointers it has and return
> the appropriate PHY to the controller.
> > 
> >>> imagine 4 SoCs - A, B, C, D. There are two PHY types PHY1 and PHY2 and
> >>> there are two types of consumer drivers (e.g. USB host controllers). Now
> >>> consider following mapping:
> >>>
> >>> SoC	PHY	consumer
> >>> A	PHY1	HOST1
> >>> B	PHY1	HOST2
> >>> C	PHY2	HOST1
> >>> D	PHY2	HOST2
> >>>
> >>> So we have to be able to use any of the PHYs with any of the host
> >>> drivers. This means you would have to export symbol with the same name
> >>> from both PHY drivers, which obviously would not work in this case,
> >>> because having both drivers enabled (in a multiplatform aware
> >>> configuration) would lead to linking conflict.
> > 
> > You're right; the scheme was too simple.  Instead, the board file must
> > export two types of data structures, one for PHYs and one for
> > controllers.  Like this:
> > 
> > struct phy_info {
> > 	/* Info for the controller attached to this PHY */
> > 	struct controller_info	*hinfo;
> > };
> > 
> > struct controller_info {
> > 	/* Info for the PHY which this controller is attached to */
> > 	struct phy_info		*pinfo;
> > };
> > 
> > The board file for SoC A would contain:
> > 
> > struct phy_info phy1 = {&host1);
> > EXPORT_SYMBOL(phy1);
> > struct controller_info host1 = {&phy1};
> > EXPORT_SYMBOL(host1);
> > 
> > The board file for SoC B would contain:
> > 
> > struct phy_info phy1 = {&host2);
> > EXPORT_SYMBOL(phy1);
> > struct controller_info host2 = {&phy1};
> > EXPORT_SYMBOL(host2);
> 
> I meant something like this
> struct phy_info {
> 	const char *name;
> };
> 
> struct phy_platform_data {
> 	.
> 	.
> 	struct phy_info *info;
> };
> 
> struct usb_controller_platform_data {
> 	.
> 	.
> 	struct phy_info *info;
> };
> 
> struct phy_info phy_info;
> 
> While creating the phy device
> 	struct phy_platform_data phy_data;
> 	phy_data.info = &info;
> 	platform_device_add_data(pdev, &phy_data, sizeof(*phy_data))
> 	platform_device_add();
> 
> While creating the controller device
> 	struct usb_controller_platform_data controller_data;
> 	controller_data.info = &info;
> 	platform_device_add_data(pdev, &controller_data, sizeof(*controller_data))
> 	platform_device_add();
> 
> Then modify PHY framework API phy create
> 	phy_create((struct device *dev, const struct phy_ops *ops,
>         void *priv)  {//API changed to take void pointer instead of label
> 		. //existing implementation
> 		.
> 		phy->priv = priv;
> 	}
> 
> 	struct phy *phy_get(struct device *dev, const char *string, void *priv) {
> //API changed to take an additional pointer
> 		phy_lookup(priv)
> 	}
> 
> 	static struct phy *phy_lookup(void *priv) {
> 		.
> 		.
> 		if (phy->priv==priv) //instead of string comparison, we'll use pointer
> 			return phy;
> 	}
> 
> PHY driver should be like
> 	phy_create((dev, ops, pdata->info);
> 
> The controller driver would do
> 	phy_get(dev, NULL, pdata->info);
> 
> Now the PHY framework will check for a match of *priv* pointer and return the PHY.
> 
> I think this should be possible?

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?

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.)

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".

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: gregkh@linuxfoundation.org (Greg KH)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 01/15] drivers: phy: add generic PHY framework
Date: Tue, 23 Jul 2013 09:18:46 -0700	[thread overview]
Message-ID: <20130723161846.GD2486@kroah.com> (raw)
In-Reply-To: <51EE9EC0.6060905@ti.com>

On Tue, Jul 23, 2013 at 08:48:24PM +0530, Kishon Vijay Abraham I wrote:
> Hi,
> 
> On Tuesday 23 July 2013 08:07 PM, Alan Stern wrote:
> > On Tue, 23 Jul 2013, Tomasz Figa wrote:
> > 
> >> On Tuesday 23 of July 2013 09:29:32 Tomasz Figa wrote:
> >>> Hi Alan,
> > 
> > Thanks for helping to clarify the issues here.
> > 
> >>>> Okay.  Are PHYs _always_ platform devices?
> >>>
> >>> They can be i2c, spi or any other device types as well.
> > 
> > In those other cases, presumably there is no platform data associated
> > with the PHY since it isn't a platform device.  Then how does the
> > kernel know which controller is attached to the PHY?  Is this spelled
> > out in platform data associated with the PHY's i2c/spi/whatever parent?
> 
> Yes. I think we could use i2c_board_info for passing platform data.
> > 
> >>>>>> 	PHY.  Currently this information is represented by name or 
> >> ID
> >>>>>> 	strings embedded in platform data.
> >>>>>
> >>>>> right. It's embedded in the platform data of the controller.
> >>>>
> >>>> It must also be embedded in the PHY's platform data somehow.
> >>>> Otherwise, how would the kernel know which PHY to use?
> >>>
> >>> By using a PHY lookup as Stephen and I suggested in our previous
> >>> replies. Without any extra data in platform data. (I have even posted a
> >>> code example.)
> > 
> > I don't understand, because I don't know what "a PHY lookup" does.
> 
> It is how the PHY framework finds a PHY, when the controller (say USB)requests
> a PHY from the PHY framework.
> > 
> >>>> In this case, it doesn't matter where the platform_device structures
> >>>> are created or where the driver source code is.  Let's take a simple
> >>>> example.  Suppose the system design includes a PHY named "foo".  Then
> >>>> the board file could contain:
> >>>>
> >>>> struct phy_info { ... } phy_foo;
> >>>> EXPORT_SYMBOL_GPL(phy_foo);
> >>>>
> >>>> and a header file would contain:
> >>>>
> >>>> extern struct phy_info phy_foo;
> >>>>
> >>>> The PHY supplier could then call phy_create(&phy_foo), and the PHY
> >>>> client could call phy_find(&phy_foo).  Or something like that; make up
> >>>> your own structure tags and function names.
> >>>>
> >>>> It's still possible to have conflicts, but now two PHYs with the same
> >>>> name (or a misspelled name somewhere) will cause an error at link
> >>>> time.
> >>>
> >>> This is incorrect, sorry. First of all it's a layering violation - you
> >>> export random driver-specific symbols from one driver to another. Then
> > 
> > No, that's not what I said.  Neither the PHY driver nor the controller
> > driver exports anything to the other.  Instead, both drivers use data
> > exported by the board file.
> 
> I think instead we can use the same data while creating the platform data of
> the controller and the PHY.
> The PHY driver while creating the PHY (using PHY framework) will also pass the
> *data* it actually got from the platform data to the framework.
> The PHY user driver (USB), while requesting for the PHY (from the PHY
> framework) will pass the *data* it got from its platform data.
> The PHY framework can do a comparison of the *data* pointers it has and return
> the appropriate PHY to the controller.
> > 
> >>> imagine 4 SoCs - A, B, C, D. There are two PHY types PHY1 and PHY2 and
> >>> there are two types of consumer drivers (e.g. USB host controllers). Now
> >>> consider following mapping:
> >>>
> >>> SoC	PHY	consumer
> >>> A	PHY1	HOST1
> >>> B	PHY1	HOST2
> >>> C	PHY2	HOST1
> >>> D	PHY2	HOST2
> >>>
> >>> So we have to be able to use any of the PHYs with any of the host
> >>> drivers. This means you would have to export symbol with the same name
> >>> from both PHY drivers, which obviously would not work in this case,
> >>> because having both drivers enabled (in a multiplatform aware
> >>> configuration) would lead to linking conflict.
> > 
> > You're right; the scheme was too simple.  Instead, the board file must
> > export two types of data structures, one for PHYs and one for
> > controllers.  Like this:
> > 
> > struct phy_info {
> > 	/* Info for the controller attached to this PHY */
> > 	struct controller_info	*hinfo;
> > };
> > 
> > struct controller_info {
> > 	/* Info for the PHY which this controller is attached to */
> > 	struct phy_info		*pinfo;
> > };
> > 
> > The board file for SoC A would contain:
> > 
> > struct phy_info phy1 = {&host1);
> > EXPORT_SYMBOL(phy1);
> > struct controller_info host1 = {&phy1};
> > EXPORT_SYMBOL(host1);
> > 
> > The board file for SoC B would contain:
> > 
> > struct phy_info phy1 = {&host2);
> > EXPORT_SYMBOL(phy1);
> > struct controller_info host2 = {&phy1};
> > EXPORT_SYMBOL(host2);
> 
> I meant something like this
> struct phy_info {
> 	const char *name;
> };
> 
> struct phy_platform_data {
> 	.
> 	.
> 	struct phy_info *info;
> };
> 
> struct usb_controller_platform_data {
> 	.
> 	.
> 	struct phy_info *info;
> };
> 
> struct phy_info phy_info;
> 
> While creating the phy device
> 	struct phy_platform_data phy_data;
> 	phy_data.info = &info;
> 	platform_device_add_data(pdev, &phy_data, sizeof(*phy_data))
> 	platform_device_add();
> 
> While creating the controller device
> 	struct usb_controller_platform_data controller_data;
> 	controller_data.info = &info;
> 	platform_device_add_data(pdev, &controller_data, sizeof(*controller_data))
> 	platform_device_add();
> 
> Then modify PHY framework API phy create
> 	phy_create((struct device *dev, const struct phy_ops *ops,
>         void *priv)  {//API changed to take void pointer instead of label
> 		. //existing implementation
> 		.
> 		phy->priv = priv;
> 	}
> 
> 	struct phy *phy_get(struct device *dev, const char *string, void *priv) {
> //API changed to take an additional pointer
> 		phy_lookup(priv)
> 	}
> 
> 	static struct phy *phy_lookup(void *priv) {
> 		.
> 		.
> 		if (phy->priv==priv) //instead of string comparison, we'll use pointer
> 			return phy;
> 	}
> 
> PHY driver should be like
> 	phy_create((dev, ops, pdata->info);
> 
> The controller driver would do
> 	phy_get(dev, NULL, pdata->info);
> 
> Now the PHY framework will check for a match of *priv* pointer and return the PHY.
> 
> I think this should be possible?

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?

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.)

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".

thanks,

greg k-h

  reply	other threads:[~2013-07-23 16:18 UTC|newest]

Thread overview: 371+ 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:58 ` Kishon Vijay Abraham I
2013-07-18  6:46 ` Kishon Vijay Abraham I
2013-07-18  6:46 ` Kishon Vijay Abraham I
2013-07-18  6:46 ` [PATCH 01/15] drivers: phy: add generic " Kishon Vijay Abraham I
2013-07-18  6:58   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` Kishon Vijay Abraham I
2013-07-18  7:20   ` Greg KH
2013-07-18  7:20     ` Greg KH
2013-07-18  7:20     ` Greg KH
2013-07-18  8:59     ` Kishon Vijay Abraham I
2013-07-18  9:11       ` Kishon Vijay Abraham I
2013-07-18  8:59       ` Kishon Vijay Abraham I
2013-07-18  8:59       ` Kishon Vijay Abraham I
2013-07-18 15:49       ` Greg KH
2013-07-18 15:49         ` Greg KH
2013-07-18 15:49         ` Greg KH
2013-07-19  5:37         ` Kishon Vijay Abraham I
2013-07-19  5:49           ` Kishon Vijay Abraham I
2013-07-19  5:37           ` Kishon Vijay Abraham I
2013-07-19  5:37           ` Kishon Vijay Abraham I
2013-07-19  5:43           ` Greg KH
2013-07-19  5:43             ` Greg KH
2013-07-19  5:43             ` Greg KH
2013-07-19  5:55             ` Kishon Vijay Abraham I
2013-07-19  5:56               ` Kishon Vijay Abraham I
2013-07-19  5:55               ` Kishon Vijay Abraham I
2013-07-19  5:55               ` Kishon Vijay Abraham I
2013-07-19  6:29               ` Greg KH
2013-07-19  6:29                 ` Greg KH
2013-07-19  6:29                 ` Greg KH
2013-07-19  6:29                 ` Greg KH
2013-07-19  6:36                 ` Kishon Vijay Abraham I
2013-07-19  6:48                   ` Kishon Vijay Abraham I
2013-07-19  6:36                   ` Kishon Vijay Abraham I
2013-07-19  6:36                   ` Kishon Vijay Abraham I
2013-07-19 15:54                   ` Stephen Warren
2013-07-19 15:54                     ` Stephen Warren
2013-07-19 15:54                     ` Stephen Warren
2013-07-20  3:15                     ` Kishon Vijay Abraham I
2013-07-20  3:27                       ` Kishon Vijay Abraham I
2013-07-20  3:15                       ` Kishon Vijay Abraham I
2013-07-20  3:15                       ` Kishon Vijay Abraham I
2013-07-19 23:50                   ` Greg KH
2013-07-19 23:50                     ` Greg KH
2013-07-19 23:50                     ` Greg KH
2013-07-20  3:19                     ` Kishon Vijay Abraham I
2013-07-20  3:31                       ` Kishon Vijay Abraham I
2013-07-20  3:19                       ` Kishon Vijay Abraham I
2013-07-20  3:19                       ` Kishon Vijay Abraham I
2013-07-20 22:00                       ` Greg KH
2013-07-20 22:00                         ` Greg KH
2013-07-20 22:00                         ` Greg KH
2013-07-20 22:00                         ` Greg KH
2013-07-21  2:32                         ` Alan Stern
2013-07-21  2:32                           ` Alan Stern
2013-07-21  2:32                           ` Alan Stern
2013-07-21  2:32                           ` Alan Stern
2013-07-21  2:59                           ` Greg KH
2013-07-21  2:59                             ` Greg KH
2013-07-21  2:59                             ` Greg KH
2013-07-21 10:22                             ` Sascha Hauer
2013-07-21 10:22                               ` Sascha Hauer
2013-07-21 10:22                               ` Sascha Hauer
2013-07-21 15:48                               ` Greg KH
2013-07-21 15:48                                 ` Greg KH
2013-07-21 15:48                                 ` Greg KH
2013-07-21 17:14                                 ` Sylwester Nawrocki
2013-07-21 17:14                                   ` Sylwester Nawrocki
2013-07-21 17:14                                   ` Sylwester Nawrocki
2013-07-21 19:22                                   ` Alan Stern
2013-07-21 19:22                                     ` Alan Stern
2013-07-21 19:22                                     ` Alan Stern
2013-07-21 19:22                                     ` Alan Stern
2013-07-22  7:25                                     ` Kishon Vijay Abraham I
2013-07-22  7:37                                       ` Kishon Vijay Abraham I
2013-07-22  7:25                                       ` Kishon Vijay Abraham I
2013-07-22  7:25                                       ` Kishon Vijay Abraham I
2013-07-22 14:44                                       ` Alan Stern
2013-07-22 14:44                                         ` Alan Stern
2013-07-22 14:44                                         ` Alan Stern
2013-07-22 14:44                                         ` Alan Stern
2013-07-23  5:47                                         ` Kishon Vijay Abraham I
2013-07-23  5:59                                           ` Kishon Vijay Abraham I
2013-07-23  5:47                                           ` Kishon Vijay Abraham I
2013-07-23  5:47                                           ` Kishon Vijay Abraham I
2013-07-23  7:29                                         ` Tomasz Figa
2013-07-23  7:29                                           ` Tomasz Figa
2013-07-23  7:29                                           ` Tomasz Figa
2013-07-23  7:55                                           ` Tomasz Figa
2013-07-23  7:55                                             ` Tomasz Figa
2013-07-23  7:55                                             ` Tomasz Figa
2013-07-23 14:37                                             ` Alan Stern
2013-07-23 14:37                                               ` Alan Stern
2013-07-23 14:37                                               ` Alan Stern
2013-07-23 14:37                                               ` Alan Stern
2013-07-23 14:50                                               ` Tomasz Figa
2013-07-23 14:50                                                 ` Tomasz Figa
2013-07-23 14:50                                                 ` Tomasz Figa
2013-07-23 14:50                                                 ` Tomasz Figa
2013-07-23 15:18                                               ` Kishon Vijay Abraham I
2013-07-23 15:30                                                 ` Kishon Vijay Abraham I
2013-07-23 15:18                                                 ` Kishon Vijay Abraham I
2013-07-23 15:18                                                 ` Kishon Vijay Abraham I
2013-07-23 16:18                                                 ` Greg KH [this message]
2013-07-23 16:18                                                   ` Greg KH
2013-07-23 16:18                                                   ` Greg KH
2013-07-23 16:18                                                   ` Greg KH
2013-07-23 16:28                                                   ` Kishon Vijay Abraham I
2013-07-23 16:40                                                     ` Kishon Vijay Abraham I
2013-07-23 16:28                                                     ` Kishon Vijay Abraham I
2013-07-23 16:28                                                     ` Kishon Vijay Abraham I
2013-07-23 16:35                                                     ` Greg KH
2013-07-23 16:35                                                       ` Greg KH
2013-07-23 16:35                                                       ` Greg KH
2013-07-23 16:35                                                       ` Greg KH
2013-07-23 16:50                                                   ` Tomasz Figa
2013-07-23 16:50                                                     ` Tomasz Figa
2013-07-23 16:50                                                     ` Tomasz Figa
2013-07-23 16:50                                                     ` Tomasz Figa
2013-07-23 17:37                                                     ` Greg KH
2013-07-23 17:37                                                       ` Greg KH
2013-07-23 17:37                                                       ` Greg KH
2013-07-23 17:37                                                       ` Greg KH
2013-07-23 17:44                                                       ` Mark Brown
2013-07-23 17:44                                                         ` Mark Brown
2013-07-23 17:44                                                         ` Mark Brown
2013-07-23 17:44                                                         ` Mark Brown
2013-07-23 18:01                                                         ` Greg KH
2013-07-23 18:01                                                           ` Greg KH
2013-07-23 18:01                                                           ` Greg KH
2013-07-23 18:01                                                           ` Greg KH
2013-07-23 19:31                                                           ` Mark Brown
2013-07-23 19:31                                                             ` Mark Brown
2013-07-23 19:31                                                             ` Mark Brown
2013-07-23 19:31                                                             ` Mark Brown
2013-07-23 19:44                                                             ` Greg KH
2013-07-23 19:44                                                               ` Greg KH
2013-07-23 19:44                                                               ` Greg KH
2013-07-23 19:44                                                               ` Greg KH
2013-07-23 20:07                                                               ` Tomasz Figa
2013-07-23 20:07                                                                 ` Tomasz Figa
2013-07-23 20:07                                                                 ` Tomasz Figa
2013-07-23 20:07                                                                 ` Tomasz Figa
2013-07-23 20:50                                                                 ` Greg KH
2013-07-23 20:50                                                                   ` Greg KH
2013-07-23 20:50                                                                   ` Greg KH
2013-07-23 20:50                                                                   ` Greg KH
2013-07-23 21:05                                                                   ` Tomasz Figa
2013-07-23 21:05                                                                     ` Tomasz Figa
2013-07-23 21:05                                                                     ` Tomasz Figa
2013-07-23 21:05                                                                     ` Tomasz Figa
2013-07-23 21:23                                                                     ` Greg KH
2013-07-23 21:23                                                                       ` Greg KH
2013-07-23 21:23                                                                       ` Greg KH
2013-07-23 21:23                                                                       ` Greg KH
2013-07-23 23:48                                                               ` Mark Brown
2013-07-23 23:48                                                                 ` Mark Brown
2013-07-23 23:48                                                                 ` Mark Brown
2013-07-23 23:48                                                                 ` Mark Brown
2013-07-23 17:48                                                       ` Tomasz Figa
2013-07-23 17:48                                                         ` Tomasz Figa
2013-07-23 17:48                                                         ` Tomasz Figa
2013-07-23 17:48                                                         ` Tomasz Figa
2013-07-23 18:04                                                         ` Greg KH
2013-07-23 18:04                                                           ` Greg KH
2013-07-23 18:04                                                           ` Greg KH
2013-07-23 18:04                                                           ` Greg KH
2013-07-23 20:46                                                           ` Tomasz Figa
2013-07-23 20:46                                                             ` Tomasz Figa
2013-07-23 20:46                                                             ` Tomasz Figa
2013-07-23 20:46                                                             ` Tomasz Figa
2013-07-23 19:36                                                     ` Alan Stern
2013-07-23 19:36                                                       ` Alan Stern
2013-07-23 19:36                                                       ` Alan Stern
2013-07-23 19:36                                                       ` Alan Stern
2013-07-23 20:20                                                       ` Tomasz Figa
2013-07-23 20:20                                                         ` Tomasz Figa
2013-07-23 20:20                                                         ` Tomasz Figa
2013-07-23 20:20                                                         ` Tomasz Figa
2013-07-23 20:53                                                         ` Alan Stern
2013-07-23 20:53                                                           ` Alan Stern
2013-07-23 20:53                                                           ` Alan Stern
2013-07-23 20:53                                                           ` Alan Stern
2013-07-23 21:02                                                           ` Tomasz Figa
2013-07-23 21:02                                                             ` Tomasz Figa
2013-07-23 21:02                                                             ` Tomasz Figa
2013-07-23 21:02                                                             ` Tomasz Figa
2013-07-23 21:14                                                             ` Alan Stern
2013-07-23 21:14                                                               ` Alan Stern
2013-07-23 21:14                                                               ` Alan Stern
2013-07-23 21:14                                                               ` Alan Stern
2013-07-23 21:31                                                               ` Tomasz Figa
2013-07-23 21:31                                                                 ` Tomasz Figa
2013-07-23 21:31                                                                 ` Tomasz Figa
2013-07-23 21:31                                                                 ` Tomasz Figa
2013-07-24 18:32                                                                 ` Arnd Bergmann
2013-07-24 18:32                                                                   ` Arnd Bergmann
2013-07-24 18:32                                                                   ` Arnd Bergmann
2013-07-24 18:32                                                                   ` Arnd Bergmann
2013-07-25  5:11                                                                   ` Kishon Vijay Abraham I
2013-07-25  5:11                                                                     ` Kishon Vijay Abraham I
2013-07-25  7:54                                                                     ` Arnd Bergmann
2013-07-25  7:54                                                                       ` Arnd Bergmann
2013-07-25  7:54                                                                       ` Arnd Bergmann
2013-07-25  7:54                                                                       ` Arnd Bergmann
2013-07-25  9:29                                                                   ` Sylwester Nawrocki
2013-07-25  9:29                                                                     ` Sylwester Nawrocki
2013-07-25  9:29                                                                     ` Sylwester Nawrocki
2013-07-25  9:29                                                                     ` Sylwester Nawrocki
2013-07-25  9:29                                                                   ` Mark Brown
2013-07-25  9:29                                                                     ` Mark Brown
2013-07-25  9:29                                                                     ` Mark Brown
2013-07-25  9:29                                                                     ` Mark Brown
2013-07-25 10:11                                                                     ` Kishon Vijay Abraham I
2013-07-25 10:11                                                                       ` Kishon Vijay Abraham I
2013-07-25 10:16                                                                   ` Laurent Pinchart
2013-07-25 10:16                                                                     ` Laurent Pinchart
2013-07-25 10:16                                                                     ` Laurent Pinchart
2013-07-25 10:16                                                                     ` Laurent Pinchart
2013-07-25 10:26                                                                     ` Florian Fainelli
2013-07-25 10:26                                                                       ` Florian Fainelli
2013-07-25 11:00                                                                     ` Arnd Bergmann
2013-07-25 11:00                                                                       ` Arnd Bergmann
2013-07-25 11:00                                                                       ` Arnd Bergmann
2013-07-25 11:00                                                                       ` Arnd Bergmann
2013-07-25 11:10                                                                       ` Laurent Pinchart
2013-07-25 11:10                                                                         ` Laurent Pinchart
2013-07-25 11:10                                                                         ` Laurent Pinchart
2013-07-25 11:10                                                                         ` Laurent Pinchart
2013-07-25 12:09                                                                       ` Mark Brown
2013-07-25 12:09                                                                         ` Mark Brown
2013-07-25 12:09                                                                         ` Mark Brown
2013-07-25 12:09                                                                         ` Mark Brown
2013-07-23 17:34                                               ` Mark Brown
2013-07-23 17:34                                                 ` Mark Brown
2013-07-23 17:34                                                 ` Mark Brown
2013-07-23 17:34                                                 ` Mark Brown
2013-07-22 15:04                                       ` Greg KH
2013-07-22 15:04                                         ` Greg KH
2013-07-22 15:04                                         ` Greg KH
2013-07-23  5:34                                         ` Kishon Vijay Abraham I
2013-07-23  5:46                                           ` Kishon Vijay Abraham I
2013-07-23  5:34                                           ` Kishon Vijay Abraham I
2013-07-23  5:34                                           ` Kishon Vijay Abraham I
2013-07-21 10:31                             ` Tomasz Figa
2013-07-21 10:31                               ` Tomasz Figa
2013-07-21 10:31                               ` Tomasz Figa
2013-07-21 11:07                               ` Kishon Vijay Abraham I
2013-07-21 11:19                                 ` Kishon Vijay Abraham I
2013-07-21 11:07                                 ` Kishon Vijay Abraham I
2013-07-21 11:07                                 ` Kishon Vijay Abraham I
2013-07-21 11:12                                 ` Tomasz Figa
2013-07-21 11:12                                   ` Tomasz Figa
2013-07-21 11:12                                   ` Tomasz Figa
2013-07-21 15:46                                   ` Greg KH
2013-07-21 15:46                                     ` Greg KH
2013-07-21 15:46                                     ` Greg KH
2013-07-21 15:46                                     ` Greg KH
2013-07-30  7:11                                     ` Felipe Balbi
2013-07-30  7:11                                       ` Felipe Balbi
2013-07-30  7:11                                       ` Felipe Balbi
2013-07-30  7:11                                       ` Felipe Balbi
2013-07-31  5:44                                       ` Kishon Vijay Abraham I
2013-07-31  5:56                                         ` Kishon Vijay Abraham I
2013-07-31  5:44                                         ` Kishon Vijay Abraham I
2013-07-31  5:44                                         ` Kishon Vijay Abraham I
2013-07-31  6:15                                         ` Felipe Balbi
2013-07-31  6:15                                           ` Felipe Balbi
2013-07-31  6:15                                           ` Felipe Balbi
2013-07-31  6:15                                           ` Felipe Balbi
2013-08-13 10:44                                           ` Kishon Vijay Abraham I
2013-08-13 10:56                                             ` Kishon Vijay Abraham I
2013-08-13 10:44                                             ` Kishon Vijay Abraham I
2013-08-13 10:44                                             ` Kishon Vijay Abraham I
2013-08-13 11:37                                             ` Tomasz Figa
2013-08-13 11:37                                               ` Tomasz Figa
2013-08-13 11:37                                               ` Tomasz Figa
2013-08-13 12:05                                               ` Kishon Vijay Abraham I
2013-08-13 12:17                                                 ` Kishon Vijay Abraham I
2013-08-13 12:05                                                 ` Kishon Vijay Abraham I
2013-08-13 12:05                                                 ` Kishon Vijay Abraham I
2013-08-13 22:19                                                 ` Sylwester Nawrocki
2013-08-13 22:19                                                   ` Sylwester Nawrocki
2013-08-13 22:19                                                   ` Sylwester Nawrocki
2013-08-13 23:04                                                   ` Tomasz Figa
2013-08-13 23:04                                                     ` Tomasz Figa
2013-08-13 23:04                                                     ` Tomasz Figa
2013-08-14 15:05                                                     ` Kishon Vijay Abraham I
2013-08-14 15:17                                                       ` Kishon Vijay Abraham I
2013-08-14 15:05                                                       ` Kishon Vijay Abraham I
2013-08-14 15:05                                                       ` Kishon Vijay Abraham I
2013-08-19  5:28                                                       ` Kishon Vijay Abraham I
2013-08-19  5:40                                                         ` Kishon Vijay Abraham I
2013-08-19  5:28                                                         ` Kishon Vijay Abraham I
2013-08-19  5:28                                                         ` Kishon Vijay Abraham I
2013-08-20 12:26                                                         ` Felipe Balbi
2013-08-20 12:26                                                           ` Felipe Balbi
2013-08-20 12:26                                                           ` Felipe Balbi
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  6:58   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` Kishon Vijay Abraham I
2013-07-18  7:21   ` Greg KH
2013-07-18  7:21     ` Greg KH
2013-07-18  7:21     ` Greg KH
2013-07-18  9:00     ` Kishon Vijay Abraham I
2013-07-18  9:12       ` Kishon Vijay Abraham I
2013-07-18  9:00       ` Kishon Vijay Abraham I
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:58   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` 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  6:58   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` Kishon Vijay Abraham I
2013-07-18  7:02   ` Tony Lindgren
2013-07-18  7:02     ` Tony Lindgren
2013-07-18  7:02     ` Tony Lindgren
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  6:58   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` Kishon Vijay Abraham I
2013-07-18  7:05   ` Tony Lindgren
2013-07-18  7:05     ` Tony Lindgren
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:58   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` 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:58   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` 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:58   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` 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:58   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` 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:58   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` 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:58   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` 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:58   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` 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:58   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` 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:58   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` Kishon Vijay Abraham I
2013-07-18  6:46 ` [PATCH 15/15] video: exynos_dp: Use the generic PHY driver Kishon Vijay Abraham I
2013-07-18  6:58   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` Kishon Vijay Abraham I
2013-07-18  6:46   ` 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=20130723161846.GD2486@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=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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.