linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [RFCv2 03/14] irq_domain: Make irq_domain structure match powerpc's irq_host
       [not found] ` <1327352870-14687-4-git-send-email-grant.likely@secretlab.ca>
@ 2012-01-24 21:38   ` Rob Herring
  2012-01-24 22:08     ` Grant Likely
  0 siblings, 1 reply; 5+ messages in thread
From: Rob Herring @ 2012-01-24 21:38 UTC (permalink / raw)
  To: linux-arm-kernel

On 01/23/2012 03:07 PM, Grant Likely wrote:
> Part of the series to unify the irq remapping mechanisms in the
> kernel.  A follow up patch will copy the powerpc implementation into
> kernel/irq/irqdomain.c, which will be a lot easier if the structures
> are identical.
> 
> Where they differ, I've chose to use the powerpc names since there is
> a lot more code using those names.
> 
> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
> ---
>  arch/arm/common/gic.c     |   14 ++++----
>  include/linux/irqdomain.h |   84 ++++++++++++++++++++++++++++++++++-----------
>  kernel/irq/irqdomain.c    |   14 ++++----
>  3 files changed, 78 insertions(+), 34 deletions(-)
> 

snip...

> @@ -126,7 +126,7 @@ void irq_dispose_mapping(unsigned int irq)
>  }
>  EXPORT_SYMBOL_GPL(irq_dispose_mapping);
>  
> -int irq_domain_simple_dt_translate(struct irq_domain *d,
> +int irq_domain_simple_xlate(struct irq_domain *d,
>  			    struct device_node *controller,
>  			    const u32 *intspec, unsigned int intsize,
>  			    unsigned long *out_hwirq, unsigned int *out_type)

This needs a declaration in irqdomain.h (as well as EXPORT?). There
could be others as well, but this is the one I'm using for generic irq chip.

Rob

> @@ -181,7 +181,7 @@ EXPORT_SYMBOL_GPL(irq_domain_generate_simple);
>  
>  struct irq_domain_ops irq_domain_simple_ops = {
>  #ifdef CONFIG_OF_IRQ
> -	.dt_translate = irq_domain_simple_dt_translate,
> +	.xlate = irq_domain_simple_xlate,
>  #endif /* CONFIG_OF_IRQ */
>  };
>  EXPORT_SYMBOL_GPL(irq_domain_simple_ops);

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [RFCv2 03/14] irq_domain: Make irq_domain structure match powerpc's irq_host
  2012-01-24 21:38   ` [RFCv2 03/14] irq_domain: Make irq_domain structure match powerpc's irq_host Rob Herring
@ 2012-01-24 22:08     ` Grant Likely
  2012-01-24 22:11       ` Rob Herring
  0 siblings, 1 reply; 5+ messages in thread
From: Grant Likely @ 2012-01-24 22:08 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Jan 24, 2012 at 2:38 PM, Rob Herring <robherring2@gmail.com> wrote:
> On 01/23/2012 03:07 PM, Grant Likely wrote:
>> Part of the series to unify the irq remapping mechanisms in the
>> kernel. ?A follow up patch will copy the powerpc implementation into
>> kernel/irq/irqdomain.c, which will be a lot easier if the structures
>> are identical.
>>
>> Where they differ, I've chose to use the powerpc names since there is
>> a lot more code using those names.
>>
>> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
>> ---
>> ?arch/arm/common/gic.c ? ? | ? 14 ++++----
>> ?include/linux/irqdomain.h | ? 84 ++++++++++++++++++++++++++++++++++-----------
>> ?kernel/irq/irqdomain.c ? ?| ? 14 ++++----
>> ?3 files changed, 78 insertions(+), 34 deletions(-)
>>
>
> snip...
>
>> @@ -126,7 +126,7 @@ void irq_dispose_mapping(unsigned int irq)
>> ?}
>> ?EXPORT_SYMBOL_GPL(irq_dispose_mapping);
>>
>> -int irq_domain_simple_dt_translate(struct irq_domain *d,
>> +int irq_domain_simple_xlate(struct irq_domain *d,
>> ? ? ? ? ? ? ? ? ? ? ? ? ? struct device_node *controller,
>> ? ? ? ? ? ? ? ? ? ? ? ? ? const u32 *intspec, unsigned int intsize,
>> ? ? ? ? ? ? ? ? ? ? ? ? ? unsigned long *out_hwirq, unsigned int *out_type)
>
> This needs a declaration in irqdomain.h (as well as EXPORT?). There
> could be others as well, but this is the one I'm using for generic irq chip.

Fine by me.  I'll add that as a follow-on patch since nothing in-tree
currently depends on that.  It will be in the next version of the
patch series.  Also, are you okay if I rename it to
irq_domain_generic_xlate()?  Simple doesn't really describe it well,
and it can be used for any interrupt controller implementing the
binding we've settled on as recommended for new device support.

g.

>
> Rob
>
>> @@ -181,7 +181,7 @@ EXPORT_SYMBOL_GPL(irq_domain_generate_simple);
>>
>> ?struct irq_domain_ops irq_domain_simple_ops = {
>> ?#ifdef CONFIG_OF_IRQ
>> - ? ? .dt_translate = irq_domain_simple_dt_translate,
>> + ? ? .xlate = irq_domain_simple_xlate,
>> ?#endif /* CONFIG_OF_IRQ */
>> ?};
>> ?EXPORT_SYMBOL_GPL(irq_domain_simple_ops);
>



-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [RFCv2 13/14] irq_domain: Remove 'new' irq_domain in favour of the ppc one
       [not found] ` <1327352870-14687-14-git-send-email-grant.likely@secretlab.ca>
@ 2012-01-24 22:10   ` Rob Herring
  2012-01-25  0:26     ` Grant Likely
  0 siblings, 1 reply; 5+ messages in thread
From: Rob Herring @ 2012-01-24 22:10 UTC (permalink / raw)
  To: linux-arm-kernel

On 01/23/2012 03:07 PM, Grant Likely wrote:
> This patch removes the simplistic implementation of irq_domains and enables
> the powerpc infrastructure for all irq_domain users.  The powerpc
> infrastructure includes support for complex mappings between Linux and
> hardware irq numbers, and can manage allocation of irq_descs.
> 
> This patch also converts the few users of irq_domain_add()/irq_domain_del()
> to call irq_domain_add_legacy() instead.
> 
> v2: Fix removal of irq_alloc_descs() call in gic driver
> 
> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
> ---
>  arch/arm/common/gic.c               |   85 ++++++++-----------
>  arch/arm/common/vic.c               |   16 +---
>  arch/arm/include/asm/hardware/gic.h |    4 +-
>  arch/arm/include/asm/hardware/vic.h |    2 +
>  arch/arm/mach-exynos/common.c       |    2 +-
>  arch/arm/mach-versatile/core.c      |    5 +-
>  drivers/mfd/twl-core.c              |   12 +--
>  include/linux/irqdomain.h           |   45 +---------
>  kernel/irq/irqdomain.c              |  159 +++--------------------------------
>  9 files changed, 69 insertions(+), 261 deletions(-)
> 
> diff --git a/arch/arm/common/gic.c b/arch/arm/common/gic.c

snip

> @@ -716,17 +708,17 @@ void __init gic_init_bases(unsigned int gic_nr, int irq_start,
>  		gic_irqs = 1020;
>  	gic->gic_irqs = gic_irqs;
>  
> -	domain->nr_irq = gic_irqs - domain->hwirq_base;
> -	domain->irq_base = irq_alloc_descs(irq_start, 16, domain->nr_irq,
> -					   numa_node_id());
> -	if (IS_ERR_VALUE(domain->irq_base)) {
> +	irq_base = irq_alloc_descs(irq_start, 16, gic_irqs - hwirq_base,
> +				   numa_node_id());
> +	if (IS_ERR_VALUE(irq_base)) {
>  		WARN(1, "Cannot allocate irq_descs @ IRQ%d, assuming pre-allocated\n",
>  		     irq_start);
> -		domain->irq_base = irq_start;
> +		irq_base = irq_start;
>  	}
> -	domain->host_data = gic;
> -	domain->ops = &gic_irq_domain_ops;
> -	irq_domain_add(domain);
> +	gic->domain = irq_domain_add_legacy(node, gic_irqs, irq_base,

gic_irqs is wrong here. It needs 16 or 32 subtracted off. This patch
will fix things:

diff --git a/arch/arm/common/gic.c b/arch/arm/common/gic.c
index 44bf4e7..5fc0c97 100644
--- a/arch/arm/common/gic.c
+++ b/arch/arm/common/gic.c
@@ -707,8 +707,9 @@ void __init gic_init_bases(unsigned int gic_nr, int
irq_start,
        if (gic_irqs > 1020)
                gic_irqs = 1020;
        gic->gic_irqs = gic_irqs;
+       gic_irqs -= hwirq_base;

-       irq_base = irq_alloc_descs(irq_start, 16, gic_irqs - hwirq_base,
+       irq_base = irq_alloc_descs(irq_start, 16, gic_irqs,
                                   numa_node_id());
        if (IS_ERR_VALUE(irq_base)) {
                WARN(1, "Cannot allocate irq_descs @ IRQ%d, assuming
pre-allocated\n",

> +				    hwirq_base, &gic_irq_domain_ops, gic);
> +	if (WARN_ON(!gic->domain))
> +		return;
>  
>  	gic_chip.flags |= gic_arch_extn.flags;
>  	gic_dist_init(gic);

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [RFCv2 03/14] irq_domain: Make irq_domain structure match powerpc's irq_host
  2012-01-24 22:08     ` Grant Likely
@ 2012-01-24 22:11       ` Rob Herring
  0 siblings, 0 replies; 5+ messages in thread
From: Rob Herring @ 2012-01-24 22:11 UTC (permalink / raw)
  To: linux-arm-kernel

On 01/24/2012 04:08 PM, Grant Likely wrote:
> On Tue, Jan 24, 2012 at 2:38 PM, Rob Herring <robherring2@gmail.com> wrote:
>> On 01/23/2012 03:07 PM, Grant Likely wrote:
>>> Part of the series to unify the irq remapping mechanisms in the
>>> kernel.  A follow up patch will copy the powerpc implementation into
>>> kernel/irq/irqdomain.c, which will be a lot easier if the structures
>>> are identical.
>>>
>>> Where they differ, I've chose to use the powerpc names since there is
>>> a lot more code using those names.
>>>
>>> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
>>> ---
>>>  arch/arm/common/gic.c     |   14 ++++----
>>>  include/linux/irqdomain.h |   84 ++++++++++++++++++++++++++++++++++-----------
>>>  kernel/irq/irqdomain.c    |   14 ++++----
>>>  3 files changed, 78 insertions(+), 34 deletions(-)
>>>
>>
>> snip...
>>
>>> @@ -126,7 +126,7 @@ void irq_dispose_mapping(unsigned int irq)
>>>  }
>>>  EXPORT_SYMBOL_GPL(irq_dispose_mapping);
>>>
>>> -int irq_domain_simple_dt_translate(struct irq_domain *d,
>>> +int irq_domain_simple_xlate(struct irq_domain *d,
>>>                           struct device_node *controller,
>>>                           const u32 *intspec, unsigned int intsize,
>>>                           unsigned long *out_hwirq, unsigned int *out_type)
>>
>> This needs a declaration in irqdomain.h (as well as EXPORT?). There
>> could be others as well, but this is the one I'm using for generic irq chip.
> 
> Fine by me.  I'll add that as a follow-on patch since nothing in-tree
> currently depends on that.  It will be in the next version of the
> patch series.  Also, are you okay if I rename it to
> irq_domain_generic_xlate()?  Simple doesn't really describe it well,
> and it can be used for any interrupt controller implementing the
> binding we've settled on as recommended for new device support.
> 

Okay.

Rob

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [RFCv2 13/14] irq_domain: Remove 'new' irq_domain in favour of the ppc one
  2012-01-24 22:10   ` [RFCv2 13/14] irq_domain: Remove 'new' irq_domain in favour of the ppc one Rob Herring
@ 2012-01-25  0:26     ` Grant Likely
  0 siblings, 0 replies; 5+ messages in thread
From: Grant Likely @ 2012-01-25  0:26 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Jan 24, 2012 at 3:10 PM, Rob Herring <robherring2@gmail.com> wrote:
> On 01/23/2012 03:07 PM, Grant Likely wrote:
>> This patch removes the simplistic implementation of irq_domains and enables
>> the powerpc infrastructure for all irq_domain users. ?The powerpc
>> infrastructure includes support for complex mappings between Linux and
>> hardware irq numbers, and can manage allocation of irq_descs.
>>
>> This patch also converts the few users of irq_domain_add()/irq_domain_del()
>> to call irq_domain_add_legacy() instead.
>>
>> v2: Fix removal of irq_alloc_descs() call in gic driver
>>
>> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
>> ---
>> ?arch/arm/common/gic.c ? ? ? ? ? ? ? | ? 85 ++++++++-----------
>> ?arch/arm/common/vic.c ? ? ? ? ? ? ? | ? 16 +---
>> ?arch/arm/include/asm/hardware/gic.h | ? ?4 +-
>> ?arch/arm/include/asm/hardware/vic.h | ? ?2 +
>> ?arch/arm/mach-exynos/common.c ? ? ? | ? ?2 +-
>> ?arch/arm/mach-versatile/core.c ? ? ?| ? ?5 +-
>> ?drivers/mfd/twl-core.c ? ? ? ? ? ? ?| ? 12 +--
>> ?include/linux/irqdomain.h ? ? ? ? ? | ? 45 +---------
>> ?kernel/irq/irqdomain.c ? ? ? ? ? ? ?| ?159 +++--------------------------------
>> ?9 files changed, 69 insertions(+), 261 deletions(-)
>>
>> diff --git a/arch/arm/common/gic.c b/arch/arm/common/gic.c
>
> snip
>
>> @@ -716,17 +708,17 @@ void __init gic_init_bases(unsigned int gic_nr, int irq_start,
>> ? ? ? ? ? ? ? gic_irqs = 1020;
>> ? ? ? gic->gic_irqs = gic_irqs;
>>
>> - ? ? domain->nr_irq = gic_irqs - domain->hwirq_base;
>> - ? ? domain->irq_base = irq_alloc_descs(irq_start, 16, domain->nr_irq,
>> - ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?numa_node_id());
>> - ? ? if (IS_ERR_VALUE(domain->irq_base)) {
>> + ? ? irq_base = irq_alloc_descs(irq_start, 16, gic_irqs - hwirq_base,
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?numa_node_id());
>> + ? ? if (IS_ERR_VALUE(irq_base)) {
>> ? ? ? ? ? ? ? WARN(1, "Cannot allocate irq_descs @ IRQ%d, assuming pre-allocated\n",
>> ? ? ? ? ? ? ? ? ? ?irq_start);
>> - ? ? ? ? ? ? domain->irq_base = irq_start;
>> + ? ? ? ? ? ? irq_base = irq_start;
>> ? ? ? }
>> - ? ? domain->host_data = gic;
>> - ? ? domain->ops = &gic_irq_domain_ops;
>> - ? ? irq_domain_add(domain);
>> + ? ? gic->domain = irq_domain_add_legacy(node, gic_irqs, irq_base,
>
> gic_irqs is wrong here. It needs 16 or 32 subtracted off. This patch
> will fix things:

Good catch, I've integrated this into my series.

g.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-01-25  0:26 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1327352870-14687-1-git-send-email-grant.likely@secretlab.ca>
     [not found] ` <1327352870-14687-4-git-send-email-grant.likely@secretlab.ca>
2012-01-24 21:38   ` [RFCv2 03/14] irq_domain: Make irq_domain structure match powerpc's irq_host Rob Herring
2012-01-24 22:08     ` Grant Likely
2012-01-24 22:11       ` Rob Herring
     [not found] ` <1327352870-14687-14-git-send-email-grant.likely@secretlab.ca>
2012-01-24 22:10   ` [RFCv2 13/14] irq_domain: Remove 'new' irq_domain in favour of the ppc one Rob Herring
2012-01-25  0:26     ` Grant Likely

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).