Merge branch 'clk-fixes' into clk-next

* clk-fixes:
clk: clk-loongson2: Fix the number count of clk provider
clk: mmp2: call pm_genpd_init() only after genpd.name is set
clk: sunxi-ng: a100: enable MMC clock reparenting
clk: clk-imx8mp-audiomix: fix function signature
clk: thead: Fix TH1520 emmc and shdci clock rate

+22 -7
+4 -1
drivers/clk/clk-loongson2.c
··· 294 return -EINVAL; 295 296 for (p = data; p->name; p++) 297 - clks_num++; 298 299 clp = devm_kzalloc(dev, struct_size(clp, clk_data.hws, clks_num), 300 GFP_KERNEL); ··· 308 spin_lock_init(&clp->clk_lock); 309 clp->clk_data.num = clks_num; 310 clp->dev = dev; 311 312 for (i = 0; i < clks_num; i++) { 313 p = &data[i];
··· 294 return -EINVAL; 295 296 for (p = data; p->name; p++) 297 + clks_num = max(clks_num, p->id + 1); 298 299 clp = devm_kzalloc(dev, struct_size(clp, clk_data.hws, clks_num), 300 GFP_KERNEL); ··· 308 spin_lock_init(&clp->clk_lock); 309 clp->clk_data.num = clks_num; 310 clp->dev = dev; 311 + 312 + /* Avoid returning NULL for unused id */ 313 + memset_p((void **)clp->clk_data.hws, ERR_PTR(-ENOENT), clks_num); 314 315 for (i = 0; i < clks_num; i++) { 316 p = &data[i];
+2 -1
drivers/clk/imx/clk-imx8mp-audiomix.c
··· 278 279 #else /* !CONFIG_RESET_CONTROLLER */ 280 281 - static int clk_imx8mp_audiomix_reset_controller_register(struct clk_imx8mp_audiomix_priv *priv) 282 { 283 return 0; 284 }
··· 278 279 #else /* !CONFIG_RESET_CONTROLLER */ 280 281 + static int clk_imx8mp_audiomix_reset_controller_register(struct device *dev, 282 + struct clk_imx8mp_audiomix_priv *priv) 283 { 284 return 0; 285 }
+1 -1
drivers/clk/mmp/pwr-island.c
··· 106 pm_domain->flags = flags; 107 pm_domain->lock = lock; 108 109 - pm_genpd_init(&pm_domain->genpd, NULL, true); 110 pm_domain->genpd.name = name; 111 pm_domain->genpd.power_on = mmp_pm_domain_power_on; 112 pm_domain->genpd.power_off = mmp_pm_domain_power_off; 113 114 return &pm_domain->genpd; 115 }
··· 106 pm_domain->flags = flags; 107 pm_domain->lock = lock; 108 109 pm_domain->genpd.name = name; 110 pm_domain->genpd.power_on = mmp_pm_domain_power_on; 111 pm_domain->genpd.power_off = mmp_pm_domain_power_off; 112 + pm_genpd_init(&pm_domain->genpd, NULL, true); 113 114 return &pm_domain->genpd; 115 }
+3 -3
drivers/clk/sunxi-ng/ccu-sun50i-a100.c
··· 436 24, 2, /* mux */ 437 BIT(31), /* gate */ 438 2, /* post-div */ 439 - CLK_SET_RATE_NO_REPARENT); 440 441 static SUNXI_CCU_MP_WITH_MUX_GATE_POSTDIV(mmc1_clk, "mmc1", mmc_parents, 0x834, 442 0, 4, /* M */ ··· 444 24, 2, /* mux */ 445 BIT(31), /* gate */ 446 2, /* post-div */ 447 - CLK_SET_RATE_NO_REPARENT); 448 449 static SUNXI_CCU_MP_WITH_MUX_GATE_POSTDIV(mmc2_clk, "mmc2", mmc_parents, 0x838, 450 0, 4, /* M */ ··· 452 24, 2, /* mux */ 453 BIT(31), /* gate */ 454 2, /* post-div */ 455 - CLK_SET_RATE_NO_REPARENT); 456 457 static SUNXI_CCU_GATE(bus_mmc0_clk, "bus-mmc0", "ahb3", 0x84c, BIT(0), 0); 458 static SUNXI_CCU_GATE(bus_mmc1_clk, "bus-mmc1", "ahb3", 0x84c, BIT(1), 0);
··· 436 24, 2, /* mux */ 437 BIT(31), /* gate */ 438 2, /* post-div */ 439 + 0); 440 441 static SUNXI_CCU_MP_WITH_MUX_GATE_POSTDIV(mmc1_clk, "mmc1", mmc_parents, 0x834, 442 0, 4, /* M */ ··· 444 24, 2, /* mux */ 445 BIT(31), /* gate */ 446 2, /* post-div */ 447 + 0); 448 449 static SUNXI_CCU_MP_WITH_MUX_GATE_POSTDIV(mmc2_clk, "mmc2", mmc_parents, 0x838, 450 0, 4, /* M */ ··· 452 24, 2, /* mux */ 453 BIT(31), /* gate */ 454 2, /* post-div */ 455 + 0); 456 457 static SUNXI_CCU_GATE(bus_mmc0_clk, "bus-mmc0", "ahb3", 0x84c, BIT(0), 0); 458 static SUNXI_CCU_GATE(bus_mmc1_clk, "bus-mmc1", "ahb3", 0x84c, BIT(1), 0);
+12 -1
drivers/clk/thead/clk-th1520-ap.c
··· 779 }, 780 }; 781 782 static CCU_GATE(CLK_BROM, brom_clk, "brom", ahb2_cpusys_hclk_pd, 0x100, BIT(4), 0); 783 static CCU_GATE(CLK_BMU, bmu_clk, "bmu", axi4_cpusys2_aclk_pd, 0x100, BIT(5), 0); 784 static CCU_GATE(CLK_AON2CPU_A2X, aon2cpu_a2x_clk, "aon2cpu-a2x", axi4_cpusys2_aclk_pd, ··· 805 0x150, BIT(12), 0); 806 static CCU_GATE(CLK_NPU_AXI, npu_axi_clk, "npu-axi", axi_aclk_pd, 0x1c8, BIT(5), 0); 807 static CCU_GATE(CLK_CPU2VP, cpu2vp_clk, "cpu2vp", axi_aclk_pd, 0x1e0, BIT(13), 0); 808 - static CCU_GATE(CLK_EMMC_SDIO, emmc_sdio_clk, "emmc-sdio", video_pll_clk_pd, 0x204, BIT(30), 0); 809 static CCU_GATE(CLK_GMAC1, gmac1_clk, "gmac1", gmac_pll_clk_pd, 0x204, BIT(26), 0); 810 static CCU_GATE(CLK_PADCTRL1, padctrl1_clk, "padctrl1", perisys_apb_pclk_pd, 0x204, BIT(24), 0); 811 static CCU_GATE(CLK_DSMART, dsmart_clk, "dsmart", perisys_apb_pclk_pd, 0x204, BIT(23), 0); ··· 1066 if (ret) 1067 return ret; 1068 priv->hws[CLK_PLL_GMAC_100M] = &gmac_pll_clk_100m.hw; 1069 1070 ret = devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, priv); 1071 if (ret)
··· 779 }, 780 }; 781 782 + static CLK_FIXED_FACTOR_HW(emmc_sdio_ref_clk, "emmc-sdio-ref", 783 + &video_pll_clk.common.hw, 4, 1, 0); 784 + 785 + static const struct clk_parent_data emmc_sdio_ref_clk_pd[] = { 786 + { .hw = &emmc_sdio_ref_clk.hw }, 787 + }; 788 + 789 static CCU_GATE(CLK_BROM, brom_clk, "brom", ahb2_cpusys_hclk_pd, 0x100, BIT(4), 0); 790 static CCU_GATE(CLK_BMU, bmu_clk, "bmu", axi4_cpusys2_aclk_pd, 0x100, BIT(5), 0); 791 static CCU_GATE(CLK_AON2CPU_A2X, aon2cpu_a2x_clk, "aon2cpu-a2x", axi4_cpusys2_aclk_pd, ··· 798 0x150, BIT(12), 0); 799 static CCU_GATE(CLK_NPU_AXI, npu_axi_clk, "npu-axi", axi_aclk_pd, 0x1c8, BIT(5), 0); 800 static CCU_GATE(CLK_CPU2VP, cpu2vp_clk, "cpu2vp", axi_aclk_pd, 0x1e0, BIT(13), 0); 801 + static CCU_GATE(CLK_EMMC_SDIO, emmc_sdio_clk, "emmc-sdio", emmc_sdio_ref_clk_pd, 0x204, BIT(30), 0); 802 static CCU_GATE(CLK_GMAC1, gmac1_clk, "gmac1", gmac_pll_clk_pd, 0x204, BIT(26), 0); 803 static CCU_GATE(CLK_PADCTRL1, padctrl1_clk, "padctrl1", perisys_apb_pclk_pd, 0x204, BIT(24), 0); 804 static CCU_GATE(CLK_DSMART, dsmart_clk, "dsmart", perisys_apb_pclk_pd, 0x204, BIT(23), 0); ··· 1059 if (ret) 1060 return ret; 1061 priv->hws[CLK_PLL_GMAC_100M] = &gmac_pll_clk_100m.hw; 1062 + 1063 + ret = devm_clk_hw_register(dev, &emmc_sdio_ref_clk.hw); 1064 + if (ret) 1065 + return ret; 1066 1067 ret = devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, priv); 1068 if (ret)