Re: [PATCH v2 03/10] regulator: bd9571mwv: rid of using struct bd9571mwv

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2020-12-11 at 20:27 +0900, Yoshihiro Shimoda wrote:
> To simplify this driver, use dev_get_regmap() and
> rid of using struct bd9571mwv.
> 
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@xxxxxxxxxxx>
> ---
>  drivers/regulator/bd9571mwv-regulator.c | 49 +++++++++++++++++----
> ------------
>  1 file changed, 26 insertions(+), 23 deletions(-)
> 
> diff --git a/drivers/regulator/bd9571mwv-regulator.c
> b/drivers/regulator/bd9571mwv-regulator.c
> index e690c2c..02120b0 100644
> --- a/drivers/regulator/bd9571mwv-regulator.c
> +++ b/drivers/regulator/bd9571mwv-regulator.c
> @@ -17,7 +17,7 @@
>  #include <linux/mfd/bd9571mwv.h>
>  
>  struct bd9571mwv_reg {
> -	struct bd9571mwv *bd;
> +	struct regmap *regmap;

As a 'nit':
I might consider adding the dev pointer here to avoid extra argument
with all the bkup_mode functions below. (just pass this struct and
mode). But that's only my preference - feel free to ignore this comment
if patch is Ok to Mark, Marek & Others :)

Overall, looks good to me :)
Reviewed-By: Matti Vaittinen <matti.vaittinen@xxxxxxxxxxxxxxxxx>

>  
>  	/* DDR Backup Power */
>  	u8 bkup_mode_cnt_keepon;	/* from "rohm,ddr-backup-power" */
> @@ -137,26 +137,30 @@ static const struct regulator_desc regulators[]
> = {
>  };
>  
>  #ifdef CONFIG_PM_SLEEP
> -static int bd9571mwv_bkup_mode_read(struct bd9571mwv *bd, unsigned
> int *mode)
> +static int bd9571mwv_bkup_mode_read(struct device * dev,
> +				    struct bd9571mwv_reg *bdreg,
> +				    unsigned int *mode)
>  {
>  	int ret;
>  
> -	ret = regmap_read(bd->regmap, BD9571MWV_BKUP_MODE_CNT, mode);
> +	ret = regmap_read(bdreg->regmap, BD9571MWV_BKUP_MODE_CNT,
> mode);
>  	if (ret) {
> -		dev_err(bd->dev, "failed to read backup mode (%d)\n",
> ret);
> +		dev_err(dev, "failed to read backup mode (%d)\n", ret);
>  		return ret;
>  	}
>  
>  	return 0;
>  }
>  
> -static int bd9571mwv_bkup_mode_write(struct bd9571mwv *bd, unsigned
> int mode)
> +static int bd9571mwv_bkup_mode_write(struct device *dev,
> +				     struct bd9571mwv_reg *bdreg,
> +				     unsigned int mode)
>  {
>  	int ret;
>  
> -	ret = regmap_write(bd->regmap, BD9571MWV_BKUP_MODE_CNT, mode);
> +	ret = regmap_write(bdreg->regmap, BD9571MWV_BKUP_MODE_CNT,
> mode);
>  	if (ret) {
> -		dev_err(bd->dev, "failed to configure backup mode 0x%x
> (%d)\n",
> +		dev_err(dev, "failed to configure backup mode 0x%x
> (%d)\n",
>  			mode, ret);
>  		return ret;
>  	}
> @@ -194,7 +198,7 @@ static ssize_t backup_mode_store(struct device
> *dev,
>  	 * Configure DDR Backup Mode, to change the role of the
> accessory power
>  	 * switch from a power switch to a wake-up switch, or vice
> versa
>  	 */
> -	ret = bd9571mwv_bkup_mode_read(bdreg->bd, &mode);
> +	ret = bd9571mwv_bkup_mode_read(dev, bdreg, &mode);
>  	if (ret)
>  		return ret;
>  
> @@ -202,7 +206,7 @@ static ssize_t backup_mode_store(struct device
> *dev,
>  	if (bdreg->bkup_mode_enabled)
>  		mode |= bdreg->bkup_mode_cnt_keepon;
>  
> -	ret = bd9571mwv_bkup_mode_write(bdreg->bd, mode);
> +	ret = bd9571mwv_bkup_mode_write(dev, bdreg, mode);
>  	if (ret)
>  		return ret;
>  
> @@ -221,7 +225,7 @@ static int bd9571mwv_suspend(struct device *dev)
>  		return 0;
>  
>  	/* Save DDR Backup Mode */
> -	ret = bd9571mwv_bkup_mode_read(bdreg->bd, &mode);
> +	ret = bd9571mwv_bkup_mode_read(dev, bdreg, &mode);
>  	if (ret)
>  		return ret;
>  
> @@ -235,7 +239,7 @@ static int bd9571mwv_suspend(struct device *dev)
>  	mode |= bdreg->bkup_mode_cnt_keepon;
>  
>  	if (mode != bdreg->bkup_mode_cnt_saved)
> -		return bd9571mwv_bkup_mode_write(bdreg->bd, mode);
> +		return bd9571mwv_bkup_mode_write(dev, bdreg, mode);
>  
>  	return 0;
>  }
> @@ -248,7 +252,7 @@ static int bd9571mwv_resume(struct device *dev)
>  		return 0;
>  
>  	/* Restore DDR Backup Mode */
> -	return bd9571mwv_bkup_mode_write(bdreg->bd, bdreg-
> >bkup_mode_cnt_saved);
> +	return bd9571mwv_bkup_mode_write(dev, bdreg, bdreg-
> >bkup_mode_cnt_saved);
>  }
>  
>  static const struct dev_pm_ops bd9571mwv_pm  = {
> @@ -268,7 +272,6 @@ static int bd9571mwv_regulator_remove(struct
> platform_device *pdev)
>  
>  static int bd9571mwv_regulator_probe(struct platform_device *pdev)
>  {
> -	struct bd9571mwv *bd = dev_get_drvdata(pdev->dev.parent);
>  	struct regulator_config config = { };
>  	struct bd9571mwv_reg *bdreg;
>  	struct regulator_dev *rdev;
> @@ -279,40 +282,40 @@ static int bd9571mwv_regulator_probe(struct
> platform_device *pdev)
>  	if (!bdreg)
>  		return -ENOMEM;
>  
> -	bdreg->bd = bd;
> +	bdreg->regmap = dev_get_regmap(pdev->dev.parent, NULL);
>  
>  	platform_set_drvdata(pdev, bdreg);
>  
>  	config.dev = &pdev->dev;
> -	config.dev->of_node = bd->dev->of_node;
> -	config.driver_data = bd;
> -	config.regmap = bd->regmap;
> +	config.dev->of_node = pdev->dev.parent->of_node;
> +	config.driver_data = bdreg;
> +	config.regmap = bdreg->regmap;
>  
>  	for (i = 0; i < ARRAY_SIZE(regulators); i++) {
>  		rdev = devm_regulator_register(&pdev->dev,
> &regulators[i],
>  					       &config);
>  		if (IS_ERR(rdev)) {
> -			dev_err(bd->dev, "failed to register %s
> regulator\n",
> +			dev_err(&pdev->dev, "failed to register %s
> regulator\n",
>  				pdev->name);
>  			return PTR_ERR(rdev);
>  		}
>  	}
>  
>  	val = 0;
> -	of_property_read_u32(bd->dev->of_node, "rohm,ddr-backup-power", 
> &val);
> +	of_property_read_u32(config.dev->of_node, "rohm,ddr-backup-
> power", &val);
>  	if (val & ~BD9571MWV_BKUP_MODE_CNT_KEEPON_MASK) {
> -		dev_err(bd->dev, "invalid %s mode %u\n",
> +		dev_err(&pdev->dev, "invalid %s mode %u\n",
>  			"rohm,ddr-backup-power", val);
>  		return -EINVAL;
>  	}
>  	bdreg->bkup_mode_cnt_keepon = val;
>  
> -	bdreg->rstbmode_level = of_property_read_bool(bd->dev->of_node,
> +	bdreg->rstbmode_level = of_property_read_bool(config.dev-
> >of_node,
>  						      "rohm,rstbmode-
> level");
> -	bdreg->rstbmode_pulse = of_property_read_bool(bd->dev->of_node,
> +	bdreg->rstbmode_pulse = of_property_read_bool(config.dev-
> >of_node,
>  						      "rohm,rstbmode-
> pulse");
>  	if (bdreg->rstbmode_level && bdreg->rstbmode_pulse) {
> -		dev_err(bd->dev, "only one rohm,rstbmode-* may be
> specified");
> +		dev_err(&pdev->dev, "only one rohm,rstbmode-* may be
> specified");
>  		return -EINVAL;
>  	}
>  






[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux