@@ -436,6 +436,90 @@ static const struct eqc_pll eqc_eyeq5_plls[] = {
436436 { .index = EQ5C_PLL_DDR1 , .name = "pll-ddr1" , .reg64 = 0x074 },
437437};
438438
439+ enum {
440+ /*
441+ * EQ5C_PLL_CPU children.
442+ * EQ5C_PER_OCC_PCI is the last clock exposed in dt-bindings.
443+ */
444+ EQ5C_CPU_OCC = EQ5C_PER_OCC_PCI + 1 ,
445+ EQ5C_CPU_SI_CSS0 ,
446+ EQ5C_CPU_CPC ,
447+ EQ5C_CPU_CM ,
448+ EQ5C_CPU_MEM ,
449+ EQ5C_CPU_OCC_ISRAM ,
450+ EQ5C_CPU_ISRAM ,
451+ EQ5C_CPU_OCC_DBU ,
452+ EQ5C_CPU_SI_DBU_TP ,
453+
454+ /*
455+ * EQ5C_PLL_VDI children.
456+ */
457+ EQ5C_VDI_OCC_VDI ,
458+ EQ5C_VDI_VDI ,
459+ EQ5C_VDI_OCC_CAN_SER ,
460+ EQ5C_VDI_CAN_SER ,
461+ EQ5C_VDI_I2C_SER ,
462+
463+ /*
464+ * EQ5C_PLL_PER children.
465+ */
466+ EQ5C_PER_PERIPH ,
467+ EQ5C_PER_CAN ,
468+ EQ5C_PER_TIMER ,
469+ EQ5C_PER_CCF ,
470+ EQ5C_PER_OCC_MJPEG ,
471+ EQ5C_PER_HSM ,
472+ EQ5C_PER_MJPEG ,
473+ EQ5C_PER_FCMU_A ,
474+ };
475+
476+ static const struct eqc_fixed_factor eqc_eyeq5_early_fixed_factors [] = {
477+ /* EQ5C_PLL_CPU children */
478+ { EQ5C_CPU_OCC , "occ-cpu" , 1 , 1 , EQ5C_PLL_CPU },
479+ { EQ5C_CPU_SI_CSS0 , "si-css0" , 1 , 1 , EQ5C_CPU_OCC },
480+ { EQ5C_CPU_CORE0 , "core0" , 1 , 1 , EQ5C_CPU_SI_CSS0 },
481+ { EQ5C_CPU_CORE1 , "core1" , 1 , 1 , EQ5C_CPU_SI_CSS0 },
482+ { EQ5C_CPU_CORE2 , "core2" , 1 , 1 , EQ5C_CPU_SI_CSS0 },
483+ { EQ5C_CPU_CORE3 , "core3" , 1 , 1 , EQ5C_CPU_SI_CSS0 },
484+
485+ /* EQ5C_PLL_PER children */
486+ { EQ5C_PER_OCC , "occ-periph" , 1 , 16 , EQ5C_PLL_PER },
487+ { EQ5C_PER_UART , "uart" , 1 , 1 , EQ5C_PER_OCC },
488+ };
489+
490+ static const struct eqc_fixed_factor eqc_eyeq5_fixed_factors [] = {
491+ /* EQ5C_PLL_CPU children */
492+ { EQ5C_CPU_CPC , "cpc" , 1 , 1 , EQ5C_CPU_SI_CSS0 },
493+ { EQ5C_CPU_CM , "cm" , 1 , 1 , EQ5C_CPU_SI_CSS0 },
494+ { EQ5C_CPU_MEM , "mem" , 1 , 1 , EQ5C_CPU_SI_CSS0 },
495+ { EQ5C_CPU_OCC_ISRAM , "occ-isram" , 1 , 2 , EQ5C_PLL_CPU },
496+ { EQ5C_CPU_ISRAM , "isram" , 1 , 1 , EQ5C_CPU_OCC_ISRAM },
497+ { EQ5C_CPU_OCC_DBU , "occ-dbu" , 1 , 10 , EQ5C_PLL_CPU },
498+ { EQ5C_CPU_SI_DBU_TP , "si-dbu-tp" , 1 , 1 , EQ5C_CPU_OCC_DBU },
499+
500+ /* EQ5C_PLL_VDI children */
501+ { EQ5C_VDI_OCC_VDI , "occ-vdi" , 1 , 2 , EQ5C_PLL_VDI },
502+ { EQ5C_VDI_VDI , "vdi" , 1 , 1 , EQ5C_VDI_OCC_VDI },
503+ { EQ5C_VDI_OCC_CAN_SER , "occ-can-ser" , 1 , 16 , EQ5C_PLL_VDI },
504+ { EQ5C_VDI_CAN_SER , "can-ser" , 1 , 1 , EQ5C_VDI_OCC_CAN_SER },
505+ { EQ5C_VDI_I2C_SER , "i2c-ser" , 1 , 20 , EQ5C_PLL_VDI },
506+
507+ /* EQ5C_PLL_PER children */
508+ { EQ5C_PER_PERIPH , "periph" , 1 , 1 , EQ5C_PER_OCC },
509+ { EQ5C_PER_CAN , "can" , 1 , 1 , EQ5C_PER_OCC },
510+ { EQ5C_PER_SPI , "spi" , 1 , 1 , EQ5C_PER_OCC },
511+ { EQ5C_PER_I2C , "i2c" , 1 , 1 , EQ5C_PER_OCC },
512+ { EQ5C_PER_TIMER , "timer" , 1 , 1 , EQ5C_PER_OCC },
513+ { EQ5C_PER_GPIO , "gpio" , 1 , 1 , EQ5C_PER_OCC },
514+ { EQ5C_PER_EMMC , "emmc-sys" , 1 , 10 , EQ5C_PLL_PER },
515+ { EQ5C_PER_CCF , "ccf-ctrl" , 1 , 4 , EQ5C_PLL_PER },
516+ { EQ5C_PER_OCC_MJPEG , "occ-mjpeg" , 1 , 2 , EQ5C_PLL_PER },
517+ { EQ5C_PER_HSM , "hsm" , 1 , 1 , EQ5C_PER_OCC_MJPEG },
518+ { EQ5C_PER_MJPEG , "mjpeg" , 1 , 1 , EQ5C_PER_OCC_MJPEG },
519+ { EQ5C_PER_FCMU_A , "fcmu-a" , 1 , 20 , EQ5C_PLL_PER },
520+ { EQ5C_PER_OCC_PCI , "occ-pci-sys" , 1 , 8 , EQ5C_PLL_PER },
521+ };
522+
439523static const struct eqc_div eqc_eyeq5_divs [] = {
440524 {
441525 .index = EQ5C_DIV_OSPI ,
@@ -451,7 +535,11 @@ static const struct eqc_early_match_data eqc_eyeq5_early_match_data __initconst
451535 .early_pll_count = ARRAY_SIZE (eqc_eyeq5_early_plls ),
452536 .early_plls = eqc_eyeq5_early_plls ,
453537
454- .late_clk_count = ARRAY_SIZE (eqc_eyeq5_plls ) + ARRAY_SIZE (eqc_eyeq5_divs ),
538+ .early_fixed_factor_count = ARRAY_SIZE (eqc_eyeq5_early_fixed_factors ),
539+ .early_fixed_factors = eqc_eyeq5_early_fixed_factors ,
540+
541+ .late_clk_count = ARRAY_SIZE (eqc_eyeq5_plls ) + ARRAY_SIZE (eqc_eyeq5_divs ) +
542+ ARRAY_SIZE (eqc_eyeq5_fixed_factors ),
455543};
456544
457545static const struct eqc_match_data eqc_eyeq5_match_data = {
@@ -461,10 +549,14 @@ static const struct eqc_match_data eqc_eyeq5_match_data = {
461549 .div_count = ARRAY_SIZE (eqc_eyeq5_divs ),
462550 .divs = eqc_eyeq5_divs ,
463551
552+ .fixed_factor_count = ARRAY_SIZE (eqc_eyeq5_fixed_factors ),
553+ .fixed_factors = eqc_eyeq5_fixed_factors ,
554+
464555 .reset_auxdev_name = "reset" ,
465556 .pinctrl_auxdev_name = "pinctrl" ,
466557
467- .early_clk_count = ARRAY_SIZE (eqc_eyeq5_early_plls ),
558+ .early_clk_count = ARRAY_SIZE (eqc_eyeq5_early_plls ) +
559+ ARRAY_SIZE (eqc_eyeq5_early_fixed_factors ),
468560};
469561
470562static const struct eqc_pll eqc_eyeq6l_plls [] = {
0 commit comments