* [PATCH 2/3] ARM: S3C64XX: Convert S3C64xx irq-eint to use new irq_ methods
2010-11-25 15:18 [PATCH 1/3] ARM: SAMSUNG: Convert s3c_irqext_wake() to new irq_ interrupt methods Mark Brown
@ 2010-11-25 15:18 ` Mark Brown
2010-12-01 11:30 ` Kukjin Kim
2010-11-25 15:18 ` [PATCH 3/3] ARM: S3C64XX: Use chip_data to store the shift for EINTs Mark Brown
` (3 subsequent siblings)
4 siblings, 1 reply; 15+ messages in thread
From: Mark Brown @ 2010-11-25 15:18 UTC (permalink / raw)
To: linux-arm-kernel
Kernel 2.6.37 adds new interrupt methods which take a struct irq_data
rather than an irq number. Conver S3C64xx irq-eint to use this with a
simple textual substitution.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
arch/arm/mach-s3c64xx/irq-eint.c | 32 ++++++++++++++++----------------
1 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/arch/arm/mach-s3c64xx/irq-eint.c b/arch/arm/mach-s3c64xx/irq-eint.c
index 1a1aa5d..169ee29 100644
--- a/arch/arm/mach-s3c64xx/irq-eint.c
+++ b/arch/arm/mach-s3c64xx/irq-eint.c
@@ -32,39 +32,39 @@
#define eint_offset(irq) ((irq) - IRQ_EINT(0))
#define eint_irq_to_bit(irq) (1 << eint_offset(irq))
-static inline void s3c_irq_eint_mask(unsigned int irq)
+static inline void s3c_irq_eint_mask(struct irq_data *data)
{
u32 mask;
mask = __raw_readl(S3C64XX_EINT0MASK);
- mask |= eint_irq_to_bit(irq);
+ mask |= eint_irq_to_bit(data->irq);
__raw_writel(mask, S3C64XX_EINT0MASK);
}
-static void s3c_irq_eint_unmask(unsigned int irq)
+static void s3c_irq_eint_unmask(struct irq_data *data)
{
u32 mask;
mask = __raw_readl(S3C64XX_EINT0MASK);
- mask &= ~eint_irq_to_bit(irq);
+ mask &= ~eint_irq_to_bit(data->irq);
__raw_writel(mask, S3C64XX_EINT0MASK);
}
-static inline void s3c_irq_eint_ack(unsigned int irq)
+static inline void s3c_irq_eint_ack(struct irq_data *data)
{
- __raw_writel(eint_irq_to_bit(irq), S3C64XX_EINT0PEND);
+ __raw_writel(eint_irq_to_bit(data->irq), S3C64XX_EINT0PEND);
}
-static void s3c_irq_eint_maskack(unsigned int irq)
+static void s3c_irq_eint_maskack(struct irq_data *data)
{
/* compiler should in-line these */
- s3c_irq_eint_mask(irq);
- s3c_irq_eint_ack(irq);
+ s3c_irq_eint_mask(data);
+ s3c_irq_eint_ack(data);
}
-static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type)
+static int s3c_irq_eint_set_type(struct irq_data *data, unsigned int type)
{
- int offs = eint_offset(irq);
+ int offs = eint_offset(data->irq);
int pin, pin_val;
int shift;
u32 ctrl, mask;
@@ -140,11 +140,11 @@ static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type)
static struct irq_chip s3c_irq_eint = {
.name = "s3c-eint",
- .mask = s3c_irq_eint_mask,
- .unmask = s3c_irq_eint_unmask,
- .mask_ack = s3c_irq_eint_maskack,
- .ack = s3c_irq_eint_ack,
- .set_type = s3c_irq_eint_set_type,
+ .irq_mask = s3c_irq_eint_mask,
+ .irq_unmask = s3c_irq_eint_unmask,
+ .irq_mask_ack = s3c_irq_eint_maskack,
+ .irq_ack = s3c_irq_eint_ack,
+ .irq_set_type = s3c_irq_eint_set_type,
.irq_set_wake = s3c_irqext_wake,
};
--
1.7.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH 2/3] ARM: S3C64XX: Convert S3C64xx irq-eint to use new irq_ methods
2010-11-25 15:18 ` [PATCH 2/3] ARM: S3C64XX: Convert S3C64xx irq-eint to use new irq_ methods Mark Brown
@ 2010-12-01 11:30 ` Kukjin Kim
0 siblings, 0 replies; 15+ messages in thread
From: Kukjin Kim @ 2010-12-01 11:30 UTC (permalink / raw)
To: linux-arm-kernel
Mark Brown wrote:
>
> Kernel 2.6.37 adds new interrupt methods which take a struct irq_data
> rather than an irq number. Conver S3C64xx irq-eint to use this with a
> simple textual substitution.
>
> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
> ---
> arch/arm/mach-s3c64xx/irq-eint.c | 32 ++++++++++++++++----------------
> 1 files changed, 16 insertions(+), 16 deletions(-)
>
> diff --git a/arch/arm/mach-s3c64xx/irq-eint.c b/arch/arm/mach-s3c64xx/irq-
> eint.c
> index 1a1aa5d..169ee29 100644
> --- a/arch/arm/mach-s3c64xx/irq-eint.c
> +++ b/arch/arm/mach-s3c64xx/irq-eint.c
> @@ -32,39 +32,39 @@
> #define eint_offset(irq) ((irq) - IRQ_EINT(0))
> #define eint_irq_to_bit(irq) (1 << eint_offset(irq))
>
> -static inline void s3c_irq_eint_mask(unsigned int irq)
> +static inline void s3c_irq_eint_mask(struct irq_data *data)
> {
> u32 mask;
>
> mask = __raw_readl(S3C64XX_EINT0MASK);
> - mask |= eint_irq_to_bit(irq);
> + mask |= eint_irq_to_bit(data->irq);
> __raw_writel(mask, S3C64XX_EINT0MASK);
> }
>
> -static void s3c_irq_eint_unmask(unsigned int irq)
> +static void s3c_irq_eint_unmask(struct irq_data *data)
> {
> u32 mask;
>
> mask = __raw_readl(S3C64XX_EINT0MASK);
> - mask &= ~eint_irq_to_bit(irq);
> + mask &= ~eint_irq_to_bit(data->irq);
> __raw_writel(mask, S3C64XX_EINT0MASK);
> }
>
> -static inline void s3c_irq_eint_ack(unsigned int irq)
> +static inline void s3c_irq_eint_ack(struct irq_data *data)
> {
> - __raw_writel(eint_irq_to_bit(irq), S3C64XX_EINT0PEND);
> + __raw_writel(eint_irq_to_bit(data->irq), S3C64XX_EINT0PEND);
> }
>
> -static void s3c_irq_eint_maskack(unsigned int irq)
> +static void s3c_irq_eint_maskack(struct irq_data *data)
> {
> /* compiler should in-line these */
> - s3c_irq_eint_mask(irq);
> - s3c_irq_eint_ack(irq);
> + s3c_irq_eint_mask(data);
> + s3c_irq_eint_ack(data);
> }
>
> -static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type)
> +static int s3c_irq_eint_set_type(struct irq_data *data, unsigned int
type)
> {
> - int offs = eint_offset(irq);
> + int offs = eint_offset(data->irq);
> int pin, pin_val;
> int shift;
> u32 ctrl, mask;
> @@ -140,11 +140,11 @@ static int s3c_irq_eint_set_type(unsigned int irq,
> unsigned int type)
>
> static struct irq_chip s3c_irq_eint = {
> .name = "s3c-eint",
> - .mask = s3c_irq_eint_mask,
> - .unmask = s3c_irq_eint_unmask,
> - .mask_ack = s3c_irq_eint_maskack,
> - .ack = s3c_irq_eint_ack,
> - .set_type = s3c_irq_eint_set_type,
> + .irq_mask = s3c_irq_eint_mask,
> + .irq_unmask = s3c_irq_eint_unmask,
> + .irq_mask_ack = s3c_irq_eint_maskack,
> + .irq_ack = s3c_irq_eint_ack,
> + .irq_set_type = s3c_irq_eint_set_type,
> .irq_set_wake = s3c_irqext_wake,
> };
>
> --
Ok...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] 15+ messages in thread
* [PATCH 3/3] ARM: S3C64XX: Use chip_data to store the shift for EINTs
2010-11-25 15:18 [PATCH 1/3] ARM: SAMSUNG: Convert s3c_irqext_wake() to new irq_ interrupt methods Mark Brown
2010-11-25 15:18 ` [PATCH 2/3] ARM: S3C64XX: Convert S3C64xx irq-eint to use new irq_ methods Mark Brown
@ 2010-11-25 15:18 ` Mark Brown
2010-12-01 11:44 ` Kukjin Kim
2010-12-01 10:19 ` [PATCH 1/3] ARM: SAMSUNG: Convert s3c_irqext_wake() to new irq_ interrupt methods Lennert Buytenhek
` (2 subsequent siblings)
4 siblings, 1 reply; 15+ messages in thread
From: Mark Brown @ 2010-11-25 15:18 UTC (permalink / raw)
To: linux-arm-kernel
This makes all the functions that use the shift slightly smaller, one
instruction in most cases but more for ack() and maskack().
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
arch/arm/mach-s3c64xx/irq-eint.c | 9 +++++----
1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/arch/arm/mach-s3c64xx/irq-eint.c b/arch/arm/mach-s3c64xx/irq-eint.c
index 169ee29..2ead818 100644
--- a/arch/arm/mach-s3c64xx/irq-eint.c
+++ b/arch/arm/mach-s3c64xx/irq-eint.c
@@ -30,14 +30,14 @@
#include <plat/pm.h>
#define eint_offset(irq) ((irq) - IRQ_EINT(0))
-#define eint_irq_to_bit(irq) (1 << eint_offset(irq))
+#define eint_irq_to_bit(irq) ((u32)(1 << eint_offset(irq)))
static inline void s3c_irq_eint_mask(struct irq_data *data)
{
u32 mask;
mask = __raw_readl(S3C64XX_EINT0MASK);
- mask |= eint_irq_to_bit(data->irq);
+ mask |= (u32)data->chip_data;
__raw_writel(mask, S3C64XX_EINT0MASK);
}
@@ -46,13 +46,13 @@ static void s3c_irq_eint_unmask(struct irq_data *data)
u32 mask;
mask = __raw_readl(S3C64XX_EINT0MASK);
- mask &= ~eint_irq_to_bit(data->irq);
+ mask &= ~((u32)data->chip_data);
__raw_writel(mask, S3C64XX_EINT0MASK);
}
static inline void s3c_irq_eint_ack(struct irq_data *data)
{
- __raw_writel(eint_irq_to_bit(data->irq), S3C64XX_EINT0PEND);
+ __raw_writel((u32)data->chip_data, S3C64XX_EINT0PEND);
}
static void s3c_irq_eint_maskack(struct irq_data *data)
@@ -198,6 +198,7 @@ static int __init s3c64xx_init_irq_eint(void)
for (irq = IRQ_EINT(0); irq <= IRQ_EINT(27); irq++) {
set_irq_chip(irq, &s3c_irq_eint);
+ set_irq_chip_data(irq, (void *)eint_irq_to_bit(irq));
set_irq_handler(irq, handle_level_irq);
set_irq_flags(irq, IRQF_VALID);
}
--
1.7.1
^ permalink raw reply related [flat|nested] 15+ messages in thread* [PATCH 3/3] ARM: S3C64XX: Use chip_data to store the shift for EINTs
2010-11-25 15:18 ` [PATCH 3/3] ARM: S3C64XX: Use chip_data to store the shift for EINTs Mark Brown
@ 2010-12-01 11:44 ` Kukjin Kim
2010-12-01 11:55 ` Mark Brown
0 siblings, 1 reply; 15+ messages in thread
From: Kukjin Kim @ 2010-12-01 11:44 UTC (permalink / raw)
To: linux-arm-kernel
Mark Brown wrote:
>
> This makes all the functions that use the shift slightly smaller, one
> instruction in most cases but more for ack() and maskack().
>
Hi Mark,
Uhm...I'm not sure to use chip_data for the eint_irq_to_bit() is best to us.
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.
> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
> ---
> arch/arm/mach-s3c64xx/irq-eint.c | 9 +++++----
> 1 files changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/mach-s3c64xx/irq-eint.c b/arch/arm/mach-s3c64xx/irq-
> eint.c
> index 169ee29..2ead818 100644
> --- a/arch/arm/mach-s3c64xx/irq-eint.c
> +++ b/arch/arm/mach-s3c64xx/irq-eint.c
> @@ -30,14 +30,14 @@
> #include <plat/pm.h>
>
> #define eint_offset(irq) ((irq) - IRQ_EINT(0))
> -#define eint_irq_to_bit(irq) (1 << eint_offset(irq))
> +#define eint_irq_to_bit(irq) ((u32)(1 << eint_offset(irq)))
>
> static inline void s3c_irq_eint_mask(struct irq_data *data)
> {
> u32 mask;
>
> mask = __raw_readl(S3C64XX_EINT0MASK);
> - mask |= eint_irq_to_bit(data->irq);
> + mask |= (u32)data->chip_data;
> __raw_writel(mask, S3C64XX_EINT0MASK);
> }
>
> @@ -46,13 +46,13 @@ static void s3c_irq_eint_unmask(struct irq_data *data)
> u32 mask;
>
> mask = __raw_readl(S3C64XX_EINT0MASK);
> - mask &= ~eint_irq_to_bit(data->irq);
> + mask &= ~((u32)data->chip_data);
> __raw_writel(mask, S3C64XX_EINT0MASK);
> }
>
> static inline void s3c_irq_eint_ack(struct irq_data *data)
> {
> - __raw_writel(eint_irq_to_bit(data->irq), S3C64XX_EINT0PEND);
> + __raw_writel((u32)data->chip_data, S3C64XX_EINT0PEND);
> }
>
> static void s3c_irq_eint_maskack(struct irq_data *data)
> @@ -198,6 +198,7 @@ static int __init s3c64xx_init_irq_eint(void)
>
> for (irq = IRQ_EINT(0); irq <= IRQ_EINT(27); irq++) {
> set_irq_chip(irq, &s3c_irq_eint);
> + set_irq_chip_data(irq, (void *)eint_irq_to_bit(irq));
> set_irq_handler(irq, handle_level_irq);
> set_irq_flags(irq, IRQF_VALID);
> }
> --
^ permalink raw reply [flat|nested] 15+ messages in thread* [PATCH 3/3] ARM: S3C64XX: Use chip_data to store the shift for EINTs
2010-12-01 11:44 ` Kukjin Kim
@ 2010-12-01 11:55 ` Mark Brown
2010-12-01 12:11 ` Kukjin Kim
2010-12-08 0:36 ` Ben Dooks
0 siblings, 2 replies; 15+ messages in thread
From: Mark Brown @ 2010-12-01 11:55 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Dec 01, 2010 at 08:44:25PM +0900, Kukjin Kim wrote:
> Mark Brown wrote:
> > This makes all the functions that use the shift slightly smaller, one
> > instruction in most cases but more for ack() and maskack().
> Uhm...I'm not sure to use chip_data for the eint_irq_to_bit() is best to us.
Could you elaborate on your concern here? I can't think of anything
else we might want to include in the data, and avoiding the shifts
and/or dereferences seems useful for anyone doing interrupt heavy work.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 3/3] ARM: S3C64XX: Use chip_data to store the shift for EINTs
2010-12-01 11:55 ` Mark Brown
@ 2010-12-01 12:11 ` Kukjin Kim
2010-12-08 0:36 ` Ben Dooks
1 sibling, 0 replies; 15+ messages in thread
From: Kukjin Kim @ 2010-12-01 12:11 UTC (permalink / raw)
To: linux-arm-kernel
Mark Brown wrote:
>
> On Wed, Dec 01, 2010 at 08:44:25PM +0900, Kukjin Kim wrote:
> > Mark Brown wrote:
>
> > > This makes all the functions that use the shift slightly smaller, one
> > > instruction in most cases but more for ack() and maskack().
>
> > Uhm...I'm not sure to use chip_data for the eint_irq_to_bit() is best to
us.
>
> Could you elaborate on your concern here? I can't think of anything
> else we might want to include in the data, and avoiding the shifts
> and/or dereferences seems useful for anyone doing interrupt heavy work.
Hehehe :-)
I just thought it again, I agree with you. Your patch 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] 15+ messages in thread
* [PATCH 3/3] ARM: S3C64XX: Use chip_data to store the shift for EINTs
2010-12-01 11:55 ` Mark Brown
2010-12-01 12:11 ` Kukjin Kim
@ 2010-12-08 0:36 ` Ben Dooks
1 sibling, 0 replies; 15+ messages in thread
From: Ben Dooks @ 2010-12-08 0:36 UTC (permalink / raw)
To: linux-arm-kernel
On 01/12/10 11:55, Mark Brown wrote:
> On Wed, Dec 01, 2010 at 08:44:25PM +0900, Kukjin Kim wrote:
>> Mark Brown wrote:
>
>>> This makes all the functions that use the shift slightly smaller, one
>>> instruction in most cases but more for ack() and maskack().
>
>> Uhm...I'm not sure to use chip_data for the eint_irq_to_bit() is best to us.
>
> Could you elaborate on your concern here? I can't think of anything
> else we might want to include in the data, and avoiding the shifts
> and/or dereferences seems useful for anyone doing interrupt heavy work.
Hi, post code to show difference in output would be good!
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 1/3] ARM: SAMSUNG: Convert s3c_irqext_wake() to new irq_ interrupt methods
2010-11-25 15:18 [PATCH 1/3] ARM: SAMSUNG: Convert s3c_irqext_wake() to new irq_ interrupt methods Mark Brown
2010-11-25 15:18 ` [PATCH 2/3] ARM: S3C64XX: Convert S3C64xx irq-eint to use new irq_ methods Mark Brown
2010-11-25 15:18 ` [PATCH 3/3] ARM: S3C64XX: Use chip_data to store the shift for EINTs Mark Brown
@ 2010-12-01 10:19 ` Lennert Buytenhek
2010-12-01 11:08 ` Mark Brown
2010-12-01 11:24 ` Kukjin Kim
2010-12-01 11:28 ` Kukjin Kim
4 siblings, 1 reply; 15+ messages in thread
From: Lennert Buytenhek @ 2010-12-01 10:19 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Nov 25, 2010 at 03:18:27PM +0000, Mark Brown wrote:
> Kernel 2.6.37 adds new interrupt methods which take a struct irq_data
> rather than an irq number. Begin converting Samsung platforms over to
> these methods by converting s3c_irqext_wake() with a simple textual
> substitution.
>
> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
> ---
> arch/arm/mach-s3c64xx/irq-eint.c | 2 +-
> arch/arm/mach-s5pv310/irq-eint.c | 2 +-
> arch/arm/plat-s3c24xx/irq.c | 2 +-
> arch/arm/plat-s5p/irq-eint.c | 4 ++--
> arch/arm/plat-samsung/include/plat/pm.h | 4 +++-
> arch/arm/plat-samsung/pm.c | 6 +++---
> 6 files changed, 11 insertions(+), 9 deletions(-)
It would seem that this patch breaks s3c:
./mach-s3c64xx/irq-eint.c: .irq_set_wake = s3c_irqext_wake,
./plat-s3c24xx/irq.c: .irq_set_wake = s3c_irqext_wake
> diff --git a/arch/arm/mach-s3c64xx/irq-eint.c b/arch/arm/mach-s3c64xx/irq-eint.c
> index 5682d6a..1a1aa5d 100644
> --- a/arch/arm/mach-s3c64xx/irq-eint.c
> +++ b/arch/arm/mach-s3c64xx/irq-eint.c
> @@ -145,7 +145,7 @@ static struct irq_chip s3c_irq_eint = {
> .mask_ack = s3c_irq_eint_maskack,
> .ack = s3c_irq_eint_ack,
> .set_type = s3c_irq_eint_set_type,
> - .set_wake = s3c_irqext_wake,
> + .irq_set_wake = s3c_irqext_wake,
> };
>
> /* s3c_irq_demux_eint
> diff --git a/arch/arm/mach-s5pv310/irq-eint.c b/arch/arm/mach-s5pv310/irq-eint.c
> index 5877503..f5a415e 100644
> --- a/arch/arm/mach-s5pv310/irq-eint.c
> +++ b/arch/arm/mach-s5pv310/irq-eint.c
> @@ -152,7 +152,7 @@ static struct irq_chip s5pv310_irq_eint = {
> .ack = s5pv310_irq_eint_ack,
> .set_type = s5pv310_irq_eint_set_type,
> #ifdef CONFIG_PM
> - .set_wake = s3c_irqext_wake,
> + .irq_set_wake = s3c_irqext_wake,
> #endif
> };
>
> diff --git a/arch/arm/plat-s3c24xx/irq.c b/arch/arm/plat-s3c24xx/irq.c
> index ad0d44e..91ce383 100644
> --- a/arch/arm/plat-s3c24xx/irq.c
> +++ b/arch/arm/plat-s3c24xx/irq.c
> @@ -238,7 +238,7 @@ static struct irq_chip s3c_irqext_chip = {
> .unmask = s3c_irqext_unmask,
> .ack = s3c_irqext_ack,
> .set_type = s3c_irqext_type,
> - .set_wake = s3c_irqext_wake
> + .irq_set_wake = s3c_irqext_wake
> };
>
> static struct irq_chip s3c_irq_eint0t4 = {
> diff --git a/arch/arm/plat-s5p/irq-eint.c b/arch/arm/plat-s5p/irq-eint.c
> index 752f1a6..f2f2e1c 100644
> --- a/arch/arm/plat-s5p/irq-eint.c
> +++ b/arch/arm/plat-s5p/irq-eint.c
> @@ -125,7 +125,7 @@ static struct irq_chip s5p_irq_eint = {
> .ack = s5p_irq_eint_ack,
> .set_type = s5p_irq_eint_set_type,
> #ifdef CONFIG_PM
> - .set_wake = s3c_irqext_wake,
> + .irq_set_wake = s3c_irqext_wake,
> #endif
> };
>
> @@ -194,7 +194,7 @@ static struct irq_chip s5p_irq_vic_eint = {
> .ack = s5p_irq_vic_eint_ack,
> .set_type = s5p_irq_eint_set_type,
> #ifdef CONFIG_PM
> - .set_wake = s3c_irqext_wake,
> + .irq_set_wake = s3c_irqext_wake,
> #endif
> };
>
> diff --git a/arch/arm/plat-samsung/include/plat/pm.h b/arch/arm/plat-samsung/include/plat/pm.h
> index 245836d..d9025e3 100644
> --- a/arch/arm/plat-samsung/include/plat/pm.h
> +++ b/arch/arm/plat-samsung/include/plat/pm.h
> @@ -15,6 +15,8 @@
> * management
> */
>
> +#include <linux/irq.h>
> +
> #ifdef CONFIG_PM
>
> extern __init int s3c_pm_init(void);
> @@ -100,7 +102,7 @@ extern void s3c_pm_do_restore(struct sleep_save *ptr, int count);
> extern void s3c_pm_do_restore_core(struct sleep_save *ptr, int count);
>
> #ifdef CONFIG_PM
> -extern int s3c_irqext_wake(unsigned int irqno, unsigned int state);
> +extern int s3c_irqext_wake(struct irq_data *data, unsigned int state);
> extern int s3c24xx_irq_suspend(struct sys_device *dev, pm_message_t state);
> extern int s3c24xx_irq_resume(struct sys_device *dev);
> #else
> diff --git a/arch/arm/plat-samsung/pm.c b/arch/arm/plat-samsung/pm.c
> index 5bf3f2f..02d531f 100644
> --- a/arch/arm/plat-samsung/pm.c
> +++ b/arch/arm/plat-samsung/pm.c
> @@ -136,15 +136,15 @@ static void s3c_pm_restore_uarts(void) { }
> unsigned long s3c_irqwake_intmask = 0xffffffffL;
> unsigned long s3c_irqwake_eintmask = 0xffffffffL;
>
> -int s3c_irqext_wake(unsigned int irqno, unsigned int state)
> +int s3c_irqext_wake(struct irq_data *data, unsigned int state)
> {
> - unsigned long bit = 1L << IRQ_EINT_BIT(irqno);
> + unsigned long bit = 1L << IRQ_EINT_BIT(data->irq);
>
> if (!(s3c_irqwake_eintallow & bit))
> return -ENOENT;
>
> printk(KERN_INFO "wake %s for irq %d\n",
> - state ? "enabled" : "disabled", irqno);
> + state ? "enabled" : "disabled", data->irq);
>
> if (!state)
> s3c_irqwake_eintmask |= bit;
> --
> 1.7.1
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 15+ messages in thread* [PATCH 1/3] ARM: SAMSUNG: Convert s3c_irqext_wake() to new irq_ interrupt methods
2010-12-01 10:19 ` [PATCH 1/3] ARM: SAMSUNG: Convert s3c_irqext_wake() to new irq_ interrupt methods Lennert Buytenhek
@ 2010-12-01 11:08 ` Mark Brown
2010-12-01 11:45 ` Lennert Buytenhek
0 siblings, 1 reply; 15+ messages in thread
From: Mark Brown @ 2010-12-01 11:08 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Dec 01, 2010 at 11:19:02AM +0100, Lennert Buytenhek wrote:
> It would seem that this patch breaks s3c:
> ./mach-s3c64xx/irq-eint.c: .irq_set_wake = s3c_irqext_wake,
> ./plat-s3c24xx/irq.c: .irq_set_wake = s3c_irqext_wake
Could you please elaborate on what you mean by "s3c" and why you think
it has been broken?
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 1/3] ARM: SAMSUNG: Convert s3c_irqext_wake() to new irq_ interrupt methods
2010-12-01 11:08 ` Mark Brown
@ 2010-12-01 11:45 ` Lennert Buytenhek
2010-12-01 11:47 ` Mark Brown
0 siblings, 1 reply; 15+ messages in thread
From: Lennert Buytenhek @ 2010-12-01 11:45 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Dec 01, 2010 at 11:08:27AM +0000, Mark Brown wrote:
> > It would seem that this patch breaks s3c:
>
> > ./mach-s3c64xx/irq-eint.c: .irq_set_wake = s3c_irqext_wake,
> > ./plat-s3c24xx/irq.c: .irq_set_wake = s3c_irqext_wake
>
> Could you please elaborate on what you mean by "s3c" and why you think
> it has been broken?
My mistake, sorry -- I thought you had missed the two uses of
s3c_irqext_wake in ./mach-s3c64xx/irq-eint.c and ./plat-s3c24xx/irq.c,
but your patch does actually fix those up as well.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 1/3] ARM: SAMSUNG: Convert s3c_irqext_wake() to new irq_ interrupt methods
2010-11-25 15:18 [PATCH 1/3] ARM: SAMSUNG: Convert s3c_irqext_wake() to new irq_ interrupt methods Mark Brown
` (2 preceding siblings ...)
2010-12-01 10:19 ` [PATCH 1/3] ARM: SAMSUNG: Convert s3c_irqext_wake() to new irq_ interrupt methods Lennert Buytenhek
@ 2010-12-01 11:24 ` Kukjin Kim
2010-12-01 11:28 ` Kukjin Kim
4 siblings, 0 replies; 15+ messages in thread
From: Kukjin Kim @ 2010-12-01 11:24 UTC (permalink / raw)
To: linux-arm-kernel
Mark Brown wrote:
>
> Kernel 2.6.37 adds new interrupt methods which take a struct irq_data
> rather than an irq number. Begin converting Samsung platforms over to
> these methods by converting s3c_irqext_wake() with a simple textual
> substitution.
>
> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
> ---
> arch/arm/mach-s3c64xx/irq-eint.c | 2 +-
> arch/arm/mach-s5pv310/irq-eint.c | 2 +-
> arch/arm/plat-s3c24xx/irq.c | 2 +-
> arch/arm/plat-s5p/irq-eint.c | 4 ++--
> arch/arm/plat-samsung/include/plat/pm.h | 4 +++-
> arch/arm/plat-samsung/pm.c | 6 +++---
> 6 files changed, 11 insertions(+), 9 deletions(-)
>
> diff --git a/arch/arm/mach-s3c64xx/irq-eint.c b/arch/arm/mach-s3c64xx/irq-
> eint.c
> index 5682d6a..1a1aa5d 100644
> --- a/arch/arm/mach-s3c64xx/irq-eint.c
> +++ b/arch/arm/mach-s3c64xx/irq-eint.c
> @@ -145,7 +145,7 @@ static struct irq_chip s3c_irq_eint = {
> .mask_ack = s3c_irq_eint_maskack,
> .ack = s3c_irq_eint_ack,
> .set_type = s3c_irq_eint_set_type,
> - .set_wake = s3c_irqext_wake,
> + .irq_set_wake = s3c_irqext_wake,
> };
>
> /* s3c_irq_demux_eint
> diff --git a/arch/arm/mach-s5pv310/irq-eint.c b/arch/arm/mach-s5pv310/irq-
> eint.c
> index 5877503..f5a415e 100644
> --- a/arch/arm/mach-s5pv310/irq-eint.c
> +++ b/arch/arm/mach-s5pv310/irq-eint.c
> @@ -152,7 +152,7 @@ static struct irq_chip s5pv310_irq_eint = {
> .ack = s5pv310_irq_eint_ack,
> .set_type = s5pv310_irq_eint_set_type,
> #ifdef CONFIG_PM
> - .set_wake = s3c_irqext_wake,
> + .irq_set_wake = s3c_irqext_wake,
> #endif
> };
>
> diff --git a/arch/arm/plat-s3c24xx/irq.c b/arch/arm/plat-s3c24xx/irq.c
> index ad0d44e..91ce383 100644
> --- a/arch/arm/plat-s3c24xx/irq.c
> +++ b/arch/arm/plat-s3c24xx/irq.c
> @@ -238,7 +238,7 @@ static struct irq_chip s3c_irqext_chip = {
> .unmask = s3c_irqext_unmask,
> .ack = s3c_irqext_ack,
> .set_type = s3c_irqext_type,
> - .set_wake = s3c_irqext_wake
> + .irq_set_wake = s3c_irqext_wake
> };
>
> static struct irq_chip s3c_irq_eint0t4 = {
> diff --git a/arch/arm/plat-s5p/irq-eint.c b/arch/arm/plat-s5p/irq-eint.c
> index 752f1a6..f2f2e1c 100644
> --- a/arch/arm/plat-s5p/irq-eint.c
> +++ b/arch/arm/plat-s5p/irq-eint.c
> @@ -125,7 +125,7 @@ static struct irq_chip s5p_irq_eint = {
> .ack = s5p_irq_eint_ack,
> .set_type = s5p_irq_eint_set_type,
> #ifdef CONFIG_PM
> - .set_wake = s3c_irqext_wake,
> + .irq_set_wake = s3c_irqext_wake,
> #endif
> };
>
> @@ -194,7 +194,7 @@ static struct irq_chip s5p_irq_vic_eint = {
> .ack = s5p_irq_vic_eint_ack,
> .set_type = s5p_irq_eint_set_type,
> #ifdef CONFIG_PM
> - .set_wake = s3c_irqext_wake,
> + .irq_set_wake = s3c_irqext_wake,
> #endif
> };
>
> diff --git a/arch/arm/plat-samsung/include/plat/pm.h b/arch/arm/plat-
> samsung/include/plat/pm.h
> index 245836d..d9025e3 100644
> --- a/arch/arm/plat-samsung/include/plat/pm.h
> +++ b/arch/arm/plat-samsung/include/plat/pm.h
> @@ -15,6 +15,8 @@
> * management
> */
>
> +#include <linux/irq.h>
> +
> #ifdef CONFIG_PM
>
> extern __init int s3c_pm_init(void);
> @@ -100,7 +102,7 @@ extern void s3c_pm_do_restore(struct sleep_save *ptr,
int
> count);
> extern void s3c_pm_do_restore_core(struct sleep_save *ptr, int count);
>
> #ifdef CONFIG_PM
> -extern int s3c_irqext_wake(unsigned int irqno, unsigned int state);
> +extern int s3c_irqext_wake(struct irq_data *data, unsigned int state);
> extern int s3c24xx_irq_suspend(struct sys_device *dev, pm_message_t
state);
> extern int s3c24xx_irq_resume(struct sys_device *dev);
> #else
> diff --git a/arch/arm/plat-samsung/pm.c b/arch/arm/plat-samsung/pm.c
> index 5bf3f2f..02d531f 100644
> --- a/arch/arm/plat-samsung/pm.c
> +++ b/arch/arm/plat-samsung/pm.c
> @@ -136,15 +136,15 @@ static void s3c_pm_restore_uarts(void) { }
> unsigned long s3c_irqwake_intmask = 0xffffffffL;
> unsigned long s3c_irqwake_eintmask = 0xffffffffL;
>
> -int s3c_irqext_wake(unsigned int irqno, unsigned int state)
> +int s3c_irqext_wake(struct irq_data *data, unsigned int state)
> {
> - unsigned long bit = 1L << IRQ_EINT_BIT(irqno);
> + unsigned long bit = 1L << IRQ_EINT_BIT(data->irq);
>
> if (!(s3c_irqwake_eintallow & bit))
> return -ENOENT;
>
> printk(KERN_INFO "wake %s for irq %d\n",
> - state ? "enabled" : "disabled", irqno);
> + state ? "enabled" : "disabled", data->irq);
>
> if (!state)
> s3c_irqwake_eintmask |= bit;
> --
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] 15+ messages in thread* [PATCH 1/3] ARM: SAMSUNG: Convert s3c_irqext_wake() to new irq_ interrupt methods
2010-11-25 15:18 [PATCH 1/3] ARM: SAMSUNG: Convert s3c_irqext_wake() to new irq_ interrupt methods Mark Brown
` (3 preceding siblings ...)
2010-12-01 11:24 ` Kukjin Kim
@ 2010-12-01 11:28 ` Kukjin Kim
2010-12-01 11:33 ` Mark Brown
4 siblings, 1 reply; 15+ messages in thread
From: Kukjin Kim @ 2010-12-01 11:28 UTC (permalink / raw)
To: linux-arm-kernel
Mark Brown wrote:
>
> Kernel 2.6.37 adds new interrupt methods which take a struct irq_data
> rather than an irq number. Begin converting Samsung platforms over to
> these methods by converting s3c_irqext_wake() with a simple textual
> substitution.
And...as you know, need to convert s3c_irq_wake() to new irq_ interrupt
method also.
Ok...I will do it or will check Lennert Buytenhek's patch for it :-)
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] 15+ messages in thread* [PATCH 1/3] ARM: SAMSUNG: Convert s3c_irqext_wake() to new irq_ interrupt methods
2010-12-01 11:28 ` Kukjin Kim
@ 2010-12-01 11:33 ` Mark Brown
0 siblings, 0 replies; 15+ messages in thread
From: Mark Brown @ 2010-12-01 11:33 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Dec 01, 2010 at 08:28:22PM +0900, Kukjin Kim wrote:
> And...as you know, need to convert s3c_irq_wake() to new irq_ interrupt
> method also.
> Ok...I will do it or will check Lennert Buytenhek's patch for it :-)
Yup, there's a lot of other IRQ stuff in the various Samsung platforms
that can be converted - as you can see I was working through the various
interrupts one at a time. Lennart's patch covers everything but only
does the mechanical side of things.
^ permalink raw reply [flat|nested] 15+ messages in thread