1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */ 20f3864a9SMacpaul Lin /* 30f3864a9SMacpaul Lin * (C) Copyright 2011 Andes Technology Corp 40f3864a9SMacpaul Lin * Macpaul Lin <macpaul@andestech.com> 50f3864a9SMacpaul Lin */ 60f3864a9SMacpaul Lin 70f3864a9SMacpaul Lin /* 80f3864a9SMacpaul Lin * Andes Power Control Unit 90f3864a9SMacpaul Lin */ 100f3864a9SMacpaul Lin #ifndef __ANDES_PCU_H 110f3864a9SMacpaul Lin #define __ANDES_PCU_H 120f3864a9SMacpaul Lin 130f3864a9SMacpaul Lin #ifndef __ASSEMBLY__ 140f3864a9SMacpaul Lin 150f3864a9SMacpaul Lin struct pcs { 160f3864a9SMacpaul Lin unsigned int cr; /* PCSx Configuration (clock scaling) */ 170f3864a9SMacpaul Lin unsigned int parm; /* PCSx Parameter*/ 180f3864a9SMacpaul Lin unsigned int stat1; /* PCSx Status 1 */ 190f3864a9SMacpaul Lin unsigned int stat2; /* PCSx Stusts 2 */ 200f3864a9SMacpaul Lin unsigned int pdd; /* PCSx PDD */ 210f3864a9SMacpaul Lin }; 220f3864a9SMacpaul Lin 230f3864a9SMacpaul Lin struct andes_pcu { 240f3864a9SMacpaul Lin unsigned int rev; /* 0x00 - PCU Revision */ 250f3864a9SMacpaul Lin unsigned int spinfo; /* 0x04 - Scratch Pad Info */ 260f3864a9SMacpaul Lin unsigned int rsvd1[2]; /* 0x08-0x0C: Reserved */ 270f3864a9SMacpaul Lin unsigned int soc_id; /* 0x10 - SoC ID */ 280f3864a9SMacpaul Lin unsigned int soc_ahb; /* 0x14 - SoC AHB configuration */ 290f3864a9SMacpaul Lin unsigned int soc_apb; /* 0x18 - SoC APB configuration */ 300f3864a9SMacpaul Lin unsigned int rsvd2; /* 0x1C */ 310f3864a9SMacpaul Lin unsigned int dcsrcr0; /* 0x20 - Driving Capability 320f3864a9SMacpaul Lin and Slew Rate Control 0 */ 330f3864a9SMacpaul Lin unsigned int dcsrcr1; /* 0x24 - Driving Capability 340f3864a9SMacpaul Lin and Slew Rate Control 1 */ 350f3864a9SMacpaul Lin unsigned int dcsrcr2; /* 0x28 - Driving Capability 360f3864a9SMacpaul Lin and Slew Rate Control 2 */ 370f3864a9SMacpaul Lin unsigned int rsvd3; /* 0x2C */ 380f3864a9SMacpaul Lin unsigned int mfpsr0; /* 0x30 - Multi-Func Port Setting 0 */ 390f3864a9SMacpaul Lin unsigned int mfpsr1; /* 0x34 - Multi-Func Port Setting 1 */ 400f3864a9SMacpaul Lin unsigned int dmaes; /* 0x38 - DMA Engine Selection */ 410f3864a9SMacpaul Lin unsigned int rsvd4; /* 0x3C */ 420f3864a9SMacpaul Lin unsigned int oscc; /* 0x40 - OSC Control */ 430f3864a9SMacpaul Lin unsigned int pwmcd; /* 0x44 - PWM Clock divider */ 440f3864a9SMacpaul Lin unsigned int socmisc; /* 0x48 - SoC Misc. */ 450f3864a9SMacpaul Lin unsigned int rsvd5[13]; /* 0x4C-0x7C: Reserved */ 460f3864a9SMacpaul Lin unsigned int bsmcr; /* 0x80 - BSM Controrl */ 470f3864a9SMacpaul Lin unsigned int bsmst; /* 0x84 - BSM Status */ 480f3864a9SMacpaul Lin unsigned int wes; /* 0x88 - Wakeup Event Sensitivity*/ 490f3864a9SMacpaul Lin unsigned int west; /* 0x8C - Wakeup Event Status */ 500f3864a9SMacpaul Lin unsigned int rsttiming; /* 0x90 - Reset Timing */ 510f3864a9SMacpaul Lin unsigned int intr_st; /* 0x94 - PCU Interrupt Status */ 520f3864a9SMacpaul Lin unsigned int rsvd6[2]; /* 0x98-0x9C: Reserved */ 530f3864a9SMacpaul Lin struct pcs pcs1; /* 0xA0-0xB0: PCS1 (clock scaling) */ 540f3864a9SMacpaul Lin unsigned int pcsrsvd1[3]; /* 0xB4-0xBC: Reserved */ 550f3864a9SMacpaul Lin struct pcs pcs2; /* 0xC0-0xD0: PCS2 (AHB clock gating) */ 560f3864a9SMacpaul Lin unsigned int pcsrsvd2[3]; /* 0xD4-0xDC: Reserved */ 570f3864a9SMacpaul Lin struct pcs pcs3; /* 0xE0-0xF0: PCS3 (APB clock gating) */ 580f3864a9SMacpaul Lin unsigned int pcsrsvd3[3]; /* 0xF4-0xFC: Reserved */ 590f3864a9SMacpaul Lin struct pcs pcs4; /* 0x100-0x110: PCS4 main PLL scaling */ 600f3864a9SMacpaul Lin unsigned int pcsrsvd4[3]; /* 0x114-0x11C: Reserved */ 610f3864a9SMacpaul Lin struct pcs pcs5; /* 0x120-0x130: PCS5 PCI PLL scaling */ 620f3864a9SMacpaul Lin unsigned int pcsrsvd5[3]; /* 0x134-0x13C: Reserved */ 630f3864a9SMacpaul Lin struct pcs pcs6; /* 0x140-0x150: PCS6 AC97 PLL scaling */ 640f3864a9SMacpaul Lin unsigned int pcsrsvd6[3]; /* 0x154-0x15C: Reserved */ 650f3864a9SMacpaul Lin struct pcs pcs7; /* 0x160-0x170: PCS7 GMAC PLL scaling */ 660f3864a9SMacpaul Lin unsigned int pcsrsvd7[3]; /* 0x174-0x17C: Reserved */ 670f3864a9SMacpaul Lin struct pcs pcs8; /* 0x180-0x190: PCS8 voltage scaling */ 680f3864a9SMacpaul Lin unsigned int pcsrsvd8[3]; /* 0x194-0x19C: Reserved */ 690f3864a9SMacpaul Lin struct pcs pcs9; /* 0x1A0-0x1B0: PCS9 power control */ 700f3864a9SMacpaul Lin unsigned int pcsrsvd9[93]; /* 0x1B4-0x3FC: Reserved */ 710f3864a9SMacpaul Lin unsigned int pmspdm[40]; /* 0x400-0x4fC: Power Manager 720f3864a9SMacpaul Lin Scratch Pad Memory 0 */ 730f3864a9SMacpaul Lin }; 740f3864a9SMacpaul Lin #endif /* __ASSEMBLY__ */ 750f3864a9SMacpaul Lin 760f3864a9SMacpaul Lin /* 770f3864a9SMacpaul Lin * PCU Revision Register (ro) 780f3864a9SMacpaul Lin */ 790f3864a9SMacpaul Lin #define ANDES_PCU_REV_NUMBER_PCS(x) (((x) >> 0) & 0xff) 800f3864a9SMacpaul Lin #define ANDES_PCU_REV_VER(x) (((x) >> 16) & 0xffff) 810f3864a9SMacpaul Lin 820f3864a9SMacpaul Lin /* 830f3864a9SMacpaul Lin * Scratch Pad Info Register (ro) 840f3864a9SMacpaul Lin */ 850f3864a9SMacpaul Lin #define ANDES_PCU_SPINFO_SIZE(x) (((x) >> 0) & 0xff) 860f3864a9SMacpaul Lin #define ANDES_PCU_SPINFO_OFFSET(x) (((x) >> 8) & 0xf) 870f3864a9SMacpaul Lin 880f3864a9SMacpaul Lin /* 890f3864a9SMacpaul Lin * SoC ID Register (ro) 900f3864a9SMacpaul Lin */ 910f3864a9SMacpaul Lin #define ANDES_PCU_SOC_ID_VER_MINOR(x) (((x) >> 0) & 0xf) 920f3864a9SMacpaul Lin #define ANDES_PCU_SOC_ID_VER_MAJOR(x) (((x) >> 4) & 0xfff) 930f3864a9SMacpaul Lin #define ANDES_PCU_SOC_ID_DEVICEID(x) (((x) >> 16) & 0xffff) 940f3864a9SMacpaul Lin 950f3864a9SMacpaul Lin /* 960f3864a9SMacpaul Lin * SoC AHB Configuration Register (ro) 970f3864a9SMacpaul Lin */ 980f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_AHBC(x) ((x) << 0) 990f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_APBREG(x) ((x) << 1) 1000f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_APB(x) ((x) << 2) 1010f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_DLM1(x) ((x) << 3) 1020f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_SPIROM(x) ((x) << 4) 1030f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_DDR2C(x) ((x) << 5) 1040f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_DDR2MEM(x) ((x) << 6) 1050f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_DMAC(x) ((x) << 7) 1060f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_DLM2(x) ((x) << 8) 1070f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_GPU(x) ((x) << 9) 1080f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_GMAC(x) ((x) << 12) 1090f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_IDE(x) ((x) << 13) 1100f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_USBOTG(x) ((x) << 14) 1110f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_INTC(x) ((x) << 15) 1120f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_LPCIO(x) ((x) << 16) 1130f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_LPCREG(x) ((x) << 17) 1140f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_PCIIO(x) ((x) << 18) 1150f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_PCIMEM(x) ((x) << 19) 1160f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_L2CC(x) ((x) << 20) 1170f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_AHB2AHBREG(x) ((x) << 27) 1180f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_AHB2AHBMEM0(x) ((x) << 28) 1190f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_AHB2AHBMEM1(x) ((x) << 29) 1200f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_AHB2AHBMEM2(x) ((x) << 30) 1210f3864a9SMacpaul Lin #define ANDES_PCU_SOC_AHB_AHB2AHBMEM3(x) ((x) << 31) 1220f3864a9SMacpaul Lin 1230f3864a9SMacpaul Lin /* 1240f3864a9SMacpaul Lin * SoC APB Configuration Register (ro) 1250f3864a9SMacpaul Lin */ 1260f3864a9SMacpaul Lin #define ANDES_PCU_SOC_APB_CFC(x) ((x) << 1) 1270f3864a9SMacpaul Lin #define ANDES_PCU_SOC_APB_SSP(x) ((x) << 2) 1280f3864a9SMacpaul Lin #define ANDES_PCU_SOC_APB_UART1(x) ((x) << 3) 1290f3864a9SMacpaul Lin #define ANDES_PCU_SOC_APB_SDC(x) ((x) << 5) 1300f3864a9SMacpaul Lin #define ANDES_PCU_SOC_APB_AC97I2S(x) ((x) << 6) 1310f3864a9SMacpaul Lin #define ANDES_PCU_SOC_APB_UART2(x) ((x) << 8) 1320f3864a9SMacpaul Lin #define ANDES_PCU_SOC_APB_PCU(x) ((x) << 16) 1330f3864a9SMacpaul Lin #define ANDES_PCU_SOC_APB_TMR(x) ((x) << 17) 1340f3864a9SMacpaul Lin #define ANDES_PCU_SOC_APB_WDT(x) ((x) << 18) 1350f3864a9SMacpaul Lin #define ANDES_PCU_SOC_APB_RTC(x) ((x) << 19) 1360f3864a9SMacpaul Lin #define ANDES_PCU_SOC_APB_GPIO(x) ((x) << 20) 1370f3864a9SMacpaul Lin #define ANDES_PCU_SOC_APB_I2C(x) ((x) << 22) 1380f3864a9SMacpaul Lin #define ANDES_PCU_SOC_APB_PWM(x) ((x) << 23) 1390f3864a9SMacpaul Lin 1400f3864a9SMacpaul Lin /* 1410f3864a9SMacpaul Lin * Driving Capability and Slew Rate Control Register 0 (rw) 1420f3864a9SMacpaul Lin */ 1430f3864a9SMacpaul Lin #define ANDES_PCU_DCSRCR0_TRIAHB(x) (((x) & 0x1f) << 0) 1440f3864a9SMacpaul Lin #define ANDES_PCU_DCSRCR0_LPC(x) (((x) & 0xf) << 8) 1450f3864a9SMacpaul Lin #define ANDES_PCU_DCSRCR0_ULPI(x) (((x) & 0xf) << 12) 1460f3864a9SMacpaul Lin #define ANDES_PCU_DCSRCR0_GMAC(x) (((x) & 0xf) << 16) 1470f3864a9SMacpaul Lin #define ANDES_PCU_DCSRCR0_GPU(x) (((x) & 0xf) << 20) 1480f3864a9SMacpaul Lin 1490f3864a9SMacpaul Lin /* 1500f3864a9SMacpaul Lin * Driving Capability and Slew Rate Control Register 1 (rw) 1510f3864a9SMacpaul Lin */ 1520f3864a9SMacpaul Lin #define ANDES_PCU_DCSRCR1_I2C(x) (((x) & 0xf) << 0) 1530f3864a9SMacpaul Lin 1540f3864a9SMacpaul Lin /* 1550f3864a9SMacpaul Lin * Driving Capability and Slew Rate Control Register 2 (rw) 1560f3864a9SMacpaul Lin */ 1570f3864a9SMacpaul Lin #define ANDES_PCU_DCSRCR2_UART1(x) (((x) & 0xf) << 0) 1580f3864a9SMacpaul Lin #define ANDES_PCU_DCSRCR2_UART2(x) (((x) & 0xf) << 4) 1590f3864a9SMacpaul Lin #define ANDES_PCU_DCSRCR2_AC97(x) (((x) & 0xf) << 8) 1600f3864a9SMacpaul Lin #define ANDES_PCU_DCSRCR2_SPI(x) (((x) & 0xf) << 12) 1610f3864a9SMacpaul Lin #define ANDES_PCU_DCSRCR2_SD(x) (((x) & 0xf) << 16) 1620f3864a9SMacpaul Lin #define ANDES_PCU_DCSRCR2_CFC(x) (((x) & 0xf) << 20) 1630f3864a9SMacpaul Lin #define ANDES_PCU_DCSRCR2_GPIO(x) (((x) & 0xf) << 24) 1640f3864a9SMacpaul Lin #define ANDES_PCU_DCSRCR2_PCU(x) (((x) & 0xf) << 28) 1650f3864a9SMacpaul Lin 1660f3864a9SMacpaul Lin /* 1670f3864a9SMacpaul Lin * Multi-function Port Setting Register 0 (rw) 1680f3864a9SMacpaul Lin */ 1690f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR0_PCIMODE(x) ((x) << 0) 1700f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR0_IDEMODE(x) ((x) << 1) 1710f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR0_MINI_TC01(x) ((x) << 2) 1720f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR0_AHB_DEBUG(x) ((x) << 3) 1730f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR0_AHB_TARGET(x) ((x) << 4) 1740f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR0_DEFAULT_IVB(x) (((x) & 0x7) << 28) 1750f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR0_DEFAULT_ENDIAN(x) ((x) << 31) 1760f3864a9SMacpaul Lin 1770f3864a9SMacpaul Lin /* 1780f3864a9SMacpaul Lin * Multi-function Port Setting Register 1 (rw) 1790f3864a9SMacpaul Lin */ 1800f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR1_SUSPEND(x) ((x) << 0) 1810f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR1_PWM0(x) ((x) << 1) 1820f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR1_PWM1(x) ((x) << 2) 1830f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR1_AC97CLKOUT(x) ((x) << 3) 1840f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR1_PWREN(x) ((x) << 4) 1850f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR1_PME(x) ((x) << 5) 1860f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR1_I2C(x) ((x) << 6) 1870f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR1_UART1(x) ((x) << 7) 1880f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR1_UART2(x) ((x) << 8) 1890f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR1_SPI(x) ((x) << 9) 1900f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR1_SD(x) ((x) << 10) 1910f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR1_GPUPLLSRC(x) ((x) << 27) 1920f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR1_DVOMODE(x) ((x) << 28) 1930f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR1_HSMP_FAST_REQ(x) ((x) << 29) 1940f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR1_AHB_FAST_REQ(x) ((x) << 30) 1950f3864a9SMacpaul Lin #define ANDES_PCU_MFPSR1_PMUR_EXT_INT(x) ((x) << 31) 1960f3864a9SMacpaul Lin 1970f3864a9SMacpaul Lin /* 1980f3864a9SMacpaul Lin * DMA Engine Selection Register (rw) 1990f3864a9SMacpaul Lin */ 2000f3864a9SMacpaul Lin #define ANDES_PCU_DMAES_AC97RX(x) ((x) << 2) 2010f3864a9SMacpaul Lin #define ANDES_PCU_DMAES_AC97TX(x) ((x) << 3) 2020f3864a9SMacpaul Lin #define ANDES_PCU_DMAES_UART1RX(x) ((x) << 4) 2030f3864a9SMacpaul Lin #define ANDES_PCU_DMAES_UART1TX(x) ((x) << 5) 2040f3864a9SMacpaul Lin #define ANDES_PCU_DMAES_UART2RX(x) ((x) << 6) 2050f3864a9SMacpaul Lin #define ANDES_PCU_DMAES_UART2TX(x) ((x) << 7) 2060f3864a9SMacpaul Lin #define ANDES_PCU_DMAES_SDDMA(x) ((x) << 8) 2070f3864a9SMacpaul Lin #define ANDES_PCU_DMAES_CFCDMA(x) ((x) << 9) 2080f3864a9SMacpaul Lin 2090f3864a9SMacpaul Lin /* 2100f3864a9SMacpaul Lin * OSC Control Register (rw) 2110f3864a9SMacpaul Lin */ 2120f3864a9SMacpaul Lin #define ANDES_PCU_OSCC_OSCH_OFF(x) ((x) << 0) 2130f3864a9SMacpaul Lin #define ANDES_PCU_OSCC_OSCH_STABLE(x) ((x) << 1) 2140f3864a9SMacpaul Lin #define ANDES_PCU_OSCC_OSCH_TRI(x) ((x) << 2) 2150f3864a9SMacpaul Lin #define ANDES_PCU_OSCC_OSCH_RANGE(x) (((x) & 0x3) << 4) 2160f3864a9SMacpaul Lin #define ANDES_PCU_OSCC_OSCH2_RANGE(x) (((x) & 0x3) << 6) 2170f3864a9SMacpaul Lin #define ANDES_PCU_OSCC_OSCH3_RANGE(x) (((x) & 0x3) << 8) 2180f3864a9SMacpaul Lin 2190f3864a9SMacpaul Lin /* 2200f3864a9SMacpaul Lin * PWM Clock Divider Register (rw) 2210f3864a9SMacpaul Lin */ 2220f3864a9SMacpaul Lin #define ANDES_PCU_PWMCD_PWMDIV(x) (((x) & 0xf) << 0) 2230f3864a9SMacpaul Lin 2240f3864a9SMacpaul Lin /* 2250f3864a9SMacpaul Lin * SoC Misc. Register (rw) 2260f3864a9SMacpaul Lin */ 2270f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_RSCPUA(x) ((x) << 0) 2280f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_RSCPUB(x) ((x) << 1) 2290f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_RSPCI(x) ((x) << 2) 2300f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_USBWAKE(x) ((x) << 3) 2310f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_EXLM_WAITA(x) (((x) & 0x3) << 4) 2320f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_EXLM_WAITB(x) (((x) & 0x3) << 6) 2330f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_DDRPLL_BYPASS(x) (((x) << 8) 2340f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_300MHZSEL(x) (((x) << 9) 2350f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_DDRDLL_SRST(x) (((x) << 10) 2360f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_DDRDDQ_TEST(x) (((x) << 11) 2370f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_DDRDLL_TEST(x) (((x) << 12) 2380f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_GPUPLL_BYPASS(x) (((x) << 13) 2390f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_ENCPUA(x) (((x) << 14) 2400f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_ENCPUB(x) (((x) << 15) 2410f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_PWON_PWBTN(x) (((x) << 16) 2420f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_PWON_GPIO1(x) (((x) << 17) 2430f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_PWON_GPIO2(x) (((x) << 18) 2440f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_PWON_GPIO3(x) (((x) << 19) 2450f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_PWON_GPIO4(x) (((x) << 20) 2460f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_PWON_GPIO5(x) (((x) << 21) 2470f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_PWON_WOL(x) (((x) << 22) 2480f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_PWON_RTC(x) (((x) << 23) 2490f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_PWON_RTCALM(x) (((x) << 24) 2500f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_PWON_XDBGIN(x) (((x) << 25) 2510f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_PWON_PME(x) (((x) << 26) 2520f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_PWON_PWFAIL(x) (((x) << 27) 2530f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_CPUA_SRSTED(x) (((x) << 28) 2540f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_CPUB_SRSTED(x) (((x) << 29) 2550f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_WD_RESET(x) (((x) << 30) 2560f3864a9SMacpaul Lin #define ANDES_PCU_SOCMISC_HW_RESET(x) (((x) << 31) 2570f3864a9SMacpaul Lin 2580f3864a9SMacpaul Lin /* 2590f3864a9SMacpaul Lin * BSM Control Register (rw) 2600f3864a9SMacpaul Lin */ 2610f3864a9SMacpaul Lin #define ANDES_PCU_BSMCR_LINK0(x) (((x) & 0xf) << 0) 2620f3864a9SMacpaul Lin #define ANDES_PCU_BSMCR_LINK1(x) (((x) & 0xf) << 4) 2630f3864a9SMacpaul Lin #define ANDES_PCU_BSMCR_SYNCSRC(x) (((x) & 0xf) << 24) 2640f3864a9SMacpaul Lin #define ANDES_PCU_BSMCR_CMD(x) (((x) & 0x7) << 28) 2650f3864a9SMacpaul Lin #define ANDES_PCU_BSMCR_IE(x) ((x) << 31) 2660f3864a9SMacpaul Lin 2670f3864a9SMacpaul Lin /* 2680f3864a9SMacpaul Lin * BSM Status Register 2690f3864a9SMacpaul Lin */ 2700f3864a9SMacpaul Lin #define ANDES_PCU_BSMSR_CI0(x) (((x) & 0xf) << 0) 2710f3864a9SMacpaul Lin #define ANDES_PCU_BSMSR_CI1(x) (((x) & 0xf) << 4) 2720f3864a9SMacpaul Lin #define ANDES_PCU_BSMSR_SYNCSRC(x) (((x) & 0xf) << 24) 2730f3864a9SMacpaul Lin #define ANDES_PCU_BSMSR_BSMST(x) (((x) & 0xf) << 28) 2740f3864a9SMacpaul Lin 2750f3864a9SMacpaul Lin /* 2760f3864a9SMacpaul Lin * Wakeup Event Sensitivity Register (rw) 2770f3864a9SMacpaul Lin */ 2780f3864a9SMacpaul Lin #define ANDES_PCU_WESR_POLOR(x) (((x) & 0xff) << 0) 2790f3864a9SMacpaul Lin 2800f3864a9SMacpaul Lin /* 2810f3864a9SMacpaul Lin * Wakeup Event Status Register (ro) 2820f3864a9SMacpaul Lin */ 2830f3864a9SMacpaul Lin #define ANDES_PCU_WEST_SIG(x) (((x) & 0xff) << 0) 2840f3864a9SMacpaul Lin 2850f3864a9SMacpaul Lin /* 2860f3864a9SMacpaul Lin * Reset Timing Register 2870f3864a9SMacpaul Lin */ 2880f3864a9SMacpaul Lin #define ANDES_PCU_RSTTIMING_RG0(x) (((x) & 0xff) << 0) 2890f3864a9SMacpaul Lin #define ANDES_PCU_RSTTIMING_RG1(x) (((x) & 0xff) << 8) 2900f3864a9SMacpaul Lin #define ANDES_PCU_RSTTIMING_RG2(x) (((x) & 0xff) << 16) 2910f3864a9SMacpaul Lin #define ANDES_PCU_RSTTIMING_RG3(x) (((x) & 0xff) << 24) 2920f3864a9SMacpaul Lin 2930f3864a9SMacpaul Lin /* 2940f3864a9SMacpaul Lin * PCU Interrupt Status Register 2950f3864a9SMacpaul Lin */ 2960f3864a9SMacpaul Lin #define ANDES_PCU_INTR_ST_BSM(x) ((x) << 0) 2970f3864a9SMacpaul Lin #define ANDES_PCU_INTR_ST_PCS1(x) ((x) << 1) 2980f3864a9SMacpaul Lin #define ANDES_PCU_INTR_ST_PCS2(x) ((x) << 2) 2990f3864a9SMacpaul Lin #define ANDES_PCU_INTR_ST_PCS3(x) ((x) << 3) 3000f3864a9SMacpaul Lin #define ANDES_PCU_INTR_ST_PCS4(x) ((x) << 4) 3010f3864a9SMacpaul Lin #define ANDES_PCU_INTR_ST_PCS5(x) ((x) << 5) 3020f3864a9SMacpaul Lin #define ANDES_PCU_INTR_ST_PCS6(x) ((x) << 6) 3030f3864a9SMacpaul Lin #define ANDES_PCU_INTR_ST_PCS7(x) ((x) << 7) 3040f3864a9SMacpaul Lin #define ANDES_PCU_INTR_ST_PCS8(x) ((x) << 8) 3050f3864a9SMacpaul Lin #define ANDES_PCU_INTR_ST_PCS9(x) ((x) << 9) 3060f3864a9SMacpaul Lin 3070f3864a9SMacpaul Lin /* 3080f3864a9SMacpaul Lin * PCSx Configuration Register 3090f3864a9SMacpaul Lin */ 3100f3864a9SMacpaul Lin #define ANDES_PCU_PCSX_CR_WAKEUP_EN(x) (((x) & 0xff) << 0) 3110f3864a9SMacpaul Lin #define ANDES_PCU_PCSX_CR_LW(x) (((x) & 0xf) << 16) 3120f3864a9SMacpaul Lin #define ANDES_PCU_PCSX_CR_LS(x) (((x) & 0xf) << 20) 3130f3864a9SMacpaul Lin #define ANDES_PCU_PCSX_CR_TYPE(x) (((x) >> 28) & 0x7) /* (ro) */ 3140f3864a9SMacpaul Lin 3150f3864a9SMacpaul Lin /* 3160f3864a9SMacpaul Lin * PCSx Parameter Register (rw) 3170f3864a9SMacpaul Lin */ 3180f3864a9SMacpaul Lin #define ANDES_PCU_PCSX_PARM_NEXT(x) (((x) & 0xffffff) << 0) 3190f3864a9SMacpaul Lin #define ANDES_PCU_PCSX_PARM_SYNCSRC(x) (((x) & 0xf) << 24) 3200f3864a9SMacpaul Lin #define ANDES_PCU_PCSX_PARM_PCSCMD(x) (((x) & 0x7) << 28) 3210f3864a9SMacpaul Lin #define ANDES_PCU_PCSX_PARM_IE(x) (((x) << 31) 3220f3864a9SMacpaul Lin 3230f3864a9SMacpaul Lin /* 3240f3864a9SMacpaul Lin * PCSx Status Register 1 3250f3864a9SMacpaul Lin */ 3260f3864a9SMacpaul Lin #define ANDES_PCU_PCSX_STAT1_ERRNO(x) (((x) & 0xf) << 0) 3270f3864a9SMacpaul Lin #define ANDES_PCU_PCSX_STAT1_ST(x) (((x) & 0x7) << 28) 3280f3864a9SMacpaul Lin 3290f3864a9SMacpaul Lin /* 3300f3864a9SMacpaul Lin * PCSx Status Register 2 3310f3864a9SMacpaul Lin */ 3320f3864a9SMacpaul Lin #define ANDES_PCU_PCSX_STAT2_CRNTPARM(x) (((x) & 0xffffff) << 0) 3330f3864a9SMacpaul Lin #define ANDES_PCU_PCSX_STAT2_SYNCSRC(x) (((x) & 0xf) << 24) 3340f3864a9SMacpaul Lin 3350f3864a9SMacpaul Lin /* 3360f3864a9SMacpaul Lin * PCSx PDD Register 3370f3864a9SMacpaul Lin * This is reserved for PCS(1-7) 3380f3864a9SMacpaul Lin */ 3390f3864a9SMacpaul Lin #define ANDES_PCU_PCS8_PDD_1BYTE(x) (((x) & 0xff) << 0) 3400f3864a9SMacpaul Lin #define ANDES_PCU_PCS8_PDD_2BYTE(x) (((x) & 0xff) << 8) 3410f3864a9SMacpaul Lin #define ANDES_PCU_PCS8_PDD_3BYTE(x) (((x) & 0xff) << 16) 3420f3864a9SMacpaul Lin #define ANDES_PCU_PCS8_PDD_4BYTE(x) (((x) & 0xff) << 24) 3430f3864a9SMacpaul Lin 3440f3864a9SMacpaul Lin #define ANDES_PCU_PCS9_PDD_TIME1(x) (((x) & 0x3f) << 0) 3450f3864a9SMacpaul Lin #define ANDES_PCU_PCS9_PDD_TIME2(x) (((x) & 0x3f) << 6) 3460f3864a9SMacpaul Lin #define ANDES_PCU_PCS9_PDD_TIME3(x) (((x) & 0x3f) << 12) 3470f3864a9SMacpaul Lin #define ANDES_PCU_PCS9_PDD_TIME4(x) (((x) & 0x3f) << 18) 3480f3864a9SMacpaul Lin #define ANDES_PCU_PCS9_PDD_TICKTYPE(x) ((x) << 24) 3490f3864a9SMacpaul Lin #define ANDES_PCU_PCS9_PDD_GPU_SRST(x) ((x) << 27) 3500f3864a9SMacpaul Lin #define ANDES_PCU_PCS9_PDD_PWOFFTIME(x) (((x) & 0x3) << 28) 3510f3864a9SMacpaul Lin #define ANDES_PCU_PCS9_PDD_SUS2DRAM(x) ((x) << 30) 3520f3864a9SMacpaul Lin #define ANDES_PCU_PCS9_PDD_CLRPWOFF_FLAG(x) ((x) << 31) 3530f3864a9SMacpaul Lin 3540f3864a9SMacpaul Lin #endif /* __ANDES_PCU_H */ 355