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

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

 



On 27 November 2019 13:23, 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>

Reviewed-by: Adam Thomson <Adam.Thomson.Opensource@xxxxxxxxxxx>

> ---
> v2:
> - make use of da906x_chip_config
> - rm unnecessary key_opmode
> 
>  drivers/input/misc/da9063_onkey.c | 16 ++++++++++++++++
>  drivers/mfd/da9062-core.c         |  1 +
>  2 files changed, 17 insertions(+)
> 
> diff --git a/drivers/input/misc/da9063_onkey.c
> b/drivers/input/misc/da9063_onkey.c
> index 79851923ee57..3a3f06a33eda 100644
> --- a/drivers/input/misc/da9063_onkey.c
> +++ b/drivers/input/misc/da9063_onkey.c
> @@ -19,6 +19,7 @@
> 
>  struct da906x_chip_config {
>  	/* REGS */
> +	int onkey_config;
>  	int onkey_status;
>  	int onkey_pwr_signalling;
>  	int onkey_fault_log;
> @@ -26,6 +27,7 @@ struct da906x_chip_config {
>  	/* MASKS */
>  	int onkey_nonkey_mask;
>  	int onkey_nonkey_lock_mask;
> +	int onkey_nonkey_pin_mask;
>  	int onkey_key_reset_mask;
>  	int onkey_shutdown_mask;
>  	/* NAMES */
> @@ -44,6 +46,7 @@ struct da9063_onkey {
> 
>  static const struct da906x_chip_config da9063_regs = {
>  	/* REGS */
> +	.onkey_config = DA9063_REG_CONFIG_I,
>  	.onkey_status = DA9063_REG_STATUS_A,
>  	.onkey_pwr_signalling = DA9063_REG_CONTROL_B,
>  	.onkey_fault_log = DA9063_REG_FAULT_LOG,
> @@ -51,6 +54,7 @@ static const struct da906x_chip_config da9063_regs = {
>  	/* MASKS */
>  	.onkey_nonkey_mask = DA9063_NONKEY,
>  	.onkey_nonkey_lock_mask = DA9063_NONKEY_LOCK,
> +	.onkey_nonkey_pin_mask = DA9063_NONKEY_PIN_MASK,
>  	.onkey_key_reset_mask = DA9063_KEY_RESET,
>  	.onkey_shutdown_mask = DA9063_SHUTDOWN,
>  	/* NAMES */
> @@ -59,6 +63,7 @@ static const struct da906x_chip_config da9063_regs = {
> 
>  static const struct da906x_chip_config da9062_regs = {
>  	/* REGS */
> +	.onkey_config = DA9062AA_CONFIG_I,
>  	.onkey_status = DA9062AA_STATUS_A,
>  	.onkey_pwr_signalling = DA9062AA_CONTROL_B,
>  	.onkey_fault_log = DA9062AA_FAULT_LOG,
> @@ -66,6 +71,7 @@ static const struct da906x_chip_config da9062_regs = {
>  	/* MASKS */
>  	.onkey_nonkey_mask = DA9062AA_NONKEY_MASK,
>  	.onkey_nonkey_lock_mask = DA9062AA_NONKEY_LOCK_MASK,
> +	.onkey_nonkey_pin_mask = DA9062AA_NONKEY_PIN_MASK,
>  	.onkey_key_reset_mask = DA9062AA_KEY_RESET_MASK,
>  	.onkey_shutdown_mask = DA9062AA_SHUTDOWN_MASK,
>  	/* NAMES */
> @@ -193,6 +199,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 +227,15 @@ 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,
> +					   onkey->config->onkey_config,
> +					   onkey->config-
> >onkey_nonkey_pin_mask,
> +					   val);
> +		if (error)
> +			return error;
> +	}
> +
>  	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





[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