Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 718bfd76 authored by Paul Walmsley's avatar Paul Walmsley Committed by paul
Browse files

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: default avatarPaul Walmsley <paul@pwsan.com>
Cc: Benoît Cousson <b-cousson@ti.com>
Cc: Kevin Hilman <khilman@deeprootsystems.com>
parent 726072e5
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -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 (i = 0; i < oh->mpu_irqs_cnt; i++) {
		(res + r)->start = *(oh->mpu_irqs + i);
		(res + r)->end = *(oh->mpu_irqs + i);
		(res + r)->name = (oh->mpu_irqs + i)->name;
		(res + r)->start = (oh->mpu_irqs + i)->irq;
		(res + r)->end = (oh->mpu_irqs + i)->irq;
		(res + r)->flags = IORESOURCE_IRQ;
		r++;
	}
+16 −2
Original line number Diff line number Diff line
@@ -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)
 * @dma_ch: DMA channel ID
 *
@@ -379,7 +393,7 @@ struct omap_hwmod_omap4_prcm {
struct omap_hwmod {
	const char			*name;
	struct omap_device		*od;
	u8				*mpu_irqs;
	struct omap_hwmod_irq_info	*mpu_irqs;
	struct omap_hwmod_dma_info	*sdma_chs;
	union {
		struct omap_hwmod_omap2_prcm omap2;