1*508a58faSSricharan /* 2*508a58faSSricharan * (C) Copyright 2006-2010 3*508a58faSSricharan * Texas Instruments, <www.ti.com> 4*508a58faSSricharan * 5*508a58faSSricharan * Aneesh V <aneesh@ti.com> 6*508a58faSSricharan * 7*508a58faSSricharan * See file CREDITS for list of people who contributed to this 8*508a58faSSricharan * project. 9*508a58faSSricharan * 10*508a58faSSricharan * This program is free software; you can redistribute it and/or 11*508a58faSSricharan * modify it under the terms of the GNU General Public License as 12*508a58faSSricharan * published by the Free Software Foundation; either version 2 of 13*508a58faSSricharan * the License, or (at your option) any later version. 14*508a58faSSricharan * 15*508a58faSSricharan * This program is distributed in the hope that it will be useful, 16*508a58faSSricharan * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*508a58faSSricharan * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*508a58faSSricharan * GNU General Public License for more details. 19*508a58faSSricharan * 20*508a58faSSricharan * You should have received a copy of the GNU General Public License 21*508a58faSSricharan * along with this program; if not, write to the Free Software 22*508a58faSSricharan * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 23*508a58faSSricharan * MA 02111-1307 USA 24*508a58faSSricharan * 25*508a58faSSricharan */ 26*508a58faSSricharan 27*508a58faSSricharan #ifndef _CPU_H 28*508a58faSSricharan #define _CPU_H 29*508a58faSSricharan 30*508a58faSSricharan #if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__)) 31*508a58faSSricharan #include <asm/types.h> 32*508a58faSSricharan #endif /* !(__KERNEL_STRICT_NAMES || __ASSEMBLY__) */ 33*508a58faSSricharan 34*508a58faSSricharan #ifndef __KERNEL_STRICT_NAMES 35*508a58faSSricharan #ifndef __ASSEMBLY__ 36*508a58faSSricharan struct gpmc_cs { 37*508a58faSSricharan u32 config1; /* 0x00 */ 38*508a58faSSricharan u32 config2; /* 0x04 */ 39*508a58faSSricharan u32 config3; /* 0x08 */ 40*508a58faSSricharan u32 config4; /* 0x0C */ 41*508a58faSSricharan u32 config5; /* 0x10 */ 42*508a58faSSricharan u32 config6; /* 0x14 */ 43*508a58faSSricharan u32 config7; /* 0x18 */ 44*508a58faSSricharan u32 nand_cmd; /* 0x1C */ 45*508a58faSSricharan u32 nand_adr; /* 0x20 */ 46*508a58faSSricharan u32 nand_dat; /* 0x24 */ 47*508a58faSSricharan u8 res[8]; /* blow up to 0x30 byte */ 48*508a58faSSricharan }; 49*508a58faSSricharan 50*508a58faSSricharan struct gpmc { 51*508a58faSSricharan u8 res1[0x10]; 52*508a58faSSricharan u32 sysconfig; /* 0x10 */ 53*508a58faSSricharan u8 res2[0x4]; 54*508a58faSSricharan u32 irqstatus; /* 0x18 */ 55*508a58faSSricharan u32 irqenable; /* 0x1C */ 56*508a58faSSricharan u8 res3[0x20]; 57*508a58faSSricharan u32 timeout_control; /* 0x40 */ 58*508a58faSSricharan u8 res4[0xC]; 59*508a58faSSricharan u32 config; /* 0x50 */ 60*508a58faSSricharan u32 status; /* 0x54 */ 61*508a58faSSricharan u8 res5[0x8]; /* 0x58 */ 62*508a58faSSricharan struct gpmc_cs cs[8]; /* 0x60, 0x90, .. */ 63*508a58faSSricharan u8 res6[0x14]; /* 0x1E0 */ 64*508a58faSSricharan u32 ecc_config; /* 0x1F4 */ 65*508a58faSSricharan u32 ecc_control; /* 0x1F8 */ 66*508a58faSSricharan u32 ecc_size_config; /* 0x1FC */ 67*508a58faSSricharan u32 ecc1_result; /* 0x200 */ 68*508a58faSSricharan u32 ecc2_result; /* 0x204 */ 69*508a58faSSricharan u32 ecc3_result; /* 0x208 */ 70*508a58faSSricharan u32 ecc4_result; /* 0x20C */ 71*508a58faSSricharan u32 ecc5_result; /* 0x210 */ 72*508a58faSSricharan u32 ecc6_result; /* 0x214 */ 73*508a58faSSricharan u32 ecc7_result; /* 0x218 */ 74*508a58faSSricharan u32 ecc8_result; /* 0x21C */ 75*508a58faSSricharan u32 ecc9_result; /* 0x220 */ 76*508a58faSSricharan }; 77*508a58faSSricharan 78*508a58faSSricharan /* Used for board specific gpmc initialization */ 79*508a58faSSricharan extern struct gpmc *gpmc_cfg; 80*508a58faSSricharan 81*508a58faSSricharan struct gptimer { 82*508a58faSSricharan u32 tidr; /* 0x00 r */ 83*508a58faSSricharan u8 res1[0xc]; 84*508a58faSSricharan u32 tiocp_cfg; /* 0x10 rw */ 85*508a58faSSricharan u8 res2[0x10]; 86*508a58faSSricharan u32 tisr_raw; /* 0x24 r */ 87*508a58faSSricharan u32 tisr; /* 0x28 rw */ 88*508a58faSSricharan u32 tier; /* 0x2c rw */ 89*508a58faSSricharan u32 ticr; /* 0x30 rw */ 90*508a58faSSricharan u32 twer; /* 0x34 rw */ 91*508a58faSSricharan u32 tclr; /* 0x38 rw */ 92*508a58faSSricharan u32 tcrr; /* 0x3c rw */ 93*508a58faSSricharan u32 tldr; /* 0x40 rw */ 94*508a58faSSricharan u32 ttgr; /* 0x44 rw */ 95*508a58faSSricharan u32 twpc; /* 0x48 r */ 96*508a58faSSricharan u32 tmar; /* 0x4c rw */ 97*508a58faSSricharan u32 tcar1; /* 0x50 r */ 98*508a58faSSricharan u32 tcicr; /* 0x54 rw */ 99*508a58faSSricharan u32 tcar2; /* 0x58 r */ 100*508a58faSSricharan }; 101*508a58faSSricharan #endif /* __ASSEMBLY__ */ 102*508a58faSSricharan #endif /* __KERNEL_STRICT_NAMES */ 103*508a58faSSricharan 104*508a58faSSricharan /* enable sys_clk NO-prescale /1 */ 105*508a58faSSricharan #define GPT_EN ((0x0 << 2) | (0x1 << 1) | (0x1 << 0)) 106*508a58faSSricharan 107*508a58faSSricharan /* Watchdog */ 108*508a58faSSricharan #ifndef __KERNEL_STRICT_NAMES 109*508a58faSSricharan #ifndef __ASSEMBLY__ 110*508a58faSSricharan struct watchdog { 111*508a58faSSricharan u8 res1[0x34]; 112*508a58faSSricharan u32 wwps; /* 0x34 r */ 113*508a58faSSricharan u8 res2[0x10]; 114*508a58faSSricharan u32 wspr; /* 0x48 rw */ 115*508a58faSSricharan }; 116*508a58faSSricharan #endif /* __ASSEMBLY__ */ 117*508a58faSSricharan #endif /* __KERNEL_STRICT_NAMES */ 118*508a58faSSricharan 119*508a58faSSricharan #define WD_UNLOCK1 0xAAAA 120*508a58faSSricharan #define WD_UNLOCK2 0x5555 121*508a58faSSricharan 122*508a58faSSricharan #define SYSCLKDIV_1 (0x1 << 6) 123*508a58faSSricharan #define SYSCLKDIV_2 (0x1 << 7) 124*508a58faSSricharan 125*508a58faSSricharan #define CLKSEL_GPT1 (0x1 << 0) 126*508a58faSSricharan 127*508a58faSSricharan #define EN_GPT1 (0x1 << 0) 128*508a58faSSricharan #define EN_32KSYNC (0x1 << 2) 129*508a58faSSricharan 130*508a58faSSricharan #define ST_WDT2 (0x1 << 5) 131*508a58faSSricharan 132*508a58faSSricharan #define RESETDONE (0x1 << 0) 133*508a58faSSricharan 134*508a58faSSricharan #define TCLR_ST (0x1 << 0) 135*508a58faSSricharan #define TCLR_AR (0x1 << 1) 136*508a58faSSricharan #define TCLR_PRE (0x1 << 5) 137*508a58faSSricharan 138*508a58faSSricharan /* GPMC BASE */ 139*508a58faSSricharan #define GPMC_BASE (OMAP54XX_GPMC_BASE) 140*508a58faSSricharan 141*508a58faSSricharan /* I2C base */ 142*508a58faSSricharan #define I2C_BASE1 (OMAP54XX_L4_PER_BASE + 0x70000) 143*508a58faSSricharan #define I2C_BASE2 (OMAP54XX_L4_PER_BASE + 0x72000) 144*508a58faSSricharan #define I2C_BASE3 (OMAP54XX_L4_PER_BASE + 0x60000) 145*508a58faSSricharan 146*508a58faSSricharan /* MUSB base */ 147*508a58faSSricharan #define MUSB_BASE (OMAP54XX_L4_CORE_BASE + 0xAB000) 148*508a58faSSricharan 149*508a58faSSricharan /* OMAP4 GPIO registers */ 150*508a58faSSricharan #define OMAP_GPIO_REVISION 0x0000 151*508a58faSSricharan #define OMAP_GPIO_SYSCONFIG 0x0010 152*508a58faSSricharan #define OMAP_GPIO_SYSSTATUS 0x0114 153*508a58faSSricharan #define OMAP_GPIO_IRQSTATUS1 0x0118 154*508a58faSSricharan #define OMAP_GPIO_IRQSTATUS2 0x0128 155*508a58faSSricharan #define OMAP_GPIO_IRQENABLE2 0x012c 156*508a58faSSricharan #define OMAP_GPIO_IRQENABLE1 0x011c 157*508a58faSSricharan #define OMAP_GPIO_WAKE_EN 0x0120 158*508a58faSSricharan #define OMAP_GPIO_CTRL 0x0130 159*508a58faSSricharan #define OMAP_GPIO_OE 0x0134 160*508a58faSSricharan #define OMAP_GPIO_DATAIN 0x0138 161*508a58faSSricharan #define OMAP_GPIO_DATAOUT 0x013c 162*508a58faSSricharan #define OMAP_GPIO_LEVELDETECT0 0x0140 163*508a58faSSricharan #define OMAP_GPIO_LEVELDETECT1 0x0144 164*508a58faSSricharan #define OMAP_GPIO_RISINGDETECT 0x0148 165*508a58faSSricharan #define OMAP_GPIO_FALLINGDETECT 0x014c 166*508a58faSSricharan #define OMAP_GPIO_DEBOUNCE_EN 0x0150 167*508a58faSSricharan #define OMAP_GPIO_DEBOUNCE_VAL 0x0154 168*508a58faSSricharan #define OMAP_GPIO_CLEARIRQENABLE1 0x0160 169*508a58faSSricharan #define OMAP_GPIO_SETIRQENABLE1 0x0164 170*508a58faSSricharan #define OMAP_GPIO_CLEARWKUENA 0x0180 171*508a58faSSricharan #define OMAP_GPIO_SETWKUENA 0x0184 172*508a58faSSricharan #define OMAP_GPIO_CLEARDATAOUT 0x0190 173*508a58faSSricharan #define OMAP_GPIO_SETDATAOUT 0x0194 174*508a58faSSricharan 175*508a58faSSricharan #endif /* _CPU_H */ 176