Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clk: qcom: gdsc: Add GDSCs in msm8974 GCC

There's just one GDSC as part of the msm8974 GCC block.

Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>

+19
+1
drivers/clk/qcom/Kconfig
··· 88 88 89 89 config MSM_GCC_8974 90 90 tristate "MSM8974 Global Clock Controller" 91 + select QCOM_GDSC 91 92 depends on COMMON_CLK_QCOM 92 93 help 93 94 Support for the global clock controller on msm8974 devices.
+15
drivers/clk/qcom/gcc-msm8974.c
··· 31 31 #include "clk-rcg.h" 32 32 #include "clk-branch.h" 33 33 #include "reset.h" 34 + #include "gdsc.h" 34 35 35 36 enum { 36 37 P_XO, ··· 2433 2432 }, 2434 2433 }; 2435 2434 2435 + static struct gdsc usb_hs_hsic_gdsc = { 2436 + .gdscr = 0x404, 2437 + .pd = { 2438 + .name = "usb_hs_hsic", 2439 + }, 2440 + .pwrsts = PWRSTS_OFF_ON, 2441 + }; 2442 + 2436 2443 static struct clk_regmap *gcc_msm8974_clocks[] = { 2437 2444 [GPLL0] = &gpll0.clkr, 2438 2445 [GPLL0_VOTE] = &gpll0_vote, ··· 2670 2661 [GCC_VENUS_RESTART] = { 0x1740 }, 2671 2662 }; 2672 2663 2664 + static struct gdsc *gcc_msm8974_gdscs[] = { 2665 + [USB_HS_HSIC_GDSC] = &usb_hs_hsic_gdsc, 2666 + }; 2667 + 2673 2668 static const struct regmap_config gcc_msm8974_regmap_config = { 2674 2669 .reg_bits = 32, 2675 2670 .reg_stride = 4, ··· 2688 2675 .num_clks = ARRAY_SIZE(gcc_msm8974_clocks), 2689 2676 .resets = gcc_msm8974_resets, 2690 2677 .num_resets = ARRAY_SIZE(gcc_msm8974_resets), 2678 + .gdscs = gcc_msm8974_gdscs, 2679 + .num_gdscs = ARRAY_SIZE(gcc_msm8974_gdscs), 2691 2680 }; 2692 2681 2693 2682 static const struct of_device_id gcc_msm8974_match_table[] = {
+3
include/dt-bindings/clock/qcom,gcc-msm8974.h
··· 321 321 #define GCC_SDCC1_CDCCAL_SLEEP_CLK 304 322 322 #define GCC_SDCC1_CDCCAL_FF_CLK 305 323 323 324 + /* gdscs */ 325 + #define USB_HS_HSIC_GDSC 0 326 + 324 327 #endif