From: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
To: Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Nick Dyer <nick.dyer@itdev.co.uk>
Cc: Stephen Warren <swarren@nvidia.com>,
Yufeng Shen <miletus@chromium.org>,
Benson Leung <bleung@chromium.org>,
Doug Anderson <dianders@chromium.org>,
Olof Johansson <olof@lixom.net>,
Tomasz Figa <tomasz.figa@gmail.com>,
linux-input@vger.kernel.org, devicetree@vger.kernel.org,
linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org,
Thomas Gleixner <tglx@linutronix.de>,
Jason Cooper <jason@lakedaemon.net>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Thomas Abraham <thomas.ab@samsung.com>
Subject: Re: [PATCH v2 1/1] Input: atmel_mxt_ts - Get IRQ edge/level flags on DT booting
Date: Fri, 08 Aug 2014 18:38:51 +0200 [thread overview]
Message-ID: <53E4FD1B.6060600@collabora.co.uk> (raw)
In-Reply-To: <20140808162146.GC26820@core.coreip.homeip.net>
+Thomas Gleixner, Jason Cooper, Benjamin Herrenschmidt and Thomas Abraham
Hello Dmitry,
On 08/08/2014 06:21 PM, Dmitry Torokhov wrote:
> On Fri, Aug 08, 2014 at 03:07:33PM +0100, Nick Dyer wrote:
>> On 07/08/14 08:44, Javier Martinez Canillas wrote:
>> > The Atmel maXTouch driver assumed that the IRQ type flags will
>> > always be passed using platform data but this is not true when
>> > booting using Device Trees. In these setups the interrupt type
>> > was ignored by the driver when requesting an IRQ.
>> >
>> > This means that it will fail if a machine specified other type
>> > than IRQ_TYPE_NONE. The right approach is to get the IRQ flags
>> > that was parsed by OF from the "interrupt" Device Tree propery.
>> >
>> > Signed-off-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
>>
>> I'm happy for this to go in if Dmitry will accept it. It does seem to be a
>> quirk of some platforms that it is necessary, but it's only one line.
>
> I'd rather not as it masks the deeper platform issue. There might be
> other drovers also expecting platform/OF code set up interrupt triggers
> and working/not working by chance.
>
I totally agree. When posted the patch I thought that it was the right fix but
after your explanation and studying the IRQ core I see that as you said this i
just hiding a more fundamental issue. We should fix the root cause instead of
adding a workaround for every driver.
> Can we figure out why the platform in question needs this change?
>
I dig further on this. First I wanted to see if the problem was on IRQ core or
in the irqchip driver so I tried calling the chip's .irq_set_type function
handler directly using the flags set by __irq_set_trigger() the first time that
it's called from OF when the "interrupts" property is parsed.
Doing that makes the device to trigger interrupts so the problem seems to be
related to the pinctrl-exynos driver and is not in the IRQ core.
So, this is the change I did just for testing purposes to make it work again:
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index 3dc6a61..ed76b25 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -1176,6 +1176,10 @@ __setup_irq(unsigned int irq, struct irq_desc *desc,
struct irqaction *new)
if (ret)
goto out_mask;
+ } else if (irq == 283 /* mapped IRQ number for touchpad */) {
+ struct irq_chip *chip = desc->irq_data.chip;
+ chip->irq_set_type(&desc->irq_data,
+ irq_get_trigger_type(irq));
}
desc->istate &= ~(IRQS_AUTODETECT | IRQS_SPURIOUS_DISABLED | \
It seems as if the first call to exynos_irq_set_type() that is made by OF is a
no-op while the second call is the one that actually setups the hw correctly.
Does this make any sense? Maybe is related to the pin not being muxed in the
correct function when the "interrupts" property is parsed by OF?
Now I added some debug logs to see what could be different but all the variables
have the same values in both cases:
When called happens due irq_parse_and_map():
irq 283 type 2 pin 1 shift 4 base 4026679296 reg_con 3588 con 32 flags 0 mask 0
When called happens due request_threaded_irq():
irq 283 type 2 pin 1 shift 4 base 4026679296 reg_con 3588 con 32 flags 0 mask 0
I would really appreciate if someone that is more familiar with the driver or
this chip can provide some hints.
Thanks a lot and best regards,
Javier
next prev parent reply other threads:[~2014-08-08 16:39 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-07 7:44 [PATCH v2 1/1] Input: atmel_mxt_ts - Get IRQ edge/level flags on DT booting Javier Martinez Canillas
[not found] ` <1407397492-17475-1-git-send-email-javier.martinez-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org>
2014-08-08 14:07 ` Nick Dyer
2014-08-08 14:07 ` Nick Dyer
2014-08-08 16:21 ` Dmitry Torokhov
2014-08-08 16:38 ` Javier Martinez Canillas [this message]
2014-08-08 18:29 ` Javier Martinez Canillas
[not found] ` <53E5170C.10302-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org>
2014-08-08 18:41 ` Tomasz Figa
2014-08-08 18:41 ` Tomasz Figa
2014-08-08 20:54 ` Doug Anderson
2014-08-08 22:26 ` Javier Martinez Canillas
2014-08-08 23:58 ` Doug Anderson
2014-08-11 8:32 ` Linus Walleij
2014-08-11 9:09 ` Javier Martinez Canillas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53E4FD1B.6060600@collabora.co.uk \
--to=javier.martinez@collabora.co.uk \
--cc=benh@kernel.crashing.org \
--cc=bleung@chromium.org \
--cc=devicetree@vger.kernel.org \
--cc=dianders@chromium.org \
--cc=dmitry.torokhov@gmail.com \
--cc=jason@lakedaemon.net \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=miletus@chromium.org \
--cc=nick.dyer@itdev.co.uk \
--cc=olof@lixom.net \
--cc=swarren@nvidia.com \
--cc=tglx@linutronix.de \
--cc=thomas.ab@samsung.com \
--cc=tomasz.figa@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.