From: lilja.magnus@gmail.com (Magnus Lilja)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/2] mx31_3ds: revert cpld debug board relate code
Date: Wed, 16 Jun 2010 22:36:31 +0200 [thread overview]
Message-ID: <4C1935CF.3090108@gmail.com> (raw)
In-Reply-To: <20100616065708.GJ20799@pengutronix.de>
Sascha,
On 2010-06-16 08:57, Sascha Hauer wrote:
>
> [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?
Yes, I added the debugboard support. I've looked at the patches and the restructure looks ok.
The only thing that really differs is the interrupt function but I don't know which variant is more correct. I haven't had a chance to test the patches yet, perhaps in a couple of days.
Acked-by: Magnus Lilja <lilja.magnus@gmail.com>
/Magnus
>
> 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 <jason77.wang@gmail.com>
>> ---
>> 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 <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>
>> @@ -38,6 +37,7 @@
>> #include <asm/mach/map.h>
>> #include <mach/common.h>
>> #include <mach/board-mx31_3ds.h>
>> +#include <mach/cpld_debugboard.h>
>> #include <mach/imx-uart.h>
>> #include <mach/iomux-mx3.h>
>> #include <mach/mxc_nand.h>
>> @@ -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
>>
>>
>
next prev parent reply other threads:[~2010-06-16 20:36 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-12 14:25 [PATCH 0/2]Add mxc common CPLD debugboard support Jason Wang
2010-06-12 14:25 ` [PATCH 1/2] mxc: add common debug board for 3-stack platforms Jason Wang
2010-06-12 14:25 ` [PATCH 2/2] mx31_3ds: revert cpld debug board relate code Jason Wang
2010-06-16 6:57 ` Sascha Hauer
2010-06-16 20:36 ` Magnus Lilja [this message]
2010-06-16 6:55 ` [PATCH 1/2] mxc: add common debug board for 3-stack platforms Sascha Hauer
2010-06-17 13:37 ` jason
2010-06-18 14:06 ` jason
2010-06-21 7:11 ` Sascha Hauer
2010-06-22 13:08 ` jason
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4C1935CF.3090108@gmail.com \
--to=lilja.magnus@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.