* [PATCH 1/2] ARM: SAMSUNG: Convert irq-uart to use new irq_ functions
@ 2010-11-26 14:51 Mark Brown
2010-11-26 14:51 ` [PATCH 2/2] ARM: SAMSUNG: Convert irq-vic-timer to " Mark Brown
2010-12-03 11:37 ` [PATCH 1/2] ARM: SAMSUNG: Convert irq-uart to use new " Kukjin Kim
0 siblings, 2 replies; 4+ messages in thread
From: Mark Brown @ 2010-11-26 14:51 UTC (permalink / raw)
To: linux-arm-kernel
Convert to the new irq_ versions of the IRQ operations. As well as
the textual substituion of irq_data for the raw IRQ number we also
convert the register base lookup to in s3c_irq_uart_base() to pick
the irq_data up directly.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
arch/arm/plat-samsung/irq-uart.c | 36 ++++++++++++++++++------------------
1 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/arch/arm/plat-samsung/irq-uart.c b/arch/arm/plat-samsung/irq-uart.c
index 4f8c102..da31d78 100644
--- a/arch/arm/plat-samsung/irq-uart.c
+++ b/arch/arm/plat-samsung/irq-uart.c
@@ -28,9 +28,9 @@
* are consecutive when looking up the interrupt in the demux routines.
*/
-static inline void __iomem *s3c_irq_uart_base(unsigned int irq)
+static inline void __iomem *s3c_irq_uart_base(struct irq_data *data)
{
- struct s3c_uart_irq *uirq = get_irq_chip_data(irq);
+ struct s3c_uart_irq *uirq = data->chip_data;
return uirq->regs;
}
@@ -39,10 +39,10 @@ static inline unsigned int s3c_irq_uart_bit(unsigned int irq)
return irq & 3;
}
-static void s3c_irq_uart_mask(unsigned int irq)
+static void s3c_irq_uart_mask(struct irq_data *data)
{
- void __iomem *regs = s3c_irq_uart_base(irq);
- unsigned int bit = s3c_irq_uart_bit(irq);
+ void __iomem *regs = s3c_irq_uart_base(data);
+ unsigned int bit = s3c_irq_uart_bit(data->irq);
u32 reg;
reg = __raw_readl(regs + S3C64XX_UINTM);
@@ -50,10 +50,10 @@ static void s3c_irq_uart_mask(unsigned int irq)
__raw_writel(reg, regs + S3C64XX_UINTM);
}
-static void s3c_irq_uart_maskack(unsigned int irq)
+static void s3c_irq_uart_maskack(struct irq_data *data)
{
- void __iomem *regs = s3c_irq_uart_base(irq);
- unsigned int bit = s3c_irq_uart_bit(irq);
+ void __iomem *regs = s3c_irq_uart_base(data);
+ unsigned int bit = s3c_irq_uart_bit(data->irq);
u32 reg;
reg = __raw_readl(regs + S3C64XX_UINTM);
@@ -62,10 +62,10 @@ static void s3c_irq_uart_maskack(unsigned int irq)
__raw_writel(1 << bit, regs + S3C64XX_UINTP);
}
-static void s3c_irq_uart_unmask(unsigned int irq)
+static void s3c_irq_uart_unmask(struct irq_data *data)
{
- void __iomem *regs = s3c_irq_uart_base(irq);
- unsigned int bit = s3c_irq_uart_bit(irq);
+ void __iomem *regs = s3c_irq_uart_base(data);
+ unsigned int bit = s3c_irq_uart_bit(data->irq);
u32 reg;
reg = __raw_readl(regs + S3C64XX_UINTM);
@@ -73,10 +73,10 @@ static void s3c_irq_uart_unmask(unsigned int irq)
__raw_writel(reg, regs + S3C64XX_UINTM);
}
-static void s3c_irq_uart_ack(unsigned int irq)
+static void s3c_irq_uart_ack(struct irq_data *data)
{
- void __iomem *regs = s3c_irq_uart_base(irq);
- unsigned int bit = s3c_irq_uart_bit(irq);
+ void __iomem *regs = s3c_irq_uart_base(data);
+ unsigned int bit = s3c_irq_uart_bit(data->irq);
__raw_writel(1 << bit, regs + S3C64XX_UINTP);
}
@@ -99,10 +99,10 @@ static void s3c_irq_demux_uart(unsigned int irq, struct irq_desc *desc)
static struct irq_chip s3c_irq_uart = {
.name = "s3c-uart",
- .mask = s3c_irq_uart_mask,
- .unmask = s3c_irq_uart_unmask,
- .mask_ack = s3c_irq_uart_maskack,
- .ack = s3c_irq_uart_ack,
+ .irq_mask = s3c_irq_uart_mask,
+ .irq_unmask = s3c_irq_uart_unmask,
+ .irq_mask_ack = s3c_irq_uart_maskack,
+ .irq_ack = s3c_irq_uart_ack,
};
static void __init s3c_init_uart_irq(struct s3c_uart_irq *uirq)
--
1.7.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] ARM: SAMSUNG: Convert irq-vic-timer to irq_ functions
2010-11-26 14:51 [PATCH 1/2] ARM: SAMSUNG: Convert irq-uart to use new irq_ functions Mark Brown
@ 2010-11-26 14:51 ` Mark Brown
2010-12-03 11:38 ` Kukjin Kim
2010-12-03 11:37 ` [PATCH 1/2] ARM: SAMSUNG: Convert irq-uart to use new " Kukjin Kim
1 sibling, 1 reply; 4+ messages in thread
From: Mark Brown @ 2010-11-26 14:51 UTC (permalink / raw)
To: linux-arm-kernel
Conver the VIC timer interrupts to use the irq_ versions of the IRQ
operatiosn introduced in 2.6.37, storing the mask for the timer
interrupt in the chip_data of the irq_data in order to save having to
do a substraction and a shift on every operation.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
arch/arm/plat-samsung/irq-vic-timer.c | 22 +++++++++++++---------
1 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/arch/arm/plat-samsung/irq-vic-timer.c b/arch/arm/plat-samsung/irq-vic-timer.c
index 0270519..7ce77dd 100644
--- a/arch/arm/plat-samsung/irq-vic-timer.c
+++ b/arch/arm/plat-samsung/irq-vic-timer.c
@@ -29,38 +29,41 @@ static void s3c_irq_demux_vic_timer(unsigned int irq, struct irq_desc *desc)
/* We assume the IRQ_TIMER0..IRQ_TIMER4 range is continuous. */
-static void s3c_irq_timer_mask(unsigned int irq)
+static void s3c_irq_timer_mask(struct irq_data *data)
{
u32 reg = __raw_readl(S3C64XX_TINT_CSTAT);
+ u32 mask = (u32)data->chip_data;
reg &= 0x1f; /* mask out pending interrupts */
- reg &= ~(1 << (irq - IRQ_TIMER0));
+ reg &= ~mask;
__raw_writel(reg, S3C64XX_TINT_CSTAT);
}
-static void s3c_irq_timer_unmask(unsigned int irq)
+static void s3c_irq_timer_unmask(struct irq_data *data)
{
u32 reg = __raw_readl(S3C64XX_TINT_CSTAT);
+ u32 mask = (u32)data->chip_data;
reg &= 0x1f; /* mask out pending interrupts */
- reg |= 1 << (irq - IRQ_TIMER0);
+ reg |= mask;
__raw_writel(reg, S3C64XX_TINT_CSTAT);
}
-static void s3c_irq_timer_ack(unsigned int irq)
+static void s3c_irq_timer_ack(struct irq_data *data)
{
u32 reg = __raw_readl(S3C64XX_TINT_CSTAT);
+ u32 mask = (u32)data->chip_data;
reg &= 0x1f;
- reg |= (1 << 5) << (irq - IRQ_TIMER0);
+ reg |= mask << 5;
__raw_writel(reg, S3C64XX_TINT_CSTAT);
}
static struct irq_chip s3c_irq_timer = {
.name = "s3c-timer",
- .mask = s3c_irq_timer_mask,
- .unmask = s3c_irq_timer_unmask,
- .ack = s3c_irq_timer_ack,
+ .irq_mask = s3c_irq_timer_mask,
+ .irq_unmask = s3c_irq_timer_unmask,
+ .irq_ack = s3c_irq_timer_ack,
};
/**
@@ -79,6 +82,7 @@ void __init s3c_init_vic_timer_irq(unsigned int parent_irq,
set_irq_chained_handler(parent_irq, s3c_irq_demux_vic_timer);
set_irq_chip(timer_irq, &s3c_irq_timer);
+ set_irq_chip_data(timer_irq, (void *)(1 << (timer_irq - IRQ_TIMER0)));
set_irq_handler(timer_irq, handle_level_irq);
set_irq_flags(timer_irq, IRQF_VALID);
--
1.7.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 1/2] ARM: SAMSUNG: Convert irq-uart to use new irq_ functions
2010-11-26 14:51 [PATCH 1/2] ARM: SAMSUNG: Convert irq-uart to use new irq_ functions Mark Brown
2010-11-26 14:51 ` [PATCH 2/2] ARM: SAMSUNG: Convert irq-vic-timer to " Mark Brown
@ 2010-12-03 11:37 ` Kukjin Kim
1 sibling, 0 replies; 4+ messages in thread
From: Kukjin Kim @ 2010-12-03 11:37 UTC (permalink / raw)
To: linux-arm-kernel
Mark Brown wrote:
>
> Convert to the new irq_ versions of the IRQ operations. As well as
> the textual substituion of irq_data for the raw IRQ number we also
> convert the register base lookup to in s3c_irq_uart_base() to pick
> the irq_data up directly.
>
> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
> ---
> arch/arm/plat-samsung/irq-uart.c | 36
++++++++++++++++++------------------
> 1 files changed, 18 insertions(+), 18 deletions(-)
>
> diff --git a/arch/arm/plat-samsung/irq-uart.c b/arch/arm/plat-samsung/irq-
> uart.c
> index 4f8c102..da31d78 100644
> --- a/arch/arm/plat-samsung/irq-uart.c
> +++ b/arch/arm/plat-samsung/irq-uart.c
> @@ -28,9 +28,9 @@
> * are consecutive when looking up the interrupt in the demux routines.
> */
>
> -static inline void __iomem *s3c_irq_uart_base(unsigned int irq)
> +static inline void __iomem *s3c_irq_uart_base(struct irq_data *data)
> {
> - struct s3c_uart_irq *uirq = get_irq_chip_data(irq);
> + struct s3c_uart_irq *uirq = data->chip_data;
> return uirq->regs;
> }
>
> @@ -39,10 +39,10 @@ static inline unsigned int s3c_irq_uart_bit(unsigned
int
> irq)
> return irq & 3;
> }
>
> -static void s3c_irq_uart_mask(unsigned int irq)
> +static void s3c_irq_uart_mask(struct irq_data *data)
> {
> - void __iomem *regs = s3c_irq_uart_base(irq);
> - unsigned int bit = s3c_irq_uart_bit(irq);
> + void __iomem *regs = s3c_irq_uart_base(data);
> + unsigned int bit = s3c_irq_uart_bit(data->irq);
> u32 reg;
>
> reg = __raw_readl(regs + S3C64XX_UINTM);
> @@ -50,10 +50,10 @@ static void s3c_irq_uart_mask(unsigned int irq)
> __raw_writel(reg, regs + S3C64XX_UINTM);
> }
>
> -static void s3c_irq_uart_maskack(unsigned int irq)
> +static void s3c_irq_uart_maskack(struct irq_data *data)
> {
> - void __iomem *regs = s3c_irq_uart_base(irq);
> - unsigned int bit = s3c_irq_uart_bit(irq);
> + void __iomem *regs = s3c_irq_uart_base(data);
> + unsigned int bit = s3c_irq_uart_bit(data->irq);
> u32 reg;
>
> reg = __raw_readl(regs + S3C64XX_UINTM);
> @@ -62,10 +62,10 @@ static void s3c_irq_uart_maskack(unsigned int irq)
> __raw_writel(1 << bit, regs + S3C64XX_UINTP);
> }
>
> -static void s3c_irq_uart_unmask(unsigned int irq)
> +static void s3c_irq_uart_unmask(struct irq_data *data)
> {
> - void __iomem *regs = s3c_irq_uart_base(irq);
> - unsigned int bit = s3c_irq_uart_bit(irq);
> + void __iomem *regs = s3c_irq_uart_base(data);
> + unsigned int bit = s3c_irq_uart_bit(data->irq);
> u32 reg;
>
> reg = __raw_readl(regs + S3C64XX_UINTM);
> @@ -73,10 +73,10 @@ static void s3c_irq_uart_unmask(unsigned int irq)
> __raw_writel(reg, regs + S3C64XX_UINTM);
> }
>
> -static void s3c_irq_uart_ack(unsigned int irq)
> +static void s3c_irq_uart_ack(struct irq_data *data)
> {
> - void __iomem *regs = s3c_irq_uart_base(irq);
> - unsigned int bit = s3c_irq_uart_bit(irq);
> + void __iomem *regs = s3c_irq_uart_base(data);
> + unsigned int bit = s3c_irq_uart_bit(data->irq);
>
> __raw_writel(1 << bit, regs + S3C64XX_UINTP);
> }
> @@ -99,10 +99,10 @@ static void s3c_irq_demux_uart(unsigned int irq,
struct
> irq_desc *desc)
>
> static struct irq_chip s3c_irq_uart = {
> .name = "s3c-uart",
> - .mask = s3c_irq_uart_mask,
> - .unmask = s3c_irq_uart_unmask,
> - .mask_ack = s3c_irq_uart_maskack,
> - .ack = s3c_irq_uart_ack,
> + .irq_mask = s3c_irq_uart_mask,
> + .irq_unmask = s3c_irq_uart_unmask,
> + .irq_mask_ack = s3c_irq_uart_maskack,
> + .irq_ack = s3c_irq_uart_ack,
> };
>
> static void __init s3c_init_uart_irq(struct s3c_uart_irq *uirq)
> --
Looks ok to me...will apply.
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 2/2] ARM: SAMSUNG: Convert irq-vic-timer to irq_ functions
2010-11-26 14:51 ` [PATCH 2/2] ARM: SAMSUNG: Convert irq-vic-timer to " Mark Brown
@ 2010-12-03 11:38 ` Kukjin Kim
0 siblings, 0 replies; 4+ messages in thread
From: Kukjin Kim @ 2010-12-03 11:38 UTC (permalink / raw)
To: linux-arm-kernel
Mark Brown wrote:
>
> Conver the VIC timer interrupts to use the irq_ versions of the IRQ
> operatiosn introduced in 2.6.37, storing the mask for the timer
> interrupt in the chip_data of the irq_data in order to save having to
> do a substraction and a shift on every operation.
>
> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
> ---
> arch/arm/plat-samsung/irq-vic-timer.c | 22 +++++++++++++---------
> 1 files changed, 13 insertions(+), 9 deletions(-)
>
> diff --git a/arch/arm/plat-samsung/irq-vic-timer.c b/arch/arm/plat-
> samsung/irq-vic-timer.c
> index 0270519..7ce77dd 100644
> --- a/arch/arm/plat-samsung/irq-vic-timer.c
> +++ b/arch/arm/plat-samsung/irq-vic-timer.c
> @@ -29,38 +29,41 @@ static void s3c_irq_demux_vic_timer(unsigned int irq,
> struct irq_desc *desc)
>
> /* We assume the IRQ_TIMER0..IRQ_TIMER4 range is continuous. */
>
> -static void s3c_irq_timer_mask(unsigned int irq)
> +static void s3c_irq_timer_mask(struct irq_data *data)
> {
> u32 reg = __raw_readl(S3C64XX_TINT_CSTAT);
> + u32 mask = (u32)data->chip_data;
>
> reg &= 0x1f; /* mask out pending interrupts */
> - reg &= ~(1 << (irq - IRQ_TIMER0));
> + reg &= ~mask;
> __raw_writel(reg, S3C64XX_TINT_CSTAT);
> }
>
> -static void s3c_irq_timer_unmask(unsigned int irq)
> +static void s3c_irq_timer_unmask(struct irq_data *data)
> {
> u32 reg = __raw_readl(S3C64XX_TINT_CSTAT);
> + u32 mask = (u32)data->chip_data;
>
> reg &= 0x1f; /* mask out pending interrupts */
> - reg |= 1 << (irq - IRQ_TIMER0);
> + reg |= mask;
> __raw_writel(reg, S3C64XX_TINT_CSTAT);
> }
>
> -static void s3c_irq_timer_ack(unsigned int irq)
> +static void s3c_irq_timer_ack(struct irq_data *data)
> {
> u32 reg = __raw_readl(S3C64XX_TINT_CSTAT);
> + u32 mask = (u32)data->chip_data;
>
> reg &= 0x1f;
> - reg |= (1 << 5) << (irq - IRQ_TIMER0);
> + reg |= mask << 5;
> __raw_writel(reg, S3C64XX_TINT_CSTAT);
> }
>
> static struct irq_chip s3c_irq_timer = {
> .name = "s3c-timer",
> - .mask = s3c_irq_timer_mask,
> - .unmask = s3c_irq_timer_unmask,
> - .ack = s3c_irq_timer_ack,
> + .irq_mask = s3c_irq_timer_mask,
> + .irq_unmask = s3c_irq_timer_unmask,
> + .irq_ack = s3c_irq_timer_ack,
> };
>
> /**
> @@ -79,6 +82,7 @@ void __init s3c_init_vic_timer_irq(unsigned int
parent_irq,
> set_irq_chained_handler(parent_irq, s3c_irq_demux_vic_timer);
>
> set_irq_chip(timer_irq, &s3c_irq_timer);
> + set_irq_chip_data(timer_irq, (void *)(1 << (timer_irq -
IRQ_TIMER0)));
> set_irq_handler(timer_irq, handle_level_irq);
> set_irq_flags(timer_irq, IRQF_VALID);
>
> --
Looks ok to me..will apply :-)
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-12-03 11:38 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-11-26 14:51 [PATCH 1/2] ARM: SAMSUNG: Convert irq-uart to use new irq_ functions Mark Brown
2010-11-26 14:51 ` [PATCH 2/2] ARM: SAMSUNG: Convert irq-vic-timer to " Mark Brown
2010-12-03 11:38 ` Kukjin Kim
2010-12-03 11:37 ` [PATCH 1/2] ARM: SAMSUNG: Convert irq-uart to use new " Kukjin Kim
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.