|
@@ -31,27 +31,55 @@ static void exynos4210_usb_phy_clkset(struct platform_device *pdev)
|
|
|
struct clk *xusbxti_clk;
|
|
|
u32 phyclk;
|
|
|
|
|
|
- /* set clock frequency for PLL */
|
|
|
- phyclk = readl(EXYNOS4_PHYCLK) & ~CLKSEL_MASK;
|
|
|
-
|
|
|
xusbxti_clk = clk_get(&pdev->dev, "xusbxti");
|
|
|
if (xusbxti_clk && !IS_ERR(xusbxti_clk)) {
|
|
|
- switch (clk_get_rate(xusbxti_clk)) {
|
|
|
- case 12 * MHZ:
|
|
|
- phyclk |= CLKSEL_12M;
|
|
|
- break;
|
|
|
- case 24 * MHZ:
|
|
|
- phyclk |= CLKSEL_24M;
|
|
|
- break;
|
|
|
- default:
|
|
|
- case 48 * MHZ:
|
|
|
- /* default reference clock */
|
|
|
- break;
|
|
|
+ if (soc_is_exynos4210()) {
|
|
|
+ /* set clock frequency for PLL */
|
|
|
+ phyclk = readl(EXYNOS4_PHYCLK) & ~EXYNOS4210_CLKSEL_MASK;
|
|
|
+
|
|
|
+ switch (clk_get_rate(xusbxti_clk)) {
|
|
|
+ case 12 * MHZ:
|
|
|
+ phyclk |= EXYNOS4210_CLKSEL_12M;
|
|
|
+ break;
|
|
|
+ case 48 * MHZ:
|
|
|
+ phyclk |= EXYNOS4210_CLKSEL_48M;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ case 24 * MHZ:
|
|
|
+ phyclk |= EXYNOS4210_CLKSEL_24M;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ writel(phyclk, EXYNOS4_PHYCLK);
|
|
|
+ } else if (soc_is_exynos4212() || soc_is_exynos4412()) {
|
|
|
+ /* set clock frequency for PLL */
|
|
|
+ phyclk = readl(EXYNOS4_PHYCLK) & ~EXYNOS4X12_CLKSEL_MASK;
|
|
|
+
|
|
|
+ switch (clk_get_rate(xusbxti_clk)) {
|
|
|
+ case 9600 * KHZ:
|
|
|
+ phyclk |= EXYNOS4X12_CLKSEL_9600K;
|
|
|
+ break;
|
|
|
+ case 10 * MHZ:
|
|
|
+ phyclk |= EXYNOS4X12_CLKSEL_10M;
|
|
|
+ break;
|
|
|
+ case 12 * MHZ:
|
|
|
+ phyclk |= EXYNOS4X12_CLKSEL_12M;
|
|
|
+ break;
|
|
|
+ case 19200 * KHZ:
|
|
|
+ phyclk |= EXYNOS4X12_CLKSEL_19200K;
|
|
|
+ break;
|
|
|
+ case 20 * MHZ:
|
|
|
+ phyclk |= EXYNOS4X12_CLKSEL_20M;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ case 24 * MHZ:
|
|
|
+ /* default reference clock */
|
|
|
+ phyclk |= EXYNOS4X12_CLKSEL_24M;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ writel(phyclk, EXYNOS4_PHYCLK);
|
|
|
}
|
|
|
clk_put(xusbxti_clk);
|
|
|
}
|
|
|
-
|
|
|
- writel(phyclk, EXYNOS4_PHYCLK);
|
|
|
}
|
|
|
|
|
|
static int exynos4210_usb_phy0_init(struct platform_device *pdev)
|