[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20150330084657.GP457@x1>
Date: Mon, 30 Mar 2015 09:46:57 +0100
From: Lee Jones <lee.jones@...aro.org>
To: Holger Dengler <dengler@...utronix.de>
Cc: linux-kernel@...r.kernel.org, Peter Mahler <mahler@...ug.com>,
Juergen Bubeck <bubeck@...ug.com>,
Benedikt Spranger <b.spranger@...utronix.de>,
Samuel Ortiz <sameo@...ux.intel.com>
Subject: Re: [PATCH 05/11] mfd: flexcard: add interrupt support
On Wed, 25 Mar 2015, Holger Dengler wrote:
> From: Benedikt Spranger <b.spranger@...utronix.de>
>
> The Flexcard comprise an interrupt controller for the attached
> tinys, timer, a Flexray related trigger and a second one for DMA.
> Both controllers share a single IRQ line.
>
> Add an interrupt domain for the non-DMA interrupts.
>
> Signed-off-by: Holger Dengler <dengler@...utronix.de>
> Signed-off-by: Benedikt Spranger <b.spranger@...utronix.de>
> cc: Samuel Ortiz <sameo@...ux.intel.com>
> cc: Lee Jones <lee.jones@...aro.org>
> ---
> drivers/mfd/Kconfig | 1 +
> drivers/mfd/flexcard/Makefile | 2 +-
> drivers/mfd/flexcard/core.c | 14 +++-
> drivers/mfd/flexcard/flexcard.h | 2 +
> drivers/mfd/flexcard/irq.c | 167 ++++++++++++++++++++++++++++++++++++++++
> drivers/mfd/flexcard/irq.h | 50 ++++++++++++
> include/linux/mfd/flexcard.h | 2 +
> 7 files changed, 235 insertions(+), 3 deletions(-)
> create mode 100644 drivers/mfd/flexcard/irq.c
> create mode 100644 drivers/mfd/flexcard/irq.h
[...]
> diff --git a/drivers/mfd/flexcard/irq.h b/drivers/mfd/flexcard/irq.h
> new file mode 100644
> index 0000000..b18fb5b
> --- /dev/null
> +++ b/drivers/mfd/flexcard/irq.h
> @@ -0,0 +1,50 @@
> +#ifndef FLEXCARD_IRQ_H
> +#define FLEXCARD_IRQ_H
> +
> +struct flexcard_irq_tab {
> + u32 enable;
> + u32 reset;
> + u32 status;
> +};
> +
> +#define to_irq_tab(e, s) { \
> + .enable = (1 << e), \
> + .status = (1 << s), \
> +}
> +
> +#define to_irq_tab_ack(e, r, s) { \
> + .enable = (1 << e), \
> + .reset = (1 << r), \
> + .status = (1 << s), \
> +}
> +
> +/*
> + * Interrupt Controller Register S-Box
> + * unlike other irq controllers the FlexCard bits for enable, reset and status
> + * looks more like a cryptographic S-box. Make a const table to have a more
> + * easier access to this bits in the irqchip callback functions.
> + * The table contains the registers for PMC2-cards.
> + */
> +static const struct flexcard_irq_tab flexcard_irq_tab[] = {
> + to_irq_tab_ack(28, 0, 28), /* TIMER */
> + to_irq_tab_ack(29, 1, 29), /* CC1CYS */
> + to_irq_tab_ack(30, 10, 21), /* CC2CYS */
> + to_irq_tab_ack(18, 2, 30), /* CC3CYS */
> + to_irq_tab_ack(19, 6, 25), /* CC4CYS */
> + to_irq_tab_ack(26, 4, 26), /* WAKE1A */
> + to_irq_tab_ack(27, 5, 27), /* WAKE1B */
> + to_irq_tab_ack(24, 8, 23), /* WAKE2A */
> + to_irq_tab_ack(25, 9, 22), /* WAKE2B */
> + to_irq_tab_ack(22, 12, 19), /* WAKE3A */
> + to_irq_tab_ack(23, 13, 18), /* WAKE3B */
> + to_irq_tab_ack(20, 14, 17), /* WAKE4A */
> + to_irq_tab_ack(21, 15, 16), /* WAKE4B */
> + to_irq_tab(15, 31), /* CC1T0 */
> + to_irq_tab(14, 3), /* CC2T0 */
> + to_irq_tab(16, 24), /* CC3T0 */
> + to_irq_tab(17, 20), /* CC4T0 */
> +};
> +
> +#define NR_FLEXCARD_IRQ ARRAY_SIZE(flexcard_irq_tab)
Is everything in this header used over multiple source files, or only
irq.c? If the latter, then please move them into irq.c.
> +#endif /* FLEXCARD_IRQ_H */
> diff --git a/include/linux/mfd/flexcard.h b/include/linux/mfd/flexcard.h
> index 84e155c..f5b789f 100644
> --- a/include/linux/mfd/flexcard.h
> +++ b/include/linux/mfd/flexcard.h
> @@ -22,12 +22,14 @@
> #define FLEXCARD_MAX_NAME 16
>
> struct flexcard_device {
> + raw_spinlock_t irq_lock;
> struct pci_dev *pdev;
> struct fc_conf_bar __iomem *conf;
> struct mfd_cell *cells;
> struct resource *res;
> struct miscdevice dev;
> struct kref ref;
> + struct irq_domain *irq_domain;
> int cardnr;
> char name[FLEXCARD_MAX_NAME];
> };
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists