1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * cpu.h 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * AM33xx specific header file 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/ 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 9*4882a593Smuzhiyun */ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #ifndef _AM33XX_CPU_H 12*4882a593Smuzhiyun #define _AM33XX_CPU_H 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__)) 15*4882a593Smuzhiyun #include <asm/types.h> 16*4882a593Smuzhiyun #endif /* !(__KERNEL_STRICT_NAMES || __ASSEMBLY__) */ 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun #include <asm/arch/hardware.h> 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun #define CL_BIT(x) (0 << x) 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun /* Timer register bits */ 23*4882a593Smuzhiyun #define TCLR_ST BIT(0) /* Start=1 Stop=0 */ 24*4882a593Smuzhiyun #define TCLR_AR BIT(1) /* Auto reload */ 25*4882a593Smuzhiyun #define TCLR_PRE BIT(5) /* Pre-scaler enable */ 26*4882a593Smuzhiyun #define TCLR_PTV_SHIFT (2) /* Pre-scaler shift value */ 27*4882a593Smuzhiyun #define TCLR_PRE_DISABLE CL_BIT(5) /* Pre-scalar disable */ 28*4882a593Smuzhiyun #define TCLR_CE BIT(6) /* compare mode enable */ 29*4882a593Smuzhiyun #define TCLR_SCPWM BIT(7) /* pwm outpin behaviour */ 30*4882a593Smuzhiyun #define TCLR_TCM BIT(8) /* edge detection of input pin*/ 31*4882a593Smuzhiyun #define TCLR_TRG_SHIFT (10) /* trigmode on pwm outpin */ 32*4882a593Smuzhiyun #define TCLR_PT BIT(12) /* pulse/toggle mode of outpin*/ 33*4882a593Smuzhiyun #define TCLR_CAPTMODE BIT(13) /* capture mode */ 34*4882a593Smuzhiyun #define TCLR_GPOCFG BIT(14) /* 0=output,1=input */ 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun #define TCFG_RESET BIT(0) /* software reset */ 37*4882a593Smuzhiyun #define TCFG_EMUFREE BIT(1) /* behaviour of tmr on debug */ 38*4882a593Smuzhiyun #define TCFG_IDLEMOD_SHIFT (2) /* power management */ 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun /* cpu-id for AM43XX AM33XX and TI81XX family */ 41*4882a593Smuzhiyun #define AM437X 0xB98C 42*4882a593Smuzhiyun #define AM335X 0xB944 43*4882a593Smuzhiyun #define TI81XX 0xB81E 44*4882a593Smuzhiyun #define DEVICE_ID (CTRL_BASE + 0x0600) 45*4882a593Smuzhiyun #define DEVICE_ID_MASK 0x1FFF 46*4882a593Smuzhiyun #define PACKAGE_TYPE_SHIFT 16 47*4882a593Smuzhiyun #define PACKAGE_TYPE_MASK (3 << 16) 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun /* Package Type */ 50*4882a593Smuzhiyun #define PACKAGE_TYPE_UNDEFINED 0x0 51*4882a593Smuzhiyun #define PACKAGE_TYPE_ZCZ 0x1 52*4882a593Smuzhiyun #define PACKAGE_TYPE_ZCE 0x2 53*4882a593Smuzhiyun #define PACKAGE_TYPE_RESERVED 0x3 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun /* MPU max frequencies */ 56*4882a593Smuzhiyun #define AM335X_ZCZ_300 0x1FEF 57*4882a593Smuzhiyun #define AM335X_ZCZ_600 0x1FAF 58*4882a593Smuzhiyun #define AM335X_ZCZ_720 0x1F2F 59*4882a593Smuzhiyun #define AM335X_ZCZ_800 0x1E2F 60*4882a593Smuzhiyun #define AM335X_ZCZ_1000 0x1C2F 61*4882a593Smuzhiyun #define AM335X_ZCE_300 0x1FDF 62*4882a593Smuzhiyun #define AM335X_ZCE_600 0x1F9F 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun /* This gives the status of the boot mode pins on the evm */ 65*4882a593Smuzhiyun #define SYSBOOT_MASK (BIT(0) | BIT(1) | BIT(2)\ 66*4882a593Smuzhiyun | BIT(3) | BIT(4)) 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun #define PRM_RSTCTRL_RESET 0x01 69*4882a593Smuzhiyun #define PRM_RSTST_WARM_RESET_MASK 0x232 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun #ifndef __KERNEL_STRICT_NAMES 72*4882a593Smuzhiyun #ifndef __ASSEMBLY__ 73*4882a593Smuzhiyun #include <asm/ti-common/omap_wdt.h> 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun #ifndef CONFIG_AM43XX 76*4882a593Smuzhiyun /* Encapsulating core pll registers */ 77*4882a593Smuzhiyun struct cm_wkuppll { 78*4882a593Smuzhiyun unsigned int wkclkstctrl; /* offset 0x00 */ 79*4882a593Smuzhiyun unsigned int wkctrlclkctrl; /* offset 0x04 */ 80*4882a593Smuzhiyun unsigned int wkgpio0clkctrl; /* offset 0x08 */ 81*4882a593Smuzhiyun unsigned int wkl4wkclkctrl; /* offset 0x0c */ 82*4882a593Smuzhiyun unsigned int timer0clkctrl; /* offset 0x10 */ 83*4882a593Smuzhiyun unsigned int resv2[3]; 84*4882a593Smuzhiyun unsigned int idlestdpllmpu; /* offset 0x20 */ 85*4882a593Smuzhiyun unsigned int sscdeltamstepdllmpu; /* off 0x24 */ 86*4882a593Smuzhiyun unsigned int sscmodfreqdivdpllmpu; /* off 0x28 */ 87*4882a593Smuzhiyun unsigned int clkseldpllmpu; /* offset 0x2c */ 88*4882a593Smuzhiyun unsigned int resv4[1]; 89*4882a593Smuzhiyun unsigned int idlestdpllddr; /* offset 0x34 */ 90*4882a593Smuzhiyun unsigned int resv5[2]; 91*4882a593Smuzhiyun unsigned int clkseldpllddr; /* offset 0x40 */ 92*4882a593Smuzhiyun unsigned int resv6[4]; 93*4882a593Smuzhiyun unsigned int clkseldplldisp; /* offset 0x54 */ 94*4882a593Smuzhiyun unsigned int resv7[1]; 95*4882a593Smuzhiyun unsigned int idlestdpllcore; /* offset 0x5c */ 96*4882a593Smuzhiyun unsigned int resv8[2]; 97*4882a593Smuzhiyun unsigned int clkseldpllcore; /* offset 0x68 */ 98*4882a593Smuzhiyun unsigned int resv9[1]; 99*4882a593Smuzhiyun unsigned int idlestdpllper; /* offset 0x70 */ 100*4882a593Smuzhiyun unsigned int resv10[2]; 101*4882a593Smuzhiyun unsigned int clkdcoldodpllper; /* offset 0x7c */ 102*4882a593Smuzhiyun unsigned int divm4dpllcore; /* offset 0x80 */ 103*4882a593Smuzhiyun unsigned int divm5dpllcore; /* offset 0x84 */ 104*4882a593Smuzhiyun unsigned int clkmoddpllmpu; /* offset 0x88 */ 105*4882a593Smuzhiyun unsigned int clkmoddpllper; /* offset 0x8c */ 106*4882a593Smuzhiyun unsigned int clkmoddpllcore; /* offset 0x90 */ 107*4882a593Smuzhiyun unsigned int clkmoddpllddr; /* offset 0x94 */ 108*4882a593Smuzhiyun unsigned int clkmoddplldisp; /* offset 0x98 */ 109*4882a593Smuzhiyun unsigned int clkseldpllper; /* offset 0x9c */ 110*4882a593Smuzhiyun unsigned int divm2dpllddr; /* offset 0xA0 */ 111*4882a593Smuzhiyun unsigned int divm2dplldisp; /* offset 0xA4 */ 112*4882a593Smuzhiyun unsigned int divm2dpllmpu; /* offset 0xA8 */ 113*4882a593Smuzhiyun unsigned int divm2dpllper; /* offset 0xAC */ 114*4882a593Smuzhiyun unsigned int resv11[1]; 115*4882a593Smuzhiyun unsigned int wkup_uart0ctrl; /* offset 0xB4 */ 116*4882a593Smuzhiyun unsigned int wkup_i2c0ctrl; /* offset 0xB8 */ 117*4882a593Smuzhiyun unsigned int wkup_adctscctrl; /* offset 0xBC */ 118*4882a593Smuzhiyun unsigned int resv12; 119*4882a593Smuzhiyun unsigned int timer1clkctrl; /* offset 0xC4 */ 120*4882a593Smuzhiyun unsigned int resv13[4]; 121*4882a593Smuzhiyun unsigned int divm6dpllcore; /* offset 0xD8 */ 122*4882a593Smuzhiyun }; 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun /** 125*4882a593Smuzhiyun * Encapsulating peripheral functional clocks 126*4882a593Smuzhiyun * pll registers 127*4882a593Smuzhiyun */ 128*4882a593Smuzhiyun struct cm_perpll { 129*4882a593Smuzhiyun unsigned int l4lsclkstctrl; /* offset 0x00 */ 130*4882a593Smuzhiyun unsigned int l3sclkstctrl; /* offset 0x04 */ 131*4882a593Smuzhiyun unsigned int l4fwclkstctrl; /* offset 0x08 */ 132*4882a593Smuzhiyun unsigned int l3clkstctrl; /* offset 0x0c */ 133*4882a593Smuzhiyun unsigned int resv1; 134*4882a593Smuzhiyun unsigned int cpgmac0clkctrl; /* offset 0x14 */ 135*4882a593Smuzhiyun unsigned int lcdclkctrl; /* offset 0x18 */ 136*4882a593Smuzhiyun unsigned int usb0clkctrl; /* offset 0x1C */ 137*4882a593Smuzhiyun unsigned int resv2; 138*4882a593Smuzhiyun unsigned int tptc0clkctrl; /* offset 0x24 */ 139*4882a593Smuzhiyun unsigned int emifclkctrl; /* offset 0x28 */ 140*4882a593Smuzhiyun unsigned int ocmcramclkctrl; /* offset 0x2c */ 141*4882a593Smuzhiyun unsigned int gpmcclkctrl; /* offset 0x30 */ 142*4882a593Smuzhiyun unsigned int mcasp0clkctrl; /* offset 0x34 */ 143*4882a593Smuzhiyun unsigned int uart5clkctrl; /* offset 0x38 */ 144*4882a593Smuzhiyun unsigned int mmc0clkctrl; /* offset 0x3C */ 145*4882a593Smuzhiyun unsigned int elmclkctrl; /* offset 0x40 */ 146*4882a593Smuzhiyun unsigned int i2c2clkctrl; /* offset 0x44 */ 147*4882a593Smuzhiyun unsigned int i2c1clkctrl; /* offset 0x48 */ 148*4882a593Smuzhiyun unsigned int spi0clkctrl; /* offset 0x4C */ 149*4882a593Smuzhiyun unsigned int spi1clkctrl; /* offset 0x50 */ 150*4882a593Smuzhiyun unsigned int resv3[3]; 151*4882a593Smuzhiyun unsigned int l4lsclkctrl; /* offset 0x60 */ 152*4882a593Smuzhiyun unsigned int l4fwclkctrl; /* offset 0x64 */ 153*4882a593Smuzhiyun unsigned int mcasp1clkctrl; /* offset 0x68 */ 154*4882a593Smuzhiyun unsigned int uart1clkctrl; /* offset 0x6C */ 155*4882a593Smuzhiyun unsigned int uart2clkctrl; /* offset 0x70 */ 156*4882a593Smuzhiyun unsigned int uart3clkctrl; /* offset 0x74 */ 157*4882a593Smuzhiyun unsigned int uart4clkctrl; /* offset 0x78 */ 158*4882a593Smuzhiyun unsigned int timer7clkctrl; /* offset 0x7C */ 159*4882a593Smuzhiyun unsigned int timer2clkctrl; /* offset 0x80 */ 160*4882a593Smuzhiyun unsigned int timer3clkctrl; /* offset 0x84 */ 161*4882a593Smuzhiyun unsigned int timer4clkctrl; /* offset 0x88 */ 162*4882a593Smuzhiyun unsigned int resv4[8]; 163*4882a593Smuzhiyun unsigned int gpio1clkctrl; /* offset 0xAC */ 164*4882a593Smuzhiyun unsigned int gpio2clkctrl; /* offset 0xB0 */ 165*4882a593Smuzhiyun unsigned int gpio3clkctrl; /* offset 0xB4 */ 166*4882a593Smuzhiyun unsigned int resv5; 167*4882a593Smuzhiyun unsigned int tpccclkctrl; /* offset 0xBC */ 168*4882a593Smuzhiyun unsigned int dcan0clkctrl; /* offset 0xC0 */ 169*4882a593Smuzhiyun unsigned int dcan1clkctrl; /* offset 0xC4 */ 170*4882a593Smuzhiyun unsigned int resv6; 171*4882a593Smuzhiyun unsigned int epwmss1clkctrl; /* offset 0xCC */ 172*4882a593Smuzhiyun unsigned int emiffwclkctrl; /* offset 0xD0 */ 173*4882a593Smuzhiyun unsigned int epwmss0clkctrl; /* offset 0xD4 */ 174*4882a593Smuzhiyun unsigned int epwmss2clkctrl; /* offset 0xD8 */ 175*4882a593Smuzhiyun unsigned int l3instrclkctrl; /* offset 0xDC */ 176*4882a593Smuzhiyun unsigned int l3clkctrl; /* Offset 0xE0 */ 177*4882a593Smuzhiyun unsigned int resv8[2]; 178*4882a593Smuzhiyun unsigned int timer5clkctrl; /* offset 0xEC */ 179*4882a593Smuzhiyun unsigned int timer6clkctrl; /* offset 0xF0 */ 180*4882a593Smuzhiyun unsigned int mmc1clkctrl; /* offset 0xF4 */ 181*4882a593Smuzhiyun unsigned int mmc2clkctrl; /* offset 0xF8 */ 182*4882a593Smuzhiyun unsigned int resv9[8]; 183*4882a593Smuzhiyun unsigned int l4hsclkstctrl; /* offset 0x11C */ 184*4882a593Smuzhiyun unsigned int l4hsclkctrl; /* offset 0x120 */ 185*4882a593Smuzhiyun unsigned int resv10[8]; 186*4882a593Smuzhiyun unsigned int cpswclkstctrl; /* offset 0x144 */ 187*4882a593Smuzhiyun unsigned int lcdcclkstctrl; /* offset 0x148 */ 188*4882a593Smuzhiyun }; 189*4882a593Smuzhiyun 190*4882a593Smuzhiyun /* Encapsulating Display pll registers */ 191*4882a593Smuzhiyun struct cm_dpll { 192*4882a593Smuzhiyun unsigned int resv1; 193*4882a593Smuzhiyun unsigned int clktimer7clk; /* offset 0x04 */ 194*4882a593Smuzhiyun unsigned int clktimer2clk; /* offset 0x08 */ 195*4882a593Smuzhiyun unsigned int clktimer3clk; /* offset 0x0C */ 196*4882a593Smuzhiyun unsigned int clktimer4clk; /* offset 0x10 */ 197*4882a593Smuzhiyun unsigned int resv2; 198*4882a593Smuzhiyun unsigned int clktimer5clk; /* offset 0x18 */ 199*4882a593Smuzhiyun unsigned int clktimer6clk; /* offset 0x1C */ 200*4882a593Smuzhiyun unsigned int resv3[2]; 201*4882a593Smuzhiyun unsigned int clktimer1clk; /* offset 0x28 */ 202*4882a593Smuzhiyun unsigned int resv4[2]; 203*4882a593Smuzhiyun unsigned int clklcdcpixelclk; /* offset 0x34 */ 204*4882a593Smuzhiyun }; 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun struct prm_device_inst { 207*4882a593Smuzhiyun unsigned int prm_rstctrl; 208*4882a593Smuzhiyun unsigned int prm_rsttime; 209*4882a593Smuzhiyun unsigned int prm_rstst; 210*4882a593Smuzhiyun }; 211*4882a593Smuzhiyun #else 212*4882a593Smuzhiyun /* Encapsulating core pll registers */ 213*4882a593Smuzhiyun struct cm_wkuppll { 214*4882a593Smuzhiyun unsigned int resv0[136]; 215*4882a593Smuzhiyun unsigned int wkl4wkclkctrl; /* offset 0x220 */ 216*4882a593Smuzhiyun unsigned int resv1[7]; 217*4882a593Smuzhiyun unsigned int usbphy0clkctrl; /* offset 0x240 */ 218*4882a593Smuzhiyun unsigned int resv112; 219*4882a593Smuzhiyun unsigned int usbphy1clkctrl; /* offset 0x248 */ 220*4882a593Smuzhiyun unsigned int resv113[45]; 221*4882a593Smuzhiyun unsigned int wkclkstctrl; /* offset 0x300 */ 222*4882a593Smuzhiyun unsigned int resv2[15]; 223*4882a593Smuzhiyun unsigned int wkup_i2c0ctrl; /* offset 0x340 */ 224*4882a593Smuzhiyun unsigned int resv3; 225*4882a593Smuzhiyun unsigned int wkup_uart0ctrl; /* offset 0x348 */ 226*4882a593Smuzhiyun unsigned int resv4[5]; 227*4882a593Smuzhiyun unsigned int wkctrlclkctrl; /* offset 0x360 */ 228*4882a593Smuzhiyun unsigned int resv5; 229*4882a593Smuzhiyun unsigned int wkgpio0clkctrl; /* offset 0x368 */ 230*4882a593Smuzhiyun 231*4882a593Smuzhiyun unsigned int resv6[109]; 232*4882a593Smuzhiyun unsigned int clkmoddpllcore; /* offset 0x520 */ 233*4882a593Smuzhiyun unsigned int idlestdpllcore; /* offset 0x524 */ 234*4882a593Smuzhiyun unsigned int resv61; 235*4882a593Smuzhiyun unsigned int clkseldpllcore; /* offset 0x52C */ 236*4882a593Smuzhiyun unsigned int resv7[2]; 237*4882a593Smuzhiyun unsigned int divm4dpllcore; /* offset 0x538 */ 238*4882a593Smuzhiyun unsigned int divm5dpllcore; /* offset 0x53C */ 239*4882a593Smuzhiyun unsigned int divm6dpllcore; /* offset 0x540 */ 240*4882a593Smuzhiyun 241*4882a593Smuzhiyun unsigned int resv8[7]; 242*4882a593Smuzhiyun unsigned int clkmoddpllmpu; /* offset 0x560 */ 243*4882a593Smuzhiyun unsigned int idlestdpllmpu; /* offset 0x564 */ 244*4882a593Smuzhiyun unsigned int resv9; 245*4882a593Smuzhiyun unsigned int clkseldpllmpu; /* offset 0x56c */ 246*4882a593Smuzhiyun unsigned int divm2dpllmpu; /* offset 0x570 */ 247*4882a593Smuzhiyun 248*4882a593Smuzhiyun unsigned int resv10[11]; 249*4882a593Smuzhiyun unsigned int clkmoddpllddr; /* offset 0x5A0 */ 250*4882a593Smuzhiyun unsigned int idlestdpllddr; /* offset 0x5A4 */ 251*4882a593Smuzhiyun unsigned int resv11; 252*4882a593Smuzhiyun unsigned int clkseldpllddr; /* offset 0x5AC */ 253*4882a593Smuzhiyun unsigned int divm2dpllddr; /* offset 0x5B0 */ 254*4882a593Smuzhiyun 255*4882a593Smuzhiyun unsigned int resv12[11]; 256*4882a593Smuzhiyun unsigned int clkmoddpllper; /* offset 0x5E0 */ 257*4882a593Smuzhiyun unsigned int idlestdpllper; /* offset 0x5E4 */ 258*4882a593Smuzhiyun unsigned int resv13; 259*4882a593Smuzhiyun unsigned int clkseldpllper; /* offset 0x5EC */ 260*4882a593Smuzhiyun unsigned int divm2dpllper; /* offset 0x5F0 */ 261*4882a593Smuzhiyun unsigned int resv14[8]; 262*4882a593Smuzhiyun unsigned int clkdcoldodpllper; /* offset 0x614 */ 263*4882a593Smuzhiyun 264*4882a593Smuzhiyun unsigned int resv15[2]; 265*4882a593Smuzhiyun unsigned int clkmoddplldisp; /* offset 0x620 */ 266*4882a593Smuzhiyun unsigned int resv16[2]; 267*4882a593Smuzhiyun unsigned int clkseldplldisp; /* offset 0x62C */ 268*4882a593Smuzhiyun unsigned int divm2dplldisp; /* offset 0x630 */ 269*4882a593Smuzhiyun }; 270*4882a593Smuzhiyun 271*4882a593Smuzhiyun /* 272*4882a593Smuzhiyun * Encapsulating peripheral functional clocks 273*4882a593Smuzhiyun * pll registers 274*4882a593Smuzhiyun */ 275*4882a593Smuzhiyun struct cm_perpll { 276*4882a593Smuzhiyun unsigned int l3clkstctrl; /* offset 0x00 */ 277*4882a593Smuzhiyun unsigned int resv0[7]; 278*4882a593Smuzhiyun unsigned int l3clkctrl; /* Offset 0x20 */ 279*4882a593Smuzhiyun unsigned int resv112[7]; 280*4882a593Smuzhiyun unsigned int l3instrclkctrl; /* offset 0x40 */ 281*4882a593Smuzhiyun unsigned int resv2[3]; 282*4882a593Smuzhiyun unsigned int ocmcramclkctrl; /* offset 0x50 */ 283*4882a593Smuzhiyun unsigned int resv3[9]; 284*4882a593Smuzhiyun unsigned int tpccclkctrl; /* offset 0x78 */ 285*4882a593Smuzhiyun unsigned int resv4; 286*4882a593Smuzhiyun unsigned int tptc0clkctrl; /* offset 0x80 */ 287*4882a593Smuzhiyun 288*4882a593Smuzhiyun unsigned int resv5[7]; 289*4882a593Smuzhiyun unsigned int l4hsclkctrl; /* offset 0x0A0 */ 290*4882a593Smuzhiyun unsigned int resv6; 291*4882a593Smuzhiyun unsigned int l4fwclkctrl; /* offset 0x0A8 */ 292*4882a593Smuzhiyun unsigned int resv7[85]; 293*4882a593Smuzhiyun unsigned int l3sclkstctrl; /* offset 0x200 */ 294*4882a593Smuzhiyun unsigned int resv8[7]; 295*4882a593Smuzhiyun unsigned int gpmcclkctrl; /* offset 0x220 */ 296*4882a593Smuzhiyun unsigned int resv9[5]; 297*4882a593Smuzhiyun unsigned int mcasp0clkctrl; /* offset 0x238 */ 298*4882a593Smuzhiyun unsigned int resv10; 299*4882a593Smuzhiyun unsigned int mcasp1clkctrl; /* offset 0x240 */ 300*4882a593Smuzhiyun unsigned int resv11; 301*4882a593Smuzhiyun unsigned int mmc2clkctrl; /* offset 0x248 */ 302*4882a593Smuzhiyun unsigned int resv12[3]; 303*4882a593Smuzhiyun unsigned int qspiclkctrl; /* offset 0x258 */ 304*4882a593Smuzhiyun unsigned int resv121; 305*4882a593Smuzhiyun unsigned int usb0clkctrl; /* offset 0x260 */ 306*4882a593Smuzhiyun unsigned int resv122; 307*4882a593Smuzhiyun unsigned int usb1clkctrl; /* offset 0x268 */ 308*4882a593Smuzhiyun unsigned int resv13[101]; 309*4882a593Smuzhiyun unsigned int l4lsclkstctrl; /* offset 0x400 */ 310*4882a593Smuzhiyun unsigned int resv14[7]; 311*4882a593Smuzhiyun unsigned int l4lsclkctrl; /* offset 0x420 */ 312*4882a593Smuzhiyun unsigned int resv15; 313*4882a593Smuzhiyun unsigned int dcan0clkctrl; /* offset 0x428 */ 314*4882a593Smuzhiyun unsigned int resv16; 315*4882a593Smuzhiyun unsigned int dcan1clkctrl; /* offset 0x430 */ 316*4882a593Smuzhiyun unsigned int resv17[13]; 317*4882a593Smuzhiyun unsigned int elmclkctrl; /* offset 0x468 */ 318*4882a593Smuzhiyun 319*4882a593Smuzhiyun unsigned int resv18[3]; 320*4882a593Smuzhiyun unsigned int gpio1clkctrl; /* offset 0x478 */ 321*4882a593Smuzhiyun unsigned int resv19; 322*4882a593Smuzhiyun unsigned int gpio2clkctrl; /* offset 0x480 */ 323*4882a593Smuzhiyun unsigned int resv20; 324*4882a593Smuzhiyun unsigned int gpio3clkctrl; /* offset 0x488 */ 325*4882a593Smuzhiyun unsigned int resv41; 326*4882a593Smuzhiyun unsigned int gpio4clkctrl; /* offset 0x490 */ 327*4882a593Smuzhiyun unsigned int resv42; 328*4882a593Smuzhiyun unsigned int gpio5clkctrl; /* offset 0x498 */ 329*4882a593Smuzhiyun unsigned int resv21[3]; 330*4882a593Smuzhiyun 331*4882a593Smuzhiyun unsigned int i2c1clkctrl; /* offset 0x4A8 */ 332*4882a593Smuzhiyun unsigned int resv22; 333*4882a593Smuzhiyun unsigned int i2c2clkctrl; /* offset 0x4B0 */ 334*4882a593Smuzhiyun unsigned int resv23[3]; 335*4882a593Smuzhiyun unsigned int mmc0clkctrl; /* offset 0x4C0 */ 336*4882a593Smuzhiyun unsigned int resv24; 337*4882a593Smuzhiyun unsigned int mmc1clkctrl; /* offset 0x4C8 */ 338*4882a593Smuzhiyun 339*4882a593Smuzhiyun unsigned int resv25[13]; 340*4882a593Smuzhiyun unsigned int spi0clkctrl; /* offset 0x500 */ 341*4882a593Smuzhiyun unsigned int resv26; 342*4882a593Smuzhiyun unsigned int spi1clkctrl; /* offset 0x508 */ 343*4882a593Smuzhiyun unsigned int resv27[9]; 344*4882a593Smuzhiyun unsigned int timer2clkctrl; /* offset 0x530 */ 345*4882a593Smuzhiyun unsigned int resv28; 346*4882a593Smuzhiyun unsigned int timer3clkctrl; /* offset 0x538 */ 347*4882a593Smuzhiyun unsigned int resv29; 348*4882a593Smuzhiyun unsigned int timer4clkctrl; /* offset 0x540 */ 349*4882a593Smuzhiyun unsigned int resv30[5]; 350*4882a593Smuzhiyun unsigned int timer7clkctrl; /* offset 0x558 */ 351*4882a593Smuzhiyun 352*4882a593Smuzhiyun unsigned int resv31[9]; 353*4882a593Smuzhiyun unsigned int uart1clkctrl; /* offset 0x580 */ 354*4882a593Smuzhiyun unsigned int resv32; 355*4882a593Smuzhiyun unsigned int uart2clkctrl; /* offset 0x588 */ 356*4882a593Smuzhiyun unsigned int resv33; 357*4882a593Smuzhiyun unsigned int uart3clkctrl; /* offset 0x590 */ 358*4882a593Smuzhiyun unsigned int resv34; 359*4882a593Smuzhiyun unsigned int uart4clkctrl; /* offset 0x598 */ 360*4882a593Smuzhiyun unsigned int resv35; 361*4882a593Smuzhiyun unsigned int uart5clkctrl; /* offset 0x5A0 */ 362*4882a593Smuzhiyun unsigned int resv36[5]; 363*4882a593Smuzhiyun unsigned int usbphyocp2scp0clkctrl; /* offset 0x5B8 */ 364*4882a593Smuzhiyun unsigned int resv361; 365*4882a593Smuzhiyun unsigned int usbphyocp2scp1clkctrl; /* offset 0x5C0 */ 366*4882a593Smuzhiyun unsigned int resv3611[79]; 367*4882a593Smuzhiyun 368*4882a593Smuzhiyun unsigned int emifclkstctrl; /* offset 0x700 */ 369*4882a593Smuzhiyun unsigned int resv362[7]; 370*4882a593Smuzhiyun unsigned int emifclkctrl; /* offset 0x720 */ 371*4882a593Smuzhiyun unsigned int resv37[3]; 372*4882a593Smuzhiyun unsigned int emiffwclkctrl; /* offset 0x730 */ 373*4882a593Smuzhiyun unsigned int resv371; 374*4882a593Smuzhiyun unsigned int otfaemifclkctrl; /* offset 0x738 */ 375*4882a593Smuzhiyun unsigned int resv38[57]; 376*4882a593Smuzhiyun unsigned int lcdclkctrl; /* offset 0x820 */ 377*4882a593Smuzhiyun unsigned int resv39[183]; 378*4882a593Smuzhiyun unsigned int cpswclkstctrl; /* offset 0xB00 */ 379*4882a593Smuzhiyun unsigned int resv40[7]; 380*4882a593Smuzhiyun unsigned int cpgmac0clkctrl; /* offset 0xB20 */ 381*4882a593Smuzhiyun }; 382*4882a593Smuzhiyun 383*4882a593Smuzhiyun struct cm_device_inst { 384*4882a593Smuzhiyun unsigned int cm_clkout1_ctrl; 385*4882a593Smuzhiyun unsigned int cm_dll_ctrl; 386*4882a593Smuzhiyun }; 387*4882a593Smuzhiyun 388*4882a593Smuzhiyun struct prm_device_inst { 389*4882a593Smuzhiyun unsigned int prm_rstctrl; 390*4882a593Smuzhiyun unsigned int prm_rstst; 391*4882a593Smuzhiyun }; 392*4882a593Smuzhiyun 393*4882a593Smuzhiyun struct cm_dpll { 394*4882a593Smuzhiyun unsigned int resv1; 395*4882a593Smuzhiyun unsigned int clktimer2clk; /* offset 0x04 */ 396*4882a593Smuzhiyun unsigned int resv2[11]; 397*4882a593Smuzhiyun unsigned int clkselmacclk; /* offset 0x34 */ 398*4882a593Smuzhiyun }; 399*4882a593Smuzhiyun #endif /* CONFIG_AM43XX */ 400*4882a593Smuzhiyun 401*4882a593Smuzhiyun /* Control Module RTC registers */ 402*4882a593Smuzhiyun struct cm_rtc { 403*4882a593Smuzhiyun unsigned int rtcclkctrl; /* offset 0x0 */ 404*4882a593Smuzhiyun unsigned int clkstctrl; /* offset 0x4 */ 405*4882a593Smuzhiyun }; 406*4882a593Smuzhiyun 407*4882a593Smuzhiyun /* Timer 32 bit registers */ 408*4882a593Smuzhiyun struct gptimer { 409*4882a593Smuzhiyun unsigned int tidr; /* offset 0x00 */ 410*4882a593Smuzhiyun unsigned char res1[12]; 411*4882a593Smuzhiyun unsigned int tiocp_cfg; /* offset 0x10 */ 412*4882a593Smuzhiyun unsigned char res2[12]; 413*4882a593Smuzhiyun unsigned int tier; /* offset 0x20 */ 414*4882a593Smuzhiyun unsigned int tistatr; /* offset 0x24 */ 415*4882a593Smuzhiyun unsigned int tistat; /* offset 0x28 */ 416*4882a593Smuzhiyun unsigned int tisr; /* offset 0x2c */ 417*4882a593Smuzhiyun unsigned int tcicr; /* offset 0x30 */ 418*4882a593Smuzhiyun unsigned int twer; /* offset 0x34 */ 419*4882a593Smuzhiyun unsigned int tclr; /* offset 0x38 */ 420*4882a593Smuzhiyun unsigned int tcrr; /* offset 0x3c */ 421*4882a593Smuzhiyun unsigned int tldr; /* offset 0x40 */ 422*4882a593Smuzhiyun unsigned int ttgr; /* offset 0x44 */ 423*4882a593Smuzhiyun unsigned int twpc; /* offset 0x48 */ 424*4882a593Smuzhiyun unsigned int tmar; /* offset 0x4c */ 425*4882a593Smuzhiyun unsigned int tcar1; /* offset 0x50 */ 426*4882a593Smuzhiyun unsigned int tscir; /* offset 0x54 */ 427*4882a593Smuzhiyun unsigned int tcar2; /* offset 0x58 */ 428*4882a593Smuzhiyun }; 429*4882a593Smuzhiyun 430*4882a593Smuzhiyun /* UART Registers */ 431*4882a593Smuzhiyun struct uart_sys { 432*4882a593Smuzhiyun unsigned int resv1[21]; 433*4882a593Smuzhiyun unsigned int uartsyscfg; /* offset 0x54 */ 434*4882a593Smuzhiyun unsigned int uartsyssts; /* offset 0x58 */ 435*4882a593Smuzhiyun }; 436*4882a593Smuzhiyun 437*4882a593Smuzhiyun /* VTP Registers */ 438*4882a593Smuzhiyun struct vtp_reg { 439*4882a593Smuzhiyun unsigned int vtp0ctrlreg; 440*4882a593Smuzhiyun }; 441*4882a593Smuzhiyun 442*4882a593Smuzhiyun /* Control Status Register */ 443*4882a593Smuzhiyun struct ctrl_stat { 444*4882a593Smuzhiyun unsigned int resv1[16]; 445*4882a593Smuzhiyun unsigned int statusreg; /* ofset 0x40 */ 446*4882a593Smuzhiyun unsigned int resv2[51]; 447*4882a593Smuzhiyun unsigned int secure_emif_sdram_config; /* offset 0x0110 */ 448*4882a593Smuzhiyun unsigned int resv3[319]; 449*4882a593Smuzhiyun unsigned int dev_attr; 450*4882a593Smuzhiyun }; 451*4882a593Smuzhiyun 452*4882a593Smuzhiyun /* AM33XX GPIO registers */ 453*4882a593Smuzhiyun #define OMAP_GPIO_REVISION 0x0000 454*4882a593Smuzhiyun #define OMAP_GPIO_SYSCONFIG 0x0010 455*4882a593Smuzhiyun #define OMAP_GPIO_SYSSTATUS 0x0114 456*4882a593Smuzhiyun #define OMAP_GPIO_IRQSTATUS1 0x002c 457*4882a593Smuzhiyun #define OMAP_GPIO_IRQSTATUS2 0x0030 458*4882a593Smuzhiyun #define OMAP_GPIO_IRQSTATUS_SET_0 0x0034 459*4882a593Smuzhiyun #define OMAP_GPIO_IRQSTATUS_SET_1 0x0038 460*4882a593Smuzhiyun #define OMAP_GPIO_CTRL 0x0130 461*4882a593Smuzhiyun #define OMAP_GPIO_OE 0x0134 462*4882a593Smuzhiyun #define OMAP_GPIO_DATAIN 0x0138 463*4882a593Smuzhiyun #define OMAP_GPIO_DATAOUT 0x013c 464*4882a593Smuzhiyun #define OMAP_GPIO_LEVELDETECT0 0x0140 465*4882a593Smuzhiyun #define OMAP_GPIO_LEVELDETECT1 0x0144 466*4882a593Smuzhiyun #define OMAP_GPIO_RISINGDETECT 0x0148 467*4882a593Smuzhiyun #define OMAP_GPIO_FALLINGDETECT 0x014c 468*4882a593Smuzhiyun #define OMAP_GPIO_DEBOUNCE_EN 0x0150 469*4882a593Smuzhiyun #define OMAP_GPIO_DEBOUNCE_VAL 0x0154 470*4882a593Smuzhiyun #define OMAP_GPIO_CLEARDATAOUT 0x0190 471*4882a593Smuzhiyun #define OMAP_GPIO_SETDATAOUT 0x0194 472*4882a593Smuzhiyun 473*4882a593Smuzhiyun /* Control Device Register */ 474*4882a593Smuzhiyun 475*4882a593Smuzhiyun /* Control Device Register */ 476*4882a593Smuzhiyun #define MREQPRIO_0_SAB_INIT1_MASK 0xFFFFFF8F 477*4882a593Smuzhiyun #define MREQPRIO_0_SAB_INIT0_MASK 0xFFFFFFF8 478*4882a593Smuzhiyun #define MREQPRIO_1_DSS_MASK 0xFFFFFF8F 479*4882a593Smuzhiyun 480*4882a593Smuzhiyun struct ctrl_dev { 481*4882a593Smuzhiyun unsigned int deviceid; /* offset 0x00 */ 482*4882a593Smuzhiyun unsigned int resv1[7]; 483*4882a593Smuzhiyun unsigned int usb_ctrl0; /* offset 0x20 */ 484*4882a593Smuzhiyun unsigned int resv2; 485*4882a593Smuzhiyun unsigned int usb_ctrl1; /* offset 0x28 */ 486*4882a593Smuzhiyun unsigned int resv3; 487*4882a593Smuzhiyun unsigned int macid0l; /* offset 0x30 */ 488*4882a593Smuzhiyun unsigned int macid0h; /* offset 0x34 */ 489*4882a593Smuzhiyun unsigned int macid1l; /* offset 0x38 */ 490*4882a593Smuzhiyun unsigned int macid1h; /* offset 0x3c */ 491*4882a593Smuzhiyun unsigned int resv4[4]; 492*4882a593Smuzhiyun unsigned int miisel; /* offset 0x50 */ 493*4882a593Smuzhiyun unsigned int resv5[7]; 494*4882a593Smuzhiyun unsigned int mreqprio_0; /* offset 0x70 */ 495*4882a593Smuzhiyun unsigned int mreqprio_1; /* offset 0x74 */ 496*4882a593Smuzhiyun unsigned int resv6[97]; 497*4882a593Smuzhiyun unsigned int efuse_sma; /* offset 0x1FC */ 498*4882a593Smuzhiyun }; 499*4882a593Smuzhiyun 500*4882a593Smuzhiyun /* Bandwidth Limiter Portion of the L3Fast Configuration Register */ 501*4882a593Smuzhiyun #define BW_LIMITER_BW_FRAC_MASK 0xFFFFFFE0 502*4882a593Smuzhiyun #define BW_LIMITER_BW_INT_MASK 0xFFFFFFF0 503*4882a593Smuzhiyun #define BW_LIMITER_BW_WATERMARK_MASK 0xFFFFF800 504*4882a593Smuzhiyun 505*4882a593Smuzhiyun struct l3f_cfg_bwlimiter { 506*4882a593Smuzhiyun u32 padding0[2]; 507*4882a593Smuzhiyun u32 modena_init0_bw_fractional; 508*4882a593Smuzhiyun u32 modena_init0_bw_integer; 509*4882a593Smuzhiyun u32 modena_init0_watermark_0; 510*4882a593Smuzhiyun }; 511*4882a593Smuzhiyun 512*4882a593Smuzhiyun /* gmii_sel register defines */ 513*4882a593Smuzhiyun #define GMII1_SEL_MII 0x0 514*4882a593Smuzhiyun #define GMII1_SEL_RMII 0x1 515*4882a593Smuzhiyun #define GMII1_SEL_RGMII 0x2 516*4882a593Smuzhiyun #define GMII2_SEL_MII 0x0 517*4882a593Smuzhiyun #define GMII2_SEL_RMII 0x4 518*4882a593Smuzhiyun #define GMII2_SEL_RGMII 0x8 519*4882a593Smuzhiyun #define RGMII1_IDMODE BIT(4) 520*4882a593Smuzhiyun #define RGMII2_IDMODE BIT(5) 521*4882a593Smuzhiyun #define RMII1_IO_CLK_EN BIT(6) 522*4882a593Smuzhiyun #define RMII2_IO_CLK_EN BIT(7) 523*4882a593Smuzhiyun 524*4882a593Smuzhiyun #define MII_MODE_ENABLE (GMII1_SEL_MII | GMII2_SEL_MII) 525*4882a593Smuzhiyun #define RMII_MODE_ENABLE (GMII1_SEL_RMII | GMII2_SEL_RMII) 526*4882a593Smuzhiyun #define RGMII_MODE_ENABLE (GMII1_SEL_RGMII | GMII2_SEL_RGMII) 527*4882a593Smuzhiyun #define RGMII_INT_DELAY (RGMII1_IDMODE | RGMII2_IDMODE) 528*4882a593Smuzhiyun #define RMII_CHIPCKL_ENABLE (RMII1_IO_CLK_EN | RMII2_IO_CLK_EN) 529*4882a593Smuzhiyun 530*4882a593Smuzhiyun /* PWMSS */ 531*4882a593Smuzhiyun struct pwmss_regs { 532*4882a593Smuzhiyun unsigned int idver; 533*4882a593Smuzhiyun unsigned int sysconfig; 534*4882a593Smuzhiyun unsigned int clkconfig; 535*4882a593Smuzhiyun unsigned int clkstatus; 536*4882a593Smuzhiyun }; 537*4882a593Smuzhiyun #define ECAP_CLK_EN BIT(0) 538*4882a593Smuzhiyun #define ECAP_CLK_STOP_REQ BIT(1) 539*4882a593Smuzhiyun #define EPWM_CLK_EN BIT(8) 540*4882a593Smuzhiyun #define EPWM_CLK_STOP_REQ BIT(9) 541*4882a593Smuzhiyun 542*4882a593Smuzhiyun struct pwmss_ecap_regs { 543*4882a593Smuzhiyun unsigned int tsctr; 544*4882a593Smuzhiyun unsigned int ctrphs; 545*4882a593Smuzhiyun unsigned int cap1; 546*4882a593Smuzhiyun unsigned int cap2; 547*4882a593Smuzhiyun unsigned int cap3; 548*4882a593Smuzhiyun unsigned int cap4; 549*4882a593Smuzhiyun unsigned int resv1[4]; 550*4882a593Smuzhiyun unsigned short ecctl1; 551*4882a593Smuzhiyun unsigned short ecctl2; 552*4882a593Smuzhiyun }; 553*4882a593Smuzhiyun 554*4882a593Smuzhiyun struct pwmss_epwm_regs { 555*4882a593Smuzhiyun unsigned short tbctl; 556*4882a593Smuzhiyun unsigned short tbsts; 557*4882a593Smuzhiyun unsigned short tbphshr; 558*4882a593Smuzhiyun unsigned short tbphs; 559*4882a593Smuzhiyun unsigned short tbcnt; 560*4882a593Smuzhiyun unsigned short tbprd; 561*4882a593Smuzhiyun unsigned short res1; 562*4882a593Smuzhiyun unsigned short cmpctl; 563*4882a593Smuzhiyun unsigned short cmpahr; 564*4882a593Smuzhiyun unsigned short cmpa; 565*4882a593Smuzhiyun unsigned short cmpb; 566*4882a593Smuzhiyun unsigned short aqctla; 567*4882a593Smuzhiyun unsigned short aqctlb; 568*4882a593Smuzhiyun unsigned short aqsfrc; 569*4882a593Smuzhiyun unsigned short aqcsfrc; 570*4882a593Smuzhiyun unsigned short dbctl; 571*4882a593Smuzhiyun unsigned short dbred; 572*4882a593Smuzhiyun unsigned short dbfed; 573*4882a593Smuzhiyun unsigned short tzsel; 574*4882a593Smuzhiyun unsigned short tzctl; 575*4882a593Smuzhiyun unsigned short tzflg; 576*4882a593Smuzhiyun unsigned short tzclr; 577*4882a593Smuzhiyun unsigned short tzfrc; 578*4882a593Smuzhiyun unsigned short etsel; 579*4882a593Smuzhiyun unsigned short etps; 580*4882a593Smuzhiyun unsigned short etflg; 581*4882a593Smuzhiyun unsigned short etclr; 582*4882a593Smuzhiyun unsigned short etfrc; 583*4882a593Smuzhiyun unsigned short pcctl; 584*4882a593Smuzhiyun unsigned int res2[66]; 585*4882a593Smuzhiyun unsigned short hrcnfg; 586*4882a593Smuzhiyun }; 587*4882a593Smuzhiyun 588*4882a593Smuzhiyun /* Capture Control register 2 */ 589*4882a593Smuzhiyun #define ECTRL2_SYNCOSEL_MASK (0x03 << 6) 590*4882a593Smuzhiyun #define ECTRL2_MDSL_ECAP BIT(9) 591*4882a593Smuzhiyun #define ECTRL2_CTRSTP_FREERUN BIT(4) 592*4882a593Smuzhiyun #define ECTRL2_PLSL_LOW BIT(10) 593*4882a593Smuzhiyun #define ECTRL2_SYNC_EN BIT(5) 594*4882a593Smuzhiyun 595*4882a593Smuzhiyun #endif /* __ASSEMBLY__ */ 596*4882a593Smuzhiyun #endif /* __KERNEL_STRICT_NAMES */ 597*4882a593Smuzhiyun 598*4882a593Smuzhiyun #endif /* _AM33XX_CPU_H */ 599