Index: linux-2.6.16.13-ezx3/arch/arm/mach-pxa/Kconfig =================================================================== --- linux-2.6.16.13-ezx3.orig/arch/arm/mach-pxa/Kconfig 2006-05-16 17:38:18.000000000 +0200 +++ linux-2.6.16.13-ezx3/arch/arm/mach-pxa/Kconfig 2006-05-16 17:39:49.000000000 +0200 @@ -153,4 +153,8 @@ config PXA_EZX_PCAP tristate "SPI protocol driver for PCAP2" +config PXA_EZX_PCAP_EMU + depends on PXA_EZX_PCAP + tristate "PCAP2 EMU" + endif Index: linux-2.6.16.13-ezx3/arch/arm/mach-pxa/Makefile =================================================================== --- linux-2.6.16.13-ezx3.orig/arch/arm/mach-pxa/Makefile 2006-05-16 17:38:41.000000000 +0200 +++ linux-2.6.16.13-ezx3/arch/arm/mach-pxa/Makefile 2006-05-16 17:38:28.000000000 +0200 @@ -31,6 +31,7 @@ obj-$(CONFIG_PXA_SSP) += ssp.o obj-$(CONFIG_PXA_SPI) += spi.o obj-$(CONFIG_PXA_EZX_PCAP) += ezx-pcap.o +obj-$(CONFIG_PXA_EZX_PCAP_EMU) += pcap-emu.o ifeq ($(CONFIG_PXA27x),y) obj-$(CONFIG_PM) += standby.o Index: linux-2.6.16.13-ezx3/arch/arm/mach-pxa/pcap-emu.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ linux-2.6.16.13-ezx3/arch/arm/mach-pxa/pcap-emu.c 2006-05-16 17:40:34.000000000 +0200 @@ -0,0 +1,52 @@ +#include +#include +#include + + +static irqreturn_t emu_irq(int irq, void *data, struct pt_regs *regs) +{ + printk("emu_irq(%u) entered: ", irq); + + switch (irq) { + case EZX_IRQ_USB4V: + printk("usb 4v\n"); + break; + case EZX_IRQ_USB1V: + printk("usb 1v\n"); + break; + case EZX_IRQ_MIC: + printk("mic\n"); + break; + case EZX_IRQ_HEADJACK: + printk("headjack\n"); + break; + default: + printk("unknown\n"); + break; + } + + return IRQ_HANDLED; +} + +int init(void) +{ + request_irq(EZX_IRQ_USB4V, &emu_irq, SA_INTERRUPT, "usb 4v", NULL); + request_irq(EZX_IRQ_USB1V, &emu_irq, SA_INTERRUPT, "usb 1v", NULL); + request_irq(EZX_IRQ_MIC, &emu_irq, SA_INTERRUPT, "mic", NULL); + request_irq(EZX_IRQ_HEADJACK, &emu_irq, SA_INTERRUPT, "headjack", NULL); + + return 0; +} + +void fini(void) +{ + free_irq(EZX_IRQ_HEADJACK, NULL); + free_irq(EZX_IRQ_MIC, NULL); + free_irq(EZX_IRQ_USB1V, NULL); + free_irq(EZX_IRQ_USB4V, NULL); +} + +module_init(init); +module_exit(fini); + +MODULE_LICENSE("GPL");