From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============4743082690391351582==" MIME-Version: 1.0 From: kernel test robot Subject: Re: [PATCH V7 3/4] soc: imx: Add generic blk-ctl driver Date: Sat, 26 Jun 2021 16:07:43 +0800 Message-ID: <202106261546.9K21C3vw-lkp@intel.com> List-Id: To: kbuild@lists.01.org --===============4743082690391351582== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable CC: kbuild-all(a)lists.01.org In-Reply-To: <20210612133134.2738-4-peng.fan@oss.nxp.com> References: <20210612133134.2738-4-peng.fan@oss.nxp.com> TO: "Peng Fan (OSS)" TO: robh+dt(a)kernel.org TO: shawnguo(a)kernel.org TO: s.hauer(a)pengutronix.de CC: kernel(a)pengutronix.de CC: festevam(a)gmail.com CC: linux-imx(a)nxp.com CC: p.zabel(a)pengutronix.de CC: l.stach(a)pengutronix.de CC: krzk(a)kernel.org CC: agx(a)sigxcpu.org Hi "Peng, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on shawnguo/for-next] [also build test WARNING on next-20210625] [cannot apply to robh/for-next pza/reset/next v5.13-rc7] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Peng-Fan-OSS/soc-imx-add-i= -MX-BLK-CTL-support/20210617-013814 base: https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git = for-next :::::: branch date: 10 days ago :::::: commit date: 10 days ago config: i386-randconfig-m031-20210625 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: drivers/soc/imx/blk-ctl.c:151 imx_blk_ctl_probe() warn: passing zero to 'PT= R_ERR' drivers/soc/imx/blk-ctl.c:188 imx_blk_ctl_remove() error: potentially deref= erencing uninitialized 'active_pd'. drivers/soc/imx/blk-ctl.c:318 imx_blk_ctl_register() error: uninitialized s= ymbol 'ret'. vim +/PTR_ERR +151 drivers/soc/imx/blk-ctl.c 4fd3f78814fbf8 Peng Fan 2021-06-12 136 = 4fd3f78814fbf8 Peng Fan 2021-06-12 137 static int imx_blk_ctl_probe(struc= t platform_device *pdev) 4fd3f78814fbf8 Peng Fan 2021-06-12 138 { 4fd3f78814fbf8 Peng Fan 2021-06-12 139 struct imx_blk_ctl_domain *domain= =3D pdev->dev.platform_data; 4fd3f78814fbf8 Peng Fan 2021-06-12 140 struct imx_blk_ctl *blk_ctl =3D d= omain->blk_ctl; 4fd3f78814fbf8 Peng Fan 2021-06-12 141 struct generic_pm_domain *parent_= genpd; 4fd3f78814fbf8 Peng Fan 2021-06-12 142 struct device *dev =3D &pdev->dev; 4fd3f78814fbf8 Peng Fan 2021-06-12 143 struct device *active_pd; 4fd3f78814fbf8 Peng Fan 2021-06-12 144 int ret; 4fd3f78814fbf8 Peng Fan 2021-06-12 145 = 4fd3f78814fbf8 Peng Fan 2021-06-12 146 pdev->dev.of_node =3D blk_ctl->de= v->of_node; 4fd3f78814fbf8 Peng Fan 2021-06-12 147 = 4fd3f78814fbf8 Peng Fan 2021-06-12 148 if (domain->hw->active_pd_name) { 4fd3f78814fbf8 Peng Fan 2021-06-12 149 active_pd =3D dev_pm_domain_atta= ch_by_name(dev, domain->hw->active_pd_name); 4fd3f78814fbf8 Peng Fan 2021-06-12 150 if (IS_ERR_OR_NULL(active_pd)) { 4fd3f78814fbf8 Peng Fan 2021-06-12 @151 ret =3D PTR_ERR(active_pd) ? : = -ENODATA; 4fd3f78814fbf8 Peng Fan 2021-06-12 152 pdev->dev.of_node =3D NULL; 4fd3f78814fbf8 Peng Fan 2021-06-12 153 return ret; 4fd3f78814fbf8 Peng Fan 2021-06-12 154 } 4fd3f78814fbf8 Peng Fan 2021-06-12 155 = 4fd3f78814fbf8 Peng Fan 2021-06-12 156 domain->active_pd =3D active_pd; 4fd3f78814fbf8 Peng Fan 2021-06-12 157 } else { 4fd3f78814fbf8 Peng Fan 2021-06-12 158 if (!blk_ctl->bus_domain) { 4fd3f78814fbf8 Peng Fan 2021-06-12 159 pdev->dev.of_node =3D NULL; 4fd3f78814fbf8 Peng Fan 2021-06-12 160 return -EPROBE_DEFER; 4fd3f78814fbf8 Peng Fan 2021-06-12 161 } 4fd3f78814fbf8 Peng Fan 2021-06-12 162 } 4fd3f78814fbf8 Peng Fan 2021-06-12 163 = 4fd3f78814fbf8 Peng Fan 2021-06-12 164 if (domain->hw->active_pd_name) 4fd3f78814fbf8 Peng Fan 2021-06-12 165 parent_genpd =3D pd_to_genpd(act= ive_pd->pm_domain); 4fd3f78814fbf8 Peng Fan 2021-06-12 166 else 4fd3f78814fbf8 Peng Fan 2021-06-12 167 parent_genpd =3D blk_ctl->bus_do= main; 4fd3f78814fbf8 Peng Fan 2021-06-12 168 = 4fd3f78814fbf8 Peng Fan 2021-06-12 169 if (pm_genpd_add_subdomain(parent= _genpd, &domain->genpd)) { 4fd3f78814fbf8 Peng Fan 2021-06-12 170 dev_warn(dev, "failed to add sub= domain: %s\n", domain->genpd.name); 4fd3f78814fbf8 Peng Fan 2021-06-12 171 } else { 4fd3f78814fbf8 Peng Fan 2021-06-12 172 mutex_lock(&blk_ctl->lock); 4fd3f78814fbf8 Peng Fan 2021-06-12 173 domain->hooked =3D true; 4fd3f78814fbf8 Peng Fan 2021-06-12 174 mutex_unlock(&blk_ctl->lock); 4fd3f78814fbf8 Peng Fan 2021-06-12 175 } 4fd3f78814fbf8 Peng Fan 2021-06-12 176 = 4fd3f78814fbf8 Peng Fan 2021-06-12 177 return 0; 4fd3f78814fbf8 Peng Fan 2021-06-12 178 } 4fd3f78814fbf8 Peng Fan 2021-06-12 179 = 4fd3f78814fbf8 Peng Fan 2021-06-12 180 static int imx_blk_ctl_remove(stru= ct platform_device *pdev) 4fd3f78814fbf8 Peng Fan 2021-06-12 181 { 4fd3f78814fbf8 Peng Fan 2021-06-12 182 struct imx_blk_ctl_domain *domain= =3D pdev->dev.platform_data; 4fd3f78814fbf8 Peng Fan 2021-06-12 183 struct imx_blk_ctl *blk_ctl =3D d= omain->blk_ctl; 4fd3f78814fbf8 Peng Fan 2021-06-12 184 struct generic_pm_domain *parent_= genpd; 4fd3f78814fbf8 Peng Fan 2021-06-12 185 struct device *active_pd; 4fd3f78814fbf8 Peng Fan 2021-06-12 186 = 4fd3f78814fbf8 Peng Fan 2021-06-12 187 if (domain->hw->active_pd_name) 4fd3f78814fbf8 Peng Fan 2021-06-12 @188 parent_genpd =3D pd_to_genpd(act= ive_pd->pm_domain); 4fd3f78814fbf8 Peng Fan 2021-06-12 189 else 4fd3f78814fbf8 Peng Fan 2021-06-12 190 parent_genpd =3D blk_ctl->bus_do= main; 4fd3f78814fbf8 Peng Fan 2021-06-12 191 = 4fd3f78814fbf8 Peng Fan 2021-06-12 192 pm_genpd_remove_subdomain(parent_= genpd, &domain->genpd); 4fd3f78814fbf8 Peng Fan 2021-06-12 193 = 4fd3f78814fbf8 Peng Fan 2021-06-12 194 mutex_lock(&blk_ctl->lock); 4fd3f78814fbf8 Peng Fan 2021-06-12 195 domain->hooked =3D false; 4fd3f78814fbf8 Peng Fan 2021-06-12 196 mutex_unlock(&blk_ctl->lock); 4fd3f78814fbf8 Peng Fan 2021-06-12 197 = 4fd3f78814fbf8 Peng Fan 2021-06-12 198 if (domain->hw->active_pd_name) 4fd3f78814fbf8 Peng Fan 2021-06-12 199 dev_pm_domain_detach(domain->act= ive_pd, false); 4fd3f78814fbf8 Peng Fan 2021-06-12 200 = 4fd3f78814fbf8 Peng Fan 2021-06-12 201 return 0; 4fd3f78814fbf8 Peng Fan 2021-06-12 202 } 4fd3f78814fbf8 Peng Fan 2021-06-12 203 = 4fd3f78814fbf8 Peng Fan 2021-06-12 204 static const struct platform_devic= e_id imx_blk_ctl_id[] =3D { 4fd3f78814fbf8 Peng Fan 2021-06-12 205 { "imx-vpumix-blk-ctl", }, 4fd3f78814fbf8 Peng Fan 2021-06-12 206 { "imx-dispmix-blk-ctl", }, 4fd3f78814fbf8 Peng Fan 2021-06-12 207 { }, 4fd3f78814fbf8 Peng Fan 2021-06-12 208 }; 4fd3f78814fbf8 Peng Fan 2021-06-12 209 = 4fd3f78814fbf8 Peng Fan 2021-06-12 210 static struct platform_driver imx_= blk_ctl_driver =3D { 4fd3f78814fbf8 Peng Fan 2021-06-12 211 .driver =3D { 4fd3f78814fbf8 Peng Fan 2021-06-12 212 .name =3D "imx-blk-ctl", 4fd3f78814fbf8 Peng Fan 2021-06-12 213 }, 4fd3f78814fbf8 Peng Fan 2021-06-12 214 .probe =3D imx_blk_ctl_probe, 4fd3f78814fbf8 Peng Fan 2021-06-12 215 .remove =3D imx_blk_ctl_remove, 4fd3f78814fbf8 Peng Fan 2021-06-12 216 .id_table =3D imx_blk_ctl_id, 4fd3f78814fbf8 Peng Fan 2021-06-12 217 }; 4fd3f78814fbf8 Peng Fan 2021-06-12 218 builtin_platform_driver(imx_blk_ct= l_driver) 4fd3f78814fbf8 Peng Fan 2021-06-12 219 = 4fd3f78814fbf8 Peng Fan 2021-06-12 220 static struct generic_pm_domain *i= mx_blk_ctl_genpd_xlate(struct of_phandle_args *genpdspec, 4fd3f78814fbf8 Peng Fan 2021-06-12 221 void *data) 4fd3f78814fbf8 Peng Fan 2021-06-12 222 { 4fd3f78814fbf8 Peng Fan 2021-06-12 223 struct genpd_onecell_data *genpd_= data =3D data; 4fd3f78814fbf8 Peng Fan 2021-06-12 224 unsigned int idx =3D genpdspec->a= rgs[0]; 4fd3f78814fbf8 Peng Fan 2021-06-12 225 struct imx_blk_ctl_domain *domain; 4fd3f78814fbf8 Peng Fan 2021-06-12 226 struct generic_pm_domain *genpd = =3D ERR_PTR(-EPROBE_DEFER); 4fd3f78814fbf8 Peng Fan 2021-06-12 227 = 4fd3f78814fbf8 Peng Fan 2021-06-12 228 if (genpdspec->args_count !=3D 1) 4fd3f78814fbf8 Peng Fan 2021-06-12 229 return ERR_PTR(-EINVAL); 4fd3f78814fbf8 Peng Fan 2021-06-12 230 = 4fd3f78814fbf8 Peng Fan 2021-06-12 231 if (idx >=3D genpd_data->num_doma= ins) 4fd3f78814fbf8 Peng Fan 2021-06-12 232 return ERR_PTR(-EINVAL); 4fd3f78814fbf8 Peng Fan 2021-06-12 233 = 4fd3f78814fbf8 Peng Fan 2021-06-12 234 if (!genpd_data->domains[idx]) 4fd3f78814fbf8 Peng Fan 2021-06-12 235 return ERR_PTR(-ENOENT); 4fd3f78814fbf8 Peng Fan 2021-06-12 236 = 4fd3f78814fbf8 Peng Fan 2021-06-12 237 domain =3D to_imx_blk_ctl_pd(genp= d_data->domains[idx]); 4fd3f78814fbf8 Peng Fan 2021-06-12 238 = 4fd3f78814fbf8 Peng Fan 2021-06-12 239 mutex_lock(&domain->blk_ctl->lock= ); 4fd3f78814fbf8 Peng Fan 2021-06-12 240 if (domain->hooked) 4fd3f78814fbf8 Peng Fan 2021-06-12 241 genpd =3D genpd_data->domains[id= x]; 4fd3f78814fbf8 Peng Fan 2021-06-12 242 mutex_unlock(&domain->blk_ctl->lo= ck); 4fd3f78814fbf8 Peng Fan 2021-06-12 243 = 4fd3f78814fbf8 Peng Fan 2021-06-12 244 return genpd; 4fd3f78814fbf8 Peng Fan 2021-06-12 245 } 4fd3f78814fbf8 Peng Fan 2021-06-12 246 = 4fd3f78814fbf8 Peng Fan 2021-06-12 247 int imx_blk_ctl_register(struct de= vice *dev) 4fd3f78814fbf8 Peng Fan 2021-06-12 248 { 4fd3f78814fbf8 Peng Fan 2021-06-12 249 struct imx_blk_ctl *blk_ctl =3D d= ev_get_drvdata(dev); 4fd3f78814fbf8 Peng Fan 2021-06-12 250 const struct imx_blk_ctl_dev_data= *dev_data =3D blk_ctl->dev_data; 4fd3f78814fbf8 Peng Fan 2021-06-12 251 int num =3D dev_data->pds_num; 4fd3f78814fbf8 Peng Fan 2021-06-12 252 struct imx_blk_ctl_domain *domain; 4fd3f78814fbf8 Peng Fan 2021-06-12 253 struct generic_pm_domain *genpd; 4fd3f78814fbf8 Peng Fan 2021-06-12 254 struct platform_device *pd_pdev; 4fd3f78814fbf8 Peng Fan 2021-06-12 255 int domain_index; 4fd3f78814fbf8 Peng Fan 2021-06-12 256 int i, ret; 4fd3f78814fbf8 Peng Fan 2021-06-12 257 = 4fd3f78814fbf8 Peng Fan 2021-06-12 258 blk_ctl->onecell_data.num_domains= =3D num; 4fd3f78814fbf8 Peng Fan 2021-06-12 259 blk_ctl->onecell_data.xlate =3D i= mx_blk_ctl_genpd_xlate; 4fd3f78814fbf8 Peng Fan 2021-06-12 260 blk_ctl->onecell_data.domains =3D= devm_kcalloc(dev, num, sizeof(struct generic_pm_domain *), 4fd3f78814fbf8 Peng Fan 2021-06-12 261 GFP_KERNEL); 4fd3f78814fbf8 Peng Fan 2021-06-12 262 if (!blk_ctl->onecell_data.domain= s) 4fd3f78814fbf8 Peng Fan 2021-06-12 263 return -ENOMEM; 4fd3f78814fbf8 Peng Fan 2021-06-12 264 = 4fd3f78814fbf8 Peng Fan 2021-06-12 265 for (i =3D 0; i < num; i++) { 4fd3f78814fbf8 Peng Fan 2021-06-12 266 domain_index =3D dev_data->pds[i= ].id; 4fd3f78814fbf8 Peng Fan 2021-06-12 267 if (domain_index >=3D num) { 4fd3f78814fbf8 Peng Fan 2021-06-12 268 dev_warn(dev, "Domain index %d = is out of bounds\n", domain_index); 4fd3f78814fbf8 Peng Fan 2021-06-12 269 continue; 4fd3f78814fbf8 Peng Fan 2021-06-12 270 } 4fd3f78814fbf8 Peng Fan 2021-06-12 271 = 4fd3f78814fbf8 Peng Fan 2021-06-12 272 domain =3D devm_kzalloc(dev, siz= eof(struct imx_blk_ctl_domain), GFP_KERNEL); 4fd3f78814fbf8 Peng Fan 2021-06-12 273 if (!domain) 4fd3f78814fbf8 Peng Fan 2021-06-12 274 goto error; 4fd3f78814fbf8 Peng Fan 2021-06-12 275 = 4fd3f78814fbf8 Peng Fan 2021-06-12 276 pd_pdev =3D platform_device_allo= c(dev_data->name, domain_index); 4fd3f78814fbf8 Peng Fan 2021-06-12 277 if (!pd_pdev) { 4fd3f78814fbf8 Peng Fan 2021-06-12 278 dev_err(dev, "Failed to allocat= e platform device\n"); 4fd3f78814fbf8 Peng Fan 2021-06-12 279 goto error; 4fd3f78814fbf8 Peng Fan 2021-06-12 280 } 4fd3f78814fbf8 Peng Fan 2021-06-12 281 = 4fd3f78814fbf8 Peng Fan 2021-06-12 282 pd_pdev->dev.platform_data =3D d= omain; 4fd3f78814fbf8 Peng Fan 2021-06-12 283 = 4fd3f78814fbf8 Peng Fan 2021-06-12 284 domain->blk_ctl =3D blk_ctl; 4fd3f78814fbf8 Peng Fan 2021-06-12 285 domain->hw =3D &dev_data->pds[i]; 4fd3f78814fbf8 Peng Fan 2021-06-12 286 domain->id =3D domain_index; 4fd3f78814fbf8 Peng Fan 2021-06-12 287 domain->genpd.name =3D dev_data-= >pds[i].name; 4fd3f78814fbf8 Peng Fan 2021-06-12 288 domain->genpd.power_off =3D imx_= blk_ctl_power_off; 4fd3f78814fbf8 Peng Fan 2021-06-12 289 domain->genpd.power_on =3D imx_b= lk_ctl_power_on; 4fd3f78814fbf8 Peng Fan 2021-06-12 290 domain->dev =3D &pd_pdev->dev; 4fd3f78814fbf8 Peng Fan 2021-06-12 291 domain->hooked =3D false; 4fd3f78814fbf8 Peng Fan 2021-06-12 292 = 4fd3f78814fbf8 Peng Fan 2021-06-12 293 ret =3D pm_genpd_init(&domain->g= enpd, NULL, true); 4fd3f78814fbf8 Peng Fan 2021-06-12 294 pd_pdev->dev.parent =3D dev; 4fd3f78814fbf8 Peng Fan 2021-06-12 295 = 4fd3f78814fbf8 Peng Fan 2021-06-12 296 if (domain->hw->flags & IMX_BLK_= CTL_PD_HANDSHAKE) 4fd3f78814fbf8 Peng Fan 2021-06-12 297 blk_ctl->bus_domain =3D &domain= ->genpd; 4fd3f78814fbf8 Peng Fan 2021-06-12 298 = 4fd3f78814fbf8 Peng Fan 2021-06-12 299 ret =3D platform_device_add(pd_p= dev); 4fd3f78814fbf8 Peng Fan 2021-06-12 300 if (ret) { 4fd3f78814fbf8 Peng Fan 2021-06-12 301 platform_device_put(pd_pdev); 4fd3f78814fbf8 Peng Fan 2021-06-12 302 goto error; 4fd3f78814fbf8 Peng Fan 2021-06-12 303 } 4fd3f78814fbf8 Peng Fan 2021-06-12 304 blk_ctl->onecell_data.domains[i]= =3D &domain->genpd; 4fd3f78814fbf8 Peng Fan 2021-06-12 305 } 4fd3f78814fbf8 Peng Fan 2021-06-12 306 = 4fd3f78814fbf8 Peng Fan 2021-06-12 307 return of_genpd_add_provider_onec= ell(dev->of_node, &blk_ctl->onecell_data); 4fd3f78814fbf8 Peng Fan 2021-06-12 308 = 4fd3f78814fbf8 Peng Fan 2021-06-12 309 error: 4fd3f78814fbf8 Peng Fan 2021-06-12 310 for (; i >=3D 0; i--) { 4fd3f78814fbf8 Peng Fan 2021-06-12 311 genpd =3D blk_ctl->onecell_data.= domains[i]; 4fd3f78814fbf8 Peng Fan 2021-06-12 312 if (!genpd) 4fd3f78814fbf8 Peng Fan 2021-06-12 313 continue; 4fd3f78814fbf8 Peng Fan 2021-06-12 314 domain =3D to_imx_blk_ctl_pd(gen= pd); 4fd3f78814fbf8 Peng Fan 2021-06-12 315 if (domain->dev) 4fd3f78814fbf8 Peng Fan 2021-06-12 316 platform_device_put(to_platform= _device(domain->dev)); 4fd3f78814fbf8 Peng Fan 2021-06-12 317 } 4fd3f78814fbf8 Peng Fan 2021-06-12 @318 return ret; 4fd3f78814fbf8 Peng Fan 2021-06-12 319 } 4fd3f78814fbf8 Peng Fan 2021-06-12 320 EXPORT_SYMBOL_GPL(imx_blk_ctl_regi= ster); 4fd3f78814fbf8 Peng Fan 2021-06-12 321 = --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============4743082690391351582== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 --===============4743082690391351582==-- From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============5855065306931785636==" MIME-Version: 1.0 From: Dan Carpenter To: kbuild-all@lists.01.org Subject: Re: [PATCH V7 3/4] soc: imx: Add generic blk-ctl driver Date: Mon, 28 Jun 2021 11:50:13 +0300 Message-ID: <202106261546.9K21C3vw-lkp@intel.com> In-Reply-To: <20210612133134.2738-4-peng.fan@oss.nxp.com> List-Id: --===============5855065306931785636== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi "Peng Fan (OSS)", url: https://github.com/0day-ci/linux/commits/Peng-Fan-OSS/soc-imx-add-i= -MX-BLK-CTL-support/20210617-013814 base: https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git = for-next config: i386-randconfig-m031-20210625 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: drivers/soc/imx/blk-ctl.c:188 imx_blk_ctl_remove() error: potentially deref= erencing uninitialized 'active_pd'. drivers/soc/imx/blk-ctl.c:318 imx_blk_ctl_register() error: uninitialized s= ymbol 'ret'. vim +/PTR_ERR +151 drivers/soc/imx/blk-ctl.c 4fd3f78814fbf8 Peng Fan 2021-06-12 180 static int imx_blk_ctl_remove(stru= ct platform_device *pdev) 4fd3f78814fbf8 Peng Fan 2021-06-12 181 { 4fd3f78814fbf8 Peng Fan 2021-06-12 182 struct imx_blk_ctl_domain *domain= =3D pdev->dev.platform_data; 4fd3f78814fbf8 Peng Fan 2021-06-12 183 struct imx_blk_ctl *blk_ctl =3D d= omain->blk_ctl; 4fd3f78814fbf8 Peng Fan 2021-06-12 184 struct generic_pm_domain *parent_= genpd; 4fd3f78814fbf8 Peng Fan 2021-06-12 185 struct device *active_pd; ^^^^^^^^^ 4fd3f78814fbf8 Peng Fan 2021-06-12 186 = 4fd3f78814fbf8 Peng Fan 2021-06-12 187 if (domain->hw->active_pd_name) 4fd3f78814fbf8 Peng Fan 2021-06-12 @188 parent_genpd =3D pd_to_genpd(act= ive_pd->pm_domain); = ^^^^^^^^^^^ Uninitalized. 4fd3f78814fbf8 Peng Fan 2021-06-12 189 else 4fd3f78814fbf8 Peng Fan 2021-06-12 190 parent_genpd =3D blk_ctl->bus_do= main; 4fd3f78814fbf8 Peng Fan 2021-06-12 191 = 4fd3f78814fbf8 Peng Fan 2021-06-12 192 pm_genpd_remove_subdomain(parent_= genpd, &domain->genpd); 4fd3f78814fbf8 Peng Fan 2021-06-12 193 = 4fd3f78814fbf8 Peng Fan 2021-06-12 194 mutex_lock(&blk_ctl->lock); 4fd3f78814fbf8 Peng Fan 2021-06-12 195 domain->hooked =3D false; 4fd3f78814fbf8 Peng Fan 2021-06-12 196 mutex_unlock(&blk_ctl->lock); 4fd3f78814fbf8 Peng Fan 2021-06-12 197 = 4fd3f78814fbf8 Peng Fan 2021-06-12 198 if (domain->hw->active_pd_name) 4fd3f78814fbf8 Peng Fan 2021-06-12 199 dev_pm_domain_detach(domain->act= ive_pd, false); 4fd3f78814fbf8 Peng Fan 2021-06-12 200 = 4fd3f78814fbf8 Peng Fan 2021-06-12 201 return 0; 4fd3f78814fbf8 Peng Fan 2021-06-12 202 } 4fd3f78814fbf8 Peng Fan 2021-06-12 203 = 4fd3f78814fbf8 Peng Fan 2021-06-12 204 static const struct platform_devic= e_id imx_blk_ctl_id[] =3D { 4fd3f78814fbf8 Peng Fan 2021-06-12 205 { "imx-vpumix-blk-ctl", }, 4fd3f78814fbf8 Peng Fan 2021-06-12 206 { "imx-dispmix-blk-ctl", }, 4fd3f78814fbf8 Peng Fan 2021-06-12 207 { }, 4fd3f78814fbf8 Peng Fan 2021-06-12 208 }; 4fd3f78814fbf8 Peng Fan 2021-06-12 209 = 4fd3f78814fbf8 Peng Fan 2021-06-12 210 static struct platform_driver imx_= blk_ctl_driver =3D { 4fd3f78814fbf8 Peng Fan 2021-06-12 211 .driver =3D { 4fd3f78814fbf8 Peng Fan 2021-06-12 212 .name =3D "imx-blk-ctl", 4fd3f78814fbf8 Peng Fan 2021-06-12 213 }, 4fd3f78814fbf8 Peng Fan 2021-06-12 214 .probe =3D imx_blk_ctl_probe, 4fd3f78814fbf8 Peng Fan 2021-06-12 215 .remove =3D imx_blk_ctl_remove, 4fd3f78814fbf8 Peng Fan 2021-06-12 216 .id_table =3D imx_blk_ctl_id, 4fd3f78814fbf8 Peng Fan 2021-06-12 217 }; 4fd3f78814fbf8 Peng Fan 2021-06-12 218 builtin_platform_driver(imx_blk_ct= l_driver) 4fd3f78814fbf8 Peng Fan 2021-06-12 219 = 4fd3f78814fbf8 Peng Fan 2021-06-12 220 static struct generic_pm_domain *i= mx_blk_ctl_genpd_xlate(struct of_phandle_args *genpdspec, 4fd3f78814fbf8 Peng Fan 2021-06-12 221 void *data) 4fd3f78814fbf8 Peng Fan 2021-06-12 222 { 4fd3f78814fbf8 Peng Fan 2021-06-12 223 struct genpd_onecell_data *genpd_= data =3D data; 4fd3f78814fbf8 Peng Fan 2021-06-12 224 unsigned int idx =3D genpdspec->a= rgs[0]; 4fd3f78814fbf8 Peng Fan 2021-06-12 225 struct imx_blk_ctl_domain *domain; 4fd3f78814fbf8 Peng Fan 2021-06-12 226 struct generic_pm_domain *genpd = =3D ERR_PTR(-EPROBE_DEFER); 4fd3f78814fbf8 Peng Fan 2021-06-12 227 = 4fd3f78814fbf8 Peng Fan 2021-06-12 228 if (genpdspec->args_count !=3D 1) 4fd3f78814fbf8 Peng Fan 2021-06-12 229 return ERR_PTR(-EINVAL); 4fd3f78814fbf8 Peng Fan 2021-06-12 230 = 4fd3f78814fbf8 Peng Fan 2021-06-12 231 if (idx >=3D genpd_data->num_doma= ins) 4fd3f78814fbf8 Peng Fan 2021-06-12 232 return ERR_PTR(-EINVAL); 4fd3f78814fbf8 Peng Fan 2021-06-12 233 = 4fd3f78814fbf8 Peng Fan 2021-06-12 234 if (!genpd_data->domains[idx]) 4fd3f78814fbf8 Peng Fan 2021-06-12 235 return ERR_PTR(-ENOENT); 4fd3f78814fbf8 Peng Fan 2021-06-12 236 = 4fd3f78814fbf8 Peng Fan 2021-06-12 237 domain =3D to_imx_blk_ctl_pd(genp= d_data->domains[idx]); 4fd3f78814fbf8 Peng Fan 2021-06-12 238 = 4fd3f78814fbf8 Peng Fan 2021-06-12 239 mutex_lock(&domain->blk_ctl->lock= ); 4fd3f78814fbf8 Peng Fan 2021-06-12 240 if (domain->hooked) 4fd3f78814fbf8 Peng Fan 2021-06-12 241 genpd =3D genpd_data->domains[id= x]; 4fd3f78814fbf8 Peng Fan 2021-06-12 242 mutex_unlock(&domain->blk_ctl->lo= ck); 4fd3f78814fbf8 Peng Fan 2021-06-12 243 = 4fd3f78814fbf8 Peng Fan 2021-06-12 244 return genpd; 4fd3f78814fbf8 Peng Fan 2021-06-12 245 } 4fd3f78814fbf8 Peng Fan 2021-06-12 246 = 4fd3f78814fbf8 Peng Fan 2021-06-12 247 int imx_blk_ctl_register(struct de= vice *dev) 4fd3f78814fbf8 Peng Fan 2021-06-12 248 { 4fd3f78814fbf8 Peng Fan 2021-06-12 249 struct imx_blk_ctl *blk_ctl =3D d= ev_get_drvdata(dev); 4fd3f78814fbf8 Peng Fan 2021-06-12 250 const struct imx_blk_ctl_dev_data= *dev_data =3D blk_ctl->dev_data; 4fd3f78814fbf8 Peng Fan 2021-06-12 251 int num =3D dev_data->pds_num; 4fd3f78814fbf8 Peng Fan 2021-06-12 252 struct imx_blk_ctl_domain *domain; 4fd3f78814fbf8 Peng Fan 2021-06-12 253 struct generic_pm_domain *genpd; 4fd3f78814fbf8 Peng Fan 2021-06-12 254 struct platform_device *pd_pdev; 4fd3f78814fbf8 Peng Fan 2021-06-12 255 int domain_index; 4fd3f78814fbf8 Peng Fan 2021-06-12 256 int i, ret; 4fd3f78814fbf8 Peng Fan 2021-06-12 257 = 4fd3f78814fbf8 Peng Fan 2021-06-12 258 blk_ctl->onecell_data.num_domains= =3D num; 4fd3f78814fbf8 Peng Fan 2021-06-12 259 blk_ctl->onecell_data.xlate =3D i= mx_blk_ctl_genpd_xlate; 4fd3f78814fbf8 Peng Fan 2021-06-12 260 blk_ctl->onecell_data.domains =3D= devm_kcalloc(dev, num, sizeof(struct generic_pm_domain *), 4fd3f78814fbf8 Peng Fan 2021-06-12 261 GFP_KERNEL); 4fd3f78814fbf8 Peng Fan 2021-06-12 262 if (!blk_ctl->onecell_data.domain= s) 4fd3f78814fbf8 Peng Fan 2021-06-12 263 return -ENOMEM; 4fd3f78814fbf8 Peng Fan 2021-06-12 264 = 4fd3f78814fbf8 Peng Fan 2021-06-12 265 for (i =3D 0; i < num; i++) { 4fd3f78814fbf8 Peng Fan 2021-06-12 266 domain_index =3D dev_data->pds[i= ].id; 4fd3f78814fbf8 Peng Fan 2021-06-12 267 if (domain_index >=3D num) { 4fd3f78814fbf8 Peng Fan 2021-06-12 268 dev_warn(dev, "Domain index %d = is out of bounds\n", domain_index); 4fd3f78814fbf8 Peng Fan 2021-06-12 269 continue; 4fd3f78814fbf8 Peng Fan 2021-06-12 270 } 4fd3f78814fbf8 Peng Fan 2021-06-12 271 = 4fd3f78814fbf8 Peng Fan 2021-06-12 272 domain =3D devm_kzalloc(dev, siz= eof(struct imx_blk_ctl_domain), GFP_KERNEL); 4fd3f78814fbf8 Peng Fan 2021-06-12 273 if (!domain) 4fd3f78814fbf8 Peng Fan 2021-06-12 274 goto error; ret =3D -ENOMEM; 4fd3f78814fbf8 Peng Fan 2021-06-12 275 = 4fd3f78814fbf8 Peng Fan 2021-06-12 276 pd_pdev =3D platform_device_allo= c(dev_data->name, domain_index); 4fd3f78814fbf8 Peng Fan 2021-06-12 277 if (!pd_pdev) { 4fd3f78814fbf8 Peng Fan 2021-06-12 278 dev_err(dev, "Failed to allocat= e platform device\n"); 4fd3f78814fbf8 Peng Fan 2021-06-12 279 goto error; ret =3D -ENOMEM; 4fd3f78814fbf8 Peng Fan 2021-06-12 280 } 4fd3f78814fbf8 Peng Fan 2021-06-12 281 = 4fd3f78814fbf8 Peng Fan 2021-06-12 282 pd_pdev->dev.platform_data =3D d= omain; 4fd3f78814fbf8 Peng Fan 2021-06-12 283 = 4fd3f78814fbf8 Peng Fan 2021-06-12 284 domain->blk_ctl =3D blk_ctl; 4fd3f78814fbf8 Peng Fan 2021-06-12 285 domain->hw =3D &dev_data->pds[i]; 4fd3f78814fbf8 Peng Fan 2021-06-12 286 domain->id =3D domain_index; 4fd3f78814fbf8 Peng Fan 2021-06-12 287 domain->genpd.name =3D dev_data-= >pds[i].name; 4fd3f78814fbf8 Peng Fan 2021-06-12 288 domain->genpd.power_off =3D imx_= blk_ctl_power_off; 4fd3f78814fbf8 Peng Fan 2021-06-12 289 domain->genpd.power_on =3D imx_b= lk_ctl_power_on; 4fd3f78814fbf8 Peng Fan 2021-06-12 290 domain->dev =3D &pd_pdev->dev; 4fd3f78814fbf8 Peng Fan 2021-06-12 291 domain->hooked =3D false; 4fd3f78814fbf8 Peng Fan 2021-06-12 292 = 4fd3f78814fbf8 Peng Fan 2021-06-12 293 ret =3D pm_genpd_init(&domain->g= enpd, NULL, true); 4fd3f78814fbf8 Peng Fan 2021-06-12 294 pd_pdev->dev.parent =3D dev; 4fd3f78814fbf8 Peng Fan 2021-06-12 295 = 4fd3f78814fbf8 Peng Fan 2021-06-12 296 if (domain->hw->flags & IMX_BLK_= CTL_PD_HANDSHAKE) 4fd3f78814fbf8 Peng Fan 2021-06-12 297 blk_ctl->bus_domain =3D &domain= ->genpd; 4fd3f78814fbf8 Peng Fan 2021-06-12 298 = 4fd3f78814fbf8 Peng Fan 2021-06-12 299 ret =3D platform_device_add(pd_p= dev); 4fd3f78814fbf8 Peng Fan 2021-06-12 300 if (ret) { 4fd3f78814fbf8 Peng Fan 2021-06-12 301 platform_device_put(pd_pdev); 4fd3f78814fbf8 Peng Fan 2021-06-12 302 goto error; 4fd3f78814fbf8 Peng Fan 2021-06-12 303 } 4fd3f78814fbf8 Peng Fan 2021-06-12 304 blk_ctl->onecell_data.domains[i]= =3D &domain->genpd; 4fd3f78814fbf8 Peng Fan 2021-06-12 305 } 4fd3f78814fbf8 Peng Fan 2021-06-12 306 = 4fd3f78814fbf8 Peng Fan 2021-06-12 307 return of_genpd_add_provider_onec= ell(dev->of_node, &blk_ctl->onecell_data); 4fd3f78814fbf8 Peng Fan 2021-06-12 308 = 4fd3f78814fbf8 Peng Fan 2021-06-12 309 error: 4fd3f78814fbf8 Peng Fan 2021-06-12 310 for (; i >=3D 0; i--) { 4fd3f78814fbf8 Peng Fan 2021-06-12 311 genpd =3D blk_ctl->onecell_data.= domains[i]; 4fd3f78814fbf8 Peng Fan 2021-06-12 312 if (!genpd) 4fd3f78814fbf8 Peng Fan 2021-06-12 313 continue; 4fd3f78814fbf8 Peng Fan 2021-06-12 314 domain =3D to_imx_blk_ctl_pd(gen= pd); 4fd3f78814fbf8 Peng Fan 2021-06-12 315 if (domain->dev) 4fd3f78814fbf8 Peng Fan 2021-06-12 316 platform_device_put(to_platform= _device(domain->dev)); 4fd3f78814fbf8 Peng Fan 2021-06-12 317 } 4fd3f78814fbf8 Peng Fan 2021-06-12 @318 return ret; 4fd3f78814fbf8 Peng Fan 2021-06-12 319 } 4fd3f78814fbf8 Peng Fan 2021-06-12 320 EXPORT_SYMBOL_GPL(imx_blk_ctl_regi= ster); --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============5855065306931785636==--