commit: http://blackfin.uclinux.org/git/?p=linux-kernel;a=commitdiff;h=0ae436e5749d3fea3bde31d732e97a72951c0919
branch: http://blackfin.uclinux.org/git/?p=linux-kernel;a=shortlog;h=refs/heads/trunk

Move ICC irq handler to ICC driver.

Signed-off-by: Sonic Zhang <[email protected]>
---
 arch/blackfin/mach-bf561/boards/ezkit.c |   28 +++++++++++++++++
 arch/blackfin/mach-bf561/icc.c          |   14 --------
 arch/blackfin/mach-bf609/boards/ezkit.c |   28 +++++++++++++++++
 arch/blackfin/mach-bf609/icc.c          |   16 ----------
 arch/blackfin/mach-common/Makefile      |    1 -
 arch/blackfin/mach-common/icc.c         |   51 -------------------------------
 6 files changed, 56 insertions(+), 82 deletions(-)

diff --git a/arch/blackfin/mach-bf561/boards/ezkit.c b/arch/blackfin/mach-bf561/boards/ezkit.c
index 8389788..a6c0309 100644
--- a/arch/blackfin/mach-bf561/boards/ezkit.c
+++ b/arch/blackfin/mach-bf561/boards/ezkit.c
@@ -329,6 +329,30 @@ static struct platform_device bfin_spi0_device = {
 };
 #endif
 
+#if defined(CONFIG_ICC)
+#define BFIN_ICC_NAME "icc"
+
+static struct resource bfin_icc_resources[] = {
+	{
+		.start = IRQ_SUPPLE_0,	/* ICC Low receive IRQ */
+		.end = IRQ_SUPPLE_0,
+		.flags = IORESOURCE_IRQ,
+	},
+	{
+		.start = IRQ_SUPPLE_1,	/* ICC High receive IRQ */
+		.end = IRQ_SUPPLE_1,
+		.flags = IORESOURCE_IRQ,
+	},
+};
+
+static struct platform_device bfin_icc_device = {
+	.name = BFIN_ICC_NAME,
+	.id = 0,
+	.num_resources = ARRAY_SIZE(bfin_icc_resources),
+	.resource = bfin_icc_resources,
+};
+#endif
+
 static struct spi_board_info bfin_spi_board_info[] __initdata = {
 #if defined(CONFIG_SND_BF5XX_SOC_AD183X) \
 	|| defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE)
@@ -568,6 +592,10 @@ static struct platform_device *ezkit_devices[] __initdata = {
 #endif
 #endif
 
+#if defined(CONFIG_ICC)
+	&bfin_icc_device,
+#endif
+
 #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
 	&bfin_device_gpiokeys,
 #endif
diff --git a/arch/blackfin/mach-bf561/icc.c b/arch/blackfin/mach-bf561/icc.c
index 4196309..3f6ebfe 100644
--- a/arch/blackfin/mach-bf561/icc.c
+++ b/arch/blackfin/mach-bf561/icc.c
@@ -3,20 +3,6 @@
 #include <linux/interrupt.h>
 #include <linux/delay.h>
 
-static const char supple0[] = "IRQ_SUPPLE_0";
-static const char supple1[] = "IRQ_SUPPLE_1";
-
-
-void platform_request_ipi(int irq, void *handler)
-{
-	int ret;
-	const char *name = (irq == IRQ_SUPPLE_0) ? supple0 : supple1;
-
-	ret = request_irq(irq, handler, IRQF_DISABLED | IRQF_PERCPU, name, handler);
-	if (ret)
-		panic("Cannot request %s for IPI service", name);
-}
-
 void platform_send_ipi(cpumask_t callmap, int irq)
 {
 	unsigned int cpu;
diff --git a/arch/blackfin/mach-bf609/boards/ezkit.c b/arch/blackfin/mach-bf609/boards/ezkit.c
index 3780bd7..19e30fa 100644
--- a/arch/blackfin/mach-bf609/boards/ezkit.c
+++ b/arch/blackfin/mach-bf609/boards/ezkit.c
@@ -1096,6 +1096,30 @@ static struct platform_device bfin_crypto_crc_device = {
 };
 #endif
 
+#if defined(CONFIG_ICC)
+#define BFIN_ICC_NAME "icc"
+
+static struct resource bfin_icc_resources[] = {
+	{
+		.start = IRQ_SOFT0,	/* ICC Low receive IRQ */
+		.end = IRQ_SOFT0,
+		.flags = IORESOURCE_IRQ,
+	},
+	{
+		.start = IRQ_SOFT2,	/* ICC High receive IRQ */
+		.end = IRQ_SOFT2,
+		.flags = IORESOURCE_IRQ,
+	},
+};
+
+static struct platform_device bfin_icc_device = {
+	.name = BFIN_ICC_NAME,
+	.id = 0,
+	.num_resources = ARRAY_SIZE(bfin_icc_resources),
+	.resource = bfin_icc_resources,
+};
+#endif
+
 #if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
 static const struct ad7877_platform_data bfin_ad7877_ts_info = {
 	.model			= 7877,
@@ -1419,6 +1443,10 @@ static struct platform_device *ezkit_devices[] __initdata = {
 	&bfin_crypto_crc_device,
 #endif
 
+#if defined(CONFIG_ICC)
+	&bfin_icc_device,
+#endif
+
 #if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
 	&bfin_device_gpiokeys,
 #endif
diff --git a/arch/blackfin/mach-bf609/icc.c b/arch/blackfin/mach-bf609/icc.c
index 3891e3a..f6738cb 100644
--- a/arch/blackfin/mach-bf609/icc.c
+++ b/arch/blackfin/mach-bf609/icc.c
@@ -2,23 +2,7 @@
 #include <linux/kernel.h>
 #include <linux/interrupt.h>
 #include <linux/delay.h>
-#include <asm/icc.h>
 #include <mach/pm.h>
-#include <asm/pm.h>
-
-char icc_low_name[] = "icc low irq";
-char icc_high_name[] = "icc high irq";
-
-void platform_request_ipi(int irq, void *handler)
-{
-	int ret;
-	const char *name = (irq == ICC_LOW_RECV) ? icc_low_name : icc_high_name;
-
-	ret = request_irq(irq, handler, IRQF_DISABLED | IRQF_PERCPU,
-				name, handler);
-	if (ret)
-		panic("Cannot request %s for IPI service", name);
-}
 
 void platform_send_ipi_cpu(unsigned int cpu, int irq)
 {
diff --git a/arch/blackfin/mach-common/Makefile b/arch/blackfin/mach-common/Makefile
index 200ed38..43963b2 100644
--- a/arch/blackfin/mach-common/Makefile
+++ b/arch/blackfin/mach-common/Makefile
@@ -15,4 +15,3 @@ obj-$(CONFIG_CPU_VOLTAGE) += dpmc.o
 obj-$(CONFIG_SMP)         += smp.o
 obj-$(CONFIG_BFIN_KERNEL_CLOCK) += clocks-init.o
 obj-$(CONFIG_BFIN_COREB) += coreb.o
-obj-$(CONFIG_ICC:m=y) += icc.o
diff --git a/arch/blackfin/mach-common/icc.c b/arch/blackfin/mach-common/icc.c
deleted file mode 100644
index 262b109..0000000
--- a/arch/blackfin/mach-common/icc.c
+++ /dev/null
@@ -1,51 +0,0 @@
-#include <linux/init.h>
-#include <linux/irq.h>
-#include <linux/kernel.h>
-#include <asm/icc.h>
-
-void icc_send_ipi_cpu(unsigned int cpu, int irq)
-{
-	platform_send_ipi_cpu(cpu, irq);
-}
-
-void icc_send_ipi_cpu_low(unsigned int cpu)
-{
-	platform_send_ipi_cpu(cpu, ICC_LOW_SEND);
-}
-
-void icc_send_ipi_cpu_high(unsigned int cpu)
-{
-	platform_send_ipi_cpu(cpu, ICC_HIGH_SEND);
-}
-
-void icc_clear_ipi_cpu(unsigned int cpu, int irq)
-{
-	platform_clear_ipi(cpu, irq);
-}
-
-irqreturn_t ipi_handler_int0(int irq, void *dev_instance)
-{
-	unsigned int cpu = blackfin_core_id();
-
-	platform_clear_ipi(cpu, ICC_LOW_RECV);
-
-	wakeup_icc_thread();
-	return IRQ_HANDLED;
-}
-
-irqreturn_t ipi_handler_int1(int irq, void *dev_instance)
-{
-	unsigned int cpu = blackfin_core_id();
-
-	platform_clear_ipi(cpu, ICC_HIGH_RECV);
-	return IRQ_HANDLED;
-}
-
-static int __init icc_prepare_cpus(void)
-{
-	platform_request_ipi(ICC_LOW_RECV, ipi_handler_int0);
-	platform_request_ipi(ICC_HIGH_RECV, ipi_handler_int1);
-	return 0;
-}
-
-late_initcall(icc_prepare_cpus);
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to