All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rob Herring <robherring2@gmail.com>
To: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Cc: Stephen Warren <swarren@wwwdotorg.org>,
	Stephen Warren <swarren@nvidia.com>,
	devicetree-discuss@lists.ozlabs.org,
	Rob Herring <rob.herring@calxeda.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	linux-omap <linux-omap@vger.kernel.org>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 1/1] of/irq: store IRQ trigger/level in struct resource flags
Date: Mon, 08 Apr 2013 21:45:43 -0500	[thread overview]
Message-ID: <516380D7.3060000@gmail.com> (raw)
In-Reply-To: <51634B1F.4030408@collabora.co.uk>

On 04/08/2013 05:56 PM, Javier Martinez Canillas wrote:
> On 04/09/2013 12:16 AM, Stephen Warren wrote:
>> On 04/08/2013 04:05 PM, Rob Herring wrote:
>>> On 04/05/2013 02:48 AM, Javier Martinez Canillas wrote:
>>>> According to Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
>>>> the "#interrupt-cells" property of an "interrupt-controller" is used
>>>> to define the number of cells needed to specify a single interrupt.
>> ...
>>>> But the type is never returned so it can't be saved on the IRQ struct
>>>> resource flags member.
>>>>
>>>> This means that drivers that need the IRQ type/level flags defined in
>>>> the DT won't be able to get it.
>>>
>>> But the interrupt controllers that need the information should be able
>>> to get to it via irqd_get_trigger_type. What problem exactly are you
>>> trying to fix? What driver would use this?
>>
>> FYI, that is indeed what I did in sound/soc/codecs/wm8903.c. Thinking
>> back, I'm not sure if that was the right thing or whether I should have
>> sent this same patch:-)
>>
> 
> Hi Stephen,
> 
> I'm glad you agree :-)
> 
> I could change drivers/net/ethernet/smsc/smsc911x.c to get the type flags for
> the IRQ with irqd_get_trigger_type() but I prefer $subject because:

irqd_get_trigger_type probably is not meant for outside of irqchips.
Creating an irq_get_irq_type function which takes an irq number would be
the right function as that does not expose struct irq_data.

> a) This works in the non-DT case with board files and filling the resources from
> platform data in arch/arm/mach-omap2/gpmc-smsc911x.c. So this is definitely a
> bug on the DT core.

And hackery/abuse like this:

arch/arm/mach-omap2/board-3630sdp.c:32:    .flags          =
GPMC_MUX_ADD_DATA | IORESOURCE_IRQ_LOWLEVEL,

> b) I don't see why of_irq_to_resource() should discard the type/level flags when
> filling the IORESOURCE_IRQ if it was specified on the DT.
> 
> c) We will have to change all drivers that expect to get the IRQ type flags from
> a IORESOURCE_IRQ struct resource.

I'm not convinced that is a high number of drivers. Nearly all the
occurrences of IORESOURCE_IRQ_ in drivers/ are for ISA (acpi/pnp) and
drivers for ISA devices.

Rob

WARNING: multiple messages have this Message-ID (diff)
From: robherring2@gmail.com (Rob Herring)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/1] of/irq: store IRQ trigger/level in struct resource flags
Date: Mon, 08 Apr 2013 21:45:43 -0500	[thread overview]
Message-ID: <516380D7.3060000@gmail.com> (raw)
In-Reply-To: <51634B1F.4030408@collabora.co.uk>

On 04/08/2013 05:56 PM, Javier Martinez Canillas wrote:
> On 04/09/2013 12:16 AM, Stephen Warren wrote:
>> On 04/08/2013 04:05 PM, Rob Herring wrote:
>>> On 04/05/2013 02:48 AM, Javier Martinez Canillas wrote:
>>>> According to Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
>>>> the "#interrupt-cells" property of an "interrupt-controller" is used
>>>> to define the number of cells needed to specify a single interrupt.
>> ...
>>>> But the type is never returned so it can't be saved on the IRQ struct
>>>> resource flags member.
>>>>
>>>> This means that drivers that need the IRQ type/level flags defined in
>>>> the DT won't be able to get it.
>>>
>>> But the interrupt controllers that need the information should be able
>>> to get to it via irqd_get_trigger_type. What problem exactly are you
>>> trying to fix? What driver would use this?
>>
>> FYI, that is indeed what I did in sound/soc/codecs/wm8903.c. Thinking
>> back, I'm not sure if that was the right thing or whether I should have
>> sent this same patch:-)
>>
> 
> Hi Stephen,
> 
> I'm glad you agree :-)
> 
> I could change drivers/net/ethernet/smsc/smsc911x.c to get the type flags for
> the IRQ with irqd_get_trigger_type() but I prefer $subject because:

irqd_get_trigger_type probably is not meant for outside of irqchips.
Creating an irq_get_irq_type function which takes an irq number would be
the right function as that does not expose struct irq_data.

> a) This works in the non-DT case with board files and filling the resources from
> platform data in arch/arm/mach-omap2/gpmc-smsc911x.c. So this is definitely a
> bug on the DT core.

And hackery/abuse like this:

arch/arm/mach-omap2/board-3630sdp.c:32:    .flags          =
GPMC_MUX_ADD_DATA | IORESOURCE_IRQ_LOWLEVEL,

> b) I don't see why of_irq_to_resource() should discard the type/level flags when
> filling the IORESOURCE_IRQ if it was specified on the DT.
> 
> c) We will have to change all drivers that expect to get the IRQ type flags from
> a IORESOURCE_IRQ struct resource.

I'm not convinced that is a high number of drivers. Nearly all the
occurrences of IORESOURCE_IRQ_ in drivers/ are for ISA (acpi/pnp) and
drivers for ISA devices.

Rob

  reply	other threads:[~2013-04-09  2:45 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-05  7:48 [PATCH 1/1] of/irq: store IRQ trigger/level in struct resource flags Javier Martinez Canillas
2013-04-05  7:48 ` Javier Martinez Canillas
2013-04-08 22:05 ` Rob Herring
2013-04-08 22:05   ` Rob Herring
2013-04-08 22:16   ` Stephen Warren
2013-04-08 22:16     ` Stephen Warren
2013-04-08 22:56     ` Javier Martinez Canillas
2013-04-08 22:56       ` Javier Martinez Canillas
2013-04-09  2:45       ` Rob Herring [this message]
2013-04-09  2:45         ` Rob Herring
2013-04-09  8:26         ` Javier Martinez Canillas
2013-04-09  8:26           ` Javier Martinez Canillas
2013-04-09  8:28           ` Javier Martinez Canillas
2013-04-09  8:28             ` Javier Martinez Canillas
2013-04-18 12:17         ` Javier Martinez Canillas
2013-04-18 12:17           ` Javier Martinez Canillas
2013-04-08 22:44   ` Javier Martinez Canillas
2013-04-08 22:44     ` Javier Martinez Canillas
2013-06-05 23:26     ` Grant Likely
2013-06-05 23:26       ` Grant Likely
2013-06-06  8:00       ` Javier Martinez Canillas
2013-06-06  8:00         ` Javier Martinez Canillas
2013-06-06  8:50       ` Jean-Christophe PLAGNIOL-VILLARD
2013-06-06  8:50         ` Jean-Christophe PLAGNIOL-VILLARD
2013-06-06  9:13         ` Javier Martinez Canillas
2013-06-06  9:13           ` Javier Martinez Canillas
2013-06-06  9:58         ` Tomasz Figa
2013-06-06  9:58           ` Tomasz Figa
2013-06-05 23:34 ` Grant Likely
2013-06-05 23:34   ` Grant Likely
2013-06-06  8:47   ` Javier Martinez Canillas
2013-06-06  8:47     ` 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=516380D7.3060000@gmail.com \
    --to=robherring2@gmail.com \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=javier.martinez@collabora.co.uk \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=rob.herring@calxeda.com \
    --cc=swarren@nvidia.com \
    --cc=swarren@wwwdotorg.org \
    --cc=tglx@linutronix.de \
    /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.