All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/clk/imx/clk-imx8ulp.c:71 imx8ulp_clk_cgc1_init() warn: passing zero to 'PTR_ERR'
@ 2021-11-27 16:21 kernel test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2021-11-27 16:21 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 31068 bytes --]

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Jacky Bai <ping.bai@nxp.com>
CC: Abel Vesa <abel.vesa@nxp.com>
CC: Peng Fan <peng.fan@nxp.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   c5c17547b778975b3d83a73c8d84e8fb5ecf3ba5
commit: c43a801a57890b15e16a0502edf145d59c91baf7 clk: imx: Add clock driver for imx8ulp
date:   8 weeks ago
:::::: branch date: 19 hours ago
:::::: commit date: 8 weeks ago
config: powerpc-randconfig-m031-20211101 (https://download.01.org/0day-ci/archive/20211128/202111280047.1v4Y1dhf-lkp(a)intel.com/config)
compiler: powerpc-linux-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/clk/imx/clk-imx8ulp.c:71 imx8ulp_clk_cgc1_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:153 imx8ulp_clk_cgc2_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:236 imx8ulp_clk_pcc3_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:315 imx8ulp_clk_pcc4_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:363 imx8ulp_clk_pcc5_init() warn: passing zero to 'PTR_ERR'

vim +/PTR_ERR +71 drivers/clk/imx/clk-imx8ulp.c

c43a801a57890b Jacky Bai 2021-09-14   50  
c43a801a57890b Jacky Bai 2021-09-14   51  static int imx8ulp_clk_cgc1_init(struct platform_device *pdev)
c43a801a57890b Jacky Bai 2021-09-14   52  {
c43a801a57890b Jacky Bai 2021-09-14   53  	struct device *dev = &pdev->dev;
c43a801a57890b Jacky Bai 2021-09-14   54  	struct clk_hw_onecell_data *clk_data;
c43a801a57890b Jacky Bai 2021-09-14   55  	struct clk_hw **clks;
c43a801a57890b Jacky Bai 2021-09-14   56  	void __iomem *base;
c43a801a57890b Jacky Bai 2021-09-14   57  
c43a801a57890b Jacky Bai 2021-09-14   58  	clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, IMX8ULP_CLK_CGC1_END),
c43a801a57890b Jacky Bai 2021-09-14   59  			   GFP_KERNEL);
c43a801a57890b Jacky Bai 2021-09-14   60  	if (!clk_data)
c43a801a57890b Jacky Bai 2021-09-14   61  		return -ENOMEM;
c43a801a57890b Jacky Bai 2021-09-14   62  
c43a801a57890b Jacky Bai 2021-09-14   63  	clk_data->num = IMX8ULP_CLK_CGC1_END;
c43a801a57890b Jacky Bai 2021-09-14   64  	clks = clk_data->hws;
c43a801a57890b Jacky Bai 2021-09-14   65  
c43a801a57890b Jacky Bai 2021-09-14   66  	clks[IMX8ULP_CLK_DUMMY] = imx_clk_hw_fixed("dummy", 0);
c43a801a57890b Jacky Bai 2021-09-14   67  
c43a801a57890b Jacky Bai 2021-09-14   68  	/* CGC1 */
c43a801a57890b Jacky Bai 2021-09-14   69  	base = devm_platform_ioremap_resource(pdev, 0);
c43a801a57890b Jacky Bai 2021-09-14   70  	if (WARN_ON(IS_ERR(base)))
c43a801a57890b Jacky Bai 2021-09-14  @71  		return PTR_ERR(base);
c43a801a57890b Jacky Bai 2021-09-14   72  
c43a801a57890b Jacky Bai 2021-09-14   73  	clks[IMX8ULP_CLK_SPLL2_PRE_SEL]	= imx_clk_hw_mux_flags("spll2_pre_sel", base + 0x510, 0, 1, pll_pre_sels, ARRAY_SIZE(pll_pre_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14   74  	clks[IMX8ULP_CLK_SPLL3_PRE_SEL]	= imx_clk_hw_mux_flags("spll3_pre_sel", base + 0x610, 0, 1, pll_pre_sels, ARRAY_SIZE(pll_pre_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14   75  
c43a801a57890b Jacky Bai 2021-09-14   76  	clks[IMX8ULP_CLK_SPLL2] = imx_clk_hw_pllv4(IMX_PLLV4_IMX8ULP, "spll2", "spll2_pre_sel", base + 0x500);
c43a801a57890b Jacky Bai 2021-09-14   77  	clks[IMX8ULP_CLK_SPLL3] = imx_clk_hw_pllv4(IMX_PLLV4_IMX8ULP, "spll3", "spll3_pre_sel", base + 0x600);
c43a801a57890b Jacky Bai 2021-09-14   78  	clks[IMX8ULP_CLK_SPLL3_VCODIV] = imx_clk_hw_divider("spll3_vcodiv", "spll3", base + 0x604, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14   79  
c43a801a57890b Jacky Bai 2021-09-14   80  	clks[IMX8ULP_CLK_SPLL3_PFD0] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd0", "spll3_vcodiv", base + 0x614, 0);
c43a801a57890b Jacky Bai 2021-09-14   81  	clks[IMX8ULP_CLK_SPLL3_PFD1] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd1", "spll3_vcodiv", base + 0x614, 1);
c43a801a57890b Jacky Bai 2021-09-14   82  	clks[IMX8ULP_CLK_SPLL3_PFD2] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd2", "spll3_vcodiv", base + 0x614, 2);
c43a801a57890b Jacky Bai 2021-09-14   83  	clks[IMX8ULP_CLK_SPLL3_PFD3] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd3", "spll3_vcodiv", base + 0x614, 3);
c43a801a57890b Jacky Bai 2021-09-14   84  
c43a801a57890b Jacky Bai 2021-09-14   85  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd0_div1_gate", "spll3_pfd0", base + 0x608, 7);
c43a801a57890b Jacky Bai 2021-09-14   86  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd0_div2_gate", "spll3_pfd0", base + 0x608, 15);
c43a801a57890b Jacky Bai 2021-09-14   87  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd1_div1_gate", "spll3_pfd1", base + 0x608, 23);
c43a801a57890b Jacky Bai 2021-09-14   88  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd1_div2_gate", "spll3_pfd1", base + 0x608, 31);
c43a801a57890b Jacky Bai 2021-09-14   89  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd2_div1_gate", "spll3_pfd2", base + 0x60c, 7);
c43a801a57890b Jacky Bai 2021-09-14   90  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd2_div2_gate", "spll3_pfd2", base + 0x60c, 15);
c43a801a57890b Jacky Bai 2021-09-14   91  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd3_div1_gate", "spll3_pfd3", base + 0x60c, 23);
c43a801a57890b Jacky Bai 2021-09-14   92  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd3_div2_gate", "spll3_pfd3", base + 0x60c, 31);
c43a801a57890b Jacky Bai 2021-09-14   93  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV1] = imx_clk_hw_divider("spll3_pfd0_div1", "spll3_pfd0_div1_gate", base + 0x608, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14   94  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV2] = imx_clk_hw_divider("spll3_pfd0_div2", "spll3_pfd0_div2_gate", base + 0x608, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14   95  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV1] = imx_clk_hw_divider("spll3_pfd1_div1", "spll3_pfd1_div1_gate", base + 0x608, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14   96  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV2] = imx_clk_hw_divider("spll3_pfd1_div2", "spll3_pfd1_div2_gate", base + 0x608, 24, 6);
c43a801a57890b Jacky Bai 2021-09-14   97  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV1] = imx_clk_hw_divider("spll3_pfd2_div1", "spll3_pfd2_div1_gate", base + 0x60c, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14   98  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV2] = imx_clk_hw_divider("spll3_pfd2_div2", "spll3_pfd2_div2_gate", base + 0x60c, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14   99  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV1] = imx_clk_hw_divider("spll3_pfd3_div1", "spll3_pfd3_div1_gate", base + 0x60c, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  100  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV2] = imx_clk_hw_divider("spll3_pfd3_div2", "spll3_pfd3_div2_gate", base + 0x60c, 24, 6);
c43a801a57890b Jacky Bai 2021-09-14  101  
c43a801a57890b Jacky Bai 2021-09-14  102  	clks[IMX8ULP_CLK_A35_SEL] = imx_clk_hw_mux2("a35_sel", base + 0x14, 28, 2, a35_sels, ARRAY_SIZE(a35_sels));
c43a801a57890b Jacky Bai 2021-09-14  103  	clks[IMX8ULP_CLK_A35_DIV] = imx_clk_hw_divider_flags("a35_div", "a35_sel", base + 0x14, 21, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  104  
c43a801a57890b Jacky Bai 2021-09-14  105  	clks[IMX8ULP_CLK_NIC_SEL] = imx_clk_hw_mux2("nic_sel", base + 0x34, 28, 2, nic_sels, ARRAY_SIZE(nic_sels));
c43a801a57890b Jacky Bai 2021-09-14  106  	clks[IMX8ULP_CLK_NIC_AD_DIVPLAT] = imx_clk_hw_divider_flags("nic_ad_divplat", "nic_sel", base + 0x34, 21, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  107  	clks[IMX8ULP_CLK_NIC_PER_DIVPLAT] = imx_clk_hw_divider_flags("nic_per_divplat", "nic_ad_divplat", base + 0x34, 14, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  108  	clks[IMX8ULP_CLK_XBAR_AD_DIVPLAT] = imx_clk_hw_divider_flags("xbar_ad_divplat", "nic_ad_divplat", base + 0x38, 14, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  109  	clks[IMX8ULP_CLK_XBAR_DIVBUS] = imx_clk_hw_divider_flags("xbar_divbus", "nic_ad_divplat", base + 0x38, 7, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  110  	clks[IMX8ULP_CLK_XBAR_AD_SLOW] = imx_clk_hw_divider_flags("xbar_ad_slow", "nic_ad_divplat", base + 0x38, 0, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  111  
c43a801a57890b Jacky Bai 2021-09-14  112  	clks[IMX8ULP_CLK_SOSC_DIV1_GATE] = imx_clk_hw_gate_dis("sosc_div1_gate", "sosc", base + 0x108, 7);
c43a801a57890b Jacky Bai 2021-09-14  113  	clks[IMX8ULP_CLK_SOSC_DIV2_GATE] = imx_clk_hw_gate_dis("sosc_div2_gate", "sosc", base + 0x108, 15);
c43a801a57890b Jacky Bai 2021-09-14  114  	clks[IMX8ULP_CLK_SOSC_DIV3_GATE] = imx_clk_hw_gate_dis("sosc_div3_gate", "sosc", base + 0x108, 23);
c43a801a57890b Jacky Bai 2021-09-14  115  	clks[IMX8ULP_CLK_SOSC_DIV1] = imx_clk_hw_divider("sosc_div1", "sosc_div1_gate", base + 0x108, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  116  	clks[IMX8ULP_CLK_SOSC_DIV2] = imx_clk_hw_divider("sosc_div2", "sosc_div2_gate", base + 0x108, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  117  	clks[IMX8ULP_CLK_SOSC_DIV3] = imx_clk_hw_divider("sosc_div3", "sosc_div3_gate", base + 0x108, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  118  
c43a801a57890b Jacky Bai 2021-09-14  119  	clks[IMX8ULP_CLK_FROSC_DIV1_GATE] = imx_clk_hw_gate_dis("frosc_div1_gate", "frosc", base + 0x208, 7);
c43a801a57890b Jacky Bai 2021-09-14  120  	clks[IMX8ULP_CLK_FROSC_DIV2_GATE] = imx_clk_hw_gate_dis("frosc_div2_gate", "frosc", base + 0x208, 15);
c43a801a57890b Jacky Bai 2021-09-14  121  	clks[IMX8ULP_CLK_FROSC_DIV3_GATE] = imx_clk_hw_gate_dis("frosc_div3_gate", "frosc", base + 0x208, 23);
c43a801a57890b Jacky Bai 2021-09-14  122  	clks[IMX8ULP_CLK_FROSC_DIV1] = imx_clk_hw_divider("frosc_div1", "frosc_div1_gate", base + 0x208, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  123  	clks[IMX8ULP_CLK_FROSC_DIV2] = imx_clk_hw_divider("frosc_div2", "frosc_div2_gate", base + 0x208, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  124  	clks[IMX8ULP_CLK_FROSC_DIV3] = imx_clk_hw_divider("frosc_div3", "frosc_div3_gate", base + 0x208, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  125  	clks[IMX8ULP_CLK_AUD_CLK1] = imx_clk_hw_mux2("aud_clk1", base + 0x900, 0, 3, aud_clk1_sels, ARRAY_SIZE(aud_clk1_sels));
c43a801a57890b Jacky Bai 2021-09-14  126  	clks[IMX8ULP_CLK_SAI4_SEL] = imx_clk_hw_mux2("sai4_sel", base + 0x904, 0, 2, sai45_sels, ARRAY_SIZE(sai45_sels));
c43a801a57890b Jacky Bai 2021-09-14  127  	clks[IMX8ULP_CLK_SAI5_SEL] = imx_clk_hw_mux2("sai5_sel", base + 0x904, 8, 2, sai45_sels, ARRAY_SIZE(sai45_sels));
c43a801a57890b Jacky Bai 2021-09-14  128  	clks[IMX8ULP_CLK_ENET_TS_SEL] = imx_clk_hw_mux2("enet_ts", base + 0x700, 24, 3, enet_ts_sels, ARRAY_SIZE(enet_ts_sels));
c43a801a57890b Jacky Bai 2021-09-14  129  
c43a801a57890b Jacky Bai 2021-09-14  130  	imx_check_clk_hws(clks, clk_data->num);
c43a801a57890b Jacky Bai 2021-09-14  131  
c43a801a57890b Jacky Bai 2021-09-14  132  	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data);
c43a801a57890b Jacky Bai 2021-09-14  133  }
c43a801a57890b Jacky Bai 2021-09-14  134  
c43a801a57890b Jacky Bai 2021-09-14  135  static int imx8ulp_clk_cgc2_init(struct platform_device *pdev)
c43a801a57890b Jacky Bai 2021-09-14  136  {
c43a801a57890b Jacky Bai 2021-09-14  137  	struct device *dev = &pdev->dev;
c43a801a57890b Jacky Bai 2021-09-14  138  	struct clk_hw_onecell_data *clk_data;
c43a801a57890b Jacky Bai 2021-09-14  139  	struct clk_hw **clks;
c43a801a57890b Jacky Bai 2021-09-14  140  	void __iomem *base;
c43a801a57890b Jacky Bai 2021-09-14  141  
c43a801a57890b Jacky Bai 2021-09-14  142  	clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, IMX8ULP_CLK_CGC2_END),
c43a801a57890b Jacky Bai 2021-09-14  143  			   GFP_KERNEL);
c43a801a57890b Jacky Bai 2021-09-14  144  	if (!clk_data)
c43a801a57890b Jacky Bai 2021-09-14  145  		return -ENOMEM;
c43a801a57890b Jacky Bai 2021-09-14  146  
c43a801a57890b Jacky Bai 2021-09-14  147  	clk_data->num = IMX8ULP_CLK_CGC2_END;
c43a801a57890b Jacky Bai 2021-09-14  148  	clks = clk_data->hws;
c43a801a57890b Jacky Bai 2021-09-14  149  
c43a801a57890b Jacky Bai 2021-09-14  150  	/* CGC2 */
c43a801a57890b Jacky Bai 2021-09-14  151  	base = devm_platform_ioremap_resource(pdev, 0);
c43a801a57890b Jacky Bai 2021-09-14  152  	if (WARN_ON(IS_ERR(base)))
c43a801a57890b Jacky Bai 2021-09-14 @153  		return PTR_ERR(base);
c43a801a57890b Jacky Bai 2021-09-14  154  
c43a801a57890b Jacky Bai 2021-09-14  155  	clks[IMX8ULP_CLK_PLL4_PRE_SEL] = imx_clk_hw_mux_flags("pll4_pre_sel", base + 0x610, 0, 1, pll_pre_sels, ARRAY_SIZE(pll_pre_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14  156  
c43a801a57890b Jacky Bai 2021-09-14  157  	clks[IMX8ULP_CLK_PLL4]	= imx_clk_hw_pllv4(IMX_PLLV4_IMX8ULP, "pll4", "pll4_pre_sel", base + 0x600);
c43a801a57890b Jacky Bai 2021-09-14  158  	clks[IMX8ULP_CLK_PLL4_VCODIV] = imx_clk_hw_divider("pll4_vcodiv", "pll4", base + 0x604, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  159  
c43a801a57890b Jacky Bai 2021-09-14  160  	clks[IMX8ULP_CLK_HIFI_SEL] = imx_clk_hw_mux_flags("hifi_sel", base + 0x14, 28, 3, hifi_sels, ARRAY_SIZE(hifi_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14  161  	clks[IMX8ULP_CLK_HIFI_DIVCORE] = imx_clk_hw_divider("hifi_core_div", "hifi_sel", base + 0x14, 21, 6);
c43a801a57890b Jacky Bai 2021-09-14  162  	clks[IMX8ULP_CLK_HIFI_DIVPLAT] = imx_clk_hw_divider("hifi_plat_div", "hifi_core_div", base + 0x14, 14, 6);
c43a801a57890b Jacky Bai 2021-09-14  163  
c43a801a57890b Jacky Bai 2021-09-14  164  	clks[IMX8ULP_CLK_DDR_SEL] = imx_clk_hw_mux_flags("ddr_sel", base + 0x40, 28, 3, ddr_sels, ARRAY_SIZE(ddr_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14  165  	clks[IMX8ULP_CLK_DDR_DIV] = imx_clk_hw_divider_flags("ddr_div", "ddr_sel", base + 0x40, 21, 6, CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  166  	clks[IMX8ULP_CLK_LPAV_AXI_SEL] = imx_clk_hw_mux("lpav_sel", base + 0x3c, 28, 2, lpav_sels, ARRAY_SIZE(lpav_sels));
c43a801a57890b Jacky Bai 2021-09-14  167  	clks[IMX8ULP_CLK_LPAV_AXI_DIV] = imx_clk_hw_divider_flags("lpav_axi_div", "lpav_sel", base + 0x3c, 21, 6, CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  168  	clks[IMX8ULP_CLK_LPAV_AHB_DIV] = imx_clk_hw_divider_flags("lpav_ahb_div", "lpav_axi_div", base + 0x3c, 14, 6, CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  169  	clks[IMX8ULP_CLK_LPAV_BUS_DIV] = imx_clk_hw_divider_flags("lpav_bus_div", "lpav_axi_div", base + 0x3c, 7, 6, CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  170  
c43a801a57890b Jacky Bai 2021-09-14  171  	clks[IMX8ULP_CLK_PLL4_PFD0] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd0", "pll4_vcodiv", base + 0x614, 0);
c43a801a57890b Jacky Bai 2021-09-14  172  	clks[IMX8ULP_CLK_PLL4_PFD1] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd1", "pll4_vcodiv", base + 0x614, 1);
c43a801a57890b Jacky Bai 2021-09-14  173  	clks[IMX8ULP_CLK_PLL4_PFD2] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd2", "pll4_vcodiv", base + 0x614, 2);
c43a801a57890b Jacky Bai 2021-09-14  174  	clks[IMX8ULP_CLK_PLL4_PFD3] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd3", "pll4_vcodiv", base + 0x614, 3);
c43a801a57890b Jacky Bai 2021-09-14  175  
c43a801a57890b Jacky Bai 2021-09-14  176  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd0_div1_gate", "pll4_pfd0", base + 0x608, 7);
c43a801a57890b Jacky Bai 2021-09-14  177  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd0_div2_gate", "pll4_pfd0", base + 0x608, 15);
c43a801a57890b Jacky Bai 2021-09-14  178  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd1_div1_gate", "pll4_pfd1", base + 0x608, 23);
c43a801a57890b Jacky Bai 2021-09-14  179  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd1_div2_gate", "pll4_pfd1", base + 0x608, 31);
c43a801a57890b Jacky Bai 2021-09-14  180  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd2_div1_gate", "pll4_pfd2", base + 0x60c, 7);
c43a801a57890b Jacky Bai 2021-09-14  181  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd2_div2_gate", "pll4_pfd2", base + 0x60c, 15);
c43a801a57890b Jacky Bai 2021-09-14  182  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd3_div1_gate", "pll4_pfd3", base + 0x60c, 23);
c43a801a57890b Jacky Bai 2021-09-14  183  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd3_div2_gate", "pll4_pfd3", base + 0x60c, 31);
c43a801a57890b Jacky Bai 2021-09-14  184  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV1] = imx_clk_hw_divider("pll4_pfd0_div1", "pll4_pfd0_div1_gate", base + 0x608, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  185  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV2] = imx_clk_hw_divider("pll4_pfd0_div2", "pll4_pfd0_div2_gate", base + 0x608, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  186  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV1] = imx_clk_hw_divider("pll4_pfd1_div1", "pll4_pfd1_div1_gate", base + 0x608, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  187  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV2] = imx_clk_hw_divider("pll4_pfd1_div2", "pll4_pfd1_div2_gate", base + 0x608, 24, 6);
c43a801a57890b Jacky Bai 2021-09-14  188  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV1] = imx_clk_hw_divider("pll4_pfd2_div1", "pll4_pfd2_div1_gate", base + 0x60c, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  189  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV2] = imx_clk_hw_divider("pll4_pfd2_div2", "pll4_pfd2_div2_gate", base + 0x60c, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  190  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV1] = imx_clk_hw_divider("pll4_pfd3_div1", "pll4_pfd3_div1_gate", base + 0x60c, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  191  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV2] = imx_clk_hw_divider("pll4_pfd3_div2", "pll4_pfd3_div2_gate", base + 0x60c, 24, 6);
c43a801a57890b Jacky Bai 2021-09-14  192  
c43a801a57890b Jacky Bai 2021-09-14  193  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV1_GATE] = imx_clk_hw_gate_dis("cgc2_sosc_div1_gate", "sosc", base + 0x108, 7);
c43a801a57890b Jacky Bai 2021-09-14  194  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV2_GATE] = imx_clk_hw_gate_dis("cgc2_sosc_div2_gate", "sosc", base + 0x108, 15);
c43a801a57890b Jacky Bai 2021-09-14  195  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV3_GATE] = imx_clk_hw_gate_dis("cgc2_sosc_div3_gate", "sosc", base + 0x108, 23);
c43a801a57890b Jacky Bai 2021-09-14  196  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV1] = imx_clk_hw_divider("cgc2_sosc_div1", "cgc2_sosc_div1_gate", base + 0x108, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  197  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV2] = imx_clk_hw_divider("cgc2_sosc_div2", "cgc2_sosc_div2_gate", base + 0x108, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  198  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV3] = imx_clk_hw_divider("cgc2_sosc_div3", "cgc2_sosc_div3_gate", base + 0x108, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  199  
c43a801a57890b Jacky Bai 2021-09-14  200  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV1_GATE] = imx_clk_hw_gate_dis("cgc2_frosc_div1_gate", "frosc", base + 0x208, 7);
c43a801a57890b Jacky Bai 2021-09-14  201  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV2_GATE] = imx_clk_hw_gate_dis("cgc2_frosc_div2_gate", "frosc", base + 0x208, 15);
c43a801a57890b Jacky Bai 2021-09-14  202  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV3_GATE] = imx_clk_hw_gate_dis("cgc2_frosc_div3_gate", "frosc", base + 0x208, 23);
c43a801a57890b Jacky Bai 2021-09-14  203  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV1] = imx_clk_hw_divider("cgc2_frosc_div1", "cgc2_frosc_div1_gate", base + 0x208, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  204  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV2] = imx_clk_hw_divider("cgc2_frosc_div2", "cgc2_frosc_div2_gate", base + 0x208, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  205  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV3] = imx_clk_hw_divider("cgc2_frosc_div3", "cgc2_frosc_div3_gate", base + 0x208, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  206  	clks[IMX8ULP_CLK_AUD_CLK2]  = imx_clk_hw_mux2("aud_clk2", base + 0x900, 0, 3, aud_clk2_sels, ARRAY_SIZE(aud_clk2_sels));
c43a801a57890b Jacky Bai 2021-09-14  207  	clks[IMX8ULP_CLK_SAI6_SEL]  = imx_clk_hw_mux2("sai6_sel", base + 0x904, 0, 3, sai67_sels, ARRAY_SIZE(sai67_sels));
c43a801a57890b Jacky Bai 2021-09-14  208  	clks[IMX8ULP_CLK_SAI7_SEL]  = imx_clk_hw_mux2("sai7_sel", base + 0x904, 8, 3, sai67_sels, ARRAY_SIZE(sai67_sels));
c43a801a57890b Jacky Bai 2021-09-14  209  	clks[IMX8ULP_CLK_SPDIF_SEL] = imx_clk_hw_mux2("spdif_sel", base + 0x910, 0, 3, sai67_sels, ARRAY_SIZE(sai67_sels));
c43a801a57890b Jacky Bai 2021-09-14  210  	clks[IMX8ULP_CLK_DSI_PHY_REF] = imx_clk_hw_fixed("dsi_phy_ref", 24000000);
c43a801a57890b Jacky Bai 2021-09-14  211  
c43a801a57890b Jacky Bai 2021-09-14  212  	imx_check_clk_hws(clks, clk_data->num);
c43a801a57890b Jacky Bai 2021-09-14  213  
c43a801a57890b Jacky Bai 2021-09-14  214  	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data);
c43a801a57890b Jacky Bai 2021-09-14  215  }
c43a801a57890b Jacky Bai 2021-09-14  216  
c43a801a57890b Jacky Bai 2021-09-14  217  static int imx8ulp_clk_pcc3_init(struct platform_device *pdev)
c43a801a57890b Jacky Bai 2021-09-14  218  {
c43a801a57890b Jacky Bai 2021-09-14  219  	struct device *dev = &pdev->dev;
c43a801a57890b Jacky Bai 2021-09-14  220  	struct clk_hw_onecell_data *clk_data;
c43a801a57890b Jacky Bai 2021-09-14  221  	struct clk_hw **clks;
c43a801a57890b Jacky Bai 2021-09-14  222  	void __iomem *base;
c43a801a57890b Jacky Bai 2021-09-14  223  	int ret;
c43a801a57890b Jacky Bai 2021-09-14  224  
c43a801a57890b Jacky Bai 2021-09-14  225  	clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, IMX8ULP_CLK_PCC3_END),
c43a801a57890b Jacky Bai 2021-09-14  226  			   GFP_KERNEL);
c43a801a57890b Jacky Bai 2021-09-14  227  	if (!clk_data)
c43a801a57890b Jacky Bai 2021-09-14  228  		return -ENOMEM;
c43a801a57890b Jacky Bai 2021-09-14  229  
c43a801a57890b Jacky Bai 2021-09-14  230  	clk_data->num = IMX8ULP_CLK_PCC3_END;
c43a801a57890b Jacky Bai 2021-09-14  231  	clks = clk_data->hws;
c43a801a57890b Jacky Bai 2021-09-14  232  
c43a801a57890b Jacky Bai 2021-09-14  233  	/* PCC3 */
c43a801a57890b Jacky Bai 2021-09-14  234  	base = devm_platform_ioremap_resource(pdev, 0);
c43a801a57890b Jacky Bai 2021-09-14  235  	if (WARN_ON(IS_ERR(base)))
c43a801a57890b Jacky Bai 2021-09-14 @236  		return PTR_ERR(base);
c43a801a57890b Jacky Bai 2021-09-14  237  
c43a801a57890b Jacky Bai 2021-09-14  238  	clks[IMX8ULP_CLK_WDOG3] = imx8ulp_clk_hw_composite("wdog3", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xa8, 1);
c43a801a57890b Jacky Bai 2021-09-14  239  	clks[IMX8ULP_CLK_WDOG4] = imx8ulp_clk_hw_composite("wdog4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xac, 1);
c43a801a57890b Jacky Bai 2021-09-14  240  	clks[IMX8ULP_CLK_LPIT1] = imx8ulp_clk_hw_composite("lpit1", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xc8, 1);
c43a801a57890b Jacky Bai 2021-09-14  241  	clks[IMX8ULP_CLK_TPM4] = imx8ulp_clk_hw_composite("tpm4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xcc, 1);
c43a801a57890b Jacky Bai 2021-09-14  242  	clks[IMX8ULP_CLK_TPM5] = imx8ulp_clk_hw_composite("tpm5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xd0, 1);
c43a801a57890b Jacky Bai 2021-09-14  243  	clks[IMX8ULP_CLK_FLEXIO1] = imx8ulp_clk_hw_composite("flexio1", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xd4, 1);
c43a801a57890b Jacky Bai 2021-09-14  244  	clks[IMX8ULP_CLK_I3C2] = imx8ulp_clk_hw_composite("i3c2", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xd8, 1);
c43a801a57890b Jacky Bai 2021-09-14  245  	clks[IMX8ULP_CLK_LPI2C4] = imx8ulp_clk_hw_composite("lpi2c4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xdc, 1);
c43a801a57890b Jacky Bai 2021-09-14  246  	clks[IMX8ULP_CLK_LPI2C5] = imx8ulp_clk_hw_composite("lpi2c5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xe0, 1);
c43a801a57890b Jacky Bai 2021-09-14  247  	clks[IMX8ULP_CLK_LPUART4] = imx8ulp_clk_hw_composite("lpuart4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xe4, 1);
c43a801a57890b Jacky Bai 2021-09-14  248  	clks[IMX8ULP_CLK_LPUART5] = imx8ulp_clk_hw_composite("lpuart5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xe8, 1);
c43a801a57890b Jacky Bai 2021-09-14  249  	clks[IMX8ULP_CLK_LPSPI4] = imx8ulp_clk_hw_composite("lpspi4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xec, 1);
c43a801a57890b Jacky Bai 2021-09-14  250  	clks[IMX8ULP_CLK_LPSPI5] = imx8ulp_clk_hw_composite("lpspi5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xf0, 1);
c43a801a57890b Jacky Bai 2021-09-14  251  
c43a801a57890b Jacky Bai 2021-09-14  252  	clks[IMX8ULP_CLK_DMA1_MP] = imx_clk_hw_gate("pcc_dma1_mp", "xbar_ad_divplat", base + 0x4, 30);
c43a801a57890b Jacky Bai 2021-09-14  253  	clks[IMX8ULP_CLK_DMA1_CH0] = imx_clk_hw_gate("pcc_dma1_ch0", "xbar_ad_divplat", base + 0x8, 30);
c43a801a57890b Jacky Bai 2021-09-14  254  	clks[IMX8ULP_CLK_DMA1_CH1] = imx_clk_hw_gate("pcc_dma1_ch1", "xbar_ad_divplat", base + 0xc, 30);
c43a801a57890b Jacky Bai 2021-09-14  255  	clks[IMX8ULP_CLK_DMA1_CH2] = imx_clk_hw_gate("pcc_dma1_ch2", "xbar_ad_divplat", base + 0x10, 30);
c43a801a57890b Jacky Bai 2021-09-14  256  	clks[IMX8ULP_CLK_DMA1_CH3] = imx_clk_hw_gate("pcc_dma1_ch3", "xbar_ad_divplat", base + 0x14, 30);
c43a801a57890b Jacky Bai 2021-09-14  257  	clks[IMX8ULP_CLK_DMA1_CH4] = imx_clk_hw_gate("pcc_dma1_ch4", "xbar_ad_divplat", base + 0x18, 30);
c43a801a57890b Jacky Bai 2021-09-14  258  	clks[IMX8ULP_CLK_DMA1_CH5] = imx_clk_hw_gate("pcc_dma1_ch5", "xbar_ad_divplat", base + 0x1c, 30);
c43a801a57890b Jacky Bai 2021-09-14  259  	clks[IMX8ULP_CLK_DMA1_CH6] = imx_clk_hw_gate("pcc_dma1_ch6", "xbar_ad_divplat", base + 0x20, 30);
c43a801a57890b Jacky Bai 2021-09-14  260  	clks[IMX8ULP_CLK_DMA1_CH7] = imx_clk_hw_gate("pcc_dma1_ch7", "xbar_ad_divplat", base + 0x24, 30);
c43a801a57890b Jacky Bai 2021-09-14  261  	clks[IMX8ULP_CLK_DMA1_CH8] = imx_clk_hw_gate("pcc_dma1_ch8", "xbar_ad_divplat", base + 0x28, 30);
c43a801a57890b Jacky Bai 2021-09-14  262  	clks[IMX8ULP_CLK_DMA1_CH9] = imx_clk_hw_gate("pcc_dma1_ch9", "xbar_ad_divplat", base + 0x2c, 30);
c43a801a57890b Jacky Bai 2021-09-14  263  	clks[IMX8ULP_CLK_DMA1_CH10] = imx_clk_hw_gate("pcc_dma1_ch10", "xbar_ad_divplat", base + 0x30, 30);
c43a801a57890b Jacky Bai 2021-09-14  264  	clks[IMX8ULP_CLK_DMA1_CH11] = imx_clk_hw_gate("pcc_dma1_ch11", "xbar_ad_divplat", base + 0x34, 30);
c43a801a57890b Jacky Bai 2021-09-14  265  	clks[IMX8ULP_CLK_DMA1_CH12] = imx_clk_hw_gate("pcc_dma1_ch12", "xbar_ad_divplat", base + 0x38, 30);
c43a801a57890b Jacky Bai 2021-09-14  266  	clks[IMX8ULP_CLK_DMA1_CH13] = imx_clk_hw_gate("pcc_dma1_ch13", "xbar_ad_divplat", base + 0x3c, 30);
c43a801a57890b Jacky Bai 2021-09-14  267  	clks[IMX8ULP_CLK_DMA1_CH14] = imx_clk_hw_gate("pcc_dma1_ch14", "xbar_ad_divplat", base + 0x40, 30);
c43a801a57890b Jacky Bai 2021-09-14  268  	clks[IMX8ULP_CLK_DMA1_CH15] = imx_clk_hw_gate("pcc_dma1_ch15", "xbar_ad_divplat", base + 0x44, 30);
c43a801a57890b Jacky Bai 2021-09-14  269  	clks[IMX8ULP_CLK_DMA1_CH16] = imx_clk_hw_gate("pcc_dma1_ch16", "xbar_ad_divplat", base + 0x48, 30);
c43a801a57890b Jacky Bai 2021-09-14  270  	clks[IMX8ULP_CLK_DMA1_CH17] = imx_clk_hw_gate("pcc_dma1_ch17", "xbar_ad_divplat", base + 0x4c, 30);
c43a801a57890b Jacky Bai 2021-09-14  271  	clks[IMX8ULP_CLK_DMA1_CH18] = imx_clk_hw_gate("pcc_dma1_ch18", "xbar_ad_divplat", base + 0x50, 30);
c43a801a57890b Jacky Bai 2021-09-14  272  	clks[IMX8ULP_CLK_DMA1_CH19] = imx_clk_hw_gate("pcc_dma1_ch19", "xbar_ad_divplat", base + 0x54, 30);
c43a801a57890b Jacky Bai 2021-09-14  273  	clks[IMX8ULP_CLK_DMA1_CH20] = imx_clk_hw_gate("pcc_dma1_ch20", "xbar_ad_divplat", base + 0x58, 30);
c43a801a57890b Jacky Bai 2021-09-14  274  	clks[IMX8ULP_CLK_DMA1_CH21] = imx_clk_hw_gate("pcc_dma1_ch21", "xbar_ad_divplat", base + 0x5c, 30);
c43a801a57890b Jacky Bai 2021-09-14  275  	clks[IMX8ULP_CLK_DMA1_CH22] = imx_clk_hw_gate("pcc_dma1_ch22", "xbar_ad_divplat", base + 0x60, 30);
c43a801a57890b Jacky Bai 2021-09-14  276  	clks[IMX8ULP_CLK_DMA1_CH23] = imx_clk_hw_gate("pcc_dma1_ch23", "xbar_ad_divplat", base + 0x64, 30);
c43a801a57890b Jacky Bai 2021-09-14  277  	clks[IMX8ULP_CLK_DMA1_CH24] = imx_clk_hw_gate("pcc_dma1_ch24", "xbar_ad_divplat", base + 0x68, 30);
c43a801a57890b Jacky Bai 2021-09-14  278  	clks[IMX8ULP_CLK_DMA1_CH25] = imx_clk_hw_gate("pcc_dma1_ch25", "xbar_ad_divplat", base + 0x6c, 30);
c43a801a57890b Jacky Bai 2021-09-14  279  	clks[IMX8ULP_CLK_DMA1_CH26] = imx_clk_hw_gate("pcc_dma1_ch26", "xbar_ad_divplat", base + 0x70, 30);
c43a801a57890b Jacky Bai 2021-09-14  280  	clks[IMX8ULP_CLK_DMA1_CH27] = imx_clk_hw_gate("pcc_dma1_ch27", "xbar_ad_divplat", base + 0x74, 30);
c43a801a57890b Jacky Bai 2021-09-14  281  	clks[IMX8ULP_CLK_DMA1_CH28] = imx_clk_hw_gate("pcc_dma1_ch28", "xbar_ad_divplat", base + 0x78, 30);
c43a801a57890b Jacky Bai 2021-09-14  282  	clks[IMX8ULP_CLK_DMA1_CH29] = imx_clk_hw_gate("pcc_dma1_ch29", "xbar_ad_divplat", base + 0x7c, 30);
c43a801a57890b Jacky Bai 2021-09-14  283  	clks[IMX8ULP_CLK_DMA1_CH30] = imx_clk_hw_gate("pcc_dma1_ch30", "xbar_ad_divplat", base + 0x80, 30);
c43a801a57890b Jacky Bai 2021-09-14  284  	clks[IMX8ULP_CLK_DMA1_CH31] = imx_clk_hw_gate("pcc_dma1_ch31", "xbar_ad_divplat", base + 0x84, 30);
c43a801a57890b Jacky Bai 2021-09-14  285  	clks[IMX8ULP_CLK_MU0_B] = imx_clk_hw_gate("mu0_b", "xbar_ad_divplat", base + 0x88, 30);
c43a801a57890b Jacky Bai 2021-09-14  286  	clks[IMX8ULP_CLK_MU3_A] = imx_clk_hw_gate("mu3_a", "xbar_ad_divplat", base + 0x8c, 30);
c43a801a57890b Jacky Bai 2021-09-14  287  
c43a801a57890b Jacky Bai 2021-09-14  288  	imx_check_clk_hws(clks, clk_data->num);
c43a801a57890b Jacky Bai 2021-09-14  289  
c43a801a57890b Jacky Bai 2021-09-14  290  	ret = devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data);
c43a801a57890b Jacky Bai 2021-09-14  291  
c43a801a57890b Jacky Bai 2021-09-14  292  	imx_register_uart_clocks(1);
c43a801a57890b Jacky Bai 2021-09-14  293  
c43a801a57890b Jacky Bai 2021-09-14  294  	return ret;
c43a801a57890b Jacky Bai 2021-09-14  295  }
c43a801a57890b Jacky Bai 2021-09-14  296  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 6+ messages in thread

* drivers/clk/imx/clk-imx8ulp.c:71 imx8ulp_clk_cgc1_init() warn: passing zero to 'PTR_ERR'
@ 2022-01-23  3:47 kernel test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2022-01-23  3:47 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 31074 bytes --]

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Jacky Bai <ping.bai@nxp.com>
CC: Abel Vesa <abel.vesa@nxp.com>
CC: Peng Fan <peng.fan@nxp.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   1c52283265a462a100ae63ddf58b4e5884acde86
commit: c43a801a57890b15e16a0502edf145d59c91baf7 clk: imx: Add clock driver for imx8ulp
date:   4 months ago
:::::: branch date: 18 hours ago
:::::: commit date: 4 months ago
config: powerpc64-randconfig-m031-20220120 (https://download.01.org/0day-ci/archive/20220123/202201231137.PSByTfwh-lkp(a)intel.com/config)
compiler: powerpc64-linux-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/clk/imx/clk-imx8ulp.c:71 imx8ulp_clk_cgc1_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:153 imx8ulp_clk_cgc2_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:236 imx8ulp_clk_pcc3_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:315 imx8ulp_clk_pcc4_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:363 imx8ulp_clk_pcc5_init() warn: passing zero to 'PTR_ERR'

vim +/PTR_ERR +71 drivers/clk/imx/clk-imx8ulp.c

c43a801a57890b Jacky Bai 2021-09-14   50  
c43a801a57890b Jacky Bai 2021-09-14   51  static int imx8ulp_clk_cgc1_init(struct platform_device *pdev)
c43a801a57890b Jacky Bai 2021-09-14   52  {
c43a801a57890b Jacky Bai 2021-09-14   53  	struct device *dev = &pdev->dev;
c43a801a57890b Jacky Bai 2021-09-14   54  	struct clk_hw_onecell_data *clk_data;
c43a801a57890b Jacky Bai 2021-09-14   55  	struct clk_hw **clks;
c43a801a57890b Jacky Bai 2021-09-14   56  	void __iomem *base;
c43a801a57890b Jacky Bai 2021-09-14   57  
c43a801a57890b Jacky Bai 2021-09-14   58  	clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, IMX8ULP_CLK_CGC1_END),
c43a801a57890b Jacky Bai 2021-09-14   59  			   GFP_KERNEL);
c43a801a57890b Jacky Bai 2021-09-14   60  	if (!clk_data)
c43a801a57890b Jacky Bai 2021-09-14   61  		return -ENOMEM;
c43a801a57890b Jacky Bai 2021-09-14   62  
c43a801a57890b Jacky Bai 2021-09-14   63  	clk_data->num = IMX8ULP_CLK_CGC1_END;
c43a801a57890b Jacky Bai 2021-09-14   64  	clks = clk_data->hws;
c43a801a57890b Jacky Bai 2021-09-14   65  
c43a801a57890b Jacky Bai 2021-09-14   66  	clks[IMX8ULP_CLK_DUMMY] = imx_clk_hw_fixed("dummy", 0);
c43a801a57890b Jacky Bai 2021-09-14   67  
c43a801a57890b Jacky Bai 2021-09-14   68  	/* CGC1 */
c43a801a57890b Jacky Bai 2021-09-14   69  	base = devm_platform_ioremap_resource(pdev, 0);
c43a801a57890b Jacky Bai 2021-09-14   70  	if (WARN_ON(IS_ERR(base)))
c43a801a57890b Jacky Bai 2021-09-14  @71  		return PTR_ERR(base);
c43a801a57890b Jacky Bai 2021-09-14   72  
c43a801a57890b Jacky Bai 2021-09-14   73  	clks[IMX8ULP_CLK_SPLL2_PRE_SEL]	= imx_clk_hw_mux_flags("spll2_pre_sel", base + 0x510, 0, 1, pll_pre_sels, ARRAY_SIZE(pll_pre_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14   74  	clks[IMX8ULP_CLK_SPLL3_PRE_SEL]	= imx_clk_hw_mux_flags("spll3_pre_sel", base + 0x610, 0, 1, pll_pre_sels, ARRAY_SIZE(pll_pre_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14   75  
c43a801a57890b Jacky Bai 2021-09-14   76  	clks[IMX8ULP_CLK_SPLL2] = imx_clk_hw_pllv4(IMX_PLLV4_IMX8ULP, "spll2", "spll2_pre_sel", base + 0x500);
c43a801a57890b Jacky Bai 2021-09-14   77  	clks[IMX8ULP_CLK_SPLL3] = imx_clk_hw_pllv4(IMX_PLLV4_IMX8ULP, "spll3", "spll3_pre_sel", base + 0x600);
c43a801a57890b Jacky Bai 2021-09-14   78  	clks[IMX8ULP_CLK_SPLL3_VCODIV] = imx_clk_hw_divider("spll3_vcodiv", "spll3", base + 0x604, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14   79  
c43a801a57890b Jacky Bai 2021-09-14   80  	clks[IMX8ULP_CLK_SPLL3_PFD0] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd0", "spll3_vcodiv", base + 0x614, 0);
c43a801a57890b Jacky Bai 2021-09-14   81  	clks[IMX8ULP_CLK_SPLL3_PFD1] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd1", "spll3_vcodiv", base + 0x614, 1);
c43a801a57890b Jacky Bai 2021-09-14   82  	clks[IMX8ULP_CLK_SPLL3_PFD2] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd2", "spll3_vcodiv", base + 0x614, 2);
c43a801a57890b Jacky Bai 2021-09-14   83  	clks[IMX8ULP_CLK_SPLL3_PFD3] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd3", "spll3_vcodiv", base + 0x614, 3);
c43a801a57890b Jacky Bai 2021-09-14   84  
c43a801a57890b Jacky Bai 2021-09-14   85  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd0_div1_gate", "spll3_pfd0", base + 0x608, 7);
c43a801a57890b Jacky Bai 2021-09-14   86  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd0_div2_gate", "spll3_pfd0", base + 0x608, 15);
c43a801a57890b Jacky Bai 2021-09-14   87  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd1_div1_gate", "spll3_pfd1", base + 0x608, 23);
c43a801a57890b Jacky Bai 2021-09-14   88  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd1_div2_gate", "spll3_pfd1", base + 0x608, 31);
c43a801a57890b Jacky Bai 2021-09-14   89  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd2_div1_gate", "spll3_pfd2", base + 0x60c, 7);
c43a801a57890b Jacky Bai 2021-09-14   90  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd2_div2_gate", "spll3_pfd2", base + 0x60c, 15);
c43a801a57890b Jacky Bai 2021-09-14   91  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd3_div1_gate", "spll3_pfd3", base + 0x60c, 23);
c43a801a57890b Jacky Bai 2021-09-14   92  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd3_div2_gate", "spll3_pfd3", base + 0x60c, 31);
c43a801a57890b Jacky Bai 2021-09-14   93  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV1] = imx_clk_hw_divider("spll3_pfd0_div1", "spll3_pfd0_div1_gate", base + 0x608, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14   94  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV2] = imx_clk_hw_divider("spll3_pfd0_div2", "spll3_pfd0_div2_gate", base + 0x608, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14   95  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV1] = imx_clk_hw_divider("spll3_pfd1_div1", "spll3_pfd1_div1_gate", base + 0x608, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14   96  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV2] = imx_clk_hw_divider("spll3_pfd1_div2", "spll3_pfd1_div2_gate", base + 0x608, 24, 6);
c43a801a57890b Jacky Bai 2021-09-14   97  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV1] = imx_clk_hw_divider("spll3_pfd2_div1", "spll3_pfd2_div1_gate", base + 0x60c, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14   98  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV2] = imx_clk_hw_divider("spll3_pfd2_div2", "spll3_pfd2_div2_gate", base + 0x60c, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14   99  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV1] = imx_clk_hw_divider("spll3_pfd3_div1", "spll3_pfd3_div1_gate", base + 0x60c, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  100  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV2] = imx_clk_hw_divider("spll3_pfd3_div2", "spll3_pfd3_div2_gate", base + 0x60c, 24, 6);
c43a801a57890b Jacky Bai 2021-09-14  101  
c43a801a57890b Jacky Bai 2021-09-14  102  	clks[IMX8ULP_CLK_A35_SEL] = imx_clk_hw_mux2("a35_sel", base + 0x14, 28, 2, a35_sels, ARRAY_SIZE(a35_sels));
c43a801a57890b Jacky Bai 2021-09-14  103  	clks[IMX8ULP_CLK_A35_DIV] = imx_clk_hw_divider_flags("a35_div", "a35_sel", base + 0x14, 21, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  104  
c43a801a57890b Jacky Bai 2021-09-14  105  	clks[IMX8ULP_CLK_NIC_SEL] = imx_clk_hw_mux2("nic_sel", base + 0x34, 28, 2, nic_sels, ARRAY_SIZE(nic_sels));
c43a801a57890b Jacky Bai 2021-09-14  106  	clks[IMX8ULP_CLK_NIC_AD_DIVPLAT] = imx_clk_hw_divider_flags("nic_ad_divplat", "nic_sel", base + 0x34, 21, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  107  	clks[IMX8ULP_CLK_NIC_PER_DIVPLAT] = imx_clk_hw_divider_flags("nic_per_divplat", "nic_ad_divplat", base + 0x34, 14, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  108  	clks[IMX8ULP_CLK_XBAR_AD_DIVPLAT] = imx_clk_hw_divider_flags("xbar_ad_divplat", "nic_ad_divplat", base + 0x38, 14, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  109  	clks[IMX8ULP_CLK_XBAR_DIVBUS] = imx_clk_hw_divider_flags("xbar_divbus", "nic_ad_divplat", base + 0x38, 7, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  110  	clks[IMX8ULP_CLK_XBAR_AD_SLOW] = imx_clk_hw_divider_flags("xbar_ad_slow", "nic_ad_divplat", base + 0x38, 0, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  111  
c43a801a57890b Jacky Bai 2021-09-14  112  	clks[IMX8ULP_CLK_SOSC_DIV1_GATE] = imx_clk_hw_gate_dis("sosc_div1_gate", "sosc", base + 0x108, 7);
c43a801a57890b Jacky Bai 2021-09-14  113  	clks[IMX8ULP_CLK_SOSC_DIV2_GATE] = imx_clk_hw_gate_dis("sosc_div2_gate", "sosc", base + 0x108, 15);
c43a801a57890b Jacky Bai 2021-09-14  114  	clks[IMX8ULP_CLK_SOSC_DIV3_GATE] = imx_clk_hw_gate_dis("sosc_div3_gate", "sosc", base + 0x108, 23);
c43a801a57890b Jacky Bai 2021-09-14  115  	clks[IMX8ULP_CLK_SOSC_DIV1] = imx_clk_hw_divider("sosc_div1", "sosc_div1_gate", base + 0x108, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  116  	clks[IMX8ULP_CLK_SOSC_DIV2] = imx_clk_hw_divider("sosc_div2", "sosc_div2_gate", base + 0x108, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  117  	clks[IMX8ULP_CLK_SOSC_DIV3] = imx_clk_hw_divider("sosc_div3", "sosc_div3_gate", base + 0x108, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  118  
c43a801a57890b Jacky Bai 2021-09-14  119  	clks[IMX8ULP_CLK_FROSC_DIV1_GATE] = imx_clk_hw_gate_dis("frosc_div1_gate", "frosc", base + 0x208, 7);
c43a801a57890b Jacky Bai 2021-09-14  120  	clks[IMX8ULP_CLK_FROSC_DIV2_GATE] = imx_clk_hw_gate_dis("frosc_div2_gate", "frosc", base + 0x208, 15);
c43a801a57890b Jacky Bai 2021-09-14  121  	clks[IMX8ULP_CLK_FROSC_DIV3_GATE] = imx_clk_hw_gate_dis("frosc_div3_gate", "frosc", base + 0x208, 23);
c43a801a57890b Jacky Bai 2021-09-14  122  	clks[IMX8ULP_CLK_FROSC_DIV1] = imx_clk_hw_divider("frosc_div1", "frosc_div1_gate", base + 0x208, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  123  	clks[IMX8ULP_CLK_FROSC_DIV2] = imx_clk_hw_divider("frosc_div2", "frosc_div2_gate", base + 0x208, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  124  	clks[IMX8ULP_CLK_FROSC_DIV3] = imx_clk_hw_divider("frosc_div3", "frosc_div3_gate", base + 0x208, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  125  	clks[IMX8ULP_CLK_AUD_CLK1] = imx_clk_hw_mux2("aud_clk1", base + 0x900, 0, 3, aud_clk1_sels, ARRAY_SIZE(aud_clk1_sels));
c43a801a57890b Jacky Bai 2021-09-14  126  	clks[IMX8ULP_CLK_SAI4_SEL] = imx_clk_hw_mux2("sai4_sel", base + 0x904, 0, 2, sai45_sels, ARRAY_SIZE(sai45_sels));
c43a801a57890b Jacky Bai 2021-09-14  127  	clks[IMX8ULP_CLK_SAI5_SEL] = imx_clk_hw_mux2("sai5_sel", base + 0x904, 8, 2, sai45_sels, ARRAY_SIZE(sai45_sels));
c43a801a57890b Jacky Bai 2021-09-14  128  	clks[IMX8ULP_CLK_ENET_TS_SEL] = imx_clk_hw_mux2("enet_ts", base + 0x700, 24, 3, enet_ts_sels, ARRAY_SIZE(enet_ts_sels));
c43a801a57890b Jacky Bai 2021-09-14  129  
c43a801a57890b Jacky Bai 2021-09-14  130  	imx_check_clk_hws(clks, clk_data->num);
c43a801a57890b Jacky Bai 2021-09-14  131  
c43a801a57890b Jacky Bai 2021-09-14  132  	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data);
c43a801a57890b Jacky Bai 2021-09-14  133  }
c43a801a57890b Jacky Bai 2021-09-14  134  
c43a801a57890b Jacky Bai 2021-09-14  135  static int imx8ulp_clk_cgc2_init(struct platform_device *pdev)
c43a801a57890b Jacky Bai 2021-09-14  136  {
c43a801a57890b Jacky Bai 2021-09-14  137  	struct device *dev = &pdev->dev;
c43a801a57890b Jacky Bai 2021-09-14  138  	struct clk_hw_onecell_data *clk_data;
c43a801a57890b Jacky Bai 2021-09-14  139  	struct clk_hw **clks;
c43a801a57890b Jacky Bai 2021-09-14  140  	void __iomem *base;
c43a801a57890b Jacky Bai 2021-09-14  141  
c43a801a57890b Jacky Bai 2021-09-14  142  	clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, IMX8ULP_CLK_CGC2_END),
c43a801a57890b Jacky Bai 2021-09-14  143  			   GFP_KERNEL);
c43a801a57890b Jacky Bai 2021-09-14  144  	if (!clk_data)
c43a801a57890b Jacky Bai 2021-09-14  145  		return -ENOMEM;
c43a801a57890b Jacky Bai 2021-09-14  146  
c43a801a57890b Jacky Bai 2021-09-14  147  	clk_data->num = IMX8ULP_CLK_CGC2_END;
c43a801a57890b Jacky Bai 2021-09-14  148  	clks = clk_data->hws;
c43a801a57890b Jacky Bai 2021-09-14  149  
c43a801a57890b Jacky Bai 2021-09-14  150  	/* CGC2 */
c43a801a57890b Jacky Bai 2021-09-14  151  	base = devm_platform_ioremap_resource(pdev, 0);
c43a801a57890b Jacky Bai 2021-09-14  152  	if (WARN_ON(IS_ERR(base)))
c43a801a57890b Jacky Bai 2021-09-14 @153  		return PTR_ERR(base);
c43a801a57890b Jacky Bai 2021-09-14  154  
c43a801a57890b Jacky Bai 2021-09-14  155  	clks[IMX8ULP_CLK_PLL4_PRE_SEL] = imx_clk_hw_mux_flags("pll4_pre_sel", base + 0x610, 0, 1, pll_pre_sels, ARRAY_SIZE(pll_pre_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14  156  
c43a801a57890b Jacky Bai 2021-09-14  157  	clks[IMX8ULP_CLK_PLL4]	= imx_clk_hw_pllv4(IMX_PLLV4_IMX8ULP, "pll4", "pll4_pre_sel", base + 0x600);
c43a801a57890b Jacky Bai 2021-09-14  158  	clks[IMX8ULP_CLK_PLL4_VCODIV] = imx_clk_hw_divider("pll4_vcodiv", "pll4", base + 0x604, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  159  
c43a801a57890b Jacky Bai 2021-09-14  160  	clks[IMX8ULP_CLK_HIFI_SEL] = imx_clk_hw_mux_flags("hifi_sel", base + 0x14, 28, 3, hifi_sels, ARRAY_SIZE(hifi_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14  161  	clks[IMX8ULP_CLK_HIFI_DIVCORE] = imx_clk_hw_divider("hifi_core_div", "hifi_sel", base + 0x14, 21, 6);
c43a801a57890b Jacky Bai 2021-09-14  162  	clks[IMX8ULP_CLK_HIFI_DIVPLAT] = imx_clk_hw_divider("hifi_plat_div", "hifi_core_div", base + 0x14, 14, 6);
c43a801a57890b Jacky Bai 2021-09-14  163  
c43a801a57890b Jacky Bai 2021-09-14  164  	clks[IMX8ULP_CLK_DDR_SEL] = imx_clk_hw_mux_flags("ddr_sel", base + 0x40, 28, 3, ddr_sels, ARRAY_SIZE(ddr_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14  165  	clks[IMX8ULP_CLK_DDR_DIV] = imx_clk_hw_divider_flags("ddr_div", "ddr_sel", base + 0x40, 21, 6, CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  166  	clks[IMX8ULP_CLK_LPAV_AXI_SEL] = imx_clk_hw_mux("lpav_sel", base + 0x3c, 28, 2, lpav_sels, ARRAY_SIZE(lpav_sels));
c43a801a57890b Jacky Bai 2021-09-14  167  	clks[IMX8ULP_CLK_LPAV_AXI_DIV] = imx_clk_hw_divider_flags("lpav_axi_div", "lpav_sel", base + 0x3c, 21, 6, CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  168  	clks[IMX8ULP_CLK_LPAV_AHB_DIV] = imx_clk_hw_divider_flags("lpav_ahb_div", "lpav_axi_div", base + 0x3c, 14, 6, CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  169  	clks[IMX8ULP_CLK_LPAV_BUS_DIV] = imx_clk_hw_divider_flags("lpav_bus_div", "lpav_axi_div", base + 0x3c, 7, 6, CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  170  
c43a801a57890b Jacky Bai 2021-09-14  171  	clks[IMX8ULP_CLK_PLL4_PFD0] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd0", "pll4_vcodiv", base + 0x614, 0);
c43a801a57890b Jacky Bai 2021-09-14  172  	clks[IMX8ULP_CLK_PLL4_PFD1] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd1", "pll4_vcodiv", base + 0x614, 1);
c43a801a57890b Jacky Bai 2021-09-14  173  	clks[IMX8ULP_CLK_PLL4_PFD2] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd2", "pll4_vcodiv", base + 0x614, 2);
c43a801a57890b Jacky Bai 2021-09-14  174  	clks[IMX8ULP_CLK_PLL4_PFD3] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd3", "pll4_vcodiv", base + 0x614, 3);
c43a801a57890b Jacky Bai 2021-09-14  175  
c43a801a57890b Jacky Bai 2021-09-14  176  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd0_div1_gate", "pll4_pfd0", base + 0x608, 7);
c43a801a57890b Jacky Bai 2021-09-14  177  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd0_div2_gate", "pll4_pfd0", base + 0x608, 15);
c43a801a57890b Jacky Bai 2021-09-14  178  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd1_div1_gate", "pll4_pfd1", base + 0x608, 23);
c43a801a57890b Jacky Bai 2021-09-14  179  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd1_div2_gate", "pll4_pfd1", base + 0x608, 31);
c43a801a57890b Jacky Bai 2021-09-14  180  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd2_div1_gate", "pll4_pfd2", base + 0x60c, 7);
c43a801a57890b Jacky Bai 2021-09-14  181  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd2_div2_gate", "pll4_pfd2", base + 0x60c, 15);
c43a801a57890b Jacky Bai 2021-09-14  182  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd3_div1_gate", "pll4_pfd3", base + 0x60c, 23);
c43a801a57890b Jacky Bai 2021-09-14  183  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd3_div2_gate", "pll4_pfd3", base + 0x60c, 31);
c43a801a57890b Jacky Bai 2021-09-14  184  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV1] = imx_clk_hw_divider("pll4_pfd0_div1", "pll4_pfd0_div1_gate", base + 0x608, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  185  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV2] = imx_clk_hw_divider("pll4_pfd0_div2", "pll4_pfd0_div2_gate", base + 0x608, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  186  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV1] = imx_clk_hw_divider("pll4_pfd1_div1", "pll4_pfd1_div1_gate", base + 0x608, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  187  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV2] = imx_clk_hw_divider("pll4_pfd1_div2", "pll4_pfd1_div2_gate", base + 0x608, 24, 6);
c43a801a57890b Jacky Bai 2021-09-14  188  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV1] = imx_clk_hw_divider("pll4_pfd2_div1", "pll4_pfd2_div1_gate", base + 0x60c, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  189  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV2] = imx_clk_hw_divider("pll4_pfd2_div2", "pll4_pfd2_div2_gate", base + 0x60c, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  190  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV1] = imx_clk_hw_divider("pll4_pfd3_div1", "pll4_pfd3_div1_gate", base + 0x60c, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  191  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV2] = imx_clk_hw_divider("pll4_pfd3_div2", "pll4_pfd3_div2_gate", base + 0x60c, 24, 6);
c43a801a57890b Jacky Bai 2021-09-14  192  
c43a801a57890b Jacky Bai 2021-09-14  193  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV1_GATE] = imx_clk_hw_gate_dis("cgc2_sosc_div1_gate", "sosc", base + 0x108, 7);
c43a801a57890b Jacky Bai 2021-09-14  194  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV2_GATE] = imx_clk_hw_gate_dis("cgc2_sosc_div2_gate", "sosc", base + 0x108, 15);
c43a801a57890b Jacky Bai 2021-09-14  195  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV3_GATE] = imx_clk_hw_gate_dis("cgc2_sosc_div3_gate", "sosc", base + 0x108, 23);
c43a801a57890b Jacky Bai 2021-09-14  196  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV1] = imx_clk_hw_divider("cgc2_sosc_div1", "cgc2_sosc_div1_gate", base + 0x108, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  197  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV2] = imx_clk_hw_divider("cgc2_sosc_div2", "cgc2_sosc_div2_gate", base + 0x108, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  198  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV3] = imx_clk_hw_divider("cgc2_sosc_div3", "cgc2_sosc_div3_gate", base + 0x108, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  199  
c43a801a57890b Jacky Bai 2021-09-14  200  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV1_GATE] = imx_clk_hw_gate_dis("cgc2_frosc_div1_gate", "frosc", base + 0x208, 7);
c43a801a57890b Jacky Bai 2021-09-14  201  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV2_GATE] = imx_clk_hw_gate_dis("cgc2_frosc_div2_gate", "frosc", base + 0x208, 15);
c43a801a57890b Jacky Bai 2021-09-14  202  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV3_GATE] = imx_clk_hw_gate_dis("cgc2_frosc_div3_gate", "frosc", base + 0x208, 23);
c43a801a57890b Jacky Bai 2021-09-14  203  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV1] = imx_clk_hw_divider("cgc2_frosc_div1", "cgc2_frosc_div1_gate", base + 0x208, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  204  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV2] = imx_clk_hw_divider("cgc2_frosc_div2", "cgc2_frosc_div2_gate", base + 0x208, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  205  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV3] = imx_clk_hw_divider("cgc2_frosc_div3", "cgc2_frosc_div3_gate", base + 0x208, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  206  	clks[IMX8ULP_CLK_AUD_CLK2]  = imx_clk_hw_mux2("aud_clk2", base + 0x900, 0, 3, aud_clk2_sels, ARRAY_SIZE(aud_clk2_sels));
c43a801a57890b Jacky Bai 2021-09-14  207  	clks[IMX8ULP_CLK_SAI6_SEL]  = imx_clk_hw_mux2("sai6_sel", base + 0x904, 0, 3, sai67_sels, ARRAY_SIZE(sai67_sels));
c43a801a57890b Jacky Bai 2021-09-14  208  	clks[IMX8ULP_CLK_SAI7_SEL]  = imx_clk_hw_mux2("sai7_sel", base + 0x904, 8, 3, sai67_sels, ARRAY_SIZE(sai67_sels));
c43a801a57890b Jacky Bai 2021-09-14  209  	clks[IMX8ULP_CLK_SPDIF_SEL] = imx_clk_hw_mux2("spdif_sel", base + 0x910, 0, 3, sai67_sels, ARRAY_SIZE(sai67_sels));
c43a801a57890b Jacky Bai 2021-09-14  210  	clks[IMX8ULP_CLK_DSI_PHY_REF] = imx_clk_hw_fixed("dsi_phy_ref", 24000000);
c43a801a57890b Jacky Bai 2021-09-14  211  
c43a801a57890b Jacky Bai 2021-09-14  212  	imx_check_clk_hws(clks, clk_data->num);
c43a801a57890b Jacky Bai 2021-09-14  213  
c43a801a57890b Jacky Bai 2021-09-14  214  	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data);
c43a801a57890b Jacky Bai 2021-09-14  215  }
c43a801a57890b Jacky Bai 2021-09-14  216  
c43a801a57890b Jacky Bai 2021-09-14  217  static int imx8ulp_clk_pcc3_init(struct platform_device *pdev)
c43a801a57890b Jacky Bai 2021-09-14  218  {
c43a801a57890b Jacky Bai 2021-09-14  219  	struct device *dev = &pdev->dev;
c43a801a57890b Jacky Bai 2021-09-14  220  	struct clk_hw_onecell_data *clk_data;
c43a801a57890b Jacky Bai 2021-09-14  221  	struct clk_hw **clks;
c43a801a57890b Jacky Bai 2021-09-14  222  	void __iomem *base;
c43a801a57890b Jacky Bai 2021-09-14  223  	int ret;
c43a801a57890b Jacky Bai 2021-09-14  224  
c43a801a57890b Jacky Bai 2021-09-14  225  	clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, IMX8ULP_CLK_PCC3_END),
c43a801a57890b Jacky Bai 2021-09-14  226  			   GFP_KERNEL);
c43a801a57890b Jacky Bai 2021-09-14  227  	if (!clk_data)
c43a801a57890b Jacky Bai 2021-09-14  228  		return -ENOMEM;
c43a801a57890b Jacky Bai 2021-09-14  229  
c43a801a57890b Jacky Bai 2021-09-14  230  	clk_data->num = IMX8ULP_CLK_PCC3_END;
c43a801a57890b Jacky Bai 2021-09-14  231  	clks = clk_data->hws;
c43a801a57890b Jacky Bai 2021-09-14  232  
c43a801a57890b Jacky Bai 2021-09-14  233  	/* PCC3 */
c43a801a57890b Jacky Bai 2021-09-14  234  	base = devm_platform_ioremap_resource(pdev, 0);
c43a801a57890b Jacky Bai 2021-09-14  235  	if (WARN_ON(IS_ERR(base)))
c43a801a57890b Jacky Bai 2021-09-14 @236  		return PTR_ERR(base);
c43a801a57890b Jacky Bai 2021-09-14  237  
c43a801a57890b Jacky Bai 2021-09-14  238  	clks[IMX8ULP_CLK_WDOG3] = imx8ulp_clk_hw_composite("wdog3", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xa8, 1);
c43a801a57890b Jacky Bai 2021-09-14  239  	clks[IMX8ULP_CLK_WDOG4] = imx8ulp_clk_hw_composite("wdog4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xac, 1);
c43a801a57890b Jacky Bai 2021-09-14  240  	clks[IMX8ULP_CLK_LPIT1] = imx8ulp_clk_hw_composite("lpit1", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xc8, 1);
c43a801a57890b Jacky Bai 2021-09-14  241  	clks[IMX8ULP_CLK_TPM4] = imx8ulp_clk_hw_composite("tpm4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xcc, 1);
c43a801a57890b Jacky Bai 2021-09-14  242  	clks[IMX8ULP_CLK_TPM5] = imx8ulp_clk_hw_composite("tpm5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xd0, 1);
c43a801a57890b Jacky Bai 2021-09-14  243  	clks[IMX8ULP_CLK_FLEXIO1] = imx8ulp_clk_hw_composite("flexio1", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xd4, 1);
c43a801a57890b Jacky Bai 2021-09-14  244  	clks[IMX8ULP_CLK_I3C2] = imx8ulp_clk_hw_composite("i3c2", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xd8, 1);
c43a801a57890b Jacky Bai 2021-09-14  245  	clks[IMX8ULP_CLK_LPI2C4] = imx8ulp_clk_hw_composite("lpi2c4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xdc, 1);
c43a801a57890b Jacky Bai 2021-09-14  246  	clks[IMX8ULP_CLK_LPI2C5] = imx8ulp_clk_hw_composite("lpi2c5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xe0, 1);
c43a801a57890b Jacky Bai 2021-09-14  247  	clks[IMX8ULP_CLK_LPUART4] = imx8ulp_clk_hw_composite("lpuart4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xe4, 1);
c43a801a57890b Jacky Bai 2021-09-14  248  	clks[IMX8ULP_CLK_LPUART5] = imx8ulp_clk_hw_composite("lpuart5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xe8, 1);
c43a801a57890b Jacky Bai 2021-09-14  249  	clks[IMX8ULP_CLK_LPSPI4] = imx8ulp_clk_hw_composite("lpspi4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xec, 1);
c43a801a57890b Jacky Bai 2021-09-14  250  	clks[IMX8ULP_CLK_LPSPI5] = imx8ulp_clk_hw_composite("lpspi5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xf0, 1);
c43a801a57890b Jacky Bai 2021-09-14  251  
c43a801a57890b Jacky Bai 2021-09-14  252  	clks[IMX8ULP_CLK_DMA1_MP] = imx_clk_hw_gate("pcc_dma1_mp", "xbar_ad_divplat", base + 0x4, 30);
c43a801a57890b Jacky Bai 2021-09-14  253  	clks[IMX8ULP_CLK_DMA1_CH0] = imx_clk_hw_gate("pcc_dma1_ch0", "xbar_ad_divplat", base + 0x8, 30);
c43a801a57890b Jacky Bai 2021-09-14  254  	clks[IMX8ULP_CLK_DMA1_CH1] = imx_clk_hw_gate("pcc_dma1_ch1", "xbar_ad_divplat", base + 0xc, 30);
c43a801a57890b Jacky Bai 2021-09-14  255  	clks[IMX8ULP_CLK_DMA1_CH2] = imx_clk_hw_gate("pcc_dma1_ch2", "xbar_ad_divplat", base + 0x10, 30);
c43a801a57890b Jacky Bai 2021-09-14  256  	clks[IMX8ULP_CLK_DMA1_CH3] = imx_clk_hw_gate("pcc_dma1_ch3", "xbar_ad_divplat", base + 0x14, 30);
c43a801a57890b Jacky Bai 2021-09-14  257  	clks[IMX8ULP_CLK_DMA1_CH4] = imx_clk_hw_gate("pcc_dma1_ch4", "xbar_ad_divplat", base + 0x18, 30);
c43a801a57890b Jacky Bai 2021-09-14  258  	clks[IMX8ULP_CLK_DMA1_CH5] = imx_clk_hw_gate("pcc_dma1_ch5", "xbar_ad_divplat", base + 0x1c, 30);
c43a801a57890b Jacky Bai 2021-09-14  259  	clks[IMX8ULP_CLK_DMA1_CH6] = imx_clk_hw_gate("pcc_dma1_ch6", "xbar_ad_divplat", base + 0x20, 30);
c43a801a57890b Jacky Bai 2021-09-14  260  	clks[IMX8ULP_CLK_DMA1_CH7] = imx_clk_hw_gate("pcc_dma1_ch7", "xbar_ad_divplat", base + 0x24, 30);
c43a801a57890b Jacky Bai 2021-09-14  261  	clks[IMX8ULP_CLK_DMA1_CH8] = imx_clk_hw_gate("pcc_dma1_ch8", "xbar_ad_divplat", base + 0x28, 30);
c43a801a57890b Jacky Bai 2021-09-14  262  	clks[IMX8ULP_CLK_DMA1_CH9] = imx_clk_hw_gate("pcc_dma1_ch9", "xbar_ad_divplat", base + 0x2c, 30);
c43a801a57890b Jacky Bai 2021-09-14  263  	clks[IMX8ULP_CLK_DMA1_CH10] = imx_clk_hw_gate("pcc_dma1_ch10", "xbar_ad_divplat", base + 0x30, 30);
c43a801a57890b Jacky Bai 2021-09-14  264  	clks[IMX8ULP_CLK_DMA1_CH11] = imx_clk_hw_gate("pcc_dma1_ch11", "xbar_ad_divplat", base + 0x34, 30);
c43a801a57890b Jacky Bai 2021-09-14  265  	clks[IMX8ULP_CLK_DMA1_CH12] = imx_clk_hw_gate("pcc_dma1_ch12", "xbar_ad_divplat", base + 0x38, 30);
c43a801a57890b Jacky Bai 2021-09-14  266  	clks[IMX8ULP_CLK_DMA1_CH13] = imx_clk_hw_gate("pcc_dma1_ch13", "xbar_ad_divplat", base + 0x3c, 30);
c43a801a57890b Jacky Bai 2021-09-14  267  	clks[IMX8ULP_CLK_DMA1_CH14] = imx_clk_hw_gate("pcc_dma1_ch14", "xbar_ad_divplat", base + 0x40, 30);
c43a801a57890b Jacky Bai 2021-09-14  268  	clks[IMX8ULP_CLK_DMA1_CH15] = imx_clk_hw_gate("pcc_dma1_ch15", "xbar_ad_divplat", base + 0x44, 30);
c43a801a57890b Jacky Bai 2021-09-14  269  	clks[IMX8ULP_CLK_DMA1_CH16] = imx_clk_hw_gate("pcc_dma1_ch16", "xbar_ad_divplat", base + 0x48, 30);
c43a801a57890b Jacky Bai 2021-09-14  270  	clks[IMX8ULP_CLK_DMA1_CH17] = imx_clk_hw_gate("pcc_dma1_ch17", "xbar_ad_divplat", base + 0x4c, 30);
c43a801a57890b Jacky Bai 2021-09-14  271  	clks[IMX8ULP_CLK_DMA1_CH18] = imx_clk_hw_gate("pcc_dma1_ch18", "xbar_ad_divplat", base + 0x50, 30);
c43a801a57890b Jacky Bai 2021-09-14  272  	clks[IMX8ULP_CLK_DMA1_CH19] = imx_clk_hw_gate("pcc_dma1_ch19", "xbar_ad_divplat", base + 0x54, 30);
c43a801a57890b Jacky Bai 2021-09-14  273  	clks[IMX8ULP_CLK_DMA1_CH20] = imx_clk_hw_gate("pcc_dma1_ch20", "xbar_ad_divplat", base + 0x58, 30);
c43a801a57890b Jacky Bai 2021-09-14  274  	clks[IMX8ULP_CLK_DMA1_CH21] = imx_clk_hw_gate("pcc_dma1_ch21", "xbar_ad_divplat", base + 0x5c, 30);
c43a801a57890b Jacky Bai 2021-09-14  275  	clks[IMX8ULP_CLK_DMA1_CH22] = imx_clk_hw_gate("pcc_dma1_ch22", "xbar_ad_divplat", base + 0x60, 30);
c43a801a57890b Jacky Bai 2021-09-14  276  	clks[IMX8ULP_CLK_DMA1_CH23] = imx_clk_hw_gate("pcc_dma1_ch23", "xbar_ad_divplat", base + 0x64, 30);
c43a801a57890b Jacky Bai 2021-09-14  277  	clks[IMX8ULP_CLK_DMA1_CH24] = imx_clk_hw_gate("pcc_dma1_ch24", "xbar_ad_divplat", base + 0x68, 30);
c43a801a57890b Jacky Bai 2021-09-14  278  	clks[IMX8ULP_CLK_DMA1_CH25] = imx_clk_hw_gate("pcc_dma1_ch25", "xbar_ad_divplat", base + 0x6c, 30);
c43a801a57890b Jacky Bai 2021-09-14  279  	clks[IMX8ULP_CLK_DMA1_CH26] = imx_clk_hw_gate("pcc_dma1_ch26", "xbar_ad_divplat", base + 0x70, 30);
c43a801a57890b Jacky Bai 2021-09-14  280  	clks[IMX8ULP_CLK_DMA1_CH27] = imx_clk_hw_gate("pcc_dma1_ch27", "xbar_ad_divplat", base + 0x74, 30);
c43a801a57890b Jacky Bai 2021-09-14  281  	clks[IMX8ULP_CLK_DMA1_CH28] = imx_clk_hw_gate("pcc_dma1_ch28", "xbar_ad_divplat", base + 0x78, 30);
c43a801a57890b Jacky Bai 2021-09-14  282  	clks[IMX8ULP_CLK_DMA1_CH29] = imx_clk_hw_gate("pcc_dma1_ch29", "xbar_ad_divplat", base + 0x7c, 30);
c43a801a57890b Jacky Bai 2021-09-14  283  	clks[IMX8ULP_CLK_DMA1_CH30] = imx_clk_hw_gate("pcc_dma1_ch30", "xbar_ad_divplat", base + 0x80, 30);
c43a801a57890b Jacky Bai 2021-09-14  284  	clks[IMX8ULP_CLK_DMA1_CH31] = imx_clk_hw_gate("pcc_dma1_ch31", "xbar_ad_divplat", base + 0x84, 30);
c43a801a57890b Jacky Bai 2021-09-14  285  	clks[IMX8ULP_CLK_MU0_B] = imx_clk_hw_gate("mu0_b", "xbar_ad_divplat", base + 0x88, 30);
c43a801a57890b Jacky Bai 2021-09-14  286  	clks[IMX8ULP_CLK_MU3_A] = imx_clk_hw_gate("mu3_a", "xbar_ad_divplat", base + 0x8c, 30);
c43a801a57890b Jacky Bai 2021-09-14  287  
c43a801a57890b Jacky Bai 2021-09-14  288  	imx_check_clk_hws(clks, clk_data->num);
c43a801a57890b Jacky Bai 2021-09-14  289  
c43a801a57890b Jacky Bai 2021-09-14  290  	ret = devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data);
c43a801a57890b Jacky Bai 2021-09-14  291  
c43a801a57890b Jacky Bai 2021-09-14  292  	imx_register_uart_clocks(1);
c43a801a57890b Jacky Bai 2021-09-14  293  
c43a801a57890b Jacky Bai 2021-09-14  294  	return ret;
c43a801a57890b Jacky Bai 2021-09-14  295  }
c43a801a57890b Jacky Bai 2021-09-14  296  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 6+ messages in thread

* drivers/clk/imx/clk-imx8ulp.c:71 imx8ulp_clk_cgc1_init() warn: passing zero to 'PTR_ERR'
@ 2022-01-23 21:48 kernel test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2022-01-23 21:48 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 31073 bytes --]

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Jacky Bai <ping.bai@nxp.com>
CC: Abel Vesa <abel.vesa@nxp.com>
CC: Peng Fan <peng.fan@nxp.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   dd81e1c7d5fb126e5fbc5c9e334d7b3ec29a16a0
commit: c43a801a57890b15e16a0502edf145d59c91baf7 clk: imx: Add clock driver for imx8ulp
date:   4 months ago
:::::: branch date: 6 hours ago
:::::: commit date: 4 months ago
config: powerpc64-randconfig-m031-20220120 (https://download.01.org/0day-ci/archive/20220124/202201240534.1bzkJnUu-lkp(a)intel.com/config)
compiler: powerpc64-linux-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/clk/imx/clk-imx8ulp.c:71 imx8ulp_clk_cgc1_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:153 imx8ulp_clk_cgc2_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:236 imx8ulp_clk_pcc3_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:315 imx8ulp_clk_pcc4_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:363 imx8ulp_clk_pcc5_init() warn: passing zero to 'PTR_ERR'

vim +/PTR_ERR +71 drivers/clk/imx/clk-imx8ulp.c

c43a801a57890b Jacky Bai 2021-09-14   50  
c43a801a57890b Jacky Bai 2021-09-14   51  static int imx8ulp_clk_cgc1_init(struct platform_device *pdev)
c43a801a57890b Jacky Bai 2021-09-14   52  {
c43a801a57890b Jacky Bai 2021-09-14   53  	struct device *dev = &pdev->dev;
c43a801a57890b Jacky Bai 2021-09-14   54  	struct clk_hw_onecell_data *clk_data;
c43a801a57890b Jacky Bai 2021-09-14   55  	struct clk_hw **clks;
c43a801a57890b Jacky Bai 2021-09-14   56  	void __iomem *base;
c43a801a57890b Jacky Bai 2021-09-14   57  
c43a801a57890b Jacky Bai 2021-09-14   58  	clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, IMX8ULP_CLK_CGC1_END),
c43a801a57890b Jacky Bai 2021-09-14   59  			   GFP_KERNEL);
c43a801a57890b Jacky Bai 2021-09-14   60  	if (!clk_data)
c43a801a57890b Jacky Bai 2021-09-14   61  		return -ENOMEM;
c43a801a57890b Jacky Bai 2021-09-14   62  
c43a801a57890b Jacky Bai 2021-09-14   63  	clk_data->num = IMX8ULP_CLK_CGC1_END;
c43a801a57890b Jacky Bai 2021-09-14   64  	clks = clk_data->hws;
c43a801a57890b Jacky Bai 2021-09-14   65  
c43a801a57890b Jacky Bai 2021-09-14   66  	clks[IMX8ULP_CLK_DUMMY] = imx_clk_hw_fixed("dummy", 0);
c43a801a57890b Jacky Bai 2021-09-14   67  
c43a801a57890b Jacky Bai 2021-09-14   68  	/* CGC1 */
c43a801a57890b Jacky Bai 2021-09-14   69  	base = devm_platform_ioremap_resource(pdev, 0);
c43a801a57890b Jacky Bai 2021-09-14   70  	if (WARN_ON(IS_ERR(base)))
c43a801a57890b Jacky Bai 2021-09-14  @71  		return PTR_ERR(base);
c43a801a57890b Jacky Bai 2021-09-14   72  
c43a801a57890b Jacky Bai 2021-09-14   73  	clks[IMX8ULP_CLK_SPLL2_PRE_SEL]	= imx_clk_hw_mux_flags("spll2_pre_sel", base + 0x510, 0, 1, pll_pre_sels, ARRAY_SIZE(pll_pre_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14   74  	clks[IMX8ULP_CLK_SPLL3_PRE_SEL]	= imx_clk_hw_mux_flags("spll3_pre_sel", base + 0x610, 0, 1, pll_pre_sels, ARRAY_SIZE(pll_pre_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14   75  
c43a801a57890b Jacky Bai 2021-09-14   76  	clks[IMX8ULP_CLK_SPLL2] = imx_clk_hw_pllv4(IMX_PLLV4_IMX8ULP, "spll2", "spll2_pre_sel", base + 0x500);
c43a801a57890b Jacky Bai 2021-09-14   77  	clks[IMX8ULP_CLK_SPLL3] = imx_clk_hw_pllv4(IMX_PLLV4_IMX8ULP, "spll3", "spll3_pre_sel", base + 0x600);
c43a801a57890b Jacky Bai 2021-09-14   78  	clks[IMX8ULP_CLK_SPLL3_VCODIV] = imx_clk_hw_divider("spll3_vcodiv", "spll3", base + 0x604, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14   79  
c43a801a57890b Jacky Bai 2021-09-14   80  	clks[IMX8ULP_CLK_SPLL3_PFD0] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd0", "spll3_vcodiv", base + 0x614, 0);
c43a801a57890b Jacky Bai 2021-09-14   81  	clks[IMX8ULP_CLK_SPLL3_PFD1] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd1", "spll3_vcodiv", base + 0x614, 1);
c43a801a57890b Jacky Bai 2021-09-14   82  	clks[IMX8ULP_CLK_SPLL3_PFD2] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd2", "spll3_vcodiv", base + 0x614, 2);
c43a801a57890b Jacky Bai 2021-09-14   83  	clks[IMX8ULP_CLK_SPLL3_PFD3] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd3", "spll3_vcodiv", base + 0x614, 3);
c43a801a57890b Jacky Bai 2021-09-14   84  
c43a801a57890b Jacky Bai 2021-09-14   85  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd0_div1_gate", "spll3_pfd0", base + 0x608, 7);
c43a801a57890b Jacky Bai 2021-09-14   86  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd0_div2_gate", "spll3_pfd0", base + 0x608, 15);
c43a801a57890b Jacky Bai 2021-09-14   87  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd1_div1_gate", "spll3_pfd1", base + 0x608, 23);
c43a801a57890b Jacky Bai 2021-09-14   88  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd1_div2_gate", "spll3_pfd1", base + 0x608, 31);
c43a801a57890b Jacky Bai 2021-09-14   89  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd2_div1_gate", "spll3_pfd2", base + 0x60c, 7);
c43a801a57890b Jacky Bai 2021-09-14   90  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd2_div2_gate", "spll3_pfd2", base + 0x60c, 15);
c43a801a57890b Jacky Bai 2021-09-14   91  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd3_div1_gate", "spll3_pfd3", base + 0x60c, 23);
c43a801a57890b Jacky Bai 2021-09-14   92  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd3_div2_gate", "spll3_pfd3", base + 0x60c, 31);
c43a801a57890b Jacky Bai 2021-09-14   93  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV1] = imx_clk_hw_divider("spll3_pfd0_div1", "spll3_pfd0_div1_gate", base + 0x608, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14   94  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV2] = imx_clk_hw_divider("spll3_pfd0_div2", "spll3_pfd0_div2_gate", base + 0x608, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14   95  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV1] = imx_clk_hw_divider("spll3_pfd1_div1", "spll3_pfd1_div1_gate", base + 0x608, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14   96  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV2] = imx_clk_hw_divider("spll3_pfd1_div2", "spll3_pfd1_div2_gate", base + 0x608, 24, 6);
c43a801a57890b Jacky Bai 2021-09-14   97  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV1] = imx_clk_hw_divider("spll3_pfd2_div1", "spll3_pfd2_div1_gate", base + 0x60c, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14   98  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV2] = imx_clk_hw_divider("spll3_pfd2_div2", "spll3_pfd2_div2_gate", base + 0x60c, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14   99  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV1] = imx_clk_hw_divider("spll3_pfd3_div1", "spll3_pfd3_div1_gate", base + 0x60c, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  100  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV2] = imx_clk_hw_divider("spll3_pfd3_div2", "spll3_pfd3_div2_gate", base + 0x60c, 24, 6);
c43a801a57890b Jacky Bai 2021-09-14  101  
c43a801a57890b Jacky Bai 2021-09-14  102  	clks[IMX8ULP_CLK_A35_SEL] = imx_clk_hw_mux2("a35_sel", base + 0x14, 28, 2, a35_sels, ARRAY_SIZE(a35_sels));
c43a801a57890b Jacky Bai 2021-09-14  103  	clks[IMX8ULP_CLK_A35_DIV] = imx_clk_hw_divider_flags("a35_div", "a35_sel", base + 0x14, 21, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  104  
c43a801a57890b Jacky Bai 2021-09-14  105  	clks[IMX8ULP_CLK_NIC_SEL] = imx_clk_hw_mux2("nic_sel", base + 0x34, 28, 2, nic_sels, ARRAY_SIZE(nic_sels));
c43a801a57890b Jacky Bai 2021-09-14  106  	clks[IMX8ULP_CLK_NIC_AD_DIVPLAT] = imx_clk_hw_divider_flags("nic_ad_divplat", "nic_sel", base + 0x34, 21, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  107  	clks[IMX8ULP_CLK_NIC_PER_DIVPLAT] = imx_clk_hw_divider_flags("nic_per_divplat", "nic_ad_divplat", base + 0x34, 14, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  108  	clks[IMX8ULP_CLK_XBAR_AD_DIVPLAT] = imx_clk_hw_divider_flags("xbar_ad_divplat", "nic_ad_divplat", base + 0x38, 14, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  109  	clks[IMX8ULP_CLK_XBAR_DIVBUS] = imx_clk_hw_divider_flags("xbar_divbus", "nic_ad_divplat", base + 0x38, 7, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  110  	clks[IMX8ULP_CLK_XBAR_AD_SLOW] = imx_clk_hw_divider_flags("xbar_ad_slow", "nic_ad_divplat", base + 0x38, 0, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  111  
c43a801a57890b Jacky Bai 2021-09-14  112  	clks[IMX8ULP_CLK_SOSC_DIV1_GATE] = imx_clk_hw_gate_dis("sosc_div1_gate", "sosc", base + 0x108, 7);
c43a801a57890b Jacky Bai 2021-09-14  113  	clks[IMX8ULP_CLK_SOSC_DIV2_GATE] = imx_clk_hw_gate_dis("sosc_div2_gate", "sosc", base + 0x108, 15);
c43a801a57890b Jacky Bai 2021-09-14  114  	clks[IMX8ULP_CLK_SOSC_DIV3_GATE] = imx_clk_hw_gate_dis("sosc_div3_gate", "sosc", base + 0x108, 23);
c43a801a57890b Jacky Bai 2021-09-14  115  	clks[IMX8ULP_CLK_SOSC_DIV1] = imx_clk_hw_divider("sosc_div1", "sosc_div1_gate", base + 0x108, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  116  	clks[IMX8ULP_CLK_SOSC_DIV2] = imx_clk_hw_divider("sosc_div2", "sosc_div2_gate", base + 0x108, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  117  	clks[IMX8ULP_CLK_SOSC_DIV3] = imx_clk_hw_divider("sosc_div3", "sosc_div3_gate", base + 0x108, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  118  
c43a801a57890b Jacky Bai 2021-09-14  119  	clks[IMX8ULP_CLK_FROSC_DIV1_GATE] = imx_clk_hw_gate_dis("frosc_div1_gate", "frosc", base + 0x208, 7);
c43a801a57890b Jacky Bai 2021-09-14  120  	clks[IMX8ULP_CLK_FROSC_DIV2_GATE] = imx_clk_hw_gate_dis("frosc_div2_gate", "frosc", base + 0x208, 15);
c43a801a57890b Jacky Bai 2021-09-14  121  	clks[IMX8ULP_CLK_FROSC_DIV3_GATE] = imx_clk_hw_gate_dis("frosc_div3_gate", "frosc", base + 0x208, 23);
c43a801a57890b Jacky Bai 2021-09-14  122  	clks[IMX8ULP_CLK_FROSC_DIV1] = imx_clk_hw_divider("frosc_div1", "frosc_div1_gate", base + 0x208, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  123  	clks[IMX8ULP_CLK_FROSC_DIV2] = imx_clk_hw_divider("frosc_div2", "frosc_div2_gate", base + 0x208, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  124  	clks[IMX8ULP_CLK_FROSC_DIV3] = imx_clk_hw_divider("frosc_div3", "frosc_div3_gate", base + 0x208, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  125  	clks[IMX8ULP_CLK_AUD_CLK1] = imx_clk_hw_mux2("aud_clk1", base + 0x900, 0, 3, aud_clk1_sels, ARRAY_SIZE(aud_clk1_sels));
c43a801a57890b Jacky Bai 2021-09-14  126  	clks[IMX8ULP_CLK_SAI4_SEL] = imx_clk_hw_mux2("sai4_sel", base + 0x904, 0, 2, sai45_sels, ARRAY_SIZE(sai45_sels));
c43a801a57890b Jacky Bai 2021-09-14  127  	clks[IMX8ULP_CLK_SAI5_SEL] = imx_clk_hw_mux2("sai5_sel", base + 0x904, 8, 2, sai45_sels, ARRAY_SIZE(sai45_sels));
c43a801a57890b Jacky Bai 2021-09-14  128  	clks[IMX8ULP_CLK_ENET_TS_SEL] = imx_clk_hw_mux2("enet_ts", base + 0x700, 24, 3, enet_ts_sels, ARRAY_SIZE(enet_ts_sels));
c43a801a57890b Jacky Bai 2021-09-14  129  
c43a801a57890b Jacky Bai 2021-09-14  130  	imx_check_clk_hws(clks, clk_data->num);
c43a801a57890b Jacky Bai 2021-09-14  131  
c43a801a57890b Jacky Bai 2021-09-14  132  	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data);
c43a801a57890b Jacky Bai 2021-09-14  133  }
c43a801a57890b Jacky Bai 2021-09-14  134  
c43a801a57890b Jacky Bai 2021-09-14  135  static int imx8ulp_clk_cgc2_init(struct platform_device *pdev)
c43a801a57890b Jacky Bai 2021-09-14  136  {
c43a801a57890b Jacky Bai 2021-09-14  137  	struct device *dev = &pdev->dev;
c43a801a57890b Jacky Bai 2021-09-14  138  	struct clk_hw_onecell_data *clk_data;
c43a801a57890b Jacky Bai 2021-09-14  139  	struct clk_hw **clks;
c43a801a57890b Jacky Bai 2021-09-14  140  	void __iomem *base;
c43a801a57890b Jacky Bai 2021-09-14  141  
c43a801a57890b Jacky Bai 2021-09-14  142  	clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, IMX8ULP_CLK_CGC2_END),
c43a801a57890b Jacky Bai 2021-09-14  143  			   GFP_KERNEL);
c43a801a57890b Jacky Bai 2021-09-14  144  	if (!clk_data)
c43a801a57890b Jacky Bai 2021-09-14  145  		return -ENOMEM;
c43a801a57890b Jacky Bai 2021-09-14  146  
c43a801a57890b Jacky Bai 2021-09-14  147  	clk_data->num = IMX8ULP_CLK_CGC2_END;
c43a801a57890b Jacky Bai 2021-09-14  148  	clks = clk_data->hws;
c43a801a57890b Jacky Bai 2021-09-14  149  
c43a801a57890b Jacky Bai 2021-09-14  150  	/* CGC2 */
c43a801a57890b Jacky Bai 2021-09-14  151  	base = devm_platform_ioremap_resource(pdev, 0);
c43a801a57890b Jacky Bai 2021-09-14  152  	if (WARN_ON(IS_ERR(base)))
c43a801a57890b Jacky Bai 2021-09-14 @153  		return PTR_ERR(base);
c43a801a57890b Jacky Bai 2021-09-14  154  
c43a801a57890b Jacky Bai 2021-09-14  155  	clks[IMX8ULP_CLK_PLL4_PRE_SEL] = imx_clk_hw_mux_flags("pll4_pre_sel", base + 0x610, 0, 1, pll_pre_sels, ARRAY_SIZE(pll_pre_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14  156  
c43a801a57890b Jacky Bai 2021-09-14  157  	clks[IMX8ULP_CLK_PLL4]	= imx_clk_hw_pllv4(IMX_PLLV4_IMX8ULP, "pll4", "pll4_pre_sel", base + 0x600);
c43a801a57890b Jacky Bai 2021-09-14  158  	clks[IMX8ULP_CLK_PLL4_VCODIV] = imx_clk_hw_divider("pll4_vcodiv", "pll4", base + 0x604, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  159  
c43a801a57890b Jacky Bai 2021-09-14  160  	clks[IMX8ULP_CLK_HIFI_SEL] = imx_clk_hw_mux_flags("hifi_sel", base + 0x14, 28, 3, hifi_sels, ARRAY_SIZE(hifi_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14  161  	clks[IMX8ULP_CLK_HIFI_DIVCORE] = imx_clk_hw_divider("hifi_core_div", "hifi_sel", base + 0x14, 21, 6);
c43a801a57890b Jacky Bai 2021-09-14  162  	clks[IMX8ULP_CLK_HIFI_DIVPLAT] = imx_clk_hw_divider("hifi_plat_div", "hifi_core_div", base + 0x14, 14, 6);
c43a801a57890b Jacky Bai 2021-09-14  163  
c43a801a57890b Jacky Bai 2021-09-14  164  	clks[IMX8ULP_CLK_DDR_SEL] = imx_clk_hw_mux_flags("ddr_sel", base + 0x40, 28, 3, ddr_sels, ARRAY_SIZE(ddr_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14  165  	clks[IMX8ULP_CLK_DDR_DIV] = imx_clk_hw_divider_flags("ddr_div", "ddr_sel", base + 0x40, 21, 6, CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  166  	clks[IMX8ULP_CLK_LPAV_AXI_SEL] = imx_clk_hw_mux("lpav_sel", base + 0x3c, 28, 2, lpav_sels, ARRAY_SIZE(lpav_sels));
c43a801a57890b Jacky Bai 2021-09-14  167  	clks[IMX8ULP_CLK_LPAV_AXI_DIV] = imx_clk_hw_divider_flags("lpav_axi_div", "lpav_sel", base + 0x3c, 21, 6, CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  168  	clks[IMX8ULP_CLK_LPAV_AHB_DIV] = imx_clk_hw_divider_flags("lpav_ahb_div", "lpav_axi_div", base + 0x3c, 14, 6, CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  169  	clks[IMX8ULP_CLK_LPAV_BUS_DIV] = imx_clk_hw_divider_flags("lpav_bus_div", "lpav_axi_div", base + 0x3c, 7, 6, CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  170  
c43a801a57890b Jacky Bai 2021-09-14  171  	clks[IMX8ULP_CLK_PLL4_PFD0] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd0", "pll4_vcodiv", base + 0x614, 0);
c43a801a57890b Jacky Bai 2021-09-14  172  	clks[IMX8ULP_CLK_PLL4_PFD1] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd1", "pll4_vcodiv", base + 0x614, 1);
c43a801a57890b Jacky Bai 2021-09-14  173  	clks[IMX8ULP_CLK_PLL4_PFD2] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd2", "pll4_vcodiv", base + 0x614, 2);
c43a801a57890b Jacky Bai 2021-09-14  174  	clks[IMX8ULP_CLK_PLL4_PFD3] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd3", "pll4_vcodiv", base + 0x614, 3);
c43a801a57890b Jacky Bai 2021-09-14  175  
c43a801a57890b Jacky Bai 2021-09-14  176  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd0_div1_gate", "pll4_pfd0", base + 0x608, 7);
c43a801a57890b Jacky Bai 2021-09-14  177  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd0_div2_gate", "pll4_pfd0", base + 0x608, 15);
c43a801a57890b Jacky Bai 2021-09-14  178  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd1_div1_gate", "pll4_pfd1", base + 0x608, 23);
c43a801a57890b Jacky Bai 2021-09-14  179  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd1_div2_gate", "pll4_pfd1", base + 0x608, 31);
c43a801a57890b Jacky Bai 2021-09-14  180  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd2_div1_gate", "pll4_pfd2", base + 0x60c, 7);
c43a801a57890b Jacky Bai 2021-09-14  181  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd2_div2_gate", "pll4_pfd2", base + 0x60c, 15);
c43a801a57890b Jacky Bai 2021-09-14  182  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd3_div1_gate", "pll4_pfd3", base + 0x60c, 23);
c43a801a57890b Jacky Bai 2021-09-14  183  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd3_div2_gate", "pll4_pfd3", base + 0x60c, 31);
c43a801a57890b Jacky Bai 2021-09-14  184  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV1] = imx_clk_hw_divider("pll4_pfd0_div1", "pll4_pfd0_div1_gate", base + 0x608, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  185  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV2] = imx_clk_hw_divider("pll4_pfd0_div2", "pll4_pfd0_div2_gate", base + 0x608, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  186  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV1] = imx_clk_hw_divider("pll4_pfd1_div1", "pll4_pfd1_div1_gate", base + 0x608, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  187  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV2] = imx_clk_hw_divider("pll4_pfd1_div2", "pll4_pfd1_div2_gate", base + 0x608, 24, 6);
c43a801a57890b Jacky Bai 2021-09-14  188  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV1] = imx_clk_hw_divider("pll4_pfd2_div1", "pll4_pfd2_div1_gate", base + 0x60c, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  189  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV2] = imx_clk_hw_divider("pll4_pfd2_div2", "pll4_pfd2_div2_gate", base + 0x60c, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  190  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV1] = imx_clk_hw_divider("pll4_pfd3_div1", "pll4_pfd3_div1_gate", base + 0x60c, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  191  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV2] = imx_clk_hw_divider("pll4_pfd3_div2", "pll4_pfd3_div2_gate", base + 0x60c, 24, 6);
c43a801a57890b Jacky Bai 2021-09-14  192  
c43a801a57890b Jacky Bai 2021-09-14  193  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV1_GATE] = imx_clk_hw_gate_dis("cgc2_sosc_div1_gate", "sosc", base + 0x108, 7);
c43a801a57890b Jacky Bai 2021-09-14  194  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV2_GATE] = imx_clk_hw_gate_dis("cgc2_sosc_div2_gate", "sosc", base + 0x108, 15);
c43a801a57890b Jacky Bai 2021-09-14  195  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV3_GATE] = imx_clk_hw_gate_dis("cgc2_sosc_div3_gate", "sosc", base + 0x108, 23);
c43a801a57890b Jacky Bai 2021-09-14  196  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV1] = imx_clk_hw_divider("cgc2_sosc_div1", "cgc2_sosc_div1_gate", base + 0x108, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  197  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV2] = imx_clk_hw_divider("cgc2_sosc_div2", "cgc2_sosc_div2_gate", base + 0x108, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  198  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV3] = imx_clk_hw_divider("cgc2_sosc_div3", "cgc2_sosc_div3_gate", base + 0x108, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  199  
c43a801a57890b Jacky Bai 2021-09-14  200  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV1_GATE] = imx_clk_hw_gate_dis("cgc2_frosc_div1_gate", "frosc", base + 0x208, 7);
c43a801a57890b Jacky Bai 2021-09-14  201  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV2_GATE] = imx_clk_hw_gate_dis("cgc2_frosc_div2_gate", "frosc", base + 0x208, 15);
c43a801a57890b Jacky Bai 2021-09-14  202  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV3_GATE] = imx_clk_hw_gate_dis("cgc2_frosc_div3_gate", "frosc", base + 0x208, 23);
c43a801a57890b Jacky Bai 2021-09-14  203  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV1] = imx_clk_hw_divider("cgc2_frosc_div1", "cgc2_frosc_div1_gate", base + 0x208, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  204  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV2] = imx_clk_hw_divider("cgc2_frosc_div2", "cgc2_frosc_div2_gate", base + 0x208, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  205  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV3] = imx_clk_hw_divider("cgc2_frosc_div3", "cgc2_frosc_div3_gate", base + 0x208, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  206  	clks[IMX8ULP_CLK_AUD_CLK2]  = imx_clk_hw_mux2("aud_clk2", base + 0x900, 0, 3, aud_clk2_sels, ARRAY_SIZE(aud_clk2_sels));
c43a801a57890b Jacky Bai 2021-09-14  207  	clks[IMX8ULP_CLK_SAI6_SEL]  = imx_clk_hw_mux2("sai6_sel", base + 0x904, 0, 3, sai67_sels, ARRAY_SIZE(sai67_sels));
c43a801a57890b Jacky Bai 2021-09-14  208  	clks[IMX8ULP_CLK_SAI7_SEL]  = imx_clk_hw_mux2("sai7_sel", base + 0x904, 8, 3, sai67_sels, ARRAY_SIZE(sai67_sels));
c43a801a57890b Jacky Bai 2021-09-14  209  	clks[IMX8ULP_CLK_SPDIF_SEL] = imx_clk_hw_mux2("spdif_sel", base + 0x910, 0, 3, sai67_sels, ARRAY_SIZE(sai67_sels));
c43a801a57890b Jacky Bai 2021-09-14  210  	clks[IMX8ULP_CLK_DSI_PHY_REF] = imx_clk_hw_fixed("dsi_phy_ref", 24000000);
c43a801a57890b Jacky Bai 2021-09-14  211  
c43a801a57890b Jacky Bai 2021-09-14  212  	imx_check_clk_hws(clks, clk_data->num);
c43a801a57890b Jacky Bai 2021-09-14  213  
c43a801a57890b Jacky Bai 2021-09-14  214  	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data);
c43a801a57890b Jacky Bai 2021-09-14  215  }
c43a801a57890b Jacky Bai 2021-09-14  216  
c43a801a57890b Jacky Bai 2021-09-14  217  static int imx8ulp_clk_pcc3_init(struct platform_device *pdev)
c43a801a57890b Jacky Bai 2021-09-14  218  {
c43a801a57890b Jacky Bai 2021-09-14  219  	struct device *dev = &pdev->dev;
c43a801a57890b Jacky Bai 2021-09-14  220  	struct clk_hw_onecell_data *clk_data;
c43a801a57890b Jacky Bai 2021-09-14  221  	struct clk_hw **clks;
c43a801a57890b Jacky Bai 2021-09-14  222  	void __iomem *base;
c43a801a57890b Jacky Bai 2021-09-14  223  	int ret;
c43a801a57890b Jacky Bai 2021-09-14  224  
c43a801a57890b Jacky Bai 2021-09-14  225  	clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, IMX8ULP_CLK_PCC3_END),
c43a801a57890b Jacky Bai 2021-09-14  226  			   GFP_KERNEL);
c43a801a57890b Jacky Bai 2021-09-14  227  	if (!clk_data)
c43a801a57890b Jacky Bai 2021-09-14  228  		return -ENOMEM;
c43a801a57890b Jacky Bai 2021-09-14  229  
c43a801a57890b Jacky Bai 2021-09-14  230  	clk_data->num = IMX8ULP_CLK_PCC3_END;
c43a801a57890b Jacky Bai 2021-09-14  231  	clks = clk_data->hws;
c43a801a57890b Jacky Bai 2021-09-14  232  
c43a801a57890b Jacky Bai 2021-09-14  233  	/* PCC3 */
c43a801a57890b Jacky Bai 2021-09-14  234  	base = devm_platform_ioremap_resource(pdev, 0);
c43a801a57890b Jacky Bai 2021-09-14  235  	if (WARN_ON(IS_ERR(base)))
c43a801a57890b Jacky Bai 2021-09-14 @236  		return PTR_ERR(base);
c43a801a57890b Jacky Bai 2021-09-14  237  
c43a801a57890b Jacky Bai 2021-09-14  238  	clks[IMX8ULP_CLK_WDOG3] = imx8ulp_clk_hw_composite("wdog3", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xa8, 1);
c43a801a57890b Jacky Bai 2021-09-14  239  	clks[IMX8ULP_CLK_WDOG4] = imx8ulp_clk_hw_composite("wdog4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xac, 1);
c43a801a57890b Jacky Bai 2021-09-14  240  	clks[IMX8ULP_CLK_LPIT1] = imx8ulp_clk_hw_composite("lpit1", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xc8, 1);
c43a801a57890b Jacky Bai 2021-09-14  241  	clks[IMX8ULP_CLK_TPM4] = imx8ulp_clk_hw_composite("tpm4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xcc, 1);
c43a801a57890b Jacky Bai 2021-09-14  242  	clks[IMX8ULP_CLK_TPM5] = imx8ulp_clk_hw_composite("tpm5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xd0, 1);
c43a801a57890b Jacky Bai 2021-09-14  243  	clks[IMX8ULP_CLK_FLEXIO1] = imx8ulp_clk_hw_composite("flexio1", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xd4, 1);
c43a801a57890b Jacky Bai 2021-09-14  244  	clks[IMX8ULP_CLK_I3C2] = imx8ulp_clk_hw_composite("i3c2", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xd8, 1);
c43a801a57890b Jacky Bai 2021-09-14  245  	clks[IMX8ULP_CLK_LPI2C4] = imx8ulp_clk_hw_composite("lpi2c4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xdc, 1);
c43a801a57890b Jacky Bai 2021-09-14  246  	clks[IMX8ULP_CLK_LPI2C5] = imx8ulp_clk_hw_composite("lpi2c5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xe0, 1);
c43a801a57890b Jacky Bai 2021-09-14  247  	clks[IMX8ULP_CLK_LPUART4] = imx8ulp_clk_hw_composite("lpuart4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xe4, 1);
c43a801a57890b Jacky Bai 2021-09-14  248  	clks[IMX8ULP_CLK_LPUART5] = imx8ulp_clk_hw_composite("lpuart5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xe8, 1);
c43a801a57890b Jacky Bai 2021-09-14  249  	clks[IMX8ULP_CLK_LPSPI4] = imx8ulp_clk_hw_composite("lpspi4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xec, 1);
c43a801a57890b Jacky Bai 2021-09-14  250  	clks[IMX8ULP_CLK_LPSPI5] = imx8ulp_clk_hw_composite("lpspi5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xf0, 1);
c43a801a57890b Jacky Bai 2021-09-14  251  
c43a801a57890b Jacky Bai 2021-09-14  252  	clks[IMX8ULP_CLK_DMA1_MP] = imx_clk_hw_gate("pcc_dma1_mp", "xbar_ad_divplat", base + 0x4, 30);
c43a801a57890b Jacky Bai 2021-09-14  253  	clks[IMX8ULP_CLK_DMA1_CH0] = imx_clk_hw_gate("pcc_dma1_ch0", "xbar_ad_divplat", base + 0x8, 30);
c43a801a57890b Jacky Bai 2021-09-14  254  	clks[IMX8ULP_CLK_DMA1_CH1] = imx_clk_hw_gate("pcc_dma1_ch1", "xbar_ad_divplat", base + 0xc, 30);
c43a801a57890b Jacky Bai 2021-09-14  255  	clks[IMX8ULP_CLK_DMA1_CH2] = imx_clk_hw_gate("pcc_dma1_ch2", "xbar_ad_divplat", base + 0x10, 30);
c43a801a57890b Jacky Bai 2021-09-14  256  	clks[IMX8ULP_CLK_DMA1_CH3] = imx_clk_hw_gate("pcc_dma1_ch3", "xbar_ad_divplat", base + 0x14, 30);
c43a801a57890b Jacky Bai 2021-09-14  257  	clks[IMX8ULP_CLK_DMA1_CH4] = imx_clk_hw_gate("pcc_dma1_ch4", "xbar_ad_divplat", base + 0x18, 30);
c43a801a57890b Jacky Bai 2021-09-14  258  	clks[IMX8ULP_CLK_DMA1_CH5] = imx_clk_hw_gate("pcc_dma1_ch5", "xbar_ad_divplat", base + 0x1c, 30);
c43a801a57890b Jacky Bai 2021-09-14  259  	clks[IMX8ULP_CLK_DMA1_CH6] = imx_clk_hw_gate("pcc_dma1_ch6", "xbar_ad_divplat", base + 0x20, 30);
c43a801a57890b Jacky Bai 2021-09-14  260  	clks[IMX8ULP_CLK_DMA1_CH7] = imx_clk_hw_gate("pcc_dma1_ch7", "xbar_ad_divplat", base + 0x24, 30);
c43a801a57890b Jacky Bai 2021-09-14  261  	clks[IMX8ULP_CLK_DMA1_CH8] = imx_clk_hw_gate("pcc_dma1_ch8", "xbar_ad_divplat", base + 0x28, 30);
c43a801a57890b Jacky Bai 2021-09-14  262  	clks[IMX8ULP_CLK_DMA1_CH9] = imx_clk_hw_gate("pcc_dma1_ch9", "xbar_ad_divplat", base + 0x2c, 30);
c43a801a57890b Jacky Bai 2021-09-14  263  	clks[IMX8ULP_CLK_DMA1_CH10] = imx_clk_hw_gate("pcc_dma1_ch10", "xbar_ad_divplat", base + 0x30, 30);
c43a801a57890b Jacky Bai 2021-09-14  264  	clks[IMX8ULP_CLK_DMA1_CH11] = imx_clk_hw_gate("pcc_dma1_ch11", "xbar_ad_divplat", base + 0x34, 30);
c43a801a57890b Jacky Bai 2021-09-14  265  	clks[IMX8ULP_CLK_DMA1_CH12] = imx_clk_hw_gate("pcc_dma1_ch12", "xbar_ad_divplat", base + 0x38, 30);
c43a801a57890b Jacky Bai 2021-09-14  266  	clks[IMX8ULP_CLK_DMA1_CH13] = imx_clk_hw_gate("pcc_dma1_ch13", "xbar_ad_divplat", base + 0x3c, 30);
c43a801a57890b Jacky Bai 2021-09-14  267  	clks[IMX8ULP_CLK_DMA1_CH14] = imx_clk_hw_gate("pcc_dma1_ch14", "xbar_ad_divplat", base + 0x40, 30);
c43a801a57890b Jacky Bai 2021-09-14  268  	clks[IMX8ULP_CLK_DMA1_CH15] = imx_clk_hw_gate("pcc_dma1_ch15", "xbar_ad_divplat", base + 0x44, 30);
c43a801a57890b Jacky Bai 2021-09-14  269  	clks[IMX8ULP_CLK_DMA1_CH16] = imx_clk_hw_gate("pcc_dma1_ch16", "xbar_ad_divplat", base + 0x48, 30);
c43a801a57890b Jacky Bai 2021-09-14  270  	clks[IMX8ULP_CLK_DMA1_CH17] = imx_clk_hw_gate("pcc_dma1_ch17", "xbar_ad_divplat", base + 0x4c, 30);
c43a801a57890b Jacky Bai 2021-09-14  271  	clks[IMX8ULP_CLK_DMA1_CH18] = imx_clk_hw_gate("pcc_dma1_ch18", "xbar_ad_divplat", base + 0x50, 30);
c43a801a57890b Jacky Bai 2021-09-14  272  	clks[IMX8ULP_CLK_DMA1_CH19] = imx_clk_hw_gate("pcc_dma1_ch19", "xbar_ad_divplat", base + 0x54, 30);
c43a801a57890b Jacky Bai 2021-09-14  273  	clks[IMX8ULP_CLK_DMA1_CH20] = imx_clk_hw_gate("pcc_dma1_ch20", "xbar_ad_divplat", base + 0x58, 30);
c43a801a57890b Jacky Bai 2021-09-14  274  	clks[IMX8ULP_CLK_DMA1_CH21] = imx_clk_hw_gate("pcc_dma1_ch21", "xbar_ad_divplat", base + 0x5c, 30);
c43a801a57890b Jacky Bai 2021-09-14  275  	clks[IMX8ULP_CLK_DMA1_CH22] = imx_clk_hw_gate("pcc_dma1_ch22", "xbar_ad_divplat", base + 0x60, 30);
c43a801a57890b Jacky Bai 2021-09-14  276  	clks[IMX8ULP_CLK_DMA1_CH23] = imx_clk_hw_gate("pcc_dma1_ch23", "xbar_ad_divplat", base + 0x64, 30);
c43a801a57890b Jacky Bai 2021-09-14  277  	clks[IMX8ULP_CLK_DMA1_CH24] = imx_clk_hw_gate("pcc_dma1_ch24", "xbar_ad_divplat", base + 0x68, 30);
c43a801a57890b Jacky Bai 2021-09-14  278  	clks[IMX8ULP_CLK_DMA1_CH25] = imx_clk_hw_gate("pcc_dma1_ch25", "xbar_ad_divplat", base + 0x6c, 30);
c43a801a57890b Jacky Bai 2021-09-14  279  	clks[IMX8ULP_CLK_DMA1_CH26] = imx_clk_hw_gate("pcc_dma1_ch26", "xbar_ad_divplat", base + 0x70, 30);
c43a801a57890b Jacky Bai 2021-09-14  280  	clks[IMX8ULP_CLK_DMA1_CH27] = imx_clk_hw_gate("pcc_dma1_ch27", "xbar_ad_divplat", base + 0x74, 30);
c43a801a57890b Jacky Bai 2021-09-14  281  	clks[IMX8ULP_CLK_DMA1_CH28] = imx_clk_hw_gate("pcc_dma1_ch28", "xbar_ad_divplat", base + 0x78, 30);
c43a801a57890b Jacky Bai 2021-09-14  282  	clks[IMX8ULP_CLK_DMA1_CH29] = imx_clk_hw_gate("pcc_dma1_ch29", "xbar_ad_divplat", base + 0x7c, 30);
c43a801a57890b Jacky Bai 2021-09-14  283  	clks[IMX8ULP_CLK_DMA1_CH30] = imx_clk_hw_gate("pcc_dma1_ch30", "xbar_ad_divplat", base + 0x80, 30);
c43a801a57890b Jacky Bai 2021-09-14  284  	clks[IMX8ULP_CLK_DMA1_CH31] = imx_clk_hw_gate("pcc_dma1_ch31", "xbar_ad_divplat", base + 0x84, 30);
c43a801a57890b Jacky Bai 2021-09-14  285  	clks[IMX8ULP_CLK_MU0_B] = imx_clk_hw_gate("mu0_b", "xbar_ad_divplat", base + 0x88, 30);
c43a801a57890b Jacky Bai 2021-09-14  286  	clks[IMX8ULP_CLK_MU3_A] = imx_clk_hw_gate("mu3_a", "xbar_ad_divplat", base + 0x8c, 30);
c43a801a57890b Jacky Bai 2021-09-14  287  
c43a801a57890b Jacky Bai 2021-09-14  288  	imx_check_clk_hws(clks, clk_data->num);
c43a801a57890b Jacky Bai 2021-09-14  289  
c43a801a57890b Jacky Bai 2021-09-14  290  	ret = devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data);
c43a801a57890b Jacky Bai 2021-09-14  291  
c43a801a57890b Jacky Bai 2021-09-14  292  	imx_register_uart_clocks(1);
c43a801a57890b Jacky Bai 2021-09-14  293  
c43a801a57890b Jacky Bai 2021-09-14  294  	return ret;
c43a801a57890b Jacky Bai 2021-09-14  295  }
c43a801a57890b Jacky Bai 2021-09-14  296  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 6+ messages in thread

* drivers/clk/imx/clk-imx8ulp.c:71 imx8ulp_clk_cgc1_init() warn: passing zero to 'PTR_ERR'
@ 2022-02-09  0:43 kernel test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2022-02-09  0:43 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 31069 bytes --]

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Jacky Bai <ping.bai@nxp.com>
CC: Abel Vesa <abel.vesa@nxp.com>
CC: Peng Fan <peng.fan@nxp.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   e6251ab4551f51fa4cee03523e08051898c3ce82
commit: c43a801a57890b15e16a0502edf145d59c91baf7 clk: imx: Add clock driver for imx8ulp
date:   4 months ago
:::::: branch date: 5 hours ago
:::::: commit date: 4 months ago
config: powerpc-randconfig-m031-20220208 (https://download.01.org/0day-ci/archive/20220209/202202090817.JbTXwBJd-lkp(a)intel.com/config)
compiler: powerpc-linux-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/clk/imx/clk-imx8ulp.c:71 imx8ulp_clk_cgc1_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:153 imx8ulp_clk_cgc2_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:236 imx8ulp_clk_pcc3_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:315 imx8ulp_clk_pcc4_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:363 imx8ulp_clk_pcc5_init() warn: passing zero to 'PTR_ERR'

vim +/PTR_ERR +71 drivers/clk/imx/clk-imx8ulp.c

c43a801a57890b Jacky Bai 2021-09-14   50  
c43a801a57890b Jacky Bai 2021-09-14   51  static int imx8ulp_clk_cgc1_init(struct platform_device *pdev)
c43a801a57890b Jacky Bai 2021-09-14   52  {
c43a801a57890b Jacky Bai 2021-09-14   53  	struct device *dev = &pdev->dev;
c43a801a57890b Jacky Bai 2021-09-14   54  	struct clk_hw_onecell_data *clk_data;
c43a801a57890b Jacky Bai 2021-09-14   55  	struct clk_hw **clks;
c43a801a57890b Jacky Bai 2021-09-14   56  	void __iomem *base;
c43a801a57890b Jacky Bai 2021-09-14   57  
c43a801a57890b Jacky Bai 2021-09-14   58  	clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, IMX8ULP_CLK_CGC1_END),
c43a801a57890b Jacky Bai 2021-09-14   59  			   GFP_KERNEL);
c43a801a57890b Jacky Bai 2021-09-14   60  	if (!clk_data)
c43a801a57890b Jacky Bai 2021-09-14   61  		return -ENOMEM;
c43a801a57890b Jacky Bai 2021-09-14   62  
c43a801a57890b Jacky Bai 2021-09-14   63  	clk_data->num = IMX8ULP_CLK_CGC1_END;
c43a801a57890b Jacky Bai 2021-09-14   64  	clks = clk_data->hws;
c43a801a57890b Jacky Bai 2021-09-14   65  
c43a801a57890b Jacky Bai 2021-09-14   66  	clks[IMX8ULP_CLK_DUMMY] = imx_clk_hw_fixed("dummy", 0);
c43a801a57890b Jacky Bai 2021-09-14   67  
c43a801a57890b Jacky Bai 2021-09-14   68  	/* CGC1 */
c43a801a57890b Jacky Bai 2021-09-14   69  	base = devm_platform_ioremap_resource(pdev, 0);
c43a801a57890b Jacky Bai 2021-09-14   70  	if (WARN_ON(IS_ERR(base)))
c43a801a57890b Jacky Bai 2021-09-14  @71  		return PTR_ERR(base);
c43a801a57890b Jacky Bai 2021-09-14   72  
c43a801a57890b Jacky Bai 2021-09-14   73  	clks[IMX8ULP_CLK_SPLL2_PRE_SEL]	= imx_clk_hw_mux_flags("spll2_pre_sel", base + 0x510, 0, 1, pll_pre_sels, ARRAY_SIZE(pll_pre_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14   74  	clks[IMX8ULP_CLK_SPLL3_PRE_SEL]	= imx_clk_hw_mux_flags("spll3_pre_sel", base + 0x610, 0, 1, pll_pre_sels, ARRAY_SIZE(pll_pre_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14   75  
c43a801a57890b Jacky Bai 2021-09-14   76  	clks[IMX8ULP_CLK_SPLL2] = imx_clk_hw_pllv4(IMX_PLLV4_IMX8ULP, "spll2", "spll2_pre_sel", base + 0x500);
c43a801a57890b Jacky Bai 2021-09-14   77  	clks[IMX8ULP_CLK_SPLL3] = imx_clk_hw_pllv4(IMX_PLLV4_IMX8ULP, "spll3", "spll3_pre_sel", base + 0x600);
c43a801a57890b Jacky Bai 2021-09-14   78  	clks[IMX8ULP_CLK_SPLL3_VCODIV] = imx_clk_hw_divider("spll3_vcodiv", "spll3", base + 0x604, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14   79  
c43a801a57890b Jacky Bai 2021-09-14   80  	clks[IMX8ULP_CLK_SPLL3_PFD0] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd0", "spll3_vcodiv", base + 0x614, 0);
c43a801a57890b Jacky Bai 2021-09-14   81  	clks[IMX8ULP_CLK_SPLL3_PFD1] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd1", "spll3_vcodiv", base + 0x614, 1);
c43a801a57890b Jacky Bai 2021-09-14   82  	clks[IMX8ULP_CLK_SPLL3_PFD2] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd2", "spll3_vcodiv", base + 0x614, 2);
c43a801a57890b Jacky Bai 2021-09-14   83  	clks[IMX8ULP_CLK_SPLL3_PFD3] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd3", "spll3_vcodiv", base + 0x614, 3);
c43a801a57890b Jacky Bai 2021-09-14   84  
c43a801a57890b Jacky Bai 2021-09-14   85  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd0_div1_gate", "spll3_pfd0", base + 0x608, 7);
c43a801a57890b Jacky Bai 2021-09-14   86  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd0_div2_gate", "spll3_pfd0", base + 0x608, 15);
c43a801a57890b Jacky Bai 2021-09-14   87  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd1_div1_gate", "spll3_pfd1", base + 0x608, 23);
c43a801a57890b Jacky Bai 2021-09-14   88  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd1_div2_gate", "spll3_pfd1", base + 0x608, 31);
c43a801a57890b Jacky Bai 2021-09-14   89  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd2_div1_gate", "spll3_pfd2", base + 0x60c, 7);
c43a801a57890b Jacky Bai 2021-09-14   90  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd2_div2_gate", "spll3_pfd2", base + 0x60c, 15);
c43a801a57890b Jacky Bai 2021-09-14   91  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd3_div1_gate", "spll3_pfd3", base + 0x60c, 23);
c43a801a57890b Jacky Bai 2021-09-14   92  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd3_div2_gate", "spll3_pfd3", base + 0x60c, 31);
c43a801a57890b Jacky Bai 2021-09-14   93  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV1] = imx_clk_hw_divider("spll3_pfd0_div1", "spll3_pfd0_div1_gate", base + 0x608, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14   94  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV2] = imx_clk_hw_divider("spll3_pfd0_div2", "spll3_pfd0_div2_gate", base + 0x608, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14   95  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV1] = imx_clk_hw_divider("spll3_pfd1_div1", "spll3_pfd1_div1_gate", base + 0x608, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14   96  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV2] = imx_clk_hw_divider("spll3_pfd1_div2", "spll3_pfd1_div2_gate", base + 0x608, 24, 6);
c43a801a57890b Jacky Bai 2021-09-14   97  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV1] = imx_clk_hw_divider("spll3_pfd2_div1", "spll3_pfd2_div1_gate", base + 0x60c, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14   98  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV2] = imx_clk_hw_divider("spll3_pfd2_div2", "spll3_pfd2_div2_gate", base + 0x60c, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14   99  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV1] = imx_clk_hw_divider("spll3_pfd3_div1", "spll3_pfd3_div1_gate", base + 0x60c, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  100  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV2] = imx_clk_hw_divider("spll3_pfd3_div2", "spll3_pfd3_div2_gate", base + 0x60c, 24, 6);
c43a801a57890b Jacky Bai 2021-09-14  101  
c43a801a57890b Jacky Bai 2021-09-14  102  	clks[IMX8ULP_CLK_A35_SEL] = imx_clk_hw_mux2("a35_sel", base + 0x14, 28, 2, a35_sels, ARRAY_SIZE(a35_sels));
c43a801a57890b Jacky Bai 2021-09-14  103  	clks[IMX8ULP_CLK_A35_DIV] = imx_clk_hw_divider_flags("a35_div", "a35_sel", base + 0x14, 21, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  104  
c43a801a57890b Jacky Bai 2021-09-14  105  	clks[IMX8ULP_CLK_NIC_SEL] = imx_clk_hw_mux2("nic_sel", base + 0x34, 28, 2, nic_sels, ARRAY_SIZE(nic_sels));
c43a801a57890b Jacky Bai 2021-09-14  106  	clks[IMX8ULP_CLK_NIC_AD_DIVPLAT] = imx_clk_hw_divider_flags("nic_ad_divplat", "nic_sel", base + 0x34, 21, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  107  	clks[IMX8ULP_CLK_NIC_PER_DIVPLAT] = imx_clk_hw_divider_flags("nic_per_divplat", "nic_ad_divplat", base + 0x34, 14, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  108  	clks[IMX8ULP_CLK_XBAR_AD_DIVPLAT] = imx_clk_hw_divider_flags("xbar_ad_divplat", "nic_ad_divplat", base + 0x38, 14, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  109  	clks[IMX8ULP_CLK_XBAR_DIVBUS] = imx_clk_hw_divider_flags("xbar_divbus", "nic_ad_divplat", base + 0x38, 7, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  110  	clks[IMX8ULP_CLK_XBAR_AD_SLOW] = imx_clk_hw_divider_flags("xbar_ad_slow", "nic_ad_divplat", base + 0x38, 0, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  111  
c43a801a57890b Jacky Bai 2021-09-14  112  	clks[IMX8ULP_CLK_SOSC_DIV1_GATE] = imx_clk_hw_gate_dis("sosc_div1_gate", "sosc", base + 0x108, 7);
c43a801a57890b Jacky Bai 2021-09-14  113  	clks[IMX8ULP_CLK_SOSC_DIV2_GATE] = imx_clk_hw_gate_dis("sosc_div2_gate", "sosc", base + 0x108, 15);
c43a801a57890b Jacky Bai 2021-09-14  114  	clks[IMX8ULP_CLK_SOSC_DIV3_GATE] = imx_clk_hw_gate_dis("sosc_div3_gate", "sosc", base + 0x108, 23);
c43a801a57890b Jacky Bai 2021-09-14  115  	clks[IMX8ULP_CLK_SOSC_DIV1] = imx_clk_hw_divider("sosc_div1", "sosc_div1_gate", base + 0x108, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  116  	clks[IMX8ULP_CLK_SOSC_DIV2] = imx_clk_hw_divider("sosc_div2", "sosc_div2_gate", base + 0x108, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  117  	clks[IMX8ULP_CLK_SOSC_DIV3] = imx_clk_hw_divider("sosc_div3", "sosc_div3_gate", base + 0x108, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  118  
c43a801a57890b Jacky Bai 2021-09-14  119  	clks[IMX8ULP_CLK_FROSC_DIV1_GATE] = imx_clk_hw_gate_dis("frosc_div1_gate", "frosc", base + 0x208, 7);
c43a801a57890b Jacky Bai 2021-09-14  120  	clks[IMX8ULP_CLK_FROSC_DIV2_GATE] = imx_clk_hw_gate_dis("frosc_div2_gate", "frosc", base + 0x208, 15);
c43a801a57890b Jacky Bai 2021-09-14  121  	clks[IMX8ULP_CLK_FROSC_DIV3_GATE] = imx_clk_hw_gate_dis("frosc_div3_gate", "frosc", base + 0x208, 23);
c43a801a57890b Jacky Bai 2021-09-14  122  	clks[IMX8ULP_CLK_FROSC_DIV1] = imx_clk_hw_divider("frosc_div1", "frosc_div1_gate", base + 0x208, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  123  	clks[IMX8ULP_CLK_FROSC_DIV2] = imx_clk_hw_divider("frosc_div2", "frosc_div2_gate", base + 0x208, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  124  	clks[IMX8ULP_CLK_FROSC_DIV3] = imx_clk_hw_divider("frosc_div3", "frosc_div3_gate", base + 0x208, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  125  	clks[IMX8ULP_CLK_AUD_CLK1] = imx_clk_hw_mux2("aud_clk1", base + 0x900, 0, 3, aud_clk1_sels, ARRAY_SIZE(aud_clk1_sels));
c43a801a57890b Jacky Bai 2021-09-14  126  	clks[IMX8ULP_CLK_SAI4_SEL] = imx_clk_hw_mux2("sai4_sel", base + 0x904, 0, 2, sai45_sels, ARRAY_SIZE(sai45_sels));
c43a801a57890b Jacky Bai 2021-09-14  127  	clks[IMX8ULP_CLK_SAI5_SEL] = imx_clk_hw_mux2("sai5_sel", base + 0x904, 8, 2, sai45_sels, ARRAY_SIZE(sai45_sels));
c43a801a57890b Jacky Bai 2021-09-14  128  	clks[IMX8ULP_CLK_ENET_TS_SEL] = imx_clk_hw_mux2("enet_ts", base + 0x700, 24, 3, enet_ts_sels, ARRAY_SIZE(enet_ts_sels));
c43a801a57890b Jacky Bai 2021-09-14  129  
c43a801a57890b Jacky Bai 2021-09-14  130  	imx_check_clk_hws(clks, clk_data->num);
c43a801a57890b Jacky Bai 2021-09-14  131  
c43a801a57890b Jacky Bai 2021-09-14  132  	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data);
c43a801a57890b Jacky Bai 2021-09-14  133  }
c43a801a57890b Jacky Bai 2021-09-14  134  
c43a801a57890b Jacky Bai 2021-09-14  135  static int imx8ulp_clk_cgc2_init(struct platform_device *pdev)
c43a801a57890b Jacky Bai 2021-09-14  136  {
c43a801a57890b Jacky Bai 2021-09-14  137  	struct device *dev = &pdev->dev;
c43a801a57890b Jacky Bai 2021-09-14  138  	struct clk_hw_onecell_data *clk_data;
c43a801a57890b Jacky Bai 2021-09-14  139  	struct clk_hw **clks;
c43a801a57890b Jacky Bai 2021-09-14  140  	void __iomem *base;
c43a801a57890b Jacky Bai 2021-09-14  141  
c43a801a57890b Jacky Bai 2021-09-14  142  	clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, IMX8ULP_CLK_CGC2_END),
c43a801a57890b Jacky Bai 2021-09-14  143  			   GFP_KERNEL);
c43a801a57890b Jacky Bai 2021-09-14  144  	if (!clk_data)
c43a801a57890b Jacky Bai 2021-09-14  145  		return -ENOMEM;
c43a801a57890b Jacky Bai 2021-09-14  146  
c43a801a57890b Jacky Bai 2021-09-14  147  	clk_data->num = IMX8ULP_CLK_CGC2_END;
c43a801a57890b Jacky Bai 2021-09-14  148  	clks = clk_data->hws;
c43a801a57890b Jacky Bai 2021-09-14  149  
c43a801a57890b Jacky Bai 2021-09-14  150  	/* CGC2 */
c43a801a57890b Jacky Bai 2021-09-14  151  	base = devm_platform_ioremap_resource(pdev, 0);
c43a801a57890b Jacky Bai 2021-09-14  152  	if (WARN_ON(IS_ERR(base)))
c43a801a57890b Jacky Bai 2021-09-14 @153  		return PTR_ERR(base);
c43a801a57890b Jacky Bai 2021-09-14  154  
c43a801a57890b Jacky Bai 2021-09-14  155  	clks[IMX8ULP_CLK_PLL4_PRE_SEL] = imx_clk_hw_mux_flags("pll4_pre_sel", base + 0x610, 0, 1, pll_pre_sels, ARRAY_SIZE(pll_pre_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14  156  
c43a801a57890b Jacky Bai 2021-09-14  157  	clks[IMX8ULP_CLK_PLL4]	= imx_clk_hw_pllv4(IMX_PLLV4_IMX8ULP, "pll4", "pll4_pre_sel", base + 0x600);
c43a801a57890b Jacky Bai 2021-09-14  158  	clks[IMX8ULP_CLK_PLL4_VCODIV] = imx_clk_hw_divider("pll4_vcodiv", "pll4", base + 0x604, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  159  
c43a801a57890b Jacky Bai 2021-09-14  160  	clks[IMX8ULP_CLK_HIFI_SEL] = imx_clk_hw_mux_flags("hifi_sel", base + 0x14, 28, 3, hifi_sels, ARRAY_SIZE(hifi_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14  161  	clks[IMX8ULP_CLK_HIFI_DIVCORE] = imx_clk_hw_divider("hifi_core_div", "hifi_sel", base + 0x14, 21, 6);
c43a801a57890b Jacky Bai 2021-09-14  162  	clks[IMX8ULP_CLK_HIFI_DIVPLAT] = imx_clk_hw_divider("hifi_plat_div", "hifi_core_div", base + 0x14, 14, 6);
c43a801a57890b Jacky Bai 2021-09-14  163  
c43a801a57890b Jacky Bai 2021-09-14  164  	clks[IMX8ULP_CLK_DDR_SEL] = imx_clk_hw_mux_flags("ddr_sel", base + 0x40, 28, 3, ddr_sels, ARRAY_SIZE(ddr_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14  165  	clks[IMX8ULP_CLK_DDR_DIV] = imx_clk_hw_divider_flags("ddr_div", "ddr_sel", base + 0x40, 21, 6, CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  166  	clks[IMX8ULP_CLK_LPAV_AXI_SEL] = imx_clk_hw_mux("lpav_sel", base + 0x3c, 28, 2, lpav_sels, ARRAY_SIZE(lpav_sels));
c43a801a57890b Jacky Bai 2021-09-14  167  	clks[IMX8ULP_CLK_LPAV_AXI_DIV] = imx_clk_hw_divider_flags("lpav_axi_div", "lpav_sel", base + 0x3c, 21, 6, CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  168  	clks[IMX8ULP_CLK_LPAV_AHB_DIV] = imx_clk_hw_divider_flags("lpav_ahb_div", "lpav_axi_div", base + 0x3c, 14, 6, CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  169  	clks[IMX8ULP_CLK_LPAV_BUS_DIV] = imx_clk_hw_divider_flags("lpav_bus_div", "lpav_axi_div", base + 0x3c, 7, 6, CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  170  
c43a801a57890b Jacky Bai 2021-09-14  171  	clks[IMX8ULP_CLK_PLL4_PFD0] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd0", "pll4_vcodiv", base + 0x614, 0);
c43a801a57890b Jacky Bai 2021-09-14  172  	clks[IMX8ULP_CLK_PLL4_PFD1] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd1", "pll4_vcodiv", base + 0x614, 1);
c43a801a57890b Jacky Bai 2021-09-14  173  	clks[IMX8ULP_CLK_PLL4_PFD2] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd2", "pll4_vcodiv", base + 0x614, 2);
c43a801a57890b Jacky Bai 2021-09-14  174  	clks[IMX8ULP_CLK_PLL4_PFD3] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd3", "pll4_vcodiv", base + 0x614, 3);
c43a801a57890b Jacky Bai 2021-09-14  175  
c43a801a57890b Jacky Bai 2021-09-14  176  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd0_div1_gate", "pll4_pfd0", base + 0x608, 7);
c43a801a57890b Jacky Bai 2021-09-14  177  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd0_div2_gate", "pll4_pfd0", base + 0x608, 15);
c43a801a57890b Jacky Bai 2021-09-14  178  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd1_div1_gate", "pll4_pfd1", base + 0x608, 23);
c43a801a57890b Jacky Bai 2021-09-14  179  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd1_div2_gate", "pll4_pfd1", base + 0x608, 31);
c43a801a57890b Jacky Bai 2021-09-14  180  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd2_div1_gate", "pll4_pfd2", base + 0x60c, 7);
c43a801a57890b Jacky Bai 2021-09-14  181  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd2_div2_gate", "pll4_pfd2", base + 0x60c, 15);
c43a801a57890b Jacky Bai 2021-09-14  182  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd3_div1_gate", "pll4_pfd3", base + 0x60c, 23);
c43a801a57890b Jacky Bai 2021-09-14  183  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd3_div2_gate", "pll4_pfd3", base + 0x60c, 31);
c43a801a57890b Jacky Bai 2021-09-14  184  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV1] = imx_clk_hw_divider("pll4_pfd0_div1", "pll4_pfd0_div1_gate", base + 0x608, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  185  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV2] = imx_clk_hw_divider("pll4_pfd0_div2", "pll4_pfd0_div2_gate", base + 0x608, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  186  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV1] = imx_clk_hw_divider("pll4_pfd1_div1", "pll4_pfd1_div1_gate", base + 0x608, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  187  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV2] = imx_clk_hw_divider("pll4_pfd1_div2", "pll4_pfd1_div2_gate", base + 0x608, 24, 6);
c43a801a57890b Jacky Bai 2021-09-14  188  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV1] = imx_clk_hw_divider("pll4_pfd2_div1", "pll4_pfd2_div1_gate", base + 0x60c, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  189  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV2] = imx_clk_hw_divider("pll4_pfd2_div2", "pll4_pfd2_div2_gate", base + 0x60c, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  190  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV1] = imx_clk_hw_divider("pll4_pfd3_div1", "pll4_pfd3_div1_gate", base + 0x60c, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  191  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV2] = imx_clk_hw_divider("pll4_pfd3_div2", "pll4_pfd3_div2_gate", base + 0x60c, 24, 6);
c43a801a57890b Jacky Bai 2021-09-14  192  
c43a801a57890b Jacky Bai 2021-09-14  193  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV1_GATE] = imx_clk_hw_gate_dis("cgc2_sosc_div1_gate", "sosc", base + 0x108, 7);
c43a801a57890b Jacky Bai 2021-09-14  194  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV2_GATE] = imx_clk_hw_gate_dis("cgc2_sosc_div2_gate", "sosc", base + 0x108, 15);
c43a801a57890b Jacky Bai 2021-09-14  195  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV3_GATE] = imx_clk_hw_gate_dis("cgc2_sosc_div3_gate", "sosc", base + 0x108, 23);
c43a801a57890b Jacky Bai 2021-09-14  196  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV1] = imx_clk_hw_divider("cgc2_sosc_div1", "cgc2_sosc_div1_gate", base + 0x108, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  197  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV2] = imx_clk_hw_divider("cgc2_sosc_div2", "cgc2_sosc_div2_gate", base + 0x108, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  198  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV3] = imx_clk_hw_divider("cgc2_sosc_div3", "cgc2_sosc_div3_gate", base + 0x108, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  199  
c43a801a57890b Jacky Bai 2021-09-14  200  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV1_GATE] = imx_clk_hw_gate_dis("cgc2_frosc_div1_gate", "frosc", base + 0x208, 7);
c43a801a57890b Jacky Bai 2021-09-14  201  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV2_GATE] = imx_clk_hw_gate_dis("cgc2_frosc_div2_gate", "frosc", base + 0x208, 15);
c43a801a57890b Jacky Bai 2021-09-14  202  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV3_GATE] = imx_clk_hw_gate_dis("cgc2_frosc_div3_gate", "frosc", base + 0x208, 23);
c43a801a57890b Jacky Bai 2021-09-14  203  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV1] = imx_clk_hw_divider("cgc2_frosc_div1", "cgc2_frosc_div1_gate", base + 0x208, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  204  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV2] = imx_clk_hw_divider("cgc2_frosc_div2", "cgc2_frosc_div2_gate", base + 0x208, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  205  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV3] = imx_clk_hw_divider("cgc2_frosc_div3", "cgc2_frosc_div3_gate", base + 0x208, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  206  	clks[IMX8ULP_CLK_AUD_CLK2]  = imx_clk_hw_mux2("aud_clk2", base + 0x900, 0, 3, aud_clk2_sels, ARRAY_SIZE(aud_clk2_sels));
c43a801a57890b Jacky Bai 2021-09-14  207  	clks[IMX8ULP_CLK_SAI6_SEL]  = imx_clk_hw_mux2("sai6_sel", base + 0x904, 0, 3, sai67_sels, ARRAY_SIZE(sai67_sels));
c43a801a57890b Jacky Bai 2021-09-14  208  	clks[IMX8ULP_CLK_SAI7_SEL]  = imx_clk_hw_mux2("sai7_sel", base + 0x904, 8, 3, sai67_sels, ARRAY_SIZE(sai67_sels));
c43a801a57890b Jacky Bai 2021-09-14  209  	clks[IMX8ULP_CLK_SPDIF_SEL] = imx_clk_hw_mux2("spdif_sel", base + 0x910, 0, 3, sai67_sels, ARRAY_SIZE(sai67_sels));
c43a801a57890b Jacky Bai 2021-09-14  210  	clks[IMX8ULP_CLK_DSI_PHY_REF] = imx_clk_hw_fixed("dsi_phy_ref", 24000000);
c43a801a57890b Jacky Bai 2021-09-14  211  
c43a801a57890b Jacky Bai 2021-09-14  212  	imx_check_clk_hws(clks, clk_data->num);
c43a801a57890b Jacky Bai 2021-09-14  213  
c43a801a57890b Jacky Bai 2021-09-14  214  	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data);
c43a801a57890b Jacky Bai 2021-09-14  215  }
c43a801a57890b Jacky Bai 2021-09-14  216  
c43a801a57890b Jacky Bai 2021-09-14  217  static int imx8ulp_clk_pcc3_init(struct platform_device *pdev)
c43a801a57890b Jacky Bai 2021-09-14  218  {
c43a801a57890b Jacky Bai 2021-09-14  219  	struct device *dev = &pdev->dev;
c43a801a57890b Jacky Bai 2021-09-14  220  	struct clk_hw_onecell_data *clk_data;
c43a801a57890b Jacky Bai 2021-09-14  221  	struct clk_hw **clks;
c43a801a57890b Jacky Bai 2021-09-14  222  	void __iomem *base;
c43a801a57890b Jacky Bai 2021-09-14  223  	int ret;
c43a801a57890b Jacky Bai 2021-09-14  224  
c43a801a57890b Jacky Bai 2021-09-14  225  	clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, IMX8ULP_CLK_PCC3_END),
c43a801a57890b Jacky Bai 2021-09-14  226  			   GFP_KERNEL);
c43a801a57890b Jacky Bai 2021-09-14  227  	if (!clk_data)
c43a801a57890b Jacky Bai 2021-09-14  228  		return -ENOMEM;
c43a801a57890b Jacky Bai 2021-09-14  229  
c43a801a57890b Jacky Bai 2021-09-14  230  	clk_data->num = IMX8ULP_CLK_PCC3_END;
c43a801a57890b Jacky Bai 2021-09-14  231  	clks = clk_data->hws;
c43a801a57890b Jacky Bai 2021-09-14  232  
c43a801a57890b Jacky Bai 2021-09-14  233  	/* PCC3 */
c43a801a57890b Jacky Bai 2021-09-14  234  	base = devm_platform_ioremap_resource(pdev, 0);
c43a801a57890b Jacky Bai 2021-09-14  235  	if (WARN_ON(IS_ERR(base)))
c43a801a57890b Jacky Bai 2021-09-14 @236  		return PTR_ERR(base);
c43a801a57890b Jacky Bai 2021-09-14  237  
c43a801a57890b Jacky Bai 2021-09-14  238  	clks[IMX8ULP_CLK_WDOG3] = imx8ulp_clk_hw_composite("wdog3", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xa8, 1);
c43a801a57890b Jacky Bai 2021-09-14  239  	clks[IMX8ULP_CLK_WDOG4] = imx8ulp_clk_hw_composite("wdog4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xac, 1);
c43a801a57890b Jacky Bai 2021-09-14  240  	clks[IMX8ULP_CLK_LPIT1] = imx8ulp_clk_hw_composite("lpit1", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xc8, 1);
c43a801a57890b Jacky Bai 2021-09-14  241  	clks[IMX8ULP_CLK_TPM4] = imx8ulp_clk_hw_composite("tpm4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xcc, 1);
c43a801a57890b Jacky Bai 2021-09-14  242  	clks[IMX8ULP_CLK_TPM5] = imx8ulp_clk_hw_composite("tpm5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xd0, 1);
c43a801a57890b Jacky Bai 2021-09-14  243  	clks[IMX8ULP_CLK_FLEXIO1] = imx8ulp_clk_hw_composite("flexio1", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xd4, 1);
c43a801a57890b Jacky Bai 2021-09-14  244  	clks[IMX8ULP_CLK_I3C2] = imx8ulp_clk_hw_composite("i3c2", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xd8, 1);
c43a801a57890b Jacky Bai 2021-09-14  245  	clks[IMX8ULP_CLK_LPI2C4] = imx8ulp_clk_hw_composite("lpi2c4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xdc, 1);
c43a801a57890b Jacky Bai 2021-09-14  246  	clks[IMX8ULP_CLK_LPI2C5] = imx8ulp_clk_hw_composite("lpi2c5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xe0, 1);
c43a801a57890b Jacky Bai 2021-09-14  247  	clks[IMX8ULP_CLK_LPUART4] = imx8ulp_clk_hw_composite("lpuart4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xe4, 1);
c43a801a57890b Jacky Bai 2021-09-14  248  	clks[IMX8ULP_CLK_LPUART5] = imx8ulp_clk_hw_composite("lpuart5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xe8, 1);
c43a801a57890b Jacky Bai 2021-09-14  249  	clks[IMX8ULP_CLK_LPSPI4] = imx8ulp_clk_hw_composite("lpspi4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xec, 1);
c43a801a57890b Jacky Bai 2021-09-14  250  	clks[IMX8ULP_CLK_LPSPI5] = imx8ulp_clk_hw_composite("lpspi5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xf0, 1);
c43a801a57890b Jacky Bai 2021-09-14  251  
c43a801a57890b Jacky Bai 2021-09-14  252  	clks[IMX8ULP_CLK_DMA1_MP] = imx_clk_hw_gate("pcc_dma1_mp", "xbar_ad_divplat", base + 0x4, 30);
c43a801a57890b Jacky Bai 2021-09-14  253  	clks[IMX8ULP_CLK_DMA1_CH0] = imx_clk_hw_gate("pcc_dma1_ch0", "xbar_ad_divplat", base + 0x8, 30);
c43a801a57890b Jacky Bai 2021-09-14  254  	clks[IMX8ULP_CLK_DMA1_CH1] = imx_clk_hw_gate("pcc_dma1_ch1", "xbar_ad_divplat", base + 0xc, 30);
c43a801a57890b Jacky Bai 2021-09-14  255  	clks[IMX8ULP_CLK_DMA1_CH2] = imx_clk_hw_gate("pcc_dma1_ch2", "xbar_ad_divplat", base + 0x10, 30);
c43a801a57890b Jacky Bai 2021-09-14  256  	clks[IMX8ULP_CLK_DMA1_CH3] = imx_clk_hw_gate("pcc_dma1_ch3", "xbar_ad_divplat", base + 0x14, 30);
c43a801a57890b Jacky Bai 2021-09-14  257  	clks[IMX8ULP_CLK_DMA1_CH4] = imx_clk_hw_gate("pcc_dma1_ch4", "xbar_ad_divplat", base + 0x18, 30);
c43a801a57890b Jacky Bai 2021-09-14  258  	clks[IMX8ULP_CLK_DMA1_CH5] = imx_clk_hw_gate("pcc_dma1_ch5", "xbar_ad_divplat", base + 0x1c, 30);
c43a801a57890b Jacky Bai 2021-09-14  259  	clks[IMX8ULP_CLK_DMA1_CH6] = imx_clk_hw_gate("pcc_dma1_ch6", "xbar_ad_divplat", base + 0x20, 30);
c43a801a57890b Jacky Bai 2021-09-14  260  	clks[IMX8ULP_CLK_DMA1_CH7] = imx_clk_hw_gate("pcc_dma1_ch7", "xbar_ad_divplat", base + 0x24, 30);
c43a801a57890b Jacky Bai 2021-09-14  261  	clks[IMX8ULP_CLK_DMA1_CH8] = imx_clk_hw_gate("pcc_dma1_ch8", "xbar_ad_divplat", base + 0x28, 30);
c43a801a57890b Jacky Bai 2021-09-14  262  	clks[IMX8ULP_CLK_DMA1_CH9] = imx_clk_hw_gate("pcc_dma1_ch9", "xbar_ad_divplat", base + 0x2c, 30);
c43a801a57890b Jacky Bai 2021-09-14  263  	clks[IMX8ULP_CLK_DMA1_CH10] = imx_clk_hw_gate("pcc_dma1_ch10", "xbar_ad_divplat", base + 0x30, 30);
c43a801a57890b Jacky Bai 2021-09-14  264  	clks[IMX8ULP_CLK_DMA1_CH11] = imx_clk_hw_gate("pcc_dma1_ch11", "xbar_ad_divplat", base + 0x34, 30);
c43a801a57890b Jacky Bai 2021-09-14  265  	clks[IMX8ULP_CLK_DMA1_CH12] = imx_clk_hw_gate("pcc_dma1_ch12", "xbar_ad_divplat", base + 0x38, 30);
c43a801a57890b Jacky Bai 2021-09-14  266  	clks[IMX8ULP_CLK_DMA1_CH13] = imx_clk_hw_gate("pcc_dma1_ch13", "xbar_ad_divplat", base + 0x3c, 30);
c43a801a57890b Jacky Bai 2021-09-14  267  	clks[IMX8ULP_CLK_DMA1_CH14] = imx_clk_hw_gate("pcc_dma1_ch14", "xbar_ad_divplat", base + 0x40, 30);
c43a801a57890b Jacky Bai 2021-09-14  268  	clks[IMX8ULP_CLK_DMA1_CH15] = imx_clk_hw_gate("pcc_dma1_ch15", "xbar_ad_divplat", base + 0x44, 30);
c43a801a57890b Jacky Bai 2021-09-14  269  	clks[IMX8ULP_CLK_DMA1_CH16] = imx_clk_hw_gate("pcc_dma1_ch16", "xbar_ad_divplat", base + 0x48, 30);
c43a801a57890b Jacky Bai 2021-09-14  270  	clks[IMX8ULP_CLK_DMA1_CH17] = imx_clk_hw_gate("pcc_dma1_ch17", "xbar_ad_divplat", base + 0x4c, 30);
c43a801a57890b Jacky Bai 2021-09-14  271  	clks[IMX8ULP_CLK_DMA1_CH18] = imx_clk_hw_gate("pcc_dma1_ch18", "xbar_ad_divplat", base + 0x50, 30);
c43a801a57890b Jacky Bai 2021-09-14  272  	clks[IMX8ULP_CLK_DMA1_CH19] = imx_clk_hw_gate("pcc_dma1_ch19", "xbar_ad_divplat", base + 0x54, 30);
c43a801a57890b Jacky Bai 2021-09-14  273  	clks[IMX8ULP_CLK_DMA1_CH20] = imx_clk_hw_gate("pcc_dma1_ch20", "xbar_ad_divplat", base + 0x58, 30);
c43a801a57890b Jacky Bai 2021-09-14  274  	clks[IMX8ULP_CLK_DMA1_CH21] = imx_clk_hw_gate("pcc_dma1_ch21", "xbar_ad_divplat", base + 0x5c, 30);
c43a801a57890b Jacky Bai 2021-09-14  275  	clks[IMX8ULP_CLK_DMA1_CH22] = imx_clk_hw_gate("pcc_dma1_ch22", "xbar_ad_divplat", base + 0x60, 30);
c43a801a57890b Jacky Bai 2021-09-14  276  	clks[IMX8ULP_CLK_DMA1_CH23] = imx_clk_hw_gate("pcc_dma1_ch23", "xbar_ad_divplat", base + 0x64, 30);
c43a801a57890b Jacky Bai 2021-09-14  277  	clks[IMX8ULP_CLK_DMA1_CH24] = imx_clk_hw_gate("pcc_dma1_ch24", "xbar_ad_divplat", base + 0x68, 30);
c43a801a57890b Jacky Bai 2021-09-14  278  	clks[IMX8ULP_CLK_DMA1_CH25] = imx_clk_hw_gate("pcc_dma1_ch25", "xbar_ad_divplat", base + 0x6c, 30);
c43a801a57890b Jacky Bai 2021-09-14  279  	clks[IMX8ULP_CLK_DMA1_CH26] = imx_clk_hw_gate("pcc_dma1_ch26", "xbar_ad_divplat", base + 0x70, 30);
c43a801a57890b Jacky Bai 2021-09-14  280  	clks[IMX8ULP_CLK_DMA1_CH27] = imx_clk_hw_gate("pcc_dma1_ch27", "xbar_ad_divplat", base + 0x74, 30);
c43a801a57890b Jacky Bai 2021-09-14  281  	clks[IMX8ULP_CLK_DMA1_CH28] = imx_clk_hw_gate("pcc_dma1_ch28", "xbar_ad_divplat", base + 0x78, 30);
c43a801a57890b Jacky Bai 2021-09-14  282  	clks[IMX8ULP_CLK_DMA1_CH29] = imx_clk_hw_gate("pcc_dma1_ch29", "xbar_ad_divplat", base + 0x7c, 30);
c43a801a57890b Jacky Bai 2021-09-14  283  	clks[IMX8ULP_CLK_DMA1_CH30] = imx_clk_hw_gate("pcc_dma1_ch30", "xbar_ad_divplat", base + 0x80, 30);
c43a801a57890b Jacky Bai 2021-09-14  284  	clks[IMX8ULP_CLK_DMA1_CH31] = imx_clk_hw_gate("pcc_dma1_ch31", "xbar_ad_divplat", base + 0x84, 30);
c43a801a57890b Jacky Bai 2021-09-14  285  	clks[IMX8ULP_CLK_MU0_B] = imx_clk_hw_gate("mu0_b", "xbar_ad_divplat", base + 0x88, 30);
c43a801a57890b Jacky Bai 2021-09-14  286  	clks[IMX8ULP_CLK_MU3_A] = imx_clk_hw_gate("mu3_a", "xbar_ad_divplat", base + 0x8c, 30);
c43a801a57890b Jacky Bai 2021-09-14  287  
c43a801a57890b Jacky Bai 2021-09-14  288  	imx_check_clk_hws(clks, clk_data->num);
c43a801a57890b Jacky Bai 2021-09-14  289  
c43a801a57890b Jacky Bai 2021-09-14  290  	ret = devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data);
c43a801a57890b Jacky Bai 2021-09-14  291  
c43a801a57890b Jacky Bai 2021-09-14  292  	imx_register_uart_clocks(1);
c43a801a57890b Jacky Bai 2021-09-14  293  
c43a801a57890b Jacky Bai 2021-09-14  294  	return ret;
c43a801a57890b Jacky Bai 2021-09-14  295  }
c43a801a57890b Jacky Bai 2021-09-14  296  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 6+ messages in thread

* drivers/clk/imx/clk-imx8ulp.c:71 imx8ulp_clk_cgc1_init() warn: passing zero to 'PTR_ERR'
@ 2022-02-09 10:43 kernel test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2022-02-09 10:43 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 31070 bytes --]

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Jacky Bai <ping.bai@nxp.com>
CC: Abel Vesa <abel.vesa@nxp.com>
CC: Peng Fan <peng.fan@nxp.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   e6251ab4551f51fa4cee03523e08051898c3ce82
commit: c43a801a57890b15e16a0502edf145d59c91baf7 clk: imx: Add clock driver for imx8ulp
date:   4 months ago
:::::: branch date: 15 hours ago
:::::: commit date: 4 months ago
config: powerpc-randconfig-m031-20220208 (https://download.01.org/0day-ci/archive/20220209/202202091811.pAoe4Ubu-lkp(a)intel.com/config)
compiler: powerpc-linux-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/clk/imx/clk-imx8ulp.c:71 imx8ulp_clk_cgc1_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:153 imx8ulp_clk_cgc2_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:236 imx8ulp_clk_pcc3_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:315 imx8ulp_clk_pcc4_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:363 imx8ulp_clk_pcc5_init() warn: passing zero to 'PTR_ERR'

vim +/PTR_ERR +71 drivers/clk/imx/clk-imx8ulp.c

c43a801a57890b Jacky Bai 2021-09-14   50  
c43a801a57890b Jacky Bai 2021-09-14   51  static int imx8ulp_clk_cgc1_init(struct platform_device *pdev)
c43a801a57890b Jacky Bai 2021-09-14   52  {
c43a801a57890b Jacky Bai 2021-09-14   53  	struct device *dev = &pdev->dev;
c43a801a57890b Jacky Bai 2021-09-14   54  	struct clk_hw_onecell_data *clk_data;
c43a801a57890b Jacky Bai 2021-09-14   55  	struct clk_hw **clks;
c43a801a57890b Jacky Bai 2021-09-14   56  	void __iomem *base;
c43a801a57890b Jacky Bai 2021-09-14   57  
c43a801a57890b Jacky Bai 2021-09-14   58  	clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, IMX8ULP_CLK_CGC1_END),
c43a801a57890b Jacky Bai 2021-09-14   59  			   GFP_KERNEL);
c43a801a57890b Jacky Bai 2021-09-14   60  	if (!clk_data)
c43a801a57890b Jacky Bai 2021-09-14   61  		return -ENOMEM;
c43a801a57890b Jacky Bai 2021-09-14   62  
c43a801a57890b Jacky Bai 2021-09-14   63  	clk_data->num = IMX8ULP_CLK_CGC1_END;
c43a801a57890b Jacky Bai 2021-09-14   64  	clks = clk_data->hws;
c43a801a57890b Jacky Bai 2021-09-14   65  
c43a801a57890b Jacky Bai 2021-09-14   66  	clks[IMX8ULP_CLK_DUMMY] = imx_clk_hw_fixed("dummy", 0);
c43a801a57890b Jacky Bai 2021-09-14   67  
c43a801a57890b Jacky Bai 2021-09-14   68  	/* CGC1 */
c43a801a57890b Jacky Bai 2021-09-14   69  	base = devm_platform_ioremap_resource(pdev, 0);
c43a801a57890b Jacky Bai 2021-09-14   70  	if (WARN_ON(IS_ERR(base)))
c43a801a57890b Jacky Bai 2021-09-14  @71  		return PTR_ERR(base);
c43a801a57890b Jacky Bai 2021-09-14   72  
c43a801a57890b Jacky Bai 2021-09-14   73  	clks[IMX8ULP_CLK_SPLL2_PRE_SEL]	= imx_clk_hw_mux_flags("spll2_pre_sel", base + 0x510, 0, 1, pll_pre_sels, ARRAY_SIZE(pll_pre_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14   74  	clks[IMX8ULP_CLK_SPLL3_PRE_SEL]	= imx_clk_hw_mux_flags("spll3_pre_sel", base + 0x610, 0, 1, pll_pre_sels, ARRAY_SIZE(pll_pre_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14   75  
c43a801a57890b Jacky Bai 2021-09-14   76  	clks[IMX8ULP_CLK_SPLL2] = imx_clk_hw_pllv4(IMX_PLLV4_IMX8ULP, "spll2", "spll2_pre_sel", base + 0x500);
c43a801a57890b Jacky Bai 2021-09-14   77  	clks[IMX8ULP_CLK_SPLL3] = imx_clk_hw_pllv4(IMX_PLLV4_IMX8ULP, "spll3", "spll3_pre_sel", base + 0x600);
c43a801a57890b Jacky Bai 2021-09-14   78  	clks[IMX8ULP_CLK_SPLL3_VCODIV] = imx_clk_hw_divider("spll3_vcodiv", "spll3", base + 0x604, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14   79  
c43a801a57890b Jacky Bai 2021-09-14   80  	clks[IMX8ULP_CLK_SPLL3_PFD0] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd0", "spll3_vcodiv", base + 0x614, 0);
c43a801a57890b Jacky Bai 2021-09-14   81  	clks[IMX8ULP_CLK_SPLL3_PFD1] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd1", "spll3_vcodiv", base + 0x614, 1);
c43a801a57890b Jacky Bai 2021-09-14   82  	clks[IMX8ULP_CLK_SPLL3_PFD2] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd2", "spll3_vcodiv", base + 0x614, 2);
c43a801a57890b Jacky Bai 2021-09-14   83  	clks[IMX8ULP_CLK_SPLL3_PFD3] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd3", "spll3_vcodiv", base + 0x614, 3);
c43a801a57890b Jacky Bai 2021-09-14   84  
c43a801a57890b Jacky Bai 2021-09-14   85  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd0_div1_gate", "spll3_pfd0", base + 0x608, 7);
c43a801a57890b Jacky Bai 2021-09-14   86  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd0_div2_gate", "spll3_pfd0", base + 0x608, 15);
c43a801a57890b Jacky Bai 2021-09-14   87  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd1_div1_gate", "spll3_pfd1", base + 0x608, 23);
c43a801a57890b Jacky Bai 2021-09-14   88  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd1_div2_gate", "spll3_pfd1", base + 0x608, 31);
c43a801a57890b Jacky Bai 2021-09-14   89  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd2_div1_gate", "spll3_pfd2", base + 0x60c, 7);
c43a801a57890b Jacky Bai 2021-09-14   90  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd2_div2_gate", "spll3_pfd2", base + 0x60c, 15);
c43a801a57890b Jacky Bai 2021-09-14   91  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd3_div1_gate", "spll3_pfd3", base + 0x60c, 23);
c43a801a57890b Jacky Bai 2021-09-14   92  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd3_div2_gate", "spll3_pfd3", base + 0x60c, 31);
c43a801a57890b Jacky Bai 2021-09-14   93  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV1] = imx_clk_hw_divider("spll3_pfd0_div1", "spll3_pfd0_div1_gate", base + 0x608, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14   94  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV2] = imx_clk_hw_divider("spll3_pfd0_div2", "spll3_pfd0_div2_gate", base + 0x608, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14   95  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV1] = imx_clk_hw_divider("spll3_pfd1_div1", "spll3_pfd1_div1_gate", base + 0x608, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14   96  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV2] = imx_clk_hw_divider("spll3_pfd1_div2", "spll3_pfd1_div2_gate", base + 0x608, 24, 6);
c43a801a57890b Jacky Bai 2021-09-14   97  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV1] = imx_clk_hw_divider("spll3_pfd2_div1", "spll3_pfd2_div1_gate", base + 0x60c, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14   98  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV2] = imx_clk_hw_divider("spll3_pfd2_div2", "spll3_pfd2_div2_gate", base + 0x60c, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14   99  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV1] = imx_clk_hw_divider("spll3_pfd3_div1", "spll3_pfd3_div1_gate", base + 0x60c, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  100  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV2] = imx_clk_hw_divider("spll3_pfd3_div2", "spll3_pfd3_div2_gate", base + 0x60c, 24, 6);
c43a801a57890b Jacky Bai 2021-09-14  101  
c43a801a57890b Jacky Bai 2021-09-14  102  	clks[IMX8ULP_CLK_A35_SEL] = imx_clk_hw_mux2("a35_sel", base + 0x14, 28, 2, a35_sels, ARRAY_SIZE(a35_sels));
c43a801a57890b Jacky Bai 2021-09-14  103  	clks[IMX8ULP_CLK_A35_DIV] = imx_clk_hw_divider_flags("a35_div", "a35_sel", base + 0x14, 21, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  104  
c43a801a57890b Jacky Bai 2021-09-14  105  	clks[IMX8ULP_CLK_NIC_SEL] = imx_clk_hw_mux2("nic_sel", base + 0x34, 28, 2, nic_sels, ARRAY_SIZE(nic_sels));
c43a801a57890b Jacky Bai 2021-09-14  106  	clks[IMX8ULP_CLK_NIC_AD_DIVPLAT] = imx_clk_hw_divider_flags("nic_ad_divplat", "nic_sel", base + 0x34, 21, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  107  	clks[IMX8ULP_CLK_NIC_PER_DIVPLAT] = imx_clk_hw_divider_flags("nic_per_divplat", "nic_ad_divplat", base + 0x34, 14, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  108  	clks[IMX8ULP_CLK_XBAR_AD_DIVPLAT] = imx_clk_hw_divider_flags("xbar_ad_divplat", "nic_ad_divplat", base + 0x38, 14, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  109  	clks[IMX8ULP_CLK_XBAR_DIVBUS] = imx_clk_hw_divider_flags("xbar_divbus", "nic_ad_divplat", base + 0x38, 7, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  110  	clks[IMX8ULP_CLK_XBAR_AD_SLOW] = imx_clk_hw_divider_flags("xbar_ad_slow", "nic_ad_divplat", base + 0x38, 0, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  111  
c43a801a57890b Jacky Bai 2021-09-14  112  	clks[IMX8ULP_CLK_SOSC_DIV1_GATE] = imx_clk_hw_gate_dis("sosc_div1_gate", "sosc", base + 0x108, 7);
c43a801a57890b Jacky Bai 2021-09-14  113  	clks[IMX8ULP_CLK_SOSC_DIV2_GATE] = imx_clk_hw_gate_dis("sosc_div2_gate", "sosc", base + 0x108, 15);
c43a801a57890b Jacky Bai 2021-09-14  114  	clks[IMX8ULP_CLK_SOSC_DIV3_GATE] = imx_clk_hw_gate_dis("sosc_div3_gate", "sosc", base + 0x108, 23);
c43a801a57890b Jacky Bai 2021-09-14  115  	clks[IMX8ULP_CLK_SOSC_DIV1] = imx_clk_hw_divider("sosc_div1", "sosc_div1_gate", base + 0x108, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  116  	clks[IMX8ULP_CLK_SOSC_DIV2] = imx_clk_hw_divider("sosc_div2", "sosc_div2_gate", base + 0x108, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  117  	clks[IMX8ULP_CLK_SOSC_DIV3] = imx_clk_hw_divider("sosc_div3", "sosc_div3_gate", base + 0x108, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  118  
c43a801a57890b Jacky Bai 2021-09-14  119  	clks[IMX8ULP_CLK_FROSC_DIV1_GATE] = imx_clk_hw_gate_dis("frosc_div1_gate", "frosc", base + 0x208, 7);
c43a801a57890b Jacky Bai 2021-09-14  120  	clks[IMX8ULP_CLK_FROSC_DIV2_GATE] = imx_clk_hw_gate_dis("frosc_div2_gate", "frosc", base + 0x208, 15);
c43a801a57890b Jacky Bai 2021-09-14  121  	clks[IMX8ULP_CLK_FROSC_DIV3_GATE] = imx_clk_hw_gate_dis("frosc_div3_gate", "frosc", base + 0x208, 23);
c43a801a57890b Jacky Bai 2021-09-14  122  	clks[IMX8ULP_CLK_FROSC_DIV1] = imx_clk_hw_divider("frosc_div1", "frosc_div1_gate", base + 0x208, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  123  	clks[IMX8ULP_CLK_FROSC_DIV2] = imx_clk_hw_divider("frosc_div2", "frosc_div2_gate", base + 0x208, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  124  	clks[IMX8ULP_CLK_FROSC_DIV3] = imx_clk_hw_divider("frosc_div3", "frosc_div3_gate", base + 0x208, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  125  	clks[IMX8ULP_CLK_AUD_CLK1] = imx_clk_hw_mux2("aud_clk1", base + 0x900, 0, 3, aud_clk1_sels, ARRAY_SIZE(aud_clk1_sels));
c43a801a57890b Jacky Bai 2021-09-14  126  	clks[IMX8ULP_CLK_SAI4_SEL] = imx_clk_hw_mux2("sai4_sel", base + 0x904, 0, 2, sai45_sels, ARRAY_SIZE(sai45_sels));
c43a801a57890b Jacky Bai 2021-09-14  127  	clks[IMX8ULP_CLK_SAI5_SEL] = imx_clk_hw_mux2("sai5_sel", base + 0x904, 8, 2, sai45_sels, ARRAY_SIZE(sai45_sels));
c43a801a57890b Jacky Bai 2021-09-14  128  	clks[IMX8ULP_CLK_ENET_TS_SEL] = imx_clk_hw_mux2("enet_ts", base + 0x700, 24, 3, enet_ts_sels, ARRAY_SIZE(enet_ts_sels));
c43a801a57890b Jacky Bai 2021-09-14  129  
c43a801a57890b Jacky Bai 2021-09-14  130  	imx_check_clk_hws(clks, clk_data->num);
c43a801a57890b Jacky Bai 2021-09-14  131  
c43a801a57890b Jacky Bai 2021-09-14  132  	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data);
c43a801a57890b Jacky Bai 2021-09-14  133  }
c43a801a57890b Jacky Bai 2021-09-14  134  
c43a801a57890b Jacky Bai 2021-09-14  135  static int imx8ulp_clk_cgc2_init(struct platform_device *pdev)
c43a801a57890b Jacky Bai 2021-09-14  136  {
c43a801a57890b Jacky Bai 2021-09-14  137  	struct device *dev = &pdev->dev;
c43a801a57890b Jacky Bai 2021-09-14  138  	struct clk_hw_onecell_data *clk_data;
c43a801a57890b Jacky Bai 2021-09-14  139  	struct clk_hw **clks;
c43a801a57890b Jacky Bai 2021-09-14  140  	void __iomem *base;
c43a801a57890b Jacky Bai 2021-09-14  141  
c43a801a57890b Jacky Bai 2021-09-14  142  	clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, IMX8ULP_CLK_CGC2_END),
c43a801a57890b Jacky Bai 2021-09-14  143  			   GFP_KERNEL);
c43a801a57890b Jacky Bai 2021-09-14  144  	if (!clk_data)
c43a801a57890b Jacky Bai 2021-09-14  145  		return -ENOMEM;
c43a801a57890b Jacky Bai 2021-09-14  146  
c43a801a57890b Jacky Bai 2021-09-14  147  	clk_data->num = IMX8ULP_CLK_CGC2_END;
c43a801a57890b Jacky Bai 2021-09-14  148  	clks = clk_data->hws;
c43a801a57890b Jacky Bai 2021-09-14  149  
c43a801a57890b Jacky Bai 2021-09-14  150  	/* CGC2 */
c43a801a57890b Jacky Bai 2021-09-14  151  	base = devm_platform_ioremap_resource(pdev, 0);
c43a801a57890b Jacky Bai 2021-09-14  152  	if (WARN_ON(IS_ERR(base)))
c43a801a57890b Jacky Bai 2021-09-14 @153  		return PTR_ERR(base);
c43a801a57890b Jacky Bai 2021-09-14  154  
c43a801a57890b Jacky Bai 2021-09-14  155  	clks[IMX8ULP_CLK_PLL4_PRE_SEL] = imx_clk_hw_mux_flags("pll4_pre_sel", base + 0x610, 0, 1, pll_pre_sels, ARRAY_SIZE(pll_pre_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14  156  
c43a801a57890b Jacky Bai 2021-09-14  157  	clks[IMX8ULP_CLK_PLL4]	= imx_clk_hw_pllv4(IMX_PLLV4_IMX8ULP, "pll4", "pll4_pre_sel", base + 0x600);
c43a801a57890b Jacky Bai 2021-09-14  158  	clks[IMX8ULP_CLK_PLL4_VCODIV] = imx_clk_hw_divider("pll4_vcodiv", "pll4", base + 0x604, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  159  
c43a801a57890b Jacky Bai 2021-09-14  160  	clks[IMX8ULP_CLK_HIFI_SEL] = imx_clk_hw_mux_flags("hifi_sel", base + 0x14, 28, 3, hifi_sels, ARRAY_SIZE(hifi_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14  161  	clks[IMX8ULP_CLK_HIFI_DIVCORE] = imx_clk_hw_divider("hifi_core_div", "hifi_sel", base + 0x14, 21, 6);
c43a801a57890b Jacky Bai 2021-09-14  162  	clks[IMX8ULP_CLK_HIFI_DIVPLAT] = imx_clk_hw_divider("hifi_plat_div", "hifi_core_div", base + 0x14, 14, 6);
c43a801a57890b Jacky Bai 2021-09-14  163  
c43a801a57890b Jacky Bai 2021-09-14  164  	clks[IMX8ULP_CLK_DDR_SEL] = imx_clk_hw_mux_flags("ddr_sel", base + 0x40, 28, 3, ddr_sels, ARRAY_SIZE(ddr_sels), CLK_SET_PARENT_GATE);
c43a801a57890b Jacky Bai 2021-09-14  165  	clks[IMX8ULP_CLK_DDR_DIV] = imx_clk_hw_divider_flags("ddr_div", "ddr_sel", base + 0x40, 21, 6, CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  166  	clks[IMX8ULP_CLK_LPAV_AXI_SEL] = imx_clk_hw_mux("lpav_sel", base + 0x3c, 28, 2, lpav_sels, ARRAY_SIZE(lpav_sels));
c43a801a57890b Jacky Bai 2021-09-14  167  	clks[IMX8ULP_CLK_LPAV_AXI_DIV] = imx_clk_hw_divider_flags("lpav_axi_div", "lpav_sel", base + 0x3c, 21, 6, CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  168  	clks[IMX8ULP_CLK_LPAV_AHB_DIV] = imx_clk_hw_divider_flags("lpav_ahb_div", "lpav_axi_div", base + 0x3c, 14, 6, CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  169  	clks[IMX8ULP_CLK_LPAV_BUS_DIV] = imx_clk_hw_divider_flags("lpav_bus_div", "lpav_axi_div", base + 0x3c, 7, 6, CLK_IS_CRITICAL);
c43a801a57890b Jacky Bai 2021-09-14  170  
c43a801a57890b Jacky Bai 2021-09-14  171  	clks[IMX8ULP_CLK_PLL4_PFD0] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd0", "pll4_vcodiv", base + 0x614, 0);
c43a801a57890b Jacky Bai 2021-09-14  172  	clks[IMX8ULP_CLK_PLL4_PFD1] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd1", "pll4_vcodiv", base + 0x614, 1);
c43a801a57890b Jacky Bai 2021-09-14  173  	clks[IMX8ULP_CLK_PLL4_PFD2] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd2", "pll4_vcodiv", base + 0x614, 2);
c43a801a57890b Jacky Bai 2021-09-14  174  	clks[IMX8ULP_CLK_PLL4_PFD3] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd3", "pll4_vcodiv", base + 0x614, 3);
c43a801a57890b Jacky Bai 2021-09-14  175  
c43a801a57890b Jacky Bai 2021-09-14  176  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd0_div1_gate", "pll4_pfd0", base + 0x608, 7);
c43a801a57890b Jacky Bai 2021-09-14  177  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd0_div2_gate", "pll4_pfd0", base + 0x608, 15);
c43a801a57890b Jacky Bai 2021-09-14  178  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd1_div1_gate", "pll4_pfd1", base + 0x608, 23);
c43a801a57890b Jacky Bai 2021-09-14  179  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd1_div2_gate", "pll4_pfd1", base + 0x608, 31);
c43a801a57890b Jacky Bai 2021-09-14  180  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd2_div1_gate", "pll4_pfd2", base + 0x60c, 7);
c43a801a57890b Jacky Bai 2021-09-14  181  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd2_div2_gate", "pll4_pfd2", base + 0x60c, 15);
c43a801a57890b Jacky Bai 2021-09-14  182  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd3_div1_gate", "pll4_pfd3", base + 0x60c, 23);
c43a801a57890b Jacky Bai 2021-09-14  183  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd3_div2_gate", "pll4_pfd3", base + 0x60c, 31);
c43a801a57890b Jacky Bai 2021-09-14  184  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV1] = imx_clk_hw_divider("pll4_pfd0_div1", "pll4_pfd0_div1_gate", base + 0x608, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  185  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV2] = imx_clk_hw_divider("pll4_pfd0_div2", "pll4_pfd0_div2_gate", base + 0x608, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  186  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV1] = imx_clk_hw_divider("pll4_pfd1_div1", "pll4_pfd1_div1_gate", base + 0x608, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  187  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV2] = imx_clk_hw_divider("pll4_pfd1_div2", "pll4_pfd1_div2_gate", base + 0x608, 24, 6);
c43a801a57890b Jacky Bai 2021-09-14  188  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV1] = imx_clk_hw_divider("pll4_pfd2_div1", "pll4_pfd2_div1_gate", base + 0x60c, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  189  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV2] = imx_clk_hw_divider("pll4_pfd2_div2", "pll4_pfd2_div2_gate", base + 0x60c, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  190  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV1] = imx_clk_hw_divider("pll4_pfd3_div1", "pll4_pfd3_div1_gate", base + 0x60c, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  191  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV2] = imx_clk_hw_divider("pll4_pfd3_div2", "pll4_pfd3_div2_gate", base + 0x60c, 24, 6);
c43a801a57890b Jacky Bai 2021-09-14  192  
c43a801a57890b Jacky Bai 2021-09-14  193  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV1_GATE] = imx_clk_hw_gate_dis("cgc2_sosc_div1_gate", "sosc", base + 0x108, 7);
c43a801a57890b Jacky Bai 2021-09-14  194  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV2_GATE] = imx_clk_hw_gate_dis("cgc2_sosc_div2_gate", "sosc", base + 0x108, 15);
c43a801a57890b Jacky Bai 2021-09-14  195  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV3_GATE] = imx_clk_hw_gate_dis("cgc2_sosc_div3_gate", "sosc", base + 0x108, 23);
c43a801a57890b Jacky Bai 2021-09-14  196  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV1] = imx_clk_hw_divider("cgc2_sosc_div1", "cgc2_sosc_div1_gate", base + 0x108, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  197  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV2] = imx_clk_hw_divider("cgc2_sosc_div2", "cgc2_sosc_div2_gate", base + 0x108, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  198  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV3] = imx_clk_hw_divider("cgc2_sosc_div3", "cgc2_sosc_div3_gate", base + 0x108, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  199  
c43a801a57890b Jacky Bai 2021-09-14  200  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV1_GATE] = imx_clk_hw_gate_dis("cgc2_frosc_div1_gate", "frosc", base + 0x208, 7);
c43a801a57890b Jacky Bai 2021-09-14  201  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV2_GATE] = imx_clk_hw_gate_dis("cgc2_frosc_div2_gate", "frosc", base + 0x208, 15);
c43a801a57890b Jacky Bai 2021-09-14  202  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV3_GATE] = imx_clk_hw_gate_dis("cgc2_frosc_div3_gate", "frosc", base + 0x208, 23);
c43a801a57890b Jacky Bai 2021-09-14  203  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV1] = imx_clk_hw_divider("cgc2_frosc_div1", "cgc2_frosc_div1_gate", base + 0x208, 0, 6);
c43a801a57890b Jacky Bai 2021-09-14  204  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV2] = imx_clk_hw_divider("cgc2_frosc_div2", "cgc2_frosc_div2_gate", base + 0x208, 8, 6);
c43a801a57890b Jacky Bai 2021-09-14  205  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV3] = imx_clk_hw_divider("cgc2_frosc_div3", "cgc2_frosc_div3_gate", base + 0x208, 16, 6);
c43a801a57890b Jacky Bai 2021-09-14  206  	clks[IMX8ULP_CLK_AUD_CLK2]  = imx_clk_hw_mux2("aud_clk2", base + 0x900, 0, 3, aud_clk2_sels, ARRAY_SIZE(aud_clk2_sels));
c43a801a57890b Jacky Bai 2021-09-14  207  	clks[IMX8ULP_CLK_SAI6_SEL]  = imx_clk_hw_mux2("sai6_sel", base + 0x904, 0, 3, sai67_sels, ARRAY_SIZE(sai67_sels));
c43a801a57890b Jacky Bai 2021-09-14  208  	clks[IMX8ULP_CLK_SAI7_SEL]  = imx_clk_hw_mux2("sai7_sel", base + 0x904, 8, 3, sai67_sels, ARRAY_SIZE(sai67_sels));
c43a801a57890b Jacky Bai 2021-09-14  209  	clks[IMX8ULP_CLK_SPDIF_SEL] = imx_clk_hw_mux2("spdif_sel", base + 0x910, 0, 3, sai67_sels, ARRAY_SIZE(sai67_sels));
c43a801a57890b Jacky Bai 2021-09-14  210  	clks[IMX8ULP_CLK_DSI_PHY_REF] = imx_clk_hw_fixed("dsi_phy_ref", 24000000);
c43a801a57890b Jacky Bai 2021-09-14  211  
c43a801a57890b Jacky Bai 2021-09-14  212  	imx_check_clk_hws(clks, clk_data->num);
c43a801a57890b Jacky Bai 2021-09-14  213  
c43a801a57890b Jacky Bai 2021-09-14  214  	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data);
c43a801a57890b Jacky Bai 2021-09-14  215  }
c43a801a57890b Jacky Bai 2021-09-14  216  
c43a801a57890b Jacky Bai 2021-09-14  217  static int imx8ulp_clk_pcc3_init(struct platform_device *pdev)
c43a801a57890b Jacky Bai 2021-09-14  218  {
c43a801a57890b Jacky Bai 2021-09-14  219  	struct device *dev = &pdev->dev;
c43a801a57890b Jacky Bai 2021-09-14  220  	struct clk_hw_onecell_data *clk_data;
c43a801a57890b Jacky Bai 2021-09-14  221  	struct clk_hw **clks;
c43a801a57890b Jacky Bai 2021-09-14  222  	void __iomem *base;
c43a801a57890b Jacky Bai 2021-09-14  223  	int ret;
c43a801a57890b Jacky Bai 2021-09-14  224  
c43a801a57890b Jacky Bai 2021-09-14  225  	clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, IMX8ULP_CLK_PCC3_END),
c43a801a57890b Jacky Bai 2021-09-14  226  			   GFP_KERNEL);
c43a801a57890b Jacky Bai 2021-09-14  227  	if (!clk_data)
c43a801a57890b Jacky Bai 2021-09-14  228  		return -ENOMEM;
c43a801a57890b Jacky Bai 2021-09-14  229  
c43a801a57890b Jacky Bai 2021-09-14  230  	clk_data->num = IMX8ULP_CLK_PCC3_END;
c43a801a57890b Jacky Bai 2021-09-14  231  	clks = clk_data->hws;
c43a801a57890b Jacky Bai 2021-09-14  232  
c43a801a57890b Jacky Bai 2021-09-14  233  	/* PCC3 */
c43a801a57890b Jacky Bai 2021-09-14  234  	base = devm_platform_ioremap_resource(pdev, 0);
c43a801a57890b Jacky Bai 2021-09-14  235  	if (WARN_ON(IS_ERR(base)))
c43a801a57890b Jacky Bai 2021-09-14 @236  		return PTR_ERR(base);
c43a801a57890b Jacky Bai 2021-09-14  237  
c43a801a57890b Jacky Bai 2021-09-14  238  	clks[IMX8ULP_CLK_WDOG3] = imx8ulp_clk_hw_composite("wdog3", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xa8, 1);
c43a801a57890b Jacky Bai 2021-09-14  239  	clks[IMX8ULP_CLK_WDOG4] = imx8ulp_clk_hw_composite("wdog4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xac, 1);
c43a801a57890b Jacky Bai 2021-09-14  240  	clks[IMX8ULP_CLK_LPIT1] = imx8ulp_clk_hw_composite("lpit1", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xc8, 1);
c43a801a57890b Jacky Bai 2021-09-14  241  	clks[IMX8ULP_CLK_TPM4] = imx8ulp_clk_hw_composite("tpm4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xcc, 1);
c43a801a57890b Jacky Bai 2021-09-14  242  	clks[IMX8ULP_CLK_TPM5] = imx8ulp_clk_hw_composite("tpm5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xd0, 1);
c43a801a57890b Jacky Bai 2021-09-14  243  	clks[IMX8ULP_CLK_FLEXIO1] = imx8ulp_clk_hw_composite("flexio1", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xd4, 1);
c43a801a57890b Jacky Bai 2021-09-14  244  	clks[IMX8ULP_CLK_I3C2] = imx8ulp_clk_hw_composite("i3c2", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xd8, 1);
c43a801a57890b Jacky Bai 2021-09-14  245  	clks[IMX8ULP_CLK_LPI2C4] = imx8ulp_clk_hw_composite("lpi2c4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xdc, 1);
c43a801a57890b Jacky Bai 2021-09-14  246  	clks[IMX8ULP_CLK_LPI2C5] = imx8ulp_clk_hw_composite("lpi2c5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xe0, 1);
c43a801a57890b Jacky Bai 2021-09-14  247  	clks[IMX8ULP_CLK_LPUART4] = imx8ulp_clk_hw_composite("lpuart4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xe4, 1);
c43a801a57890b Jacky Bai 2021-09-14  248  	clks[IMX8ULP_CLK_LPUART5] = imx8ulp_clk_hw_composite("lpuart5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xe8, 1);
c43a801a57890b Jacky Bai 2021-09-14  249  	clks[IMX8ULP_CLK_LPSPI4] = imx8ulp_clk_hw_composite("lpspi4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xec, 1);
c43a801a57890b Jacky Bai 2021-09-14  250  	clks[IMX8ULP_CLK_LPSPI5] = imx8ulp_clk_hw_composite("lpspi5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xf0, 1);
c43a801a57890b Jacky Bai 2021-09-14  251  
c43a801a57890b Jacky Bai 2021-09-14  252  	clks[IMX8ULP_CLK_DMA1_MP] = imx_clk_hw_gate("pcc_dma1_mp", "xbar_ad_divplat", base + 0x4, 30);
c43a801a57890b Jacky Bai 2021-09-14  253  	clks[IMX8ULP_CLK_DMA1_CH0] = imx_clk_hw_gate("pcc_dma1_ch0", "xbar_ad_divplat", base + 0x8, 30);
c43a801a57890b Jacky Bai 2021-09-14  254  	clks[IMX8ULP_CLK_DMA1_CH1] = imx_clk_hw_gate("pcc_dma1_ch1", "xbar_ad_divplat", base + 0xc, 30);
c43a801a57890b Jacky Bai 2021-09-14  255  	clks[IMX8ULP_CLK_DMA1_CH2] = imx_clk_hw_gate("pcc_dma1_ch2", "xbar_ad_divplat", base + 0x10, 30);
c43a801a57890b Jacky Bai 2021-09-14  256  	clks[IMX8ULP_CLK_DMA1_CH3] = imx_clk_hw_gate("pcc_dma1_ch3", "xbar_ad_divplat", base + 0x14, 30);
c43a801a57890b Jacky Bai 2021-09-14  257  	clks[IMX8ULP_CLK_DMA1_CH4] = imx_clk_hw_gate("pcc_dma1_ch4", "xbar_ad_divplat", base + 0x18, 30);
c43a801a57890b Jacky Bai 2021-09-14  258  	clks[IMX8ULP_CLK_DMA1_CH5] = imx_clk_hw_gate("pcc_dma1_ch5", "xbar_ad_divplat", base + 0x1c, 30);
c43a801a57890b Jacky Bai 2021-09-14  259  	clks[IMX8ULP_CLK_DMA1_CH6] = imx_clk_hw_gate("pcc_dma1_ch6", "xbar_ad_divplat", base + 0x20, 30);
c43a801a57890b Jacky Bai 2021-09-14  260  	clks[IMX8ULP_CLK_DMA1_CH7] = imx_clk_hw_gate("pcc_dma1_ch7", "xbar_ad_divplat", base + 0x24, 30);
c43a801a57890b Jacky Bai 2021-09-14  261  	clks[IMX8ULP_CLK_DMA1_CH8] = imx_clk_hw_gate("pcc_dma1_ch8", "xbar_ad_divplat", base + 0x28, 30);
c43a801a57890b Jacky Bai 2021-09-14  262  	clks[IMX8ULP_CLK_DMA1_CH9] = imx_clk_hw_gate("pcc_dma1_ch9", "xbar_ad_divplat", base + 0x2c, 30);
c43a801a57890b Jacky Bai 2021-09-14  263  	clks[IMX8ULP_CLK_DMA1_CH10] = imx_clk_hw_gate("pcc_dma1_ch10", "xbar_ad_divplat", base + 0x30, 30);
c43a801a57890b Jacky Bai 2021-09-14  264  	clks[IMX8ULP_CLK_DMA1_CH11] = imx_clk_hw_gate("pcc_dma1_ch11", "xbar_ad_divplat", base + 0x34, 30);
c43a801a57890b Jacky Bai 2021-09-14  265  	clks[IMX8ULP_CLK_DMA1_CH12] = imx_clk_hw_gate("pcc_dma1_ch12", "xbar_ad_divplat", base + 0x38, 30);
c43a801a57890b Jacky Bai 2021-09-14  266  	clks[IMX8ULP_CLK_DMA1_CH13] = imx_clk_hw_gate("pcc_dma1_ch13", "xbar_ad_divplat", base + 0x3c, 30);
c43a801a57890b Jacky Bai 2021-09-14  267  	clks[IMX8ULP_CLK_DMA1_CH14] = imx_clk_hw_gate("pcc_dma1_ch14", "xbar_ad_divplat", base + 0x40, 30);
c43a801a57890b Jacky Bai 2021-09-14  268  	clks[IMX8ULP_CLK_DMA1_CH15] = imx_clk_hw_gate("pcc_dma1_ch15", "xbar_ad_divplat", base + 0x44, 30);
c43a801a57890b Jacky Bai 2021-09-14  269  	clks[IMX8ULP_CLK_DMA1_CH16] = imx_clk_hw_gate("pcc_dma1_ch16", "xbar_ad_divplat", base + 0x48, 30);
c43a801a57890b Jacky Bai 2021-09-14  270  	clks[IMX8ULP_CLK_DMA1_CH17] = imx_clk_hw_gate("pcc_dma1_ch17", "xbar_ad_divplat", base + 0x4c, 30);
c43a801a57890b Jacky Bai 2021-09-14  271  	clks[IMX8ULP_CLK_DMA1_CH18] = imx_clk_hw_gate("pcc_dma1_ch18", "xbar_ad_divplat", base + 0x50, 30);
c43a801a57890b Jacky Bai 2021-09-14  272  	clks[IMX8ULP_CLK_DMA1_CH19] = imx_clk_hw_gate("pcc_dma1_ch19", "xbar_ad_divplat", base + 0x54, 30);
c43a801a57890b Jacky Bai 2021-09-14  273  	clks[IMX8ULP_CLK_DMA1_CH20] = imx_clk_hw_gate("pcc_dma1_ch20", "xbar_ad_divplat", base + 0x58, 30);
c43a801a57890b Jacky Bai 2021-09-14  274  	clks[IMX8ULP_CLK_DMA1_CH21] = imx_clk_hw_gate("pcc_dma1_ch21", "xbar_ad_divplat", base + 0x5c, 30);
c43a801a57890b Jacky Bai 2021-09-14  275  	clks[IMX8ULP_CLK_DMA1_CH22] = imx_clk_hw_gate("pcc_dma1_ch22", "xbar_ad_divplat", base + 0x60, 30);
c43a801a57890b Jacky Bai 2021-09-14  276  	clks[IMX8ULP_CLK_DMA1_CH23] = imx_clk_hw_gate("pcc_dma1_ch23", "xbar_ad_divplat", base + 0x64, 30);
c43a801a57890b Jacky Bai 2021-09-14  277  	clks[IMX8ULP_CLK_DMA1_CH24] = imx_clk_hw_gate("pcc_dma1_ch24", "xbar_ad_divplat", base + 0x68, 30);
c43a801a57890b Jacky Bai 2021-09-14  278  	clks[IMX8ULP_CLK_DMA1_CH25] = imx_clk_hw_gate("pcc_dma1_ch25", "xbar_ad_divplat", base + 0x6c, 30);
c43a801a57890b Jacky Bai 2021-09-14  279  	clks[IMX8ULP_CLK_DMA1_CH26] = imx_clk_hw_gate("pcc_dma1_ch26", "xbar_ad_divplat", base + 0x70, 30);
c43a801a57890b Jacky Bai 2021-09-14  280  	clks[IMX8ULP_CLK_DMA1_CH27] = imx_clk_hw_gate("pcc_dma1_ch27", "xbar_ad_divplat", base + 0x74, 30);
c43a801a57890b Jacky Bai 2021-09-14  281  	clks[IMX8ULP_CLK_DMA1_CH28] = imx_clk_hw_gate("pcc_dma1_ch28", "xbar_ad_divplat", base + 0x78, 30);
c43a801a57890b Jacky Bai 2021-09-14  282  	clks[IMX8ULP_CLK_DMA1_CH29] = imx_clk_hw_gate("pcc_dma1_ch29", "xbar_ad_divplat", base + 0x7c, 30);
c43a801a57890b Jacky Bai 2021-09-14  283  	clks[IMX8ULP_CLK_DMA1_CH30] = imx_clk_hw_gate("pcc_dma1_ch30", "xbar_ad_divplat", base + 0x80, 30);
c43a801a57890b Jacky Bai 2021-09-14  284  	clks[IMX8ULP_CLK_DMA1_CH31] = imx_clk_hw_gate("pcc_dma1_ch31", "xbar_ad_divplat", base + 0x84, 30);
c43a801a57890b Jacky Bai 2021-09-14  285  	clks[IMX8ULP_CLK_MU0_B] = imx_clk_hw_gate("mu0_b", "xbar_ad_divplat", base + 0x88, 30);
c43a801a57890b Jacky Bai 2021-09-14  286  	clks[IMX8ULP_CLK_MU3_A] = imx_clk_hw_gate("mu3_a", "xbar_ad_divplat", base + 0x8c, 30);
c43a801a57890b Jacky Bai 2021-09-14  287  
c43a801a57890b Jacky Bai 2021-09-14  288  	imx_check_clk_hws(clks, clk_data->num);
c43a801a57890b Jacky Bai 2021-09-14  289  
c43a801a57890b Jacky Bai 2021-09-14  290  	ret = devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data);
c43a801a57890b Jacky Bai 2021-09-14  291  
c43a801a57890b Jacky Bai 2021-09-14  292  	imx_register_uart_clocks(1);
c43a801a57890b Jacky Bai 2021-09-14  293  
c43a801a57890b Jacky Bai 2021-09-14  294  	return ret;
c43a801a57890b Jacky Bai 2021-09-14  295  }
c43a801a57890b Jacky Bai 2021-09-14  296  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 6+ messages in thread

* drivers/clk/imx/clk-imx8ulp.c:71 imx8ulp_clk_cgc1_init() warn: passing zero to 'PTR_ERR'
@ 2022-08-06 13:27 kernel test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2022-08-06 13:27 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 31280 bytes --]

BCC: lkp(a)intel.com
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Jacky Bai <ping.bai@nxp.com>
CC: Abel Vesa <abel.vesa@nxp.com>
CC: Peng Fan <peng.fan@nxp.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   6614a3c3164a5df2b54abb0b3559f51041cf705b
commit: c43a801a57890b15e16a0502edf145d59c91baf7 clk: imx: Add clock driver for imx8ulp
date:   10 months ago
:::::: branch date: 14 hours ago
:::::: commit date: 10 months ago
config: powerpc-randconfig-m041-20220805 (https://download.01.org/0day-ci/archive/20220806/202208062126.KqLkwqkz-lkp(a)intel.com/config)
compiler: powerpc-linux-gcc (GCC) 12.1.0

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/clk/imx/clk-imx8ulp.c:71 imx8ulp_clk_cgc1_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:153 imx8ulp_clk_cgc2_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:236 imx8ulp_clk_pcc3_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:315 imx8ulp_clk_pcc4_init() warn: passing zero to 'PTR_ERR'
drivers/clk/imx/clk-imx8ulp.c:363 imx8ulp_clk_pcc5_init() warn: passing zero to 'PTR_ERR'

vim +/PTR_ERR +71 drivers/clk/imx/clk-imx8ulp.c

c43a801a57890b1 Jacky Bai 2021-09-14   50  
c43a801a57890b1 Jacky Bai 2021-09-14   51  static int imx8ulp_clk_cgc1_init(struct platform_device *pdev)
c43a801a57890b1 Jacky Bai 2021-09-14   52  {
c43a801a57890b1 Jacky Bai 2021-09-14   53  	struct device *dev = &pdev->dev;
c43a801a57890b1 Jacky Bai 2021-09-14   54  	struct clk_hw_onecell_data *clk_data;
c43a801a57890b1 Jacky Bai 2021-09-14   55  	struct clk_hw **clks;
c43a801a57890b1 Jacky Bai 2021-09-14   56  	void __iomem *base;
c43a801a57890b1 Jacky Bai 2021-09-14   57  
c43a801a57890b1 Jacky Bai 2021-09-14   58  	clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, IMX8ULP_CLK_CGC1_END),
c43a801a57890b1 Jacky Bai 2021-09-14   59  			   GFP_KERNEL);
c43a801a57890b1 Jacky Bai 2021-09-14   60  	if (!clk_data)
c43a801a57890b1 Jacky Bai 2021-09-14   61  		return -ENOMEM;
c43a801a57890b1 Jacky Bai 2021-09-14   62  
c43a801a57890b1 Jacky Bai 2021-09-14   63  	clk_data->num = IMX8ULP_CLK_CGC1_END;
c43a801a57890b1 Jacky Bai 2021-09-14   64  	clks = clk_data->hws;
c43a801a57890b1 Jacky Bai 2021-09-14   65  
c43a801a57890b1 Jacky Bai 2021-09-14   66  	clks[IMX8ULP_CLK_DUMMY] = imx_clk_hw_fixed("dummy", 0);
c43a801a57890b1 Jacky Bai 2021-09-14   67  
c43a801a57890b1 Jacky Bai 2021-09-14   68  	/* CGC1 */
c43a801a57890b1 Jacky Bai 2021-09-14   69  	base = devm_platform_ioremap_resource(pdev, 0);
c43a801a57890b1 Jacky Bai 2021-09-14   70  	if (WARN_ON(IS_ERR(base)))
c43a801a57890b1 Jacky Bai 2021-09-14  @71  		return PTR_ERR(base);
c43a801a57890b1 Jacky Bai 2021-09-14   72  
c43a801a57890b1 Jacky Bai 2021-09-14   73  	clks[IMX8ULP_CLK_SPLL2_PRE_SEL]	= imx_clk_hw_mux_flags("spll2_pre_sel", base + 0x510, 0, 1, pll_pre_sels, ARRAY_SIZE(pll_pre_sels), CLK_SET_PARENT_GATE);
c43a801a57890b1 Jacky Bai 2021-09-14   74  	clks[IMX8ULP_CLK_SPLL3_PRE_SEL]	= imx_clk_hw_mux_flags("spll3_pre_sel", base + 0x610, 0, 1, pll_pre_sels, ARRAY_SIZE(pll_pre_sels), CLK_SET_PARENT_GATE);
c43a801a57890b1 Jacky Bai 2021-09-14   75  
c43a801a57890b1 Jacky Bai 2021-09-14   76  	clks[IMX8ULP_CLK_SPLL2] = imx_clk_hw_pllv4(IMX_PLLV4_IMX8ULP, "spll2", "spll2_pre_sel", base + 0x500);
c43a801a57890b1 Jacky Bai 2021-09-14   77  	clks[IMX8ULP_CLK_SPLL3] = imx_clk_hw_pllv4(IMX_PLLV4_IMX8ULP, "spll3", "spll3_pre_sel", base + 0x600);
c43a801a57890b1 Jacky Bai 2021-09-14   78  	clks[IMX8ULP_CLK_SPLL3_VCODIV] = imx_clk_hw_divider("spll3_vcodiv", "spll3", base + 0x604, 0, 6);
c43a801a57890b1 Jacky Bai 2021-09-14   79  
c43a801a57890b1 Jacky Bai 2021-09-14   80  	clks[IMX8ULP_CLK_SPLL3_PFD0] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd0", "spll3_vcodiv", base + 0x614, 0);
c43a801a57890b1 Jacky Bai 2021-09-14   81  	clks[IMX8ULP_CLK_SPLL3_PFD1] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd1", "spll3_vcodiv", base + 0x614, 1);
c43a801a57890b1 Jacky Bai 2021-09-14   82  	clks[IMX8ULP_CLK_SPLL3_PFD2] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd2", "spll3_vcodiv", base + 0x614, 2);
c43a801a57890b1 Jacky Bai 2021-09-14   83  	clks[IMX8ULP_CLK_SPLL3_PFD3] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "spll3_pfd3", "spll3_vcodiv", base + 0x614, 3);
c43a801a57890b1 Jacky Bai 2021-09-14   84  
c43a801a57890b1 Jacky Bai 2021-09-14   85  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd0_div1_gate", "spll3_pfd0", base + 0x608, 7);
c43a801a57890b1 Jacky Bai 2021-09-14   86  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd0_div2_gate", "spll3_pfd0", base + 0x608, 15);
c43a801a57890b1 Jacky Bai 2021-09-14   87  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd1_div1_gate", "spll3_pfd1", base + 0x608, 23);
c43a801a57890b1 Jacky Bai 2021-09-14   88  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd1_div2_gate", "spll3_pfd1", base + 0x608, 31);
c43a801a57890b1 Jacky Bai 2021-09-14   89  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd2_div1_gate", "spll3_pfd2", base + 0x60c, 7);
c43a801a57890b1 Jacky Bai 2021-09-14   90  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd2_div2_gate", "spll3_pfd2", base + 0x60c, 15);
c43a801a57890b1 Jacky Bai 2021-09-14   91  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV1_GATE] = imx_clk_hw_gate_dis("spll3_pfd3_div1_gate", "spll3_pfd3", base + 0x60c, 23);
c43a801a57890b1 Jacky Bai 2021-09-14   92  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV2_GATE] = imx_clk_hw_gate_dis("spll3_pfd3_div2_gate", "spll3_pfd3", base + 0x60c, 31);
c43a801a57890b1 Jacky Bai 2021-09-14   93  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV1] = imx_clk_hw_divider("spll3_pfd0_div1", "spll3_pfd0_div1_gate", base + 0x608, 0, 6);
c43a801a57890b1 Jacky Bai 2021-09-14   94  	clks[IMX8ULP_CLK_SPLL3_PFD0_DIV2] = imx_clk_hw_divider("spll3_pfd0_div2", "spll3_pfd0_div2_gate", base + 0x608, 8, 6);
c43a801a57890b1 Jacky Bai 2021-09-14   95  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV1] = imx_clk_hw_divider("spll3_pfd1_div1", "spll3_pfd1_div1_gate", base + 0x608, 16, 6);
c43a801a57890b1 Jacky Bai 2021-09-14   96  	clks[IMX8ULP_CLK_SPLL3_PFD1_DIV2] = imx_clk_hw_divider("spll3_pfd1_div2", "spll3_pfd1_div2_gate", base + 0x608, 24, 6);
c43a801a57890b1 Jacky Bai 2021-09-14   97  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV1] = imx_clk_hw_divider("spll3_pfd2_div1", "spll3_pfd2_div1_gate", base + 0x60c, 0, 6);
c43a801a57890b1 Jacky Bai 2021-09-14   98  	clks[IMX8ULP_CLK_SPLL3_PFD2_DIV2] = imx_clk_hw_divider("spll3_pfd2_div2", "spll3_pfd2_div2_gate", base + 0x60c, 8, 6);
c43a801a57890b1 Jacky Bai 2021-09-14   99  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV1] = imx_clk_hw_divider("spll3_pfd3_div1", "spll3_pfd3_div1_gate", base + 0x60c, 16, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  100  	clks[IMX8ULP_CLK_SPLL3_PFD3_DIV2] = imx_clk_hw_divider("spll3_pfd3_div2", "spll3_pfd3_div2_gate", base + 0x60c, 24, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  101  
c43a801a57890b1 Jacky Bai 2021-09-14  102  	clks[IMX8ULP_CLK_A35_SEL] = imx_clk_hw_mux2("a35_sel", base + 0x14, 28, 2, a35_sels, ARRAY_SIZE(a35_sels));
c43a801a57890b1 Jacky Bai 2021-09-14  103  	clks[IMX8ULP_CLK_A35_DIV] = imx_clk_hw_divider_flags("a35_div", "a35_sel", base + 0x14, 21, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b1 Jacky Bai 2021-09-14  104  
c43a801a57890b1 Jacky Bai 2021-09-14  105  	clks[IMX8ULP_CLK_NIC_SEL] = imx_clk_hw_mux2("nic_sel", base + 0x34, 28, 2, nic_sels, ARRAY_SIZE(nic_sels));
c43a801a57890b1 Jacky Bai 2021-09-14  106  	clks[IMX8ULP_CLK_NIC_AD_DIVPLAT] = imx_clk_hw_divider_flags("nic_ad_divplat", "nic_sel", base + 0x34, 21, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b1 Jacky Bai 2021-09-14  107  	clks[IMX8ULP_CLK_NIC_PER_DIVPLAT] = imx_clk_hw_divider_flags("nic_per_divplat", "nic_ad_divplat", base + 0x34, 14, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b1 Jacky Bai 2021-09-14  108  	clks[IMX8ULP_CLK_XBAR_AD_DIVPLAT] = imx_clk_hw_divider_flags("xbar_ad_divplat", "nic_ad_divplat", base + 0x38, 14, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b1 Jacky Bai 2021-09-14  109  	clks[IMX8ULP_CLK_XBAR_DIVBUS] = imx_clk_hw_divider_flags("xbar_divbus", "nic_ad_divplat", base + 0x38, 7, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b1 Jacky Bai 2021-09-14  110  	clks[IMX8ULP_CLK_XBAR_AD_SLOW] = imx_clk_hw_divider_flags("xbar_ad_slow", "nic_ad_divplat", base + 0x38, 0, 6, CLK_SET_RATE_PARENT | CLK_IS_CRITICAL);
c43a801a57890b1 Jacky Bai 2021-09-14  111  
c43a801a57890b1 Jacky Bai 2021-09-14  112  	clks[IMX8ULP_CLK_SOSC_DIV1_GATE] = imx_clk_hw_gate_dis("sosc_div1_gate", "sosc", base + 0x108, 7);
c43a801a57890b1 Jacky Bai 2021-09-14  113  	clks[IMX8ULP_CLK_SOSC_DIV2_GATE] = imx_clk_hw_gate_dis("sosc_div2_gate", "sosc", base + 0x108, 15);
c43a801a57890b1 Jacky Bai 2021-09-14  114  	clks[IMX8ULP_CLK_SOSC_DIV3_GATE] = imx_clk_hw_gate_dis("sosc_div3_gate", "sosc", base + 0x108, 23);
c43a801a57890b1 Jacky Bai 2021-09-14  115  	clks[IMX8ULP_CLK_SOSC_DIV1] = imx_clk_hw_divider("sosc_div1", "sosc_div1_gate", base + 0x108, 0, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  116  	clks[IMX8ULP_CLK_SOSC_DIV2] = imx_clk_hw_divider("sosc_div2", "sosc_div2_gate", base + 0x108, 8, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  117  	clks[IMX8ULP_CLK_SOSC_DIV3] = imx_clk_hw_divider("sosc_div3", "sosc_div3_gate", base + 0x108, 16, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  118  
c43a801a57890b1 Jacky Bai 2021-09-14  119  	clks[IMX8ULP_CLK_FROSC_DIV1_GATE] = imx_clk_hw_gate_dis("frosc_div1_gate", "frosc", base + 0x208, 7);
c43a801a57890b1 Jacky Bai 2021-09-14  120  	clks[IMX8ULP_CLK_FROSC_DIV2_GATE] = imx_clk_hw_gate_dis("frosc_div2_gate", "frosc", base + 0x208, 15);
c43a801a57890b1 Jacky Bai 2021-09-14  121  	clks[IMX8ULP_CLK_FROSC_DIV3_GATE] = imx_clk_hw_gate_dis("frosc_div3_gate", "frosc", base + 0x208, 23);
c43a801a57890b1 Jacky Bai 2021-09-14  122  	clks[IMX8ULP_CLK_FROSC_DIV1] = imx_clk_hw_divider("frosc_div1", "frosc_div1_gate", base + 0x208, 0, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  123  	clks[IMX8ULP_CLK_FROSC_DIV2] = imx_clk_hw_divider("frosc_div2", "frosc_div2_gate", base + 0x208, 8, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  124  	clks[IMX8ULP_CLK_FROSC_DIV3] = imx_clk_hw_divider("frosc_div3", "frosc_div3_gate", base + 0x208, 16, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  125  	clks[IMX8ULP_CLK_AUD_CLK1] = imx_clk_hw_mux2("aud_clk1", base + 0x900, 0, 3, aud_clk1_sels, ARRAY_SIZE(aud_clk1_sels));
c43a801a57890b1 Jacky Bai 2021-09-14  126  	clks[IMX8ULP_CLK_SAI4_SEL] = imx_clk_hw_mux2("sai4_sel", base + 0x904, 0, 2, sai45_sels, ARRAY_SIZE(sai45_sels));
c43a801a57890b1 Jacky Bai 2021-09-14  127  	clks[IMX8ULP_CLK_SAI5_SEL] = imx_clk_hw_mux2("sai5_sel", base + 0x904, 8, 2, sai45_sels, ARRAY_SIZE(sai45_sels));
c43a801a57890b1 Jacky Bai 2021-09-14  128  	clks[IMX8ULP_CLK_ENET_TS_SEL] = imx_clk_hw_mux2("enet_ts", base + 0x700, 24, 3, enet_ts_sels, ARRAY_SIZE(enet_ts_sels));
c43a801a57890b1 Jacky Bai 2021-09-14  129  
c43a801a57890b1 Jacky Bai 2021-09-14  130  	imx_check_clk_hws(clks, clk_data->num);
c43a801a57890b1 Jacky Bai 2021-09-14  131  
c43a801a57890b1 Jacky Bai 2021-09-14  132  	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data);
c43a801a57890b1 Jacky Bai 2021-09-14  133  }
c43a801a57890b1 Jacky Bai 2021-09-14  134  
c43a801a57890b1 Jacky Bai 2021-09-14  135  static int imx8ulp_clk_cgc2_init(struct platform_device *pdev)
c43a801a57890b1 Jacky Bai 2021-09-14  136  {
c43a801a57890b1 Jacky Bai 2021-09-14  137  	struct device *dev = &pdev->dev;
c43a801a57890b1 Jacky Bai 2021-09-14  138  	struct clk_hw_onecell_data *clk_data;
c43a801a57890b1 Jacky Bai 2021-09-14  139  	struct clk_hw **clks;
c43a801a57890b1 Jacky Bai 2021-09-14  140  	void __iomem *base;
c43a801a57890b1 Jacky Bai 2021-09-14  141  
c43a801a57890b1 Jacky Bai 2021-09-14  142  	clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, IMX8ULP_CLK_CGC2_END),
c43a801a57890b1 Jacky Bai 2021-09-14  143  			   GFP_KERNEL);
c43a801a57890b1 Jacky Bai 2021-09-14  144  	if (!clk_data)
c43a801a57890b1 Jacky Bai 2021-09-14  145  		return -ENOMEM;
c43a801a57890b1 Jacky Bai 2021-09-14  146  
c43a801a57890b1 Jacky Bai 2021-09-14  147  	clk_data->num = IMX8ULP_CLK_CGC2_END;
c43a801a57890b1 Jacky Bai 2021-09-14  148  	clks = clk_data->hws;
c43a801a57890b1 Jacky Bai 2021-09-14  149  
c43a801a57890b1 Jacky Bai 2021-09-14  150  	/* CGC2 */
c43a801a57890b1 Jacky Bai 2021-09-14  151  	base = devm_platform_ioremap_resource(pdev, 0);
c43a801a57890b1 Jacky Bai 2021-09-14  152  	if (WARN_ON(IS_ERR(base)))
c43a801a57890b1 Jacky Bai 2021-09-14 @153  		return PTR_ERR(base);
c43a801a57890b1 Jacky Bai 2021-09-14  154  
c43a801a57890b1 Jacky Bai 2021-09-14  155  	clks[IMX8ULP_CLK_PLL4_PRE_SEL] = imx_clk_hw_mux_flags("pll4_pre_sel", base + 0x610, 0, 1, pll_pre_sels, ARRAY_SIZE(pll_pre_sels), CLK_SET_PARENT_GATE);
c43a801a57890b1 Jacky Bai 2021-09-14  156  
c43a801a57890b1 Jacky Bai 2021-09-14  157  	clks[IMX8ULP_CLK_PLL4]	= imx_clk_hw_pllv4(IMX_PLLV4_IMX8ULP, "pll4", "pll4_pre_sel", base + 0x600);
c43a801a57890b1 Jacky Bai 2021-09-14  158  	clks[IMX8ULP_CLK_PLL4_VCODIV] = imx_clk_hw_divider("pll4_vcodiv", "pll4", base + 0x604, 0, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  159  
c43a801a57890b1 Jacky Bai 2021-09-14  160  	clks[IMX8ULP_CLK_HIFI_SEL] = imx_clk_hw_mux_flags("hifi_sel", base + 0x14, 28, 3, hifi_sels, ARRAY_SIZE(hifi_sels), CLK_SET_PARENT_GATE);
c43a801a57890b1 Jacky Bai 2021-09-14  161  	clks[IMX8ULP_CLK_HIFI_DIVCORE] = imx_clk_hw_divider("hifi_core_div", "hifi_sel", base + 0x14, 21, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  162  	clks[IMX8ULP_CLK_HIFI_DIVPLAT] = imx_clk_hw_divider("hifi_plat_div", "hifi_core_div", base + 0x14, 14, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  163  
c43a801a57890b1 Jacky Bai 2021-09-14  164  	clks[IMX8ULP_CLK_DDR_SEL] = imx_clk_hw_mux_flags("ddr_sel", base + 0x40, 28, 3, ddr_sels, ARRAY_SIZE(ddr_sels), CLK_SET_PARENT_GATE);
c43a801a57890b1 Jacky Bai 2021-09-14  165  	clks[IMX8ULP_CLK_DDR_DIV] = imx_clk_hw_divider_flags("ddr_div", "ddr_sel", base + 0x40, 21, 6, CLK_IS_CRITICAL);
c43a801a57890b1 Jacky Bai 2021-09-14  166  	clks[IMX8ULP_CLK_LPAV_AXI_SEL] = imx_clk_hw_mux("lpav_sel", base + 0x3c, 28, 2, lpav_sels, ARRAY_SIZE(lpav_sels));
c43a801a57890b1 Jacky Bai 2021-09-14  167  	clks[IMX8ULP_CLK_LPAV_AXI_DIV] = imx_clk_hw_divider_flags("lpav_axi_div", "lpav_sel", base + 0x3c, 21, 6, CLK_IS_CRITICAL);
c43a801a57890b1 Jacky Bai 2021-09-14  168  	clks[IMX8ULP_CLK_LPAV_AHB_DIV] = imx_clk_hw_divider_flags("lpav_ahb_div", "lpav_axi_div", base + 0x3c, 14, 6, CLK_IS_CRITICAL);
c43a801a57890b1 Jacky Bai 2021-09-14  169  	clks[IMX8ULP_CLK_LPAV_BUS_DIV] = imx_clk_hw_divider_flags("lpav_bus_div", "lpav_axi_div", base + 0x3c, 7, 6, CLK_IS_CRITICAL);
c43a801a57890b1 Jacky Bai 2021-09-14  170  
c43a801a57890b1 Jacky Bai 2021-09-14  171  	clks[IMX8ULP_CLK_PLL4_PFD0] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd0", "pll4_vcodiv", base + 0x614, 0);
c43a801a57890b1 Jacky Bai 2021-09-14  172  	clks[IMX8ULP_CLK_PLL4_PFD1] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd1", "pll4_vcodiv", base + 0x614, 1);
c43a801a57890b1 Jacky Bai 2021-09-14  173  	clks[IMX8ULP_CLK_PLL4_PFD2] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd2", "pll4_vcodiv", base + 0x614, 2);
c43a801a57890b1 Jacky Bai 2021-09-14  174  	clks[IMX8ULP_CLK_PLL4_PFD3] = imx_clk_hw_pfdv2(IMX_PFDV2_IMX8ULP, "pll4_pfd3", "pll4_vcodiv", base + 0x614, 3);
c43a801a57890b1 Jacky Bai 2021-09-14  175  
c43a801a57890b1 Jacky Bai 2021-09-14  176  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd0_div1_gate", "pll4_pfd0", base + 0x608, 7);
c43a801a57890b1 Jacky Bai 2021-09-14  177  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd0_div2_gate", "pll4_pfd0", base + 0x608, 15);
c43a801a57890b1 Jacky Bai 2021-09-14  178  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd1_div1_gate", "pll4_pfd1", base + 0x608, 23);
c43a801a57890b1 Jacky Bai 2021-09-14  179  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd1_div2_gate", "pll4_pfd1", base + 0x608, 31);
c43a801a57890b1 Jacky Bai 2021-09-14  180  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd2_div1_gate", "pll4_pfd2", base + 0x60c, 7);
c43a801a57890b1 Jacky Bai 2021-09-14  181  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd2_div2_gate", "pll4_pfd2", base + 0x60c, 15);
c43a801a57890b1 Jacky Bai 2021-09-14  182  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV1_GATE] = imx_clk_hw_gate_dis("pll4_pfd3_div1_gate", "pll4_pfd3", base + 0x60c, 23);
c43a801a57890b1 Jacky Bai 2021-09-14  183  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV2_GATE] = imx_clk_hw_gate_dis("pll4_pfd3_div2_gate", "pll4_pfd3", base + 0x60c, 31);
c43a801a57890b1 Jacky Bai 2021-09-14  184  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV1] = imx_clk_hw_divider("pll4_pfd0_div1", "pll4_pfd0_div1_gate", base + 0x608, 0, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  185  	clks[IMX8ULP_CLK_PLL4_PFD0_DIV2] = imx_clk_hw_divider("pll4_pfd0_div2", "pll4_pfd0_div2_gate", base + 0x608, 8, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  186  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV1] = imx_clk_hw_divider("pll4_pfd1_div1", "pll4_pfd1_div1_gate", base + 0x608, 16, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  187  	clks[IMX8ULP_CLK_PLL4_PFD1_DIV2] = imx_clk_hw_divider("pll4_pfd1_div2", "pll4_pfd1_div2_gate", base + 0x608, 24, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  188  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV1] = imx_clk_hw_divider("pll4_pfd2_div1", "pll4_pfd2_div1_gate", base + 0x60c, 0, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  189  	clks[IMX8ULP_CLK_PLL4_PFD2_DIV2] = imx_clk_hw_divider("pll4_pfd2_div2", "pll4_pfd2_div2_gate", base + 0x60c, 8, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  190  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV1] = imx_clk_hw_divider("pll4_pfd3_div1", "pll4_pfd3_div1_gate", base + 0x60c, 16, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  191  	clks[IMX8ULP_CLK_PLL4_PFD3_DIV2] = imx_clk_hw_divider("pll4_pfd3_div2", "pll4_pfd3_div2_gate", base + 0x60c, 24, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  192  
c43a801a57890b1 Jacky Bai 2021-09-14  193  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV1_GATE] = imx_clk_hw_gate_dis("cgc2_sosc_div1_gate", "sosc", base + 0x108, 7);
c43a801a57890b1 Jacky Bai 2021-09-14  194  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV2_GATE] = imx_clk_hw_gate_dis("cgc2_sosc_div2_gate", "sosc", base + 0x108, 15);
c43a801a57890b1 Jacky Bai 2021-09-14  195  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV3_GATE] = imx_clk_hw_gate_dis("cgc2_sosc_div3_gate", "sosc", base + 0x108, 23);
c43a801a57890b1 Jacky Bai 2021-09-14  196  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV1] = imx_clk_hw_divider("cgc2_sosc_div1", "cgc2_sosc_div1_gate", base + 0x108, 0, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  197  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV2] = imx_clk_hw_divider("cgc2_sosc_div2", "cgc2_sosc_div2_gate", base + 0x108, 8, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  198  	clks[IMX8ULP_CLK_CGC2_SOSC_DIV3] = imx_clk_hw_divider("cgc2_sosc_div3", "cgc2_sosc_div3_gate", base + 0x108, 16, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  199  
c43a801a57890b1 Jacky Bai 2021-09-14  200  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV1_GATE] = imx_clk_hw_gate_dis("cgc2_frosc_div1_gate", "frosc", base + 0x208, 7);
c43a801a57890b1 Jacky Bai 2021-09-14  201  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV2_GATE] = imx_clk_hw_gate_dis("cgc2_frosc_div2_gate", "frosc", base + 0x208, 15);
c43a801a57890b1 Jacky Bai 2021-09-14  202  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV3_GATE] = imx_clk_hw_gate_dis("cgc2_frosc_div3_gate", "frosc", base + 0x208, 23);
c43a801a57890b1 Jacky Bai 2021-09-14  203  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV1] = imx_clk_hw_divider("cgc2_frosc_div1", "cgc2_frosc_div1_gate", base + 0x208, 0, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  204  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV2] = imx_clk_hw_divider("cgc2_frosc_div2", "cgc2_frosc_div2_gate", base + 0x208, 8, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  205  	clks[IMX8ULP_CLK_CGC2_FROSC_DIV3] = imx_clk_hw_divider("cgc2_frosc_div3", "cgc2_frosc_div3_gate", base + 0x208, 16, 6);
c43a801a57890b1 Jacky Bai 2021-09-14  206  	clks[IMX8ULP_CLK_AUD_CLK2]  = imx_clk_hw_mux2("aud_clk2", base + 0x900, 0, 3, aud_clk2_sels, ARRAY_SIZE(aud_clk2_sels));
c43a801a57890b1 Jacky Bai 2021-09-14  207  	clks[IMX8ULP_CLK_SAI6_SEL]  = imx_clk_hw_mux2("sai6_sel", base + 0x904, 0, 3, sai67_sels, ARRAY_SIZE(sai67_sels));
c43a801a57890b1 Jacky Bai 2021-09-14  208  	clks[IMX8ULP_CLK_SAI7_SEL]  = imx_clk_hw_mux2("sai7_sel", base + 0x904, 8, 3, sai67_sels, ARRAY_SIZE(sai67_sels));
c43a801a57890b1 Jacky Bai 2021-09-14  209  	clks[IMX8ULP_CLK_SPDIF_SEL] = imx_clk_hw_mux2("spdif_sel", base + 0x910, 0, 3, sai67_sels, ARRAY_SIZE(sai67_sels));
c43a801a57890b1 Jacky Bai 2021-09-14  210  	clks[IMX8ULP_CLK_DSI_PHY_REF] = imx_clk_hw_fixed("dsi_phy_ref", 24000000);
c43a801a57890b1 Jacky Bai 2021-09-14  211  
c43a801a57890b1 Jacky Bai 2021-09-14  212  	imx_check_clk_hws(clks, clk_data->num);
c43a801a57890b1 Jacky Bai 2021-09-14  213  
c43a801a57890b1 Jacky Bai 2021-09-14  214  	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data);
c43a801a57890b1 Jacky Bai 2021-09-14  215  }
c43a801a57890b1 Jacky Bai 2021-09-14  216  
c43a801a57890b1 Jacky Bai 2021-09-14  217  static int imx8ulp_clk_pcc3_init(struct platform_device *pdev)
c43a801a57890b1 Jacky Bai 2021-09-14  218  {
c43a801a57890b1 Jacky Bai 2021-09-14  219  	struct device *dev = &pdev->dev;
c43a801a57890b1 Jacky Bai 2021-09-14  220  	struct clk_hw_onecell_data *clk_data;
c43a801a57890b1 Jacky Bai 2021-09-14  221  	struct clk_hw **clks;
c43a801a57890b1 Jacky Bai 2021-09-14  222  	void __iomem *base;
c43a801a57890b1 Jacky Bai 2021-09-14  223  	int ret;
c43a801a57890b1 Jacky Bai 2021-09-14  224  
c43a801a57890b1 Jacky Bai 2021-09-14  225  	clk_data = devm_kzalloc(dev, struct_size(clk_data, hws, IMX8ULP_CLK_PCC3_END),
c43a801a57890b1 Jacky Bai 2021-09-14  226  			   GFP_KERNEL);
c43a801a57890b1 Jacky Bai 2021-09-14  227  	if (!clk_data)
c43a801a57890b1 Jacky Bai 2021-09-14  228  		return -ENOMEM;
c43a801a57890b1 Jacky Bai 2021-09-14  229  
c43a801a57890b1 Jacky Bai 2021-09-14  230  	clk_data->num = IMX8ULP_CLK_PCC3_END;
c43a801a57890b1 Jacky Bai 2021-09-14  231  	clks = clk_data->hws;
c43a801a57890b1 Jacky Bai 2021-09-14  232  
c43a801a57890b1 Jacky Bai 2021-09-14  233  	/* PCC3 */
c43a801a57890b1 Jacky Bai 2021-09-14  234  	base = devm_platform_ioremap_resource(pdev, 0);
c43a801a57890b1 Jacky Bai 2021-09-14  235  	if (WARN_ON(IS_ERR(base)))
c43a801a57890b1 Jacky Bai 2021-09-14 @236  		return PTR_ERR(base);
c43a801a57890b1 Jacky Bai 2021-09-14  237  
c43a801a57890b1 Jacky Bai 2021-09-14  238  	clks[IMX8ULP_CLK_WDOG3] = imx8ulp_clk_hw_composite("wdog3", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xa8, 1);
c43a801a57890b1 Jacky Bai 2021-09-14  239  	clks[IMX8ULP_CLK_WDOG4] = imx8ulp_clk_hw_composite("wdog4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xac, 1);
c43a801a57890b1 Jacky Bai 2021-09-14  240  	clks[IMX8ULP_CLK_LPIT1] = imx8ulp_clk_hw_composite("lpit1", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xc8, 1);
c43a801a57890b1 Jacky Bai 2021-09-14  241  	clks[IMX8ULP_CLK_TPM4] = imx8ulp_clk_hw_composite("tpm4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xcc, 1);
c43a801a57890b1 Jacky Bai 2021-09-14  242  	clks[IMX8ULP_CLK_TPM5] = imx8ulp_clk_hw_composite("tpm5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xd0, 1);
c43a801a57890b1 Jacky Bai 2021-09-14  243  	clks[IMX8ULP_CLK_FLEXIO1] = imx8ulp_clk_hw_composite("flexio1", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xd4, 1);
c43a801a57890b1 Jacky Bai 2021-09-14  244  	clks[IMX8ULP_CLK_I3C2] = imx8ulp_clk_hw_composite("i3c2", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xd8, 1);
c43a801a57890b1 Jacky Bai 2021-09-14  245  	clks[IMX8ULP_CLK_LPI2C4] = imx8ulp_clk_hw_composite("lpi2c4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xdc, 1);
c43a801a57890b1 Jacky Bai 2021-09-14  246  	clks[IMX8ULP_CLK_LPI2C5] = imx8ulp_clk_hw_composite("lpi2c5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xe0, 1);
c43a801a57890b1 Jacky Bai 2021-09-14  247  	clks[IMX8ULP_CLK_LPUART4] = imx8ulp_clk_hw_composite("lpuart4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xe4, 1);
c43a801a57890b1 Jacky Bai 2021-09-14  248  	clks[IMX8ULP_CLK_LPUART5] = imx8ulp_clk_hw_composite("lpuart5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xe8, 1);
c43a801a57890b1 Jacky Bai 2021-09-14  249  	clks[IMX8ULP_CLK_LPSPI4] = imx8ulp_clk_hw_composite("lpspi4", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xec, 1);
c43a801a57890b1 Jacky Bai 2021-09-14  250  	clks[IMX8ULP_CLK_LPSPI5] = imx8ulp_clk_hw_composite("lpspi5", pcc3_periph_bus_sels, ARRAY_SIZE(pcc3_periph_bus_sels), true, true, true, base + 0xf0, 1);
c43a801a57890b1 Jacky Bai 2021-09-14  251  
c43a801a57890b1 Jacky Bai 2021-09-14  252  	clks[IMX8ULP_CLK_DMA1_MP] = imx_clk_hw_gate("pcc_dma1_mp", "xbar_ad_divplat", base + 0x4, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  253  	clks[IMX8ULP_CLK_DMA1_CH0] = imx_clk_hw_gate("pcc_dma1_ch0", "xbar_ad_divplat", base + 0x8, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  254  	clks[IMX8ULP_CLK_DMA1_CH1] = imx_clk_hw_gate("pcc_dma1_ch1", "xbar_ad_divplat", base + 0xc, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  255  	clks[IMX8ULP_CLK_DMA1_CH2] = imx_clk_hw_gate("pcc_dma1_ch2", "xbar_ad_divplat", base + 0x10, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  256  	clks[IMX8ULP_CLK_DMA1_CH3] = imx_clk_hw_gate("pcc_dma1_ch3", "xbar_ad_divplat", base + 0x14, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  257  	clks[IMX8ULP_CLK_DMA1_CH4] = imx_clk_hw_gate("pcc_dma1_ch4", "xbar_ad_divplat", base + 0x18, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  258  	clks[IMX8ULP_CLK_DMA1_CH5] = imx_clk_hw_gate("pcc_dma1_ch5", "xbar_ad_divplat", base + 0x1c, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  259  	clks[IMX8ULP_CLK_DMA1_CH6] = imx_clk_hw_gate("pcc_dma1_ch6", "xbar_ad_divplat", base + 0x20, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  260  	clks[IMX8ULP_CLK_DMA1_CH7] = imx_clk_hw_gate("pcc_dma1_ch7", "xbar_ad_divplat", base + 0x24, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  261  	clks[IMX8ULP_CLK_DMA1_CH8] = imx_clk_hw_gate("pcc_dma1_ch8", "xbar_ad_divplat", base + 0x28, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  262  	clks[IMX8ULP_CLK_DMA1_CH9] = imx_clk_hw_gate("pcc_dma1_ch9", "xbar_ad_divplat", base + 0x2c, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  263  	clks[IMX8ULP_CLK_DMA1_CH10] = imx_clk_hw_gate("pcc_dma1_ch10", "xbar_ad_divplat", base + 0x30, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  264  	clks[IMX8ULP_CLK_DMA1_CH11] = imx_clk_hw_gate("pcc_dma1_ch11", "xbar_ad_divplat", base + 0x34, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  265  	clks[IMX8ULP_CLK_DMA1_CH12] = imx_clk_hw_gate("pcc_dma1_ch12", "xbar_ad_divplat", base + 0x38, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  266  	clks[IMX8ULP_CLK_DMA1_CH13] = imx_clk_hw_gate("pcc_dma1_ch13", "xbar_ad_divplat", base + 0x3c, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  267  	clks[IMX8ULP_CLK_DMA1_CH14] = imx_clk_hw_gate("pcc_dma1_ch14", "xbar_ad_divplat", base + 0x40, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  268  	clks[IMX8ULP_CLK_DMA1_CH15] = imx_clk_hw_gate("pcc_dma1_ch15", "xbar_ad_divplat", base + 0x44, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  269  	clks[IMX8ULP_CLK_DMA1_CH16] = imx_clk_hw_gate("pcc_dma1_ch16", "xbar_ad_divplat", base + 0x48, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  270  	clks[IMX8ULP_CLK_DMA1_CH17] = imx_clk_hw_gate("pcc_dma1_ch17", "xbar_ad_divplat", base + 0x4c, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  271  	clks[IMX8ULP_CLK_DMA1_CH18] = imx_clk_hw_gate("pcc_dma1_ch18", "xbar_ad_divplat", base + 0x50, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  272  	clks[IMX8ULP_CLK_DMA1_CH19] = imx_clk_hw_gate("pcc_dma1_ch19", "xbar_ad_divplat", base + 0x54, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  273  	clks[IMX8ULP_CLK_DMA1_CH20] = imx_clk_hw_gate("pcc_dma1_ch20", "xbar_ad_divplat", base + 0x58, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  274  	clks[IMX8ULP_CLK_DMA1_CH21] = imx_clk_hw_gate("pcc_dma1_ch21", "xbar_ad_divplat", base + 0x5c, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  275  	clks[IMX8ULP_CLK_DMA1_CH22] = imx_clk_hw_gate("pcc_dma1_ch22", "xbar_ad_divplat", base + 0x60, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  276  	clks[IMX8ULP_CLK_DMA1_CH23] = imx_clk_hw_gate("pcc_dma1_ch23", "xbar_ad_divplat", base + 0x64, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  277  	clks[IMX8ULP_CLK_DMA1_CH24] = imx_clk_hw_gate("pcc_dma1_ch24", "xbar_ad_divplat", base + 0x68, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  278  	clks[IMX8ULP_CLK_DMA1_CH25] = imx_clk_hw_gate("pcc_dma1_ch25", "xbar_ad_divplat", base + 0x6c, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  279  	clks[IMX8ULP_CLK_DMA1_CH26] = imx_clk_hw_gate("pcc_dma1_ch26", "xbar_ad_divplat", base + 0x70, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  280  	clks[IMX8ULP_CLK_DMA1_CH27] = imx_clk_hw_gate("pcc_dma1_ch27", "xbar_ad_divplat", base + 0x74, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  281  	clks[IMX8ULP_CLK_DMA1_CH28] = imx_clk_hw_gate("pcc_dma1_ch28", "xbar_ad_divplat", base + 0x78, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  282  	clks[IMX8ULP_CLK_DMA1_CH29] = imx_clk_hw_gate("pcc_dma1_ch29", "xbar_ad_divplat", base + 0x7c, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  283  	clks[IMX8ULP_CLK_DMA1_CH30] = imx_clk_hw_gate("pcc_dma1_ch30", "xbar_ad_divplat", base + 0x80, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  284  	clks[IMX8ULP_CLK_DMA1_CH31] = imx_clk_hw_gate("pcc_dma1_ch31", "xbar_ad_divplat", base + 0x84, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  285  	clks[IMX8ULP_CLK_MU0_B] = imx_clk_hw_gate("mu0_b", "xbar_ad_divplat", base + 0x88, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  286  	clks[IMX8ULP_CLK_MU3_A] = imx_clk_hw_gate("mu3_a", "xbar_ad_divplat", base + 0x8c, 30);
c43a801a57890b1 Jacky Bai 2021-09-14  287  
c43a801a57890b1 Jacky Bai 2021-09-14  288  	imx_check_clk_hws(clks, clk_data->num);
c43a801a57890b1 Jacky Bai 2021-09-14  289  
c43a801a57890b1 Jacky Bai 2021-09-14  290  	ret = devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data);
c43a801a57890b1 Jacky Bai 2021-09-14  291  
c43a801a57890b1 Jacky Bai 2021-09-14  292  	imx_register_uart_clocks(1);
c43a801a57890b1 Jacky Bai 2021-09-14  293  
c43a801a57890b1 Jacky Bai 2021-09-14  294  	return ret;
c43a801a57890b1 Jacky Bai 2021-09-14  295  }
c43a801a57890b1 Jacky Bai 2021-09-14  296  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-08-06 13:27 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-01-23  3:47 drivers/clk/imx/clk-imx8ulp.c:71 imx8ulp_clk_cgc1_init() warn: passing zero to 'PTR_ERR' kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2022-08-06 13:27 kernel test robot
2022-02-09 10:43 kernel test robot
2022-02-09  0:43 kernel test robot
2022-01-23 21:48 kernel test robot
2021-11-27 16:21 kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.