diff options
author | Justin Waters <justin.waters@timesys.com> | 2008-05-21 15:58:31 -0400 |
---|---|---|
committer | Justin Waters <justin.waters@timesys.com> | 2008-05-21 16:12:18 -0400 |
commit | 18cd84a7003f7a589b70ed55e0184a890a5ab75f (patch) | |
tree | b76209b68f9f41e0eb97417d3e9f41183c3b7e7f | |
parent | 9582307616e03ad227b678c07702421753a40419 (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.h | 98 | ||||
-rw-r--r-- | arch/arm/mach-mx27/mx27lite.c | 432 | ||||
-rw-r--r-- | arch/arm/mach-mx27/mx27lite_gpio.c | 353 |
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) |