lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 20 Nov 2019 08:54:44 +0100
From:   Pierre-Hugues Husson <phh@....me>
To:     Andreas Kemnade <andreas@...nade.info>
Cc:     Lee Jones <lee.jones@...aro.org>, a.zummo@...ertech.it,
        alexandre.belloni@...tlin.com,
        linux-kernel <linux-kernel@...r.kernel.org>,
        linux-rtc@...r.kernel.org, b.galvani@...il.com, stefan@...er.ch,
        letux-kernel@...nphoenux.org
Subject: Re: [PATCH v2 2/5] mfd: rn5t618: add irq support

Le jeu. 31 oct. 2019 à 22:38, Andreas Kemnade <andreas@...nade.info> a écrit :
>
> This adds support for irq handling in the rc5t619 which is required
> for properly implementing subdevices like rtc.
> For now only definitions for the variant rc5t619 are included.
>
> Signed-off-by: Andreas Kemnade <andreas@...nade.info>
> ---
> Changes in v2:
> - no dead code, did some more testing and thinking for that
> - remove extra empty lines
>  drivers/mfd/Kconfig         |  1 +
>  drivers/mfd/Makefile        |  2 +-
>  drivers/mfd/rn5t618-core.c  | 35 ++++++++++++++-
>  drivers/mfd/rn5t618-irq.c   | 85 +++++++++++++++++++++++++++++++++++++
>  include/linux/mfd/rn5t618.h | 16 +++++++
>  5 files changed, 137 insertions(+), 2 deletions(-)
>  create mode 100644 drivers/mfd/rn5t618-irq.c
>
> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> index ae24d3ea68ea..522e068d0082 100644
> --- a/drivers/mfd/Kconfig
> +++ b/drivers/mfd/Kconfig
> @@ -1057,6 +1057,7 @@ config MFD_RN5T618
>         depends on OF
>         select MFD_CORE
>         select REGMAP_I2C
> +       select REGMAP_IRQ
>         help
>           Say yes here to add support for the Ricoh RN5T567,
>           RN5T618, RC5T619 PMIC.
> diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
> index 110ea700231b..2906d5db67d0 100644
> --- a/drivers/mfd/Makefile
> +++ b/drivers/mfd/Makefile
> @@ -217,7 +217,7 @@ obj-$(CONFIG_MFD_VIPERBOARD)    += viperboard.o
>  obj-$(CONFIG_MFD_RC5T583)      += rc5t583.o rc5t583-irq.o
>  obj-$(CONFIG_MFD_RK808)                += rk808.o
>
> -rn5t618-objs                   := rn5t618-core.o
> +rn5t618-objs                   := rn5t618-core.o rn5t618-irq.o
>  obj-$(CONFIG_MFD_RN5T618)      += rn5t618.o
>  obj-$(CONFIG_MFD_SEC_CORE)     += sec-core.o sec-irq.o
>  obj-$(CONFIG_MFD_SYSCON)       += syscon.o
> diff --git a/drivers/mfd/rn5t618-core.c b/drivers/mfd/rn5t618-core.c
> index da5cd9c92a59..d4ed2865ed8b 100644
> --- a/drivers/mfd/rn5t618-core.c
> +++ b/drivers/mfd/rn5t618-core.c
> @@ -8,6 +8,7 @@
>
>  #include <linux/delay.h>
>  #include <linux/i2c.h>
> +#include <linux/interrupt.h>
>  #include <linux/mfd/core.h>
>  #include <linux/mfd/rn5t618.h>
>  #include <linux/module.h>
> @@ -105,7 +106,8 @@ static int rn5t618_i2c_probe(struct i2c_client *i2c,
>
>         i2c_set_clientdata(i2c, priv);
>         priv->variant = (long)of_id->data;
> -
> +       priv->chip_irq = i2c->irq;
> +       priv->dev = &i2c->dev;
>         priv->regmap = devm_regmap_init_i2c(i2c, &rn5t618_regmap_config);
>         if (IS_ERR(priv->regmap)) {
>                 ret = PTR_ERR(priv->regmap);
> @@ -137,6 +139,11 @@ static int rn5t618_i2c_probe(struct i2c_client *i2c,
>                 return ret;
>         }
>
> +       if (priv->chip_irq > 0) {
> +               if (rn5t618_irq_init(priv))
> +                       priv->chip_irq = 0;
> +       }
> +
>         return 0;
>  }
>
> @@ -154,15 +161,41 @@ static int rn5t618_i2c_remove(struct i2c_client *i2c)
>         return 0;
>  }
>
> +static int __maybe_unused rn5t618_i2c_suspend(struct device *dev)
> +{
> +       struct rn5t618 *priv = dev_get_drvdata(dev);
> +
> +       if (priv->chip_irq)
> +               disable_irq(priv->chip_irq);
> +
> +       return 0;
> +}
> +
> +static int __maybe_unused rn5t618_i2c_resume(struct device *dev)
> +{
> +       struct rn5t618 *priv = dev_get_drvdata(dev);
> +
> +       if (priv->chip_irq)
> +               enable_irq(priv->chip_irq);
> +
> +       return 0;
> +}

For what it's worth, the boards I have (Archos 101 Oxygen and Pipo P9)
with rc5t619 use GPIO for power button.
So IRQ would need to be enabled in suspend for this to work.
Also, since you actually added alarm support, perhaps you want to
wake-up from suspend using alarm as well?

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ