summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Waters <justin.waters@timesys.com>2008-05-21 15:58:31 -0400
committerJustin Waters <justin.waters@timesys.com>2008-05-21 16:12:18 -0400
commit18cd84a7003f7a589b70ed55e0184a890a5ab75f (patch)
treeb76209b68f9f41e0eb97417d3e9f41183c3b7e7f
parent9582307616e03ad227b678c07702421753a40419 (diff)
MX27LITE: Miscellaneous code cleanup
There were a lot of carryovers from the MX27 ADS code that were either useless or just plain wrong. This commit gets rid of these issues. Signed-off-by: Justin Waters <justin.waters@timesys.com>
-rw-r--r--arch/arm/mach-mx27/board-mx27lite.h98
-rw-r--r--arch/arm/mach-mx27/mx27lite.c432
-rw-r--r--arch/arm/mach-mx27/mx27lite_gpio.c353
3 files changed, 307 insertions, 576 deletions
diff --git a/arch/arm/mach-mx27/board-mx27lite.h b/arch/arm/mach-mx27/board-mx27lite.h
new file mode 100644
index 000000000000..f7ca41d0388d
--- /dev/null
+++ b/arch/arm/mach-mx27/board-mx27lite.h
@@ -0,0 +1,98 @@
+/*
+ * arch/arm/mach-mx27/board-mx27lite.h
+ *
+ * MX27LITE Board Configuration Options
+ *
+ * This file contains all the board level configuration options.
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+#ifndef __BOARD_MX27LITE_H__
+#define __BOARD_MX27LITE_H__
+
+/*
+ * Include Files
+ */
+#include <asm/arch/mxc_uart.h>
+
+/*
+ * MXC UART EVB board level configurations
+ *
+ * UARTx_MODE:
+ * This define specifies if the UART port is configured to be in DTE or
+ * DCE mode. There exists a define like this for each UART port. Valid
+ * values that can be used are MODE_DTE or MODE_DCE.
+ *
+ * UARTx_IR:
+ * This define specifies if the UART is to be used for IRDA. There exists a
+ * define like this for each UART port. Valid values that can be used are
+ * IRDA or NO_IRDA.
+ *
+ * UARTx_ENABLED:
+ * This define is used to enable or disable a particular UART port. If
+ * disabled, the UART will not be registered in the file system and the user
+ * will not be able to access it. There exists a define like this for each UART
+ * port. Specify a value of 1 to enable the UART and 0 to disable it.
+ *
+ */
+#define MXC_IRDA_TX_INV 0 /* Select if Irda tx path is inverting */
+#define MXC_IRDA_RX_INV 0 /* Select if Irda rx path is inverting */
+
+/* UART 1 configuration */
+#define UART1_MODE MODE_DCE
+#define UART1_IR NO_IRDA
+#define UART1_ENAB 1
+/* UART 2 configuration */
+#define UART2_MODE MODE_DCE
+#define UART2_IR NO_IRDA
+#define UART2_ENABLED 1
+/* UART 3 configuration */
+#define UART3_MODE MODE_DCE
+#define UART3_IR IRDA
+#define UART3_ENABLED 1
+/* UART 4 configuration */
+#define UART4_MODE MODE_DTE
+#define UART4_IR NO_IRDA
+#define UART4_ENABLED 0 /* UART 4 shares pins with ATA */
+/* UART 5 configuration */
+#define UART5_MODE MODE_DTE
+#define UART5_IR NO_IRDA
+#define UART5_ENABLED 1
+/* UART 6 configuration */
+#define UART6_MODE MODE_DTE
+#define UART6_IR NO_IRDA
+#define UART6_ENABLED 1
+
+#define MXC_LL_UART_PADDR UART1_BASE_ADDR
+#define MXC_LL_UART_VADDR AIPI_IO_ADDRESS(UART1_BASE_ADDR)
+
+/*
+ * MXC MMC/SD Card board level configurations
+ */
+#ifndef __ASSEMBLY__
+/*
+ * Enumerations for SD cards and memory stick card. This corresponds to
+ * the card EN bits in the IMR: SD1_EN | MS_EN | SD3_EN | SD2_EN.
+ */
+enum mxc_card_no {
+ MXC_CARD_SD2 = 0,
+ MXC_CARD_SD3,
+ MXC_CARD_MS,
+ MXC_CARD_SD1,
+ MXC_CARD_MIN = MXC_CARD_SD2,
+ MXC_CARD_MAX = MXC_CARD_SD1,
+};
+#endif
+
+/*
+ * MXC PMIC/Atlas Chip Configuration
+ */
+#define MXC_PMIC_INT_LINE IOMUX_TO_IRQ(MX27_PIN_TOUT)
+
+#endif /* __BOARD_MX27LITE_H__ */
diff --git a/arch/arm/mach-mx27/mx27lite.c b/arch/arm/mach-mx27/mx27lite.c
index 45009c2c3f79..ab5098736c25 100644
--- a/arch/arm/mach-mx27/mx27lite.c
+++ b/arch/arm/mach-mx27/mx27lite.c
@@ -24,16 +24,14 @@
#include <linux/init.h>
#include <linux/ioport.h>
#include <linux/device.h>
-#include <linux/input.h>
+#include <linux/platform_device.h>
#include <linux/nodemask.h>
#include <linux/clk.h>
#include <linux/spi/spi.h>
-#include <linux/serial_8250.h>
#if defined(CONFIG_MTD) || defined(CONFIG_MTD_MODULE)
#include <linux/mtd/mtd.h>
#include <linux/mtd/map.h>
#include <linux/mtd/partitions.h>
-
#include <asm/mach/flash.h>
#endif
@@ -45,12 +43,11 @@
#include <asm/mach/irq.h>
#include <asm/arch/memory.h>
#include <asm/arch/gpio.h>
-#include <asm/mach/keypad.h>
#include "gpio_mux.h"
-#include "board-mx27ads.h"
+#include "board-mx27lite.h"
/*!
- * @file mach-mx27/mx27ads.c
+ * @file mach-mx27/mx27lite.c
* @brief This file contains the board specific initialization routines.
*
* @ingroup MSL_MX27
@@ -65,8 +62,8 @@ extern struct sys_timer mxc_timer;
extern void __init early_console_setup(char *);
static char command_line[COMMAND_LINE_SIZE];
-static int mxc_card_status;
-int mxc_board_is_ads = 1;
+int mxc_board_is_ads = 0;
+EXPORT_SYMBOL(mxc_board_is_ads);
static void mxc_nop_release(struct device *dev)
{
@@ -78,85 +75,10 @@ unsigned long board_get_ckih_rate(void)
return 26000000;
}
-#if defined(CONFIG_CS89x0) || defined(CONFIG_CS89x0_MODULE)
-/*! Null terminated portlist used to probe for the CS8900A device on ISA Bus
- * Add 3 to reset the page window before probing (fixes eth probe when deployed
- * using nand_boot)
- */
-unsigned int netcard_portlist[] = { CS8900A_BASE_ADDRESS + 3, 0 };
-
-EXPORT_SYMBOL(netcard_portlist);
-/*!
- * The CS8900A has 4 IRQ pins, which is software selectable, CS8900A interrupt
- * pin 0 is used for interrupt generation.
- */
-unsigned int cs8900_irq_map[] = { CS8900AIRQ, 0, 0, 0 };
-
-EXPORT_SYMBOL(cs8900_irq_map);
-#endif
-
-#if defined(CONFIG_FEC) || defined(CONFIG_FEC_MODULE)
-unsigned int expio_intr_fec = MXC_EXP_IO_BASE + 7;
-
-EXPORT_SYMBOL(expio_intr_fec);
-#endif
-
-#if defined(CONFIG_KEYBOARD_MXC) || defined(CONFIG_KEYBOARD_MXC_MODULE)
-
-/*!
- * This array is used for mapping mx27 ADS keypad scancodes to input keyboard
- * keycodes.
- */
-static u16 mxckpd_keycodes[] = {
- KEY_KP9, KEY_LEFTSHIFT, KEY_0, KEY_KPASTERISK, KEY_RECORD, KEY_POWER,
- KEY_KP8, KEY_9, KEY_8, KEY_7, KEY_KP5, KEY_VOLUMEDOWN,
- KEY_KP7, KEY_6, KEY_5, KEY_4, KEY_KP4, KEY_VOLUMEUP,
- KEY_KP6, KEY_3, KEY_2, KEY_1, KEY_KP3, KEY_DOWN,
- KEY_BACK, KEY_RIGHT, KEY_ENTER, KEY_LEFT, KEY_HOME, KEY_KP2,
- KEY_END, KEY_F2, KEY_UP, KEY_F1, KEY_F4, KEY_KP1,
-};
-
-static struct keypad_data evb_6_by_6_keypad = {
- .rowmax = 6,
- .colmax = 6,
- .irq = INT_KPP,
- .learning = 0,
- .delay = 2,
- .matrix = mxckpd_keycodes,
-};
-
-static struct resource mxc_kpp_resources[] = {
- [0] = {
- .start = INT_KPP,
- .end = INT_KPP,
- .flags = IORESOURCE_IRQ,
- }
-};
-
-/* mxc keypad driver */
-static struct platform_device mxc_keypad_device = {
- .name = "mxc_keypad",
- .id = 0,
- .num_resources = ARRAY_SIZE(mxc_kpp_resources),
- .resource = mxc_kpp_resources,
- .dev = {
- .release = mxc_nop_release,
- .platform_data = &evb_6_by_6_keypad,
- },
-};
-
-static void mxc_init_keypad(void)
-{
- (void)platform_device_register(&mxc_keypad_device);
-}
-#else
-static inline void mxc_init_keypad(void)
-{
-}
-#endif
-
-/* MTD NOR flash */
+/* --------------------------------------------------------------------
+ * MTD NOR Flash
+ * -------------------------------------------------------------------- */
#if defined(CONFIG_MTD_MXC) || defined(CONFIG_MTD_MXC_MODULE)
static struct mtd_partition mxc_nor_partitions[] = {
@@ -205,18 +127,20 @@ static struct platform_device mxc_nor_mtd_device = {
.resource = &mxc_flash_resource,
};
-static void mxc_init_nor_mtd(void)
+static void __init mxc_init_nor_mtd(void)
{
(void)platform_device_register(&mxc_nor_mtd_device);
}
#else
-static void mxc_init_nor_mtd(void)
+static void __init mxc_init_nor_mtd(void)
{
}
#endif
-/* MTD NAND flash */
+/* --------------------------------------------------------------------
+ * MTD NAND Flash
+ * -------------------------------------------------------------------- */
#if defined(CONFIG_MTD_NAND_MXC) || defined(CONFIG_MTD_NAND_MXC_MODULE)
static struct mtd_partition mxc_nand_partitions[4] = {
@@ -253,17 +177,22 @@ static struct platform_device mxc_nand_mtd_device = {
},
};
-static void mxc_init_nand_mtd(void)
+static void __init mxc_init_nand_mtd(void)
{
(void)platform_device_register(&mxc_nand_mtd_device);
}
#else
-static inline void mxc_init_nand_mtd(void)
+static void __init mxc_init_nand_mtd(void)
{
}
#endif
+
+/* --------------------------------------------------------------------
+ * LCD
+ * -------------------------------------------------------------------- */
#if defined(CONFIG_FB_MXC_SYNC_PANEL) || defined(CONFIG_FB_MXC_SYNC_PANEL_MODULE)
+
static const char fb_default_mode[] = "Sharp-QVGA";
/* mxc lcd driver */
@@ -277,16 +206,20 @@ static struct platform_device mxc_fb_device = {
},
};
-static void mxc_init_fb(void)
+static void __init mxc_init_fb(void)
{
(void)platform_device_register(&mxc_fb_device);
}
#else
-static inline void mxc_init_fb(void)
+static void __init mxc_init_fb(void)
{
}
#endif
+
+/* --------------------------------------------------------------------
+ * SPI
+ * -------------------------------------------------------------------- */
static struct spi_board_info mxc_spi_board_info[] __initdata = {
{
.modalias = "pmic_spi",
@@ -297,18 +230,11 @@ static struct spi_board_info mxc_spi_board_info[] __initdata = {
},
};
-#if 0
-#define MXC_CARD_DEBUG
-#endif
-
-static const int pbc_card_bit[4][3] = {
- /* BSTAT IMR enable IMR removal */
- {PBC_BSTAT_SD2_DET, PBC_INTR_SD2_EN, PBC_INTR_SD2_R_EN},
- {PBC_BSTAT_SD3_DET, PBC_INTR_SD3_EN, PBC_INTR_SD3_R_EN},
- {PBC_BSTAT_MS_DET, PBC_INTR_MS_EN, PBC_INTR_MS_R_EN},
- {PBC_BSTAT_SD1_DET, PBC_INTR_SD1_EN, PBC_INTR_SD1_R_EN},
-};
+/* --------------------------------------------------------------------
+ * MMC/SD
+ * -------------------------------------------------------------------- */
+#if defined(CONFIG_MMC_MXC) || defined(CONFIG_MMC_MXC_MODULE)
/*!
* Check if a SD card has been inserted or not.
*
@@ -322,6 +248,7 @@ int mxc_card_detected(enum mxc_card_no num)
status = __raw_readw(PBC_BSTAT1_REG);
return ((status & MXC_BSTAT_BIT(num)) == 0);
}
+EXPORT_SYMBOL(mxc_card_detected);
/*
* Check if there is any state change by reading the IMR register and the
@@ -357,271 +284,14 @@ static u32 mxc_card_state_changed(u32 mask, u32 s0, u32 s1)
retval |= 1 << i;
}
}
-#ifdef MXC_CARD_DEBUG
- printk(KERN_INFO "\nmask=%x, s0=%x, s1=%x\n", mask, s0, s1);
- printk(KERN_INFO "retval=%x, stat=%x\n", retval, stat);
-#endif
return retval;
}
-
-/*!
- * Interrupt handler for the expio (CPLD) to deal with interrupts from
- * FEC, external UART, CS8900 Ethernet and SD cards, etc.
- */
-static void mxc_expio_irq_handler(u32 irq, struct irq_desc *desc)
-{
- u32 imr, card_int, i;
- u32 int_valid;
- u32 expio_irq;
- u32 stat = __raw_readw(PBC_BSTAT1_REG);
-
- desc->chip->mask(irq); /* irq = gpio irq number */
-
- imr = __raw_readw(PBC_INTMASK_SET_REG);
-
- card_int = mxc_card_state_changed(imr, mxc_card_status, stat);
- mxc_card_status = stat;
-
- if (card_int != 0) {
- for (i = MXC_CARD_MIN; i <= MXC_CARD_MAX; i++) {
- if ((card_int & (1 << i)) != 0) {
- pr_debug("card no %d state changed\n", i);
- }
- }
- }
-
- /* Bits defined in PBC_INTSTATUS_REG at 0x2C */
- int_valid = __raw_readw(PBC_INTSTATUS_REG) & imr;
- /* combined with the card interrupt valid information */
- int_valid = (int_valid & 0x0F8E) | (card_int << PBC_INTR_SD2_EN_BIT);
-
- if (unlikely(!int_valid)) {
- pr_debug("\nEXPIO: Spurious interrupt:0x%0x\n\n", int_valid);
- pr_debug("CPLD IMR(0x38)=0x%x, BSTAT1(0x28)=0x%x\n", imr, stat);
- goto out;
- }
-
- expio_irq = MXC_EXP_IO_BASE;
- for (; int_valid != 0; int_valid >>= 1, expio_irq++) {
- struct irq_desc *d;
- if ((int_valid & 1) == 0)
- continue;
- d = irq_desc + expio_irq;
- if (unlikely(!(d->handle_irq))) {
- printk(KERN_ERR "\nEXPIO irq: %d unhandeled\n",
- expio_irq);
- BUG(); /* oops */
- }
- d->handle_irq(expio_irq, d);
- }
-
- out:
- desc->chip->ack(irq);
- desc->chip->unmask(irq);
-}
-
-#ifdef MXC_CARD_DEBUG
-
-static irqreturn_t mxc_sd_test_handler(int irq, void *desc)
-{
- int s = -1;
-
- printk(KERN_INFO "%s(irq=%d) for ", __FUNCTION__, irq);
- if (irq == EXPIO_INT_SD1_EN) {
- printk(KERN_INFO "SD1");
- s = MXC_CARD_SD1;
- } else if (irq == EXPIO_INT_SD2_EN) {
- printk(KERN_INFO "SD2");
- s = MXC_CARD_SD2;
- } else if (irq == EXPIO_INT_SD3_EN) {
- printk(KERN_INFO "SD3");
- s = MXC_CARD_SD3;
- } else if (irq == EXPIO_INT_MS_EN) {
- printk(KERN_INFO "MS");
- s = MXC_CARD_MS;
- } else {
- printk(KERN_INFO "None!!!!");
- }
- if (mxc_card_detected(s)) {
- printk(KERN_INFO " inserted\n");
- } else {
- printk(KERN_INFO " removed\n");
- }
-
- return IRQ_HANDLED;
-}
-#endif /* MXC_CARD_DEBUG */
-
-/*
- * 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(u32 irq)
-{
- u32 expio = MXC_IRQ_TO_EXPIO(irq);
-
- /* mask the interrupt */
- if (irq < EXPIO_INT_SD2_EN) {
- __raw_writew(1 << expio, PBC_INTMASK_CLEAR_REG);
- } else {
- irq -= EXPIO_INT_SD2_EN;
- /* clear both SDx_EN and SDx_R_EN bits */
- __raw_writew((pbc_card_bit[irq][1] | pbc_card_bit[irq][2]),
- PBC_INTMASK_CLEAR_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(u32 irq)
-{
- u32 expio = MXC_IRQ_TO_EXPIO(irq);
- /* clear the interrupt status */
- __raw_writew(1 << expio, PBC_INTSTATUS_REG);
- /* mask the interrupt */
- expio_mask_irq(irq);
-}
-
-/*
- * Enable a expio pin's interrupt by clearing the bit in the imr.
- * @param irq an expio virtual irq number
- */
-static void expio_unmask_irq(u32 irq)
-{
- u32 expio = MXC_IRQ_TO_EXPIO(irq);
-
- /* unmask the interrupt */
- if (irq < EXPIO_INT_SD2_EN) {
- if (irq == EXPIO_INT_XUART_INTA) {
- /* Set 8250 MCR register bit 3 - Forces the INT (A-B
- * outputs to the active mode and sets OP2 to logic 0.
- * This is needed to avoid spurious int caused by the
- * internal CPLD pull-up for the interrupt pin.
- */
- u16 val = __raw_readw(MXC_LL_EXTUART_VADDR + 8);
- __raw_writew(val | 0x8, MXC_LL_EXTUART_VADDR + 8);
- }
- __raw_writew(1 << expio, PBC_INTMASK_SET_REG);
- } else {
- irq -= EXPIO_INT_SD2_EN;
-
- if (mxc_card_detected(irq)) {
- __raw_writew(pbc_card_bit[irq][2], PBC_INTMASK_SET_REG);
- } else {
- __raw_writew(pbc_card_bit[irq][1], PBC_INTMASK_SET_REG);
- }
- }
-}
-
-static struct irq_chip expio_irq_chip = {
- .ack = expio_ack_irq,
- .mask = expio_mask_irq,
- .unmask = expio_unmask_irq,
-};
-
-static int __init mxc_expio_init(void)
-{
- int i, ver;
-
- ver = (__raw_readw(PBC_VERSION_REG) >> 8) & 0xFF;
- if ((ver & 0x80) != 0) {
- pr_info("MX27 ADS EXPIO(CPLD) hardware\n");
- pr_info("CPLD version: 0x%x\n", ver);
- } else {
- mxc_board_is_ads = 0;
- ver &= 0x0F;
- pr_info("MX27 EVB EXPIO(CPLD) hardware\n");
- if (ver == 0xF || ver <= MXC_CPLD_VER_1_50)
- pr_info("Wrong CPLD version: %d\n", ver);
- else {
- pr_info("CPLD version: %d\n", ver);
- }
- }
-
- mxc_card_status = __raw_readw(PBC_BSTAT1_REG);
-
-#ifdef MXC_CARD_DEBUG
- for (i = MXC_CARD_MIN; i <= MXC_CARD_MAX; i++) {
- if (mxc_card_detected(i)) {
- pr_info("Card %d is detected\n", 3 - i);
- }
- }
#endif
- /*
- * Configure INT line as GPIO input
- */
- gpio_config_mux(MX27_PIN_TIN, GPIO_MUX_GPIO);
- mxc_set_gpio_direction(MX27_PIN_TIN, 1);
-
- /* disable the interrupt and clear the status */
- __raw_writew(0xFFFF, PBC_INTMASK_CLEAR_REG);
- __raw_writew(0xFFFF, PBC_INTSTATUS_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, IRQT_HIGH);
- set_irq_chained_handler(EXPIO_PARENT_INT, mxc_expio_irq_handler);
-
- return 0;
-}
-
-#if defined(CONFIG_SERIAL_8250) || defined(CONFIG_SERIAL_8250_MODULE)
-
-/*!
- * The serial port definition structure. The fields contain:
- * {UART, CLK, PORT, IRQ, FLAGS}
- */
-static struct plat_serial8250_port serial_platform_data[] = {
- {
- .membase = (void __iomem *)(CS4_BASE_ADDR_VIRT + 0x20000),
- .mapbase = (unsigned long)(CS4_BASE_ADDR + 0x20000),
- .irq = EXPIO_INT_XUART_INTA,
- .uartclk = 3686400,
- .regshift = 1,
- .iotype = UPIO_MEM,
- .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_AUTO_IRQ,
- /*.pm = serial_platform_pm, */
- },
- {},
-};
-
-/*!
- * REVISIT: document me
- */
-static struct platform_device serial_device = {
- .name = "serial8250",
- .id = 0,
- .dev = {
- .platform_data = &serial_platform_data[0],
- },
-};
-/*!
- * REVISIT: document me
- */
-static int __init mxc_init_extuart(void)
-{
- int value;
- /*reset ext uart in cpld */
- __raw_writew(PBC_BCTRL1_URST, PBC_BCTRL1_SET_REG);
- /*delay some time for reset finish */
- for (value = 0; value < 1000; value++) ;
- __raw_writew(PBC_BCTRL1_URST, PBC_BCTRL1_CLEAR_REG);
- return platform_device_register(&serial_device);
-}
-#else
-static inline int mxc_init_extuart(void)
-{
- return 0;
-}
-#endif
+/* --------------------------------------------------------------------
+ * PMIC Audio
+ * -------------------------------------------------------------------- */
#if defined(CONFIG_MXC_PMIC_MC13783) && defined(CONFIG_SND_MXC_PMIC)
extern void gpio_ssi_active(int ssi_num);
@@ -655,7 +325,7 @@ static void __init mxc_init_pmic_audio(void)
gpio_ssi_active(1);
}
#else
-static void __inline mxc_init_pmic_audio(void)
+static void __init mxc_init_pmic_audio(void)
{
}
#endif
@@ -667,18 +337,9 @@ static __init void mxc_board_init(void)
mxc_clocks_init();
early_console_setup(saved_command_line);
mxc_gpio_init();
- //mxc_expio_init();
- mxc_init_keypad();
mxc_init_nor_mtd();
mxc_init_nand_mtd();
- mxc_init_extuart();
mxc_init_pmic_audio();
-#ifdef MXC_CARD_DEBUG
- request_irq(EXPIO_INT_SD1_EN, mxc_sd_test_handler, 0, "SD_card1", NULL);
- request_irq(EXPIO_INT_SD2_EN, mxc_sd_test_handler, 0, "SD_card2", NULL);
- request_irq(EXPIO_INT_SD3_EN, mxc_sd_test_handler, 0, "SD_card3", NULL);
- request_irq(EXPIO_INT_MS_EN, mxc_sd_test_handler, 0, "MS_card", NULL);
-#endif
spi_register_board_info(mxc_spi_board_info,
ARRAY_SIZE(mxc_spi_board_info));
@@ -689,15 +350,6 @@ static __init void mxc_board_init(void)
static void __init fixup_mxc_board(struct machine_desc *desc, struct tag *tags,
char **cmdline, struct meminfo *mi)
{
-#ifdef CONFIG_KGDB_8250
- int i;
- for (i = 0;
- i <
- (sizeof(serial_platform_data) / sizeof(serial_platform_data[0]));
- i += 1)
- kgdb8250_add_platform_port(i, &serial_platform_data[i]);
-#endif
-
mxc_cpu_init();
/* Store command line for use on mxc_board_init */
strcpy(command_line, *cmdline);
@@ -713,23 +365,15 @@ static void __init fixup_mxc_board(struct machine_desc *desc, struct tag *tags,
#endif
}
-EXPORT_SYMBOL(mxc_card_detected);
-EXPORT_SYMBOL(mxc_board_is_ads);
-
/*
* The following uses standard kernel macros define in arch.h in order to
- * initialize __mach_desc_MX27ADS data structure.
+ * initialize __mach_desc_MX27LITE data structure.
*/
/* *INDENT-OFF* */
-MACHINE_START(IMX27LITE, "Freescale i.MX27ADS")
- /* maintainer: Freescale Semiconductor, Inc. */
-#ifdef CONFIG_SERIAL_8250_CONSOLE
- .phys_io = CS4_BASE_ADDR,
- .io_pg_offst = ((CS4_BASE_ADDR_VIRT) >> 18) & 0xfffc,
-#else
+MACHINE_START(IMX27LITE, "LogicPD i.MX27LITE")
+ /* maintainer: TimeSys, Inc. */
.phys_io = AIPI_BASE_ADDR,
.io_pg_offst = ((AIPI_BASE_ADDR_VIRT) >> 18) & 0xfffc,
-#endif
.boot_params = PHYS_OFFSET + 0x100,
.fixup = fixup_mxc_board,
.map_io = mxc_map_io,
diff --git a/arch/arm/mach-mx27/mx27lite_gpio.c b/arch/arm/mach-mx27/mx27lite_gpio.c
index 6f5845bd549e..f0dfe0b1c5bb 100644
--- a/arch/arm/mach-mx27/mx27lite_gpio.c
+++ b/arch/arm/mach-mx27/mx27lite_gpio.c
@@ -1,8 +1,10 @@
/*
- * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved.
- */
-
-/*
+ * mx27lite_gpio.c
+ *
+ * GPIO Assignments for the MX27Litekit
+ *
+ * Copyright 2008 TimeSys Corp.
+ *
* The code contained herein is licensed under the GNU General Public
* License. You may obtain a copy of the GNU General Public License
* Version 2 or later at the following locations:
@@ -19,25 +21,21 @@
#include <asm/hardware.h>
#include <asm/arch/gpio.h>
-#include "board-mx27ads.h"
+#include "board-mx27lite.h"
#include "gpio_mux.h"
#include "crm_regs.h"
static int g_uart_activated[MXC_UART_NR] = { 0, 0, 0, 0, 0, 0 };
-/*!
- * @file mach-mx27/mx27ads_gpio.c
- *
- * @brief This file contains all the GPIO setup functions for the board.
- *
- * @ingroup GPIO_MX27
- */
+/* --------------------------------------------------------------------
+ * UART
+ * -------------------------------------------------------------------- */
-/*!
+/*
* Setup GPIO for a UART port to be active
*
- * @param port a UART port
- * @param ir_mode indicates if the port is used for SIR
+ * port a UART port
+ * ir_mode indicates if the port is used for SIR
*/
void gpio_uart_active(int port, int ir_mode)
{
@@ -70,13 +68,7 @@ void gpio_uart_active(int port, int ir_mode)
gpio_request_mux(MX27_PIN_UART3_RXD, GPIO_MUX_PRIMARY);
gpio_request_mux(MX27_PIN_UART3_CTS, GPIO_MUX_PRIMARY);
gpio_request_mux(MX27_PIN_UART3_RTS, GPIO_MUX_PRIMARY);
-
- /* enable or disable the IrDA transceiver based on ir_mode */
- //if (ir_mode == IRDA)
- // __raw_writew(PBC_BCTRL2_IRDA_EN, PBC_BCTRL2_CLEAR_REG);
- //else
- // __raw_writew(PBC_BCTRL2_IRDA_EN, PBC_BCTRL2_SET_REG);
- //break;
+ break;
case 3:
gpio_request_mux(MX27_PIN_USBH1_TXDM, GPIO_MUX_ALT);
gpio_request_mux(MX27_PIN_USBH1_RXDP, GPIO_MUX_ALT);
@@ -100,11 +92,11 @@ void gpio_uart_active(int port, int ir_mode)
}
}
-/*!
+/*
* Setup GPIO for a UART port to be inactive
*
- * @param port a UART port
- * @param ir_mode indicates if the port is used for SIR
+ * port a UART port
+ * ir_mode indicates if the port is used for SIR
*/
void gpio_uart_inactive(int port, int ir_mode)
{
@@ -161,30 +153,27 @@ void gpio_uart_inactive(int port, int ir_mode)
}
}
-/*!
+/*
* Configure the IOMUX GPR register to receive shared SDMA UART events
*
- * @param port a UART port
+ * port a UART port
*/
void config_uartdma_event(int port)
{
return;
}
-/*!
- * Setup GPIO for USB, Total 34 signals
- * PIN Configuration for USBOTG: High/Full speed OTG
- * PE2,PE1,PE0,PE24,PE25 -- PRIMARY
- PC7 - PC13 -- PRIMARY
- PB23,PB24 -- PRIMARY
-
- * PIN Configuration for USBH2: : High/Full/Low speed host
- * PA0 - PA4 -- PRIMARY
- PD19, PD20,PD21,PD22,PD23,PD24,PD26 --Alternate (SECONDARY)
+/* --------------------------------------------------------------------
+ * USB
+ * -------------------------------------------------------------------- */
- * PIN Configuration for USBH1: Full/low speed host
- * PB25 - PB31 -- PRIMARY
- PB22 -- PRIMARY
+/*
+ * Setup GPIO for USBH1 to be active
+ *
+ * USBH1 is not used on the Litekit because its pins are multiplexed
+ * with LCD and OTG. It may be possible to modify the hardware or use a
+ * different baseboard to use this interface.
+ *
*/
int gpio_usbh1_active(void)
{
@@ -198,10 +187,12 @@ int gpio_usbh1_active(void)
gpio_request_mux(MX27_PIN_USBH1_RXDP, GPIO_MUX_PRIMARY))
return -EINVAL;
- //__raw_writew(PBC_BCTRL3_FSH_MOD, PBC_BCTRL3_CLEAR_REG);
- //__raw_writew(PBC_BCTRL3_FSH_VBUS_EN, PBC_BCTRL3_CLEAR_REG);
return 0;
}
+
+/*
+ * Setup GPIO for USBH1 to be inactive
+ */
void gpio_usbh1_inactive(void)
{
gpio_free_mux(MX27_PIN_USBH1_SUSP);
@@ -212,11 +203,15 @@ void gpio_usbh1_inactive(void)
gpio_free_mux(MX27_PIN_USBH1_TXDP);
gpio_free_mux(MX27_PIN_USBH1_RXDM);
gpio_free_mux(MX27_PIN_USBH1_RXDP);
- //__raw_writew(PBC_BCTRL3_FSH_VBUS_EN, PBC_BCTRL3_SET_REG);
}
/*
- * conflicts with CSPI1 (MC13783) and CSPI2 (Connector)
+ * Setup GPIO for USBH2 to be active
+ *
+ * USBH2 conflicts with CSPI1 (MC13783) and CSPI2 (Connector). CSPI1 is
+ * still usable with USBH2 enabled, but only two of the three slave select
+ * pins are active.
+ *
*/
int gpio_usbh2_active(void)
{
@@ -250,9 +245,12 @@ int gpio_usbh2_active(void)
gpio_request_mux(MX27_PIN_USB_PWR, GPIO_MUX_PRIMARY))
return -EINVAL;
- //__raw_writew(PBC_BCTRL3_HSH_EN, PBC_BCTRL3_CLEAR_REG);
return 0;
}
+
+/*
+ * Setup GPIO for USBH2 to be inactive
+ */
void gpio_usbh2_inactive(void)
{
gpio_free_mux(MX27_PIN_USBH2_CLK);
@@ -284,9 +282,11 @@ void gpio_usbh2_inactive(void)
gpio_free_mux(MX27_PIN_USB_OC_B);
gpio_free_mux(MX27_PIN_USB_PWR);
- //__raw_writew(PBC_BCTRL3_HSH_EN, PBC_BCTRL3_SET_REG);
}
+/*
+ * Setup GPIO for USBOTG to be active
+ */
int gpio_usbotg_hs_active(void)
{
if (gpio_request_mux(MX27_PIN_USBOTG_DATA5, GPIO_MUX_PRIMARY) ||
@@ -312,12 +312,12 @@ int gpio_usbotg_hs_active(void)
mxc_set_gpio_direction(MX27_PIN_USBH1_TXDP, 1); /* USB1_nOC */
mxc_set_gpio_dataout(MX27_PIN_USBH1_TXDM, 0);
- //__raw_writew(PBC_BCTRL3_OTG_HS_EN, PBC_BCTRL3_CLEAR_REG);
- //__raw_writew(PBC_BCTRL3_OTG_VBUS_EN, PBC_BCTRL3_CLEAR_REG);
-
return 0;
}
+/*
+ * Setup GPIO for USBOTG to be inactive
+ */
void gpio_usbotg_hs_inactive(void)
{
gpio_free_mux(MX27_PIN_USBOTG_DATA5);
@@ -336,7 +336,6 @@ void gpio_usbotg_hs_inactive(void)
gpio_free_mux(MX27_PIN_USBH1_TXDM);
gpio_free_mux(MX27_PIN_USBH1_TXDP);
- //__raw_writew(PBC_BCTRL3_OTG_HS_EN, PBC_BCTRL3_SET_REG);
}
int gpio_usbotg_fs_active(void)
@@ -349,21 +348,16 @@ void gpio_usbotg_fs_inactive(void)
gpio_usbotg_hs_inactive();
}
-/*!
- * end Setup GPIO for USB
+
+/* --------------------------------------------------------------------
+ * I2C
+ * -------------------------------------------------------------------- */
+
+/*
+ * Setup GPIO for I2C device to be active
*
+ * i2c_num an I2C device
*/
-
-/************************************************************************/
-/* for i2c gpio */
-/* I2C1: PD17,PD18 -- Primary */
-/* I2C2: PC5,PC6 -- Primary */
-/************************************************************************/
-/*!
-* Setup GPIO for an I2C device to be active
-*
-* @param i2c_num an I2C device
-*/
void gpio_i2c_active(int i2c_num)
{
switch (i2c_num) {
@@ -381,10 +375,10 @@ void gpio_i2c_active(int i2c_num)
}
}
-/*!
- * * Setup GPIO for an I2C device to be inactive
- * *
- * * @param i2c_num an I2C device
+/*
+ * Setup GPIO for an I2C device to be inactive
+ *
+ * i2c_num an I2C device
*/
void gpio_i2c_inactive(int i2c_num)
{
@@ -402,10 +396,15 @@ void gpio_i2c_inactive(int i2c_num)
}
}
-/*!
+
+/* --------------------------------------------------------------------
+ * CSPI
+ * -------------------------------------------------------------------- */
+
+/*
* Setup GPIO for a CSPI device to be active
*
- * @param cspi_mod an CSPI device
+ * cspi_mod an CSPI device
*/
void gpio_spi_active(int cspi_mod)
{
@@ -446,10 +445,10 @@ void gpio_spi_active(int cspi_mod)
}
}
-/*!
+/*
* Setup GPIO for a CSPI device to be inactive
*
- * @param cspi_mod a CSPI device
+ * cspi_mod a CSPI device
*/
void gpio_spi_inactive(int cspi_mod)
{
@@ -488,17 +487,16 @@ void gpio_spi_inactive(int cspi_mod)
}
}
-/*!
+
+/* --------------------------------------------------------------------
+ * NAND
+ * -------------------------------------------------------------------- */
+
+/*
* Setup GPIO for a nand flash device to be active
- *
*/
void gpio_nand_active(void)
{
- unsigned long reg;
- //reg = __raw_readl(IO_ADDRESS(SYSCTRL_BASE_ADDR) + SYS_FMCR);
- //reg &= ~(1 << 4);
- //__raw_writel(reg, IO_ADDRESS(SYSCTRL_BASE_ADDR) + SYS_FMCR);
-
gpio_request_mux(MX27_PIN_NFRB, GPIO_MUX_PRIMARY);
gpio_request_mux(MX27_PIN_NFCE_B, GPIO_MUX_PRIMARY);
gpio_request_mux(MX27_PIN_NFWP_B, GPIO_MUX_PRIMARY);
@@ -508,9 +506,8 @@ void gpio_nand_active(void)
gpio_request_mux(MX27_PIN_NFWE_B, GPIO_MUX_PRIMARY);
}
-/*!
+/*
* Setup GPIO for a nand flash device to be inactive
- *
*/
void gpio_nand_inactive(void)
{
@@ -523,9 +520,13 @@ void gpio_nand_inactive(void)
gpio_free_mux(MX27_PIN_NFWE_B);
}
-/*!
+
+/* --------------------------------------------------------------------
+ * CSI (Camera Sensor Interface)
+ * -------------------------------------------------------------------- */
+
+/*
* Setup GPIO for CSI device to be active
- *
*/
void gpio_sensor_active(void)
{
@@ -541,14 +542,11 @@ void gpio_sensor_active(void)
gpio_request_mux(MX27_PIN_CSI_D7, GPIO_MUX_PRIMARY);
gpio_request_mux(MX27_PIN_CSI_VSYNC, GPIO_MUX_PRIMARY);
gpio_request_mux(MX27_PIN_CSI_HSYNC, GPIO_MUX_PRIMARY);
-
-#ifdef CONFIG_MXC_CAMERA_MC521DA
- //__raw_writew(0x100, PBC_BCTRL2_SET_REG);
-#else
- //__raw_writew(0x400, PBC_BCTRL2_SET_REG);
-#endif
}
+/*
+ * Setup GPIO for CSI device to be inactive
+ */
void gpio_sensor_inactive(void)
{
gpio_free_mux(MX27_PIN_CSI_D0);
@@ -563,30 +561,20 @@ void gpio_sensor_inactive(void)
gpio_free_mux(MX27_PIN_CSI_D7);
gpio_free_mux(MX27_PIN_CSI_VSYNC);
gpio_free_mux(MX27_PIN_CSI_HSYNC);
-
-#ifdef CONFIG_MXC_CAMERA_MC521DA
- //__raw_writew(0x100, PBC_BCTRL2_CLEAR_REG);
-#else
- //__raw_writew(0x400, PBC_BCTRL2_CLEAR_REG);
-#endif
}
void gpio_sensor_reset(bool flag)
{
- u16 temp;
-
- if (flag) {
- temp = 0x200;
- //__raw_writew(temp, PBC_BCTRL2_CLEAR_REG);
- } else {
- temp = 0x200;
-// __raw_writew(temp, PBC_BCTRL2_SET_REG);
- }
+ /* TODO: Write me */
}
-/*!
+
+/* --------------------------------------------------------------------
+ * LCD Controller
+ * -------------------------------------------------------------------- */
+
+/*
* Setup GPIO for LCDC device to be active
- *
*/
void gpio_lcdc_active(void)
{
@@ -619,9 +607,8 @@ void gpio_lcdc_active(void)
gpio_request_mux(MX27_PIN_OE_ACD, GPIO_MUX_PRIMARY);
}
-/*!
+/*
* Setup GPIO for LCDC device to be inactive
- *
*/
void gpio_lcdc_inactive(void)
{
@@ -654,9 +641,8 @@ void gpio_lcdc_inactive(void)
gpio_free_mux(MX27_PIN_OE_ACD);
}
-/*!
+/*
* Setup GPIO PA25 low to start hard reset FS453 TV encoder
- *
*/
void gpio_fs453_reset_low(void)
{
@@ -672,9 +658,8 @@ void gpio_fs453_reset_low(void)
mxc_set_gpio_dataout(MX27_PIN_CLS, 0);
}
-/*!
+/*
* Setup GPIO PA25 high to end hard reset FS453 TV encoder
- *
*/
void gpio_fs453_reset_high(void)
{
@@ -690,9 +675,13 @@ void gpio_fs453_reset_high(void)
mxc_set_gpio_dataout(MX27_PIN_CLS, 1);
}
-/*!
- * This function configures the IOMux block for PMIC standard operations.
- *
+
+/* --------------------------------------------------------------------
+ * PMIC/Atlas
+ * -------------------------------------------------------------------- */
+
+/*
+ * Configure the IOMux block for PMIC standard operations.
*/
void gpio_pmic_active(void)
{
@@ -700,25 +689,32 @@ void gpio_pmic_active(void)
mxc_set_gpio_direction(MX27_PIN_TOUT, 1);
}
-/*!
+
+/* --------------------------------------------------------------------
+ * Keypad
+ * -------------------------------------------------------------------- */
+
+/*
* GPIO settings not required for keypad
- *
*/
void gpio_keypad_active(void)
{
}
-/*!
+/*
* GPIO settings not required for keypad
- *
*/
void gpio_keypad_inactive(void)
{
}
-/*!
+
+/* --------------------------------------------------------------------
+ * ATA
+ * -------------------------------------------------------------------- */
+
+/*
* Setup GPIO for ATA device to be active
- *
*/
void gpio_ata_active(void)
{
@@ -752,20 +748,13 @@ void gpio_ata_active(void)
gpio_request_mux(MX27_PIN_IOIS16, GPIO_MUX_ALT);
gpio_request_mux(MX27_PIN_PC_RW_B, GPIO_MUX_ALT);
gpio_request_mux(MX27_PIN_PC_POE, GPIO_MUX_ALT);
-
- //__raw_writew(PBC_BCTRL2_ATAFEC_EN | PBC_BCTRL2_ATAFEC_SEL |
- // PBC_BCTRL2_ATA_EN, PBC_BCTRL2_CLEAR_REG);
}
-/*!
+/*
* Setup GPIO for ATA device to be inactive
- *
*/
void gpio_ata_inactive(void)
{
- //__raw_writew(PBC_BCTRL2_ATAFEC_EN | PBC_BCTRL2_ATAFEC_SEL |
- // PBC_BCTRL2_ATA_EN, PBC_BCTRL2_SET_REG);
-
gpio_free_mux(MX27_PIN_ATA_DATA0);
gpio_free_mux(MX27_PIN_ATA_DATA1);
gpio_free_mux(MX27_PIN_ATA_DATA2);
@@ -798,9 +787,13 @@ void gpio_ata_inactive(void)
gpio_free_mux(MX27_PIN_PC_POE);
}
-/*!
+
+/* --------------------------------------------------------------------
+ * Ethernet (FEC)
+ * -------------------------------------------------------------------- */
+
+/*
* Setup GPIO for FEC device to be active
- *
*/
void gpio_fec_active(void)
{
@@ -840,14 +833,10 @@ void gpio_fec_active(void)
mxc_set_gpio_direction(MX27_PIN_SD3_CLK, 0);
gpio_request_mux(MX27_PIN_SD3_CMD, GPIO_MUX_OUTPUT1);
mxc_set_gpio_direction(MX27_PIN_SD3_CMD, 0);
-
- //__raw_writew(PBC_BCTRL2_ATAFEC_EN, PBC_BCTRL2_CLEAR_REG);
- //__raw_writew(PBC_BCTRL2_ATAFEC_SEL, PBC_BCTRL2_SET_REG);
}
-/*!
+/*
* Setup GPIO for FEC device to be inactive
- *
*/
void gpio_fec_inactive(void)
{
@@ -872,25 +861,29 @@ void gpio_fec_inactive(void)
gpio_free_mux(MX27_PIN_SD3_CLK);
}
-/*!
+
+/* --------------------------------------------------------------------
+ * SLCD Controller
+ * -------------------------------------------------------------------- */
+
+/*
* Setup GPIO for SLCDC device to be active
- *
*/
void gpio_slcdc_active(int type)
{
switch (type) {
case 0:
- gpio_request_mux(MX27_PIN_SSI3_CLK, GPIO_MUX_ALT); /* CLK */
- gpio_request_mux(MX27_PIN_SSI3_TXDAT, GPIO_MUX_ALT); /* CS */
- gpio_request_mux(MX27_PIN_SSI3_RXDAT, GPIO_MUX_ALT); /* RS */
- gpio_request_mux(MX27_PIN_SSI3_FS, GPIO_MUX_ALT); /* D0 */
+ gpio_request_mux(MX27_PIN_SSI3_CLK, GPIO_MUX_ALT); /* CLK */
+ gpio_request_mux(MX27_PIN_SSI3_TXDAT, GPIO_MUX_ALT); /* CS */
+ gpio_request_mux(MX27_PIN_SSI3_RXDAT, GPIO_MUX_ALT); /* RS */
+ gpio_request_mux(MX27_PIN_SSI3_FS, GPIO_MUX_ALT); /* D0 */
break;
case 1:
- gpio_request_mux(MX27_PIN_SD2_D1, GPIO_MUX_GPIO); /* CLK */
- gpio_request_mux(MX27_PIN_SD2_D2, GPIO_MUX_GPIO); /* D0 */
- gpio_request_mux(MX27_PIN_SD2_D3, GPIO_MUX_GPIO); /* RS */
- gpio_request_mux(MX27_PIN_SD2_CMD, GPIO_MUX_GPIO); /* CS */
+ gpio_request_mux(MX27_PIN_SD2_D1, GPIO_MUX_GPIO); /* CLK */
+ gpio_request_mux(MX27_PIN_SD2_D2, GPIO_MUX_GPIO); /* D0 */
+ gpio_request_mux(MX27_PIN_SD2_D3, GPIO_MUX_GPIO); /* RS */
+ gpio_request_mux(MX27_PIN_SD2_CMD, GPIO_MUX_GPIO); /* CS */
break;
case 2:
@@ -919,9 +912,8 @@ void gpio_slcdc_active(int type)
return;
}
-/*!
+/*
* Setup GPIO for SLCDC device to be inactive
- *
*/
void gpio_slcdc_inactive(int type)
{
@@ -966,6 +958,16 @@ void gpio_slcdc_inactive(int type)
return;
}
+
+/* --------------------------------------------------------------------
+ * SSI
+ * -------------------------------------------------------------------- */
+
+/*
+ * Setup GPIO for a SSI port to be active
+ *
+ * ssi_num an SSI port num
+ */
void gpio_ssi_active(int ssi_num)
{
switch (ssi_num) {
@@ -995,12 +997,11 @@ void gpio_ssi_active(int ssi_num)
return;
}
-/*!
- * * Setup GPIO for a SSI port to be inactive
- * *
- * * @param ssi_num an SSI port num
+/*
+ * Setup GPIO for a SSI port to be inactive
+ *
+ * ssi_num an SSI port num
*/
-
void gpio_ssi_inactive(int ssi_num)
{
switch (ssi_num) {
@@ -1022,14 +1023,18 @@ void gpio_ssi_inactive(int ssi_num)
return;
}
-/*!
+
+/* --------------------------------------------------------------------
+ * SDHC (Secure Digital Controller)
+ * -------------------------------------------------------------------- */
+
+/*
* Setup GPIO for SDHC to be active
*
- * @param module SDHC module number
+ * module SDHC module number
*/
void gpio_sdhc_active(int module)
{
- u16 data;
switch (module) {
case 0:
gpio_request_mux(MX27_PIN_SD1_CLK, GPIO_MUX_PRIMARY);
@@ -1038,12 +1043,6 @@ void gpio_sdhc_active(int module)
gpio_request_mux(MX27_PIN_SD1_D1, GPIO_MUX_PRIMARY);
gpio_request_mux(MX27_PIN_SD1_D2, GPIO_MUX_PRIMARY);
gpio_request_mux(MX27_PIN_SD1_D3, GPIO_MUX_PRIMARY);
- /* 22k pull up for sd1 dat3 pins */
- //data = __raw_readw(IO_ADDRESS(SYSCTRL_BASE_ADDR + 0x54));
- //data |= 0x0c;
- //__raw_writew(data, IO_ADDRESS(SYSCTRL_BASE_ADDR + 0x54));
- /*mxc_clks_enable(SDHC1_CLK);
- mxc_clks_enable(PERCLK2); */
break;
case 1:
gpio_request_mux(MX27_PIN_SD2_CLK, GPIO_MUX_PRIMARY);
@@ -1053,18 +1052,11 @@ void gpio_sdhc_active(int module)
gpio_request_mux(MX27_PIN_SD2_D2, GPIO_MUX_PRIMARY);
gpio_request_mux(MX27_PIN_SD2_D3, GPIO_MUX_PRIMARY);
- // Pins for Write-protect and Chip Select
+ /* Pins for Write-protect and Chip Select */
gpio_request_mux(MX27_PIN_USBH1_RCV, GPIO_MUX_GPIO);
mxc_set_gpio_direction(MX27_PIN_USBH1_RCV, 1);
gpio_request_mux(MX27_PIN_USBH1_SUSP, GPIO_MUX_GPIO);
mxc_set_gpio_direction(MX27_PIN_USBH1_SUSP, 1);
- /* 22k pull up for sd2 pins */
- //data = __raw_readw(IO_ADDRESS(SYSCTRL_BASE_ADDR + 0x54));
- //data &= ~0xfff0;
- //data |= 0xfff0;
- //__raw_writew(data, IO_ADDRESS(SYSCTRL_BASE_ADDR + 0x54));
- /*mxc_clks_enable(SDHC2_CLK);
- mxc_clks_enable(PERCLK2); */
break;
case 2:
gpio_request_mux(MX27_PIN_SD3_CLK, GPIO_MUX_PRIMARY);
@@ -1073,18 +1065,16 @@ void gpio_sdhc_active(int module)
gpio_request_mux(MX27_PIN_ATA_DATA1, GPIO_MUX_ALT);
gpio_request_mux(MX27_PIN_ATA_DATA2, GPIO_MUX_ALT);
gpio_request_mux(MX27_PIN_ATA_DATA3, GPIO_MUX_ALT);
- /*mxc_clks_enable(SDHC3_CLK);
- mxc_clks_enable(PERCLK2); */
break;
default:
break;
}
}
-/*!
+/*
* Setup GPIO for SDHC1 to be inactive
*
- * @param module SDHC module number
+ * module SDHC module number
*/
void gpio_sdhc_inactive(int module)
{
@@ -1096,7 +1086,6 @@ void gpio_sdhc_inactive(int module)
gpio_free_mux(MX27_PIN_SD1_D1);
gpio_free_mux(MX27_PIN_SD1_D2);
gpio_free_mux(MX27_PIN_SD1_D3);
- /*mxc_clks_disable(SDHC1_CLK); */
break;
case 1:
gpio_free_mux(MX27_PIN_SD2_CLK);
@@ -1107,7 +1096,6 @@ void gpio_sdhc_inactive(int module)
gpio_free_mux(MX27_PIN_SD2_D3);
gpio_free_mux(MX27_PIN_USBH1_RCV);
gpio_free_mux(MX27_PIN_USBH1_SUSP);
- /*mxc_clks_disable(SDHC2_CLK); */
break;
case 2:
gpio_free_mux(MX27_PIN_SD3_CLK);
@@ -1116,7 +1104,6 @@ void gpio_sdhc_inactive(int module)
gpio_free_mux(MX27_PIN_ATA_DATA1);
gpio_free_mux(MX27_PIN_ATA_DATA2);
gpio_free_mux(MX27_PIN_ATA_DATA3);
- /*mxc_clks_disable(SDHC3_CLK); */
break;
default:
break;
@@ -1139,10 +1126,10 @@ int sdhc_init_card_det(int id)
int ret = 0;
switch (id) {
case 0:
- ret = EXPIO_INT_SD1_EN;
+ ret = 0;
break;
case 1:
- ret = EXPIO_INT_SD2_EN;
+ ret = 0;
break;
default:
ret = 0;
@@ -1151,15 +1138,17 @@ int sdhc_init_card_det(int id)
return ret;
}
+
+/* --------------------------------------------------------------------
+ * Miscellaneous
+ * -------------------------------------------------------------------- */
+
/*
* Power on/off Sharp QVGA panel.
*/
void board_power_lcd(int on)
{
- //if (on)
- // __raw_writew(PBC_BCTRL1_LCDON, PBC_BCTRL1_SET_REG);
- //else
- // __raw_writew(PBC_BCTRL1_LCDON, PBC_BCTRL1_CLEAR_REG);
+ /* TODO: Write me */
}
void gpio_owire_active(void)