mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v2 1/2] irq: Add EXPORT_SYMBOL_GPL to function of irq generic-chip
@ 2011-10-17  2:08 Nobuhiro Iwamatsu
  2011-10-17  2:08 ` [PATCH 2/2] irq: Add function pointer table for generic-chip Nobuhiro Iwamatsu
  2011-10-24 13:23 ` [PATCH v2 1/2] irq: Add EXPORT_SYMBOL_GPL to function of irq generic-chip Grant Likely
  0 siblings, 2 replies; 5+ messages in thread
From: Nobuhiro Iwamatsu @ 2011-10-17  2:08 UTC (permalink / raw)
  To: tglx; +Cc: linux-kernel, mingo, Nobuhiro Iwamatsu

Some functions of irq generic-chip is undefined, because
EXPORT_SYMBOL_GPL is not set to these.

-----
ERROR: "irq_setup_generic_chip" [drivers/gpio/gpio-pch.ko] undefined!
ERROR: "irq_alloc_generic_chip" [drivers/gpio/gpio-pch.ko] undefined!
ERROR: "irq_setup_generic_chip" [drivers/gpio/gpio-ml-ioh.ko] undefined!
ERROR: "irq_alloc_generic_chip" [drivers/gpio/gpio-ml-ioh.ko] undefined!
-----

This is revised that EXPORT_SYMBOL_GPL can be added and referred
to in functions.

Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
---

V2: Add EXPORT_SYMBOL_GPL to irq_setup_generic_chip, irq_alloc_generic_chip,
irq_setup_alt_chip and irq_remove_generic_chip only.

 kernel/irq/generic-chip.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/kernel/irq/generic-chip.c b/kernel/irq/generic-chip.c
index e38544d..6cb7613 100644
--- a/kernel/irq/generic-chip.c
+++ b/kernel/irq/generic-chip.c
@@ -211,6 +211,7 @@ irq_alloc_generic_chip(const char *name, int num_ct, unsigned int irq_base,
 	}
 	return gc;
 }
+EXPORT_SYMBOL_GPL(irq_alloc_generic_chip);
 
 /*
  * Separate lockdep class for interrupt chip which can nest irq_desc
@@ -258,6 +259,7 @@ void irq_setup_generic_chip(struct irq_chip_generic *gc, u32 msk,
 	}
 	gc->irq_cnt = i - gc->irq_base;
 }
+EXPORT_SYMBOL_GPL(irq_setup_generic_chip);
 
 /**
  * irq_setup_alt_chip - Switch to alternative chip
@@ -281,6 +283,7 @@ int irq_setup_alt_chip(struct irq_data *d, unsigned int type)
 	}
 	return -EINVAL;
 }
+EXPORT_SYMBOL_GPL(irq_setup_alt_chip);
 
 /**
  * irq_remove_generic_chip - Remove a chip
@@ -311,6 +314,7 @@ void irq_remove_generic_chip(struct irq_chip_generic *gc, u32 msk,
 		irq_modify_status(i, clr, set);
 	}
 }
+EXPORT_SYMBOL_GPL(irq_remove_generic_chip);
 
 #ifdef CONFIG_PM
 static int irq_gc_suspend(void)
-- 
1.7.7


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 2/2] irq: Add function pointer table for generic-chip
  2011-10-17  2:08 [PATCH v2 1/2] irq: Add EXPORT_SYMBOL_GPL to function of irq generic-chip Nobuhiro Iwamatsu
@ 2011-10-17  2:08 ` Nobuhiro Iwamatsu
  2011-10-17  9:00   ` Thomas Gleixner
  2011-10-24 13:23 ` [PATCH v2 1/2] irq: Add EXPORT_SYMBOL_GPL to function of irq generic-chip Grant Likely
  1 sibling, 1 reply; 5+ messages in thread
From: Nobuhiro Iwamatsu @ 2011-10-17  2:08 UTC (permalink / raw)
  To: tglx; +Cc: linux-kernel, mingo, Nobuhiro Iwamatsu

This adds the function table to access it with function pointer
by some functions providedd in generic-chip.
The driver who uses the function offered in generic-chip can use
this via this function table.

Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
---
 include/linux/irq.h       |   27 ++++++++++++++++-----------
 kernel/irq/generic-chip.c |   31 +++++++++++++++++++++----------
 2 files changed, 37 insertions(+), 21 deletions(-)

diff --git a/include/linux/irq.h b/include/linux/irq.h
index bff29c5..06ed817 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -638,6 +638,20 @@ struct irq_chip_type {
 	u32			type;
 };
 
+/* Generic chip callback functions table */
+struct irq_gc_functions {
+	void (* gc_noop)(struct irq_data *d);
+	void (* gc_mask_disable_reg)(struct irq_data *d);
+	void (* gc_mask_set_bit)(struct irq_data *d);
+	void (* gc_mask_clr_bit)(struct irq_data *d);
+	void (* gc_unmask_enable_reg)(struct irq_data *d);
+	void (* gc_ack_set_bit)(struct irq_data *d);
+	void (* gc_ack_clr_bit)(struct irq_data *d);
+	void (* gc_mask_disable_reg_and_ack)(struct irq_data *d);
+	void (* gc_eoi)(struct irq_data *d);
+	int (* gc_set_wake)(struct irq_data *d, unsigned int on);
+};
+
 /**
  * struct irq_chip_generic - Generic irq chip data structure
  * @lock:		Lock to protect register and cache data access
@@ -653,6 +667,7 @@ struct irq_chip_type {
  * @private:		Private data for non generic chip callbacks
  * @list:		List head for keeping track of instances
  * @chip_types:		Array of interrupt irq_chip_types
+ * @functions:		Generic chip callback functions
  *
  * Note, that irq_chip_generic can have multiple irq_chip_type
  * implementations which can be associated to a particular irq line of
@@ -674,6 +689,7 @@ struct irq_chip_generic {
 	void			*private;
 	struct list_head	list;
 	struct irq_chip_type	chip_types[0];
+	struct irq_gc_functions	functions;
 };
 
 /**
@@ -688,17 +704,6 @@ enum irq_gc_flags {
 	IRQ_GC_INIT_NESTED_LOCK		= 1 << 1,
 };
 
-/* Generic chip callback functions */
-void irq_gc_noop(struct irq_data *d);
-void irq_gc_mask_disable_reg(struct irq_data *d);
-void irq_gc_mask_set_bit(struct irq_data *d);
-void irq_gc_mask_clr_bit(struct irq_data *d);
-void irq_gc_unmask_enable_reg(struct irq_data *d);
-void irq_gc_ack_set_bit(struct irq_data *d);
-void irq_gc_ack_clr_bit(struct irq_data *d);
-void irq_gc_mask_disable_reg_and_ack(struct irq_data *d);
-void irq_gc_eoi(struct irq_data *d);
-int irq_gc_set_wake(struct irq_data *d, unsigned int on);
 
 /* Setup functions for irq_chip_generic */
 struct irq_chip_generic *
diff --git a/kernel/irq/generic-chip.c b/kernel/irq/generic-chip.c
index 6cb7613..8aec156 100644
--- a/kernel/irq/generic-chip.c
+++ b/kernel/irq/generic-chip.c
@@ -24,7 +24,7 @@ static inline struct irq_chip_regs *cur_regs(struct irq_data *d)
  * irq_gc_noop - NOOP function
  * @d: irq_data
  */
-void irq_gc_noop(struct irq_data *d)
+static void irq_gc_noop(struct irq_data *d)
 {
 }
 
@@ -35,7 +35,7 @@ void irq_gc_noop(struct irq_data *d)
  * Chip has separate enable/disable registers instead of a single mask
  * register.
  */
-void irq_gc_mask_disable_reg(struct irq_data *d)
+static void irq_gc_mask_disable_reg(struct irq_data *d)
 {
 	struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
 	u32 mask = 1 << (d->irq - gc->irq_base);
@@ -53,7 +53,7 @@ void irq_gc_mask_disable_reg(struct irq_data *d)
  * Chip has a single mask register. Values of this register are cached
  * and protected by gc->lock
  */
-void irq_gc_mask_set_bit(struct irq_data *d)
+static void irq_gc_mask_set_bit(struct irq_data *d)
 {
 	struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
 	u32 mask = 1 << (d->irq - gc->irq_base);
@@ -71,7 +71,7 @@ void irq_gc_mask_set_bit(struct irq_data *d)
  * Chip has a single mask register. Values of this register are cached
  * and protected by gc->lock
  */
-void irq_gc_mask_clr_bit(struct irq_data *d)
+static void irq_gc_mask_clr_bit(struct irq_data *d)
 {
 	struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
 	u32 mask = 1 << (d->irq - gc->irq_base);
@@ -89,7 +89,7 @@ void irq_gc_mask_clr_bit(struct irq_data *d)
  * Chip has separate enable/disable registers instead of a single mask
  * register.
  */
-void irq_gc_unmask_enable_reg(struct irq_data *d)
+static void irq_gc_unmask_enable_reg(struct irq_data *d)
 {
 	struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
 	u32 mask = 1 << (d->irq - gc->irq_base);
@@ -104,7 +104,7 @@ void irq_gc_unmask_enable_reg(struct irq_data *d)
  * irq_gc_ack_set_bit - Ack pending interrupt via setting bit
  * @d: irq_data
  */
-void irq_gc_ack_set_bit(struct irq_data *d)
+static void irq_gc_ack_set_bit(struct irq_data *d)
 {
 	struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
 	u32 mask = 1 << (d->irq - gc->irq_base);
@@ -118,7 +118,7 @@ void irq_gc_ack_set_bit(struct irq_data *d)
  * irq_gc_ack_clr_bit - Ack pending interrupt via clearing bit
  * @d: irq_data
  */
-void irq_gc_ack_clr_bit(struct irq_data *d)
+static void irq_gc_ack_clr_bit(struct irq_data *d)
 {
 	struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
 	u32 mask = ~(1 << (d->irq - gc->irq_base));
@@ -132,7 +132,7 @@ void irq_gc_ack_clr_bit(struct irq_data *d)
  * irq_gc_mask_disable_reg_and_ack- Mask and ack pending interrupt
  * @d: irq_data
  */
-void irq_gc_mask_disable_reg_and_ack(struct irq_data *d)
+static void irq_gc_mask_disable_reg_and_ack(struct irq_data *d)
 {
 	struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
 	u32 mask = 1 << (d->irq - gc->irq_base);
@@ -147,7 +147,7 @@ void irq_gc_mask_disable_reg_and_ack(struct irq_data *d)
  * irq_gc_eoi - EOI interrupt
  * @d: irq_data
  */
-void irq_gc_eoi(struct irq_data *d)
+static void irq_gc_eoi(struct irq_data *d)
 {
 	struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
 	u32 mask = 1 << (d->irq - gc->irq_base);
@@ -165,7 +165,7 @@ void irq_gc_eoi(struct irq_data *d)
  * configured in a separate register and the wakeup active state is
  * just stored in a bitmask.
  */
-int irq_gc_set_wake(struct irq_data *d, unsigned int on)
+static int irq_gc_set_wake(struct irq_data *d, unsigned int on)
 {
 	struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
 	u32 mask = 1 << (d->irq - gc->irq_base);
@@ -208,6 +208,17 @@ irq_alloc_generic_chip(const char *name, int num_ct, unsigned int irq_base,
 		gc->reg_base = reg_base;
 		gc->chip_types->chip.name = name;
 		gc->chip_types->handler = handler;
+
+		gc->functions.gc_noop = irq_gc_noop;
+		gc->functions.gc_mask_disable_reg = irq_gc_mask_disable_reg;
+		gc->functions.gc_mask_set_bit = irq_gc_mask_set_bit;
+		gc->functions.gc_mask_clr_bit = irq_gc_mask_clr_bit;
+		gc->functions.gc_unmask_enable_reg = irq_gc_unmask_enable_reg;
+		gc->functions.gc_ack_set_bit = irq_gc_ack_set_bit;
+		gc->functions.gc_ack_clr_bit = irq_gc_ack_clr_bit;
+		gc->functions.gc_mask_disable_reg_and_ack = irq_gc_mask_disable_reg_and_ack;
+		gc->functions.gc_eoi = irq_gc_eoi;
+		gc->functions.gc_set_wake = irq_gc_set_wake;
 	}
 	return gc;
 }
-- 
1.7.7


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2] irq: Add function pointer table for generic-chip
  2011-10-17  2:08 ` [PATCH 2/2] irq: Add function pointer table for generic-chip Nobuhiro Iwamatsu
@ 2011-10-17  9:00   ` Thomas Gleixner
  2011-10-20  3:44     ` Nobuhiro Iwamatsu
  0 siblings, 1 reply; 5+ messages in thread
From: Thomas Gleixner @ 2011-10-17  9:00 UTC (permalink / raw)
  To: Nobuhiro Iwamatsu; +Cc: linux-kernel, mingo

On Mon, 17 Oct 2011, Nobuhiro Iwamatsu wrote:

> This adds the function table to access it with function pointer
> by some functions providedd in generic-chip.
> The driver who uses the function offered in generic-chip can use
> this via this function table.
>  
> -/* Generic chip callback functions */
> -void irq_gc_noop(struct irq_data *d);
> -void irq_gc_mask_disable_reg(struct irq_data *d);
> -void irq_gc_mask_set_bit(struct irq_data *d);
> -void irq_gc_mask_clr_bit(struct irq_data *d);
> -void irq_gc_unmask_enable_reg(struct irq_data *d);
> -void irq_gc_ack_set_bit(struct irq_data *d);
> -void irq_gc_ack_clr_bit(struct irq_data *d);
> -void irq_gc_mask_disable_reg_and_ack(struct irq_data *d);
> -void irq_gc_eoi(struct irq_data *d);
> -int irq_gc_set_wake(struct irq_data *d, unsigned int on);

This breaks the world and some more. We have code which references
those functions directly.
  
> +		gc->functions.gc_noop = irq_gc_noop;
> +		gc->functions.gc_mask_disable_reg = irq_gc_mask_disable_reg;
> +		gc->functions.gc_mask_set_bit = irq_gc_mask_set_bit;
> +		gc->functions.gc_mask_clr_bit = irq_gc_mask_clr_bit;
> +		gc->functions.gc_unmask_enable_reg = irq_gc_unmask_enable_reg;
> +		gc->functions.gc_ack_set_bit = irq_gc_ack_set_bit;
> +		gc->functions.gc_ack_clr_bit = irq_gc_ack_clr_bit;
> +		gc->functions.gc_mask_disable_reg_and_ack = irq_gc_mask_disable_reg_and_ack;
> +		gc->functions.gc_eoi = irq_gc_eoi;
> +		gc->functions.gc_set_wake = irq_gc_set_wake;

Why do you want to add that to every instance of generic irq chip?
What I asked for is:

struct bla {
       .noop = irq_gc_noop,
       ...
};
EXPORT_SYMBOL_GPL(bla);

Now when we have this, we can run a coccinelle script over the tree
and convert all current users to use bla.fun instead of the direct
functions and then make those static.

Thanks,

	tglx


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2] irq: Add function pointer table for generic-chip
  2011-10-17  9:00   ` Thomas Gleixner
@ 2011-10-20  3:44     ` Nobuhiro Iwamatsu
  0 siblings, 0 replies; 5+ messages in thread
From: Nobuhiro Iwamatsu @ 2011-10-20  3:44 UTC (permalink / raw)
  To: Thomas Gleixner; +Cc: linux-kernel, mingo

Hi,

2011/10/17 Thomas Gleixner <tglx@linutronix.de>:
> On Mon, 17 Oct 2011, Nobuhiro Iwamatsu wrote:
>
>> This adds the function table to access it with function pointer
>> by some functions providedd in generic-chip.
>> The driver who uses the function offered in generic-chip can use
>> this via this function table.
>>
>> -/* Generic chip callback functions */
>> -void irq_gc_noop(struct irq_data *d);
>> -void irq_gc_mask_disable_reg(struct irq_data *d);
>> -void irq_gc_mask_set_bit(struct irq_data *d);
>> -void irq_gc_mask_clr_bit(struct irq_data *d);
>> -void irq_gc_unmask_enable_reg(struct irq_data *d);
>> -void irq_gc_ack_set_bit(struct irq_data *d);
>> -void irq_gc_ack_clr_bit(struct irq_data *d);
>> -void irq_gc_mask_disable_reg_and_ack(struct irq_data *d);
>> -void irq_gc_eoi(struct irq_data *d);
>> -int irq_gc_set_wake(struct irq_data *d, unsigned int on);
>
> This breaks the world and some more. We have code which references
> those functions directly.
>
>> +             gc->functions.gc_noop = irq_gc_noop;
>> +             gc->functions.gc_mask_disable_reg = irq_gc_mask_disable_reg;
>> +             gc->functions.gc_mask_set_bit = irq_gc_mask_set_bit;
>> +             gc->functions.gc_mask_clr_bit = irq_gc_mask_clr_bit;
>> +             gc->functions.gc_unmask_enable_reg = irq_gc_unmask_enable_reg;
>> +             gc->functions.gc_ack_set_bit = irq_gc_ack_set_bit;
>> +             gc->functions.gc_ack_clr_bit = irq_gc_ack_clr_bit;
>> +             gc->functions.gc_mask_disable_reg_and_ack = irq_gc_mask_disable_reg_and_ack;
>> +             gc->functions.gc_eoi = irq_gc_eoi;
>> +             gc->functions.gc_set_wake = irq_gc_set_wake;
>
> Why do you want to add that to every instance of generic irq chip?
> What I asked for is:
>
> struct bla {
>       .noop = irq_gc_noop,
>       ...
> };
> EXPORT_SYMBOL_GPL(bla);
>
> Now when we have this, we can run a coccinelle script over the tree
> and convert all current users to use bla.fun instead of the direct
> functions and then make those static.
>

OK, I misled about your point.
You do not make many symbols by EXPORT_SYMBOL,
genetic_chip makes the object with the function pointer, and you
suggest that each
driver uses the function defined in the object.
Is it correct?

I created new patch. could you check this?

-----

>From c8b422d8bf3d1575a48d62ac6f785e86b36a8709 Mon Sep 17 00:00:00 2001
From: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
Date: Wed, 19 Oct 2011 12:23:19 +0900
Subject: [PATCH] irq: Add function pointer table for generic-chip

This adds the function table to access it with function pointer
by some functions providedd in generic-chip.
The driver who uses the function offered in generic-chip can use
this via this function table.

For example, driver is used as follows.
...
chip.irq_ack = &irq_gc_function_tbl.ack_set_bit;
chip.irq_mask = &irq_gc_function_tbl.mask_clr_bit;
...

Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
---
 include/linux/irq.h       |   16 ++++++++++++++++
 kernel/irq/generic-chip.c |   18 ++++++++++++++++++
 2 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/include/linux/irq.h b/include/linux/irq.h
index bff29c5..8b271cc 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -700,6 +700,22 @@ void irq_gc_mask_disable_reg_and_ack(struct irq_data *d);
 void irq_gc_eoi(struct irq_data *d);
 int irq_gc_set_wake(struct irq_data *d, unsigned int on);

+/* Generic chip callback function table */
+struct irq_gc_functions {
+	void (* noop)(struct irq_data *d);
+	void (* mask_disable_reg)(struct irq_data *d);
+	void (* mask_set_bit)(struct irq_data *d);
+	void (* mask_clr_bit)(struct irq_data *d);
+	void (* unmask_enable_reg)(struct irq_data *d);
+	void (* ack_set_bit)(struct irq_data *d);
+	void (* ack_clr_bit)(struct irq_data *d);
+	void (* mask_disable_reg_and_ack)(struct irq_data *d);
+	void (* eoi)(struct irq_data *d);
+	int (* set_wake)(struct irq_data *d, unsigned int on);
+};
+
+extern struct irq_gc_functions irq_gc_function_tbl;
+
 /* Setup functions for irq_chip_generic */
 struct irq_chip_generic *
 irq_alloc_generic_chip(const char *name, int nr_ct, unsigned int irq_base,
diff --git a/kernel/irq/generic-chip.c b/kernel/irq/generic-chip.c
index 6cb7613..03df526 100644
--- a/kernel/irq/generic-chip.c
+++ b/kernel/irq/generic-chip.c
@@ -183,6 +183,24 @@ int irq_gc_set_wake(struct irq_data *d, unsigned int on)
 }

 /**
+ * irq generic chip user needs to access irq_gc_XXX function using
+ * irq_gc_function_tbl.
+ */
+struct irq_gc_functions irq_gc_function_tbl ={
+	.noop = irq_gc_noop,
+	.mask_disable_reg = irq_gc_mask_disable_reg,
+	.mask_set_bit = irq_gc_mask_set_bit,
+	.mask_clr_bit = irq_gc_mask_clr_bit,
+	.unmask_enable_reg = irq_gc_unmask_enable_reg,
+	.ack_set_bit = irq_gc_ack_set_bit,
+	.ack_clr_bit = irq_gc_ack_clr_bit,
+	.mask_disable_reg_and_ack = irq_gc_mask_disable_reg_and_ack,
+	.eoi = irq_gc_eoi,
+	.set_wake = irq_gc_set_wake,
+};
+EXPORT_SYMBOL_GPL(irq_gc_function_tbl);
+
+/**
  * irq_alloc_generic_chip - Allocate a generic chip and initialize it
  * @name:	Name of the irq chip
  * @num_ct:	Number of irq_chip_type instances associated with this
-- 
1.7.7

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 1/2] irq: Add EXPORT_SYMBOL_GPL to function of irq generic-chip
  2011-10-17  2:08 [PATCH v2 1/2] irq: Add EXPORT_SYMBOL_GPL to function of irq generic-chip Nobuhiro Iwamatsu
  2011-10-17  2:08 ` [PATCH 2/2] irq: Add function pointer table for generic-chip Nobuhiro Iwamatsu
@ 2011-10-24 13:23 ` Grant Likely
  1 sibling, 0 replies; 5+ messages in thread
From: Grant Likely @ 2011-10-24 13:23 UTC (permalink / raw)
  To: Nobuhiro Iwamatsu; +Cc: tglx, linux-kernel, mingo

On Mon, Oct 17, 2011 at 11:08:46AM +0900, Nobuhiro Iwamatsu wrote:
> Some functions of irq generic-chip is undefined, because
> EXPORT_SYMBOL_GPL is not set to these.
> 
> -----
> ERROR: "irq_setup_generic_chip" [drivers/gpio/gpio-pch.ko] undefined!
> ERROR: "irq_alloc_generic_chip" [drivers/gpio/gpio-pch.ko] undefined!
> ERROR: "irq_setup_generic_chip" [drivers/gpio/gpio-ml-ioh.ko] undefined!
> ERROR: "irq_alloc_generic_chip" [drivers/gpio/gpio-ml-ioh.ko] undefined!
> -----
> 
> This is revised that EXPORT_SYMBOL_GPL can be added and referred
> to in functions.
> 
> Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>

After getting verbal ack from Thomas, I've merged this via the gpio tree.

g.

> ---
> 
> V2: Add EXPORT_SYMBOL_GPL to irq_setup_generic_chip, irq_alloc_generic_chip,
> irq_setup_alt_chip and irq_remove_generic_chip only.
> 
>  kernel/irq/generic-chip.c |    4 ++++
>  1 files changed, 4 insertions(+), 0 deletions(-)
> 
> diff --git a/kernel/irq/generic-chip.c b/kernel/irq/generic-chip.c
> index e38544d..6cb7613 100644
> --- a/kernel/irq/generic-chip.c
> +++ b/kernel/irq/generic-chip.c
> @@ -211,6 +211,7 @@ irq_alloc_generic_chip(const char *name, int num_ct, unsigned int irq_base,
>  	}
>  	return gc;
>  }
> +EXPORT_SYMBOL_GPL(irq_alloc_generic_chip);
>  
>  /*
>   * Separate lockdep class for interrupt chip which can nest irq_desc
> @@ -258,6 +259,7 @@ void irq_setup_generic_chip(struct irq_chip_generic *gc, u32 msk,
>  	}
>  	gc->irq_cnt = i - gc->irq_base;
>  }
> +EXPORT_SYMBOL_GPL(irq_setup_generic_chip);
>  
>  /**
>   * irq_setup_alt_chip - Switch to alternative chip
> @@ -281,6 +283,7 @@ int irq_setup_alt_chip(struct irq_data *d, unsigned int type)
>  	}
>  	return -EINVAL;
>  }
> +EXPORT_SYMBOL_GPL(irq_setup_alt_chip);
>  
>  /**
>   * irq_remove_generic_chip - Remove a chip
> @@ -311,6 +314,7 @@ void irq_remove_generic_chip(struct irq_chip_generic *gc, u32 msk,
>  		irq_modify_status(i, clr, set);
>  	}
>  }
> +EXPORT_SYMBOL_GPL(irq_remove_generic_chip);
>  
>  #ifdef CONFIG_PM
>  static int irq_gc_suspend(void)
> -- 
> 1.7.7
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-10-24 13:23 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-10-17  2:08 [PATCH v2 1/2] irq: Add EXPORT_SYMBOL_GPL to function of irq generic-chip Nobuhiro Iwamatsu
2011-10-17  2:08 ` [PATCH 2/2] irq: Add function pointer table for generic-chip Nobuhiro Iwamatsu
2011-10-17  9:00   ` Thomas Gleixner
2011-10-20  3:44     ` Nobuhiro Iwamatsu
2011-10-24 13:23 ` [PATCH v2 1/2] irq: Add EXPORT_SYMBOL_GPL to function of irq generic-chip Grant Likely

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®