···55 *66 * Bits taken from various places.77 *88- * Copyright (C) 2007 Compulab, Ltd.88+ * Copyright (C) 2007, 2008 Compulab, Ltd.99 * Mike Rapoport <mike@compulab.co.il>1010 *1111 * This program is free software; you can redistribute it and/or modify···1919#include <linux/device.h>2020#include <linux/platform_device.h>2121#include <linux/irq.h>2222+#include <linux/gpio.h>22232324#include <asm/mach/pci.h>2424-#include <asm/arch/cm-x270.h>2525#include <asm/arch/pxa-regs.h>2626-#include <asm/arch/pxa2xx-gpio.h>2726#include <asm/mach-types.h>28272928#include <asm/hardware/it8152.h>30293131-unsigned long it8152_base_address = CMX270_IT8152_VIRT;3030+unsigned long it8152_base_address;3131+static int cmx270_it8152_irq_gpio;32323333/*3434 * Only first 64MB of memory can be accessed via PCI.···4242 unsigned int sz = SZ_64M >> PAGE_SHIFT;43434444 if (machine_is_armcore()) {4545- pr_info("Adjusting zones for CM-x270\n");4545+ pr_info("Adjusting zones for CM-X270\n");46464747 /*4848 * Only adjust if > 64M on current system···6060static void cmx270_it8152_irq_demux(unsigned int irq, struct irq_desc *desc)6161{6262 /* clear our parent irq */6363- GEDR(GPIO_IT8152_IRQ) = GPIO_bit(GPIO_IT8152_IRQ);6363+ GEDR(cmx270_it8152_irq_gpio) = GPIO_bit(cmx270_it8152_irq_gpio);64646565 it8152_irq_demux(irq, desc);6666}67676868-void __cmx270_pci_init_irq(void)6868+void __cmx270_pci_init_irq(int irq_gpio)6969{7070 it8152_init_irq();7171- pxa_gpio_mode(IRQ_TO_GPIO(GPIO_IT8152_IRQ));7272- set_irq_type(IRQ_GPIO(GPIO_IT8152_IRQ), IRQT_RISING);73717474- set_irq_chained_handler(IRQ_GPIO(GPIO_IT8152_IRQ),7575- cmx270_it8152_irq_demux);7272+ cmx270_it8152_irq_gpio = irq_gpio;7373+7474+ set_irq_type(gpio_to_irq(irq_gpio), IRQT_RISING);7575+7676+ set_irq_chained_handler(gpio_to_irq(irq_gpio), cmx270_it8152_irq_demux);7677}77787879#ifdef CONFIG_PM···116115117116 /*118117 Here comes the ugly part. The routing is baseboard specific,119119- but defining a platform for each possible base of CM-x270 is120120- unrealistic. Here we keep mapping for ATXBase and SB-x270.118118+ but defining a platform for each possible base of CM-X270 is119119+ unrealistic. Here we keep mapping for ATXBase and SB-X270.121120 */122121 /* ATXBASE PCI slot */123122 if (slot == 7)
+7-7
arch/arm/mach-pxa/cm-x270-pci.h
···11-extern void __cmx270_pci_init_irq(void);11+extern void __cmx270_pci_init_irq(int irq_gpio);22extern void __cmx270_pci_suspend(void);33extern void __cmx270_pci_resume(void);4455#ifdef CONFIG_PCI66-#define cmx270_pci_init_irq __cmx270_pci_init_irq77-#define cmx270_pci_suspend __cmx270_pci_suspend88-#define cmx270_pci_resume __cmx270_pci_resume66+#define cmx270_pci_init_irq(x) __cmx270_pci_init_irq(x)77+#define cmx270_pci_suspend(x) __cmx270_pci_suspend(x)88+#define cmx270_pci_resume(x) __cmx270_pci_resume(x)99#else1010-#define cmx270_pci_init_irq() do {} while (0)1111-#define cmx270_pci_suspend() do {} while (0)1212-#define cmx270_pci_resume() do {} while (0)1010+#define cmx270_pci_init_irq(x) do {} while (0)1111+#define cmx270_pci_suspend(x) do {} while (0)1212+#define cmx270_pci_resume(x) do {} while (0)1313#endif