1508a58faSSricharan /* 2508a58faSSricharan * (C) Copyright 2010 3508a58faSSricharan * Texas Instruments, <www.ti.com> 4508a58faSSricharan * 5508a58faSSricharan * Authors: 6508a58faSSricharan * Aneesh V <aneesh@ti.com> 7508a58faSSricharan * Sricharan R <r.sricharan@ti.com> 8508a58faSSricharan * 9508a58faSSricharan * See file CREDITS for list of people who contributed to this 10508a58faSSricharan * project. 11508a58faSSricharan * 12508a58faSSricharan * This program is free software; you can redistribute it and/or 13508a58faSSricharan * modify it under the terms of the GNU General Public License as 14508a58faSSricharan * published by the Free Software Foundation; either version 2 of 15508a58faSSricharan * the License, or (at your option) any later version. 16508a58faSSricharan * 17508a58faSSricharan * This program is distributed in the hope that it will be useful, 18508a58faSSricharan * but WITHOUT ANY WARRANTY; without even the implied warranty of 19508a58faSSricharan * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20508a58faSSricharan * GNU General Public License for more details. 21508a58faSSricharan * 22508a58faSSricharan * You should have received a copy of the GNU General Public License 23508a58faSSricharan * along with this program; if not, write to the Free Software 24508a58faSSricharan * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 25508a58faSSricharan * MA 02111-1307 USA 26508a58faSSricharan */ 27508a58faSSricharan 28508a58faSSricharan #ifndef _OMAP5_H_ 29508a58faSSricharan #define _OMAP5_H_ 30508a58faSSricharan 31508a58faSSricharan #if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__)) 32508a58faSSricharan #include <asm/types.h> 33508a58faSSricharan #endif /* !(__KERNEL_STRICT_NAMES || __ASSEMBLY__) */ 34508a58faSSricharan 35508a58faSSricharan /* 36508a58faSSricharan * L4 Peripherals - L4 Wakeup and L4 Core now 37508a58faSSricharan */ 38508a58faSSricharan #define OMAP54XX_L4_CORE_BASE 0x4A000000 39508a58faSSricharan #define OMAP54XX_L4_WKUP_BASE 0x4Ae00000 40508a58faSSricharan #define OMAP54XX_L4_PER_BASE 0x48000000 41508a58faSSricharan 42508a58faSSricharan #define OMAP54XX_DRAM_ADDR_SPACE_START 0x80000000 43508a58faSSricharan #define OMAP54XX_DRAM_ADDR_SPACE_END 0xD0000000 44508a58faSSricharan #define DRAM_ADDR_SPACE_START OMAP54XX_DRAM_ADDR_SPACE_START 45508a58faSSricharan #define DRAM_ADDR_SPACE_END OMAP54XX_DRAM_ADDR_SPACE_END 46508a58faSSricharan 47508a58faSSricharan /* CONTROL */ 48508a58faSSricharan #define CTRL_BASE (OMAP54XX_L4_CORE_BASE + 0x2000) 49508a58faSSricharan #define CONTROL_PADCONF_CORE (CTRL_BASE + 0x0800) 50508a58faSSricharan #define CONTROL_PADCONF_WKUP (OMAP54XX_L4_WKUP_BASE + 0xc800) 51508a58faSSricharan 52508a58faSSricharan /* LPDDR2 IO regs. To be verified */ 53508a58faSSricharan #define LPDDR2_IO_REGS_BASE 0x4A100638 54508a58faSSricharan 55508a58faSSricharan /* CONTROL_ID_CODE */ 56508a58faSSricharan #define CONTROL_ID_CODE (CTRL_BASE + 0x204) 57508a58faSSricharan 58508a58faSSricharan /* To be verified */ 59508a58faSSricharan #define OMAP5_CONTROL_ID_CODE_ES1_0 0x0B85202F 60508a58faSSricharan 61508a58faSSricharan /* STD_FUSE_PROD_ID_1 */ 62508a58faSSricharan #define STD_FUSE_PROD_ID_1 (CTRL_BASE + 0x218) 63508a58faSSricharan #define PROD_ID_1_SILICON_TYPE_SHIFT 16 64508a58faSSricharan #define PROD_ID_1_SILICON_TYPE_MASK (3 << 16) 65508a58faSSricharan 66508a58faSSricharan /* UART */ 67508a58faSSricharan #define UART1_BASE (OMAP54XX_L4_PER_BASE + 0x6a000) 68508a58faSSricharan #define UART2_BASE (OMAP54XX_L4_PER_BASE + 0x6c000) 69508a58faSSricharan #define UART3_BASE (OMAP54XX_L4_PER_BASE + 0x20000) 70508a58faSSricharan 71508a58faSSricharan /* General Purpose Timers */ 72508a58faSSricharan #define GPT1_BASE (OMAP54XX_L4_WKUP_BASE + 0x18000) 73508a58faSSricharan #define GPT2_BASE (OMAP54XX_L4_PER_BASE + 0x32000) 74508a58faSSricharan #define GPT3_BASE (OMAP54XX_L4_PER_BASE + 0x34000) 75508a58faSSricharan 76508a58faSSricharan /* Watchdog Timer2 - MPU watchdog */ 77508a58faSSricharan #define WDT2_BASE (OMAP54XX_L4_WKUP_BASE + 0x14000) 78508a58faSSricharan 79508a58faSSricharan /* 32KTIMER */ 80508a58faSSricharan #define SYNC_32KTIMER_BASE (OMAP54XX_L4_WKUP_BASE + 0x4000) 81508a58faSSricharan 82508a58faSSricharan /* GPMC */ 83508a58faSSricharan #define OMAP54XX_GPMC_BASE 0x50000000 84508a58faSSricharan 85508a58faSSricharan /* SYSTEM CONTROL MODULE */ 86508a58faSSricharan #define SYSCTRL_GENERAL_CORE_BASE 0x4A002000 87508a58faSSricharan 88508a58faSSricharan /* 89508a58faSSricharan * Hardware Register Details 90508a58faSSricharan */ 91508a58faSSricharan 92508a58faSSricharan /* Watchdog Timer */ 93508a58faSSricharan #define WD_UNLOCK1 0xAAAA 94508a58faSSricharan #define WD_UNLOCK2 0x5555 95508a58faSSricharan 96508a58faSSricharan /* GP Timer */ 97508a58faSSricharan #define TCLR_ST (0x1 << 0) 98508a58faSSricharan #define TCLR_AR (0x1 << 1) 99508a58faSSricharan #define TCLR_PRE (0x1 << 5) 100508a58faSSricharan 101508a58faSSricharan /* 102508a58faSSricharan * PRCM 103508a58faSSricharan */ 104508a58faSSricharan 105508a58faSSricharan /* PRM */ 106508a58faSSricharan #define PRM_BASE 0x4AE06000 107508a58faSSricharan #define PRM_DEVICE_BASE (PRM_BASE + 0x1B00) 108508a58faSSricharan 109508a58faSSricharan #define PRM_RSTCTRL PRM_DEVICE_BASE 110508a58faSSricharan #define PRM_RSTCTRL_RESET 0x01 111508a58faSSricharan 112508a58faSSricharan /* Control Module */ 113508a58faSSricharan #define LDOSRAM_ACTMODE_VSET_IN_MASK (0x1F << 5) 114508a58faSSricharan #define LDOSRAM_VOLT_CTRL_OVERRIDE 0x0401040f 115508a58faSSricharan #define CONTROL_EFUSE_1_OVERRIDE 0x1C4D0110 116508a58faSSricharan #define CONTROL_EFUSE_2_OVERRIDE 0x00084000 117508a58faSSricharan 118508a58faSSricharan /* LPDDR2 IO regs */ 119508a58faSSricharan #define CONTROL_LPDDR2IO_SLEW_125PS_DRV8_PULL_DOWN 0x1C1C1C1C 120508a58faSSricharan #define CONTROL_LPDDR2IO_SLEW_325PS_DRV8_GATE_KEEPER 0x9E9E9E9E 121508a58faSSricharan #define CONTROL_LPDDR2IO_SLEW_315PS_DRV12_PULL_DOWN 0x7C7C7C7C 122508a58faSSricharan #define LPDDR2IO_GR10_WD_MASK (3 << 17) 123508a58faSSricharan #define CONTROL_LPDDR2IO_3_VAL 0xA0888C00 124508a58faSSricharan 125508a58faSSricharan /* CONTROL_EFUSE_2 */ 126508a58faSSricharan #define CONTROL_EFUSE_2_NMOS_PMOS_PTV_CODE_1 0x00ffc000 127508a58faSSricharan 128508a58faSSricharan #define MMC1_PWRDNZ (1 << 26) 129508a58faSSricharan #define MMC1_PBIASLITE_PWRDNZ (1 << 22) 130508a58faSSricharan #define MMC1_PBIASLITE_VMODE (1 << 21) 131508a58faSSricharan 132508a58faSSricharan #ifndef __ASSEMBLY__ 133508a58faSSricharan 134508a58faSSricharan struct s32ktimer { 135508a58faSSricharan unsigned char res[0x10]; 136508a58faSSricharan unsigned int s32k_cr; /* 0x10 */ 137508a58faSSricharan }; 138508a58faSSricharan 139508a58faSSricharan struct omap4_sys_ctrl_regs { 140508a58faSSricharan unsigned int pad1[129]; 141508a58faSSricharan unsigned int control_id_code; /* 0x4A002204 */ 142508a58faSSricharan unsigned int pad11[22]; 143508a58faSSricharan unsigned int control_std_fuse_opp_bgap; /* 0x4a002260 */ 144508a58faSSricharan unsigned int pad2[47]; 145508a58faSSricharan unsigned int control_ldosram_iva_voltage_ctrl; /* 0x4A002320 */ 146508a58faSSricharan unsigned int control_ldosram_mpu_voltage_ctrl; /* 0x4A002324 */ 147508a58faSSricharan unsigned int control_ldosram_core_voltage_ctrl; /* 0x4A002328 */ 148508a58faSSricharan unsigned int pad3[260277]; 149508a58faSSricharan unsigned int control_pbiaslite; /* 0x4A100600 */ 150508a58faSSricharan unsigned int pad4[63]; 151508a58faSSricharan unsigned int control_efuse_1; /* 0x4A100700 */ 152508a58faSSricharan unsigned int control_efuse_2; /* 0x4A100704 */ 153508a58faSSricharan }; 154508a58faSSricharan 155508a58faSSricharan struct control_lpddr2io_regs { 156508a58faSSricharan unsigned int control_lpddr2io1_0; 157508a58faSSricharan unsigned int control_lpddr2io1_1; 158508a58faSSricharan unsigned int control_lpddr2io1_2; 159508a58faSSricharan unsigned int control_lpddr2io1_3; 160508a58faSSricharan unsigned int control_lpddr2io2_0; 161508a58faSSricharan unsigned int control_lpddr2io2_1; 162508a58faSSricharan unsigned int control_lpddr2io2_2; 163508a58faSSricharan unsigned int control_lpddr2io2_3; 164508a58faSSricharan }; 165508a58faSSricharan #endif /* __ASSEMBLY__ */ 166508a58faSSricharan 167508a58faSSricharan /* 168508a58faSSricharan * Non-secure SRAM Addresses 169508a58faSSricharan * Non-secure RAM starts at 0x40300000 for GP devices. But we keep SRAM_BASE 170508a58faSSricharan * at 0x40304000(EMU base) so that our code works for both EMU and GP 171508a58faSSricharan */ 172508a58faSSricharan #define NON_SECURE_SRAM_START 0x40304000 173508a58faSSricharan #define NON_SECURE_SRAM_END 0x40320000 /* Not inclusive */ 174508a58faSSricharan /* base address for indirect vectors (internal boot mode) */ 175508a58faSSricharan #define SRAM_ROM_VECT_BASE 0x4031F000 176508a58faSSricharan /* Temporary SRAM stack used while low level init is done */ 177508a58faSSricharan #define LOW_LEVEL_SRAM_STACK NON_SECURE_SRAM_END 178508a58faSSricharan 179508a58faSSricharan #define SRAM_SCRATCH_SPACE_ADDR NON_SECURE_SRAM_START 180508a58faSSricharan /* 181508a58faSSricharan * SRAM scratch space entries 182508a58faSSricharan */ 183508a58faSSricharan #define OMAP5_SRAM_SCRATCH_OMAP5_REV SRAM_SCRATCH_SPACE_ADDR 184508a58faSSricharan #define OMAP5_SRAM_SCRATCH_EMIF_SIZE (SRAM_SCRATCH_SPACE_ADDR + 0x4) 185508a58faSSricharan #define OMAP5_SRAM_SCRATCH_EMIF_T_NUM (SRAM_SCRATCH_SPACE_ADDR + 0xC) 186508a58faSSricharan #define OMAP5_SRAM_SCRATCH_EMIF_T_DEN (SRAM_SCRATCH_SPACE_ADDR + 0x10) 187508a58faSSricharan #define OMAP5_SRAM_SCRATCH_SPACE_END (SRAM_SCRATCH_SPACE_ADDR + 0x14) 188508a58faSSricharan 189508a58faSSricharan /* Silicon revisions */ 190508a58faSSricharan #define OMAP4430_SILICON_ID_INVALID 0xFFFFFFFF 191508a58faSSricharan #define OMAP4430_ES1_0 0x44300100 192508a58faSSricharan #define OMAP4430_ES2_0 0x44300200 193508a58faSSricharan #define OMAP4430_ES2_1 0x44300210 194508a58faSSricharan #define OMAP4430_ES2_2 0x44300220 195508a58faSSricharan #define OMAP4430_ES2_3 0x44300230 196508a58faSSricharan #define OMAP4460_ES1_0 0x44600100 197508a58faSSricharan #define OMAP4460_ES1_1 0x44600110 198508a58faSSricharan 199508a58faSSricharan /* ROM code defines */ 200508a58faSSricharan /* Boot device */ 201508a58faSSricharan #define BOOT_DEVICE_MASK 0xFF 202508a58faSSricharan #define BOOT_DEVICE_OFFSET 0x8 203508a58faSSricharan #define DEV_DESC_PTR_OFFSET 0x4 204508a58faSSricharan #define DEV_DATA_PTR_OFFSET 0x18 205508a58faSSricharan #define BOOT_MODE_OFFSET 0x8 206*78f455c0SSricharan #define RESET_REASON_OFFSET 0x9 207*78f455c0SSricharan #define CH_FLAGS_OFFSET 0xA 208508a58faSSricharan 209*78f455c0SSricharan #define CH_FLAGS_CHSETTINGS (0x1 << 0) 210*78f455c0SSricharan #define CH_FLAGS_CHRAM (0x1 << 1) 211*78f455c0SSricharan #define CH_FLAGS_CHFLASH (0x1 << 2) 212*78f455c0SSricharan #define CH_FLAGS_CHMMCSD (0x1 << 3) 213*78f455c0SSricharan 214*78f455c0SSricharan #ifndef __ASSEMBLY__ 215*78f455c0SSricharan struct omap_boot_parameters { 216*78f455c0SSricharan char *boot_message; 217*78f455c0SSricharan unsigned int mem_boot_descriptor; 218*78f455c0SSricharan unsigned char omap_bootdevice; 219*78f455c0SSricharan unsigned char reset_reason; 220*78f455c0SSricharan unsigned char ch_flags; 221*78f455c0SSricharan }; 222*78f455c0SSricharan #endif /* __ASSEMBLY__ */ 223508a58faSSricharan #endif 224