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
