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