OMAP5: Add the Changes required for OMAP5 ES1.0 silicon.
Subsystems (2)
cover OMAP5: Add the Changes required for OMAP5 ES1.0 silicon.
OMAP5 soc support is already present in the mainline. The below are the changes that were identified during the actual silicon wakeup. Briefly, the changes address clocks, ddr, mux, poweric, mmc, io settings required/recommended for the ip. Couple of bug fixes are also added as a part of this series.
The series has been tested on
OMAP5430 ES1.0,
OMAP4 PANDA and SDP boards.
Balaji T K (4):
arm: omap5: correct boot device mode7 for eMMC
power: twl6035: add palmas PMIC support
omap5: pbias ldo9 turn on
mmc: omap5evm: Add eMMC saveenv support
R Sricharan (13):
OMAP5: clocks: Change clock settings as required for ES1.0 silicon.
OMAP5: board: Add pinmux data for omap5_evm board.
omap5: io: Configure the io settings for omap5430 sevm board.
OMAP5: emif/ddr: Change emif settings as required for ES1.0 silicon.
OMAP5: palmas: Configure nominal opp vdd values
OMAP5: hwinit: Add the missing break statement
OMAP4/5: Make the silicon revision variable common.
OMAP5: SRAM: Change the SRAM base address.
OMAP4/5: Make the sysctrl structure common
OMAP4/5: device: Add support to get the device type.
OMAP5: defconfig: Align the defconfig for 5430 ES1.0
OMAP5: ddr: Change the ddr device name.
OMAP4/5: emif: Correct the emif power mgt shadow register bit fields.
arch/arm/cpu/armv7/omap-common/clocks-common.c | 20 +-
arch/arm/cpu/armv7/omap-common/emif-common.c | 40 ++-
arch/arm/cpu/armv7/omap-common/hwinit-common.c | 6 +-
arch/arm/cpu/armv7/omap-common/spl.c | 1 +
arch/arm/cpu/armv7/omap-common/spl_mmc.c | 1 +
arch/arm/cpu/armv7/omap4/clocks.c | 15 +
arch/arm/cpu/armv7/omap4/hwinit.c | 24 +-
arch/arm/cpu/armv7/omap4/sdram_elpida.c | 4 +
arch/arm/cpu/armv7/omap5/Makefile | 2 +-
arch/arm/cpu/armv7/omap5/clocks.c | 138 ++++--
arch/arm/cpu/armv7/omap5/hwinit.c | 90 ++++-
.../cpu/armv7/omap5/{sdram_elpida.c => sdram.c} | 101 +++--
arch/arm/include/asm/arch-omap4/clocks.h | 1 +
arch/arm/include/asm/arch-omap4/omap.h | 14 +-
arch/arm/include/asm/arch-omap4/sys_proto.h | 6 -
arch/arm/include/asm/arch-omap5/clocks.h | 35 +-
arch/arm/include/asm/arch-omap5/mux_omap5.h | 502 ++++++++++----------
arch/arm/include/asm/arch-omap5/omap.h | 142 +++++--
arch/arm/include/asm/arch-omap5/sys_proto.h | 6 -
arch/arm/include/asm/emif.h | 76 +++-
arch/arm/include/asm/omap_common.h | 11 +-
board/ti/omap5_evm/evm.c | 6 +-
board/ti/omap5_evm/mux_data.h | 484 ++++++++++---------
drivers/mmc/omap_hsmmc.c | 37 ++-
drivers/power/Makefile | 1 +
drivers/power/twl6035.c | 68 +++
include/configs/omap5_evm.h | 28 +-
include/twl6035.h | 42 ++
28 files changed, 1240 insertions(+), 661 deletions(-)
rename arch/arm/cpu/armv7/omap5/{sdram_elpida.c => sdram.c} (64%)
create mode 100644 drivers/power/twl6035.c
create mode 100644 include/twl6035.hPATCH 1/17 OMAP5: clocks: Change clock settings as required for ES1.0 silicon.
Aligning all the clock related settings like the dpll frequencies, their respective clock outputs, etc to the ideal values recommended for OMAP5430 ES1.0 silicon.
--- arch/arm/cpu/armv7/omap-common/clocks-common.c | 5 + arch/arm/cpu/armv7/omap5/clocks.c | 107 ++++++++++++++++-------- arch/arm/include/asm/arch-omap5/clocks.h | 19 ++++- 3 files changed, 93 insertions(+), 38 deletions(-)
arch/arm/cpu/armv7/omap-common/clocks-common.c +5 -0
@@ -245,6 +245,11 @@ void configure_mpu_dpll(void) CM_CLKSEL_DCC_EN_MASK); } +setbits_le32 (&prcm->cm_mpu_mpu_clkctrl, +MPU_CLKCTRL_CLKSEL_EMIF_DIV_MODE_MASK ); +setbits_le32 (&prcm->cm_mpu_mpu_clkctrl, +MPU_CLKCTRL_CLKSEL_ABE_DIV_MODE_MASK ); + params =get_mpu_dpll_params ();do_setup_dpll (&prcm->cm_clkmode_dpll_mpu, params,DPLL_LOCK ,"mpu" );
arch/arm/cpu/armv7/omap5/clocks.c +72 -35
169 lines not on this page · raw message
arch/arm/include/asm/arch-omap5/clocks.h +16 -3
@@ -473,9 +473,11 @@ struct omap5_prcm_regs {u32 cm_wkup_rtc_clkctrl;/* 4ae07880 */ u32 pad214;/* 4ae07884 */ u32 cm_wkup_bandgap_clkctrl;/* 4ae07888 */ -u32 pad215[197 ];/* 4ae0788c */ +u32 pad215[1 ];/* 4ae0788c */ +u32 cm_wkupaon_scrm_clkctrl;/* 4ae07890 */ +u32 pad216[195 ];u32 prm_vc_val_bypass;/* 4ae07ba0 */ -u32 pad216[4 ]; +u32 pad217[4 ];u32 prm_vc_cfg_i2c_mode;/* 4ae07bb4 */ u32 prm_vc_cfg_i2c_clk;/* 4ae07bb8 */ };
@@ -514,6 +516,10 @@ struct omap5_prcm_regs {/* CM_IDLEST_DPLL fields */ #define ST_DPLL_CLK_MASK 1 +/* SGX */ +#define CLKSEL_GPU_HYD_GCLK_MASK (1 << 25) +#define CLKSEL_GPU_CORE_GCLK_MASK (1 << 24) +/* CM_CLKSEL_DPLL */ #define CM_CLKSEL_DPLL_DPLL_SD_DIV_SHIFT 24#define CM_CLKSEL_DPLL_DPLL_SD_DIV_MASK (0xFF << 24)
@@ -591,6 +597,7 @@ struct omap5_prcm_regs {/* CM_L3INIT_HSMMCn_CLKCTRL */ #define HSMMC_CLKCTRL_CLKSEL_MASK (1 << 24) +#define HSMMC_CLKCTRL_CLKSEL_DIV_MASK (1 << 25)/* CM_WKUP_GPTIMER1_CLKCTRL */ #define GPTIMER1_CLKCTRL_CLKSEL_MASK (1 << 24)
@@ -610,6 +617,12 @@ struct omap5_prcm_regs {#define MPU_CLKCTRL_CLKSEL_ABE_DIV_MODE_SHIFT 25#define MPU_CLKCTRL_CLKSEL_ABE_DIV_MODE_MASK (1 << 25) +/* CM_WKUPAON_SCRM_CLKCTRL */ +#define OPTFCLKEN_SCRM_PER_SHIFT 9 +#define OPTFCLKEN_SCRM_PER_MASK (1 << 9) +#define OPTFCLKEN_SCRM_CORE_SHIFT 8 +#define OPTFCLKEN_SCRM_CORE_MASK (1 << 8) +/* Clock frequencies */ #define OMAP_SYS_CLK_FREQ_38_4_MHZ 38400000#define OMAP_SYS_CLK_IND_38_4_MHZ 6
@@ -677,7 +690,7 @@ struct dpll_regs {u32 cm_div_h12_dpll;u32 cm_div_h13_dpll;u32 cm_div_h14_dpll; -u32 reserved[2 ]; +u32 reserved[3 ];u32 cm_div_h22_dpll;u32 cm_div_h23_dpll; };
Signature · 1 line
1.7.1
PATCH 2/17 OMAP5: board: Add pinmux data for omap5_evm board.
In reply to R SricharanAdding the full pinmux data for OMAP5430 sevm board.
---
There are a couple of check patch warnings for 80 line characters. But the data looks better readable this way.
arch/arm/include/asm/arch-omap5/mux_omap5.h | 502 +++++++++++++-------------- board/ti/omap5_evm/mux_data.h | 484 ++++++++++++++------------ 2 files changed, 504 insertions(+), 482 deletions(-)
arch/arm/include/asm/arch-omap5/mux_omap5.h +250 -252
@@ -87,258 +87,256 @@ struct pad_conf_entry {#define CORE_REVISION 0x0000#define CORE_HWINFO 0x0004#define CORE_SYSCONFIG 0x0010 -#define GPMC_AD0 0x0040 -#define GPMC_AD1 0x0042 -#define GPMC_AD2 0x0044 -#define GPMC_AD3 0x0046 -#define GPMC_AD4 0x0048 -#define GPMC_AD5 0x004A -#define GPMC_AD6 0x004C -#define GPMC_AD7 0x004E -#define GPMC_AD8 0x0050 -#define GPMC_AD9 0x0052 -#define GPMC_AD10 0x0054 -#define GPMC_AD11 0x0056 -#define GPMC_AD12 0x0058 -#define GPMC_AD13 0x005A -#define GPMC_AD14 0x005C -#define GPMC_AD15 0x005E -#define GPMC_A16 0x0060 -#define GPMC_A17 0x0062 -#define GPMC_A18 0x0064 -#define GPMC_A19 0x0066 -#define GPMC_A20 0x0068 -#define GPMC_A21 0x006A -#define GPMC_A22 0x006C -#define GPMC_A23 0x006E -#define GPMC_A24 0x0070 -#define GPMC_A25 0x0072 -#define GPMC_NCS0 0x0074 -#define GPMC_NCS1 0x0076 -#define GPMC_NCS2 0x0078 -#define GPMC_NCS3 0x007A -#define GPMC_NWP 0x007C -#define GPMC_CLK 0x007E -#define GPMC_NADV_ALE 0x0080 -#define GPMC_NOE 0x0082 -#define GPMC_NWE 0x0084 -#define GPMC_NBE0_CLE 0x0086 -#define GPMC_NBE1 0x0088 -#define GPMC_WAIT0 0x008A -#define GPMC_WAIT1 0x008C -#define C2C_DATA11 0x008E -#define C2C_DATA12 0x0090 -#define C2C_DATA13 0x0092 -#define C2C_DATA14 0x0094 -#define C2C_DATA15 0x0096 -#define HDMI_HPD 0x0098 -#define HDMI_CEC 0x009A -#define HDMI_DDC_SCL 0x009C -#define HDMI_DDC_SDA 0x009E -#define CSI21_DX0 0x00A0 -#define CSI21_DY0 0x00A2 -#define CSI21_DX1 0x00A4 -#define CSI21_DY1 0x00A6 -#define CSI21_DX2 0x00A8 -#define CSI21_DY2 0x00AA -#define CSI21_DX3 0x00AC -#define CSI21_DY3 0x00AE -#define CSI21_DX4 0x00B0 -#define CSI21_DY4 0x00B2 -#define CSI22_DX0 0x00B4 -#define CSI22_DY0 0x00B6 -#define CSI22_DX1 0x00B8 -#define CSI22_DY1 0x00BA -#define CAM_SHUTTER 0x00BC -#define CAM_STROBE 0x00BE -#define CAM_GLOBALRESET 0x00C0 -#define USBB1_ULPITLL_CLK 0x00C2 -#define USBB1_ULPITLL_STP 0x00C4 -#define USBB1_ULPITLL_DIR 0x00C6 -#define USBB1_ULPITLL_NXT 0x00C8 -#define USBB1_ULPITLL_DAT0 0x00CA -#define USBB1_ULPITLL_DAT1 0x00CC -#define USBB1_ULPITLL_DAT2 0x00CE -#define USBB1_ULPITLL_DAT3 0x00D0 -#define USBB1_ULPITLL_DAT4 0x00D2 -#define USBB1_ULPITLL_DAT5 0x00D4 -#define USBB1_ULPITLL_DAT6 0x00D6 -#define USBB1_ULPITLL_DAT7 0x00D8 -#define USBB1_HSIC_DATA 0x00DA -#define USBB1_HSIC_STROBE 0x00DC -#define USBC1_ICUSB_DP 0x00DE -#define USBC1_ICUSB_DM 0x00E0 -#define SDMMC1_CLK 0x00E2 -#define SDMMC1_CMD 0x00E4 -#define SDMMC1_DAT0 0x00E6 -#define SDMMC1_DAT1 0x00E8 -#define SDMMC1_DAT2 0x00EA -#define SDMMC1_DAT3 0x00EC -#define SDMMC1_DAT4 0x00EE -#define SDMMC1_DAT5 0x00F0 -#define SDMMC1_DAT6 0x00F2 -#define SDMMC1_DAT7 0x00F4 -#define ABE_MCBSP2_CLKX 0x00F6 -#define ABE_MCBSP2_DR 0x00F8 -#define ABE_MCBSP2_DX 0x00FA -#define ABE_MCBSP2_FSX 0x00FC -#define ABE_MCBSP1_CLKX 0x00FE -#define ABE_MCBSP1_DR 0x0100 -#define ABE_MCBSP1_DX 0x0102 -#define ABE_MCBSP1_FSX 0x0104 -#define ABE_PDM_UL_DATA 0x0106 -#define ABE_PDM_DL_DATA 0x0108 -#define ABE_PDM_FRAME 0x010A -#define ABE_PDM_LB_CLK 0x010C -#define ABE_CLKS 0x010E -#define ABE_DMIC_CLK1 0x0110 -#define ABE_DMIC_DIN1 0x0112 -#define ABE_DMIC_DIN2 0x0114 -#define ABE_DMIC_DIN3 0x0116 -#define UART2_CTS 0x0118 -#define UART2_RTS 0x011A -#define UART2_RX 0x011C -#define UART2_TX 0x011E -#define HDQ_SIO 0x0120 -#define I2C1_SCL 0x0122 -#define I2C1_SDA 0x0124 -#define I2C2_SCL 0x0126 -#define I2C2_SDA 0x0128 -#define I2C3_SCL 0x012A -#define I2C3_SDA 0x012C -#define I2C4_SCL 0x012E -#define I2C4_SDA 0x0130 -#define MCSPI1_CLK 0x0132 -#define MCSPI1_SOMI 0x0134 -#define MCSPI1_SIMO 0x0136 -#define MCSPI1_CS0 0x0138 -#define MCSPI1_CS1 0x013A -#define MCSPI1_CS2 0x013C -#define MCSPI1_CS3 0x013E -#define UART3_CTS_RCTX 0x0140 -#define UART3_RTS_SD 0x0142 -#define UART3_RX_IRRX 0x0144 -#define UART3_TX_IRTX 0x0146 -#define SDMMC5_CLK 0x0148 -#define SDMMC5_CMD 0x014A -#define SDMMC5_DAT0 0x014C -#define SDMMC5_DAT1 0x014E -#define SDMMC5_DAT2 0x0150 -#define SDMMC5_DAT3 0x0152 -#define MCSPI4_CLK 0x0154 -#define MCSPI4_SIMO 0x0156 -#define MCSPI4_SOMI 0x0158 -#define MCSPI4_CS0 0x015A -#define UART4_RX 0x015C -#define UART4_TX 0x015E -#define USBB2_ULPITLL_CLK 0x0160 -#define USBB2_ULPITLL_STP 0x0162 -#define USBB2_ULPITLL_DIR 0x0164 -#define USBB2_ULPITLL_NXT 0x0166 -#define USBB2_ULPITLL_DAT0 0x0168 -#define USBB2_ULPITLL_DAT1 0x016A -#define USBB2_ULPITLL_DAT2 0x016C -#define USBB2_ULPITLL_DAT3 0x016E -#define USBB2_ULPITLL_DAT4 0x0170 -#define USBB2_ULPITLL_DAT5 0x0172 -#define USBB2_ULPITLL_DAT6 0x0174 -#define USBB2_ULPITLL_DAT7 0x0176 -#define USBB2_HSIC_DATA 0x0178 -#define USBB2_HSIC_STROBE 0x017A -#define UNIPRO_TX0 0x017C -#define UNIPRO_TY0 0x017E -#define UNIPRO_TX1 0x0180 -#define UNIPRO_TY1 0x0182 -#define UNIPRO_TX2 0x0184 -#define UNIPRO_TY2 0x0186 -#define UNIPRO_RX0 0x0188 -#define UNIPRO_RY0 0x018A -#define UNIPRO_RX1 0x018C -#define UNIPRO_RY1 0x018E -#define UNIPRO_RX2 0x0190 -#define UNIPRO_RY2 0x0192 -#define USBA0_OTG_CE 0x0194 -#define USBA0_OTG_DP 0x0196 -#define USBA0_OTG_DM 0x0198 -#define FREF_CLK1_OUT 0x019A -#define FREF_CLK2_OUT 0x019C -#define SYS_NIRQ1 0x019E -#define SYS_NIRQ2 0x01A0 -#define SYS_BOOT0 0x01A2 -#define SYS_BOOT1 0x01A4 -#define SYS_BOOT2 0x01A6 -#define SYS_BOOT3 0x01A8 -#define SYS_BOOT4 0x01AA -#define SYS_BOOT5 0x01AC -#define DPM_EMU0 0x01AE -#define DPM_EMU1 0x01B0 -#define DPM_EMU2 0x01B2 -#define DPM_EMU3 0x01B4 -#define DPM_EMU4 0x01B6 -#define DPM_EMU5 0x01B8 -#define DPM_EMU6 0x01BA -#define DPM_EMU7 0x01BC -#define DPM_EMU8 0x01BE -#define DPM_EMU9 0x01C0 -#define DPM_EMU10 0x01C2 -#define DPM_EMU11 0x01C4 -#define DPM_EMU12 0x01C6 -#define DPM_EMU13 0x01C8 -#define DPM_EMU14 0x01CA -#define DPM_EMU15 0x01CC -#define DPM_EMU16 0x01CE -#define DPM_EMU17 0x01D0 -#define DPM_EMU18 0x01D2 -#define DPM_EMU19 0x01D4 -#define WAKEUPEVENT_0 0x01D8 -#define WAKEUPEVENT_1 0x01DC -#define WAKEUPEVENT_2 0x01E0 -#define WAKEUPEVENT_3 0x01E4 -#define WAKEUPEVENT_4 0x01E8 -#define WAKEUPEVENT_5 0x01EC -#define WAKEUPEVENT_6 0x01F0 +#define EMMC_CLK 0x0040 +#define EMMC_CMD 0x0042 +#define EMMC_DATA0 0x0044 +#define EMMC_DATA1 0x0046 +#define EMMC_DATA2 0x0048 +#define EMMC_DATA3 0x004a +#define EMMC_DATA4 0x004c +#define EMMC_DATA5 0x004e +#define EMMC_DATA6 0x0050 +#define EMMC_DATA7 0x0052 +#define C2C_CLKOUT0 0x0054 +#define C2C_CLKOUT1 0x0056 +#define C2C_CLKIN0 0x0058 +#define C2C_CLKIN1 0x005a +#define C2C_DATAIN0 0x005c +#define C2C_DATAIN1 0x005e +#define C2C_DATAIN2 0x0060 +#define C2C_DATAIN3 0x0062 +#define C2C_DATAIN4 0x0064 +#define C2C_DATAIN5 0x0066 +#define C2C_DATAIN6 0x0068 +#define C2C_DATAIN7 0x006a +#define C2C_DATAOUT0 0x006c +#define C2C_DATAOUT1 0x006e +#define C2C_DATAOUT2 0x0070 +#define C2C_DATAOUT3 0x0072 +#define C2C_DATAOUT4 0x0074 +#define C2C_DATAOUT5 0x0076 +#define C2C_DATAOUT6 0x0078 +#define C2C_DATAOUT7 0x007a +#define C2C_DATA8 0x007c +#define C2C_DATA9 0x007e +#define C2C_DATA10 0x0080 +#define C2C_DATA11 0x0082 +#define C2C_DATA12 0x0084 +#define C2C_DATA13 0x0086 +#define C2C_DATA14 0x0088 +#define C2C_DATA15 0x008a +#define LLIA_WAKEREQOUT 0x008c +#define LLIB_WAKEREQOUT 0x008e +#define HSI1_ACREADY 0x0090 +#define HSI1_CAREADY 0x0092 +#define HSI1_ACWAKE 0x0094 +#define HSI1_CAWAKE 0x0096 +#define HSI1_ACFLAG 0x0098 +#define HSI1_ACDATA 0x009a +#define HSI1_CAFLAG 0x009c +#define HSI1_CADATA 0x009e +#define UART1_TX 0x00a0 +#define UART1_CTS 0x00a2 +#define UART1_RX 0x00a4 +#define UART1_RTS 0x00a6 +#define HSI2_CAREADY 0x00a8 +#define HSI2_ACREADY 0x00aa +#define HSI2_CAWAKE 0x00ac +#define HSI2_ACWAKE 0x00ae +#define HSI2_CAFLAG 0x00b0 +#define HSI2_CADATA 0x00b2 +#define HSI2_ACFLAG 0x00b4 +#define HSI2_ACDATA 0x00b6 +#define UART2_RTS 0x00b8 +#define UART2_CTS 0x00ba +#define UART2_RX 0x00bc +#define UART2_TX 0x00be +#define USBB1_HSIC_STROBE 0x00c0 +#define USBB1_HSIC_DATA 0x00c2 +#define USBB2_HSIC_STROBE 0x00c4 +#define USBB2_HSIC_DATA 0x00c6 +#define TIMER10_PWM_EVT 0x00c8 +#define DSIPORTA_TE0 0x00ca +#define DSIPORTA_LANE0X 0x00cc +#define DSIPORTA_LANE0Y 0x00ce +#define DSIPORTA_LANE1X 0x00d0 +#define DSIPORTA_LANE1Y 0x00d2 +#define DSIPORTA_LANE2X 0x00d4 +#define DSIPORTA_LANE2Y 0x00d6 +#define DSIPORTA_LANE3X 0x00d8 +#define DSIPORTA_LANE3Y 0x00da +#define DSIPORTA_LANE4X 0x00dc +#define DSIPORTA_LANE4Y 0x00de +#define DSIPORTC_LANE0X 0x00e0 +#define DSIPORTC_LANE0Y 0x00e2 +#define DSIPORTC_LANE1X 0x00e4 +#define DSIPORTC_LANE1Y 0x00e6 +#define DSIPORTC_LANE2X 0x00e8 +#define DSIPORTC_LANE2Y 0x00ea +#define DSIPORTC_LANE3X 0x00ec +#define DSIPORTC_LANE3Y 0x00ee +#define DSIPORTC_LANE4X 0x00f0 +#define DSIPORTC_LANE4Y 0x00f2 +#define DSIPORTC_TE0 0x00f4 +#define TIMER9_PWM_EVT 0x00f6 +#define I2C4_SCL 0x00f8 +#define I2C4_SDA 0x00fa +#define MCSPI2_CLK 0x00fc +#define MCSPI2_SIMO 0x00fe +#define MCSPI2_SOMI 0x0100 +#define MCSPI2_CS0 0x0102 +#define RFBI_DATA15 0x0104 +#define RFBI_DATA14 0x0106 +#define RFBI_DATA13 0x0108 +#define RFBI_DATA12 0x010a +#define RFBI_DATA11 0x010c +#define RFBI_DATA10 0x010e +#define RFBI_DATA9 0x0110 +#define RFBI_DATA8 0x0112 +#define RFBI_DATA7 0x0114 +#define RFBI_DATA6 0x0116 +#define RFBI_DATA5 0x0118 +#define RFBI_DATA4 0x011a +#define RFBI_DATA3 0x011c +#define RFBI_DATA2 0x011e +#define RFBI_DATA1 0x0120 +#define RFBI_DATA0 0x0122 +#define RFBI_WE 0x0124 +#define RFBI_CS0 0x0126 +#define RFBI_A0 0x0128 +#define RFBI_RE 0x012a +#define RFBI_HSYNC0 0x012c +#define RFBI_TE_VSYNC0 0x012e +#define GPIO6_182 0x0130 +#define GPIO6_183 0x0132 +#define GPIO6_184 0x0134 +#define GPIO6_185 0x0136 +#define GPIO6_186 0x0138 +#define GPIO6_187 0x013a +#define HDMI_CEC 0x013c +#define HDMI_HPD 0x013e +#define HDMI_DDC_SCL 0x0140 +#define HDMI_DDC_SDA 0x0142 +#define CSIPORTC_LANE0X 0x0144 +#define CSIPORTC_LANE0Y 0x0146 +#define CSIPORTC_LANE1X 0x0148 +#define CSIPORTC_LANE1Y 0x014a +#define CSIPORTB_LANE0X 0x014c +#define CSIPORTB_LANE0Y 0x014e +#define CSIPORTB_LANE1X 0x0150 +#define CSIPORTB_LANE1Y 0x0152 +#define CSIPORTB_LANE2X 0x0154 +#define CSIPORTB_LANE2Y 0x0156 +#define CSIPORTA_LANE0X 0x0158 +#define CSIPORTA_LANE0Y 0x015a +#define CSIPORTA_LANE1X 0x015c +#define CSIPORTA_LANE1Y 0x015e +#define CSIPORTA_LANE2X 0x0160 +#define CSIPORTA_LANE2Y 0x0162 +#define CSIPORTA_LANE3X 0x0164 +#define CSIPORTA_LANE3Y 0x0166 +#define CSIPORTA_LANE4X 0x0168 +#define CSIPORTA_LANE4Y 0x016a +#define CAM_SHUTTER 0x016c +#define CAM_STROBE 0x016e +#define CAM_GLOBALRESET 0x0170 +#define TIMER11_PWM_EVT 0x0172 +#define TIMER5_PWM_EVT 0x0174 +#define TIMER6_PWM_EVT 0x0176 +#define TIMER8_PWM_EVT 0x0178 +#define I2C3_SCL 0x017a +#define I2C3_SDA 0x017c +#define GPIO8_233 0x017e +#define GPIO8_234 0x0180 +#define ABE_CLKS 0x0182 +#define ABEDMIC_DIN1 0x0184 +#define ABEDMIC_DIN2 0x0186 +#define ABEDMIC_DIN3 0x0188 +#define ABEDMIC_CLK1 0x018a +#define ABEDMIC_CLK2 0x018c +#define ABEDMIC_CLK3 0x018e +#define ABESLIMBUS1_CLOCK 0x0190 +#define ABESLIMBUS1_DATA 0x0192 +#define ABEMCBSP2_DR 0x0194 +#define ABEMCBSP2_DX 0x0196 +#define ABEMCBSP2_FSX 0x0198 +#define ABEMCBSP2_CLKX 0x019a +#define ABEMCPDM_UL_DATA 0x019c +#define ABEMCPDM_DL_DATA 0x019e +#define ABEMCPDM_FRAME 0x01a0 +#define ABEMCPDM_LB_CLK 0x01a2 +#define WLSDIO_CLK 0x01a4 +#define WLSDIO_CMD 0x01a6 +#define WLSDIO_DATA0 0x01a8 +#define WLSDIO_DATA1 0x01aa +#define WLSDIO_DATA2 0x01ac +#define WLSDIO_DATA3 0x01ae +#define UART5_RX 0x01b0 +#define UART5_TX 0x01b2 +#define UART5_CTS 0x01b4 +#define UART5_RTS 0x01b6 +#define I2C2_SCL 0x01b8 +#define I2C2_SDA 0x01ba +#define MCSPI1_CLK 0x01bc +#define MCSPI1_SOMI 0x01be +#define MCSPI1_SIMO 0x01c0 +#define MCSPI1_CS0 0x01c2 +#define MCSPI1_CS1 0x01c4 +#define I2C5_SCL 0x01c6 +#define I2C5_SDA 0x01c8 +#define PERSLIMBUS2_CLOCK 0x01ca +#define PERSLIMBUS2_DATA 0x01cc +#define UART6_TX 0x01ce +#define UART6_RX 0x01d0 +#define UART6_CTS 0x01d2 +#define UART6_RTS 0x01d4 +#define UART3_CTS_RCTX 0x01d6 +#define UART3_RTS_IRSD 0x01d8 +#define UART3_TX_IRTX 0x01da +#define UART3_RX_IRRX 0x01dc +#define USBB3_HSIC_STROBE 0x01de +#define USBB3_HSIC_DATA 0x01e0 +#define SDCARD_CLK 0x01e2 +#define SDCARD_CMD 0x01e4 +#define SDCARD_DATA2 0x01e6 +#define SDCARD_DATA3 0x01e8 +#define SDCARD_DATA0 0x01ea +#define SDCARD_DATA1 0x01ec +#define USBD0_HS_DP 0x01ee +#define USBD0_HS_DM 0x01f0 +#define I2C1_PMIC_SCL 0x01f2 +#define I2C1_PMIC_SDA 0x01f4 +#define USBD0_SS_RX 0x01f6 -#define WKUP_REVISION 0x0000 -#define WKUP_HWINFO 0x0004 -#define WKUP_SYSCONFIG 0x0010 -#define PAD0_SIM_IO 0x0040 -#define PAD1_SIM_CLK 0x0042 -#define PAD0_SIM_RESET 0x0044 -#define PAD1_SIM_CD 0x0046 -#define PAD0_SIM_PWRCTRL 0x0048 -#define PAD1_SR_SCL 0x004A -#define PAD0_SR_SDA 0x004C -#define PAD1_FREF_XTAL_IN 0x004E -#define PAD0_FREF_SLICER_IN 0x0050 -#define PAD1_FREF_CLK_IOREQ 0x0052 -#define PAD0_FREF_CLK0_OUT 0x0054 -#define PAD1_FREF_CLK3_REQ 0x0056 -#define PAD0_FREF_CLK3_OUT 0x0058 -#define PAD1_FREF_CLK4_REQ 0x005A -#define PAD0_FREF_CLK4_OUT 0x005C -#define PAD1_SYS_32K 0x005E -#define PAD0_SYS_NRESPWRON 0x0060 -#define PAD1_SYS_NRESWARM 0x0062 -#define PAD0_SYS_PWR_REQ 0x0064 -#define PAD1_SYS_PWRON_RESET 0x0066 -#define PAD0_SYS_BOOT6 0x0068 -#define PAD1_SYS_BOOT7 0x006A -#define PAD0_JTAG_NTRST 0x006C -#define PAD1_JTAG_TCK 0x006D -#define PAD0_JTAG_RTCK 0x0070 -#define PAD1_JTAG_TMS_TMSC 0x0072 -#define PAD0_JTAG_TDI 0x0074 -#define PAD1_JTAG_TDO 0x0076 -#define PADCONF_WAKEUPEVENT_0 0x007C -#define CONTROL_SMART1NOPMIO_PADCONF_0 0x05A0 -#define CONTROL_SMART1NOPMIO_PADCONF_1 0x05A4 -#define PADCONF_MODE 0x05A8 -#define CONTROL_XTAL_OSCILLATOR 0x05AC -#define CONTROL_CONTROL_I2C_2 0x0604 -#define CONTROL_CONTROL_JTAG 0x0608 -#define CONTROL_CONTROL_SYS 0x060C -#define CONTROL_SPARE_RW 0x0614 -#define CONTROL_SPARE_R 0x0618 -#define CONTROL_SPARE_R_C0 0x061C +#define LLIA_WAKEREQIN 0x0040 +#define LLIB_WAKEREQIN 0x0042 +#define DRM_EMU0 0x0044 +#define DRM_EMU1 0x0046 +#define JTAG_NTRST 0x0048 +#define JTAG_TCK 0x004a +#define JTAG_RTCK 0x004c +#define JTAG_TMSC 0x004e +#define JTAG_TDI 0x0050 +#define JTAG_TDO 0x0052 +#define SYS_32K 0x0054 +#define FREF_CLK_IOREQ 0x0056 +#define FREF_CLK0_OUT 0x0058 +#define FREF_CLK1_OUT 0x005a +#define FREF_CLK2_OUT 0x005c +#define FREF_CLK2_REQ 0x005e +#define FREF_CLK1_REQ 0x0060 +#define SYS_NRESPWRON 0x0062 +#define SYS_NRESWARM 0x0064 +#define SYS_PWR_REQ 0x0066 +#define SYS_NIRQ1 0x0068 +#define SYS_NIRQ2 0x006a +#define SR_PMIC_SCL 0x006c +#define SR_PMIC_SDA 0x006e +#define SYS_BOOT0 0x0070 +#define SYS_BOOT1 0x0072 +#define SYS_BOOT2 0x0074 +#define SYS_BOOT3 0x0076 +#define SYS_BOOT4 0x0078 +#define SYS_BOOT5 0x007a#endif /* _MUX_OMAP5_H_ */
board/ti/omap5_evm/mux_data.h +254 -230
508 lines not on this page · raw message
Signature · 1 line
1.7.1
PATCH 3/17 omap5: io: Configure the io settings for omap5430 sevm board.
In reply to R SricharanThe control module provides options to set various signal integrity parameters like the output impedance, slew rate, load capacitance for different pad groups. Configure these as required for the omap5430 sevm board.
--- arch/arm/cpu/armv7/omap5/hwinit.c | 83 +++++++++++++++++++++ arch/arm/include/asm/arch-omap5/omap.h | 128 ++++++++++++++++++++++++++------ 2 files changed, 187 insertions(+), 24 deletions(-)
arch/arm/cpu/armv7/omap5/hwinit.c +83 -0
@@ -57,6 +57,89 @@ const struct gpio_bank *const omap_gpio_bank = gpio_bank_54xx;*/ void do_io_settings (void ) { +u32 io_settings =0 , mask =0 ; +struct omap5_sys_ctrl_regs *ioregs_base = + (struct omap5_sys_ctrl_regs *)OMAP5_IOREGS_BASE ; + +/* Impedance settings EMMC, C2C 1,2, hsi2 */ + mask = (ds_mask <<2 ) | (ds_mask <<8 ) | + (ds_mask <<16 ) | (ds_mask <<18 ); + io_settings =readl (&(ioregs_base->control_smart1io_padconf_0)) & + (~mask); + io_settings |= (ds_60_ohm <<8 ) | (ds_45_ohm <<16 ) | + (ds_45_ohm <<18 ) | (ds_60_ohm <<2 ); +writel (io_settings, &(ioregs_base->control_smart1io_padconf_0)); + +/* Impedance settings Mcspi2 */ + mask = (ds_mask <<30 ); + io_settings =readl (&(ioregs_base->control_smart1io_padconf_1)) & + (~mask); + io_settings |= (ds_60_ohm <<30 ); +writel (io_settings, &(ioregs_base->control_smart1io_padconf_1)); + +/* Impedance settings C2C 3,4 */ + mask = (ds_mask <<14 ) | (ds_mask <<16 ); + io_settings =readl (&(ioregs_base->control_smart1io_padconf_2)) & + (~mask); + io_settings |= (ds_45_ohm <<14 ) | (ds_45_ohm <<16 ); +writel (io_settings, &(ioregs_base->control_smart1io_padconf_2)); + +/* Slew rate settings EMMC, C2C 1,2 */ + mask = (sc_mask <<8 ) | (sc_mask <<16 ) | (sc_mask <<18 ); + io_settings =readl (&(ioregs_base->control_smart2io_padconf_0)) & + (~mask); + io_settings |= (sc_fast <<8 ) | (sc_na <<16 ) | (sc_na <<18 ); +writel (io_settings, &(ioregs_base->control_smart2io_padconf_0)); + +/* Slew rate settings hsi2, Mcspi2 */ + mask = (sc_mask <<24 ) | (sc_mask <<28 ); + io_settings =readl (&(ioregs_base->control_smart2io_padconf_1)) & + (~mask); + io_settings |= (sc_fast <<28 ) | (sc_fast <<24 ); +writel (io_settings, &(ioregs_base->control_smart2io_padconf_1)); + +/* Slew rate settings C2C 3,4 */ + mask = (sc_mask <<16 ) | (sc_mask <<18 ); + io_settings =readl (&(ioregs_base->control_smart2io_padconf_2)) & + (~mask); + io_settings |= (sc_na <<16 ) | (sc_na <<18 ); +writel (io_settings, &(ioregs_base->control_smart2io_padconf_2)); + +/* impedance and slew rate settings for usb */ + mask = (usb_i_mask <<29 ) | (usb_i_mask <<26 ) | (usb_i_mask <<23 ) | + (usb_i_mask <<20 ) | (usb_i_mask <<17 ) | (usb_i_mask <<14 ); + io_settings =readl (&(ioregs_base->control_smart3io_padconf_1)) & + (~mask); + io_settings |= (ds_60_ohm <<29 ) | (ds_60_ohm <<26 ) | + (ds_60_ohm <<23 ) | (sc_fast <<20 ) | + (sc_fast <<17 ) | (sc_fast <<14 ); +writel (io_settings, &(ioregs_base->control_smart3io_padconf_1)); + +/* LPDDR2 io settings */ +writel (DDR_IO_I_34OHM_SR_FASTEST_WD_DQ_NO_PULL_DQS_PULL_DOWN , + &(ioregs_base->control_ddrch1_0)); +writel (DDR_IO_I_34OHM_SR_FASTEST_WD_DQ_NO_PULL_DQS_PULL_DOWN , + &(ioregs_base->control_ddrch1_1)); +writel (DDR_IO_I_34OHM_SR_FASTEST_WD_DQ_NO_PULL_DQS_PULL_DOWN , + &(ioregs_base->control_ddrch2_0)); +writel (DDR_IO_I_34OHM_SR_FASTEST_WD_DQ_NO_PULL_DQS_PULL_DOWN , + &(ioregs_base->control_ddrch2_1)); +writel (DDR_IO_I_34OHM_SR_FASTEST_WD_CK_CKE_NCS_CA_PULL_DOWN , + &(ioregs_base->control_lpddr2ch1_0)); +writel (DDR_IO_I_34OHM_SR_FASTEST_WD_CK_CKE_NCS_CA_PULL_DOWN , + &(ioregs_base->control_lpddr2ch1_1)); +writel (DDR_IO_0_DDR2_DQ_INT_EN_ALL_DDR3_CA_DIS_ALL , + &(ioregs_base->control_ddrio_0)); +writel (DDR_IO_1_DQ_OUT_EN_ALL_DQ_INT_EN_ALL , + &(ioregs_base->control_ddrio_1)); +writel (DDR_IO_2_CA_OUT_EN_ALL_CA_INT_EN_ALL , + &(ioregs_base->control_ddrio_2)); + +/* Efuse settings */ +writel (EFUSE_1 , &(ioregs_base->control_efuse_1)); +writel (EFUSE_2 , &(ioregs_base->control_efuse_2)); +writel (EFUSE_3 , &(ioregs_base->control_efuse_3)); +writel (EFUSE_4 , &(ioregs_base->control_efuse_4)); }#endif
arch/arm/include/asm/arch-omap5/omap.h +104 -24
136 lines not on this page · raw message
Signature · 1 line
1.7.1
PATCH 4/17 OMAP5: emif/ddr: Change emif settings as required for ES1.0 silicon.
In reply to R SricharanThe OMAP5 silicon has new DDR PHY design, which includes a external PHY as well. So configuring the ext PHY parameters here. Also the EMIF timimg registers and a couple of DDR mode registers needs to be updated based on the testing from the actual silicon.
--- arch/arm/cpu/armv7/omap-common/emif-common.c | 40 ++++++++++++- arch/arm/cpu/armv7/omap4/sdram_elpida.c | 4 + arch/arm/cpu/armv7/omap5/sdram_elpida.c | 81 ++++++++++++++++++++------ arch/arm/include/asm/emif.h | 72 ++++++++++++++++++++++- 4 files changed, 174 insertions(+), 23 deletions(-)
arch/arm/cpu/armv7/omap-common/emif-common.c +38 -2
@@ -90,20 +90,33 @@ static void do_lpddr2_init(u32 base, u32 cs)* tZQINIT = 1 us * Enough loops assuming a maximum of 2GHz */ +sdelay (2000 ); -set_mr (base, cs,LPDDR2_MR1 ,MR1_BL_8_BT_SEQ_WRAP_EN_NWR_3 ); + +if (omap_revision () >=OMAP5430_ES1_0 ) +set_mr (base, cs,LPDDR2_MR1 ,MR1_BL_8_BT_SEQ_WRAP_EN_NWR_8 ); +else +set_mr (base, cs,LPDDR2_MR1 ,MR1_BL_8_BT_SEQ_WRAP_EN_NWR_3 ); +set_mr (base, cs,LPDDR2_MR16 ,MR16_REF_FULL_ARRAY ); +/* * Enable refresh along with writing MR2 * Encoding of RL in MR2 is (RL - 2) */ mr_addr =LPDDR2_MR2 |EMIF_REG_REFRESH_EN_MASK ;set_mr (base, cs, mr_addr,RL_FINAL -2 ); + +if (omap_revision () >=OMAP5430_ES1_0 ) +set_mr (base, cs,LPDDR2_MR3 ,0x1 ); }static void lpddr2_init (u32 base,const struct emif_regs *regs) {struct emif_reg_struct *emif = (struct emif_reg_struct *)base; +u32 *ext_phy_ctrl_base =0 ; +u32 *emif_ext_phy_ctrl_base =0 ; +u32 i =0 ;/* Not NVM */ clrbits_le32 (&emif->emif_lpddr2_nvm_config,EMIF_REG_CS1NVMEN_MASK );
@@ -119,7 +132,30 @@ static void lpddr2_init(u32 base, const struct emif_regs *regs)* un-locked frequency & default RL */ writel (regs->sdram_config_init, &emif->emif_sdram_config); -writel (regs->emif_ddr_phy_ctlr_1_init, &emif->emif_ddr_phy_ctrl_1); +writel (regs->emif_ddr_phy_ctlr_1, &emif->emif_ddr_phy_ctrl_1); + + ext_phy_ctrl_base = (u32 *) &(regs->emif_ddr_ext_phy_ctrl_1); + emif_ext_phy_ctrl_base = (u32 *) &(emif->emif_ddr_ext_phy_ctrl_1); + +if (omap_revision () >=OMAP5430_ES1_0 ) { +/* Configure external phy control timing registers */ +for (i =0 ; i <EMIF_EXT_PHY_CTRL_TIMING_REG ; i++) { +writel (*ext_phy_ctrl_base, emif_ext_phy_ctrl_base++); +/* Update shadow registers */ +writel (*ext_phy_ctrl_base++, emif_ext_phy_ctrl_base++); + } + +/* external phy 6-24 registers do not change with +* ddr frequency +*/ +for (i =0 ; i <EMIF_EXT_PHY_CTRL_CONST_REG ; i++) { +writel (ext_phy_ctrl_const_base[i], + emif_ext_phy_ctrl_base++); +/* Update shadow registers */ +writel (ext_phy_ctrl_const_base[i], + emif_ext_phy_ctrl_base++); + } + }do_lpddr2_init (base,CS0 );if (regs->sdram_config &EMIF_REG_EBANK_MASK )
arch/arm/cpu/armv7/omap4/sdram_elpida.c +4 -0
@@ -89,6 +89,10 @@ const struct emif_regs emif_regs_elpida_400_mhz_2cs = { .emif_ddr_phy_ctlr_1_init = 0x049ffff5, .emif_ddr_phy_ctlr_1 = 0x049ff418 }; + +/* Dummy registers for OMAP44xx */ +const u32 ext_phy_ctrl_const_base[EMIF_EXT_PHY_CTRL_CONST_REG ]; +const struct dmm_lisa_map_regs lisa_map_2G_x_1_x_2 = { .dmm_lisa_map_0 =0xFF020100 , .dmm_lisa_map_1 =0 ,
arch/arm/cpu/armv7/omap5/sdram_elpida.c +62 -19
116 lines not on this page · raw message
arch/arm/include/asm/emif.h +70 -2
118 lines not on this page · raw message
Signature · 1 line
1.7.1
PATCH 4/17 OMAP5: emif/ddr: Change emif settings as required for ES1.0 silicon.
Quoted 4 lines · R Sricharan
The OMAP5 silicon has new DDR PHY design, which includes a external PHY as well. So configuring the ext PHY parameters here. Also the EMIF timimg registers and a couple of DDR mode registers needs to be updated based on the testing from the actual silicon.
[snip]
arch/arm/cpu/armv7/omap-common/emif-common.c static void lpddr2_init(u32 base, const struct emif_regs *regs) · line 149
Quoted 2 lines
arch/arm/cpu/armv7/omap-common/emif-common.c +2
-0+/* external phy 6-24 registers do not change with +* ddr frequency
Here and elsewhere, incorrectly styled comments.
[snip]
arch/arm/include/asm/emif.h struct dmm_lisa_map_regs { · line 813
Quoted 6 lines
/* Maximum delay before Low Power Modes */
arch/arm/include/asm/emif.h +4
-0+#ifndef CONFIG_OMAP54XX #define REG_CS_TIM 0xF +#else +#define REG_CS_TIM 0x0 +#endif
You used spaces not tabs and I think checkpatch will note that for you as well (so I expect v2 of the series to be checkpatch clean, aside from 80char wide stuff in those tables).
Signature · 1 line
Tom
R
PATCH 4/17 OMAP5: emif/ddr: Change emif settings as required for ES1.0 silicon.
Hi Tom,
Quoted 26 lines · Tom Rini
Quoted 4 lines · R Sricharan
The OMAP5 silicon has new DDR PHY design, which includes a external PHY as well. So configuring the ext PHY parameters here. Also the EMIF timimg registers and a couple of DDR mode registers needs to be updated based on the testing from the actual silicon.
[snip]
arch/arm/cpu/armv7/omap-common/emif-common.c static void lpddr2_init(u32 base, const struct emif_regs *regs) · line 149
Quoted 2 lines
arch/arm/cpu/armv7/omap-common/emif-common.c +2
-0+/* external phy 6-24 registers do not change with +* ddr frequency Here and elsewhere, incorrectly styled comments.
Sorry, missed this. Will correct this in V2
[snip]
arch/arm/include/asm/emif.h struct dmm_lisa_map_regs { · line 813
Quoted 6 lines
/* Maximum delay before Low Power Modes */
arch/arm/include/asm/emif.h +4
-0+#ifndef CONFIG_OMAP54XX #define REG_CS_TIM 0xF +#else +#define REG_CS_TIM 0x0 +#endif You used spaces not tabs and I think checkpatch will note that for you as well (so I expect v2 of the series to be checkpatch clean, aside from 80char wide stuff in those tables).
Quoted 1 line
Ok. Will correct this in V2.
Actually i ran the checkpatch on the patches, but some reason i did
not see this
from checkpatch.
--
Quoted 5 lines
Tom
PATCH 5/17 OMAP5: palmas: Configure nominal opp vdd values
In reply to R SricharanThe nominal opp vdd values as recommended for ES1.0 silicon is set for mpu, core, mm domains using palmas.
--- arch/arm/cpu/armv7/omap-common/clocks-common.c | 15 +++-------- arch/arm/cpu/armv7/omap4/clocks.c | 15 +++++++++++ arch/arm/cpu/armv7/omap5/clocks.c | 31 +++++++++++++++++------- arch/arm/include/asm/arch-omap4/clocks.h | 1 + arch/arm/include/asm/arch-omap5/clocks.h | 16 ++++++++---- 5 files changed, 53 insertions(+), 25 deletions(-)
arch/arm/cpu/armv7/omap-common/clocks-common.c +4 -11
@@ -390,23 +390,16 @@ void do_scale_tps62361(u32 reg, u32 volt_mv)void do_scale_vcore (u32 vcore_reg,u32 volt_mv) {u32 temp, offset_code; -u32 step =12660 ;/* 12.66 mV represented in uV */ +u32 offset = volt_mv;/* convert to uV for better accuracy in the calculations */ offset *=1000 ; -if (omap_revision () ==OMAP4430_ES1_0 ) - offset -=PHOENIX_SMPS_BASE_VOLT_STD_MODE_UV ; -else - offset -=PHOENIX_SMPS_BASE_VOLT_STD_MODE_WITH_OFFSET_UV ; - - offset_code = (offset + step -1 ) / step; -/* The code starts at 1 not 0 */ - offset_code++; + offset_code =get_offset_code (offset); -debug ("do_scale_vcore: volt - %d offset_code - 0x%x\n" , volt_mv, - offset_code); +debug ("do_scale_vcore: vcore_reg - 0x%x volt - %d offset_code - 0x%x\n" , + vcore_reg, volt_mv, offset_code); temp =SMPS_I2C_SLAVE_ADDR | (vcore_reg << PRM_VC_VAL_BYPASS_REGADDR_SHIFT) |
arch/arm/cpu/armv7/omap4/clocks.c +15 -0
@@ -318,6 +318,21 @@ void scale_vcores(void) } } +u32 get_offset_code (u32 offset) +{ +u32 offset_code, step =12660 ;/* 12.66 mV represented in uV */ + +if (omap_revision () ==OMAP4430_ES1_0 ) + offset -=PHOENIX_SMPS_BASE_VOLT_STD_MODE_UV ; +else + offset -=PHOENIX_SMPS_BASE_VOLT_STD_MODE_WITH_OFFSET_UV ; + + offset_code = (offset + step -1 ) / step; + +/* The code starts@1 not 0 */ +return ++offset_code; +} +/* * Enable essential clock domains, modules and * do some additional special settings needed
arch/arm/cpu/armv7/omap5/clocks.c +22 -9
@@ -264,17 +264,30 @@ void scale_vcores(void)setup_sri2c (); -/* Enable 1.22V from TPS for vdd_mpu */ - volt =1220 ; -do_scale_tps62361 (TPS62361_REG_ADDR_SET1 , volt); +/* Palmas settings */ + volt =VDD_MPU ; +do_scale_vcore (SMPS_REG_ADDR_12_MPU , volt); -/* VCORE 1 - for vdd_core */ - volt =1000 ; -do_scale_vcore (SMPS_REG_ADDR_VCORE1 , volt); + volt =VDD_MM ; +do_scale_vcore (SMPS_REG_ADDR_45_IVA , volt); -/* VCORE 2 - for vdd_MM */ - volt =1125 ; -do_scale_vcore (SMPS_REG_ADDR_VCORE2 , volt); + volt =VDD_CORE ; +do_scale_vcore (SMPS_REG_ADDR_8_CORE , volt); +} + +u32 get_offset_code (u32 volt_offset) +{ +u32 offset_code, step =10000 ;/* 10 mV represented in uV */ + + volt_offset -=PALMAS_SMPS_BASE_VOLT_UV ; + + offset_code = (volt_offset + step -1 ) / step; + +/* +* Offset codes 1-6 all give the base voltage in Palmas +* Offset code 0 switches OFF the SMPS +*/ +return offset_code +6 ; }/*
arch/arm/include/asm/arch-omap4/clocks.h +1 -0
@@ -754,6 +754,7 @@ extern struct omap4_prcm_regs *const prcm;extern const u32 sys_clk_array[8 ];void scale_vcores (void ); +u32 get_offset_code (u32 offset);void do_scale_tps62361 (u32 reg,u32 volt_mv);u32 omap_ddr_clk (void );void do_scale_vcore (u32 vcore_reg,u32 volt_mv);
arch/arm/include/asm/arch-omap5/clocks.h +11 -5
@@ -647,12 +647,17 @@ struct omap5_prcm_regs {/* SMPS */ #define SMPS_I2C_SLAVE_ADDR 0x12 -#define SMPS_REG_ADDR_VCORE1 0x55 -#define SMPS_REG_ADDR_VCORE2 0x5B -#define SMPS_REG_ADDR_VCORE3 0x61 +#define SMPS_REG_ADDR_12_MPU 0x23 +#define SMPS_REG_ADDR_45_IVA 0x2B +#define SMPS_REG_ADDR_8_CORE 0x37 -#define PHOENIX_SMPS_BASE_VOLT_STD_MODE_UV 607700 -#define PHOENIX_SMPS_BASE_VOLT_STD_MODE_WITH_OFFSET_UV 709000 +/* PALMAS VOLTAGE SETTINGS in mv for OPP_NOMINAL */ +#define VDD_MPU 1000 +#define VDD_MM 1000 +#define VDD_CORE 1040 + +/* Standard offset is 0.5v expressed in uv */ +#define PALMAS_SMPS_BASE_VOLT_UV 500000/* TPS */ #define TPS62361_I2C_SLAVE_ADDR 0x60
@@ -713,6 +718,7 @@ extern struct omap5_prcm_regs *const prcm;extern const u32 sys_clk_array[8 ];void scale_vcores (void ); +u32 get_offset_code (u32 offset);void do_scale_tps62361 (u32 reg,u32 volt_mv);u32 omap_ddr_clk (void );void do_scale_vcore (u32 vcore_reg,u32 volt_mv);
Signature · 1 line
1.7.1
PATCH 6/17 OMAP5: hwinit: Add the missing break statement
In reply to R SricharanThe break statement is missing in init_omap_revision function, resulting in a wrong revision identification. So fixing this.
--- arch/arm/cpu/armv7/omap5/hwinit.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
arch/arm/cpu/armv7/omap5/hwinit.c +1 -0
@@ -155,6 +155,7 @@ void init_omap_revision(void)switch (rev) {case MIDR_CORTEX_A15_R0P0 : *omap5_revision =OMAP5430_ES1_0 ; +break ;default : *omap5_revision =OMAP5430_SILICON_ID_INVALID ; }
Signature · 1 line
1.7.1
PATCH 7/17 OMAP4/5: Make the silicon revision variable common.
In reply to R SricharanThe different silicon revision variable names was defined for OMAP4 and OMAP5 socs. Making the variable common so that some code can be made generic.
--- arch/arm/cpu/armv7/omap4/hwinit.c | 20 ++++++++++---------- arch/arm/cpu/armv7/omap5/hwinit.c | 6 +++--- arch/arm/include/asm/arch-omap4/sys_proto.h | 6 ------ arch/arm/include/asm/arch-omap5/sys_proto.h | 6 ------ arch/arm/include/asm/omap_common.h | 6 ++++++ 5 files changed, 19 insertions(+), 25 deletions(-)
arch/arm/cpu/armv7/omap4/hwinit.c +10 -10
@@ -37,7 +37,7 @@DECLARE_GLOBAL_DATA_PTR ; -u32 *const omap4_revision = (u32 *)OMAP4_SRAM_SCRATCH_OMAP4_REV ; +u32 *const omap_si_rev = (u32 *)OMAP4_SRAM_SCRATCH_OMAP4_REV ;static const struct gpio_bank gpio_bank_44xx[6 ] = { { (void *)OMAP44XX_GPIO1_BASE ,METHOD_GPIO_24XX },
@@ -129,40 +129,40 @@ void init_omap_revision(void)switch (arm_rev) {case MIDR_CORTEX_A9_R0P1 : - *omap4_revision =OMAP4430_ES1_0 ; + *omap_si_rev =OMAP4430_ES1_0 ;break ;case MIDR_CORTEX_A9_R1P2 :switch (readl (CONTROL_ID_CODE )) {case OMAP4_CONTROL_ID_CODE_ES2_0 : - *omap4_revision =OMAP4430_ES2_0 ; + *omap_si_rev =OMAP4430_ES2_0 ;break ;case OMAP4_CONTROL_ID_CODE_ES2_1 : - *omap4_revision =OMAP4430_ES2_1 ; + *omap_si_rev =OMAP4430_ES2_1 ;break ;case OMAP4_CONTROL_ID_CODE_ES2_2 : - *omap4_revision =OMAP4430_ES2_2 ; + *omap_si_rev =OMAP4430_ES2_2 ;break ;default : - *omap4_revision =OMAP4430_ES2_0 ; + *omap_si_rev =OMAP4430_ES2_0 ;break ; }break ;case MIDR_CORTEX_A9_R1P3 : - *omap4_revision =OMAP4430_ES2_3 ; + *omap_si_rev =OMAP4430_ES2_3 ;break ;case MIDR_CORTEX_A9_R2P10 :switch (readl (CONTROL_ID_CODE )) {case OMAP4460_CONTROL_ID_CODE_ES1_1 : - *omap4_revision =OMAP4460_ES1_1 ; + *omap_si_rev =OMAP4460_ES1_1 ;break ;case OMAP4460_CONTROL_ID_CODE_ES1_0 :default : - *omap4_revision =OMAP4460_ES1_0 ; + *omap_si_rev =OMAP4460_ES1_0 ;break ; }break ;default : - *omap4_revision =OMAP4430_SILICON_ID_INVALID ; + *omap_si_rev =OMAP4430_SILICON_ID_INVALID ;break ; } }
arch/arm/cpu/armv7/omap5/hwinit.c +3 -3
@@ -38,7 +38,7 @@DECLARE_GLOBAL_DATA_PTR ; -u32 *const omap5_revision = (u32 *)OMAP5_SRAM_SCRATCH_OMAP5_REV ; +u32 *const omap_si_rev = (u32 *)OMAP5_SRAM_SCRATCH_OMAP5_REV ;static struct gpio_bank gpio_bank_54xx[6 ] = { { (void *)OMAP54XX_GPIO1_BASE ,METHOD_GPIO_24XX },
@@ -154,9 +154,9 @@ void init_omap_revision(void)switch (rev) {case MIDR_CORTEX_A15_R0P0 : - *omap5_revision =OMAP5430_ES1_0 ; + *omap_si_rev =OMAP5430_ES1_0 ;break ;default : - *omap5_revision =OMAP5430_SILICON_ID_INVALID ; + *omap_si_rev =OMAP5430_SILICON_ID_INVALID ; } }
arch/arm/include/asm/arch-omap4/sys_proto.h +0 -6
@@ -112,10 +112,4 @@ static inline u32 omap_hw_init_context(void) #endif } -static inline u32 omap_revision (void ) -{ -extern u32 *const omap4_revision; -return *omap4_revision; -} -#endif
arch/arm/include/asm/arch-omap5/sys_proto.h +0 -6
@@ -113,10 +113,4 @@ static inline u32 omap_hw_init_context(void) #endif } -static inline u32 omap_revision (void ) -{ -extern u32 *const omap5_revision; -return *omap5_revision; -} -#endif
arch/arm/include/asm/omap_common.h +6 -0
@@ -103,6 +103,12 @@ void spl_mmc_load_image(void);void spl_board_init (void );#endif +static inline u32 omap_revision (void ) +{ +extern u32 *const omap_si_rev; +return *omap_si_rev; +} +/* * silicon revisions. * Moving this to common, so that most of code can be moved to common,
Signature · 1 line
1.7.1
PATCH 8/17 OMAP5: SRAM: Change the SRAM base address.
In reply to R SricharanThe full internal SRAM of size 128kb is public in the case of OMAP5 soc. So change the base address accordingly.
--- arch/arm/include/asm/arch-omap5/omap.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
arch/arm/include/asm/arch-omap5/omap.h +1 -1
@@ -249,7 +249,7 @@ struct omap5_sys_ctrl_regs {* Non-secure RAM starts at 0x40300000 for GP devices. But we keep SRAM_BASE * at 0x40304000(EMU base) so that our code works for both EMU and GP */ -#define NON_SECURE_SRAM_START 0x40304000 +#define NON_SECURE_SRAM_START 0x40300000#define NON_SECURE_SRAM_END 0x40320000/* Not inclusive */ /* base address for indirect vectors (internal boot mode) */ #define SRAM_ROM_VECT_BASE 0x4031F000
Signature · 1 line
1.7.1
PATCH 9/17 OMAP4/5: Make the sysctrl structure common
In reply to R SricharanMake the sysctrl structure common, so that it can be used in generic functions across socs.
Also change the base address of the system control module, to include all the registers and not simply the io regs.
--- arch/arm/cpu/armv7/omap4/hwinit.c | 4 ++-- arch/arm/cpu/armv7/omap5/hwinit.c | 4 ++-- arch/arm/include/asm/arch-omap4/omap.h | 10 ++++++---- arch/arm/include/asm/arch-omap5/omap.h | 13 +++++++------ drivers/mmc/omap_hsmmc.c | 4 ++-- 5 files changed, 19 insertions(+), 16 deletions(-)
arch/arm/cpu/armv7/omap4/hwinit.c +2 -2
@@ -59,8 +59,8 @@ void do_io_settings(void)u32 lpddr2io;struct control_lpddr2io_regs *lpddr2io_regs = (struct control_lpddr2io_regs *)LPDDR2_IO_REGS_BASE ; -struct omap4_sys_ctrl_regs *const ctrl = - (struct omap4_sys_ctrl_regs *)SYSCTRL_GENERAL_CORE_BASE ; +struct omap_sys_ctrl_regs *const ctrl = + (struct omap_sys_ctrl_regs *)SYSCTRL_GENERAL_CORE_BASE ;u32 omap4_rev =omap_revision ();
arch/arm/cpu/armv7/omap5/hwinit.c +2 -2
@@ -58,8 +58,8 @@ const struct gpio_bank *const omap_gpio_bank = gpio_bank_54xx;void do_io_settings (void ) {u32 io_settings =0 , mask =0 ; -struct omap5_sys_ctrl_regs *ioregs_base = - (struct omap5_sys_ctrl_regs *)OMAP5_IOREGS_BASE ; +struct omap_sys_ctrl_regs *ioregs_base = + (struct omap_sys_ctrl_regs *)SYSCTRL_GENERAL_CORE_BASE ;/* Impedance settings EMMC, C2C 1,2, hsi2 */ mask = (ds_mask << 2) | (ds_mask << 8) |
arch/arm/include/asm/arch-omap4/omap.h +6 -4
@@ -139,18 +139,20 @@ struct s32ktimer {unsigned int s32k_cr;/* 0x10 */ }; -struct omap4_sys_ctrl_regs { +struct omap_sys_ctrl_regs {unsigned int pad1[129 ];unsigned int control_id_code;/* 0x4A002204 */ unsigned int pad11[22 ];unsigned int control_std_fuse_opp_bgap;/* 0x4a002260 */ -unsigned int pad2[47 ]; +unsigned int pad2[24 ];/* 0x4a002264 */ +unsigned int control_status;/* 0x4a0022c4 */ +unsigned int pad3[22 ];/* 0x4a0022c8 */ unsigned int control_ldosram_iva_voltage_ctrl;/* 0x4A002320 */ unsigned int control_ldosram_mpu_voltage_ctrl;/* 0x4A002324 */ unsigned int control_ldosram_core_voltage_ctrl;/* 0x4A002328 */ -unsigned int pad3[260277 ]; +unsigned int pad4[260277 ];unsigned int control_pbiaslite;/* 0x4A100600 */ -unsigned int pad4[63 ]; +unsigned int pad5[63 ];unsigned int control_efuse_1;/* 0x4A100700 */ unsigned int control_efuse_2;/* 0x4A100704 */ };
arch/arm/include/asm/arch-omap5/omap.h +7 -6
@@ -136,9 +136,10 @@ struct s32ktimer {unsigned int s32k_cr;/* 0x10 */ }; -#define OMAP5_IOREGS_BASE 0x4A002DA0 - -struct omap5_sys_ctrl_regs { +struct omap_sys_ctrl_regs { +u32 pad0[77 ];/* 0x4A002000 */ +u32 control_status;/* 0x4A002134 */ +u32 pad1[794 ];/* 0x4A002138 */ u32 control_paconf_global;/* 0x4A002DA0 */ u32 control_paconf_mode;/* 0x4A002DA4 */ u32 control_smart1io_padconf_0;/* 0x4A002DA8 */
@@ -149,7 +150,7 @@ struct omap5_sys_ctrl_regs {u32 control_smart2io_padconf_2;/* 0x4A002DBC */ u32 control_smart3io_padconf_0;/* 0x4A002DC0 */ u32 control_smart3io_padconf_1;/* 0x4A002DC4 */ -u32 pad1[14 ]; +u32 pad2[14 ];u32 control_pbias;/* 0x4A002E00 */ u32 control_i2c_0;/* 0x4A002E04 */ u32 control_camera_rx;/* 0x4A002E08 */
@@ -160,7 +161,7 @@ struct omap5_sys_ctrl_regs {u32 control_usb2phycore;/* 0x4A002E1C */ u32 control_hdmi_1;/*0x4A002E20*/ u32 control_hsi;/*0x4A002E24*/ -u32 pad2[2 ]; +u32 pad3[2 ];u32 control_ddr3ch1_0;/*0x4A002E30*/ u32 control_ddr3ch2_0;/*0x4A002E34*/ u32 control_ddrch1_0;/*0x4A002E38*/
@@ -183,7 +184,7 @@ struct omap5_sys_ctrl_regs {u32 control_srcomp_east_side;/*0x4A002E7C*/ u32 control_srcomp_west_side;/*0x4A002E80*/ u32 control_srcomp_code_latch;/*0x4A002E84*/ -u32 pad3[3680198 ]; +u32 pad4[3680198 ];u32 control_smart1nopmio_padconf_0;/* 0x4AE0CDA0 */ u32 control_smart1nopmio_padconf_1;/* 0x4AE0CDA4 */ u32 control_padconf_mode;/* 0x4AE0CDA8 */
drivers/mmc/omap_hsmmc.c +2 -2
@@ -45,8 +45,8 @@ static struct mmc hsmmc_dev[2];static void omap4_vmmc_pbias_config (struct mmc *mmc) {u32 value =0 ; -struct omap4_sys_ctrl_regs *const ctrl = - (struct omap4_sys_ctrl_regs *)SYSCTRL_GENERAL_CORE_BASE ; +struct omap_sys_ctrl_regs *const ctrl = + (struct omap_sys_ctrl_regs *)SYSCTRL_GENERAL_CORE_BASE ; value =readl (&ctrl->control_pbiaslite);
Signature · 1 line
1.7.1
PATCH 10/17 OMAP4/5: device: Add support to get the device type.
In reply to R SricharanAdd support to identify the device as GP/EMU/HS.
--- arch/arm/cpu/armv7/omap-common/hwinit-common.c | 6 +++++- arch/arm/include/asm/arch-omap4/omap.h | 4 ++++ arch/arm/include/asm/arch-omap5/omap.h | 4 ++++ 3 files changed, 13 insertions(+), 1 deletions(-)
arch/arm/cpu/armv7/omap-common/hwinit-common.c +5 -1
@@ -217,7 +217,11 @@ int arch_cpu_init(void)*/ u32 get_device_type (void ) { -return 0 ; +struct omap_sys_ctrl_regs *ctrl = + (struct omap_sys_ctrl_regs *)SYSCTRL_GENERAL_CORE_BASE ; + +return (readl (&ctrl->control_status) & + (DEVICE_TYPE_MASK )) >>DEVICE_TYPE_SHIFT ; }/*
arch/arm/include/asm/arch-omap4/omap.h +4 -0
@@ -139,6 +139,10 @@ struct s32ktimer {unsigned int s32k_cr;/* 0x10 */ }; +#define DEVICE_TYPE_SHIFT (0x8) +#define DEVICE_TYPE_MASK (0x7 << DEVICE_TYPE_SHIFT) +#define DEVICE_GP 0x3 +struct omap_sys_ctrl_regs {unsigned int pad1[129 ];unsigned int control_id_code;/* 0x4A002204 */
arch/arm/include/asm/arch-omap5/omap.h +4 -0
@@ -136,6 +136,10 @@ struct s32ktimer {unsigned int s32k_cr;/* 0x10 */ }; +#define DEVICE_TYPE_SHIFT 0x6 +#define DEVICE_TYPE_MASK (0x7 << DEVICE_TYPE_SHIFT) +#define DEVICE_GP 0x3 +struct omap_sys_ctrl_regs {u32 pad0[77 ];/* 0x4A002000 */ u32 control_status;/* 0x4A002134 */
Signature · 1 line
1.7.1
PATCH 11/17 OMAP5: defconfig: Align the defconfig for 5430 ES1.0
In reply to R SricharanAdding the nessecary changes for OMAP5430 ES1.0 silicon.
--- include/configs/omap5_evm.h | 24 +++++++++--------------- 1 files changed, 9 insertions(+), 15 deletions(-)
include/configs/omap5_evm.h +9 -15
@@ -49,8 +49,10 @@#define CONFIG_DISPLAY_BOARDINFO /* Clock Defines */ -#define V_OSCK 38400000/* Clock output from T2 */ +#define V_OSCK 19200000/* Clock output from T2 */ #define V_SCLK V_OSCK +#define CONFIG_SYS_CLOCKS_ENABLE_ALL 1/* Enable all clocks */ +#define CONFIG_SYS_ENABLE_PADS_ALL 1/* Enable all PADS for now */ #undef CONFIG_USE_IRQ/* no support for IRQs */ #define CONFIG_MISC_INIT_R
@@ -90,6 +92,9 @@#define CONFIG_BAUDRATE 115200#define CONFIG_SYS_BAUDRATE_TABLE {4800, 9600, 19200, 38400, 57600,\ 115200} +/* OPP SETTING */ +#define OPP_NOM +/* I2C */ #define CONFIG_HARD_I2C #define CONFIG_SYS_I2C_SPEED 100000
@@ -97,10 +102,6 @@#define CONFIG_DRIVER_OMAP34XX_I2C #define CONFIG_I2C_MULTI_BUS -/* TWL6030 */ -#define CONFIG_TWL6030_POWER -#define CONFIG_CMD_BAT -/* MMC */ #define CONFIG_GENERIC_MMC #define CONFIG_MMC
@@ -112,13 +113,6 @@#define CONFIG_SYS_MMC_ENV_DEV 1/* SLOT2: eMMC(1) */ #define CONFIG_ENV_OFFSET 0xE0000 -/* USB */ -#define CONFIG_MUSB_UDC -#define CONFIG_USB_OMAP3 - -/* USB device configuration */ -#define CONFIG_USB_DEVICE -#define CONFIG_USB_TTY #define CONFIG_SYS_CONSOLE_IS_IN_ENV /* Flash */
@@ -154,7 +148,7 @@#define CONFIG_EXTRA_ENV_SETTINGS \ "loadaddr=0x82000000\0" \ - "console=ttyS2,115200n8\0" \ + "console=ttyO2,115200n8\0" \ "usbtty=cdc_acm\0" \ "vram=16M\0" \ "mmcdev=0\0" \
@@ -250,8 +244,8 @@/* Defines for SPL */ #define CONFIG_SPL -#define CONFIG_SPL_TEXT_BASE 0x40304350 -#define CONFIG_SPL_MAX_SIZE 0x1E000/* 120K */ +#define CONFIG_SPL_TEXT_BASE 0x40300350 +#define CONFIG_SPL_MAX_SIZE 0x20000/* 128K */ #define CONFIG_SPL_STACK LOW_LEVEL_SRAM_STACK#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300/* address 0x60000 */
Signature · 1 line
1.7.1
PATCH 11/17 OMAP5: defconfig: Align the defconfig for 5430 ES1.0
Quoted 3 lines · R Sricharan
Adding the nessecary changes for OMAP5430 ES1.0 silicon.
Signed-off-by R Sricharan <[email protected]>
[snip]
include/configs/omap5_evm.h line 96
Quoted 2 lines
include/configs/omap5_evm.h +2
-0+/* OPP SETTING */ +#define OPP_NOM
Where is this used?
[snip]
include/configs/omap5_evm.h line 249
Quoted 7 lines
/* Defines for SPL */
#defineCONFIG_SPLinclude/configs/omap5_evm.h +2
-2-#define CONFIG_SPL_TEXT_BASE 0x40304350 -#define CONFIG_SPL_MAX_SIZE 0x1E000/* 120K */ +#define CONFIG_SPL_TEXT_BASE 0x40300350 +#define CONFIG_SPL_MAX_SIZE 0x20000/* 128K */ #define CONFIG_SPL_STACK LOW_LEVEL_SRAM_STACK
This is wrong, you have to account for stack within SPL_MAX_SIZE.
Signature · 1 line
Tom
R
PATCH 11/17 OMAP5: defconfig: Align the defconfig for 5430 ES1.0
Hi Tom,
Quoted 4 lines · Tom Rini
Quoted 2 lines · R Sricharan
Adding the nessecary changes for OMAP5430 ES1.0 silicon.
Quoted 8 lines
Quoted 1 line
Signed-off-by R Sricharan <[email protected]>[snip]
include/configs/omap5_evm.h line 96
Quoted 2 lines
include/configs/omap5_evm.h +2
-0+/* OPP SETTING */ +#define OPP_NOM Where is this used?
Right. This is unused. Will remove this. We were having
OPP_LOW and OPP_HIGH settings in the clocks table, for internal testing. But that being eventually removed, this is not required.
Quoted 11 lines
[snip]
include/configs/omap5_evm.h line 249
Quoted 7 lines
/* Defines for SPL */
#defineCONFIG_SPLinclude/configs/omap5_evm.h +2
-2-#define CONFIG_SPL_TEXT_BASE 0x40304350 -#define CONFIG_SPL_MAX_SIZE 0x1E000/* 120K */ +#define CONFIG_SPL_TEXT_BASE 0x40300350 +#define CONFIG_SPL_MAX_SIZE 0x20000/* 128K */ #define CONFIG_SPL_STACK LOW_LEVEL_SRAM_STACKThis is wrong, you have to account for stack within
SPL_MAX_SIZE.
Quoted 1 line
To understand,
So now, LOW_LEVEL_SRAM_STACK points to SRAM base + 128KB address (which
is the SRAM size),
pointed to by NON_SECURE_SRAM_END
Should this be changed ?
Also CONFIG_SYS_INIT_SP_ADDR should be adjusted. Will change this
Quoted 3 lines
--
Tom
PATCH 11/17 OMAP5: defconfig: Align the defconfig for 5430 ES1.0
Quoted 31 lines · Sricharan
Hi Tom,
Quoted 4 lines · Tom Rini
Quoted 2 lines · R Sricharan
Adding the nessecary changes for OMAP5430 ES1.0 silicon.
Quoted 8 lines
Quoted 1 line
Signed-off-by R Sricharan <[email protected]>[snip]
include/configs/omap5_evm.h line 96
Quoted 2 lines
include/configs/omap5_evm.h +2
-0+/* OPP SETTING */ +#define OPP_NOM Where is this used?
Right. This is unused. Will remove this. We were having
OPP_LOWandOPP_HIGHsettings in the clocks table, for internal testing. But that being eventually removed, this is not required.Quoted 11 lines
[snip]
include/configs/omap5_evm.h line 249
Quoted 7 lines
/* Defines for SPL */
#defineCONFIG_SPLinclude/configs/omap5_evm.h +2
-2-#define CONFIG_SPL_TEXT_BASE 0x40304350 -#define CONFIG_SPL_MAX_SIZE 0x1E000/* 120K */ +#define CONFIG_SPL_TEXT_BASE 0x40300350 +#define CONFIG_SPL_MAX_SIZE 0x20000/* 128K */ #define CONFIG_SPL_STACK LOW_LEVEL_SRAM_STACKThis is wrong, you have to account for stack within
SPL_MAX_SIZE.
Quoted 6 lines
Quoted 1 line
To understand,
So now,
LOW_LEVEL_SRAM_STACKpoints to SRAM base + 128KB address (which
is the SRAM size),
pointed to byNON_SECURE_SRAM_END
Should this be changed ?
AlsoCONFIG_SYS_INIT_SP_ADDRshould be adjusted. Will change this
So, the issue (see http://patchwork.ozlabs.org/patch/142211/ as I believe omap4/5 are similar in method) is that both SPL text/data/rodata and stack reside in SRAM. So we use CONFIG_SPL_MAX_SIZE as a way of ensuring that at least some portion of SRAM will be available for stack). You need to pick how much will be available for each part. For example, on am335x we also have 128KB of SRAM but do an arbitrary split at 46KB for SPL (since we haven't needed more than that). All you need to do is pick SPL_MAX_SIZE less than 128KB. And prepare to write a README.omap45 or so similar to the README.omap3 I wrote :)
Signature · 1 line
Tom
R
PATCH 11/17 OMAP5: defconfig: Align the defconfig for 5430 ES1.0
Hi Tom,
Quoted 40 lines · Tom Rini
Quoted 31 lines · Sricharan
Hi Tom,
Quoted 4 lines · Tom Rini
Quoted 2 lines · R Sricharan
Adding the nessecary changes for OMAP5430 ES1.0 silicon.
Quoted 8 lines
Quoted 1 line
Signed-off-by R Sricharan <[email protected]>[snip]
include/configs/omap5_evm.h line 96
Quoted 2 lines
include/configs/omap5_evm.h +2
-0+/* OPP SETTING */ +#define OPP_NOM Where is this used?
Right. This is unused. Will remove this. We were having? ?OPP_LOW and
OPP_HIGHsettings in the clocks table, for internal testing. ? ?But that being eventually removed, this is not required.Quoted 11 lines
[snip]
Quoted 7 lines
?/* Defines for SPL */
?#defineCONFIG_SPL(quoted diff) +2
-2-#define CONFIG_SPL_TEXT_BASE ? ? ? ? 0x40304350 -#define CONFIG_SPL_MAX_SIZE ? ? ? ? ?0x1E000 /* 120K */ +#define CONFIG_SPL_TEXT_BASE ? ? ? ? 0x40300350 +#define CONFIG_SPL_MAX_SIZE ? ? ? ? ?0x20000 /* 128K */?#define
CONFIG_SPL_STACK? ? ? ? ? ?LOW_LEVEL_SRAM_STACKThis is wrong, you have to account for stack within
SPL_MAX_SIZE.Quoted 6 lines
Quoted 1 line
? ? To understand,
? ? So now,
LOW_LEVEL_SRAM_STACKpoints to SRAM base + 128KB address (which is the SRAM size),
? ? pointed to byNON_SECURE_SRAM_END
? ?Should this be changed ?
? ?AlsoCONFIG_SYS_INIT_SP_ADDRshould be adjusted. Will change this
Quoted 10 lines
So, the issue (see http://patchwork.ozlabs.org/patch/142211/ as I believe omap4/5 are similar in method) is that both SPL text/data/rodata and stack reside in SRAM. ?So we use
CONFIG_SPL_MAX_SIZEas a way of ensuring that at least some portion of SRAM will be available for stack). ?You need to pick how much will be available for each part. ?For example, on am335x we also have 128KB of SRAM but do an arbitrary split at 46KB for SPL (since we haven't needed more than that). ?All you need to do is pickSPL_MAX_SIZEless than 128KB. ?And prepare to write a README.omap45 or so similar to the README.omap3 I wrote :)
Thanks. I understand it now. I will change in both OMAP5 and OMAP4 as well.
Quoted 3 lines
--
Tom
PATCH 12/17 OMAP5: ddr: Change the ddr device name.
In reply to R SricharanThe ddr part name used in OMAP5 ES1.0 soc is a SAMSUNG part and not a ELPIDA part. So change this.
---
arch/arm/cpu/armv7/omap5/Makefile | 2 +-
.../cpu/armv7/omap5/{sdram_elpida.c => sdram.c} | 30 ++++++++++----------
2 files changed, 16 insertions(+), 16 deletions(-)
rename arch/arm/cpu/armv7/omap5/{sdram_elpida.c => sdram.c} (87%)arch/arm/cpu/armv7/omap5/Makefile +1 -1
@@ -28,7 +28,7 @@ LIB = $(obj)lib$(SOC).o COBJS += hwinit.o COBJS += clocks.o COBJS += emif.o -COBJS += sdram_elpida.o +COBJS += sdram.o SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS) $(SOBJS))
arch/arm/cpu/armv7/omap5/sdram.c renamed from arch/arm/cpu/armv7/omap5/sdram_elpida.c +15 -15
@@ -1,5 +1,5 @@/* -* Timing and Organization details of the Elpida parts used in OMAP5 +* Timing and Organization details of the ddr device parts used in OMAP5 * EVM * * (C) Copyright 2010
@@ -48,7 +48,7 @@*/ #ifdef CONFIG_SYS_EMIF_PRECALCULATED_TIMING_REGS -const struct emif_regs emif_regs_elpida_532_mhz_2cs = { +const struct emif_regs emif_regs_532_mhz_2cs = { .sdram_config_init =0x80800EBA , .sdram_config =0x808022BA , .ref_ctrl = 0x0000081A,
@@ -67,7 +67,7 @@ const struct emif_regs emif_regs_elpida_532_mhz_2cs = { .emif_ddr_ext_phy_ctrl_5 = 0x04010040 }; -const struct emif_regs emif_regs_elpida_266_mhz_2cs = { +const struct emif_regs emif_regs_266_mhz_2cs = { .sdram_config_init =0x80800EBA , .sdram_config =0x808022BA , .ref_ctrl =0x0000040D ,
@@ -117,7 +117,7 @@ const u32 ext_phy_ctrl_const_base[EMIF_EXT_PHY_CTRL_CONST_REG] = {static void emif_get_reg_dump_sdp (u32 emif_nr,const struct emif_regs **regs) { - *regs = &emif_regs_elpida_532_mhz_2cs; + *regs = &emif_regs_532_mhz_2cs; }void emif_get_reg_dump (u32 emif_nr,const struct emif_regs **regs) __attribute__((weak,alias ("emif_get_reg_dump_sdp" )));
@@ -133,11 +133,11 @@ void emif_get_dmm_regs(const struct dmm_lisa_map_regs **dmm_lisa_regs)#else -static const struct lpddr2_device_details elpida_4G_S4_details = { +static const struct lpddr2_device_details dev_4G_S4_details = { .type =LPDDR2_TYPE_S4 , .density = LPDDR2_DENSITY_4Gb, .io_width =LPDDR2_IO_WIDTH_32 , - .manufacturer =LPDDR2_MANUFACTURER_ELPIDA + .manufacturer =LPDDR2_MANUFACTURER_SAMSUNG }; static void emif_get_device_details_sdp(u32 emif_nr,
@@ -145,8 +145,8 @@ static void emif_get_device_details_sdp(u32 emif_nr, struct lpddr2_device_details *cs1_device_details) {/* EMIF1 & EMIF2 have identical configuration */ - *cs0_device_details = elpida_4G_S4_details; - *cs1_device_details = elpida_4G_S4_details; + *cs0_device_details = dev_4G_S4_details; + *cs1_device_details = dev_4G_S4_details; } void emif_get_device_details(u32 emif_nr,
@@ -180,7 +180,7 @@ static const struct lpddr2_ac_timings timings_jedec_532_mhz = { .tFAW = 50 }; -static const struct lpddr2_min_tck min_tck_elpida = { +static const struct lpddr2_min_tck min_tck = { .tRL =3 , .tRP_AB =3 , .tRCD =3 ,
@@ -195,13 +195,13 @@ static const struct lpddr2_min_tck min_tck_elpida = { .tFAW = 8 }; -static const struct lpddr2_ac_timings *elpida_ac_timings[MAX_NUM_SPEEDBINS ] = { +static const struct lpddr2_ac_timings *ac_timings[MAX_NUM_SPEEDBINS ] = { &timings_jedec_532_mhz }; -static const struct lpddr2_device_timings elpida_4G_S4_timings = { - .ac_timings = elpida_ac_timings, - .min_tck = &min_tck_elpida, +static const struct lpddr2_device_timings dev_4G_S4_timings = { + .ac_timings = ac_timings, + .min_tck = &min_tck, }; void emif_get_device_timings_sdp(u32 emif_nr,
@@ -209,8 +209,8 @@ void emif_get_device_timings_sdp(u32 emif_nr, const struct lpddr2_device_timings **cs1_device_timings) {/* Identical devices on EMIF1 & EMIF2 */ - *cs0_device_timings = &elpida_4G_S4_timings; - *cs1_device_timings = &elpida_4G_S4_timings; + *cs0_device_timings = &dev_4G_S4_timings; + *cs1_device_timings = &dev_4G_S4_timings; } void emif_get_device_timings(u32 emif_nr,
Signature · 1 line
1.7.1
PATCH 13/17 OMAP4/5: emif: Correct the emif power mgt shadow register bit fields.
In reply to R SricharanPD_TIM bit field which specifies the power down timing is defined to occupy bits 8-11, where as it is actually from 12-15 bits. So correcting this.
--- arch/arm/include/asm/emif.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
arch/arm/include/asm/emif.h +2 -2
@@ -226,8 +226,8 @@#define EMIF_REG_CS_TIM_MASK (0xf << 0)/* PWR_MGMT_CTRL_SHDW */ -#define EMIF_REG_PD_TIM_SHDW_SHIFT 8 -#define EMIF_REG_PD_TIM_SHDW_MASK (0xf << 8) +#define EMIF_REG_PD_TIM_SHDW_SHIFT 12 +#define EMIF_REG_PD_TIM_SHDW_MASK (0xf << 12)#define EMIF_REG_SR_TIM_SHDW_SHIFT 4#define EMIF_REG_SR_TIM_SHDW_MASK (0xf << 4)#define EMIF_REG_CS_TIM_SHDW_SHIFT 0
Signature · 1 line
1.7.1
PATCH 14/17 arm: omap5: correct boot device mode7 for eMMC
In reply to R SricharanFrom: Balaji T K <[email protected]>
In OMAP5 Boot device mode of 6 and 7 should be mapped to mmc2/eMMC
--- arch/arm/cpu/armv7/omap-common/spl.c | 1 + arch/arm/cpu/armv7/omap-common/spl_mmc.c | 1 + arch/arm/include/asm/omap_common.h | 5 ++++- 3 files changed, 6 insertions(+), 1 deletions(-)
arch/arm/cpu/armv7/omap-common/spl.c +1 -0
@@ -126,6 +126,7 @@ void board_init_r(gd_t *id, ulong dummy)#ifdef CONFIG_SPL_MMC_SUPPORT case BOOT_DEVICE_MMC1 :case BOOT_DEVICE_MMC2 : +case BOOT_DEVICE_MMC2_2 :spl_mmc_load_image ();break ;#endif
arch/arm/cpu/armv7/omap-common/spl_mmc.c +1 -0
@@ -42,6 +42,7 @@ int board_mmc_init(bd_t *bis)omap_mmc_init (0 );break ;case BOOT_DEVICE_MMC2 : +case BOOT_DEVICE_MMC2_2 :omap_mmc_init (1 );break ; }
arch/arm/include/asm/omap_common.h +4 -1
@@ -45,7 +45,7 @@ void preloader_console_init(void);#define BOOT_DEVICE_ONE_NAND 4#define BOOT_DEVICE_MMC1 5#define BOOT_DEVICE_MMC2 6 -#define BOOT_DEVICE_MMC3 7 +#define BOOT_DEVICE_MMC2_2 7#elif defined(CONFIG_OMAP44XX )/* OMAP4 */ #define BOOT_DEVICE_NONE 0#define BOOT_DEVICE_XIP 1
@@ -54,6 +54,7 @@ void preloader_console_init(void);#define BOOT_DEVICE_ONE_NAND 4#define BOOT_DEVICE_MMC1 5#define BOOT_DEVICE_MMC2 6 +#define BOOT_DEVICE_MMC2_2 0xFF#elif defined(CONFIG_OMAP34XX )/* OMAP3 */ #define BOOT_DEVICE_NONE 0#define BOOT_DEVICE_XIP 1
@@ -62,11 +63,13 @@ void preloader_console_init(void);#define BOOT_DEVICE_MMC2 5/*emmc*/ #define BOOT_DEVICE_MMC1 6#define BOOT_DEVICE_XIPWAIT 7 +#define BOOT_DEVICE_MMC2_2 0xFF#elif defined(CONFIG_AM33XX )/* AM33XX */ #define BOOT_DEVICE_NAND 5#define BOOT_DEVICE_MMC1 8#define BOOT_DEVICE_MMC2 0#define BOOT_DEVICE_UART 65 +#define BOOT_DEVICE_MMC2_2 0xFF#endif /* Boot type */
Signature · 1 line
1.7.1
PATCH 15/17 power: twl6035: add palmas PMIC support
In reply to R SricharanFrom: Balaji T K <[email protected]>
palmas/TWL6035 is power IC for omap5 evm boards
--- board/ti/omap5_evm/evm.c | 6 ++-- drivers/power/Makefile | 1 + drivers/power/twl6035.c | 54 +++++++++++++++++++++++++++++++++++++++++++ include/configs/omap5_evm.h | 5 ++++ include/twl6035.h | 41 ++++++++++++++++++++++++++++++++ 5 files changed, 104 insertions(+), 3 deletions(-) create mode 100644 drivers/power/twl6035.c create mode 100644 include/twl6035.h
board/ti/omap5_evm/evm.c +3 -3
@@ -23,7 +23,7 @@* MA 02111-1307 USA */ #include <common.h> -#include <twl6030.h> +#include <twl6035.h> #include <asm/arch/sys_proto.h> #include <asm/arch/mmc_host_def.h>
@@ -63,8 +63,8 @@ int board_eth_init(bd_t *bis)*/ int misc_init_r (void ) { -#ifdef CONFIG_TWL6030_POWER -twl6030_init_battery_charging (); +#ifdef CONFIG_TWL6035_POWER +twl6035_init_settings ();#endif return 0 ; }
drivers/power/Makefile +1 -0
@@ -28,6 +28,7 @@ LIB := $(obj)libpower.o COBJS-$(CONFIG_FTPMU010_POWER) += ftpmu010.o COBJS-$(CONFIG_TWL4030_POWER) += twl4030.o COBJS-$(CONFIG_TWL6030_POWER) += twl6030.o +COBJS-$(CONFIG_TWL6035_POWER) += twl6035.o COBJS := $(COBJS-y) SRCS := $(COBJS:.o=.c)
drivers/power/twl6035.c new file +54 -0
54 lines not on this page · raw message
include/configs/omap5_evm.h +5 -0
@@ -102,6 +102,11 @@#define CONFIG_DRIVER_OMAP34XX_I2C #define CONFIG_I2C_MULTI_BUS +/* TWL6035 */ +#ifndef CONFIG_SPL_BUILD +#define CONFIG_TWL6035_POWER +#endif +/* MMC */ #define CONFIG_GENERIC_MMC #define CONFIG_MMC
include/twl6035.h new file +41 -0
41 lines not on this page · raw message
Signature · 1 line
1.7.1
PATCH 15/17 power: twl6035: add palmas PMIC support
Quoted 5 lines · R Sricharan
From: Balaji T K <[email protected]>
palmas/TWL6035 is power IC for omap5 evm boards
Signed-off-by Balaji T K <[email protected]>
[snip]
Quoted 1 line
+++
b/drivers/power/twl6035.c
[snip]
Quoted 1 line
+#ifdef
CONFIG_TWL6035_POWER
Don't need to do that since we only link this file when that is set.
drivers/power/twl6035.c line 37
Quoted 10 lines
drivers/power/twl6035.c new file +10
-0+/* Functions to read and write from TWL6030 */ +int twl6035_i2c_write_u8 (u8 chip_no,u8 val,u8 reg) +{ +return i2c_write (chip_no, reg,1 , &val,1 ); +} + +int twl6035_i2c_read_u8 (u8 chip_no,u8 *val,u8 reg) +{ +return i2c_read (chip_no, reg,1 , val,1 ); +}
Used, exported, OK.
drivers/power/twl6035.c line 48
Quoted 10 lines
drivers/power/twl6035.c new file +10
-0+/* To align with i2c mw/mr address, reg, val command syntax */ +static inline int palmas_write_u8 (u8 chip_no,u8 reg,u8 val) +{ +return i2c_write (chip_no, reg,1 , &val,1 ); +} + +static inline int palmas_read_u8 (u8 chip_no,u8 reg,u8 *val) +{ +return i2c_read (chip_no, reg,1 , val,1 ); +}
Unused and static so this must have warned. To be clear, I expect the patch series to add no more warnings for omap5_evm. Thanks!
Signature · 1 line
Tom
R
PATCH 15/17 power: twl6035: add palmas PMIC support
Hi Tom,
Quoted 41 lines · Tom Rini
Quoted 5 lines · R Sricharan
From: Balaji T K <[email protected]>
palmas/TWL6035 is power IC for omap5 evm boards
Signed-off-by Balaji T K <[email protected]>[snip]
Quoted 1 line
+++
b/drivers/power/twl6035.c[snip]
Quoted 1 line
+#ifdef
CONFIG_TWL6035_POWERDon't need to do that since we only link this file when that is set.
drivers/power/twl6035.c line 37
Quoted 10 lines
drivers/power/twl6035.c new file +10
-0+/* Functions to read and write from TWL6030 */ +int twl6035_i2c_write_u8 (u8 chip_no,u8 val,u8 reg) +{ +return i2c_write (chip_no, reg,1 , &val,1 ); +} + +int twl6035_i2c_read_u8 (u8 chip_no,u8 *val,u8 reg) +{ +return i2c_read (chip_no, reg,1 , val,1 ); +}Used, exported, OK.
drivers/power/twl6035.c line 48
Quoted 10 lines
drivers/power/twl6035.c new file +10
-0+/* To align with i2c mw/mr address, reg, val command syntax */ +static inline int palmas_write_u8 (u8 chip_no,u8 reg,u8 val) +{ +return i2c_write (chip_no, reg,1 , &val,1 ); +} + +static inline int palmas_read_u8 (u8 chip_no,u8 reg,u8 *val) +{ +return i2c_read (chip_no, reg,1 , val,1 ); +}Unused and static so this must have warned. To be clear, I expect the patch series to add no more warnings for
omap5_evm. Thanks!
Quoted 1 line
Agree. This should be in the later patch.
Will correct this in V2 as well.
Quoted 3 lines
--
Tom
Thanks,
Sricharan
PATCH 16/17 omap5: pbias ldo9 turn on
In reply to R SricharanFrom: Balaji T K <[email protected]>
Add omap5 pbias configuration for mmc1/sd lines
and set voltage for sd data i/o lines
--- arch/arm/include/asm/arch-omap5/omap.h | 7 +++-- drivers/mmc/omap_hsmmc.c | 33 ++++++++++++++++++++++++++++++++ drivers/power/twl6035.c | 14 +++++++++++++ include/twl6035.h | 1 + 4 files changed, 52 insertions(+), 3 deletions(-)
arch/arm/include/asm/arch-omap5/omap.h +4 -3
@@ -125,9 +125,10 @@/* CONTROL_EFUSE_2 */ #define CONTROL_EFUSE_2_NMOS_PMOS_PTV_CODE_1 0x00ffc000 -#define MMC1_PWRDNZ (1 << 26) -#define MMC1_PBIASLITE_PWRDNZ (1 << 22) -#define MMC1_PBIASLITE_VMODE (1 << 21) +#define SDCARD_PWRDNZ (1 << 26) +#define SDCARD_BIAS_HIZ_MODE (1 << 25) +#define SDCARD_BIAS_PWRDNZ (1 << 22) +#define SDCARD_PBIASLITE_VMODE (1 << 21)#ifndef __ASSEMBLY__
drivers/mmc/omap_hsmmc.c +33 -0
@@ -29,6 +29,7 @@#include <i2c.h> #include <twl4030.h> #include <twl6030.h> +#include <twl6035.h> #include <asm/io.h> #include <asm/arch/mmc_host_def.h> #include <asm/arch/sys_proto.h>
@@ -60,6 +61,34 @@ static void omap4_vmmc_pbias_config(struct mmc *mmc) }#endif +#if defined(CONFIG_OMAP54XX ) && defined(CONFIG_TWL6035_POWER ) +static void omap5_pbias_config (struct mmc *mmc) +{ +u32 value =0 ; +struct omap_sys_ctrl_regs *const ctrl = + (struct omap_sys_ctrl_regs *)SYSCTRL_GENERAL_CORE_BASE ; + + value =readl (&ctrl->control_pbias); + value &= ~(SDCARD_PWRDNZ |SDCARD_BIAS_PWRDNZ ); + value |=SDCARD_BIAS_HIZ_MODE ; +writel (value, &ctrl->control_pbias); + +twl6035_mmc1_poweron_ldo (); + + value =readl (&ctrl->control_pbias); + value &= ~SDCARD_BIAS_HIZ_MODE ; + value |=SDCARD_PBIASLITE_VMODE |SDCARD_PWRDNZ |SDCARD_BIAS_PWRDNZ ; +writel (value, &ctrl->control_pbias); + + value =readl (&ctrl->control_pbias); +if (value & (1 <<23 )) { + value &= ~(SDCARD_PWRDNZ |SDCARD_BIAS_PWRDNZ ); + value |=SDCARD_BIAS_HIZ_MODE ; +writel (value, &ctrl->control_pbias); + } +} +#endif +unsigned char mmc_board_init (struct mmc *mmc) {#if defined(CONFIG_TWL4030_POWER )
@@ -94,6 +123,10 @@ unsigned char mmc_board_init(struct mmc *mmc)if (mmc->block_dev.dev ==0 )omap4_vmmc_pbias_config (mmc);#endif +#if defined(CONFIG_OMAP54XX ) && defined(CONFIG_TWL6035_POWER ) +if (mmc->block_dev.dev ==0 ) +omap5_pbias_config (mmc); +#endif return 0 ; }
drivers/power/twl6035.c +14 -0
@@ -51,4 +51,18 @@ void twl6035_init_settings(void) {return ; } + +void twl6035_mmc1_poweron_ldo (void ) +{ +u8 val =0 ; + +/* set LDO9 TWL6035 to 3V */ + val =0x2b ;/* (3 -.9)*28 +1 */ +palmas_write_u8 (0x48 ,LDO9_VOLTAGE , val); + +/* TURN ON LDO9 */ + val =LDO_ON |LDO_MODE_SLEEP |LDO_MODE_ACTIVE ; +palmas_write_u8 (0x48 ,LDO9_CTRL , val); +return ; +}#endif
include/twl6035.h +1 -0
@@ -39,3 +39,4 @@int twl6035_i2c_write_u8 (u8 chip_no,u8 val,u8 reg);int twl6035_i2c_read_u8 (u8 chip_no,u8 *val,u8 reg);void twl6035_init_settings (void ); +void twl6035_mmc1_poweron_ldo (void );
Signature · 1 line
1.7.1
PATCH 16/17 omap5: pbias ldo9 turn on
Quoted 6 lines · R Sricharan
From: Balaji T K <[email protected]>
Add omap5 pbias configuration for mmc1/sd lines
and set voltage for sd data i/o linesSigned-off-by Balaji T K <[email protected]>
[snip]
Quoted 12 lines
drivers/power/twl6035.c +4
-0@@ -51,4 +51,18 @@ void twl6035_init_settings(void) {return ; } + +void twl6035_mmc1_poweron_ldo (void ) +{ +u8 val =0 ;
drivers/power/twl6035.c void twl6035_init_settings(void) · line 67
Quoted 10 lines
drivers/power/twl6035.c +10
-0+ +/* set LDO9 TWL6035 to 3V */ + val =0x2b ;/* (3 -.9)*28 +1 */ +palmas_write_u8 (0x48 ,LDO9_VOLTAGE , val); + +/* TURN ON LDO9 */ + val =LDO_ON |LDO_MODE_SLEEP |LDO_MODE_ACTIVE ; +palmas_write_u8 (0x48 ,LDO9_CTRL , val); +return ; +}
This is when we should add those two previous inlines. Please use git test-sequence to make sure the series is clean, thanks.
Signature · 1 line
Tom
PATCH 17/17 mmc: omap5evm: Add eMMC saveenv support
In reply to R SricharanFrom: Balaji T K <[email protected]>
Save env to eMMC
--- include/configs/omap5_evm.h | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
include/configs/omap5_evm.h +1 -0
@@ -117,6 +117,7 @@#define CONFIG_ENV_IS_IN_MMC #define CONFIG_SYS_MMC_ENV_DEV 1/* SLOT2: eMMC(1) */ #define CONFIG_ENV_OFFSET 0xE0000 +#define CONFIG_CMD_SAVEENV #define CONFIG_SYS_CONSOLE_IS_IN_ENV
Signature · 1 line
1.7.1