.hw.init = &(struct clk_init_data){
                        .name = "camclk0_src",
                        .parent_names = mmcc_pxo_pll8_pll2,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_pll8_pll2),
                        .ops = &clk_rcg_ops,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "camclk1_src",
                        .parent_names = mmcc_pxo_pll8_pll2,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_pll8_pll2),
                        .ops = &clk_rcg_ops,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "camclk2_src",
                        .parent_names = mmcc_pxo_pll8_pll2,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_pll8_pll2),
                        .ops = &clk_rcg_ops,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "csi0_src",
                        .parent_names = mmcc_pxo_pll8_pll2,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_pll8_pll2),
                        .ops = &clk_rcg_ops,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "csi1_src",
                        .parent_names = mmcc_pxo_pll8_pll2,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_pll8_pll2),
                        .ops = &clk_rcg_ops,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "csi2_src",
                        .parent_names = mmcc_pxo_pll8_pll2,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_pll8_pll2),
                        .ops = &clk_rcg_ops,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "csi_pix_clk",
                        .parent_names = pix_rdi_parents,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(pix_rdi_parents),
                        .ops = &clk_ops_pix_rdi,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "csi_pix1_clk",
                        .parent_names = pix_rdi_parents,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(pix_rdi_parents),
                        .ops = &clk_ops_pix_rdi,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "csi_rdi_clk",
                        .parent_names = pix_rdi_parents,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(pix_rdi_parents),
                        .ops = &clk_ops_pix_rdi,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "csi_rdi1_clk",
                        .parent_names = pix_rdi_parents,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(pix_rdi_parents),
                        .ops = &clk_ops_pix_rdi,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "csi_rdi2_clk",
                        .parent_names = pix_rdi_parents,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(pix_rdi_parents),
                        .ops = &clk_ops_pix_rdi,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "csiphytimer_src",
                        .parent_names = mmcc_pxo_pll8_pll2,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_pll8_pll2),
                        .ops = &clk_rcg_ops,
                },
        },
                .enable_mask = BIT(0),
                .hw.init = &(struct clk_init_data){
                        .parent_names = csixphy_timer_src,
-                       .num_parents = 1,
+                       .num_parents = ARRAY_SIZE(csixphy_timer_src),
                        .name = "csiphy0_timer_clk",
                        .ops = &clk_branch_ops,
                        .flags = CLK_SET_RATE_PARENT,
                .enable_mask = BIT(9),
                .hw.init = &(struct clk_init_data){
                        .parent_names = csixphy_timer_src,
-                       .num_parents = 1,
+                       .num_parents = ARRAY_SIZE(csixphy_timer_src),
                        .name = "csiphy1_timer_clk",
                        .ops = &clk_branch_ops,
                        .flags = CLK_SET_RATE_PARENT,
                .enable_mask = BIT(11),
                .hw.init = &(struct clk_init_data){
                        .parent_names = csixphy_timer_src,
-                       .num_parents = 1,
+                       .num_parents = ARRAY_SIZE(csixphy_timer_src),
                        .name = "csiphy2_timer_clk",
                        .ops = &clk_branch_ops,
                        .flags = CLK_SET_RATE_PARENT,
                .hw.init = &(struct clk_init_data){
                        .name = "gfx2d0_src",
                        .parent_names = mmcc_pxo_pll8_pll2,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_pll8_pll2),
                        .ops = &clk_dyn_rcg_ops,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "gfx2d1_src",
                        .parent_names = mmcc_pxo_pll8_pll2,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_pll8_pll2),
                        .ops = &clk_dyn_rcg_ops,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "gfx3d_src",
                        .parent_names = mmcc_pxo_pll8_pll2_pll3,
-                       .num_parents = 4,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_pll8_pll2_pll3),
                        .ops = &clk_dyn_rcg_ops,
                },
        },
 static const struct clk_init_data gfx3d_8064_init = {
        .name = "gfx3d_src",
        .parent_names = mmcc_pxo_pll8_pll2_pll15,
-       .num_parents = 4,
+       .num_parents = ARRAY_SIZE(mmcc_pxo_pll8_pll2_pll15),
        .ops = &clk_dyn_rcg_ops,
 };
 
                .hw.init = &(struct clk_init_data){
                        .name = "vcap_src",
                        .parent_names = mmcc_pxo_pll8_pll2,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_pll8_pll2),
                        .ops = &clk_dyn_rcg_ops,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "ijpeg_src",
                        .parent_names = mmcc_pxo_pll8_pll2,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_pll8_pll2),
                        .ops = &clk_rcg_ops,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "jpegd_src",
                        .parent_names = mmcc_pxo_pll8_pll2,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_pll8_pll2),
                        .ops = &clk_rcg_ops,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "mdp_src",
                        .parent_names = mmcc_pxo_pll8_pll2,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_pll8_pll2),
                        .ops = &clk_dyn_rcg_ops,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "rot_src",
                        .parent_names = mmcc_pxo_pll8_pll2,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_pll8_pll2),
                        .ops = &clk_dyn_rcg_ops,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "tv_src",
                        .parent_names = mmcc_pxo_hdmi,
-                       .num_parents = 2,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_hdmi),
                        .ops = &clk_rcg_bypass_ops,
                        .flags = CLK_SET_RATE_PARENT,
                },
                .enable_mask = BIT(8),
                .hw.init = &(struct clk_init_data){
                        .parent_names = tv_src_name,
-                       .num_parents = 1,
+                       .num_parents = ARRAY_SIZE(tv_src_name),
                        .name = "tv_enc_clk",
                        .ops = &clk_branch_ops,
                        .flags = CLK_SET_RATE_PARENT,
                .enable_mask = BIT(10),
                .hw.init = &(struct clk_init_data){
                        .parent_names = tv_src_name,
-                       .num_parents = 1,
+                       .num_parents = ARRAY_SIZE(tv_src_name),
                        .name = "tv_dac_clk",
                        .ops = &clk_branch_ops,
                        .flags = CLK_SET_RATE_PARENT,
                .enable_mask = BIT(0),
                .hw.init = &(struct clk_init_data){
                        .parent_names = tv_src_name,
-                       .num_parents = 1,
+                       .num_parents = ARRAY_SIZE(tv_src_name),
                        .name = "mdp_tv_clk",
                        .ops = &clk_branch_ops,
                        .flags = CLK_SET_RATE_PARENT,
                .enable_mask = BIT(12),
                .hw.init = &(struct clk_init_data){
                        .parent_names = tv_src_name,
-                       .num_parents = 1,
+                       .num_parents = ARRAY_SIZE(tv_src_name),
                        .name = "hdmi_tv_clk",
                        .ops = &clk_branch_ops,
                        .flags = CLK_SET_RATE_PARENT,
                .enable_mask = BIT(14),
                .hw.init = &(struct clk_init_data){
                        .parent_names = tv_src_name,
-                       .num_parents = 1,
+                       .num_parents = ARRAY_SIZE(tv_src_name),
                        .name = "rgb_tv_clk",
                        .ops = &clk_branch_ops,
                        .flags = CLK_SET_RATE_PARENT,
                .enable_mask = BIT(16),
                .hw.init = &(struct clk_init_data){
                        .parent_names = tv_src_name,
-                       .num_parents = 1,
+                       .num_parents = ARRAY_SIZE(tv_src_name),
                        .name = "npl_tv_clk",
                        .ops = &clk_branch_ops,
                        .flags = CLK_SET_RATE_PARENT,
                .hw.init = &(struct clk_init_data){
                        .name = "vcodec_src",
                        .parent_names = mmcc_pxo_pll8_pll2,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_pll8_pll2),
                        .ops = &clk_dyn_rcg_ops,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "vpe_src",
                        .parent_names = mmcc_pxo_pll8_pll2,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_pll8_pll2),
                        .ops = &clk_rcg_ops,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "vfe_src",
                        .parent_names = mmcc_pxo_pll8_pll2,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_pll8_pll2),
                        .ops = &clk_rcg_ops,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "dsi1_src",
                        .parent_names = mmcc_pxo_dsi2_dsi1,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_dsi2_dsi1),
                        .ops = &clk_rcg_bypass2_ops,
                        .flags = CLK_SET_RATE_PARENT,
                },
                .hw.init = &(struct clk_init_data){
                        .name = "dsi2_src",
                        .parent_names = mmcc_pxo_dsi2_dsi1,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_dsi2_dsi1),
                        .ops = &clk_rcg_bypass2_ops,
                        .flags = CLK_SET_RATE_PARENT,
                },
                .hw.init = &(struct clk_init_data){
                        .name = "dsi1_byte_src",
                        .parent_names = mmcc_pxo_dsi1_dsi2_byte,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_dsi1_dsi2_byte),
                        .ops = &clk_rcg_bypass2_ops,
                        .flags = CLK_SET_RATE_PARENT,
                },
                .hw.init = &(struct clk_init_data){
                        .name = "dsi2_byte_src",
                        .parent_names = mmcc_pxo_dsi1_dsi2_byte,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_dsi1_dsi2_byte),
                        .ops = &clk_rcg_bypass2_ops,
                        .flags = CLK_SET_RATE_PARENT,
                },
                .hw.init = &(struct clk_init_data){
                        .name = "dsi1_esc_src",
                        .parent_names = mmcc_pxo_dsi1_dsi2_byte,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_dsi1_dsi2_byte),
                        .ops = &clk_rcg_esc_ops,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "dsi2_esc_src",
                        .parent_names = mmcc_pxo_dsi1_dsi2_byte,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_dsi1_dsi2_byte),
                        .ops = &clk_rcg_esc_ops,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "dsi1_pixel_src",
                        .parent_names = mmcc_pxo_dsi2_dsi1,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_dsi2_dsi1),
                        .ops = &clk_rcg_pixel_ops,
                },
        },
                .hw.init = &(struct clk_init_data){
                        .name = "dsi2_pixel_src",
                        .parent_names = mmcc_pxo_dsi2_dsi1,
-                       .num_parents = 3,
+                       .num_parents = ARRAY_SIZE(mmcc_pxo_dsi2_dsi1),
                        .ops = &clk_rcg_pixel_ops,
                },
        },