OMAP hwmod: add names to module MPU IRQ lines
Replace the existing u8 array of module MPU IRQ lines with a struct that includes a name - similar to the existing struct omap_hwmod_dma_info. Device drivers can then use platform_get_resource_byname() to retrieve specific IRQs without nasty dependencies on array ordering. Thanks to Benoît Cousson <b-cousson@ti.com> and Kevin Hilman <khilman@deeprootsystems.com> for feedback on this approach. Signed-off-by: Paul Walmsley <paul@pwsan.com> Cc: Benoît Cousson <b-cousson@ti.com> Cc: Kevin Hilman <khilman@deeprootsystems.com>
This commit is contained in:
parent
726072e5dd
commit
718bfd7693
|
@ -1386,8 +1386,9 @@ int omap_hwmod_fill_resources(struct omap_hwmod *oh, struct resource *res)
|
||||||
/* For each IRQ, DMA, memory area, fill in array.*/
|
/* For each IRQ, DMA, memory area, fill in array.*/
|
||||||
|
|
||||||
for (i = 0; i < oh->mpu_irqs_cnt; i++) {
|
for (i = 0; i < oh->mpu_irqs_cnt; i++) {
|
||||||
(res + r)->start = *(oh->mpu_irqs + i);
|
(res + r)->name = (oh->mpu_irqs + i)->name;
|
||||||
(res + r)->end = *(oh->mpu_irqs + i);
|
(res + r)->start = (oh->mpu_irqs + i)->irq;
|
||||||
|
(res + r)->end = (oh->mpu_irqs + i)->irq;
|
||||||
(res + r)->flags = IORESOURCE_IRQ;
|
(res + r)->flags = IORESOURCE_IRQ;
|
||||||
r++;
|
r++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,7 +64,21 @@ struct omap_device;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct omap_hwmod_dma_info - MPU address space handled by the hwmod
|
* struct omap_hwmod_irq_info - MPU IRQs used by the hwmod
|
||||||
|
* @name: name of the IRQ channel (module local name)
|
||||||
|
* @irq_ch: IRQ channel ID
|
||||||
|
*
|
||||||
|
* @name should be something short, e.g., "tx" or "rx". It is for use
|
||||||
|
* by platform_get_resource_byname(). It is defined locally to the
|
||||||
|
* hwmod.
|
||||||
|
*/
|
||||||
|
struct omap_hwmod_irq_info {
|
||||||
|
const char *name;
|
||||||
|
u16 irq;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct omap_hwmod_dma_info - DMA channels used by the hwmod
|
||||||
* @name: name of the DMA channel (module local name)
|
* @name: name of the DMA channel (module local name)
|
||||||
* @dma_ch: DMA channel ID
|
* @dma_ch: DMA channel ID
|
||||||
*
|
*
|
||||||
|
@ -379,7 +393,7 @@ struct omap_hwmod_omap4_prcm {
|
||||||
struct omap_hwmod {
|
struct omap_hwmod {
|
||||||
const char *name;
|
const char *name;
|
||||||
struct omap_device *od;
|
struct omap_device *od;
|
||||||
u8 *mpu_irqs;
|
struct omap_hwmod_irq_info *mpu_irqs;
|
||||||
struct omap_hwmod_dma_info *sdma_chs;
|
struct omap_hwmod_dma_info *sdma_chs;
|
||||||
union {
|
union {
|
||||||
struct omap_hwmod_omap2_prcm omap2;
|
struct omap_hwmod_omap2_prcm omap2;
|
||||||
|
|
Loading…
Reference in New Issue