diff options
Diffstat (limited to 'package/platform')
-rw-r--r-- | package/platform/lantiq/ltq-hcd/src/ifxusb_driver.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/package/platform/lantiq/ltq-hcd/src/ifxusb_driver.c b/package/platform/lantiq/ltq-hcd/src/ifxusb_driver.c index b49a197883..c30cf44914 100644 --- a/package/platform/lantiq/ltq-hcd/src/ifxusb_driver.c +++ b/package/platform/lantiq/ltq-hcd/src/ifxusb_driver.c @@ -305,6 +305,8 @@ static int ifxusb_driver_probe(struct platform_device *_pdev) int retval = 0; struct device_node *np; int gpio_count; + u32 port_mask = 0x1; + #ifdef __IS_DANUBE__ np = of_find_compatible_node(NULL, NULL, "lantiq,ifxhcd-danube"); #elif defined __IS_AMAZON_SE__ @@ -318,7 +320,7 @@ static int ifxusb_driver_probe(struct platform_device *_pdev) dev_err(&_pdev->dev, "failed to find hcd device node\n"); return -ENODEV; } - + of_property_read_u32(np, "lantiq,portmask", &port_mask); // Parsing and store the parameters IFX_DEBUGPL(DBG_ENTRY, "%s() %d\n", __func__, __LINE__ ); parse_parms(); @@ -349,24 +351,27 @@ static int ifxusb_driver_probe(struct platform_device *_pdev) ifxusb_hcd_1.dev=&_pdev->dev; ifxusb_hcd_2.dev=&_pdev->dev; - retval = ifxusb_driver_probe_h(&ifxusb_hcd_1, + if (port_mask & 0x1) { + retval = ifxusb_driver_probe_h(&ifxusb_hcd_1, IFXUSB1_IRQ, IFXUSB1_IOMEM_BASE, IFXUSB1_FIFOMEM_BASE, IFXUSB1_FIFODBG_BASE ); - if(retval) - goto ifxusb_driver_probe_fail; + if(retval) + goto ifxusb_driver_probe_fail; + } - retval = ifxusb_driver_probe_h(&ifxusb_hcd_2, + if (port_mask & 0x2) { + retval = ifxusb_driver_probe_h(&ifxusb_hcd_2, IFXUSB2_IRQ, IFXUSB2_IOMEM_BASE, IFXUSB2_FIFOMEM_BASE, IFXUSB2_FIFODBG_BASE ); - if(retval) - goto ifxusb_driver_probe_fail; - + if(retval) + goto ifxusb_driver_probe_fail; + } #elif defined(__IS_FIRST__) memset(&ifxusb_hcd, 0, sizeof(ifxhcd_hcd_t)); |