lkml.org 
[lkml]   [2014]   [Oct]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH fixes 2/2] extcon: max77693: Fix always masked MUIC interrupts
    From
    Date
    On pią, 2014-10-10 at 17:45 +0900, Chanwoo Choi wrote:
    > On 10/10/2014 05:22 PM, Krzysztof Kozlowski wrote:
    > > All interrupts coming from MUIC were ignored because interrupt source
    > > register was masked.
    > >
    > > The Maxim 77693 has a "interrupt source" - a separate register and interrupts
    > > which give information about PMIC block triggering the individual
    > > interrupt (charger, topsys, MUIC, flash LED).
    > >
    > > By default bootloader could initialize this register to "mask all"
    > > value. In such case (observed on Trats2 board) MUIC interrupts won't be
    > > generated regardless of their mask status. Regmap irq chip was unmasking
    > > individual MUIC interrupts but the source was masked
    > >
    > > Before introducing regmap irq chip this interrupt source was unmasked,
    > > read and acked. Reading and acking is not necessary but unmasking is. Do
    > > it in extcon driver.
    > >
    > > Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    > > Cc: <stable@vger.kernel.org>
    > > Fixes: 342d669c1ee4 ("mfd: max77693: Handle IRQs using regmap")
    > > ---
    > > drivers/extcon/extcon-max77693.c | 16 ++++++++++++++++
    > > include/linux/mfd/max77693-private.h | 5 +++++
    > > 2 files changed, 21 insertions(+)
    > >
    > > diff --git a/drivers/extcon/extcon-max77693.c b/drivers/extcon/extcon-max77693.c
    > > index 490e27475bac..d3adacf3187f 100644
    > > --- a/drivers/extcon/extcon-max77693.c
    > > +++ b/drivers/extcon/extcon-max77693.c
    > > @@ -1176,6 +1176,22 @@ static int max77693_muic_probe(struct platform_device *pdev)
    > > }
    > > }
    > >
    > > + if (i) {
    > > + /*
    > > + * i>0, at least one MUIC interrupt requested so need to unmask
    > > + * MUIC interrupt in INTSRC register. Without that MUIC
    > > + * interrupts will not be reported.
    > > + */
    > > + ret = regmap_update_bits(max77693->regmap,
    > > + MAX77693_PMIC_REG_INTSRC_MASK, SRC_IRQ_MUIC,
    > > + ~SRC_IRQ_MUIC);
    > > + if (ret < 0) {
    > > + dev_err(&pdev->dev, "Could not unmask MUIC interrupt in INTSRC: %d\n",
    > > + ret);
    > > + return ret;
    > > + }
    > > + }
    > > +
    >
    > No,
    > The extcon-max77693 driver cannot enable IRQ_CHARGER/TOP/FLASH
    > because MAX77693_PMIC_REG_INTSRC_MASK register is common register of MAX77693.
    >
    > The IRQ_CHARGER/TOP/FLASH of MAX77693_PMIC_REG_INTSRC_MASK register should be enabled
    > in drivers/mfd/max77693.c.

    The code above unmasks only SRC_IRQ_MUIC. Other bits are not touched.
    Why do you think that other IRQs will be enabled?

    Best regards,
    Krzysztof

    >
    > > /* Initialize extcon device */
    > > info->edev = devm_extcon_dev_allocate(&pdev->dev,
    > > max77693_extcon_cable);
    > > diff --git a/include/linux/mfd/max77693-private.h b/include/linux/mfd/max77693-private.h
    > > index e1b2b61285b9..4f1a80b66ecf 100644
    > > --- a/include/linux/mfd/max77693-private.h
    > > +++ b/include/linux/mfd/max77693-private.h
    > > @@ -438,6 +438,11 @@ enum max77693_irq_source {
    > > MAX77693_IRQ_GROUP_NR,
    > > };
    > >
    > > +#define SRC_IRQ_CHARGER BIT(0)
    > > +#define SRC_IRQ_TOP BIT(1)
    > > +#define SRC_IRQ_FLASH BIT(2)
    > > +#define SRC_IRQ_MUIC BIT(3)
    > > +
    > > #define LED_IRQ_FLED2_OPEN BIT(0)
    > > #define LED_IRQ_FLED2_SHORT BIT(1)
    > > #define LED_IRQ_FLED1_OPEN BIT(2)
    > >

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2014-10-10 11:42    [W:2.711 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site