Merge tag 'clk-fixes-for-linus' of git://git.linaro.org/people/mike.turquette/linux

Pull clock driver fixes from Mike Turquette:
"This batch of fixes is for a handful of clock drivers from Allwinner,
Samsung, ST & TI. Most of them are of the "this hardware won't work
without this fix" variety, including patches that fix platforms that
did not boot under certain configurations. Other fixes are the result
of changes to the clock core introduced in 3.15 that had subtle
impacts on the clock drivers.

There are no fixes to the clock framework core in this pull request"

* tag 'clk-fixes-for-linus' of git://git.linaro.org/people/mike.turquette/linux:
clk: spear3xx: Set proper clock parent of uart1/2
clk: spear3xx: Use proper control register offset
clk: qcom: HDMI source sel is 3 not 2
clk: sunxi: fix devm_ioremap_resource error detection code
clk: s2mps11: Fix double free corruption during driver unbind
clk: ti: am43x: Fix boot with CONFIG_SOC_AM33XX disabled
clk: exynos5420: Remove aclk66_peric from the clock tree description
clk/exynos5250: fix bit number for tv sysmmu clock
clk: s3c64xx: Hookup SPI clocks correctly
clk: samsung: exynos4: Remove SRC_MASK_ISP gates
clk: samsung: add more aliases for s3c24xx
clk: samsung: fix several typos to fix boot on s3c2410
clk: ti: set CLK_SET_RATE_NO_REPARENT for ti,mux-clock
clk: ti: am43x: Fix boot with CONFIG_SOC_AM33XX disabled
clk: ti: dra7: return error code in failure case
clk: ti: apll: not allocating enough data

+2 -5
drivers/clk/clk-s2mps11.c
··· 230 230 goto err_reg; 231 231 } 232 232 233 - s2mps11_clk->lookup = devm_kzalloc(&pdev->dev, 234 - sizeof(struct clk_lookup), GFP_KERNEL); 233 + s2mps11_clk->lookup = clkdev_alloc(s2mps11_clk->clk, 234 + s2mps11_name(s2mps11_clk), NULL); 235 235 if (!s2mps11_clk->lookup) { 236 236 ret = -ENOMEM; 237 237 goto err_lup; 238 238 } 239 - 240 - s2mps11_clk->lookup->con_id = s2mps11_name(s2mps11_clk); 241 - s2mps11_clk->lookup->clk = s2mps11_clk->clk; 242 239 243 240 clkdev_add(s2mps11_clk->lookup); 244 241 }
+1 -1
drivers/clk/qcom/mmcc-msm8960.c
··· 1209 1209 1210 1210 static u8 mmcc_pxo_hdmi_map[] = { 1211 1211 [P_PXO] = 0, 1212 - [P_HDMI_PLL] = 2, 1212 + [P_HDMI_PLL] = 3, 1213 1213 }; 1214 1214 1215 1215 static const char *mmcc_pxo_hdmi[] = {
+4 -12
drivers/clk/samsung/clk-exynos4.c
··· 925 925 GATE(CLK_RTC, "rtc", "aclk100", E4X12_GATE_IP_PERIR, 15, 926 926 0, 0), 927 927 GATE(CLK_KEYIF, "keyif", "aclk100", E4X12_GATE_IP_PERIR, 16, 0, 0), 928 - GATE(CLK_SCLK_PWM_ISP, "sclk_pwm_isp", "div_pwm_isp", 929 - E4X12_SRC_MASK_ISP, 0, CLK_SET_RATE_PARENT, 0), 930 - GATE(CLK_SCLK_SPI0_ISP, "sclk_spi0_isp", "div_spi0_isp_pre", 931 - E4X12_SRC_MASK_ISP, 4, CLK_SET_RATE_PARENT, 0), 932 - GATE(CLK_SCLK_SPI1_ISP, "sclk_spi1_isp", "div_spi1_isp_pre", 933 - E4X12_SRC_MASK_ISP, 8, CLK_SET_RATE_PARENT, 0), 934 - GATE(CLK_SCLK_UART_ISP, "sclk_uart_isp", "div_uart_isp", 935 - E4X12_SRC_MASK_ISP, 12, CLK_SET_RATE_PARENT, 0), 936 - GATE(CLK_PWM_ISP_SCLK, "pwm_isp_sclk", "sclk_pwm_isp", 928 + GATE(CLK_PWM_ISP_SCLK, "pwm_isp_sclk", "div_pwm_isp", 937 929 E4X12_GATE_IP_ISP, 0, 0, 0), 938 - GATE(CLK_SPI0_ISP_SCLK, "spi0_isp_sclk", "sclk_spi0_isp", 930 + GATE(CLK_SPI0_ISP_SCLK, "spi0_isp_sclk", "div_spi0_isp_pre", 939 931 E4X12_GATE_IP_ISP, 1, 0, 0), 940 - GATE(CLK_SPI1_ISP_SCLK, "spi1_isp_sclk", "sclk_spi1_isp", 932 + GATE(CLK_SPI1_ISP_SCLK, "spi1_isp_sclk", "div_spi1_isp_pre", 941 933 E4X12_GATE_IP_ISP, 2, 0, 0), 942 - GATE(CLK_UART_ISP_SCLK, "uart_isp_sclk", "sclk_uart_isp", 934 + GATE(CLK_UART_ISP_SCLK, "uart_isp_sclk", "div_uart_isp", 943 935 E4X12_GATE_IP_ISP, 3, 0, 0), 944 936 GATE(CLK_WDT, "watchdog", "aclk100", E4X12_GATE_IP_PERIR, 14, 0, 0), 945 937 GATE(CLK_PCM0, "pcm0", "aclk100", E4X12_GATE_IP_MAUDIO, 2,
+1 -1
drivers/clk/samsung/clk-exynos5250.c
··· 661 661 GATE(CLK_RTC, "rtc", "div_aclk66", GATE_IP_PERIS, 20, 0, 0), 662 662 GATE(CLK_TMU, "tmu", "div_aclk66", GATE_IP_PERIS, 21, 0, 0), 663 663 GATE(CLK_SMMU_TV, "smmu_tv", "mout_aclk200_disp1_sub", 664 - GATE_IP_DISP1, 2, 0, 0), 664 + GATE_IP_DISP1, 9, 0, 0), 665 665 GATE(CLK_SMMU_FIMD1, "smmu_fimd1", "mout_aclk200_disp1_sub", 666 666 GATE_IP_DISP1, 8, 0, 0), 667 667 GATE(CLK_SMMU_2D, "smmu_2d", "div_aclk200", GATE_IP_ACP, 7, 0, 0),
+54 -29
drivers/clk/samsung/clk-exynos5420.c
··· 892 892 GATE_BUS_TOP, 9, CLK_IGNORE_UNUSED, 0), 893 893 GATE(0, "aclk66_psgen", "mout_user_aclk66_psgen", 894 894 GATE_BUS_TOP, 10, CLK_IGNORE_UNUSED, 0), 895 - GATE(CLK_ACLK66_PERIC, "aclk66_peric", "mout_user_aclk66_peric", 896 - GATE_BUS_TOP, 11, CLK_IGNORE_UNUSED, 0), 897 895 GATE(0, "aclk266_isp", "mout_user_aclk266_isp", 898 896 GATE_BUS_TOP, 13, 0, 0), 899 897 GATE(0, "aclk166", "mout_user_aclk166", ··· 994 996 SRC_MASK_FSYS, 24, CLK_SET_RATE_PARENT, 0), 995 997 996 998 /* PERIC Block */ 997 - GATE(CLK_UART0, "uart0", "aclk66_peric", GATE_IP_PERIC, 0, 0, 0), 998 - GATE(CLK_UART1, "uart1", "aclk66_peric", GATE_IP_PERIC, 1, 0, 0), 999 - GATE(CLK_UART2, "uart2", "aclk66_peric", GATE_IP_PERIC, 2, 0, 0), 1000 - GATE(CLK_UART3, "uart3", "aclk66_peric", GATE_IP_PERIC, 3, 0, 0), 1001 - GATE(CLK_I2C0, "i2c0", "aclk66_peric", GATE_IP_PERIC, 6, 0, 0), 1002 - GATE(CLK_I2C1, "i2c1", "aclk66_peric", GATE_IP_PERIC, 7, 0, 0), 1003 - GATE(CLK_I2C2, "i2c2", "aclk66_peric", GATE_IP_PERIC, 8, 0, 0), 1004 - GATE(CLK_I2C3, "i2c3", "aclk66_peric", GATE_IP_PERIC, 9, 0, 0), 1005 - GATE(CLK_USI0, "usi0", "aclk66_peric", GATE_IP_PERIC, 10, 0, 0), 1006 - GATE(CLK_USI1, "usi1", "aclk66_peric", GATE_IP_PERIC, 11, 0, 0), 1007 - GATE(CLK_USI2, "usi2", "aclk66_peric", GATE_IP_PERIC, 12, 0, 0), 1008 - GATE(CLK_USI3, "usi3", "aclk66_peric", GATE_IP_PERIC, 13, 0, 0), 1009 - GATE(CLK_I2C_HDMI, "i2c_hdmi", "aclk66_peric", GATE_IP_PERIC, 14, 0, 0), 1010 - GATE(CLK_TSADC, "tsadc", "aclk66_peric", GATE_IP_PERIC, 15, 0, 0), 1011 - GATE(CLK_SPI0, "spi0", "aclk66_peric", GATE_IP_PERIC, 16, 0, 0), 1012 - GATE(CLK_SPI1, "spi1", "aclk66_peric", GATE_IP_PERIC, 17, 0, 0), 1013 - GATE(CLK_SPI2, "spi2", "aclk66_peric", GATE_IP_PERIC, 18, 0, 0), 1014 - GATE(CLK_I2S1, "i2s1", "aclk66_peric", GATE_IP_PERIC, 20, 0, 0), 1015 - GATE(CLK_I2S2, "i2s2", "aclk66_peric", GATE_IP_PERIC, 21, 0, 0), 1016 - GATE(CLK_PCM1, "pcm1", "aclk66_peric", GATE_IP_PERIC, 22, 0, 0), 1017 - GATE(CLK_PCM2, "pcm2", "aclk66_peric", GATE_IP_PERIC, 23, 0, 0), 1018 - GATE(CLK_PWM, "pwm", "aclk66_peric", GATE_IP_PERIC, 24, 0, 0), 1019 - GATE(CLK_SPDIF, "spdif", "aclk66_peric", GATE_IP_PERIC, 26, 0, 0), 1020 - GATE(CLK_USI4, "usi4", "aclk66_peric", GATE_IP_PERIC, 28, 0, 0), 1021 - GATE(CLK_USI5, "usi5", "aclk66_peric", GATE_IP_PERIC, 30, 0, 0), 1022 - GATE(CLK_USI6, "usi6", "aclk66_peric", GATE_IP_PERIC, 31, 0, 0), 999 + GATE(CLK_UART0, "uart0", "mout_user_aclk66_peric", 1000 + GATE_IP_PERIC, 0, 0, 0), 1001 + GATE(CLK_UART1, "uart1", "mout_user_aclk66_peric", 1002 + GATE_IP_PERIC, 1, 0, 0), 1003 + GATE(CLK_UART2, "uart2", "mout_user_aclk66_peric", 1004 + GATE_IP_PERIC, 2, 0, 0), 1005 + GATE(CLK_UART3, "uart3", "mout_user_aclk66_peric", 1006 + GATE_IP_PERIC, 3, 0, 0), 1007 + GATE(CLK_I2C0, "i2c0", "mout_user_aclk66_peric", 1008 + GATE_IP_PERIC, 6, 0, 0), 1009 + GATE(CLK_I2C1, "i2c1", "mout_user_aclk66_peric", 1010 + GATE_IP_PERIC, 7, 0, 0), 1011 + GATE(CLK_I2C2, "i2c2", "mout_user_aclk66_peric", 1012 + GATE_IP_PERIC, 8, 0, 0), 1013 + GATE(CLK_I2C3, "i2c3", "mout_user_aclk66_peric", 1014 + GATE_IP_PERIC, 9, 0, 0), 1015 + GATE(CLK_USI0, "usi0", "mout_user_aclk66_peric", 1016 + GATE_IP_PERIC, 10, 0, 0), 1017 + GATE(CLK_USI1, "usi1", "mout_user_aclk66_peric", 1018 + GATE_IP_PERIC, 11, 0, 0), 1019 + GATE(CLK_USI2, "usi2", "mout_user_aclk66_peric", 1020 + GATE_IP_PERIC, 12, 0, 0), 1021 + GATE(CLK_USI3, "usi3", "mout_user_aclk66_peric", 1022 + GATE_IP_PERIC, 13, 0, 0), 1023 + GATE(CLK_I2C_HDMI, "i2c_hdmi", "mout_user_aclk66_peric", 1024 + GATE_IP_PERIC, 14, 0, 0), 1025 + GATE(CLK_TSADC, "tsadc", "mout_user_aclk66_peric", 1026 + GATE_IP_PERIC, 15, 0, 0), 1027 + GATE(CLK_SPI0, "spi0", "mout_user_aclk66_peric", 1028 + GATE_IP_PERIC, 16, 0, 0), 1029 + GATE(CLK_SPI1, "spi1", "mout_user_aclk66_peric", 1030 + GATE_IP_PERIC, 17, 0, 0), 1031 + GATE(CLK_SPI2, "spi2", "mout_user_aclk66_peric", 1032 + GATE_IP_PERIC, 18, 0, 0), 1033 + GATE(CLK_I2S1, "i2s1", "mout_user_aclk66_peric", 1034 + GATE_IP_PERIC, 20, 0, 0), 1035 + GATE(CLK_I2S2, "i2s2", "mout_user_aclk66_peric", 1036 + GATE_IP_PERIC, 21, 0, 0), 1037 + GATE(CLK_PCM1, "pcm1", "mout_user_aclk66_peric", 1038 + GATE_IP_PERIC, 22, 0, 0), 1039 + GATE(CLK_PCM2, "pcm2", "mout_user_aclk66_peric", 1040 + GATE_IP_PERIC, 23, 0, 0), 1041 + GATE(CLK_PWM, "pwm", "mout_user_aclk66_peric", 1042 + GATE_IP_PERIC, 24, 0, 0), 1043 + GATE(CLK_SPDIF, "spdif", "mout_user_aclk66_peric", 1044 + GATE_IP_PERIC, 26, 0, 0), 1045 + GATE(CLK_USI4, "usi4", "mout_user_aclk66_peric", 1046 + GATE_IP_PERIC, 28, 0, 0), 1047 + GATE(CLK_USI5, "usi5", "mout_user_aclk66_peric", 1048 + GATE_IP_PERIC, 30, 0, 0), 1049 + GATE(CLK_USI6, "usi6", "mout_user_aclk66_peric", 1050 + GATE_IP_PERIC, 31, 0, 0), 1023 1051 1024 - GATE(CLK_KEYIF, "keyif", "aclk66_peric", GATE_BUS_PERIC, 22, 0, 0), 1052 + GATE(CLK_KEYIF, "keyif", "mout_user_aclk66_peric", 1053 + GATE_BUS_PERIC, 22, 0, 0), 1025 1054 1026 1055 /* PERIS Block */ 1027 1056 GATE(CLK_CHIPID, "chipid", "aclk66_psgen",
+7 -2
drivers/clk/samsung/clk-s3c2410.c
··· 152 152 ALIAS(HCLK, NULL, "hclk"), 153 153 ALIAS(MPLL, NULL, "mpll"), 154 154 ALIAS(FCLK, NULL, "fclk"), 155 + ALIAS(PCLK, NULL, "watchdog"), 156 + ALIAS(PCLK_SDI, NULL, "sdi"), 157 + ALIAS(HCLK_NAND, NULL, "nand"), 158 + ALIAS(PCLK_I2S, NULL, "iis"), 159 + ALIAS(PCLK_I2C, NULL, "i2c"), 155 160 }; 156 161 157 162 /* S3C2410 specific clocks */ ··· 383 378 if (!np) 384 379 s3c2410_common_clk_register_fixed_ext(ctx, xti_f); 385 380 386 - if (current_soc == 2410) { 381 + if (current_soc == S3C2410) { 387 382 if (_get_rate("xti") == 12 * MHZ) { 388 383 s3c2410_plls[mpll].rate_table = pll_s3c2410_12mhz_tbl; 389 384 s3c2410_plls[upll].rate_table = pll_s3c2410_12mhz_tbl; ··· 437 432 samsung_clk_register_fixed_factor(ctx, s3c2410_ffactor, 438 433 ARRAY_SIZE(s3c2410_ffactor)); 439 434 samsung_clk_register_alias(ctx, s3c2410_aliases, 440 - ARRAY_SIZE(s3c2410_common_aliases)); 435 + ARRAY_SIZE(s3c2410_aliases)); 441 436 break; 442 437 case S3C2440: 443 438 samsung_clk_register_mux(ctx, s3c2440_muxes,
+4 -2
drivers/clk/samsung/clk-s3c64xx.c
··· 418 418 ALIAS(SCLK_MMC2, "s3c-sdhci.2", "mmc_busclk.2"), 419 419 ALIAS(SCLK_MMC1, "s3c-sdhci.1", "mmc_busclk.2"), 420 420 ALIAS(SCLK_MMC0, "s3c-sdhci.0", "mmc_busclk.2"), 421 - ALIAS(SCLK_SPI1, "s3c6410-spi.1", "spi-bus"), 422 - ALIAS(SCLK_SPI0, "s3c6410-spi.0", "spi-bus"), 421 + ALIAS(PCLK_SPI1, "s3c6410-spi.1", "spi_busclk0"), 422 + ALIAS(SCLK_SPI1, "s3c6410-spi.1", "spi_busclk2"), 423 + ALIAS(PCLK_SPI0, "s3c6410-spi.0", "spi_busclk0"), 424 + ALIAS(SCLK_SPI0, "s3c6410-spi.0", "spi_busclk2"), 423 425 ALIAS(SCLK_AUDIO1, "samsung-pcm.1", "audio-bus"), 424 426 ALIAS(SCLK_AUDIO1, "samsung-i2s.1", "audio-bus"), 425 427 ALIAS(SCLK_AUDIO0, "samsung-pcm.0", "audio-bus"),
+11 -5
drivers/clk/spear/spear3xx_clock.c
··· 211 211 /* array of all spear 320 clock lookups */ 212 212 #ifdef CONFIG_MACH_SPEAR320 213 213 214 - #define SPEAR320_CONTROL_REG (soc_config_base + 0x0000) 214 + #define SPEAR320_CONTROL_REG (soc_config_base + 0x0010) 215 215 #define SPEAR320_EXT_CTRL_REG (soc_config_base + 0x0018) 216 216 217 217 #define SPEAR320_UARTX_PCLK_MASK 0x1 ··· 245 245 "ras_syn0_gclk", }; 246 246 static const char *uartx_parents[] = { "ras_syn1_gclk", "ras_apb_clk", }; 247 247 248 - static void __init spear320_clk_init(void __iomem *soc_config_base) 248 + static void __init spear320_clk_init(void __iomem *soc_config_base, 249 + struct clk *ras_apb_clk) 249 250 { 250 251 struct clk *clk; 251 252 ··· 343 342 SPEAR320_CONTROL_REG, UART1_PCLK_SHIFT, UART1_PCLK_MASK, 344 343 0, &_lock); 345 344 clk_register_clkdev(clk, NULL, "a3000000.serial"); 345 + /* Enforce ras_apb_clk */ 346 + clk_set_parent(clk, ras_apb_clk); 346 347 347 348 clk = clk_register_mux(NULL, "uart2_clk", uartx_parents, 348 349 ARRAY_SIZE(uartx_parents), ··· 352 349 SPEAR320_EXT_CTRL_REG, SPEAR320_UART2_PCLK_SHIFT, 353 350 SPEAR320_UARTX_PCLK_MASK, 0, &_lock); 354 351 clk_register_clkdev(clk, NULL, "a4000000.serial"); 352 + /* Enforce ras_apb_clk */ 353 + clk_set_parent(clk, ras_apb_clk); 355 354 356 355 clk = clk_register_mux(NULL, "uart3_clk", uartx_parents, 357 356 ARRAY_SIZE(uartx_parents), ··· 384 379 clk_register_clkdev(clk, NULL, "60100000.serial"); 385 380 } 386 381 #else 387 - static inline void spear320_clk_init(void __iomem *soc_config_base) { } 382 + static inline void spear320_clk_init(void __iomem *sb, struct clk *rc) { } 388 383 #endif 389 384 390 385 void __init spear3xx_clk_init(void __iomem *misc_base, void __iomem *soc_config_base) 391 386 { 392 - struct clk *clk, *clk1; 387 + struct clk *clk, *clk1, *ras_apb_clk; 393 388 394 389 clk = clk_register_fixed_rate(NULL, "osc_32k_clk", NULL, CLK_IS_ROOT, 395 390 32000); ··· 618 613 clk = clk_register_gate(NULL, "ras_apb_clk", "apb_clk", 0, RAS_CLK_ENB, 619 614 RAS_APB_CLK_ENB, 0, &_lock); 620 615 clk_register_clkdev(clk, "ras_apb_clk", NULL); 616 + ras_apb_clk = clk; 621 617 622 618 clk = clk_register_gate(NULL, "ras_32k_clk", "osc_32k_clk", 0, 623 619 RAS_CLK_ENB, RAS_32K_CLK_ENB, 0, &_lock); ··· 665 659 else if (of_machine_is_compatible("st,spear310")) 666 660 spear310_clk_init(); 667 661 else if (of_machine_is_compatible("st,spear320")) 668 - spear320_clk_init(soc_config_base); 662 + spear320_clk_init(soc_config_base, ras_apb_clk); 669 663 }
+1 -1
drivers/clk/sunxi/clk-sun6i-apb0-gates.c
··· 29 29 30 30 r = platform_get_resource(pdev, IORESOURCE_MEM, 0); 31 31 reg = devm_ioremap_resource(&pdev->dev, r); 32 - if (!reg) 32 + if (IS_ERR(reg)) 33 33 return PTR_ERR(reg); 34 34 35 35 clk_parent = of_clk_get_parent_name(np, 0);
+3 -5
drivers/clk/ti/apll.c
··· 77 77 if (i == MAX_APLL_WAIT_TRIES) { 78 78 pr_warn("clock: %s failed transition to '%s'\n", 79 79 clk_name, (state) ? "locked" : "bypassed"); 80 - } else { 80 + r = -EBUSY; 81 + } else 81 82 pr_debug("clock: %s transition to '%s' in %d loops\n", 82 83 clk_name, (state) ? "locked" : "bypassed", i); 83 - 84 - r = 0; 85 - } 86 84 87 85 return r; 88 86 } ··· 336 338 const char *parent_name; 337 339 u32 val; 338 340 339 - ad = kzalloc(sizeof(*clk_hw), GFP_KERNEL); 341 + ad = kzalloc(sizeof(*ad), GFP_KERNEL); 340 342 clk_hw = kzalloc(sizeof(*clk_hw), GFP_KERNEL); 341 343 init = kzalloc(sizeof(*init), GFP_KERNEL); 342 344
+3 -2
drivers/clk/ti/dpll.c
··· 161 161 } 162 162 163 163 #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) || \ 164 - defined(CONFIG_SOC_DRA7XX) || defined(CONFIG_SOC_AM33XX) 164 + defined(CONFIG_SOC_DRA7XX) || defined(CONFIG_SOC_AM33XX) || \ 165 + defined(CONFIG_SOC_AM43XX) 165 166 /** 166 167 * ti_clk_register_dpll_x2 - Registers a DPLLx2 clock 167 168 * @node: device node for this clock ··· 323 322 of_ti_omap4_dpll_x2_setup); 324 323 #endif 325 324 326 - #ifdef CONFIG_SOC_AM33XX 325 + #if defined(CONFIG_SOC_AM33XX) || defined(CONFIG_SOC_AM43XX) 327 326 static void __init of_ti_am3_dpll_x2_setup(struct device_node *node) 328 327 { 329 328 ti_clk_register_dpll_x2(node, &dpll_x2_ck_ops, NULL);
+1 -1
drivers/clk/ti/mux.c
··· 160 160 u8 clk_mux_flags = 0; 161 161 u32 mask = 0; 162 162 u32 shift = 0; 163 - u32 flags = 0; 163 + u32 flags = CLK_SET_RATE_NO_REPARENT; 164 164 165 165 num_parents = of_clk_get_parent_count(node); 166 166 if (num_parents < 2) {
-1
include/dt-bindings/clock/exynos5420.h
··· 63 63 #define CLK_SCLK_MPHY_IXTAL24 161 64 64 65 65 /* gate clocks */ 66 - #define CLK_ACLK66_PERIC 256 67 66 #define CLK_UART0 257 68 67 #define CLK_UART1 258 69 68 #define CLK_UART2 259