usb: musb resource clean-ups
Subsystems (6)
cover usb: musb resource clean-ups
This short series reworks the platform device resources of the musb child device to avoid using static resources. Setting the parent device's DT node on the child device is sufficient for the standard resource functions to work.
I ran this thru kernel-ci and didn't see any failures, but I don't know if any tested platform uses MUSB driver or if a failure would show up in the boot log.
Rob
Rob Herring (2):
usb: musb: Drop unneeded resource copying
usb: musb: Set the DT node on the child device
drivers/usb/musb/am35x.c | 2 ++ drivers/usb/musb/da8xx.c | 20 ++++---------------- drivers/usb/musb/jz4740.c | 1 + drivers/usb/musb/mediatek.c | 2 ++ drivers/usb/musb/omap2430.c | 23 ++--------------------- drivers/usb/musb/ux500.c | 18 ++---------------- 6 files changed, 13 insertions(+), 53 deletions(-)
Signature · 1 line
2.32.0
PATCH 1/2 usb: musb: Drop unneeded resource copying
The platform device resources are copied by the driver core, so there is no need for the caller to do it when creating a platform device. Just pass the parent resources to the child device directly.
--- drivers/usb/musb/da8xx.c | 18 ++---------------- drivers/usb/musb/omap2430.c | 22 +--------------------- drivers/usb/musb/ux500.c | 17 +---------------- 3 files changed, 4 insertions(+), 53 deletions(-)
drivers/usb/musb/da8xx.c +2 -16
@@ -505,7 +505,6 @@ static struct of_dev_auxdata da8xx_auxdata_lookup[] = {static int da8xx_probe (struct platform_device *pdev) { -struct resource musb_resources[2 ];struct musb_hdrc_platform_data *pdata =dev_get_platdata (&pdev->dev);struct da8xx_glue *glue;struct platform_device_info pinfo;
@@ -558,23 +557,10 @@ static int da8xx_probe(struct platform_device *pdev)if (ret)return ret; -memset (musb_resources,0x00 ,sizeof (*musb_resources) * -ARRAY_SIZE (musb_resources)); - - musb_resources[0 ].name = pdev->resource[0 ].name; - musb_resources[0 ].start = pdev->resource[0 ].start; - musb_resources[0 ].end = pdev->resource[0 ].end; - musb_resources[0 ].flags = pdev->resource[0 ].flags; - - musb_resources[1 ].name = pdev->resource[1 ].name; - musb_resources[1 ].start = pdev->resource[1 ].start; - musb_resources[1 ].end = pdev->resource[1 ].end; - musb_resources[1 ].flags = pdev->resource[1 ].flags; - pinfo = da8xx_dev_info; pinfo.parent = &pdev->dev; - pinfo.res = musb_resources; - pinfo.num_res =ARRAY_SIZE (musb_resources); + pinfo.res = pdev->resource; + pinfo.num_res = pdev->num_resources; pinfo.data = pdata; pinfo.size_data =sizeof (*pdata);
drivers/usb/musb/omap2430.c +1 -21
@@ -301,7 +301,6 @@ static u64 omap2430_dmamask = DMA_BIT_MASK(32);static int omap2430_probe (struct platform_device *pdev) { -struct resource musb_resources[3 ];struct musb_hdrc_platform_data *pdata =dev_get_platdata (&pdev->dev);struct omap_musb_board_data *data;struct platform_device *musb;
@@ -383,26 +382,7 @@ static int omap2430_probe(struct platform_device *pdev)INIT_WORK (&glue->omap_musb_mailbox_work, omap_musb_mailbox_work); -memset (musb_resources,0x00 ,sizeof (*musb_resources) * -ARRAY_SIZE (musb_resources)); - - musb_resources[0 ].name = pdev->resource[0 ].name; - musb_resources[0 ].start = pdev->resource[0 ].start; - musb_resources[0 ].end = pdev->resource[0 ].end; - musb_resources[0 ].flags = pdev->resource[0 ].flags; - - musb_resources[1 ].name = pdev->resource[1 ].name; - musb_resources[1 ].start = pdev->resource[1 ].start; - musb_resources[1 ].end = pdev->resource[1 ].end; - musb_resources[1 ].flags = pdev->resource[1 ].flags; - - musb_resources[2 ].name = pdev->resource[2 ].name; - musb_resources[2 ].start = pdev->resource[2 ].start; - musb_resources[2 ].end = pdev->resource[2 ].end; - musb_resources[2 ].flags = pdev->resource[2 ].flags; - - ret =platform_device_add_resources (musb, musb_resources, -ARRAY_SIZE (musb_resources)); + ret =platform_device_add_resources (musb, pdev->resource, pdev->num_resources);if (ret) {dev_err (&pdev->dev,"failed to add resources\n" ); goto err2;
drivers/usb/musb/ux500.c +1 -16
@@ -216,7 +216,6 @@ ux500_of_probe(struct platform_device *pdev, struct device_node *np)static int ux500_probe (struct platform_device *pdev) { -struct resource musb_resources[2 ];struct musb_hdrc_platform_data *pdata =dev_get_platdata (&pdev->dev);struct device_node *np = pdev->dev.of_node;struct platform_device *musb;
@@ -273,21 +272,7 @@ static int ux500_probe(struct platform_device *pdev)platform_set_drvdata (pdev, glue); -memset (musb_resources,0x00 ,sizeof (*musb_resources) * -ARRAY_SIZE (musb_resources)); - - musb_resources[0 ].name = pdev->resource[0 ].name; - musb_resources[0 ].start = pdev->resource[0 ].start; - musb_resources[0 ].end = pdev->resource[0 ].end; - musb_resources[0 ].flags = pdev->resource[0 ].flags; - - musb_resources[1 ].name = pdev->resource[1 ].name; - musb_resources[1 ].start = pdev->resource[1 ].start; - musb_resources[1 ].end = pdev->resource[1 ].end; - musb_resources[1 ].flags = pdev->resource[1 ].flags; - - ret =platform_device_add_resources (musb, musb_resources, -ARRAY_SIZE (musb_resources)); + ret =platform_device_add_resources (musb, pdev->resource, pdev->num_resources);if (ret) {dev_err (&pdev->dev,"failed to add resources\n" ); goto err2;
Signature · 1 line
2.32.0
PATCH 2/2 usb: musb: Set the DT node on the child device
In reply to Rob HerringThe musb glue drivers just copy the glue resources to the musb child device. Instead, set the musb child device's DT node pointer to the parent device's node so that platform_get_irq_byname() can find the resources in the DT. This removes the need for statically populating the IRQ resources from the DT which has been deprecated for some time.
--- drivers/usb/musb/am35x.c | 2 ++ drivers/usb/musb/da8xx.c | 2 ++ drivers/usb/musb/jz4740.c | 1 + drivers/usb/musb/mediatek.c | 2 ++ drivers/usb/musb/omap2430.c | 1 + drivers/usb/musb/ux500.c | 1 + 6 files changed, 9 insertions(+)
drivers/usb/musb/am35x.c +2 -0
@@ -500,6 +500,8 @@ static int am35x_probe(struct platform_device *pdev) pinfo.num_res = pdev->num_resources; pinfo.data = pdata; pinfo.size_data =sizeof (*pdata); + pinfo.fwnode =of_fwnode_handle (pdev->dev.of_node); + pinfo.of_node_reused = true; glue->musb = musb =platform_device_register_full (&pinfo);if (IS_ERR (musb)) {
drivers/usb/musb/da8xx.c +2 -0
@@ -563,6 +563,8 @@ static int da8xx_probe(struct platform_device *pdev) pinfo.num_res = pdev->num_resources; pinfo.data = pdata; pinfo.size_data =sizeof (*pdata); + pinfo.fwnode =of_fwnode_handle (np); + pinfo.of_node_reused = true; glue->musb =platform_device_register_full (&pinfo); ret =PTR_ERR_OR_ZERO (glue->musb);
drivers/usb/musb/jz4740.c +1 -0
@@ -231,6 +231,7 @@ static int jz4740_probe(struct platform_device *pdev) musb->dev.parent = dev; musb->dev.dma_mask = &musb->dev.coherent_dma_mask; musb->dev.coherent_dma_mask =DMA_BIT_MASK (32 ); +device_set_of_node_from_dev (&musb->dev, dev); glue->pdev = musb; glue->clk = clk;
drivers/usb/musb/mediatek.c +2 -0
@@ -538,6 +538,8 @@ static int mtk_musb_probe(struct platform_device *pdev) pinfo.num_res = pdev->num_resources; pinfo.data = pdata; pinfo.size_data =sizeof (*pdata); + pinfo.fwnode =of_fwnode_handle (np); + pinfo.of_node_reused = true; glue->musb_pdev =platform_device_register_full (&pinfo);if (IS_ERR (glue->musb_pdev)) {
drivers/usb/musb/omap2430.c +1 -0
@@ -327,6 +327,7 @@ static int omap2430_probe(struct platform_device *pdev) musb->dev.parent = &pdev->dev; musb->dev.dma_mask = &omap2430_dmamask; musb->dev.coherent_dma_mask = omap2430_dmamask; +device_set_of_node_from_dev (&musb->dev, &pdev->dev); glue->dev = &pdev->dev; glue->musb = musb;
drivers/usb/musb/ux500.c +1 -0
@@ -262,6 +262,7 @@ static int ux500_probe(struct platform_device *pdev) musb->dev.parent = &pdev->dev; musb->dev.dma_mask = &pdev->dev.coherent_dma_mask; musb->dev.coherent_dma_mask = pdev->dev.coherent_dma_mask; +device_set_of_node_from_dev (&musb->dev, &pdev->dev); glue->dev = &pdev->dev; glue->musb = musb;
Signature · 1 line
2.32.0