usb/misc/usb3503: Always read refclk frequency from DT
authorBen Gamari <ben@smart-cactus.org>
Wed, 18 Mar 2015 18:37:45 +0000 (14:37 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 26 Mar 2015 09:50:52 +0000 (10:50 +0100)
This is necessary to set REF_SEL appropriately in uses where refclk is
always available.

Signed-off-by: Ben Gamari <ben@smart-cactus.org>
Acked-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/misc/usb3503.c

index 258d2f546e430e0a3e866537156f2ce64a0cc106..64ff5b91752d2187c0c949927dfa311b49531460 100644 (file)
@@ -186,8 +186,31 @@ static int usb3503_probe(struct usb3503 *hub)
                hub->mode               = pdata->initial_mode;
        } else if (np) {
                struct clk *clk;
+               u32 rate = 0;
                hub->port_off_mask = 0;
 
+               if (!of_property_read_u32(np, "refclk-frequency", &rate)) {
+                       switch (rate) {
+                       case 38400000:
+                       case 26000000:
+                       case 19200000:
+                       case 12000000:
+                               hub->secondary_ref_clk = 0;
+                               break;
+                       case 24000000:
+                       case 27000000:
+                       case 25000000:
+                       case 50000000:
+                               hub->secondary_ref_clk = 1;
+                               break;
+                       default:
+                               dev_err(dev,
+                                       "unsupported reference clock rate (%d)\n",
+                                       (int) rate);
+                               return -EINVAL;
+                       }
+               }
+
                clk = devm_clk_get(dev, "refclk");
                if (IS_ERR(clk) && PTR_ERR(clk) != -ENOENT) {
                        dev_err(dev, "unable to request refclk (%ld)\n",
@@ -196,31 +219,9 @@ static int usb3503_probe(struct usb3503 *hub)
                }
 
                if (!IS_ERR(clk)) {
-                       u32 rate = 0;
                        hub->clk = clk;
 
-                       if (!of_property_read_u32(np, "refclk-frequency",
-                                                &rate)) {
-
-                               switch (rate) {
-                               case 38400000:
-                               case 26000000:
-                               case 19200000:
-                               case 12000000:
-                                       hub->secondary_ref_clk = 0;
-                                       break;
-                               case 24000000:
-                               case 27000000:
-                               case 25000000:
-                               case 50000000:
-                                       hub->secondary_ref_clk = 1;
-                                       break;
-                               default:
-                                       dev_err(dev,
-                                               "unsupported reference clock rate (%d)\n",
-                                               (int) rate);
-                                       return -EINVAL;
-                               }
+                       if (rate != 0) {
                                err = clk_set_rate(hub->clk, rate);
                                if (err) {
                                        dev_err(dev,