mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-08-31 14:28:52 +09:00
![Lokesh Vutla](/assets/img/avatar_default.png)
In addition to the regular mux configuration, certain pins of DRA7 require to have "manual mode" also programmed, when predefined delay characteristics cannot be used for the interface. struct iodelay_cfg_entry is introduced for populating manual mode IO timings. For configuring manual mode, along with the normal pad configuration do the following steps: - Select MODESELECT field of each assocaited PAD. CTRL_CORE_PAD_XXX[8]:MODESELECT = 1(Enable MANUAL_MODE macro along with mux) - Populate A_DELAY, G_DELAY values that are specified in DATA MANUAL. And pass the offset of the CFG_XXX register in iodelay_cfg_entry. Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com> Signed-off-by: Nishanth Menon <nm@ti.com>
369 lines
8.9 KiB
C
369 lines
8.9 KiB
C
/*
|
|
* (C) Copyright 2013
|
|
* Texas Instruments Incorporated
|
|
*
|
|
* Nishant Kamat <nskamat@ti.com>
|
|
* Lokesh Vutla <lokeshvutla@ti.com>
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
*/
|
|
#ifndef _MUX_DRA7XX_H_
|
|
#define _MUX_DRA7XX_H_
|
|
|
|
#include <asm/types.h>
|
|
|
|
#define FSC (1 << 19)
|
|
#define SSC (0 << 19)
|
|
|
|
#define IEN (1 << 18)
|
|
#define IDIS (0 << 18)
|
|
|
|
#define PTU (1 << 17)
|
|
#define PTD (0 << 17)
|
|
#define PEN (1 << 16)
|
|
#define PDIS (0 << 16)
|
|
|
|
#define WKEN (1 << 24)
|
|
#define WKDIS (0 << 24)
|
|
|
|
#define PULL_ENA (0 << 16)
|
|
#define PULL_DIS (1 << 16)
|
|
#define PULL_UP (1 << 17)
|
|
#define INPUT_EN (1 << 18)
|
|
#define SLEWCONTROL (1 << 19)
|
|
|
|
/* Active pin states */
|
|
#define PIN_OUTPUT (0 | PULL_DIS)
|
|
#define PIN_OUTPUT_PULLUP (PULL_UP)
|
|
#define PIN_OUTPUT_PULLDOWN (0)
|
|
#define PIN_INPUT (INPUT_EN | PULL_DIS)
|
|
#define PIN_INPUT_SLEW (INPUT_EN | SLEWCONTROL)
|
|
#define PIN_INPUT_PULLUP (PULL_ENA | INPUT_EN | PULL_UP)
|
|
#define PIN_INPUT_PULLDOWN (PULL_ENA | INPUT_EN)
|
|
|
|
#define M0 0
|
|
#define M1 1
|
|
#define M2 2
|
|
#define M3 3
|
|
#define M4 4
|
|
#define M5 5
|
|
#define M6 6
|
|
#define M7 7
|
|
#define M8 8
|
|
#define M9 9
|
|
#define M10 10
|
|
#define M11 11
|
|
#define M12 12
|
|
#define M13 13
|
|
#define M14 14
|
|
#define M15 15
|
|
|
|
#define MODE_SELECT (1 << 8)
|
|
#define DELAYMODE_SHIFT 4
|
|
|
|
#define MANUAL_MODE MODE_SELECT
|
|
|
|
#define VIRTUAL_MODE0 (MODE_SELECT | (0x0 << DELAYMODE_SHIFT))
|
|
#define VIRTUAL_MODE1 (MODE_SELECT | (0x1 << DELAYMODE_SHIFT))
|
|
#define VIRTUAL_MODE2 (MODE_SELECT | (0x2 << DELAYMODE_SHIFT))
|
|
#define VIRTUAL_MODE3 (MODE_SELECT | (0x3 << DELAYMODE_SHIFT))
|
|
#define VIRTUAL_MODE4 (MODE_SELECT | (0x4 << DELAYMODE_SHIFT))
|
|
#define VIRTUAL_MODE5 (MODE_SELECT | (0x5 << DELAYMODE_SHIFT))
|
|
#define VIRTUAL_MODE6 (MODE_SELECT | (0x6 << DELAYMODE_SHIFT))
|
|
#define VIRTUAL_MODE7 (MODE_SELECT | (0x7 << DELAYMODE_SHIFT))
|
|
#define VIRTUAL_MODE8 (MODE_SELECT | (0x8 << DELAYMODE_SHIFT))
|
|
#define VIRTUAL_MODE9 (MODE_SELECT | (0x9 << DELAYMODE_SHIFT))
|
|
#define VIRTUAL_MODE10 (MODE_SELECT | (0xa << DELAYMODE_SHIFT))
|
|
#define VIRTUAL_MODE11 (MODE_SELECT | (0xb << DELAYMODE_SHIFT))
|
|
#define VIRTUAL_MODE12 (MODE_SELECT | (0xc << DELAYMODE_SHIFT))
|
|
#define VIRTUAL_MODE13 (MODE_SELECT | (0xd << DELAYMODE_SHIFT))
|
|
#define VIRTUAL_MODE14 (MODE_SELECT | (0xe << DELAYMODE_SHIFT))
|
|
#define VIRTUAL_MODE15 (MODE_SELECT | (0xf << DELAYMODE_SHIFT))
|
|
|
|
#define SAFE_MODE M15
|
|
|
|
#define GPMC_AD0 0x000
|
|
#define GPMC_AD1 0x004
|
|
#define GPMC_AD2 0x008
|
|
#define GPMC_AD3 0x00C
|
|
#define GPMC_AD4 0x010
|
|
#define GPMC_AD5 0x014
|
|
#define GPMC_AD6 0x018
|
|
#define GPMC_AD7 0x01C
|
|
#define GPMC_AD8 0x020
|
|
#define GPMC_AD9 0x024
|
|
#define GPMC_AD10 0x028
|
|
#define GPMC_AD11 0x02C
|
|
#define GPMC_AD12 0x030
|
|
#define GPMC_AD13 0x034
|
|
#define GPMC_AD14 0x038
|
|
#define GPMC_AD15 0x03C
|
|
#define GPMC_A0 0x040
|
|
#define GPMC_A1 0x044
|
|
#define GPMC_A2 0x048
|
|
#define GPMC_A3 0x04C
|
|
#define GPMC_A4 0x050
|
|
#define GPMC_A5 0x054
|
|
#define GPMC_A6 0x058
|
|
#define GPMC_A7 0x05C
|
|
#define GPMC_A8 0x060
|
|
#define GPMC_A9 0x064
|
|
#define GPMC_A10 0x068
|
|
#define GPMC_A11 0x06C
|
|
#define GPMC_A12 0x070
|
|
#define GPMC_A13 0x074
|
|
#define GPMC_A14 0x078
|
|
#define GPMC_A15 0x07C
|
|
#define GPMC_A16 0x080
|
|
#define GPMC_A17 0x084
|
|
#define GPMC_A18 0x088
|
|
#define GPMC_A19 0x08C
|
|
#define GPMC_A20 0x090
|
|
#define GPMC_A21 0x094
|
|
#define GPMC_A22 0x098
|
|
#define GPMC_A23 0x09C
|
|
#define GPMC_A24 0x0A0
|
|
#define GPMC_A25 0x0A4
|
|
#define GPMC_A26 0x0A8
|
|
#define GPMC_A27 0x0AC
|
|
#define GPMC_CS1 0x0B0
|
|
#define GPMC_CS0 0x0B4
|
|
#define GPMC_CS2 0x0B8
|
|
#define GPMC_CS3 0x0BC
|
|
#define GPMC_CLK 0x0C0
|
|
#define GPMC_ADVN_ALE 0x0C4
|
|
#define GPMC_OEN_REN 0x0C8
|
|
#define GPMC_WEN 0x0CC
|
|
#define GPMC_BEN0 0x0D0
|
|
#define GPMC_BEN1 0x0D4
|
|
#define GPMC_WAIT0 0x0D8
|
|
#define VIN1A_CLK0 0x0DC
|
|
#define VIN1B_CLK1 0x0E0
|
|
#define VIN1A_DE0 0x0E4
|
|
#define VIN1A_FLD0 0x0E8
|
|
#define VIN1A_HSYNC0 0x0EC
|
|
#define VIN1A_VSYNC0 0x0F0
|
|
#define VIN1A_D0 0x0F4
|
|
#define VIN1A_D1 0x0F8
|
|
#define VIN1A_D2 0x0FC
|
|
#define VIN1A_D3 0x100
|
|
#define VIN1A_D4 0x104
|
|
#define VIN1A_D5 0x108
|
|
#define VIN1A_D6 0x10C
|
|
#define VIN1A_D7 0x110
|
|
#define VIN1A_D8 0x114
|
|
#define VIN1A_D9 0x118
|
|
#define VIN1A_D10 0x11C
|
|
#define VIN1A_D11 0x120
|
|
#define VIN1A_D12 0x124
|
|
#define VIN1A_D13 0x128
|
|
#define VIN1A_D14 0x12C
|
|
#define VIN1A_D15 0x130
|
|
#define VIN1A_D16 0x134
|
|
#define VIN1A_D17 0x138
|
|
#define VIN1A_D18 0x13C
|
|
#define VIN1A_D19 0x140
|
|
#define VIN1A_D20 0x144
|
|
#define VIN1A_D21 0x148
|
|
#define VIN1A_D22 0x14C
|
|
#define VIN1A_D23 0x150
|
|
#define VIN2A_CLK0 0x154
|
|
#define VIN2A_DE0 0x158
|
|
#define VIN2A_FLD0 0x15C
|
|
#define VIN2A_HSYNC0 0x160
|
|
#define VIN2A_VSYNC0 0x164
|
|
#define VIN2A_D0 0x168
|
|
#define VIN2A_D1 0x16C
|
|
#define VIN2A_D2 0x170
|
|
#define VIN2A_D3 0x174
|
|
#define VIN2A_D4 0x178
|
|
#define VIN2A_D5 0x17C
|
|
#define VIN2A_D6 0x180
|
|
#define VIN2A_D7 0x184
|
|
#define VIN2A_D8 0x188
|
|
#define VIN2A_D9 0x18C
|
|
#define VIN2A_D10 0x190
|
|
#define VIN2A_D11 0x194
|
|
#define VIN2A_D12 0x198
|
|
#define VIN2A_D13 0x19C
|
|
#define VIN2A_D14 0x1A0
|
|
#define VIN2A_D15 0x1A4
|
|
#define VIN2A_D16 0x1A8
|
|
#define VIN2A_D17 0x1AC
|
|
#define VIN2A_D18 0x1B0
|
|
#define VIN2A_D19 0x1B4
|
|
#define VIN2A_D20 0x1B8
|
|
#define VIN2A_D21 0x1BC
|
|
#define VIN2A_D22 0x1C0
|
|
#define VIN2A_D23 0x1C4
|
|
#define VOUT1_CLK 0x1C8
|
|
#define VOUT1_DE 0x1CC
|
|
#define VOUT1_FLD 0x1D0
|
|
#define VOUT1_HSYNC 0x1D4
|
|
#define VOUT1_VSYNC 0x1D8
|
|
#define VOUT1_D0 0x1DC
|
|
#define VOUT1_D1 0x1E0
|
|
#define VOUT1_D2 0x1E4
|
|
#define VOUT1_D3 0x1E8
|
|
#define VOUT1_D4 0x1EC
|
|
#define VOUT1_D5 0x1F0
|
|
#define VOUT1_D6 0x1F4
|
|
#define VOUT1_D7 0x1F8
|
|
#define VOUT1_D8 0x1FC
|
|
#define VOUT1_D9 0x200
|
|
#define VOUT1_D10 0x204
|
|
#define VOUT1_D11 0x208
|
|
#define VOUT1_D12 0x20C
|
|
#define VOUT1_D13 0x210
|
|
#define VOUT1_D14 0x214
|
|
#define VOUT1_D15 0x218
|
|
#define VOUT1_D16 0x21C
|
|
#define VOUT1_D17 0x220
|
|
#define VOUT1_D18 0x224
|
|
#define VOUT1_D19 0x228
|
|
#define VOUT1_D20 0x22C
|
|
#define VOUT1_D21 0x230
|
|
#define VOUT1_D22 0x234
|
|
#define VOUT1_D23 0x238
|
|
#define MDIO_MCLK 0x23C
|
|
#define MDIO_D 0x240
|
|
#define RMII_MHZ_50_CLK 0x244
|
|
#define UART3_RXD 0x248
|
|
#define UART3_TXD 0x24C
|
|
#define RGMII0_TXC 0x250
|
|
#define RGMII0_TXCTL 0x254
|
|
#define RGMII0_TXD3 0x258
|
|
#define RGMII0_TXD2 0x25C
|
|
#define RGMII0_TXD1 0x260
|
|
#define RGMII0_TXD0 0x264
|
|
#define RGMII0_RXC 0x268
|
|
#define RGMII0_RXCTL 0x26C
|
|
#define RGMII0_RXD3 0x270
|
|
#define RGMII0_RXD2 0x274
|
|
#define RGMII0_RXD1 0x278
|
|
#define RGMII0_RXD0 0x27C
|
|
#define USB1_DRVVBUS 0x280
|
|
#define USB2_DRVVBUS 0x284
|
|
#define GPIO6_14 0x288
|
|
#define GPIO6_15 0x28C
|
|
#define GPIO6_16 0x290
|
|
#define XREF_CLK0 0x294
|
|
#define XREF_CLK1 0x298
|
|
#define XREF_CLK2 0x29C
|
|
#define XREF_CLK3 0x2A0
|
|
#define MCASP1_ACLKX 0x2A4
|
|
#define MCASP1_FSX 0x2A8
|
|
#define MCASP1_ACLKR 0x2AC
|
|
#define MCASP1_FSR 0x2B0
|
|
#define MCASP1_AXR0 0x2B4
|
|
#define MCASP1_AXR1 0x2B8
|
|
#define MCASP1_AXR2 0x2BC
|
|
#define MCASP1_AXR3 0x2C0
|
|
#define MCASP1_AXR4 0x2C4
|
|
#define MCASP1_AXR5 0x2C8
|
|
#define MCASP1_AXR6 0x2CC
|
|
#define MCASP1_AXR7 0x2D0
|
|
#define MCASP1_AXR8 0x2D4
|
|
#define MCASP1_AXR9 0x2D8
|
|
#define MCASP1_AXR10 0x2DC
|
|
#define MCASP1_AXR11 0x2E0
|
|
#define MCASP1_AXR12 0x2E4
|
|
#define MCASP1_AXR13 0x2E8
|
|
#define MCASP1_AXR14 0x2EC
|
|
#define MCASP1_AXR15 0x2F0
|
|
#define MCASP2_ACLKX 0x2F4
|
|
#define MCASP2_FSX 0x2F8
|
|
#define MCASP2_ACLKR 0x2FC
|
|
#define MCASP2_FSR 0x300
|
|
#define MCASP2_AXR0 0x304
|
|
#define MCASP2_AXR1 0x308
|
|
#define MCASP2_AXR2 0x30C
|
|
#define MCASP2_AXR3 0x310
|
|
#define MCASP2_AXR4 0x314
|
|
#define MCASP2_AXR5 0x318
|
|
#define MCASP2_AXR6 0x31C
|
|
#define MCASP2_AXR7 0x320
|
|
#define MCASP3_ACLKX 0x324
|
|
#define MCASP3_FSX 0x328
|
|
#define MCASP3_AXR0 0x32C
|
|
#define MCASP3_AXR1 0x330
|
|
#define MCASP4_ACLKX 0x334
|
|
#define MCASP4_FSX 0x338
|
|
#define MCASP4_AXR0 0x33C
|
|
#define MCASP4_AXR1 0x340
|
|
#define MCASP5_ACLKX 0x344
|
|
#define MCASP5_FSX 0x348
|
|
#define MCASP5_AXR0 0x34C
|
|
#define MCASP5_AXR1 0x350
|
|
#define MMC1_CLK 0x354
|
|
#define MMC1_CMD 0x358
|
|
#define MMC1_DAT0 0x35C
|
|
#define MMC1_DAT1 0x360
|
|
#define MMC1_DAT2 0x364
|
|
#define MMC1_DAT3 0x368
|
|
#define MMC1_SDCD 0x36C
|
|
#define MMC1_SDWP 0x370
|
|
#define GPIO6_10 0x374
|
|
#define GPIO6_11 0x378
|
|
#define MMC3_CLK 0x37C
|
|
#define MMC3_CMD 0x380
|
|
#define MMC3_DAT0 0x384
|
|
#define MMC3_DAT1 0x388
|
|
#define MMC3_DAT2 0x38C
|
|
#define MMC3_DAT3 0x390
|
|
#define MMC3_DAT4 0x394
|
|
#define MMC3_DAT5 0x398
|
|
#define MMC3_DAT6 0x39C
|
|
#define MMC3_DAT7 0x3A0
|
|
#define SPI1_SCLK 0x3A4
|
|
#define SPI1_D1 0x3A8
|
|
#define SPI1_D0 0x3AC
|
|
#define SPI1_CS0 0x3B0
|
|
#define SPI1_CS1 0x3B4
|
|
#define SPI1_CS2 0x3B8
|
|
#define SPI1_CS3 0x3BC
|
|
#define SPI2_SCLK 0x3C0
|
|
#define SPI2_D1 0x3C4
|
|
#define SPI2_D0 0x3C8
|
|
#define SPI2_CS0 0x3CC
|
|
#define DCAN1_TX 0x3D0
|
|
#define DCAN1_RX 0x3D4
|
|
#define DCAN2_TX 0x3D8
|
|
#define DCAN2_RX 0x3DC
|
|
#define UART1_RXD 0x3E0
|
|
#define UART1_TXD 0x3E4
|
|
#define UART1_CTSN 0x3E8
|
|
#define UART1_RTSN 0x3EC
|
|
#define UART2_RXD 0x3F0
|
|
#define UART2_TXD 0x3F4
|
|
#define UART2_CTSN 0x3F8
|
|
#define UART2_RTSN 0x3FC
|
|
#define I2C1_SDA 0x400
|
|
#define I2C1_SCL 0x404
|
|
#define I2C2_SDA 0x408
|
|
#define I2C2_SCL 0x40C
|
|
#define I2C3_SDA 0x410
|
|
#define I2C3_SCL 0x414
|
|
#define WAKEUP0 0x418
|
|
#define WAKEUP1 0x41C
|
|
#define WAKEUP2 0x420
|
|
#define WAKEUP3 0x424
|
|
#define ON_OFF 0x428
|
|
#define RTC_PORZ 0x42C
|
|
#define TMS 0x430
|
|
#define TDI 0x434
|
|
#define TDO 0x438
|
|
#define TCLK 0x43C
|
|
#define TRSTN 0x440
|
|
#define RTCK 0x444
|
|
#define EMU0 0x448
|
|
#define EMU1 0x44C
|
|
#define EMU2 0x450
|
|
#define EMU3 0x454
|
|
#define EMU4 0x458
|
|
#define RESETN 0x45C
|
|
#define NMIN 0x460
|
|
#define RSTOUTN 0x464
|
|
|
|
#endif /* _MUX_DRA7XX_H_ */
|