musb: omap: Fix: pass all the resources to musb core
PATCH 1/1 musb: omap: Fix: pass all the resources to musb core
commit 09fc7d (usb: musb: fix incorrect usage of resource pointer) assumes musb core will always have only 2 resources. But for OMAP platforms there can be 3 resources (2 irq resource and 1 iomem resource). Fixed it here.
--- drivers/usb/musb/omap2430.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-)
drivers/usb/musb/omap2430.c +2 -5
@@ -481,7 +481,7 @@ static u64 omap2430_dmamask = DMA_BIT_MASK(32);static int omap2430_probe (struct platform_device *pdev) { -struct resource musb_resources[2 ]; +struct resource musb_resources[3 ];struct musb_hdrc_platform_data *pdata = pdev->dev.platform_data;struct omap_musb_board_data *data;struct platform_device *musb;
@@ -489,6 +489,7 @@ static int omap2430_probe(struct platform_device *pdev)struct device_node *np = pdev->dev.of_node;struct musb_hdrc_config *config;int ret = -ENOMEM ; +int i =0 ; glue =devm_kzalloc (&pdev->dev,sizeof (*glue),GFP_KERNEL );if (!glue) {
@@ -571,15 +572,12 @@ static int omap2430_probe(struct platform_device *pdev)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;
Hello.
Quoted 14 lines · Kishon Vijay Abraham I
commit 09fc7d (usb: musb: fix incorrect usage of resource pointer) assumes musb core will always have only 2 resources. But for OMAP platforms there can be 3 resources (2 irq resource and 1 iomem resource). Fixed it here.
Signed-off-by Kishon Vijay Abraham I <[email protected]>--- drivers/usb/musb/omap2430.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-)drivers/usb/musb/omap2430.c +0
-0
[...]
drivers/usb/musb/omap2430.c static int omap2430_probe(struct platform_device *pdev) · line 492
Quoted 5 lines
drivers/usb/musb/omap2430.c +1
-0@@ -489,6 +489,7 @@ static int omap2430_probe(struct platform_device *pdev)struct device_node *np = pdev->dev.of_node;struct musb_hdrc_config *config;int ret = -ENOMEM ; +int i =0 ;
Redundant initialization.
Quoted 11 lines
drivers/usb/musb/omap2430.c +0
-5glue =devm_kzalloc (&pdev->dev,sizeof (*glue),GFP_KERNEL );if (!glue) {@@ -571,15 +572,12 @@ static int omap2430_probe(struct platform_device *pdev)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; -
drivers/usb/musb/omap2430.c static int omap2430_probe(struct platform_device *pdev) · line 580
Quoted 10 lines
drivers/usb/musb/omap2430.c +6
-4- 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; +for (i =0 ; i <ARRAY_SIZE (musb_resources); i++) { + musb_resources[i].name = pdev->resource[i].name; + musb_resources[i].start = pdev->resource[i].start; + musb_resources[i].end = pdev->resource[i].end; + musb_resources[i].flags = pdev->resource[i].flags; + }
WBR, Sergei
A message that is not in the archive (sent off-list or not yet received): 51DAAEEA.60409-M4DtvfQ/[email protected]
PATCH v2 1/1 musb: omap: Fix: pass all the resources to musb core
commit 09fc7d (usb: musb: fix incorrect usage of resource pointer) assumes musb core will always have only 2 resources. But for OMAP platforms there can be 3 resources (2 irq resource and 1 iomem resource). Fixed it here.
---
Changes from v1:
*) Removed redundant initialization of *i*
drivers/usb/musb/omap2430.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-)
drivers/usb/musb/omap2430.c +2 -5
@@ -481,7 +481,7 @@ static u64 omap2430_dmamask = DMA_BIT_MASK(32);static int omap2430_probe (struct platform_device *pdev) { -struct resource musb_resources[2 ]; +struct resource musb_resources[3 ];struct musb_hdrc_platform_data *pdata = pdev->dev.platform_data;struct omap_musb_board_data *data;struct platform_device *musb;
@@ -489,6 +489,7 @@ static int omap2430_probe(struct platform_device *pdev)struct device_node *np = pdev->dev.of_node;struct musb_hdrc_config *config;int ret = -ENOMEM ; +int i; glue =devm_kzalloc (&pdev->dev,sizeof (*glue),GFP_KERNEL );if (!glue) {
@@ -571,15 +572,12 @@ static int omap2430_probe(struct platform_device *pdev)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;
A message that is not in the archive (sent off-list or not yet received): 1373453962-21344-1-git-send-email-kishon-l0cyMroinI0@public.gmane.org
Quoted 38 lines · Kishon Vijay Abraham I
commit 09fc7d (usb: musb: fix incorrect usage of resource pointer) assumes musb core will always have only 2 resources. But for OMAP platforms there can be 3 resources (2 irq resource and 1 iomem resource). Fixed it here.
Signed-off-by Kishon Vijay Abraham I <[email protected]>---
Changes from v1:
*) Removed redundant initialization of *i*drivers/usb/musb/omap2430.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-)drivers/usb/musb/omap2430.c +2
-1@@ -481,7 +481,7 @@ static u64 omap2430_dmamask = DMA_BIT_MASK(32);static int omap2430_probe (struct platform_device *pdev) { -struct resource musb_resources[2 ]; +struct resource musb_resources[3 ];struct musb_hdrc_platform_data *pdata = pdev->dev.platform_data;struct omap_musb_board_data *data;struct platform_device *musb;@@ -489,6 +489,7 @@ static int omap2430_probe(struct platform_device *pdev)struct device_node *np = pdev->dev.of_node;struct musb_hdrc_config *config;int ret = -ENOMEM ; +int i; glue =devm_kzalloc (&pdev->dev,sizeof (*glue),GFP_KERNEL );if (!glue) {@@ -571,15 +572,12 @@ static int omap2430_probe(struct platform_device *pdev)memset (musb_resources,0x00 ,sizeof (*musb_resources) *ARRAY_SIZE (musb_resources));
drivers/usb/musb/omap2430.c static int omap2430_probe(struct platform_device *pdev) · line 575
Quoted 10 lines
drivers/usb/musb/omap2430.c +1
-9- 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; +for (i =0 ; i <ARRAY_SIZE (musb_resources); i++) {
then this is not enough, what if one device using omap2430.c has 2 resources and the other has 3 ? and what if a new one has 4 ?
How about using pdev->num_resources to dynamically allocate musb_resources array and using the same thing iterate here ?
Something like:
struct resource *musb_resources;
musb_resources = kcalloc(pdev->num_resources, struct resource, GPF_KERNEL);
if (!musb_resources)
bail();
for (i = 0; i < pdev->num_resources, i++) {
musb_resources[i].name = pdev->resource[i].name;
musb_resources[i].start = pdev->resource[i].start;
musb_resources[i].end = pdev->resource[i].end;
musb_resources[i].flags = pdev->resource[i].flags;
}cheers
Signature · 1 line
balbi
A message that is not in the archive (sent off-list or not yet received): 20130710112746.GA18966-S8G//mZuvNWo5Im9Ml3/[email protected]
Quoted 53 lines · Felipe Balbi
Quoted 38 lines · Kishon Vijay Abraham I
commit 09fc7d (usb: musb: fix incorrect usage of resource pointer) assumes musb core will always have only 2 resources. But for OMAP platforms there can be 3 resources (2 irq resource and 1 iomem resource). Fixed it here.
Signed-off-by Kishon Vijay Abraham I <[email protected]>---
Changes from v1:
*) Removed redundant initialization of *i*drivers/usb/musb/omap2430.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-)drivers/usb/musb/omap2430.c +2
-1@@ -481,7 +481,7 @@ static u64 omap2430_dmamask = DMA_BIT_MASK(32);static int omap2430_probe (struct platform_device *pdev) { -struct resource musb_resources[2 ]; +struct resource musb_resources[3 ];struct musb_hdrc_platform_data *pdata = pdev->dev.platform_data;struct omap_musb_board_data *data;struct platform_device *musb;@@ -489,6 +489,7 @@ static int omap2430_probe(struct platform_device *pdev)struct device_node *np = pdev->dev.of_node;struct musb_hdrc_config *config;int ret = -ENOMEM ; +int i; glue =devm_kzalloc (&pdev->dev,sizeof (*glue),GFP_KERNEL );if (!glue) {@@ -571,15 +572,12 @@ static int omap2430_probe(struct platform_device *pdev)memset (musb_resources,0x00 ,sizeof (*musb_resources) *ARRAY_SIZE (musb_resources));drivers/usb/musb/omap2430.c static int omap2430_probe(struct platform_device *pdev) · line 575
Quoted 10 lines
drivers/usb/musb/omap2430.c +1
-9- 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; +for (i =0 ; i <ARRAY_SIZE (musb_resources); i++) {then this is not enough, what if one device using
omap2430.chas 2 resources and the other has 3 ? and what if a new one has 4 ?
Quoted 2 lines
How about using
pdev->num_resourcesto dynamically allocatemusb_resourcesarray and using the same thing iterate here ?
Yeah. This looks better.
Thanks
Kishon
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html