Re: [PATCH 2/4] input: misc: da9063_onkey: add mode change support

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

 



Hi Adam,

On 19-09-16 15:01, Adam Thomson wrote:
> On 16 September 2019 15:04, Marco Felsch wrote:
> 
> > The pmic state machine behaviour upon a 'onkey press' event can be
> > configured using the ONKEY_PIN bit field. Most the time this is
> > configured correct by the OTP but sometimes we need to adjust the
> > behaviour so we need to add the support here.
> > 
> > Signed-off-by: Marco Felsch <m.felsch@xxxxxxxxxxxxxx>
> > ---
> >  drivers/input/misc/da9063_onkey.c | 10 ++++++++++
> >  drivers/mfd/da9062-core.c         |  1 +
> >  2 files changed, 11 insertions(+)
> > 
> > diff --git a/drivers/input/misc/da9063_onkey.c
> > b/drivers/input/misc/da9063_onkey.c
> > index fd355cf59397..bc982fcc87eb 100644
> > --- a/drivers/input/misc/da9063_onkey.c
> > +++ b/drivers/input/misc/da9063_onkey.c
> > @@ -40,6 +40,7 @@ struct da9063_onkey {
> >  	const struct da906x_chip_config *config;
> >  	char phys[32];
> >  	bool key_power;
> > +	u8 key_opmode;
> >  };
> > 
> >  static const struct da906x_chip_config da9063_regs = {
> > @@ -193,6 +194,7 @@ static int da9063_onkey_probe(struct platform_device
> > *pdev)
> >  {
> >  	struct da9063_onkey *onkey;
> >  	const struct of_device_id *match;
> > +	unsigned int val;
> >  	int irq;
> >  	int error;
> > 
> > @@ -220,6 +222,14 @@ static int da9063_onkey_probe(struct platform_device
> > *pdev)
> >  	onkey->key_power = !of_property_read_bool(pdev->dev.of_node,
> >  						  "dlg,disable-key-power");
> > 
> > +	if (!of_property_read_u32(pdev->dev.of_node, "dlg,key-opmode",
> > &val)) {
> > +		error = regmap_update_bits(onkey->regmap,
> > DA9062AA_CONFIG_I,
> > +					   DA9062AA_NONKEY_PIN_MASK,
> > +					   val << DA9062AA_NONKEY_PIN_SHIFT);
> > +		if (error)
> > +			return error;
> > +	}
> > +
> 
> This driver is used to cover DA9061, DA9062 and DA9063. This binding therefore
> can apply to any of those as there's no checking of which device is being used.
> For DA9063 usage, if this option is present then the probe will fail as your
> regmap range update below only takes care of DA9061/2.

That's right and I only updated the da9061/2 bindings.. 

> Ideally I think you should update the da906x_chip_config structure for this to
> support all devices as I believe the same or similar options are available for
> DA9063.

After checking the da9062/3 register.h this bitfield is the same for
da9062/3 devices. What about adding a comment here? The CONFIG_I
register is already writeable for the da9063 devices.

Regards,
  Marco

> 
> >  	onkey->input = devm_input_allocate_device(&pdev->dev);
> >  	if (!onkey->input) {
> >  		dev_err(&pdev->dev, "Failed to allocated input device.\n");
> > diff --git a/drivers/mfd/da9062-core.c b/drivers/mfd/da9062-core.c
> > index e69626867c26..aaa1f1841bc3 100644
> > --- a/drivers/mfd/da9062-core.c
> > +++ b/drivers/mfd/da9062-core.c
> > @@ -510,6 +510,7 @@ static const struct regmap_range
> > da9062_aa_writeable_ranges[] = {
> >  	regmap_reg_range(DA9062AA_VLDO1_B, DA9062AA_VLDO4_B),
> >  	regmap_reg_range(DA9062AA_BBAT_CONT, DA9062AA_BBAT_CONT),
> >  	regmap_reg_range(DA9062AA_GP_ID_0, DA9062AA_GP_ID_19),
> > +	regmap_reg_range(DA9062AA_CONFIG_I, DA9062AA_CONFIG_I),
> >  };
> > 
> >  static const struct regmap_range da9062_aa_volatile_ranges[] = {
> > --
> > 2.20.1
> 
> 

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux