Message ID | 20190604131516.13596-24-kishon@ti.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
Series | Add PCIe support to TI's J721E SoC | expand |
On Tue, Jun 4, 2019 at 7:19 AM Kishon Vijay Abraham I <kishon@ti.com> wrote: > > Export of_platform_device_create_pdata() to be used by drivers to > create child devices with the given platform data. This can be used > by platform specific driver to send platform data core driver. For e.g., > this will be used by TI's J721E SoC specific PCIe driver to send > ->start_link() ops and ->is_link_up() ops to Cadence core PCIe driver. NAK of_platform_device_create_pdata() is purely for legacy handling of auxdata which is something I hope to get rid of someday. Or to put it another way, auxdata use is a sign of platforms not fully converted to DT. Rob
Hi Rob, On 10/06/19 11:13 PM, Rob Herring wrote: > On Tue, Jun 4, 2019 at 7:19 AM Kishon Vijay Abraham I <kishon@ti.com> wrote: >> >> Export of_platform_device_create_pdata() to be used by drivers to >> create child devices with the given platform data. This can be used >> by platform specific driver to send platform data core driver. For e.g., >> this will be used by TI's J721E SoC specific PCIe driver to send >> ->start_link() ops and ->is_link_up() ops to Cadence core PCIe driver. > > NAK > > of_platform_device_create_pdata() is purely for legacy handling of > auxdata which is something I hope to get rid of someday. Or to put it > another way, auxdata use is a sign of platforms not fully converted to > DT. All right. Thanks for letting me know your thoughts. Lorenzo, We've modeled Cadence PCIe core as a separate driver and for some of the functionalities (for example starting LTSSM or checking link status) it has to invoke the wrapper driver functions (The registers for these are present in wrapper and not in Cadence Core). In the case of Designware, we modeled DWC core as a library which provided APIs to be used by wrapper driver. Now that Rob is not inclined for passing platform data from one driver to another (in this case TI specific J721E driver to Cadence PCIe driver), should we model Cadence core also as a library? If you agree, I can prepare patches for making Cadence PCIe core as a library. Please let me know your thoughts. Thanks Kishon
Lorenzo, On 11/06/19 10:08 AM, Kishon Vijay Abraham I wrote: > Hi Rob, > > On 10/06/19 11:13 PM, Rob Herring wrote: >> On Tue, Jun 4, 2019 at 7:19 AM Kishon Vijay Abraham I <kishon@ti.com> wrote: >>> >>> Export of_platform_device_create_pdata() to be used by drivers to >>> create child devices with the given platform data. This can be used >>> by platform specific driver to send platform data core driver. For e.g., >>> this will be used by TI's J721E SoC specific PCIe driver to send >>> ->start_link() ops and ->is_link_up() ops to Cadence core PCIe driver. >> >> NAK >> >> of_platform_device_create_pdata() is purely for legacy handling of >> auxdata which is something I hope to get rid of someday. Or to put it >> another way, auxdata use is a sign of platforms not fully converted to >> DT. > > All right. Thanks for letting me know your thoughts. > > Lorenzo, > > We've modeled Cadence PCIe core as a separate driver and for some of the > functionalities (for example starting LTSSM or checking link status) it has to > invoke the wrapper driver functions (The registers for these are present in > wrapper and not in Cadence Core). In the case of Designware, we modeled DWC > core as a library which provided APIs to be used by wrapper driver. Now that > Rob is not inclined for passing platform data from one driver to another (in > this case TI specific J721E driver to Cadence PCIe driver), should we model > Cadence core also as a library? If you agree, I can prepare patches for making > Cadence PCIe core as a library. Please let me know your thoughts. Can you share your thoughts on this? Thanks Kishon
diff --git a/drivers/of/platform.c b/drivers/of/platform.c index 04ad312fd85b..94e0f733461a 100644 --- a/drivers/of/platform.c +++ b/drivers/of/platform.c @@ -169,11 +169,9 @@ EXPORT_SYMBOL(of_device_alloc); * Returns pointer to created platform device, or NULL if a device was not * registered. Unavailable devices will not get registered. */ -static struct platform_device *of_platform_device_create_pdata( - struct device_node *np, - const char *bus_id, - void *platform_data, - struct device *parent) +struct platform_device * +of_platform_device_create_pdata(struct device_node *np, const char *bus_id, + void *platform_data, struct device *parent) { struct platform_device *dev; @@ -203,6 +201,7 @@ static struct platform_device *of_platform_device_create_pdata( of_node_clear_flag(np, OF_POPULATED); return NULL; } +EXPORT_SYMBOL(of_platform_device_create_pdata); /** * of_platform_device_create - Alloc, initialize and register an of_device diff --git a/include/linux/of_platform.h b/include/linux/of_platform.h index 84a966623e78..0f1f58775086 100644 --- a/include/linux/of_platform.h +++ b/include/linux/of_platform.h @@ -70,6 +70,9 @@ extern int of_platform_device_destroy(struct device *dev, void *data); extern int of_platform_bus_probe(struct device_node *root, const struct of_device_id *matches, struct device *parent); +extern struct platform_device * +of_platform_device_create_pdata(struct device_node *np, const char *bus_id, + void *platform_data, struct device *parent); #ifdef CONFIG_OF_ADDRESS extern int of_platform_populate(struct device_node *root, const struct of_device_id *matches,
Export of_platform_device_create_pdata() to be used by drivers to create child devices with the given platform data. This can be used by platform specific driver to send platform data core driver. For e.g., this will be used by TI's J721E SoC specific PCIe driver to send ->start_link() ops and ->is_link_up() ops to Cadence core PCIe driver. Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> --- drivers/of/platform.c | 9 ++++----- include/linux/of_platform.h | 3 +++ 2 files changed, 7 insertions(+), 5 deletions(-)