[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-id: <50060845.8090100@samsung.com>
Date: Wed, 18 Jul 2012 09:50:13 +0900
From: Chanwoo Choi <cw00.choi@...sung.com>
To: Mark Brown <broonie@...nsource.wolfsonmicro.com>
Cc: sameo@...ux.intel.com, myungjoo.ham@...sung.com,
kyungmin.park@...sung.com, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] mfd: MAX77693: Fix bug of interrupt handlding for MAX77693
devices
On 07/18/2012 04:14 AM, Mark Brown wrote:
> On Tue, Jul 17, 2012 at 08:30:17AM +0900, Chanwoo Choi wrote:
>> On 07/16/2012 10:36 PM, Mark Brown wrote:
>>> On Mon, Jul 16, 2012 at 06:41:05PM +0900, Chanwoo Choi wrote:
>
>>>> This patch fix bug related to interrupt handling for MAX77693 devices.
>>>> - Unmask interrupt masking bit for charger/flash/muic to revolve
>>>> that interrupt isn't happened when external connector is attached.
>
>>> Shouldn't this be happening when the IRQ is requested?
>
>> The interrupt isn't happened when external connector is attached
>> because muic interrupt of MAX77693 is masked on INTSRC_MASK(
>> Interrupt Source Mask) register. So, I should set zero to muic interrupt
>> masking bit of INTSRC_MASK before requesting IRQ.
>
> Right, but normally that unmasking happens in the unmask() callback of
> the irq_chip which is called when the interrupt is requested. Why isn't
> that working here?
As previous reply, Maxim MAX77693 has INTSRC_MASK(Interrput Source Mask,
0x23)
which mask or unmask Charger/Top/Flash/MUIC interrupt. And MAX77693 has
additional 'Interrupt Source Mask' for sub interrupt of each
Charger/Top/Flash/MUIC device.
In case of MUIC device, MUIC device has 16 sub interrupts and then MUIC
device need
separate Interrupt Source Mask(0x1,0x2,0x3) which is included in
register map of
MUIC i2c device and isn't equal to INTSRC_MASK(0x23). As you said,
unmasking sub interrupt of MUIC is happened in unmask() callback using
separate Interrupt Source Mask(0x1, 0x2, 0x3).
The MAX77693 mfd driver handle only INTSRC_MASK(0x23) to activate
Charger/Top/Flash/MUIC interrupt which isn't equal to sub interrupt of
each device before requesting
IRQ. If mfd driver wouldn't unmask Charger/Top/Flash/MUIC interrupt of
INTSRC_MASK(0x23),
it mean that Charger/Top/Flash/MUIC interrupt is inactive state and mfd
driver can't get the any interrupt.
Thank you,
Chanwoo Choi
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists