Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clk: imx: scu: remove legacy scu clock binding support

Legacy scu clock binding are not maintained anymore, it has a very
limited clocks supported during initial upstreaming and obviously
unusable by products. So it's meaningless to keep it in
kernel which worse the code readability.
Remove it to keep code much cleaner.

Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
Reviewed-by: Abel Vesa <abel.vesa@nxp.com>
Signed-off-by: Abel Vesa <abel.vesa@nxp.com>

authored by

Dong Aisheng and committed by
Abel Vesa
91e91677 659c12c7

+80 -262
+76 -123
drivers/clk/imx/clk-imx8qxp.c
··· 14 14 15 15 #include "clk-scu.h" 16 16 17 - #include <dt-bindings/clock/imx8-clock.h> 18 17 #include <dt-bindings/firmware/imx/rsrc.h> 19 18 20 19 static const char *dc0_sels[] = { ··· 27 28 static int imx8qxp_clk_probe(struct platform_device *pdev) 28 29 { 29 30 struct device_node *ccm_node = pdev->dev.of_node; 30 - struct clk_hw_onecell_data *clk_data; 31 - struct clk_hw **clks; 32 - u32 clk_cells; 33 - int ret, i; 31 + int ret; 34 32 35 33 ret = imx_clk_scu_init(ccm_node); 36 34 if (ret) 37 35 return ret; 38 36 39 - clk_data = devm_kzalloc(&pdev->dev, struct_size(clk_data, hws, 40 - IMX_SCU_CLK_END), GFP_KERNEL); 41 - if (!clk_data) 42 - return -ENOMEM; 43 - 44 - if (of_property_read_u32(ccm_node, "#clock-cells", &clk_cells)) 45 - return -EINVAL; 46 - 47 - clk_data->num = IMX_SCU_CLK_END; 48 - clks = clk_data->hws; 49 - 50 - /* Fixed clocks */ 51 - clks[IMX_CLK_DUMMY] = clk_hw_register_fixed_rate(NULL, "dummy", NULL, 0, 0); 52 - clks[IMX_ADMA_IPG_CLK_ROOT] = clk_hw_register_fixed_rate(NULL, "dma_ipg_clk_root", NULL, 0, 120000000); 53 - clks[IMX_CONN_AXI_CLK_ROOT] = clk_hw_register_fixed_rate(NULL, "conn_axi_clk_root", NULL, 0, 333333333); 54 - clks[IMX_CONN_AHB_CLK_ROOT] = clk_hw_register_fixed_rate(NULL, "conn_ahb_clk_root", NULL, 0, 166666666); 55 - clks[IMX_CONN_IPG_CLK_ROOT] = clk_hw_register_fixed_rate(NULL, "conn_ipg_clk_root", NULL, 0, 83333333); 56 - clks[IMX_DC_AXI_EXT_CLK] = clk_hw_register_fixed_rate(NULL, "dc_axi_ext_clk_root", NULL, 0, 800000000); 57 - clks[IMX_DC_AXI_INT_CLK] = clk_hw_register_fixed_rate(NULL, "dc_axi_int_clk_root", NULL, 0, 400000000); 58 - clks[IMX_DC_CFG_CLK] = clk_hw_register_fixed_rate(NULL, "dc_cfg_clk_root", NULL, 0, 100000000); 59 - clks[IMX_MIPI_IPG_CLK] = clk_hw_register_fixed_rate(NULL, "mipi_ipg_clk_root", NULL, 0, 120000000); 60 - clks[IMX_IMG_AXI_CLK] = clk_hw_register_fixed_rate(NULL, "img_axi_clk_root", NULL, 0, 400000000); 61 - clks[IMX_IMG_IPG_CLK] = clk_hw_register_fixed_rate(NULL, "img_ipg_clk_root", NULL, 0, 200000000); 62 - clks[IMX_IMG_PXL_CLK] = clk_hw_register_fixed_rate(NULL, "img_pxl_clk_root", NULL, 0, 600000000); 63 - clks[IMX_HSIO_AXI_CLK] = clk_hw_register_fixed_rate(NULL, "hsio_axi_clk_root", NULL, 0, 400000000); 64 - clks[IMX_HSIO_PER_CLK] = clk_hw_register_fixed_rate(NULL, "hsio_per_clk_root", NULL, 0, 133333333); 65 - clks[IMX_LSIO_MEM_CLK] = clk_hw_register_fixed_rate(NULL, "lsio_mem_clk_root", NULL, 0, 200000000); 66 - clks[IMX_LSIO_BUS_CLK] = clk_hw_register_fixed_rate(NULL, "lsio_bus_clk_root", NULL, 0, 100000000); 67 - 68 37 /* ARM core */ 69 - clks[IMX_A35_CLK] = imx_clk_scu("a35_clk", IMX_SC_R_A35, IMX_SC_PM_CLK_CPU, clk_cells); 38 + imx_clk_scu("a35_clk", IMX_SC_R_A35, IMX_SC_PM_CLK_CPU); 70 39 71 40 /* LSIO SS */ 72 - clks[IMX_LSIO_PWM0_CLK] = imx_clk_scu("pwm0_clk", IMX_SC_R_PWM_0, IMX_SC_PM_CLK_PER, clk_cells); 73 - clks[IMX_LSIO_PWM1_CLK] = imx_clk_scu("pwm1_clk", IMX_SC_R_PWM_1, IMX_SC_PM_CLK_PER, clk_cells); 74 - clks[IMX_LSIO_PWM2_CLK] = imx_clk_scu("pwm2_clk", IMX_SC_R_PWM_2, IMX_SC_PM_CLK_PER, clk_cells); 75 - clks[IMX_LSIO_PWM3_CLK] = imx_clk_scu("pwm3_clk", IMX_SC_R_PWM_3, IMX_SC_PM_CLK_PER, clk_cells); 76 - clks[IMX_LSIO_PWM4_CLK] = imx_clk_scu("pwm4_clk", IMX_SC_R_PWM_4, IMX_SC_PM_CLK_PER, clk_cells); 77 - clks[IMX_LSIO_PWM5_CLK] = imx_clk_scu("pwm5_clk", IMX_SC_R_PWM_5, IMX_SC_PM_CLK_PER, clk_cells); 78 - clks[IMX_LSIO_PWM6_CLK] = imx_clk_scu("pwm6_clk", IMX_SC_R_PWM_6, IMX_SC_PM_CLK_PER, clk_cells); 79 - clks[IMX_LSIO_PWM7_CLK] = imx_clk_scu("pwm7_clk", IMX_SC_R_PWM_7, IMX_SC_PM_CLK_PER, clk_cells); 80 - clks[IMX_LSIO_GPT0_CLK] = imx_clk_scu("gpt0_clk", IMX_SC_R_GPT_0, IMX_SC_PM_CLK_PER, clk_cells); 81 - clks[IMX_LSIO_GPT1_CLK] = imx_clk_scu("gpt1_clk", IMX_SC_R_GPT_1, IMX_SC_PM_CLK_PER, clk_cells); 82 - clks[IMX_LSIO_GPT2_CLK] = imx_clk_scu("gpt2_clk", IMX_SC_R_GPT_2, IMX_SC_PM_CLK_PER, clk_cells); 83 - clks[IMX_LSIO_GPT3_CLK] = imx_clk_scu("gpt3_clk", IMX_SC_R_GPT_3, IMX_SC_PM_CLK_PER, clk_cells); 84 - clks[IMX_LSIO_GPT4_CLK] = imx_clk_scu("gpt4_clk", IMX_SC_R_GPT_4, IMX_SC_PM_CLK_PER, clk_cells); 85 - clks[IMX_LSIO_FSPI0_CLK] = imx_clk_scu("fspi0_clk", IMX_SC_R_FSPI_0, IMX_SC_PM_CLK_PER, clk_cells); 86 - clks[IMX_LSIO_FSPI1_CLK] = imx_clk_scu("fspi1_clk", IMX_SC_R_FSPI_1, IMX_SC_PM_CLK_PER, clk_cells); 41 + imx_clk_scu("pwm0_clk", IMX_SC_R_PWM_0, IMX_SC_PM_CLK_PER); 42 + imx_clk_scu("pwm1_clk", IMX_SC_R_PWM_1, IMX_SC_PM_CLK_PER); 43 + imx_clk_scu("pwm2_clk", IMX_SC_R_PWM_2, IMX_SC_PM_CLK_PER); 44 + imx_clk_scu("pwm3_clk", IMX_SC_R_PWM_3, IMX_SC_PM_CLK_PER); 45 + imx_clk_scu("pwm4_clk", IMX_SC_R_PWM_4, IMX_SC_PM_CLK_PER); 46 + imx_clk_scu("pwm5_clk", IMX_SC_R_PWM_5, IMX_SC_PM_CLK_PER); 47 + imx_clk_scu("pwm6_clk", IMX_SC_R_PWM_6, IMX_SC_PM_CLK_PER); 48 + imx_clk_scu("pwm7_clk", IMX_SC_R_PWM_7, IMX_SC_PM_CLK_PER); 49 + imx_clk_scu("gpt0_clk", IMX_SC_R_GPT_0, IMX_SC_PM_CLK_PER); 50 + imx_clk_scu("gpt1_clk", IMX_SC_R_GPT_1, IMX_SC_PM_CLK_PER); 51 + imx_clk_scu("gpt2_clk", IMX_SC_R_GPT_2, IMX_SC_PM_CLK_PER); 52 + imx_clk_scu("gpt3_clk", IMX_SC_R_GPT_3, IMX_SC_PM_CLK_PER); 53 + imx_clk_scu("gpt4_clk", IMX_SC_R_GPT_4, IMX_SC_PM_CLK_PER); 54 + imx_clk_scu("fspi0_clk", IMX_SC_R_FSPI_0, IMX_SC_PM_CLK_PER); 55 + imx_clk_scu("fspi1_clk", IMX_SC_R_FSPI_1, IMX_SC_PM_CLK_PER); 87 56 88 57 /* ADMA SS */ 89 - clks[IMX_ADMA_UART0_CLK] = imx_clk_scu("uart0_clk", IMX_SC_R_UART_0, IMX_SC_PM_CLK_PER, clk_cells); 90 - clks[IMX_ADMA_UART1_CLK] = imx_clk_scu("uart1_clk", IMX_SC_R_UART_1, IMX_SC_PM_CLK_PER, clk_cells); 91 - clks[IMX_ADMA_UART2_CLK] = imx_clk_scu("uart2_clk", IMX_SC_R_UART_2, IMX_SC_PM_CLK_PER, clk_cells); 92 - clks[IMX_ADMA_UART3_CLK] = imx_clk_scu("uart3_clk", IMX_SC_R_UART_3, IMX_SC_PM_CLK_PER, clk_cells); 93 - clks[IMX_ADMA_SPI0_CLK] = imx_clk_scu("spi0_clk", IMX_SC_R_SPI_0, IMX_SC_PM_CLK_PER, clk_cells); 94 - clks[IMX_ADMA_SPI1_CLK] = imx_clk_scu("spi1_clk", IMX_SC_R_SPI_1, IMX_SC_PM_CLK_PER, clk_cells); 95 - clks[IMX_ADMA_SPI2_CLK] = imx_clk_scu("spi2_clk", IMX_SC_R_SPI_2, IMX_SC_PM_CLK_PER, clk_cells); 96 - clks[IMX_ADMA_SPI3_CLK] = imx_clk_scu("spi3_clk", IMX_SC_R_SPI_3, IMX_SC_PM_CLK_PER, clk_cells); 97 - clks[IMX_ADMA_CAN0_CLK] = imx_clk_scu("can0_clk", IMX_SC_R_CAN_0, IMX_SC_PM_CLK_PER, clk_cells); 98 - clks[IMX_ADMA_I2C0_CLK] = imx_clk_scu("i2c0_clk", IMX_SC_R_I2C_0, IMX_SC_PM_CLK_PER, clk_cells); 99 - clks[IMX_ADMA_I2C1_CLK] = imx_clk_scu("i2c1_clk", IMX_SC_R_I2C_1, IMX_SC_PM_CLK_PER, clk_cells); 100 - clks[IMX_ADMA_I2C2_CLK] = imx_clk_scu("i2c2_clk", IMX_SC_R_I2C_2, IMX_SC_PM_CLK_PER, clk_cells); 101 - clks[IMX_ADMA_I2C3_CLK] = imx_clk_scu("i2c3_clk", IMX_SC_R_I2C_3, IMX_SC_PM_CLK_PER, clk_cells); 102 - clks[IMX_ADMA_FTM0_CLK] = imx_clk_scu("ftm0_clk", IMX_SC_R_FTM_0, IMX_SC_PM_CLK_PER, clk_cells); 103 - clks[IMX_ADMA_FTM1_CLK] = imx_clk_scu("ftm1_clk", IMX_SC_R_FTM_1, IMX_SC_PM_CLK_PER, clk_cells); 104 - clks[IMX_ADMA_ADC0_CLK] = imx_clk_scu("adc0_clk", IMX_SC_R_ADC_0, IMX_SC_PM_CLK_PER, clk_cells); 105 - clks[IMX_ADMA_PWM_CLK] = imx_clk_scu("pwm_clk", IMX_SC_R_LCD_0_PWM_0, IMX_SC_PM_CLK_PER, clk_cells); 106 - clks[IMX_ADMA_LCD_CLK] = imx_clk_scu("lcd_clk", IMX_SC_R_LCD_0, IMX_SC_PM_CLK_PER, clk_cells); 58 + imx_clk_scu("uart0_clk", IMX_SC_R_UART_0, IMX_SC_PM_CLK_PER); 59 + imx_clk_scu("uart1_clk", IMX_SC_R_UART_1, IMX_SC_PM_CLK_PER); 60 + imx_clk_scu("uart2_clk", IMX_SC_R_UART_2, IMX_SC_PM_CLK_PER); 61 + imx_clk_scu("uart3_clk", IMX_SC_R_UART_3, IMX_SC_PM_CLK_PER); 62 + imx_clk_scu("spi0_clk", IMX_SC_R_SPI_0, IMX_SC_PM_CLK_PER); 63 + imx_clk_scu("spi1_clk", IMX_SC_R_SPI_1, IMX_SC_PM_CLK_PER); 64 + imx_clk_scu("spi2_clk", IMX_SC_R_SPI_2, IMX_SC_PM_CLK_PER); 65 + imx_clk_scu("spi3_clk", IMX_SC_R_SPI_3, IMX_SC_PM_CLK_PER); 66 + imx_clk_scu("can0_clk", IMX_SC_R_CAN_0, IMX_SC_PM_CLK_PER); 67 + imx_clk_scu("i2c0_clk", IMX_SC_R_I2C_0, IMX_SC_PM_CLK_PER); 68 + imx_clk_scu("i2c1_clk", IMX_SC_R_I2C_1, IMX_SC_PM_CLK_PER); 69 + imx_clk_scu("i2c2_clk", IMX_SC_R_I2C_2, IMX_SC_PM_CLK_PER); 70 + imx_clk_scu("i2c3_clk", IMX_SC_R_I2C_3, IMX_SC_PM_CLK_PER); 71 + imx_clk_scu("ftm0_clk", IMX_SC_R_FTM_0, IMX_SC_PM_CLK_PER); 72 + imx_clk_scu("ftm1_clk", IMX_SC_R_FTM_1, IMX_SC_PM_CLK_PER); 73 + imx_clk_scu("adc0_clk", IMX_SC_R_ADC_0, IMX_SC_PM_CLK_PER); 74 + imx_clk_scu("pwm_clk", IMX_SC_R_LCD_0_PWM_0, IMX_SC_PM_CLK_PER); 75 + imx_clk_scu("lcd_clk", IMX_SC_R_LCD_0, IMX_SC_PM_CLK_PER); 107 76 108 77 /* Connectivity */ 109 - clks[IMX_CONN_SDHC0_CLK] = imx_clk_scu("sdhc0_clk", IMX_SC_R_SDHC_0, IMX_SC_PM_CLK_PER, clk_cells); 110 - clks[IMX_CONN_SDHC1_CLK] = imx_clk_scu("sdhc1_clk", IMX_SC_R_SDHC_1, IMX_SC_PM_CLK_PER, clk_cells); 111 - clks[IMX_CONN_SDHC2_CLK] = imx_clk_scu("sdhc2_clk", IMX_SC_R_SDHC_2, IMX_SC_PM_CLK_PER, clk_cells); 112 - clks[IMX_CONN_ENET0_ROOT_CLK] = imx_clk_scu("enet0_clk", IMX_SC_R_ENET_0, IMX_SC_PM_CLK_PER, clk_cells); 113 - clks[IMX_CONN_ENET0_BYPASS_CLK] = imx_clk_scu("enet0_bypass_clk", IMX_SC_R_ENET_0, IMX_SC_PM_CLK_BYPASS, clk_cells); 114 - clks[IMX_CONN_ENET0_RGMII_CLK] = imx_clk_scu("enet0_rgmii_clk", IMX_SC_R_ENET_0, IMX_SC_PM_CLK_MISC0, clk_cells); 115 - clks[IMX_CONN_ENET1_ROOT_CLK] = imx_clk_scu("enet1_clk", IMX_SC_R_ENET_1, IMX_SC_PM_CLK_PER, clk_cells); 116 - clks[IMX_CONN_ENET1_BYPASS_CLK] = imx_clk_scu("enet1_bypass_clk", IMX_SC_R_ENET_1, IMX_SC_PM_CLK_BYPASS, clk_cells); 117 - clks[IMX_CONN_ENET1_RGMII_CLK] = imx_clk_scu("enet1_rgmii_clk", IMX_SC_R_ENET_1, IMX_SC_PM_CLK_MISC0, clk_cells); 118 - 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); 119 - clks[IMX_CONN_GPMI_BCH_CLK] = imx_clk_scu("gpmi_bch_clk", IMX_SC_R_NAND, IMX_SC_PM_CLK_PER, clk_cells); 120 - clks[IMX_CONN_USB2_ACLK] = imx_clk_scu("usb3_aclk_div", IMX_SC_R_USB_2, IMX_SC_PM_CLK_PER, clk_cells); 121 - 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); 122 - clks[IMX_CONN_USB2_LPM_CLK] = imx_clk_scu("usb3_lpm_div", IMX_SC_R_USB_2, IMX_SC_PM_CLK_MISC, clk_cells); 78 + imx_clk_scu("sdhc0_clk", IMX_SC_R_SDHC_0, IMX_SC_PM_CLK_PER); 79 + imx_clk_scu("sdhc1_clk", IMX_SC_R_SDHC_1, IMX_SC_PM_CLK_PER); 80 + imx_clk_scu("sdhc2_clk", IMX_SC_R_SDHC_2, IMX_SC_PM_CLK_PER); 81 + imx_clk_scu("enet0_clk", IMX_SC_R_ENET_0, IMX_SC_PM_CLK_PER); 82 + imx_clk_scu("enet0_bypass_clk", IMX_SC_R_ENET_0, IMX_SC_PM_CLK_BYPASS); 83 + imx_clk_scu("enet0_rgmii_clk", IMX_SC_R_ENET_0, IMX_SC_PM_CLK_MISC0); 84 + imx_clk_scu("enet1_clk", IMX_SC_R_ENET_1, IMX_SC_PM_CLK_PER); 85 + imx_clk_scu("enet1_bypass_clk", IMX_SC_R_ENET_1, IMX_SC_PM_CLK_BYPASS); 86 + imx_clk_scu("enet1_rgmii_clk", IMX_SC_R_ENET_1, IMX_SC_PM_CLK_MISC0); 87 + imx_clk_scu("gpmi_io_clk", IMX_SC_R_NAND, IMX_SC_PM_CLK_MST_BUS); 88 + imx_clk_scu("gpmi_bch_clk", IMX_SC_R_NAND, IMX_SC_PM_CLK_PER); 89 + imx_clk_scu("usb3_aclk_div", IMX_SC_R_USB_2, IMX_SC_PM_CLK_PER); 90 + imx_clk_scu("usb3_bus_div", IMX_SC_R_USB_2, IMX_SC_PM_CLK_MST_BUS); 91 + imx_clk_scu("usb3_lpm_div", IMX_SC_R_USB_2, IMX_SC_PM_CLK_MISC); 123 92 124 93 /* Display controller SS */ 125 - clks[IMX_DC0_DISP0_CLK] = imx_clk_scu2("dc0_disp0_clk", dc0_sels, ARRAY_SIZE(dc0_sels), IMX_SC_R_DC_0, IMX_SC_PM_CLK_MISC0, clk_cells); 126 - clks[IMX_DC0_DISP1_CLK] = imx_clk_scu2("dc0_disp1_clk", dc0_sels, ARRAY_SIZE(dc0_sels), IMX_SC_R_DC_0, IMX_SC_PM_CLK_MISC1, clk_cells); 127 - clks[IMX_DC0_PLL0_CLK] = imx_clk_scu("dc0_pll0_clk", IMX_SC_R_DC_0_PLL_0, IMX_SC_PM_CLK_PLL, clk_cells); 128 - clks[IMX_DC0_PLL1_CLK] = imx_clk_scu("dc0_pll1_clk", IMX_SC_R_DC_0_PLL_1, IMX_SC_PM_CLK_PLL, clk_cells); 129 - clks[IMX_DC0_BYPASS0_CLK] = imx_clk_scu("dc0_bypass0_clk", IMX_SC_R_DC_0_VIDEO0, IMX_SC_PM_CLK_BYPASS, clk_cells); 130 - clks[IMX_DC0_BYPASS1_CLK] = imx_clk_scu("dc0_bypass1_clk", IMX_SC_R_DC_0_VIDEO1, IMX_SC_PM_CLK_BYPASS, clk_cells); 94 + imx_clk_scu2("dc0_disp0_clk", dc0_sels, ARRAY_SIZE(dc0_sels), IMX_SC_R_DC_0, IMX_SC_PM_CLK_MISC0); 95 + imx_clk_scu2("dc0_disp1_clk", dc0_sels, ARRAY_SIZE(dc0_sels), IMX_SC_R_DC_0, IMX_SC_PM_CLK_MISC1); 96 + imx_clk_scu("dc0_pll0_clk", IMX_SC_R_DC_0_PLL_0, IMX_SC_PM_CLK_PLL); 97 + imx_clk_scu("dc0_pll1_clk", IMX_SC_R_DC_0_PLL_1, IMX_SC_PM_CLK_PLL); 98 + imx_clk_scu("dc0_bypass0_clk", IMX_SC_R_DC_0_VIDEO0, IMX_SC_PM_CLK_BYPASS); 99 + imx_clk_scu("dc0_bypass1_clk", IMX_SC_R_DC_0_VIDEO1, IMX_SC_PM_CLK_BYPASS); 131 100 132 101 /* MIPI-LVDS SS */ 133 - clks[IMX_MIPI0_LVDS_PIXEL_CLK] = imx_clk_scu("mipi0_lvds_pixel_clk", IMX_SC_R_LVDS_0, IMX_SC_PM_CLK_MISC2, clk_cells); 134 - clks[IMX_MIPI0_LVDS_BYPASS_CLK] = imx_clk_scu("mipi0_lvds_bypass_clk", IMX_SC_R_LVDS_0, IMX_SC_PM_CLK_BYPASS, clk_cells); 135 - clks[IMX_MIPI0_LVDS_PHY_CLK] = imx_clk_scu("mipi0_lvds_phy_clk", IMX_SC_R_LVDS_0, IMX_SC_PM_CLK_MISC3, clk_cells); 136 - 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); 137 - 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); 138 - clks[IMX_MIPI0_PWM0_CLK] = imx_clk_scu("mipi0_pwm0_clk", IMX_SC_R_MIPI_0_PWM_0, IMX_SC_PM_CLK_PER, clk_cells); 139 - clks[IMX_MIPI1_LVDS_PIXEL_CLK] = imx_clk_scu("mipi1_lvds_pixel_clk", IMX_SC_R_LVDS_1, IMX_SC_PM_CLK_MISC2, clk_cells); 140 - clks[IMX_MIPI1_LVDS_BYPASS_CLK] = imx_clk_scu("mipi1_lvds_bypass_clk", IMX_SC_R_LVDS_1, IMX_SC_PM_CLK_BYPASS, clk_cells); 141 - clks[IMX_MIPI1_LVDS_PHY_CLK] = imx_clk_scu("mipi1_lvds_phy_clk", IMX_SC_R_LVDS_1, IMX_SC_PM_CLK_MISC3, clk_cells); 142 - clks[IMX_MIPI1_I2C0_CLK] = imx_clk_scu("mipi1_i2c0_clk", IMX_SC_R_MIPI_1_I2C_0, IMX_SC_PM_CLK_MISC2, clk_cells); 143 - clks[IMX_MIPI1_I2C1_CLK] = imx_clk_scu("mipi1_i2c1_clk", IMX_SC_R_MIPI_1_I2C_1, IMX_SC_PM_CLK_MISC2, clk_cells); 144 - clks[IMX_MIPI1_PWM0_CLK] = imx_clk_scu("mipi1_pwm0_clk", IMX_SC_R_MIPI_1_PWM_0, IMX_SC_PM_CLK_PER, clk_cells); 102 + imx_clk_scu("mipi0_lvds_pixel_clk", IMX_SC_R_LVDS_0, IMX_SC_PM_CLK_MISC2); 103 + imx_clk_scu("mipi0_lvds_bypass_clk", IMX_SC_R_LVDS_0, IMX_SC_PM_CLK_BYPASS); 104 + imx_clk_scu("mipi0_lvds_phy_clk", IMX_SC_R_LVDS_0, IMX_SC_PM_CLK_MISC3); 105 + imx_clk_scu("mipi0_i2c0_clk", IMX_SC_R_MIPI_0_I2C_0, IMX_SC_PM_CLK_MISC2); 106 + imx_clk_scu("mipi0_i2c1_clk", IMX_SC_R_MIPI_0_I2C_1, IMX_SC_PM_CLK_MISC2); 107 + imx_clk_scu("mipi0_pwm0_clk", IMX_SC_R_MIPI_0_PWM_0, IMX_SC_PM_CLK_PER); 108 + imx_clk_scu("mipi1_lvds_pixel_clk", IMX_SC_R_LVDS_1, IMX_SC_PM_CLK_MISC2); 109 + imx_clk_scu("mipi1_lvds_bypass_clk", IMX_SC_R_LVDS_1, IMX_SC_PM_CLK_BYPASS); 110 + imx_clk_scu("mipi1_lvds_phy_clk", IMX_SC_R_LVDS_1, IMX_SC_PM_CLK_MISC3); 111 + imx_clk_scu("mipi1_i2c0_clk", IMX_SC_R_MIPI_1_I2C_0, IMX_SC_PM_CLK_MISC2); 112 + imx_clk_scu("mipi1_i2c1_clk", IMX_SC_R_MIPI_1_I2C_1, IMX_SC_PM_CLK_MISC2); 113 + imx_clk_scu("mipi1_pwm0_clk", IMX_SC_R_MIPI_1_PWM_0, IMX_SC_PM_CLK_PER); 145 114 146 115 /* MIPI CSI SS */ 147 - clks[IMX_CSI0_CORE_CLK] = imx_clk_scu("mipi_csi0_core_clk", IMX_SC_R_CSI_0, IMX_SC_PM_CLK_PER, clk_cells); 148 - clks[IMX_CSI0_ESC_CLK] = imx_clk_scu("mipi_csi0_esc_clk", IMX_SC_R_CSI_0, IMX_SC_PM_CLK_MISC, clk_cells); 149 - 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); 150 - 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); 116 + imx_clk_scu("mipi_csi0_core_clk", IMX_SC_R_CSI_0, IMX_SC_PM_CLK_PER); 117 + imx_clk_scu("mipi_csi0_esc_clk", IMX_SC_R_CSI_0, IMX_SC_PM_CLK_MISC); 118 + imx_clk_scu("mipi_csi0_i2c0_clk", IMX_SC_R_CSI_0_I2C_0, IMX_SC_PM_CLK_PER); 119 + imx_clk_scu("mipi_csi0_pwm0_clk", IMX_SC_R_CSI_0_PWM_0, IMX_SC_PM_CLK_PER); 151 120 152 121 /* GPU SS */ 153 - clks[IMX_GPU0_CORE_CLK] = imx_clk_scu("gpu_core0_clk", IMX_SC_R_GPU_0_PID0, IMX_SC_PM_CLK_PER, clk_cells); 154 - clks[IMX_GPU0_SHADER_CLK] = imx_clk_scu("gpu_shader0_clk", IMX_SC_R_GPU_0_PID0, IMX_SC_PM_CLK_MISC, clk_cells); 122 + imx_clk_scu("gpu_core0_clk", IMX_SC_R_GPU_0_PID0, IMX_SC_PM_CLK_PER); 123 + imx_clk_scu("gpu_shader0_clk", IMX_SC_R_GPU_0_PID0, IMX_SC_PM_CLK_MISC); 155 124 156 - for (i = 0; i < clk_data->num; i++) { 157 - if (IS_ERR(clks[i])) 158 - pr_warn("i.MX clk %u: register failed with %ld\n", 159 - i, PTR_ERR(clks[i])); 160 - } 161 - 162 - if (clk_cells == 2) { 163 - ret = of_clk_add_hw_provider(ccm_node, imx_scu_of_clk_src_get, imx_scu_clks); 164 - if (ret) 165 - imx_clk_scu_unregister(); 166 - } else { 167 - /* 168 - * legacy binding code path doesn't unregister here because 169 - * it will be removed later. 170 - */ 171 - ret = of_clk_add_hw_provider(ccm_node, of_clk_hw_onecell_get, clk_data); 172 - } 125 + ret = of_clk_add_hw_provider(ccm_node, imx_scu_of_clk_src_get, imx_scu_clks); 126 + if (ret) 127 + imx_clk_scu_unregister(); 173 128 174 129 return ret; 175 130 }
+4 -11
drivers/clk/imx/clk-scu.h
··· 32 32 void imx_clk_lpcg_scu_unregister(struct clk_hw *hw); 33 33 34 34 static inline struct clk_hw *imx_clk_scu(const char *name, u32 rsrc_id, 35 - u8 clk_type, u8 clk_cells) 35 + u8 clk_type) 36 36 { 37 - if (clk_cells == 2) 38 - return imx_clk_scu_alloc_dev(name, NULL, 0, rsrc_id, clk_type); 39 - else 40 - return __imx_clk_scu(NULL, name, NULL, 0, rsrc_id, clk_type); 37 + return imx_clk_scu_alloc_dev(name, NULL, 0, rsrc_id, clk_type); 41 38 } 42 39 43 40 static inline struct clk_hw *imx_clk_scu2(const char *name, const char * const *parents, 44 - int num_parents, u32 rsrc_id, u8 clk_type, 45 - u8 clk_cells) 41 + int num_parents, u32 rsrc_id, u8 clk_type) 46 42 { 47 - if (clk_cells == 2) 48 - return imx_clk_scu_alloc_dev(name, parents, num_parents, rsrc_id, clk_type); 49 - else 50 - return __imx_clk_scu(NULL, name, parents, num_parents, rsrc_id, clk_type); 43 + return imx_clk_scu_alloc_dev(name, parents, num_parents, rsrc_id, clk_type); 51 44 } 52 45 53 46 static inline struct clk_hw *imx_clk_lpcg_scu_dev(struct device *dev, const char *name,
-128
include/dt-bindings/clock/imx8-clock.h
··· 7 7 #ifndef __DT_BINDINGS_CLOCK_IMX_H 8 8 #define __DT_BINDINGS_CLOCK_IMX_H 9 9 10 - /* SCU Clocks */ 11 - 12 - #define IMX_CLK_DUMMY 0 13 - 14 - /* CPU */ 15 - #define IMX_A35_CLK 1 16 - 17 - /* LSIO SS */ 18 - #define IMX_LSIO_MEM_CLK 2 19 - #define IMX_LSIO_BUS_CLK 3 20 - #define IMX_LSIO_PWM0_CLK 10 21 - #define IMX_LSIO_PWM1_CLK 11 22 - #define IMX_LSIO_PWM2_CLK 12 23 - #define IMX_LSIO_PWM3_CLK 13 24 - #define IMX_LSIO_PWM4_CLK 14 25 - #define IMX_LSIO_PWM5_CLK 15 26 - #define IMX_LSIO_PWM6_CLK 16 27 - #define IMX_LSIO_PWM7_CLK 17 28 - #define IMX_LSIO_GPT0_CLK 18 29 - #define IMX_LSIO_GPT1_CLK 19 30 - #define IMX_LSIO_GPT2_CLK 20 31 - #define IMX_LSIO_GPT3_CLK 21 32 - #define IMX_LSIO_GPT4_CLK 22 33 - #define IMX_LSIO_FSPI0_CLK 23 34 - #define IMX_LSIO_FSPI1_CLK 24 35 - 36 - /* Connectivity SS */ 37 - #define IMX_CONN_AXI_CLK_ROOT 30 38 - #define IMX_CONN_AHB_CLK_ROOT 31 39 - #define IMX_CONN_IPG_CLK_ROOT 32 40 - #define IMX_CONN_SDHC0_CLK 40 41 - #define IMX_CONN_SDHC1_CLK 41 42 - #define IMX_CONN_SDHC2_CLK 42 43 - #define IMX_CONN_ENET0_ROOT_CLK 43 44 - #define IMX_CONN_ENET0_BYPASS_CLK 44 45 - #define IMX_CONN_ENET0_RGMII_CLK 45 46 - #define IMX_CONN_ENET1_ROOT_CLK 46 47 - #define IMX_CONN_ENET1_BYPASS_CLK 47 48 - #define IMX_CONN_ENET1_RGMII_CLK 48 49 - #define IMX_CONN_GPMI_BCH_IO_CLK 49 50 - #define IMX_CONN_GPMI_BCH_CLK 50 51 - #define IMX_CONN_USB2_ACLK 51 52 - #define IMX_CONN_USB2_BUS_CLK 52 53 - #define IMX_CONN_USB2_LPM_CLK 53 54 - 55 - /* HSIO SS */ 56 - #define IMX_HSIO_AXI_CLK 60 57 - #define IMX_HSIO_PER_CLK 61 58 - 59 - /* Display controller SS */ 60 - #define IMX_DC_AXI_EXT_CLK 70 61 - #define IMX_DC_AXI_INT_CLK 71 62 - #define IMX_DC_CFG_CLK 72 63 - #define IMX_DC0_PLL0_CLK 80 64 - #define IMX_DC0_PLL1_CLK 81 65 - #define IMX_DC0_DISP0_CLK 82 66 - #define IMX_DC0_DISP1_CLK 83 67 - #define IMX_DC0_BYPASS0_CLK 84 68 - #define IMX_DC0_BYPASS1_CLK 85 69 - 70 - /* MIPI-LVDS SS */ 71 - #define IMX_MIPI_IPG_CLK 90 72 - #define IMX_MIPI0_PIXEL_CLK 100 73 - #define IMX_MIPI0_BYPASS_CLK 101 74 - #define IMX_MIPI0_LVDS_PIXEL_CLK 102 75 - #define IMX_MIPI0_LVDS_BYPASS_CLK 103 76 - #define IMX_MIPI0_LVDS_PHY_CLK 104 77 - #define IMX_MIPI0_I2C0_CLK 105 78 - #define IMX_MIPI0_I2C1_CLK 106 79 - #define IMX_MIPI0_PWM0_CLK 107 80 - #define IMX_MIPI1_PIXEL_CLK 108 81 - #define IMX_MIPI1_BYPASS_CLK 109 82 - #define IMX_MIPI1_LVDS_PIXEL_CLK 110 83 - #define IMX_MIPI1_LVDS_BYPASS_CLK 111 84 - #define IMX_MIPI1_LVDS_PHY_CLK 112 85 - #define IMX_MIPI1_I2C0_CLK 113 86 - #define IMX_MIPI1_I2C1_CLK 114 87 - #define IMX_MIPI1_PWM0_CLK 115 88 - 89 - /* IMG SS */ 90 - #define IMX_IMG_AXI_CLK 120 91 - #define IMX_IMG_IPG_CLK 121 92 - #define IMX_IMG_PXL_CLK 122 93 - 94 - /* MIPI-CSI SS */ 95 - #define IMX_CSI0_CORE_CLK 130 96 - #define IMX_CSI0_ESC_CLK 131 97 - #define IMX_CSI0_PWM0_CLK 132 98 - #define IMX_CSI0_I2C0_CLK 133 99 - 100 - /* PARALLER CSI SS */ 101 - #define IMX_PARALLEL_CSI_DPLL_CLK 140 102 - #define IMX_PARALLEL_CSI_PIXEL_CLK 141 103 - #define IMX_PARALLEL_CSI_MCLK_CLK 142 104 - 105 - /* VPU SS */ 106 - #define IMX_VPU_ENC_CLK 150 107 - #define IMX_VPU_DEC_CLK 151 108 - 109 - /* GPU SS */ 110 - #define IMX_GPU0_CORE_CLK 160 111 - #define IMX_GPU0_SHADER_CLK 161 112 - 113 - /* ADMA SS */ 114 - #define IMX_ADMA_IPG_CLK_ROOT 165 115 - #define IMX_ADMA_UART0_CLK 170 116 - #define IMX_ADMA_UART1_CLK 171 117 - #define IMX_ADMA_UART2_CLK 172 118 - #define IMX_ADMA_UART3_CLK 173 119 - #define IMX_ADMA_SPI0_CLK 174 120 - #define IMX_ADMA_SPI1_CLK 175 121 - #define IMX_ADMA_SPI2_CLK 176 122 - #define IMX_ADMA_SPI3_CLK 177 123 - #define IMX_ADMA_CAN0_CLK 178 124 - #define IMX_ADMA_CAN1_CLK 179 125 - #define IMX_ADMA_CAN2_CLK 180 126 - #define IMX_ADMA_I2C0_CLK 181 127 - #define IMX_ADMA_I2C1_CLK 182 128 - #define IMX_ADMA_I2C2_CLK 183 129 - #define IMX_ADMA_I2C3_CLK 184 130 - #define IMX_ADMA_FTM0_CLK 185 131 - #define IMX_ADMA_FTM1_CLK 186 132 - #define IMX_ADMA_ADC0_CLK 187 133 - #define IMX_ADMA_PWM_CLK 188 134 - #define IMX_ADMA_LCD_CLK 189 135 - 136 - #define IMX_SCU_CLK_END 190 137 - 138 10 /* LPCG clocks */ 139 11 140 12 /* LSIO SS LPCG */