allow to load only 1 usb port on AR9 / VR9
authorJohn Crispin <john@openwrt.org>
Sat, 15 Dec 2012 11:01:05 +0000 (11:01 +0000)
committerJohn Crispin <john@openwrt.org>
Sat, 15 Dec 2012 11:01:05 +0000 (11:01 +0000)
SVN-Revision: 34700

package/platform/lantiq/ltq-hcd/src/ifxusb_driver.c

index b49a197883bb3cffd75c812ebd481718841810dc..c30cf449148b5ec6100745cf4fead56ef1c64af5 100644 (file)
@@ -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));