From: s.hauer@pengutronix.de (Sascha Hauer) Date: Wed, 16 Jun 2010 08:57:08 +0200 Subject: [PATCH 2/2] mx31_3ds: revert cpld debug board relate code In-Reply-To: <1276352707-8199-3-git-send-email-jason77.wang@gmail.com> References: <1276352707-8199-1-git-send-email-jason77.wang@gmail.com> <1276352707-8199-2-git-send-email-jason77.wang@gmail.com> <1276352707-8199-3-git-send-email-jason77.wang@gmail.com> Message-ID: <20100616065708.GJ20799@pengutronix.de> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org [Added Magnus to Cc] Magnus, As you are the original author of the removed code, can I have you Acked-by or Tested-by here? Sascha On Sat, Jun 12, 2010 at 10:25:07PM +0800, Jason Wang wrote: > Because we add a cpld debug board support in mxc level, we remove > those redudent codes from board level. > > Signed-off-by: Jason Wang > --- > arch/arm/mach-mx3/Kconfig | 1 + > arch/arm/mach-mx3/mach-mx31_3ds.c | 168 +---------------------- > arch/arm/plat-mxc/include/mach/board-mx31_3ds.h | 42 ------ > 3 files changed, 4 insertions(+), 207 deletions(-) > > diff --git a/arch/arm/mach-mx3/Kconfig b/arch/arm/mach-mx3/Kconfig > index 344753f..fd422cf 100644 > --- a/arch/arm/mach-mx3/Kconfig > +++ b/arch/arm/mach-mx3/Kconfig > @@ -58,6 +58,7 @@ config MACH_MX31LITE > config MACH_MX31_3DS > bool "Support MX31PDK (3DS)" > select ARCH_MX31 > + select MXC_DEBUG_BOARD > help > Include support for MX31PDK (3DS) platform. This includes specific > configurations for the board and its peripherals. > diff --git a/arch/arm/mach-mx3/mach-mx31_3ds.c b/arch/arm/mach-mx3/mach-mx31_3ds.c > index 58e5729..d8af726 100644 > --- a/arch/arm/mach-mx3/mach-mx31_3ds.c > +++ b/arch/arm/mach-mx3/mach-mx31_3ds.c > @@ -22,7 +22,6 @@ > #include > #include > #include > -#include > #include > #include > #include > @@ -38,6 +37,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -213,173 +213,11 @@ static struct imxuart_platform_data uart_pdata = { > }; > > /* > - * Support for the SMSC9217 on the Debug board. > - */ > - > -static struct smsc911x_platform_config smsc911x_config = { > - .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW, > - .irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL, > - .flags = SMSC911X_USE_16BIT | SMSC911X_FORCE_INTERNAL_PHY, > - .phy_interface = PHY_INTERFACE_MODE_MII, > -}; > - > -static struct resource smsc911x_resources[] = { > - { > - .start = LAN9217_BASE_ADDR, > - .end = LAN9217_BASE_ADDR + 0xff, > - .flags = IORESOURCE_MEM, > - }, { > - .start = EXPIO_INT_ENET, > - .end = EXPIO_INT_ENET, > - .flags = IORESOURCE_IRQ, > - }, > -}; > - > -static struct platform_device smsc911x_device = { > - .name = "smsc911x", > - .id = -1, > - .num_resources = ARRAY_SIZE(smsc911x_resources), > - .resource = smsc911x_resources, > - .dev = { > - .platform_data = &smsc911x_config, > - }, > -}; > - > -/* > - * Routines for the CPLD on the debug board. It contains a CPLD handling > - * LEDs, switches, interrupts for Ethernet. > - */ > - > -static void mx31_3ds_expio_irq_handler(uint32_t irq, struct irq_desc *desc) > -{ > - uint32_t imr_val; > - uint32_t int_valid; > - uint32_t expio_irq; > - > - imr_val = __raw_readw(CPLD_INT_MASK_REG); > - int_valid = __raw_readw(CPLD_INT_STATUS_REG) & ~imr_val; > - > - expio_irq = MXC_EXP_IO_BASE; > - for (; int_valid != 0; int_valid >>= 1, expio_irq++) { > - if ((int_valid & 1) == 0) > - continue; > - generic_handle_irq(expio_irq); > - } > -} > - > -/* > - * Disable an expio pin's interrupt by setting the bit in the imr. > - * @param irq an expio virtual irq number > - */ > -static void expio_mask_irq(uint32_t irq) > -{ > - uint16_t reg; > - uint32_t expio = MXC_IRQ_TO_EXPIO(irq); > - > - /* mask the interrupt */ > - reg = __raw_readw(CPLD_INT_MASK_REG); > - reg |= 1 << expio; > - __raw_writew(reg, CPLD_INT_MASK_REG); > -} > - > -/* > - * Acknowledge an expanded io pin's interrupt by clearing the bit in the isr. > - * @param irq an expanded io virtual irq number > - */ > -static void expio_ack_irq(uint32_t irq) > -{ > - uint32_t expio = MXC_IRQ_TO_EXPIO(irq); > - > - /* clear the interrupt status */ > - __raw_writew(1 << expio, CPLD_INT_RESET_REG); > - __raw_writew(0, CPLD_INT_RESET_REG); > - /* mask the interrupt */ > - expio_mask_irq(irq); > -} > - > -/* > - * Enable a expio pin's interrupt by clearing the bit in the imr. > - * @param irq a expio virtual irq number > - */ > -static void expio_unmask_irq(uint32_t irq) > -{ > - uint16_t reg; > - uint32_t expio = MXC_IRQ_TO_EXPIO(irq); > - > - /* unmask the interrupt */ > - reg = __raw_readw(CPLD_INT_MASK_REG); > - reg &= ~(1 << expio); > - __raw_writew(reg, CPLD_INT_MASK_REG); > -} > - > -static struct irq_chip expio_irq_chip = { > - .ack = expio_ack_irq, > - .mask = expio_mask_irq, > - .unmask = expio_unmask_irq, > -}; > - > -static int __init mx31_3ds_init_expio(void) > -{ > - int i; > - int ret; > - > - /* Check if there's a debug board connected */ > - if ((__raw_readw(CPLD_MAGIC_NUMBER1_REG) != 0xAAAA) || > - (__raw_readw(CPLD_MAGIC_NUMBER2_REG) != 0x5555) || > - (__raw_readw(CPLD_MAGIC_NUMBER3_REG) != 0xCAFE)) { > - /* No Debug board found */ > - return -ENODEV; > - } > - > - pr_info("i.MX31 3DS Debug board detected, rev = 0x%04X\n", > - __raw_readw(CPLD_CODE_VER_REG)); > - > - /* > - * Configure INT line as GPIO input > - */ > - ret = gpio_request(IOMUX_TO_GPIO(MX31_PIN_GPIO1_1), "sms9217-irq"); > - if (ret) > - pr_warning("could not get LAN irq gpio\n"); > - else > - gpio_direction_input(IOMUX_TO_GPIO(MX31_PIN_GPIO1_1)); > - > - /* Disable the interrupts and clear the status */ > - __raw_writew(0, CPLD_INT_MASK_REG); > - __raw_writew(0xFFFF, CPLD_INT_RESET_REG); > - __raw_writew(0, CPLD_INT_RESET_REG); > - __raw_writew(0x1F, CPLD_INT_MASK_REG); > - for (i = MXC_EXP_IO_BASE; > - i < (MXC_EXP_IO_BASE + MXC_MAX_EXP_IO_LINES); > - i++) { > - set_irq_chip(i, &expio_irq_chip); > - set_irq_handler(i, handle_level_irq); > - set_irq_flags(i, IRQF_VALID); > - } > - set_irq_type(EXPIO_PARENT_INT, IRQ_TYPE_LEVEL_LOW); > - set_irq_chained_handler(EXPIO_PARENT_INT, mx31_3ds_expio_irq_handler); > - > - return 0; > -} > - > -/* > - * This structure defines the MX31 memory map. > - */ > -static struct map_desc mx31_3ds_io_desc[] __initdata = { > - { > - .virtual = MX31_CS5_BASE_ADDR_VIRT, > - .pfn = __phys_to_pfn(MX31_CS5_BASE_ADDR), > - .length = MX31_CS5_SIZE, > - .type = MT_DEVICE, > - }, > -}; > - > -/* > * Set up static virtual mappings. > */ > static void __init mx31_3ds_map_io(void) > { > mx31_map_io(); > - iotable_init(mx31_3ds_io_desc, ARRAY_SIZE(mx31_3ds_io_desc)); > } > > /*! > @@ -402,8 +240,8 @@ static void __init mxc_board_init(void) > mx31_3ds_usbotg_init(); > mxc_register_device(&mxc_otg_udc_device, &usbotg_pdata); > > - if (!mx31_3ds_init_expio()) > - platform_device_register(&smsc911x_device); > + if (!mxc_expio_init(CS5_BASE_ADDR, EXPIO_PARENT_INT)) > + platform_device_register(&smsc_lan9217_device); > } > > static void __init mx31_3ds_timer_init(void) > diff --git a/arch/arm/plat-mxc/include/mach/board-mx31_3ds.h b/arch/arm/plat-mxc/include/mach/board-mx31_3ds.h > index da92933..c26d88d 100644 > --- a/arch/arm/plat-mxc/include/mach/board-mx31_3ds.h > +++ b/arch/arm/plat-mxc/include/mach/board-mx31_3ds.h > @@ -12,48 +12,6 @@ > #define __ASM_ARCH_MXC_BOARD_MX31_3DS_H__ > > /* Definitions for components on the Debug board */ > - > -/* Base address of CPLD controller on the Debug board */ > -#define DEBUG_BASE_ADDRESS CS5_IO_ADDRESS(CS5_BASE_ADDR) > - > -/* LAN9217 ethernet base address */ > -#define LAN9217_BASE_ADDR CS5_BASE_ADDR > - > -/* CPLD config and interrupt base address */ > -#define CPLD_ADDR (DEBUG_BASE_ADDRESS + 0x20000) > - > -/* LED switchs */ > -#define CPLD_LED_REG (CPLD_ADDR + 0x00) > -/* buttons */ > -#define CPLD_SWITCH_BUTTONS_REG (EXPIO_ADDR + 0x08) > -/* status, interrupt */ > -#define CPLD_INT_STATUS_REG (CPLD_ADDR + 0x10) > -#define CPLD_INT_MASK_REG (CPLD_ADDR + 0x38) > -#define CPLD_INT_RESET_REG (CPLD_ADDR + 0x20) > -/* magic word for debug CPLD */ > -#define CPLD_MAGIC_NUMBER1_REG (CPLD_ADDR + 0x40) > -#define CPLD_MAGIC_NUMBER2_REG (CPLD_ADDR + 0x48) > -/* CPLD code version */ > -#define CPLD_CODE_VER_REG (CPLD_ADDR + 0x50) > -/* magic word for debug CPLD */ > -#define CPLD_MAGIC_NUMBER3_REG (CPLD_ADDR + 0x58) > -/* module reset register */ > -#define CPLD_MODULE_RESET_REG (CPLD_ADDR + 0x60) > -/* CPU ID and Personality ID */ > -#define CPLD_MCU_BOARD_ID_REG (CPLD_ADDR + 0x68) > - > -/* CPLD IRQ line for external uart, external ethernet etc */ > #define EXPIO_PARENT_INT IOMUX_TO_IRQ(MX31_PIN_GPIO1_1) > > -#define MXC_EXP_IO_BASE (MXC_BOARD_IRQ_START) > -#define MXC_IRQ_TO_EXPIO(irq) ((irq) - MXC_EXP_IO_BASE) > - > -#define EXPIO_INT_ENET (MXC_EXP_IO_BASE + 0) > -#define EXPIO_INT_XUART_A (MXC_EXP_IO_BASE + 1) > -#define EXPIO_INT_XUART_B (MXC_EXP_IO_BASE + 2) > -#define EXPIO_INT_BUTTON_A (MXC_EXP_IO_BASE + 3) > -#define EXPIO_INT_BUTTON_B (MXC_EXP_IO_BASE + 4) > - > -#define MXC_MAX_EXP_IO_LINES 16 > - > #endif /* __ASM_ARCH_MXC_BOARD_MX31_3DS_H__ */ > -- > 1.5.6.5 > > -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |