Commit c0ab6bb0 authored by Ben Gamari's avatar Ben Gamari Committed by Greg Kroah-Hartman

usb/misc/usb3503: Always read refclk frequency from DT

This is necessary to set REF_SEL appropriately in uses where refclk is
always available.
Signed-off-by: default avatarBen Gamari <ben@smart-cactus.org>
Acked-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 76cb03e7
...@@ -186,8 +186,31 @@ static int usb3503_probe(struct usb3503 *hub) ...@@ -186,8 +186,31 @@ static int usb3503_probe(struct usb3503 *hub)
hub->mode = pdata->initial_mode; hub->mode = pdata->initial_mode;
} else if (np) { } else if (np) {
struct clk *clk; struct clk *clk;
u32 rate = 0;
hub->port_off_mask = 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"); clk = devm_clk_get(dev, "refclk");
if (IS_ERR(clk) && PTR_ERR(clk) != -ENOENT) { if (IS_ERR(clk) && PTR_ERR(clk) != -ENOENT) {
dev_err(dev, "unable to request refclk (%ld)\n", dev_err(dev, "unable to request refclk (%ld)\n",
...@@ -196,31 +219,9 @@ static int usb3503_probe(struct usb3503 *hub) ...@@ -196,31 +219,9 @@ static int usb3503_probe(struct usb3503 *hub)
} }
if (!IS_ERR(clk)) { if (!IS_ERR(clk)) {
u32 rate = 0;
hub->clk = clk; hub->clk = clk;
if (!of_property_read_u32(np, "refclk-frequency", if (rate != 0) {
&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;
}
err = clk_set_rate(hub->clk, rate); err = clk_set_rate(hub->clk, rate);
if (err) { if (err) {
dev_err(dev, dev_err(dev,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment