diff options
Diffstat (limited to 'drivers/soc/imx/gpcv2.c')
| -rw-r--r-- | drivers/soc/imx/gpcv2.c | 22 | 
1 files changed, 15 insertions, 7 deletions
diff --git a/drivers/soc/imx/gpcv2.c b/drivers/soc/imx/gpcv2.c index afc7ecc3c187..f4e3bd40c72e 100644 --- a/drivers/soc/imx/gpcv2.c +++ b/drivers/soc/imx/gpcv2.c @@ -155,7 +155,7 @@ static int imx7_gpc_pu_pgc_sw_pdn_req(struct generic_pm_domain *genpd)  	return imx7_gpc_pu_pgc_sw_pxx_req(genpd, false);  } -static struct imx7_pgc_domain imx7_pgc_domains[] = { +static const struct imx7_pgc_domain imx7_pgc_domains[] = {  	[IMX7_POWER_DOMAIN_MIPI_PHY] = {  		.genpd = {  			.name      = "mipi-phy", @@ -321,11 +321,6 @@ static int imx_gpcv2_probe(struct platform_device *pdev)  			continue;  		} -		domain = &imx7_pgc_domains[domain_index]; -		domain->regmap = regmap; -		domain->genpd.power_on  = imx7_gpc_pu_pgc_sw_pup_req; -		domain->genpd.power_off = imx7_gpc_pu_pgc_sw_pdn_req; -  		pd_pdev = platform_device_alloc("imx7-pgc-domain",  						domain_index);  		if (!pd_pdev) { @@ -334,7 +329,20 @@ static int imx_gpcv2_probe(struct platform_device *pdev)  			return -ENOMEM;  		} -		pd_pdev->dev.platform_data = domain; +		ret = platform_device_add_data(pd_pdev, +					       &imx7_pgc_domains[domain_index], +					       sizeof(imx7_pgc_domains[domain_index])); +		if (ret) { +			platform_device_put(pd_pdev); +			of_node_put(np); +			return ret; +		} + +		domain = pd_pdev->dev.platform_data; +		domain->regmap = regmap; +		domain->genpd.power_on  = imx7_gpc_pu_pgc_sw_pup_req; +		domain->genpd.power_off = imx7_gpc_pu_pgc_sw_pdn_req; +  		pd_pdev->dev.parent = dev;  		pd_pdev->dev.of_node = np;  | 
