diff options
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/arm/cpu/arm1136/mx31/generic.c | 17 | ||||
| -rw-r--r-- | arch/arm/cpu/armv7/omap3/sdrc.c | 2 | ||||
| -rw-r--r-- | arch/arm/cpu/armv7/omap4/board.c | 5 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-mx31/mx31-regs.h | 411 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-omap3/mem.h | 43 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-omap3/mmc_host_def.h | 10 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-omap4/mmc_host_def.h | 10 | ||||
| -rw-r--r-- | arch/arm/lib/board.c | 10 | 
8 files changed, 502 insertions, 6 deletions
| diff --git a/arch/arm/cpu/arm1136/mx31/generic.c b/arch/arm/cpu/arm1136/mx31/generic.c index 1415d6c2a..cbe8243ab 100644 --- a/arch/arm/cpu/arm1136/mx31/generic.c +++ b/arch/arm/cpu/arm1136/mx31/generic.c @@ -23,6 +23,7 @@  #include <common.h>  #include <asm/arch/mx31-regs.h> +#include <asm/io.h>  static u32 mx31_decode_pll(u32 reg, u32 infreq)  { @@ -90,6 +91,22 @@ void mx31_gpio_mux(unsigned long mode)  	__REG(reg) = tmp;  } +void mx31_set_pad(enum iomux_pins pin, u32 config) +{ +	u32 field, l; +	void *reg; + +	pin &= IOMUX_PADNUM_MASK; +	reg = (IOMUXC_BASE + 0x154) + (pin + 2) / 3 * 4; +	field = (pin + 2) % 3; + +	l = __raw_readl(reg); +	l &= ~(0x1ff << (field * 10)); +	l |= config << (field * 10); +	__raw_writel(l, reg); + +} +  #if defined(CONFIG_DISPLAY_CPUINFO)  int print_cpuinfo (void)  { diff --git a/arch/arm/cpu/armv7/omap3/sdrc.c b/arch/arm/cpu/armv7/omap3/sdrc.c index 2719bb53a..6c419f5b9 100644 --- a/arch/arm/cpu/armv7/omap3/sdrc.c +++ b/arch/arm/cpu/armv7/omap3/sdrc.c @@ -99,7 +99,7 @@ u32 get_sdr_cs_offset(u32 cs)  		return 0;  	offset = readl(&sdrc_base->cs_cfg); -	offset = (offset & 15) << 27 | (offset & 0x30) >> 17; +	offset = (offset & 15) << 27 | (offset & 0x30) << 17;  	return offset;  } diff --git a/arch/arm/cpu/armv7/omap4/board.c b/arch/arm/cpu/armv7/omap4/board.c index 8c1f3953e..24a66f5b9 100644 --- a/arch/arm/cpu/armv7/omap4/board.c +++ b/arch/arm/cpu/armv7/omap4/board.c @@ -102,8 +102,13 @@ int dram_init(void)  {  	DECLARE_GLOBAL_DATA_PTR; +#if defined(CONFIG_SYS_ARM_WITHOUT_RELOC)  	gd->bd->bi_dram[0].start = 0x80000000;  	gd->bd->bi_dram[0].size = sdram_size(); +#else +	gd->ram_size = sdram_size(); +#endif +  	return 0;  } diff --git a/arch/arm/include/asm/arch-mx31/mx31-regs.h b/arch/arm/include/asm/arch-mx31/mx31-regs.h index f05e743d7..46ed47cc7 100644 --- a/arch/arm/include/asm/arch-mx31/mx31-regs.h +++ b/arch/arm/include/asm/arch-mx31/mx31-regs.h @@ -64,6 +64,370 @@ struct gpio_regs {  	u32	gpio_psr;  }; +#define IOMUX_PADNUM_MASK	0x1ff +#define IOMUX_PIN(gpionum, padnum) ((padnum) & IOMUX_PADNUM_MASK) + +/* + * various IOMUX pad functions + */ +enum iomux_pad_config { +	PAD_CTL_NOLOOPBACK	= 0x0 << 9, +	PAD_CTL_LOOPBACK	= 0x1 << 9, +	PAD_CTL_PKE_NONE	= 0x0 << 8, +	PAD_CTL_PKE_ENABLE	= 0x1 << 8, +	PAD_CTL_PUE_KEEPER	= 0x0 << 7, +	PAD_CTL_PUE_PUD		= 0x1 << 7, +	PAD_CTL_100K_PD		= 0x0 << 5, +	PAD_CTL_100K_PU		= 0x1 << 5, +	PAD_CTL_47K_PU		= 0x2 << 5, +	PAD_CTL_22K_PU		= 0x3 << 5, +	PAD_CTL_HYS_CMOS	= 0x0 << 4, +	PAD_CTL_HYS_SCHMITZ	= 0x1 << 4, +	PAD_CTL_ODE_CMOS	= 0x0 << 3, +	PAD_CTL_ODE_OpenDrain	= 0x1 << 3, +	PAD_CTL_DRV_NORMAL	= 0x0 << 1, +	PAD_CTL_DRV_HIGH	= 0x1 << 1, +	PAD_CTL_DRV_MAX		= 0x2 << 1, +	PAD_CTL_SRE_SLOW	= 0x0 << 0, +	PAD_CTL_SRE_FAST	= 0x1 << 0 +}; + +/* + * This enumeration is constructed based on the Section + * "sw_pad_ctl & sw_mux_ctl details" of the MX31 IC Spec. Each enumerated + * value is constructed based on the rules described above. + */ + +enum iomux_pins { +	MX31_PIN_TTM_PAD	= IOMUX_PIN(0xff,   0), +	MX31_PIN_CSPI3_SPI_RDY	= IOMUX_PIN(0xff,   1), +	MX31_PIN_CSPI3_SCLK	= IOMUX_PIN(0xff,   2), +	MX31_PIN_CSPI3_MISO	= IOMUX_PIN(0xff,   3), +	MX31_PIN_CSPI3_MOSI	= IOMUX_PIN(0xff,   4), +	MX31_PIN_CLKSS		= IOMUX_PIN(0xff,   5), +	MX31_PIN_CE_CONTROL	= IOMUX_PIN(0xff,   6), +	MX31_PIN_ATA_RESET_B	= IOMUX_PIN(95,     7), +	MX31_PIN_ATA_DMACK	= IOMUX_PIN(94,     8), +	MX31_PIN_ATA_DIOW	= IOMUX_PIN(93,     9), +	MX31_PIN_ATA_DIOR	= IOMUX_PIN(92,    10), +	MX31_PIN_ATA_CS1	= IOMUX_PIN(91,    11), +	MX31_PIN_ATA_CS0	= IOMUX_PIN(90,    12), +	MX31_PIN_SD1_DATA3	= IOMUX_PIN(63,    13), +	MX31_PIN_SD1_DATA2	= IOMUX_PIN(62,    14), +	MX31_PIN_SD1_DATA1	= IOMUX_PIN(61,    15), +	MX31_PIN_SD1_DATA0	= IOMUX_PIN(60,    16), +	MX31_PIN_SD1_CLK	= IOMUX_PIN(59,    17), +	MX31_PIN_SD1_CMD	= IOMUX_PIN(58,    18), +	MX31_PIN_D3_SPL		= IOMUX_PIN(0xff,  19), +	MX31_PIN_D3_CLS		= IOMUX_PIN(0xff,  20), +	MX31_PIN_D3_REV		= IOMUX_PIN(0xff,  21), +	MX31_PIN_CONTRAST	= IOMUX_PIN(0xff,  22), +	MX31_PIN_VSYNC3		= IOMUX_PIN(0xff,  23), +	MX31_PIN_READ		= IOMUX_PIN(0xff,  24), +	MX31_PIN_WRITE		= IOMUX_PIN(0xff,  25), +	MX31_PIN_PAR_RS		= IOMUX_PIN(0xff,  26), +	MX31_PIN_SER_RS		= IOMUX_PIN(89,    27), +	MX31_PIN_LCS1		= IOMUX_PIN(88,    28), +	MX31_PIN_LCS0		= IOMUX_PIN(87,    29), +	MX31_PIN_SD_D_CLK	= IOMUX_PIN(86,    30), +	MX31_PIN_SD_D_IO	= IOMUX_PIN(85,    31), +	MX31_PIN_SD_D_I		= IOMUX_PIN(84,    32), +	MX31_PIN_DRDY0		= IOMUX_PIN(0xff,  33), +	MX31_PIN_FPSHIFT	= IOMUX_PIN(0xff,  34), +	MX31_PIN_HSYNC		= IOMUX_PIN(0xff,  35), +	MX31_PIN_VSYNC0		= IOMUX_PIN(0xff,  36), +	MX31_PIN_LD17		= IOMUX_PIN(0xff,  37), +	MX31_PIN_LD16		= IOMUX_PIN(0xff,  38), +	MX31_PIN_LD15		= IOMUX_PIN(0xff,  39), +	MX31_PIN_LD14		= IOMUX_PIN(0xff,  40), +	MX31_PIN_LD13		= IOMUX_PIN(0xff,  41), +	MX31_PIN_LD12		= IOMUX_PIN(0xff,  42), +	MX31_PIN_LD11		= IOMUX_PIN(0xff,  43), +	MX31_PIN_LD10		= IOMUX_PIN(0xff,  44), +	MX31_PIN_LD9		= IOMUX_PIN(0xff,  45), +	MX31_PIN_LD8		= IOMUX_PIN(0xff,  46), +	MX31_PIN_LD7		= IOMUX_PIN(0xff,  47), +	MX31_PIN_LD6		= IOMUX_PIN(0xff,  48), +	MX31_PIN_LD5		= IOMUX_PIN(0xff,  49), +	MX31_PIN_LD4		= IOMUX_PIN(0xff,  50), +	MX31_PIN_LD3		= IOMUX_PIN(0xff,  51), +	MX31_PIN_LD2		= IOMUX_PIN(0xff,  52), +	MX31_PIN_LD1		= IOMUX_PIN(0xff,  53), +	MX31_PIN_LD0		= IOMUX_PIN(0xff,  54), +	MX31_PIN_USBH2_DATA1	= IOMUX_PIN(0xff,  55), +	MX31_PIN_USBH2_DATA0	= IOMUX_PIN(0xff,  56), +	MX31_PIN_USBH2_NXT	= IOMUX_PIN(0xff,  57), +	MX31_PIN_USBH2_STP	= IOMUX_PIN(0xff,  58), +	MX31_PIN_USBH2_DIR	= IOMUX_PIN(0xff,  59), +	MX31_PIN_USBH2_CLK	= IOMUX_PIN(0xff,  60), +	MX31_PIN_USBOTG_DATA7	= IOMUX_PIN(0xff,  61), +	MX31_PIN_USBOTG_DATA6	= IOMUX_PIN(0xff,  62), +	MX31_PIN_USBOTG_DATA5	= IOMUX_PIN(0xff,  63), +	MX31_PIN_USBOTG_DATA4	= IOMUX_PIN(0xff,  64), +	MX31_PIN_USBOTG_DATA3	= IOMUX_PIN(0xff,  65), +	MX31_PIN_USBOTG_DATA2	= IOMUX_PIN(0xff,  66), +	MX31_PIN_USBOTG_DATA1	= IOMUX_PIN(0xff,  67), +	MX31_PIN_USBOTG_DATA0	= IOMUX_PIN(0xff,  68), +	MX31_PIN_USBOTG_NXT	= IOMUX_PIN(0xff,  69), +	MX31_PIN_USBOTG_STP	= IOMUX_PIN(0xff,  70), +	MX31_PIN_USBOTG_DIR	= IOMUX_PIN(0xff,  71), +	MX31_PIN_USBOTG_CLK	= IOMUX_PIN(0xff,  72), +	MX31_PIN_USB_BYP	= IOMUX_PIN(31,    73), +	MX31_PIN_USB_OC		= IOMUX_PIN(30,    74), +	MX31_PIN_USB_PWR	= IOMUX_PIN(29,    75), +	MX31_PIN_SJC_MOD	= IOMUX_PIN(0xff,  76), +	MX31_PIN_DE_B		= IOMUX_PIN(0xff,  77), +	MX31_PIN_TRSTB		= IOMUX_PIN(0xff,  78), +	MX31_PIN_TDO		= IOMUX_PIN(0xff,  79), +	MX31_PIN_TDI		= IOMUX_PIN(0xff,  80), +	MX31_PIN_TMS		= IOMUX_PIN(0xff,  81), +	MX31_PIN_TCK		= IOMUX_PIN(0xff,  82), +	MX31_PIN_RTCK		= IOMUX_PIN(0xff,  83), +	MX31_PIN_KEY_COL7	= IOMUX_PIN(57,    84), +	MX31_PIN_KEY_COL6	= IOMUX_PIN(56,    85), +	MX31_PIN_KEY_COL5	= IOMUX_PIN(55,    86), +	MX31_PIN_KEY_COL4	= IOMUX_PIN(54,    87), +	MX31_PIN_KEY_COL3	= IOMUX_PIN(0xff,  88), +	MX31_PIN_KEY_COL2	= IOMUX_PIN(0xff,  89), +	MX31_PIN_KEY_COL1	= IOMUX_PIN(0xff,  90), +	MX31_PIN_KEY_COL0	= IOMUX_PIN(0xff,  91), +	MX31_PIN_KEY_ROW7	= IOMUX_PIN(53,    92), +	MX31_PIN_KEY_ROW6	= IOMUX_PIN(52,    93), +	MX31_PIN_KEY_ROW5	= IOMUX_PIN(51,    94), +	MX31_PIN_KEY_ROW4	= IOMUX_PIN(50,    95), +	MX31_PIN_KEY_ROW3	= IOMUX_PIN(0xff,  96), +	MX31_PIN_KEY_ROW2	= IOMUX_PIN(0xff,  97), +	MX31_PIN_KEY_ROW1	= IOMUX_PIN(0xff,  98), +	MX31_PIN_KEY_ROW0	= IOMUX_PIN(0xff,  99), +	MX31_PIN_BATT_LINE	= IOMUX_PIN(49,   100), +	MX31_PIN_CTS2		= IOMUX_PIN(0xff, 101), +	MX31_PIN_RTS2		= IOMUX_PIN(0xff, 102), +	MX31_PIN_TXD2		= IOMUX_PIN(28,   103), +	MX31_PIN_RXD2		= IOMUX_PIN(27,   104), +	MX31_PIN_DTR_DCE2	= IOMUX_PIN(48,   105), +	MX31_PIN_DCD_DTE1	= IOMUX_PIN(47,   106), +	MX31_PIN_RI_DTE1	= IOMUX_PIN(46,   107), +	MX31_PIN_DSR_DTE1	= IOMUX_PIN(45,   108), +	MX31_PIN_DTR_DTE1	= IOMUX_PIN(44,   109), +	MX31_PIN_DCD_DCE1	= IOMUX_PIN(43,   110), +	MX31_PIN_RI_DCE1	= IOMUX_PIN(42,   111), +	MX31_PIN_DSR_DCE1	= IOMUX_PIN(41,   112), +	MX31_PIN_DTR_DCE1	= IOMUX_PIN(40,   113), +	MX31_PIN_CTS1		= IOMUX_PIN(39,   114), +	MX31_PIN_RTS1		= IOMUX_PIN(38,   115), +	MX31_PIN_TXD1		= IOMUX_PIN(37,   116), +	MX31_PIN_RXD1		= IOMUX_PIN(36,   117), +	MX31_PIN_CSPI2_SPI_RDY	= IOMUX_PIN(0xff, 118), +	MX31_PIN_CSPI2_SCLK	= IOMUX_PIN(0xff, 119), +	MX31_PIN_CSPI2_SS2	= IOMUX_PIN(0xff, 120), +	MX31_PIN_CSPI2_SS1	= IOMUX_PIN(0xff, 121), +	MX31_PIN_CSPI2_SS0	= IOMUX_PIN(0xff, 122), +	MX31_PIN_CSPI2_MISO	= IOMUX_PIN(0xff, 123), +	MX31_PIN_CSPI2_MOSI	= IOMUX_PIN(0xff, 124), +	MX31_PIN_CSPI1_SPI_RDY	= IOMUX_PIN(0xff, 125), +	MX31_PIN_CSPI1_SCLK	= IOMUX_PIN(0xff, 126), +	MX31_PIN_CSPI1_SS2	= IOMUX_PIN(0xff, 127), +	MX31_PIN_CSPI1_SS1	= IOMUX_PIN(0xff, 128), +	MX31_PIN_CSPI1_SS0	= IOMUX_PIN(0xff, 129), +	MX31_PIN_CSPI1_MISO	= IOMUX_PIN(0xff, 130), +	MX31_PIN_CSPI1_MOSI	= IOMUX_PIN(0xff, 131), +	MX31_PIN_SFS6		= IOMUX_PIN(26,   132), +	MX31_PIN_SCK6		= IOMUX_PIN(25,   133), +	MX31_PIN_SRXD6		= IOMUX_PIN(24,   134), +	MX31_PIN_STXD6		= IOMUX_PIN(23,   135), +	MX31_PIN_SFS5		= IOMUX_PIN(0xff, 136), +	MX31_PIN_SCK5		= IOMUX_PIN(0xff, 137), +	MX31_PIN_SRXD5		= IOMUX_PIN(22,   138), +	MX31_PIN_STXD5		= IOMUX_PIN(21,   139), +	MX31_PIN_SFS4		= IOMUX_PIN(0xff, 140), +	MX31_PIN_SCK4		= IOMUX_PIN(0xff, 141), +	MX31_PIN_SRXD4		= IOMUX_PIN(20,   142), +	MX31_PIN_STXD4		= IOMUX_PIN(19,   143), +	MX31_PIN_SFS3		= IOMUX_PIN(0xff, 144), +	MX31_PIN_SCK3		= IOMUX_PIN(0xff, 145), +	MX31_PIN_SRXD3		= IOMUX_PIN(18,   146), +	MX31_PIN_STXD3		= IOMUX_PIN(17,   147), +	MX31_PIN_I2C_DAT	= IOMUX_PIN(0xff, 148), +	MX31_PIN_I2C_CLK	= IOMUX_PIN(0xff, 149), +	MX31_PIN_CSI_PIXCLK	= IOMUX_PIN(83,   150), +	MX31_PIN_CSI_HSYNC	= IOMUX_PIN(82,   151), +	MX31_PIN_CSI_VSYNC	= IOMUX_PIN(81,   152), +	MX31_PIN_CSI_MCLK	= IOMUX_PIN(80,   153), +	MX31_PIN_CSI_D15	= IOMUX_PIN(79,   154), +	MX31_PIN_CSI_D14	= IOMUX_PIN(78,   155), +	MX31_PIN_CSI_D13	= IOMUX_PIN(77,   156), +	MX31_PIN_CSI_D12	= IOMUX_PIN(76,   157), +	MX31_PIN_CSI_D11	= IOMUX_PIN(75,   158), +	MX31_PIN_CSI_D10	= IOMUX_PIN(74,   159), +	MX31_PIN_CSI_D9		= IOMUX_PIN(73,   160), +	MX31_PIN_CSI_D8		= IOMUX_PIN(72,   161), +	MX31_PIN_CSI_D7		= IOMUX_PIN(71,   162), +	MX31_PIN_CSI_D6		= IOMUX_PIN(70,   163), +	MX31_PIN_CSI_D5		= IOMUX_PIN(69,   164), +	MX31_PIN_CSI_D4		= IOMUX_PIN(68,   165), +	MX31_PIN_M_GRANT	= IOMUX_PIN(0xff, 166), +	MX31_PIN_M_REQUEST	= IOMUX_PIN(0xff, 167), +	MX31_PIN_PC_POE		= IOMUX_PIN(0xff, 168), +	MX31_PIN_PC_RW_B	= IOMUX_PIN(0xff, 169), +	MX31_PIN_IOIS16		= IOMUX_PIN(0xff, 170), +	MX31_PIN_PC_RST		= IOMUX_PIN(0xff, 171), +	MX31_PIN_PC_BVD2	= IOMUX_PIN(0xff, 172), +	MX31_PIN_PC_BVD1	= IOMUX_PIN(0xff, 173), +	MX31_PIN_PC_VS2		= IOMUX_PIN(0xff, 174), +	MX31_PIN_PC_VS1		= IOMUX_PIN(0xff, 175), +	MX31_PIN_PC_PWRON	= IOMUX_PIN(0xff, 176), +	MX31_PIN_PC_READY	= IOMUX_PIN(0xff, 177), +	MX31_PIN_PC_WAIT_B	= IOMUX_PIN(0xff, 178), +	MX31_PIN_PC_CD2_B	= IOMUX_PIN(0xff, 179), +	MX31_PIN_PC_CD1_B	= IOMUX_PIN(0xff, 180), +	MX31_PIN_D0		= IOMUX_PIN(0xff, 181), +	MX31_PIN_D1		= IOMUX_PIN(0xff, 182), +	MX31_PIN_D2		= IOMUX_PIN(0xff, 183), +	MX31_PIN_D3		= IOMUX_PIN(0xff, 184), +	MX31_PIN_D4		= IOMUX_PIN(0xff, 185), +	MX31_PIN_D5		= IOMUX_PIN(0xff, 186), +	MX31_PIN_D6		= IOMUX_PIN(0xff, 187), +	MX31_PIN_D7		= IOMUX_PIN(0xff, 188), +	MX31_PIN_D8		= IOMUX_PIN(0xff, 189), +	MX31_PIN_D9		= IOMUX_PIN(0xff, 190), +	MX31_PIN_D10		= IOMUX_PIN(0xff, 191), +	MX31_PIN_D11		= IOMUX_PIN(0xff, 192), +	MX31_PIN_D12		= IOMUX_PIN(0xff, 193), +	MX31_PIN_D13		= IOMUX_PIN(0xff, 194), +	MX31_PIN_D14		= IOMUX_PIN(0xff, 195), +	MX31_PIN_D15		= IOMUX_PIN(0xff, 196), +	MX31_PIN_NFRB		= IOMUX_PIN(16,   197), +	MX31_PIN_NFCE_B		= IOMUX_PIN(15,   198), +	MX31_PIN_NFWP_B		= IOMUX_PIN(14,   199), +	MX31_PIN_NFCLE		= IOMUX_PIN(13,   200), +	MX31_PIN_NFALE		= IOMUX_PIN(12,   201), +	MX31_PIN_NFRE_B		= IOMUX_PIN(11,   202), +	MX31_PIN_NFWE_B		= IOMUX_PIN(10,   203), +	MX31_PIN_SDQS3		= IOMUX_PIN(0xff, 204), +	MX31_PIN_SDQS2		= IOMUX_PIN(0xff, 205), +	MX31_PIN_SDQS1		= IOMUX_PIN(0xff, 206), +	MX31_PIN_SDQS0		= IOMUX_PIN(0xff, 207), +	MX31_PIN_SDCLK_B	= IOMUX_PIN(0xff, 208), +	MX31_PIN_SDCLK		= IOMUX_PIN(0xff, 209), +	MX31_PIN_SDCKE1		= IOMUX_PIN(0xff, 210), +	MX31_PIN_SDCKE0		= IOMUX_PIN(0xff, 211), +	MX31_PIN_SDWE		= IOMUX_PIN(0xff, 212), +	MX31_PIN_CAS		= IOMUX_PIN(0xff, 213), +	MX31_PIN_RAS		= IOMUX_PIN(0xff, 214), +	MX31_PIN_RW		= IOMUX_PIN(0xff, 215), +	MX31_PIN_BCLK		= IOMUX_PIN(0xff, 216), +	MX31_PIN_LBA		= IOMUX_PIN(0xff, 217), +	MX31_PIN_ECB		= IOMUX_PIN(0xff, 218), +	MX31_PIN_CS5		= IOMUX_PIN(0xff, 219), +	MX31_PIN_CS4		= IOMUX_PIN(0xff, 220), +	MX31_PIN_CS3		= IOMUX_PIN(0xff, 221), +	MX31_PIN_CS2		= IOMUX_PIN(0xff, 222), +	MX31_PIN_CS1		= IOMUX_PIN(0xff, 223), +	MX31_PIN_CS0		= IOMUX_PIN(0xff, 224), +	MX31_PIN_OE		= IOMUX_PIN(0xff, 225), +	MX31_PIN_EB1		= IOMUX_PIN(0xff, 226), +	MX31_PIN_EB0		= IOMUX_PIN(0xff, 227), +	MX31_PIN_DQM3		= IOMUX_PIN(0xff, 228), +	MX31_PIN_DQM2		= IOMUX_PIN(0xff, 229), +	MX31_PIN_DQM1		= IOMUX_PIN(0xff, 230), +	MX31_PIN_DQM0		= IOMUX_PIN(0xff, 231), +	MX31_PIN_SD31		= IOMUX_PIN(0xff, 232), +	MX31_PIN_SD30		= IOMUX_PIN(0xff, 233), +	MX31_PIN_SD29		= IOMUX_PIN(0xff, 234), +	MX31_PIN_SD28		= IOMUX_PIN(0xff, 235), +	MX31_PIN_SD27		= IOMUX_PIN(0xff, 236), +	MX31_PIN_SD26		= IOMUX_PIN(0xff, 237), +	MX31_PIN_SD25		= IOMUX_PIN(0xff, 238), +	MX31_PIN_SD24		= IOMUX_PIN(0xff, 239), +	MX31_PIN_SD23		= IOMUX_PIN(0xff, 240), +	MX31_PIN_SD22		= IOMUX_PIN(0xff, 241), +	MX31_PIN_SD21		= IOMUX_PIN(0xff, 242), +	MX31_PIN_SD20		= IOMUX_PIN(0xff, 243), +	MX31_PIN_SD19		= IOMUX_PIN(0xff, 244), +	MX31_PIN_SD18		= IOMUX_PIN(0xff, 245), +	MX31_PIN_SD17		= IOMUX_PIN(0xff, 246), +	MX31_PIN_SD16		= IOMUX_PIN(0xff, 247), +	MX31_PIN_SD15		= IOMUX_PIN(0xff, 248), +	MX31_PIN_SD14		= IOMUX_PIN(0xff, 249), +	MX31_PIN_SD13		= IOMUX_PIN(0xff, 250), +	MX31_PIN_SD12		= IOMUX_PIN(0xff, 251), +	MX31_PIN_SD11		= IOMUX_PIN(0xff, 252), +	MX31_PIN_SD10		= IOMUX_PIN(0xff, 253), +	MX31_PIN_SD9		= IOMUX_PIN(0xff, 254), +	MX31_PIN_SD8		= IOMUX_PIN(0xff, 255), +	MX31_PIN_SD7		= IOMUX_PIN(0xff, 256), +	MX31_PIN_SD6		= IOMUX_PIN(0xff, 257), +	MX31_PIN_SD5		= IOMUX_PIN(0xff, 258), +	MX31_PIN_SD4		= IOMUX_PIN(0xff, 259), +	MX31_PIN_SD3		= IOMUX_PIN(0xff, 260), +	MX31_PIN_SD2		= IOMUX_PIN(0xff, 261), +	MX31_PIN_SD1		= IOMUX_PIN(0xff, 262), +	MX31_PIN_SD0		= IOMUX_PIN(0xff, 263), +	MX31_PIN_SDBA0		= IOMUX_PIN(0xff, 264), +	MX31_PIN_SDBA1		= IOMUX_PIN(0xff, 265), +	MX31_PIN_A25		= IOMUX_PIN(0xff, 266), +	MX31_PIN_A24		= IOMUX_PIN(0xff, 267), +	MX31_PIN_A23		= IOMUX_PIN(0xff, 268), +	MX31_PIN_A22		= IOMUX_PIN(0xff, 269), +	MX31_PIN_A21		= IOMUX_PIN(0xff, 270), +	MX31_PIN_A20		= IOMUX_PIN(0xff, 271), +	MX31_PIN_A19		= IOMUX_PIN(0xff, 272), +	MX31_PIN_A18		= IOMUX_PIN(0xff, 273), +	MX31_PIN_A17		= IOMUX_PIN(0xff, 274), +	MX31_PIN_A16		= IOMUX_PIN(0xff, 275), +	MX31_PIN_A14		= IOMUX_PIN(0xff, 276), +	MX31_PIN_A15		= IOMUX_PIN(0xff, 277), +	MX31_PIN_A13		= IOMUX_PIN(0xff, 278), +	MX31_PIN_A12		= IOMUX_PIN(0xff, 279), +	MX31_PIN_A11		= IOMUX_PIN(0xff, 280), +	MX31_PIN_MA10		= IOMUX_PIN(0xff, 281), +	MX31_PIN_A10		= IOMUX_PIN(0xff, 282), +	MX31_PIN_A9		= IOMUX_PIN(0xff, 283), +	MX31_PIN_A8		= IOMUX_PIN(0xff, 284), +	MX31_PIN_A7		= IOMUX_PIN(0xff, 285), +	MX31_PIN_A6		= IOMUX_PIN(0xff, 286), +	MX31_PIN_A5		= IOMUX_PIN(0xff, 287), +	MX31_PIN_A4		= IOMUX_PIN(0xff, 288), +	MX31_PIN_A3		= IOMUX_PIN(0xff, 289), +	MX31_PIN_A2		= IOMUX_PIN(0xff, 290), +	MX31_PIN_A1		= IOMUX_PIN(0xff, 291), +	MX31_PIN_A0		= IOMUX_PIN(0xff, 292), +	MX31_PIN_VPG1		= IOMUX_PIN(0xff, 293), +	MX31_PIN_VPG0		= IOMUX_PIN(0xff, 294), +	MX31_PIN_DVFS1		= IOMUX_PIN(0xff, 295), +	MX31_PIN_DVFS0		= IOMUX_PIN(0xff, 296), +	MX31_PIN_VSTBY		= IOMUX_PIN(0xff, 297), +	MX31_PIN_POWER_FAIL	= IOMUX_PIN(0xff, 298), +	MX31_PIN_CKIL		= IOMUX_PIN(0xff, 299), +	MX31_PIN_BOOT_MODE4	= IOMUX_PIN(0xff, 300), +	MX31_PIN_BOOT_MODE3	= IOMUX_PIN(0xff, 301), +	MX31_PIN_BOOT_MODE2	= IOMUX_PIN(0xff, 302), +	MX31_PIN_BOOT_MODE1	= IOMUX_PIN(0xff, 303), +	MX31_PIN_BOOT_MODE0	= IOMUX_PIN(0xff, 304), +	MX31_PIN_CLKO		= IOMUX_PIN(0xff, 305), +	MX31_PIN_POR_B		= IOMUX_PIN(0xff, 306), +	MX31_PIN_RESET_IN_B	= IOMUX_PIN(0xff, 307), +	MX31_PIN_CKIH		= IOMUX_PIN(0xff, 308), +	MX31_PIN_SIMPD0		= IOMUX_PIN(35,   309), +	MX31_PIN_SRX0		= IOMUX_PIN(34,   310), +	MX31_PIN_STX0		= IOMUX_PIN(33,   311), +	MX31_PIN_SVEN0		= IOMUX_PIN(32,   312), +	MX31_PIN_SRST0		= IOMUX_PIN(67,   313), +	MX31_PIN_SCLK0		= IOMUX_PIN(66,   314), +	MX31_PIN_GPIO3_1	= IOMUX_PIN(65,   315), +	MX31_PIN_GPIO3_0	= IOMUX_PIN(64,   316), +	MX31_PIN_GPIO1_6	= IOMUX_PIN(6,    317), +	MX31_PIN_GPIO1_5	= IOMUX_PIN(5,    318), +	MX31_PIN_GPIO1_4	= IOMUX_PIN(4,    319), +	MX31_PIN_GPIO1_3	= IOMUX_PIN(3,    320), +	MX31_PIN_GPIO1_2	= IOMUX_PIN(2,    321), +	MX31_PIN_GPIO1_1	= IOMUX_PIN(1,    322), +	MX31_PIN_GPIO1_0	= IOMUX_PIN(0,    323), +	MX31_PIN_PWMO		= IOMUX_PIN(9,    324), +	MX31_PIN_WATCHDOG_RST	= IOMUX_PIN(0xff, 325), +	MX31_PIN_COMPARE	= IOMUX_PIN(8,    326), +	MX31_PIN_CAPTURE	= IOMUX_PIN(7,    327), +};  /* Bit definitions for RCSR register in CCM */  #define CCM_RCSR_NF16B	(1 << 31) @@ -194,6 +558,12 @@ struct gpio_regs {  /* Register offsets based on IOMUXC_BASE */  /* 0x00 .. 0x7b */ +#define MUX_CTL_USBH2_DATA1	0x40 +#define MUX_CTL_USBH2_DIR	0x44 +#define MUX_CTL_USBH2_STP	0x45 +#define MUX_CTL_USBH2_NXT	0x46 +#define MUX_CTL_USBH2_DATA0	0x47 +#define MUX_CTL_USBH2_CLK	0x4B  #define MUX_CTL_RTS1		0x7c  #define MUX_CTL_CTS1		0x7d  #define MUX_CTL_DTR_DCE1	0x7e @@ -214,6 +584,15 @@ struct gpio_regs {  #define MUX_CTL_CSPI1_MISO	0x8d  #define MUX_CTL_CSPI1_SS0	0x8e  #define MUX_CTL_CSPI1_SS1	0x8f +#define MUX_CTL_STXD6		0x90 +#define MUX_CTL_SRXD6		0x91 +#define MUX_CTL_SCK6		0x92 +#define MUX_CTL_SFS6		0x93 + +#define MUX_CTL_STXD3		0x9C +#define MUX_CTL_SRXD3		0x9D +#define MUX_CTL_SCK3		0x9E +#define MUX_CTL_SFS3		0x9F  #define MUX_CTL_NFC_WP		0xD0  #define MUX_CTL_NFC_CE		0xD1 @@ -224,6 +603,9 @@ struct gpio_regs {  #define MUX_CTL_NFC_CLE		0xD7 +#define MUX_CTL_CAPTURE		0x150 +#define MUX_CTL_COMPARE		0x151 +  /*   * Helper macros for the MUX_[contact name]__[pin function] macros   */ @@ -317,4 +699,33 @@ struct gpio_regs {  #define	IRAM_BASE_ADDR	0x1FFFC000  #define IRAM_SIZE	(16 * 1024) +#define MX31_AIPS1_BASE_ADDR	0x43f00000 +#define MX31_OTG_BASE_ADDR	(MX31_AIPS1_BASE_ADDR + 0x88000) + +/* USB portsc */ +/* values for portsc field */ +#define MXC_EHCI_PHY_LOW_POWER_SUSPEND	(1 << 23) +#define MXC_EHCI_FORCE_FS		(1 << 24) +#define MXC_EHCI_UTMI_8BIT		(0 << 28) +#define MXC_EHCI_UTMI_16BIT		(1 << 28) +#define MXC_EHCI_SERIAL			(1 << 29) +#define MXC_EHCI_MODE_UTMI		(0 << 30) +#define MXC_EHCI_MODE_PHILIPS		(1 << 30) +#define MXC_EHCI_MODE_ULPI		(2 << 30) +#define MXC_EHCI_MODE_SERIAL		(3 << 30) + +/* values for flags field */ +#define MXC_EHCI_INTERFACE_DIFF_UNI	(0 << 0) +#define MXC_EHCI_INTERFACE_DIFF_BI	(1 << 0) +#define MXC_EHCI_INTERFACE_SINGLE_UNI	(2 << 0) +#define MXC_EHCI_INTERFACE_SINGLE_BI	(3 << 0) +#define MXC_EHCI_INTERFACE_MASK		(0xf) + +#define MXC_EHCI_POWER_PINS_ENABLED	(1 << 5) +#define MXC_EHCI_TTL_ENABLED		(1 << 6) + +#define MXC_EHCI_INTERNAL_PHY		(1 << 7) +#define MXC_EHCI_IPPUE_DOWN		(1 << 8) +#define MXC_EHCI_IPPUE_UP		(1 << 9) +  #endif /* __ASM_ARCH_MX31_REGS_H */ diff --git a/arch/arm/include/asm/arch-omap3/mem.h b/arch/arm/include/asm/arch-omap3/mem.h index a78cf9f59..f165949f8 100644 --- a/arch/arm/include/asm/arch-omap3/mem.h +++ b/arch/arm/include/asm/arch-omap3/mem.h @@ -128,6 +128,45 @@ enum {  		(MICRON_XSR_165 << 0) | (MICRON_TXP_165 << 8) |	\  		(MICRON_TWTR_165 << 16)) +/* + * NUMONYX part of IGEP v2 (165MHz optimized) 6.06ns + *   ACTIMA + *      TDAL = Twr/Tck + Trp/tck = 15/6 + 18/6 = 2.5 + 3 = 5.5 -> 6 + *      TDPL (Twr) = 15/6 = 2.5 -> 3 + *      TRRD = 12/6 = 2 + *      TRCD = 22.5/6 = 3.75 -> 4 + *      TRP  = 18/6 = 3 + *      TRAS = 42/6 = 7 + *      TRC  = 60/6 = 10 + *      TRFC = 140/6 = 23.3 -> 24 + *   ACTIMB + *	TWTR = 2 + *	TCKE = 2 + *	TXSR = 200/6 =  33.3 -> 34 + *	TXP  = 1.0 + 1.1 = 2.1 -> 3 + */ +#define NUMONYX_TDAL_165   6 +#define NUMONYX_TDPL_165   3 +#define NUMONYX_TRRD_165   2 +#define NUMONYX_TRCD_165   4 +#define NUMONYX_TRP_165    3 +#define NUMONYX_TRAS_165   7 +#define NUMONYX_TRC_165   10 +#define NUMONYX_TRFC_165  24 +#define NUMONYX_V_ACTIMA_165 ((NUMONYX_TRFC_165 << 27) | \ +		(NUMONYX_TRC_165 << 22) | (NUMONYX_TRAS_165 << 18) | \ +		(NUMONYX_TRP_165 << 15) | (NUMONYX_TRCD_165 << 12) | \ +		(NUMONYX_TRRD_165 << 9) | (NUMONYX_TDPL_165 << 6) | \ +		(NUMONYX_TDAL_165)) + +#define NUMONYX_TWTR_165   2 +#define NUMONYX_TCKE_165   2 +#define NUMONYX_TXP_165    3 +#define NUMONYX_XSR_165    34 +#define NUMONYX_V_ACTIMB_165 ((NUMONYX_TCKE_165 << 12) | \ +		(NUMONYX_XSR_165 << 0) | (NUMONYX_TXP_165 << 8) | \ +		(NUMONYX_TWTR_165 << 16)) +  #ifdef CONFIG_OMAP3_INFINEON_DDR  #define V_ACTIMA_165 INFINEON_V_ACTIMA_165  #define V_ACTIMB_165 INFINEON_V_ACTIMB_165 @@ -136,6 +175,10 @@ enum {  #define V_ACTIMA_165 MICRON_V_ACTIMA_165  #define V_ACTIMB_165 MICRON_V_ACTIMB_165  #endif +#ifdef CONFIG_OMAP3_NUMONYX_DDR +#define V_ACTIMA_165 NUMONYX_V_ACTIMA_165 +#define V_ACTIMB_165 NUMONYX_V_ACTIMB_165 +#endif  #if !defined(V_ACTIMA_165) || !defined(V_ACTIMB_165)  #error "Please choose the right DDR type in config header" diff --git a/arch/arm/include/asm/arch-omap3/mmc_host_def.h b/arch/arm/include/asm/arch-omap3/mmc_host_def.h index 43dd70501..ba1c2ffc0 100644 --- a/arch/arm/include/asm/arch-omap3/mmc_host_def.h +++ b/arch/arm/include/asm/arch-omap3/mmc_host_def.h @@ -102,12 +102,14 @@ typedef struct hsmmc {  #define NBLK_STPCNT			(0x0 << 16)  #define DE_DISABLE			(0x0 << 0)  #define BCE_DISABLE			(0x0 << 1) +#define BCE_ENABLE			(0x1 << 1)  #define ACEN_DISABLE			(0x0 << 2)  #define DDIR_OFFSET			(4)  #define DDIR_MASK			(0x1 << 4)  #define DDIR_WRITE			(0x0 << 4)  #define DDIR_READ			(0x1 << 4)  #define MSBS_SGLEBLK			(0x0 << 5) +#define MSBS_MULTIBLK			(0x1 << 5)  #define RSP_TYPE_OFFSET			(16)  #define RSP_TYPE_MASK			(0x3 << 16)  #define RSP_TYPE_NORSP			(0x0 << 16) @@ -130,6 +132,7 @@ typedef struct hsmmc {  #define DATI_CMDDIS			(0x1 << 1)  #define DTW_1_BITMODE			(0x0 << 1)  #define DTW_4_BITMODE			(0x1 << 1) +#define DTW_8_BITMODE                   (0x1 << 5) /* CON[DW8]*/  #define SDBP_PWROFF			(0x0 << 8)  #define SDBP_PWRON			(0x1 << 8)  #define SDVS_1V8			(0x5 << 9) @@ -186,8 +189,15 @@ typedef struct {  	unsigned int size;  	unsigned int RCA;  } mmc_card_data; +#define RSP_TYPE_NONE	(RSP_TYPE_NORSP   | CCCE_NOCHECK | CICE_NOCHECK) +#define MMC_CMD0	(INDEX(0)  | RSP_TYPE_NONE | DP_NO_DATA | DDIR_WRITE) + +/* Clock Configurations and Macros */ +#define MMC_CLOCK_REFERENCE	96 /* MHz */  #define mmc_reg_out(addr, mask, val)\  	writel((readl(addr) & (~(mask))) | ((val) & (mask)), (addr)) +int omap_mmc_init(int dev_index); +  #endif /* MMC_HOST_DEF_H */ diff --git a/arch/arm/include/asm/arch-omap4/mmc_host_def.h b/arch/arm/include/asm/arch-omap4/mmc_host_def.h index e5d8b53b7..733d8ed34 100644 --- a/arch/arm/include/asm/arch-omap4/mmc_host_def.h +++ b/arch/arm/include/asm/arch-omap4/mmc_host_def.h @@ -80,12 +80,14 @@ typedef struct hsmmc {  #define NBLK_STPCNT			(0x0 << 16)  #define DE_DISABLE			(0x0 << 0)  #define BCE_DISABLE			(0x0 << 1) +#define BCE_ENABLE			(0x1 << 1)  #define ACEN_DISABLE			(0x0 << 2)  #define DDIR_OFFSET			(4)  #define DDIR_MASK			(0x1 << 4)  #define DDIR_WRITE			(0x0 << 4)  #define DDIR_READ			(0x1 << 4)  #define MSBS_SGLEBLK			(0x0 << 5) +#define MSBS_MULTIBLK			(0x1 << 5)  #define RSP_TYPE_OFFSET			(16)  #define RSP_TYPE_MASK			(0x3 << 16)  #define RSP_TYPE_NORSP			(0x0 << 16) @@ -108,6 +110,7 @@ typedef struct hsmmc {  #define DATI_CMDDIS			(0x1 << 1)  #define DTW_1_BITMODE			(0x0 << 1)  #define DTW_4_BITMODE			(0x1 << 1) +#define DTW_8_BITMODE                   (0x1 << 5) /* CON[DW8]*/  #define SDBP_PWROFF			(0x0 << 8)  #define SDBP_PWRON			(0x1 << 8)  #define SDVS_1V8			(0x5 << 9) @@ -164,8 +167,15 @@ typedef struct {  	unsigned int size;  	unsigned int RCA;  } mmc_card_data; +#define RSP_TYPE_NONE	(RSP_TYPE_NORSP   | CCCE_NOCHECK | CICE_NOCHECK) +#define MMC_CMD0	(INDEX(0)  | RSP_TYPE_NONE | DP_NO_DATA | DDIR_WRITE) + +/* Clock Configurations and Macros */ +#define MMC_CLOCK_REFERENCE	96 /* MHz */  #define mmc_reg_out(addr, mask, val)\  	writel((readl(addr) & (~(mask))) | ((val) & (mask)), (addr)) +int omap_mmc_init(int dev_index); +  #endif /* MMC_HOST_DEF_H */ diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c index 22bd2c9b0..108e6c40c 100644 --- a/arch/arm/lib/board.c +++ b/arch/arm/lib/board.c @@ -770,6 +770,11 @@ void board_init_r (gd_t *id, ulong dest_addr)  	onenand_init();  #endif +#ifdef CONFIG_GENERIC_MMC +       puts("MMC:   "); +       mmc_initialize(bd); +#endif +  #ifdef CONFIG_HAS_DATAFLASH  	AT91F_DataflashInit();  	dataflash_print_info(); @@ -835,11 +840,6 @@ void board_init_r (gd_t *id, ulong dest_addr)  	board_late_init ();  #endif -#ifdef CONFIG_GENERIC_MMC -	puts ("MMC:   "); -	mmc_initialize (gd->bd); -#endif -  #ifdef CONFIG_BITBANGMII  	bb_miiphy_init();  #endif |