mx31_3ds: revert 3ds debug board relate code
authorJason Wang <jason77.wang@gmail.com>
Thu, 24 Jun 2010 13:11:29 +0000 (21:11 +0800)
committerSascha Hauer <s.hauer@pengutronix.de>
Mon, 26 Jul 2010 12:29:20 +0000 (14:29 +0200)
Because we add a 3ds debug board support in mxc level, we remove
those redundant codes from board level.

Signed-off-by: Jason Wang <jason77.wang@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
arch/arm/mach-mx3/Kconfig
arch/arm/mach-mx3/mach-mx31_3ds.c

index a11112a..e063657 100644 (file)
@@ -67,6 +67,7 @@ config MACH_MX31LITE
 config MACH_MX31_3DS
        bool "Support MX31PDK (3DS)"
        select ARCH_MX31
+       select MXC_DEBUG_BOARD
        select IMX_HAVE_PLATFORM_IMX_UART
        select IMX_HAVE_PLATFORM_MXC_NAND
        select IMX_HAVE_PLATFORM_SPI_IMX
index d4d9e7a..6fe69e1 100644 (file)
@@ -18,7 +18,6 @@
 #include <linux/clk.h>
 #include <linux/irq.h>
 #include <linux/gpio.h>
-#include <linux/smsc911x.h>
 #include <linux/platform_device.h>
 #include <linux/mfd/mc13783.h>
 #include <linux/spi/spi.h>
@@ -34,6 +33,7 @@
 #include <asm/mach/map.h>
 #include <mach/common.h>
 #include <mach/iomux-mx3.h>
+#include <mach/3ds_debugboard.h>
 
 #include "devices-imx31.h"
 #include "devices.h"
@@ -253,174 +253,12 @@ static const struct imxuart_platform_data uart_pdata __initconst = {
        .flags = IMXUART_HAVE_RTSCTS,
 };
 
-/*
- * 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));
 }
 
 /*!
@@ -443,8 +281,9 @@ 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))
+               printk(KERN_WARNING "Init of the debugboard failed, all "
+                                   "devices on the board are unusable.\n");
 }
 
 static void __init mx31_3ds_timer_init(void)