All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.