@@ -713,6 +713,35 @@ static struct clk_regmap gxbb_mpll_prediv = {
713
713
};
714
714
715
715
static struct clk_regmap gxbb_mpll0_div = {
716
+ .data = & (struct meson_clk_mpll_data ){
717
+ .sdm = {
718
+ .reg_off = HHI_MPLL_CNTL7 ,
719
+ .shift = 0 ,
720
+ .width = 14 ,
721
+ },
722
+ .sdm_en = {
723
+ .reg_off = HHI_MPLL_CNTL ,
724
+ .shift = 25 ,
725
+ .width = 1 ,
726
+ },
727
+ .n2 = {
728
+ .reg_off = HHI_MPLL_CNTL7 ,
729
+ .shift = 16 ,
730
+ .width = 9 ,
731
+ },
732
+ .lock = & meson_clk_lock ,
733
+ },
734
+ .hw .init = & (struct clk_init_data ){
735
+ .name = "mpll0_div" ,
736
+ .ops = & meson_clk_mpll_ops ,
737
+ .parent_hws = (const struct clk_hw * []) {
738
+ & gxbb_mpll_prediv .hw
739
+ },
740
+ .num_parents = 1 ,
741
+ },
742
+ };
743
+
744
+ static struct clk_regmap gxl_mpll0_div = {
716
745
.data = & (struct meson_clk_mpll_data ){
717
746
.sdm = {
718
747
.reg_off = HHI_MPLL_CNTL7 ,
@@ -749,7 +778,16 @@ static struct clk_regmap gxbb_mpll0 = {
749
778
.hw .init = & (struct clk_init_data ){
750
779
.name = "mpll0" ,
751
780
.ops = & clk_regmap_gate_ops ,
752
- .parent_hws = (const struct clk_hw * []) { & gxbb_mpll0_div .hw },
781
+ .parent_data = & (const struct clk_parent_data ) {
782
+ /*
783
+ * Note:
784
+ * GXL and GXBB have different SDM_EN registers. We
785
+ * fallback to the global naming string mechanism so
786
+ * mpll0_div picks up the appropriate one.
787
+ */
788
+ .name = "mpll0_div" ,
789
+ .index = -1 ,
790
+ },
753
791
.num_parents = 1 ,
754
792
.flags = CLK_SET_RATE_PARENT ,
755
793
},
@@ -3044,7 +3082,7 @@ static struct clk_hw_onecell_data gxl_hw_onecell_data = {
3044
3082
[CLKID_VAPB_1 ] = & gxbb_vapb_1 .hw ,
3045
3083
[CLKID_VAPB_SEL ] = & gxbb_vapb_sel .hw ,
3046
3084
[CLKID_VAPB ] = & gxbb_vapb .hw ,
3047
- [CLKID_MPLL0_DIV ] = & gxbb_mpll0_div .hw ,
3085
+ [CLKID_MPLL0_DIV ] = & gxl_mpll0_div .hw ,
3048
3086
[CLKID_MPLL1_DIV ] = & gxbb_mpll1_div .hw ,
3049
3087
[CLKID_MPLL2_DIV ] = & gxbb_mpll2_div .hw ,
3050
3088
[CLKID_MPLL_PREDIV ] = & gxbb_mpll_prediv .hw ,
@@ -3439,7 +3477,7 @@ static struct clk_regmap *const gxl_clk_regmaps[] = {
3439
3477
& gxbb_mpll0 ,
3440
3478
& gxbb_mpll1 ,
3441
3479
& gxbb_mpll2 ,
3442
- & gxbb_mpll0_div ,
3480
+ & gxl_mpll0_div ,
3443
3481
& gxbb_mpll1_div ,
3444
3482
& gxbb_mpll2_div ,
3445
3483
& gxbb_cts_amclk_div ,
0 commit comments