#include <mach/usb.h> #include <generated/mach-types.h> #include <mach/imx-regs.h> #include <mach/clock.h> #include <mach/mci.h> #include <mach/iomux.h> static struct mxs_mci_platform_data mci_pdata = { .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED, .voltages = MMC_VDD_32_33 | MMC_VDD_33_34, /* fixed to 3.3 V */ .f_min = 400000, }; static const uint32_t pad_setup[] = { /* debug port */ PWM1_DUART_TX | STRENGTH(S4MA), /* PWM0/DUART_TXD - U_DEBUG PIN 2 */ PWM0_DUART_RX | STRENGTH(S4MA), /* PWM0/DUART_RXD - U_DEBUG PIN 1 */ /* auart */ I2C_SDA_AUART1_RX | STRENGTH(S4MA), I2C_CLK_AUART1_TX | STRENGTH(S4MA), /* lcd */ LCD_D17 | STRENGTH(S12MA), /*PIN18/LCD_D17 - GPIO PIN 3 */ LCD_D16 | STRENGTH(S12MA), LCD_D15 | STRENGTH(S12MA), LCD_D14 | STRENGTH(S12MA), LCD_D13 | STRENGTH(S12MA), LCD_D12 | STRENGTH(S12MA), LCD_D11 | STRENGTH(S12MA), LCD_D10 | STRENGTH(S12MA),
barebox_arm_entry(IMX_MEMORY_BASE, SZ_128M, NULL); } static const uint32_t iomux_pads[] = { /* EMI */ EMI_DATA0, EMI_DATA1, EMI_DATA2, EMI_DATA3, EMI_DATA4, EMI_DATA5, EMI_DATA6, EMI_DATA7, EMI_DATA8, EMI_DATA9, EMI_DATA10, EMI_DATA11, EMI_DATA12, EMI_DATA13, EMI_DATA14, EMI_DATA15, EMI_ODT0, EMI_DQM0, EMI_ODT1, EMI_DQM1, EMI_DDR_OPEN_FB, EMI_CLK, EMI_DSQ0, EMI_DSQ1, EMI_DDR_OPEN, EMI_A0, EMI_A1, EMI_A2, EMI_A3, EMI_A4, EMI_A5, EMI_A6, EMI_A7, EMI_A8, EMI_A9, EMI_A10, EMI_A11, EMI_A12, EMI_A13, EMI_A14, EMI_BA0, EMI_BA1, EMI_BA2, EMI_CASN, EMI_RASN, EMI_WEN, EMI_CE0N, EMI_CE1N, EMI_CKE, /* Debug UART */ AUART0_RTS_DUART_TX | VE_3_3V | STRENGTH(S8MA), AUART0_CTS_DUART_RX | VE_3_3V | STRENGTH(S8MA), }; static noinline void karo_tx28_init(void) { int i; /* initialize muxing */ for (i = 0; i < ARRAY_SIZE(iomux_pads); i++) imx_gpio_mode(iomux_pads[i]); pr_debug("initializing power...\n"); mx28_power_init(0, 1, 0);
SSP0_D2 | VE_3_3V | PULLUP(1), SSP0_D3 | VE_3_3V | PULLUP(1), SSP0_D4 | VE_3_3V | PULLUP(1), SSP0_D5 | VE_3_3V | PULLUP(1), SSP0_D6 | VE_3_3V | PULLUP(1), SSP0_D7 | VE_3_3V | PULLUP(1), SSP0_CMD | VE_3_3V | PULLUP(1), SSP0_CD | VE_3_3V | PULLUP(1), SSP0_SCK | VE_3_3V | BITKEEPER(0), /* MCI slot power control 1 = off */ PWM3_GPIO | VE_3_3V | GPIO_OUT | GPIO_VALUE(0), /* MCI write protect 1 = not protected */ SSP1_SCK_GPIO | VE_3_3V | GPIO_IN, /* lcd */ LCD_WR_RWN_LCD_HSYNC | VE_3_3V | STRENGTH(S8MA), LCD_RD_E_LCD_VSYNC | VE_3_3V | STRENGTH(S8MA), LCD_CS_LCD_ENABLE | VE_3_3V | STRENGTH(S8MA), LCD_RS_LCD_DOTCLK | VE_3_3V | STRENGTH(S8MA), LCD_D0 | VE_3_3V | STRENGTH(S8MA), LCD_D1 | VE_3_3V | STRENGTH(S8MA), LCD_D2 | VE_3_3V | STRENGTH(S8MA), LCD_D3 | VE_3_3V | STRENGTH(S8MA), LCD_D4 | VE_3_3V | STRENGTH(S8MA), LCD_D5 | VE_3_3V | STRENGTH(S8MA), LCD_D6 | VE_3_3V | STRENGTH(S8MA), LCD_D7 | VE_3_3V | STRENGTH(S8MA), LCD_D8 | VE_3_3V | STRENGTH(S8MA), LCD_D9 | VE_3_3V | STRENGTH(S8MA), LCD_D10 | VE_3_3V | STRENGTH(S8MA), LCD_D11 | VE_3_3V | STRENGTH(S8MA),
static struct imx_fb_platformdata fb_mode = { .mode_list = &falconwing_vmode, .mode_cnt = 1, /* the NMA35 is a 24 bit display, but only 18 bits are connected */ .ld_intf_width = STMLCDIF_18BIT, .enable = chumby_fb_enable, .fixed_screen = (void *)(0x40000000 + SZ_64M - MAX_FB_SIZE), .fixed_screen_size = MAX_FB_SIZE, }; static const uint32_t pad_setup[] = { /* may be not required as already done by the bootlet code */ #if 0 /* SDRAM data signals */ EMI_D15 | STRENGTH(0) | VE_2_5V, EMI_D14 | STRENGTH(0) | VE_2_5V, EMI_D13 | STRENGTH(0) | VE_2_5V, EMI_D12 | STRENGTH(0) | VE_2_5V, EMI_D11 | STRENGTH(0) | VE_2_5V, EMI_D10 | STRENGTH(0) | VE_2_5V, EMI_D9 | STRENGTH(0) | VE_2_5V, EMI_D8 | STRENGTH(0) | VE_2_5V, EMI_D7 | STRENGTH(0) | VE_2_5V, EMI_D6 | STRENGTH(0) | VE_2_5V, EMI_D5 | STRENGTH(0) | VE_2_5V, EMI_D4 | STRENGTH(0) | VE_2_5V, EMI_D3 | STRENGTH(0) | VE_2_5V, EMI_D2 | STRENGTH(0) | VE_2_5V, EMI_D1 | STRENGTH(0) | VE_2_5V, EMI_D0 | STRENGTH(0) | VE_2_5V,