@@ -22,9 +22,10 @@ static int imx8qxp_clk_probe(struct platform_device *pdev)
22
22
struct device_node * ccm_node = pdev -> dev .of_node ;
23
23
struct clk_hw_onecell_data * clk_data ;
24
24
struct clk_hw * * clks ;
25
+ u32 clk_cells ;
25
26
int ret , i ;
26
27
27
- ret = imx_clk_scu_init ();
28
+ ret = imx_clk_scu_init (ccm_node );
28
29
if (ret )
29
30
return ret ;
30
31
@@ -33,6 +34,9 @@ static int imx8qxp_clk_probe(struct platform_device *pdev)
33
34
if (!clk_data )
34
35
return - ENOMEM ;
35
36
37
+ if (of_property_read_u32 (ccm_node , "#clock-cells" , & clk_cells ))
38
+ return - EINVAL ;
39
+
36
40
clk_data -> num = IMX_SCU_CLK_END ;
37
41
clks = clk_data -> hws ;
38
42
@@ -55,86 +59,98 @@ static int imx8qxp_clk_probe(struct platform_device *pdev)
55
59
clks [IMX_LSIO_BUS_CLK ] = clk_hw_register_fixed_rate (NULL , "lsio_bus_clk_root" , NULL , 0 , 100000000 );
56
60
57
61
/* ARM core */
58
- clks [IMX_A35_CLK ] = imx_clk_scu ("a35_clk" , IMX_SC_R_A35 , IMX_SC_PM_CLK_CPU );
62
+ clks [IMX_A35_CLK ] = imx_clk_scu ("a35_clk" , IMX_SC_R_A35 , IMX_SC_PM_CLK_CPU , clk_cells );
59
63
60
64
/* LSIO SS */
61
- clks [IMX_LSIO_PWM0_CLK ] = imx_clk_scu ("pwm0_clk" , IMX_SC_R_PWM_0 , IMX_SC_PM_CLK_PER );
62
- clks [IMX_LSIO_PWM1_CLK ] = imx_clk_scu ("pwm1_clk" , IMX_SC_R_PWM_1 , IMX_SC_PM_CLK_PER );
63
- clks [IMX_LSIO_PWM2_CLK ] = imx_clk_scu ("pwm2_clk" , IMX_SC_R_PWM_2 , IMX_SC_PM_CLK_PER );
64
- clks [IMX_LSIO_PWM3_CLK ] = imx_clk_scu ("pwm3_clk" , IMX_SC_R_PWM_3 , IMX_SC_PM_CLK_PER );
65
- clks [IMX_LSIO_PWM4_CLK ] = imx_clk_scu ("pwm4_clk" , IMX_SC_R_PWM_4 , IMX_SC_PM_CLK_PER );
66
- clks [IMX_LSIO_PWM5_CLK ] = imx_clk_scu ("pwm5_clk" , IMX_SC_R_PWM_5 , IMX_SC_PM_CLK_PER );
67
- clks [IMX_LSIO_PWM6_CLK ] = imx_clk_scu ("pwm6_clk" , IMX_SC_R_PWM_6 , IMX_SC_PM_CLK_PER );
68
- clks [IMX_LSIO_PWM7_CLK ] = imx_clk_scu ("pwm7_clk" , IMX_SC_R_PWM_7 , IMX_SC_PM_CLK_PER );
69
- clks [IMX_LSIO_GPT0_CLK ] = imx_clk_scu ("gpt0_clk" , IMX_SC_R_GPT_0 , IMX_SC_PM_CLK_PER );
70
- clks [IMX_LSIO_GPT1_CLK ] = imx_clk_scu ("gpt1_clk" , IMX_SC_R_GPT_1 , IMX_SC_PM_CLK_PER );
71
- clks [IMX_LSIO_GPT2_CLK ] = imx_clk_scu ("gpt2_clk" , IMX_SC_R_GPT_2 , IMX_SC_PM_CLK_PER );
72
- clks [IMX_LSIO_GPT3_CLK ] = imx_clk_scu ("gpt3_clk" , IMX_SC_R_GPT_3 , IMX_SC_PM_CLK_PER );
73
- clks [IMX_LSIO_GPT4_CLK ] = imx_clk_scu ("gpt4_clk" , IMX_SC_R_GPT_4 , IMX_SC_PM_CLK_PER );
74
- clks [IMX_LSIO_FSPI0_CLK ] = imx_clk_scu ("fspi0_clk" , IMX_SC_R_FSPI_0 , IMX_SC_PM_CLK_PER );
75
- clks [IMX_LSIO_FSPI1_CLK ] = imx_clk_scu ("fspi1_clk" , IMX_SC_R_FSPI_1 , IMX_SC_PM_CLK_PER );
65
+ clks [IMX_LSIO_PWM0_CLK ] = imx_clk_scu ("pwm0_clk" , IMX_SC_R_PWM_0 , IMX_SC_PM_CLK_PER , clk_cells );
66
+ clks [IMX_LSIO_PWM1_CLK ] = imx_clk_scu ("pwm1_clk" , IMX_SC_R_PWM_1 , IMX_SC_PM_CLK_PER , clk_cells );
67
+ clks [IMX_LSIO_PWM2_CLK ] = imx_clk_scu ("pwm2_clk" , IMX_SC_R_PWM_2 , IMX_SC_PM_CLK_PER , clk_cells );
68
+ clks [IMX_LSIO_PWM3_CLK ] = imx_clk_scu ("pwm3_clk" , IMX_SC_R_PWM_3 , IMX_SC_PM_CLK_PER , clk_cells );
69
+ clks [IMX_LSIO_PWM4_CLK ] = imx_clk_scu ("pwm4_clk" , IMX_SC_R_PWM_4 , IMX_SC_PM_CLK_PER , clk_cells );
70
+ clks [IMX_LSIO_PWM5_CLK ] = imx_clk_scu ("pwm5_clk" , IMX_SC_R_PWM_5 , IMX_SC_PM_CLK_PER , clk_cells );
71
+ clks [IMX_LSIO_PWM6_CLK ] = imx_clk_scu ("pwm6_clk" , IMX_SC_R_PWM_6 , IMX_SC_PM_CLK_PER , clk_cells );
72
+ clks [IMX_LSIO_PWM7_CLK ] = imx_clk_scu ("pwm7_clk" , IMX_SC_R_PWM_7 , IMX_SC_PM_CLK_PER , clk_cells );
73
+ clks [IMX_LSIO_GPT0_CLK ] = imx_clk_scu ("gpt0_clk" , IMX_SC_R_GPT_0 , IMX_SC_PM_CLK_PER , clk_cells );
74
+ clks [IMX_LSIO_GPT1_CLK ] = imx_clk_scu ("gpt1_clk" , IMX_SC_R_GPT_1 , IMX_SC_PM_CLK_PER , clk_cells );
75
+ clks [IMX_LSIO_GPT2_CLK ] = imx_clk_scu ("gpt2_clk" , IMX_SC_R_GPT_2 , IMX_SC_PM_CLK_PER , clk_cells );
76
+ clks [IMX_LSIO_GPT3_CLK ] = imx_clk_scu ("gpt3_clk" , IMX_SC_R_GPT_3 , IMX_SC_PM_CLK_PER , clk_cells );
77
+ clks [IMX_LSIO_GPT4_CLK ] = imx_clk_scu ("gpt4_clk" , IMX_SC_R_GPT_4 , IMX_SC_PM_CLK_PER , clk_cells );
78
+ clks [IMX_LSIO_FSPI0_CLK ] = imx_clk_scu ("fspi0_clk" , IMX_SC_R_FSPI_0 , IMX_SC_PM_CLK_PER , clk_cells );
79
+ clks [IMX_LSIO_FSPI1_CLK ] = imx_clk_scu ("fspi1_clk" , IMX_SC_R_FSPI_1 , IMX_SC_PM_CLK_PER , clk_cells );
76
80
77
81
/* ADMA SS */
78
- clks [IMX_ADMA_UART0_CLK ] = imx_clk_scu ("uart0_clk" , IMX_SC_R_UART_0 , IMX_SC_PM_CLK_PER );
79
- clks [IMX_ADMA_UART1_CLK ] = imx_clk_scu ("uart1_clk" , IMX_SC_R_UART_1 , IMX_SC_PM_CLK_PER );
80
- clks [IMX_ADMA_UART2_CLK ] = imx_clk_scu ("uart2_clk" , IMX_SC_R_UART_2 , IMX_SC_PM_CLK_PER );
81
- clks [IMX_ADMA_UART3_CLK ] = imx_clk_scu ("uart3_clk" , IMX_SC_R_UART_3 , IMX_SC_PM_CLK_PER );
82
- clks [IMX_ADMA_SPI0_CLK ] = imx_clk_scu ("spi0_clk" , IMX_SC_R_SPI_0 , IMX_SC_PM_CLK_PER );
83
- clks [IMX_ADMA_SPI1_CLK ] = imx_clk_scu ("spi1_clk" , IMX_SC_R_SPI_1 , IMX_SC_PM_CLK_PER );
84
- clks [IMX_ADMA_SPI2_CLK ] = imx_clk_scu ("spi2_clk" , IMX_SC_R_SPI_2 , IMX_SC_PM_CLK_PER );
85
- clks [IMX_ADMA_SPI3_CLK ] = imx_clk_scu ("spi3_clk" , IMX_SC_R_SPI_3 , IMX_SC_PM_CLK_PER );
86
- clks [IMX_ADMA_CAN0_CLK ] = imx_clk_scu ("can0_clk" , IMX_SC_R_CAN_0 , IMX_SC_PM_CLK_PER );
87
- clks [IMX_ADMA_I2C0_CLK ] = imx_clk_scu ("i2c0_clk" , IMX_SC_R_I2C_0 , IMX_SC_PM_CLK_PER );
88
- clks [IMX_ADMA_I2C1_CLK ] = imx_clk_scu ("i2c1_clk" , IMX_SC_R_I2C_1 , IMX_SC_PM_CLK_PER );
89
- clks [IMX_ADMA_I2C2_CLK ] = imx_clk_scu ("i2c2_clk" , IMX_SC_R_I2C_2 , IMX_SC_PM_CLK_PER );
90
- clks [IMX_ADMA_I2C3_CLK ] = imx_clk_scu ("i2c3_clk" , IMX_SC_R_I2C_3 , IMX_SC_PM_CLK_PER );
91
- clks [IMX_ADMA_FTM0_CLK ] = imx_clk_scu ("ftm0_clk" , IMX_SC_R_FTM_0 , IMX_SC_PM_CLK_PER );
92
- clks [IMX_ADMA_FTM1_CLK ] = imx_clk_scu ("ftm1_clk" , IMX_SC_R_FTM_1 , IMX_SC_PM_CLK_PER );
93
- clks [IMX_ADMA_ADC0_CLK ] = imx_clk_scu ("adc0_clk" , IMX_SC_R_ADC_0 , IMX_SC_PM_CLK_PER );
94
- clks [IMX_ADMA_PWM_CLK ] = imx_clk_scu ("pwm_clk" , IMX_SC_R_LCD_0_PWM_0 , IMX_SC_PM_CLK_PER );
95
- clks [IMX_ADMA_LCD_CLK ] = imx_clk_scu ("lcd_clk" , IMX_SC_R_LCD_0 , IMX_SC_PM_CLK_PER );
82
+ clks [IMX_ADMA_UART0_CLK ] = imx_clk_scu ("uart0_clk" , IMX_SC_R_UART_0 , IMX_SC_PM_CLK_PER , clk_cells );
83
+ clks [IMX_ADMA_UART1_CLK ] = imx_clk_scu ("uart1_clk" , IMX_SC_R_UART_1 , IMX_SC_PM_CLK_PER , clk_cells );
84
+ clks [IMX_ADMA_UART2_CLK ] = imx_clk_scu ("uart2_clk" , IMX_SC_R_UART_2 , IMX_SC_PM_CLK_PER , clk_cells );
85
+ clks [IMX_ADMA_UART3_CLK ] = imx_clk_scu ("uart3_clk" , IMX_SC_R_UART_3 , IMX_SC_PM_CLK_PER , clk_cells );
86
+ clks [IMX_ADMA_SPI0_CLK ] = imx_clk_scu ("spi0_clk" , IMX_SC_R_SPI_0 , IMX_SC_PM_CLK_PER , clk_cells );
87
+ clks [IMX_ADMA_SPI1_CLK ] = imx_clk_scu ("spi1_clk" , IMX_SC_R_SPI_1 , IMX_SC_PM_CLK_PER , clk_cells );
88
+ clks [IMX_ADMA_SPI2_CLK ] = imx_clk_scu ("spi2_clk" , IMX_SC_R_SPI_2 , IMX_SC_PM_CLK_PER , clk_cells );
89
+ clks [IMX_ADMA_SPI3_CLK ] = imx_clk_scu ("spi3_clk" , IMX_SC_R_SPI_3 , IMX_SC_PM_CLK_PER , clk_cells );
90
+ clks [IMX_ADMA_CAN0_CLK ] = imx_clk_scu ("can0_clk" , IMX_SC_R_CAN_0 , IMX_SC_PM_CLK_PER , clk_cells );
91
+ clks [IMX_ADMA_I2C0_CLK ] = imx_clk_scu ("i2c0_clk" , IMX_SC_R_I2C_0 , IMX_SC_PM_CLK_PER , clk_cells );
92
+ clks [IMX_ADMA_I2C1_CLK ] = imx_clk_scu ("i2c1_clk" , IMX_SC_R_I2C_1 , IMX_SC_PM_CLK_PER , clk_cells );
93
+ clks [IMX_ADMA_I2C2_CLK ] = imx_clk_scu ("i2c2_clk" , IMX_SC_R_I2C_2 , IMX_SC_PM_CLK_PER , clk_cells );
94
+ clks [IMX_ADMA_I2C3_CLK ] = imx_clk_scu ("i2c3_clk" , IMX_SC_R_I2C_3 , IMX_SC_PM_CLK_PER , clk_cells );
95
+ clks [IMX_ADMA_FTM0_CLK ] = imx_clk_scu ("ftm0_clk" , IMX_SC_R_FTM_0 , IMX_SC_PM_CLK_PER , clk_cells );
96
+ clks [IMX_ADMA_FTM1_CLK ] = imx_clk_scu ("ftm1_clk" , IMX_SC_R_FTM_1 , IMX_SC_PM_CLK_PER , clk_cells );
97
+ clks [IMX_ADMA_ADC0_CLK ] = imx_clk_scu ("adc0_clk" , IMX_SC_R_ADC_0 , IMX_SC_PM_CLK_PER , clk_cells );
98
+ clks [IMX_ADMA_PWM_CLK ] = imx_clk_scu ("pwm_clk" , IMX_SC_R_LCD_0_PWM_0 , IMX_SC_PM_CLK_PER , clk_cells );
99
+ clks [IMX_ADMA_LCD_CLK ] = imx_clk_scu ("lcd_clk" , IMX_SC_R_LCD_0 , IMX_SC_PM_CLK_PER , clk_cells );
96
100
97
101
/* Connectivity */
98
- clks [IMX_CONN_SDHC0_CLK ] = imx_clk_scu ("sdhc0_clk" , IMX_SC_R_SDHC_0 , IMX_SC_PM_CLK_PER );
99
- clks [IMX_CONN_SDHC1_CLK ] = imx_clk_scu ("sdhc1_clk" , IMX_SC_R_SDHC_1 , IMX_SC_PM_CLK_PER );
100
- clks [IMX_CONN_SDHC2_CLK ] = imx_clk_scu ("sdhc2_clk" , IMX_SC_R_SDHC_2 , IMX_SC_PM_CLK_PER );
101
- clks [IMX_CONN_ENET0_ROOT_CLK ] = imx_clk_scu ("enet0_clk" , IMX_SC_R_ENET_0 , IMX_SC_PM_CLK_PER );
102
- clks [IMX_CONN_ENET0_BYPASS_CLK ] = imx_clk_scu ("enet0_bypass_clk" , IMX_SC_R_ENET_0 , IMX_SC_PM_CLK_BYPASS );
103
- clks [IMX_CONN_ENET0_RGMII_CLK ] = imx_clk_scu ("enet0_rgmii_clk" , IMX_SC_R_ENET_0 , IMX_SC_PM_CLK_MISC0 );
104
- clks [IMX_CONN_ENET1_ROOT_CLK ] = imx_clk_scu ("enet1_clk" , IMX_SC_R_ENET_1 , IMX_SC_PM_CLK_PER );
105
- clks [IMX_CONN_ENET1_BYPASS_CLK ] = imx_clk_scu ("enet1_bypass_clk" , IMX_SC_R_ENET_1 , IMX_SC_PM_CLK_BYPASS );
106
- clks [IMX_CONN_ENET1_RGMII_CLK ] = imx_clk_scu ("enet1_rgmii_clk" , IMX_SC_R_ENET_1 , IMX_SC_PM_CLK_MISC0 );
107
- clks [IMX_CONN_GPMI_BCH_IO_CLK ] = imx_clk_scu ("gpmi_io_clk" , IMX_SC_R_NAND , IMX_SC_PM_CLK_MST_BUS );
108
- clks [IMX_CONN_GPMI_BCH_CLK ] = imx_clk_scu ("gpmi_bch_clk" , IMX_SC_R_NAND , IMX_SC_PM_CLK_PER );
109
- clks [IMX_CONN_USB2_ACLK ] = imx_clk_scu ("usb3_aclk_div" , IMX_SC_R_USB_2 , IMX_SC_PM_CLK_PER );
110
- clks [IMX_CONN_USB2_BUS_CLK ] = imx_clk_scu ("usb3_bus_div" , IMX_SC_R_USB_2 , IMX_SC_PM_CLK_MST_BUS );
111
- clks [IMX_CONN_USB2_LPM_CLK ] = imx_clk_scu ("usb3_lpm_div" , IMX_SC_R_USB_2 , IMX_SC_PM_CLK_MISC );
102
+ clks [IMX_CONN_SDHC0_CLK ] = imx_clk_scu ("sdhc0_clk" , IMX_SC_R_SDHC_0 , IMX_SC_PM_CLK_PER , clk_cells );
103
+ clks [IMX_CONN_SDHC1_CLK ] = imx_clk_scu ("sdhc1_clk" , IMX_SC_R_SDHC_1 , IMX_SC_PM_CLK_PER , clk_cells );
104
+ clks [IMX_CONN_SDHC2_CLK ] = imx_clk_scu ("sdhc2_clk" , IMX_SC_R_SDHC_2 , IMX_SC_PM_CLK_PER , clk_cells );
105
+ clks [IMX_CONN_ENET0_ROOT_CLK ] = imx_clk_scu ("enet0_clk" , IMX_SC_R_ENET_0 , IMX_SC_PM_CLK_PER , clk_cells );
106
+ clks [IMX_CONN_ENET0_BYPASS_CLK ] = imx_clk_scu ("enet0_bypass_clk" , IMX_SC_R_ENET_0 , IMX_SC_PM_CLK_BYPASS , clk_cells );
107
+ clks [IMX_CONN_ENET0_RGMII_CLK ] = imx_clk_scu ("enet0_rgmii_clk" , IMX_SC_R_ENET_0 , IMX_SC_PM_CLK_MISC0 , clk_cells );
108
+ clks [IMX_CONN_ENET1_ROOT_CLK ] = imx_clk_scu ("enet1_clk" , IMX_SC_R_ENET_1 , IMX_SC_PM_CLK_PER , clk_cells );
109
+ clks [IMX_CONN_ENET1_BYPASS_CLK ] = imx_clk_scu ("enet1_bypass_clk" , IMX_SC_R_ENET_1 , IMX_SC_PM_CLK_BYPASS , clk_cells );
110
+ clks [IMX_CONN_ENET1_RGMII_CLK ] = imx_clk_scu ("enet1_rgmii_clk" , IMX_SC_R_ENET_1 , IMX_SC_PM_CLK_MISC0 , clk_cells );
111
+ clks [IMX_CONN_GPMI_BCH_IO_CLK ] = imx_clk_scu ("gpmi_io_clk" , IMX_SC_R_NAND , IMX_SC_PM_CLK_MST_BUS , clk_cells );
112
+ clks [IMX_CONN_GPMI_BCH_CLK ] = imx_clk_scu ("gpmi_bch_clk" , IMX_SC_R_NAND , IMX_SC_PM_CLK_PER , clk_cells );
113
+ clks [IMX_CONN_USB2_ACLK ] = imx_clk_scu ("usb3_aclk_div" , IMX_SC_R_USB_2 , IMX_SC_PM_CLK_PER , clk_cells );
114
+ clks [IMX_CONN_USB2_BUS_CLK ] = imx_clk_scu ("usb3_bus_div" , IMX_SC_R_USB_2 , IMX_SC_PM_CLK_MST_BUS , clk_cells );
115
+ clks [IMX_CONN_USB2_LPM_CLK ] = imx_clk_scu ("usb3_lpm_div" , IMX_SC_R_USB_2 , IMX_SC_PM_CLK_MISC , clk_cells );
112
116
113
117
/* Display controller SS */
114
- clks [IMX_DC0_DISP0_CLK ] = imx_clk_scu ("dc0_disp0_clk" , IMX_SC_R_DC_0 , IMX_SC_PM_CLK_MISC0 );
115
- clks [IMX_DC0_DISP1_CLK ] = imx_clk_scu ("dc0_disp1_clk" , IMX_SC_R_DC_0 , IMX_SC_PM_CLK_MISC1 );
118
+ clks [IMX_DC0_DISP0_CLK ] = imx_clk_scu ("dc0_disp0_clk" , IMX_SC_R_DC_0 , IMX_SC_PM_CLK_MISC0 , clk_cells );
119
+ clks [IMX_DC0_DISP1_CLK ] = imx_clk_scu ("dc0_disp1_clk" , IMX_SC_R_DC_0 , IMX_SC_PM_CLK_MISC1 , clk_cells );
116
120
117
121
/* MIPI-LVDS SS */
118
- clks [IMX_MIPI0_I2C0_CLK ] = imx_clk_scu ("mipi0_i2c0_clk" , IMX_SC_R_MIPI_0_I2C_0 , IMX_SC_PM_CLK_MISC2 );
119
- clks [IMX_MIPI0_I2C1_CLK ] = imx_clk_scu ("mipi0_i2c1_clk" , IMX_SC_R_MIPI_0_I2C_1 , IMX_SC_PM_CLK_MISC2 );
122
+ clks [IMX_MIPI0_I2C0_CLK ] = imx_clk_scu ("mipi0_i2c0_clk" , IMX_SC_R_MIPI_0_I2C_0 , IMX_SC_PM_CLK_MISC2 , clk_cells );
123
+ clks [IMX_MIPI0_I2C1_CLK ] = imx_clk_scu ("mipi0_i2c1_clk" , IMX_SC_R_MIPI_0_I2C_1 , IMX_SC_PM_CLK_MISC2 , clk_cells );
120
124
121
125
/* MIPI CSI SS */
122
- clks [IMX_CSI0_CORE_CLK ] = imx_clk_scu ("mipi_csi0_core_clk" , IMX_SC_R_CSI_0 , IMX_SC_PM_CLK_PER );
123
- clks [IMX_CSI0_ESC_CLK ] = imx_clk_scu ("mipi_csi0_esc_clk" , IMX_SC_R_CSI_0 , IMX_SC_PM_CLK_MISC );
124
- clks [IMX_CSI0_I2C0_CLK ] = imx_clk_scu ("mipi_csi0_i2c0_clk" , IMX_SC_R_CSI_0_I2C_0 , IMX_SC_PM_CLK_PER );
125
- clks [IMX_CSI0_PWM0_CLK ] = imx_clk_scu ("mipi_csi0_pwm0_clk" , IMX_SC_R_CSI_0_PWM_0 , IMX_SC_PM_CLK_PER );
126
+ clks [IMX_CSI0_CORE_CLK ] = imx_clk_scu ("mipi_csi0_core_clk" , IMX_SC_R_CSI_0 , IMX_SC_PM_CLK_PER , clk_cells );
127
+ clks [IMX_CSI0_ESC_CLK ] = imx_clk_scu ("mipi_csi0_esc_clk" , IMX_SC_R_CSI_0 , IMX_SC_PM_CLK_MISC , clk_cells );
128
+ clks [IMX_CSI0_I2C0_CLK ] = imx_clk_scu ("mipi_csi0_i2c0_clk" , IMX_SC_R_CSI_0_I2C_0 , IMX_SC_PM_CLK_PER , clk_cells );
129
+ clks [IMX_CSI0_PWM0_CLK ] = imx_clk_scu ("mipi_csi0_pwm0_clk" , IMX_SC_R_CSI_0_PWM_0 , IMX_SC_PM_CLK_PER , clk_cells );
126
130
127
131
/* GPU SS */
128
- clks [IMX_GPU0_CORE_CLK ] = imx_clk_scu ("gpu_core0_clk" , IMX_SC_R_GPU_0_PID0 , IMX_SC_PM_CLK_PER );
129
- clks [IMX_GPU0_SHADER_CLK ] = imx_clk_scu ("gpu_shader0_clk" , IMX_SC_R_GPU_0_PID0 , IMX_SC_PM_CLK_MISC );
132
+ clks [IMX_GPU0_CORE_CLK ] = imx_clk_scu ("gpu_core0_clk" , IMX_SC_R_GPU_0_PID0 , IMX_SC_PM_CLK_PER , clk_cells );
133
+ clks [IMX_GPU0_SHADER_CLK ] = imx_clk_scu ("gpu_shader0_clk" , IMX_SC_R_GPU_0_PID0 , IMX_SC_PM_CLK_MISC , clk_cells );
130
134
131
135
for (i = 0 ; i < clk_data -> num ; i ++ ) {
132
136
if (IS_ERR (clks [i ]))
133
137
pr_warn ("i.MX clk %u: register failed with %ld\n" ,
134
138
i , PTR_ERR (clks [i ]));
135
139
}
136
140
137
- return of_clk_add_hw_provider (ccm_node , of_clk_hw_onecell_get , clk_data );
141
+ if (clk_cells == 2 ) {
142
+ ret = of_clk_add_hw_provider (ccm_node , imx_scu_of_clk_src_get , imx_scu_clks );
143
+ if (ret )
144
+ imx_clk_scu_unregister ();
145
+ } else {
146
+ /*
147
+ * legacy binding code path doesn't unregister here because
148
+ * it will be removed later.
149
+ */
150
+ ret = of_clk_add_hw_provider (ccm_node , of_clk_hw_onecell_get , clk_data );
151
+ }
152
+
153
+ return ret ;
138
154
}
139
155
140
156
static const struct of_device_id imx8qxp_match [] = {
0 commit comments