mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-25 13:43:55 +08:00
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: Ben Gamari <ben@smart-cactus.org> Acked-by: Marek Szyprowski <m.szyprowski@samsung.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
76cb03e7d5
commit
c0ab6bb059
@ -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)
|
|||||||
}
|
}
|
||||||
|
|
||||||
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,
|
||||||
|
Loading…
Reference in New Issue
Block a user