2222enum {
2323 DT_IFACE ,
2424 DT_BI_TCXO ,
25+ DT_BI_TCXO_AO ,
26+ DT_SLEEP_CLK ,
2527};
2628
2729enum {
2830 P_BI_TCXO ,
31+ P_BI_TCXO_AO ,
2932 P_CAM_CC_PLL0_OUT_EVEN ,
3033 P_CAM_CC_PLL0_OUT_MAIN ,
3134 P_CAM_CC_PLL0_OUT_ODD ,
4346 P_CAM_CC_PLL10_OUT_EVEN ,
4447 P_CAM_CC_PLL11_OUT_EVEN ,
4548 P_CAM_CC_PLL12_OUT_EVEN ,
49+ P_SLEEP_CLK ,
4650};
4751
4852static const struct pll_vco lucid_ole_vco [] = {
@@ -881,6 +885,22 @@ static const struct clk_parent_data cam_cc_parent_data_11[] = {
881885 { .hw = & cam_cc_pll7_out_even .clkr .hw },
882886};
883887
888+ static const struct parent_map cam_cc_parent_map_12 [] = {
889+ { P_SLEEP_CLK , 0 },
890+ };
891+
892+ static const struct clk_parent_data cam_cc_parent_data_12 [] = {
893+ { .index = DT_SLEEP_CLK },
894+ };
895+
896+ static const struct parent_map cam_cc_parent_map_13_ao [] = {
897+ { P_BI_TCXO_AO , 0 },
898+ };
899+
900+ static const struct clk_parent_data cam_cc_parent_data_13_ao [] = {
901+ { .index = DT_BI_TCXO_AO },
902+ };
903+
884904static const struct freq_tbl ftbl_cam_cc_bps_clk_src [] = {
885905 F (19200000 , P_BI_TCXO , 1 , 0 , 0 ),
886906 F (200000000 , P_CAM_CC_PLL8_OUT_EVEN , 1 , 0 , 0 ),
@@ -1565,6 +1585,29 @@ static struct clk_rcg2 cam_cc_mclk7_clk_src = {
15651585 },
15661586};
15671587
1588+ static const struct freq_tbl ftbl_cam_cc_qdss_debug_clk_src [] = {
1589+ F (19200000 , P_BI_TCXO , 1 , 0 , 0 ),
1590+ F (75000000 , P_CAM_CC_PLL0_OUT_EVEN , 8 , 0 , 0 ),
1591+ F (150000000 , P_CAM_CC_PLL0_OUT_EVEN , 4 , 0 , 0 ),
1592+ F (300000000 , P_CAM_CC_PLL0_OUT_MAIN , 4 , 0 , 0 ),
1593+ { }
1594+ };
1595+
1596+ static struct clk_rcg2 cam_cc_qdss_debug_clk_src = {
1597+ .cmd_rcgr = 0x13f24 ,
1598+ .mnd_width = 0 ,
1599+ .hid_width = 5 ,
1600+ .parent_map = cam_cc_parent_map_0 ,
1601+ .freq_tbl = ftbl_cam_cc_qdss_debug_clk_src ,
1602+ .clkr .hw .init = & (const struct clk_init_data ) {
1603+ .name = "cam_cc_qdss_debug_clk_src" ,
1604+ .parent_data = cam_cc_parent_data_0 ,
1605+ .num_parents = ARRAY_SIZE (cam_cc_parent_data_0 ),
1606+ .flags = CLK_SET_RATE_PARENT ,
1607+ .ops = & clk_rcg2_shared_ops ,
1608+ },
1609+ };
1610+
15681611static const struct freq_tbl ftbl_cam_cc_sfe_0_clk_src [] = {
15691612 F (466000000 , P_CAM_CC_PLL6_OUT_EVEN , 1 , 0 , 0 ),
15701613 F (594000000 , P_CAM_CC_PLL6_OUT_EVEN , 1 , 0 , 0 ),
@@ -1611,6 +1654,26 @@ static struct clk_rcg2 cam_cc_sfe_1_clk_src = {
16111654 },
16121655};
16131656
1657+ static const struct freq_tbl ftbl_cam_cc_sleep_clk_src [] = {
1658+ F (32000 , P_SLEEP_CLK , 1 , 0 , 0 ),
1659+ { }
1660+ };
1661+
1662+ static struct clk_rcg2 cam_cc_sleep_clk_src = {
1663+ .cmd_rcgr = 0x141a0 ,
1664+ .mnd_width = 0 ,
1665+ .hid_width = 5 ,
1666+ .parent_map = cam_cc_parent_map_12 ,
1667+ .freq_tbl = ftbl_cam_cc_sleep_clk_src ,
1668+ .clkr .hw .init = & (const struct clk_init_data ) {
1669+ .name = "cam_cc_sleep_clk_src" ,
1670+ .parent_data = cam_cc_parent_data_12 ,
1671+ .num_parents = ARRAY_SIZE (cam_cc_parent_data_12 ),
1672+ .flags = CLK_SET_RATE_PARENT ,
1673+ .ops = & clk_rcg2_shared_ops ,
1674+ },
1675+ };
1676+
16141677static const struct freq_tbl ftbl_cam_cc_slow_ahb_clk_src [] = {
16151678 F (19200000 , P_BI_TCXO , 1 , 0 , 0 ),
16161679 F (80000000 , P_CAM_CC_PLL0_OUT_EVEN , 7.5 , 0 , 0 ),
@@ -1632,6 +1695,26 @@ static struct clk_rcg2 cam_cc_slow_ahb_clk_src = {
16321695 },
16331696};
16341697
1698+ static const struct freq_tbl ftbl_cam_cc_xo_clk_src [] = {
1699+ F (19200000 , P_BI_TCXO_AO , 1 , 0 , 0 ),
1700+ { }
1701+ };
1702+
1703+ static struct clk_rcg2 cam_cc_xo_clk_src = {
1704+ .cmd_rcgr = 0x14070 ,
1705+ .mnd_width = 0 ,
1706+ .hid_width = 5 ,
1707+ .parent_map = cam_cc_parent_map_13_ao ,
1708+ .freq_tbl = ftbl_cam_cc_xo_clk_src ,
1709+ .clkr .hw .init = & (const struct clk_init_data ) {
1710+ .name = "cam_cc_xo_clk_src" ,
1711+ .parent_data = cam_cc_parent_data_13_ao ,
1712+ .num_parents = ARRAY_SIZE (cam_cc_parent_data_13_ao ),
1713+ .flags = CLK_SET_RATE_PARENT ,
1714+ .ops = & clk_rcg2_shared_ops ,
1715+ },
1716+ };
1717+
16351718static struct clk_branch cam_cc_bps_ahb_clk = {
16361719 .halt_reg = 0x10274 ,
16371720 .halt_check = BRANCH_HALT ,
@@ -1704,6 +1787,42 @@ static struct clk_branch cam_cc_camnoc_axi_clk = {
17041787 },
17051788};
17061789
1790+ static struct clk_branch cam_cc_camnoc_dcd_xo_clk = {
1791+ .halt_reg = 0x13f18 ,
1792+ .halt_check = BRANCH_HALT ,
1793+ .clkr = {
1794+ .enable_reg = 0x13f18 ,
1795+ .enable_mask = BIT (0 ),
1796+ .hw .init = & (const struct clk_init_data ) {
1797+ .name = "cam_cc_camnoc_dcd_xo_clk" ,
1798+ .parent_hws = (const struct clk_hw * []) {
1799+ & cam_cc_xo_clk_src .clkr .hw ,
1800+ },
1801+ .num_parents = 1 ,
1802+ .flags = CLK_SET_RATE_PARENT ,
1803+ .ops = & clk_branch2_ops ,
1804+ },
1805+ },
1806+ };
1807+
1808+ static struct clk_branch cam_cc_camnoc_xo_clk = {
1809+ .halt_reg = 0x13f1c ,
1810+ .halt_check = BRANCH_HALT ,
1811+ .clkr = {
1812+ .enable_reg = 0x13f1c ,
1813+ .enable_mask = BIT (0 ),
1814+ .hw .init = & (const struct clk_init_data ) {
1815+ .name = "cam_cc_camnoc_xo_clk" ,
1816+ .parent_hws = (const struct clk_hw * []) {
1817+ & cam_cc_xo_clk_src .clkr .hw ,
1818+ },
1819+ .num_parents = 1 ,
1820+ .flags = CLK_SET_RATE_PARENT ,
1821+ .ops = & clk_branch2_ops ,
1822+ },
1823+ },
1824+ };
1825+
17071826static struct clk_branch cam_cc_cci_0_clk = {
17081827 .halt_reg = 0x13a2c ,
17091828 .halt_check = BRANCH_HALT ,
@@ -2370,6 +2489,24 @@ static struct clk_branch cam_cc_drv_ahb_clk = {
23702489 },
23712490};
23722491
2492+ static struct clk_branch cam_cc_drv_xo_clk = {
2493+ .halt_reg = 0x142d4 ,
2494+ .halt_check = BRANCH_HALT ,
2495+ .clkr = {
2496+ .enable_reg = 0x142d4 ,
2497+ .enable_mask = BIT (0 ),
2498+ .hw .init = & (const struct clk_init_data ) {
2499+ .name = "cam_cc_drv_xo_clk" ,
2500+ .parent_hws = (const struct clk_hw * []) {
2501+ & cam_cc_xo_clk_src .clkr .hw ,
2502+ },
2503+ .num_parents = 1 ,
2504+ .flags = CLK_SET_RATE_PARENT ,
2505+ .ops = & clk_branch2_ops ,
2506+ },
2507+ },
2508+ };
2509+
23732510static struct clk_branch cam_cc_icp_ahb_clk = {
23742511 .halt_reg = 0x138fc ,
23752512 .halt_check = BRANCH_HALT ,
@@ -2910,6 +3047,42 @@ static struct clk_branch cam_cc_mclk7_clk = {
29103047 },
29113048};
29123049
3050+ static struct clk_branch cam_cc_qdss_debug_clk = {
3051+ .halt_reg = 0x14050 ,
3052+ .halt_check = BRANCH_HALT ,
3053+ .clkr = {
3054+ .enable_reg = 0x14050 ,
3055+ .enable_mask = BIT (0 ),
3056+ .hw .init = & (const struct clk_init_data ) {
3057+ .name = "cam_cc_qdss_debug_clk" ,
3058+ .parent_hws = (const struct clk_hw * []) {
3059+ & cam_cc_qdss_debug_clk_src .clkr .hw ,
3060+ },
3061+ .num_parents = 1 ,
3062+ .flags = CLK_SET_RATE_PARENT ,
3063+ .ops = & clk_branch2_ops ,
3064+ },
3065+ },
3066+ };
3067+
3068+ static struct clk_branch cam_cc_qdss_debug_xo_clk = {
3069+ .halt_reg = 0x14054 ,
3070+ .halt_check = BRANCH_HALT ,
3071+ .clkr = {
3072+ .enable_reg = 0x14054 ,
3073+ .enable_mask = BIT (0 ),
3074+ .hw .init = & (const struct clk_init_data ) {
3075+ .name = "cam_cc_qdss_debug_xo_clk" ,
3076+ .parent_hws = (const struct clk_hw * []) {
3077+ & cam_cc_xo_clk_src .clkr .hw ,
3078+ },
3079+ .num_parents = 1 ,
3080+ .flags = CLK_SET_RATE_PARENT ,
3081+ .ops = & clk_branch2_ops ,
3082+ },
3083+ },
3084+ };
3085+
29133086static struct clk_branch cam_cc_sbi_clk = {
29143087 .halt_reg = 0x10540 ,
29153088 .halt_check = BRANCH_HALT ,
@@ -3133,6 +3306,8 @@ static struct clk_regmap *cam_cc_sm8550_clocks[] = {
31333306 [CAM_CC_BPS_FAST_AHB_CLK ] = & cam_cc_bps_fast_ahb_clk .clkr ,
31343307 [CAM_CC_CAMNOC_AXI_CLK ] = & cam_cc_camnoc_axi_clk .clkr ,
31353308 [CAM_CC_CAMNOC_AXI_CLK_SRC ] = & cam_cc_camnoc_axi_clk_src .clkr ,
3309+ [CAM_CC_CAMNOC_DCD_XO_CLK ] = & cam_cc_camnoc_dcd_xo_clk .clkr ,
3310+ [CAM_CC_CAMNOC_XO_CLK ] = & cam_cc_camnoc_xo_clk .clkr ,
31363311 [CAM_CC_CCI_0_CLK ] = & cam_cc_cci_0_clk .clkr ,
31373312 [CAM_CC_CCI_0_CLK_SRC ] = & cam_cc_cci_0_clk_src .clkr ,
31383313 [CAM_CC_CCI_1_CLK ] = & cam_cc_cci_1_clk .clkr ,
@@ -3184,6 +3359,7 @@ static struct clk_regmap *cam_cc_sm8550_clocks[] = {
31843359 [CAM_CC_CSIPHY6_CLK ] = & cam_cc_csiphy6_clk .clkr ,
31853360 [CAM_CC_CSIPHY7_CLK ] = & cam_cc_csiphy7_clk .clkr ,
31863361 [CAM_CC_DRV_AHB_CLK ] = & cam_cc_drv_ahb_clk .clkr ,
3362+ [CAM_CC_DRV_XO_CLK ] = & cam_cc_drv_xo_clk .clkr ,
31873363 [CAM_CC_FAST_AHB_CLK_SRC ] = & cam_cc_fast_ahb_clk_src .clkr ,
31883364 [CAM_CC_ICP_AHB_CLK ] = & cam_cc_icp_ahb_clk .clkr ,
31893365 [CAM_CC_ICP_CLK ] = & cam_cc_icp_clk .clkr ,
@@ -3260,6 +3436,9 @@ static struct clk_regmap *cam_cc_sm8550_clocks[] = {
32603436 [CAM_CC_PLL11_OUT_EVEN ] = & cam_cc_pll11_out_even .clkr ,
32613437 [CAM_CC_PLL12 ] = & cam_cc_pll12 .clkr ,
32623438 [CAM_CC_PLL12_OUT_EVEN ] = & cam_cc_pll12_out_even .clkr ,
3439+ [CAM_CC_QDSS_DEBUG_CLK ] = & cam_cc_qdss_debug_clk .clkr ,
3440+ [CAM_CC_QDSS_DEBUG_CLK_SRC ] = & cam_cc_qdss_debug_clk_src .clkr ,
3441+ [CAM_CC_QDSS_DEBUG_XO_CLK ] = & cam_cc_qdss_debug_xo_clk .clkr ,
32633442 [CAM_CC_SBI_CLK ] = & cam_cc_sbi_clk .clkr ,
32643443 [CAM_CC_SBI_FAST_AHB_CLK ] = & cam_cc_sbi_fast_ahb_clk .clkr ,
32653444 [CAM_CC_SFE_0_CLK ] = & cam_cc_sfe_0_clk .clkr ,
@@ -3268,7 +3447,9 @@ static struct clk_regmap *cam_cc_sm8550_clocks[] = {
32683447 [CAM_CC_SFE_1_CLK ] = & cam_cc_sfe_1_clk .clkr ,
32693448 [CAM_CC_SFE_1_CLK_SRC ] = & cam_cc_sfe_1_clk_src .clkr ,
32703449 [CAM_CC_SFE_1_FAST_AHB_CLK ] = & cam_cc_sfe_1_fast_ahb_clk .clkr ,
3450+ [CAM_CC_SLEEP_CLK_SRC ] = & cam_cc_sleep_clk_src .clkr ,
32713451 [CAM_CC_SLOW_AHB_CLK_SRC ] = & cam_cc_slow_ahb_clk_src .clkr ,
3452+ [CAM_CC_XO_CLK_SRC ] = & cam_cc_xo_clk_src .clkr ,
32723453};
32733454
32743455static struct gdsc * cam_cc_sm8550_gdscs [] = {
0 commit comments