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

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

 



On 17 September 2019 11:19, Marco Felsch wrote:

> 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..

D'oh! That's what comes from taking a holiday the week before. :|

> 
> > 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.

Given the current implementation of this driver only uses tables to access the
correct registers and masks for each device, it would be neater to follow this
approach, although I am aware the register addresses and bit fields are the same.

> 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