OSDN Git Service

clk: qcom: Enumerate clocks and reset needed to boot the 8998 modem
authorJeffrey Hugo <jeffrey.l.hugo@gmail.com>
Thu, 7 Nov 2019 19:21:36 +0000 (11:21 -0800)
committerStephen Boyd <sboyd@kernel.org>
Thu, 7 Nov 2019 21:41:40 +0000 (13:41 -0800)
We need to control five additional clocks and a reset inorder to boot the
modem on msm8998.  If we can boot the modem, we have a place to run the
wlan firmware and get wifi up and running.

Signed-off-by: Jeffrey Hugo <jeffrey.l.hugo@gmail.com>
Link: https://lkml.kernel.org/r/20191107192136.5880-1-jeffrey.l.hugo@gmail.com
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/qcom/gcc-msm8998.c
include/dt-bindings/clock/qcom,gcc-msm8998.h

index 091acd5..cf31b5d 100644 (file)
@@ -1266,6 +1266,72 @@ static struct clk_branch gcc_bimc_mss_q6_axi_clk = {
        },
 };
 
+static struct clk_branch gcc_mss_cfg_ahb_clk = {
+       .halt_reg = 0x8a000,
+       .halt_check = BRANCH_HALT,
+       .clkr = {
+               .enable_reg = 0x8a000,
+               .enable_mask = BIT(0),
+               .hw.init = &(struct clk_init_data){
+                       .name = "gcc_mss_cfg_ahb_clk",
+                       .ops = &clk_branch2_ops,
+               },
+       },
+};
+
+static struct clk_branch gcc_mss_snoc_axi_clk = {
+       .halt_reg = 0x8a03c,
+       .halt_check = BRANCH_HALT,
+       .clkr = {
+               .enable_reg = 0x8a03c,
+               .enable_mask = BIT(0),
+               .hw.init = &(struct clk_init_data){
+                       .name = "gcc_mss_snoc_axi_clk",
+                       .ops = &clk_branch2_ops,
+               },
+       },
+};
+
+static struct clk_branch gcc_mss_mnoc_bimc_axi_clk = {
+       .halt_reg = 0x8a004,
+       .halt_check = BRANCH_HALT,
+       .clkr = {
+               .enable_reg = 0x8a004,
+               .enable_mask = BIT(0),
+               .hw.init = &(struct clk_init_data){
+                       .name = "gcc_mss_mnoc_bimc_axi_clk",
+                       .ops = &clk_branch2_ops,
+               },
+       },
+};
+
+static struct clk_branch gcc_boot_rom_ahb_clk = {
+       .halt_reg = 0x38004,
+       .halt_check = BRANCH_HALT_VOTED,
+       .hwcg_reg = 0x38004,
+       .hwcg_bit = 1,
+       .clkr = {
+               .enable_reg = 0x52004,
+               .enable_mask = BIT(10),
+               .hw.init = &(struct clk_init_data){
+                       .name = "gcc_boot_rom_ahb_clk",
+                       .ops = &clk_branch2_ops,
+               },
+       },
+};
+
+static struct clk_branch gcc_mss_gpll0_div_clk_src = {
+       .halt_check = BRANCH_HALT_DELAY,
+       .clkr = {
+               .enable_reg = 0x5200c,
+               .enable_mask = BIT(2),
+               .hw.init = &(struct clk_init_data){
+                       .name = "gcc_mss_gpll0_div_clk_src",
+                       .ops = &clk_branch2_ops,
+               },
+       },
+};
+
 static struct clk_branch gcc_blsp1_ahb_clk = {
        .halt_reg = 0x17004,
        .halt_check = BRANCH_HALT_VOTED,
@@ -2832,6 +2898,11 @@ static struct clk_regmap *gcc_msm8998_clocks[] = {
        [GCC_USB3_CLKREF_CLK] = &gcc_usb3_clkref_clk.clkr,
        [GCC_PCIE_CLKREF_CLK] = &gcc_pcie_clkref_clk.clkr,
        [GCC_RX1_USB2_CLKREF_CLK] = &gcc_rx1_usb2_clkref_clk.clkr,
+       [GCC_MSS_CFG_AHB_CLK] = &gcc_mss_cfg_ahb_clk.clkr,
+       [GCC_BOOT_ROM_AHB_CLK] = &gcc_boot_rom_ahb_clk.clkr,
+       [GCC_MSS_GPLL0_DIV_CLK_SRC] = &gcc_mss_gpll0_div_clk_src.clkr,
+       [GCC_MSS_SNOC_AXI_CLK] = &gcc_mss_snoc_axi_clk.clkr,
+       [GCC_MSS_MNOC_BIMC_AXI_CLK] = &gcc_mss_mnoc_bimc_axi_clk.clkr,
 };
 
 static struct gdsc *gcc_msm8998_gdscs[] = {
@@ -2928,6 +2999,7 @@ static const struct qcom_reset_map gcc_msm8998_resets[] = {
        [GCC_GPU_BCR] = { 0x71000 },
        [GCC_SPSS_BCR] = { 0x72000 },
        [GCC_OBT_ODT_BCR] = { 0x73000 },
+       [GCC_MSS_RESTART] = { 0x79000 },
        [GCC_VS_BCR] = { 0x7a000 },
        [GCC_MSS_VS_RESET] = { 0x7a100 },
        [GCC_GPU_VS_RESET] = { 0x7a104 },
index ab37626..de1d8a1 100644 (file)
 #define GCC_UFS_CLKREF_CLK                                     168
 #define GCC_PCIE_CLKREF_CLK                                    169
 #define GCC_RX1_USB2_CLKREF_CLK                                        170
+#define GCC_MSS_CFG_AHB_CLK                                    171
+#define GCC_BOOT_ROM_AHB_CLK                                   172
+#define GCC_MSS_GPLL0_DIV_CLK_SRC                              173
+#define GCC_MSS_SNOC_AXI_CLK                                   174
+#define GCC_MSS_MNOC_BIMC_AXI_CLK                              175
 
 #define PCIE_0_GDSC                                            0
 #define UFS_GDSC                                               1
 #define GCC_MSMPU_BCR                                          105
 #define GCC_QUSB2PHY_PRIM_BCR                                  106
 #define GCC_QUSB2PHY_SEC_BCR                                   107
+#define GCC_MSS_RESTART                                                108
 
 #endif