1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * arch/arm/mach-pxa/include/mach/mainstone.h 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Author: Nicolas Pitre 6*4882a593Smuzhiyun * Created: Nov 14, 2002 7*4882a593Smuzhiyun * Copyright: MontaVista Software Inc. 8*4882a593Smuzhiyun */ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #ifndef ASM_ARCH_MAINSTONE_H 11*4882a593Smuzhiyun #define ASM_ARCH_MAINSTONE_H 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #include <mach/irqs.h> 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun #define MST_ETH_PHYS PXA_CS4_PHYS 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun #define MST_FPGA_PHYS PXA_CS2_PHYS 18*4882a593Smuzhiyun #define MST_FPGA_VIRT (0xf0000000) 19*4882a593Smuzhiyun #define MST_P2V(x) ((x) - MST_FPGA_PHYS + MST_FPGA_VIRT) 20*4882a593Smuzhiyun #define MST_V2P(x) ((x) - MST_FPGA_VIRT + MST_FPGA_PHYS) 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun #ifndef __ASSEMBLY__ 23*4882a593Smuzhiyun # define __MST_REG(x) (*((volatile unsigned long *)MST_P2V(x))) 24*4882a593Smuzhiyun #else 25*4882a593Smuzhiyun # define __MST_REG(x) MST_P2V(x) 26*4882a593Smuzhiyun #endif 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun /* board level registers in the FPGA */ 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun #define MST_LEDDAT1 __MST_REG(0x08000010) 31*4882a593Smuzhiyun #define MST_LEDDAT2 __MST_REG(0x08000014) 32*4882a593Smuzhiyun #define MST_LEDCTRL __MST_REG(0x08000040) 33*4882a593Smuzhiyun #define MST_GPSWR __MST_REG(0x08000060) 34*4882a593Smuzhiyun #define MST_MSCWR1 __MST_REG(0x08000080) 35*4882a593Smuzhiyun #define MST_MSCWR2 __MST_REG(0x08000084) 36*4882a593Smuzhiyun #define MST_MSCWR3 __MST_REG(0x08000088) 37*4882a593Smuzhiyun #define MST_MSCRD __MST_REG(0x08000090) 38*4882a593Smuzhiyun #define MST_INTMSKENA __MST_REG(0x080000c0) 39*4882a593Smuzhiyun #define MST_INTSETCLR __MST_REG(0x080000d0) 40*4882a593Smuzhiyun #define MST_PCMCIA0 __MST_REG(0x080000e0) 41*4882a593Smuzhiyun #define MST_PCMCIA1 __MST_REG(0x080000e4) 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun #define MST_MSCWR1_CAMERA_ON (1 << 15) /* Camera interface power control */ 44*4882a593Smuzhiyun #define MST_MSCWR1_CAMERA_SEL (1 << 14) /* Camera interface mux control */ 45*4882a593Smuzhiyun #define MST_MSCWR1_LCD_CTL (1 << 13) /* General-purpose LCD control */ 46*4882a593Smuzhiyun #define MST_MSCWR1_MS_ON (1 << 12) /* Memory Stick power control */ 47*4882a593Smuzhiyun #define MST_MSCWR1_MMC_ON (1 << 11) /* MultiMediaCard* power control */ 48*4882a593Smuzhiyun #define MST_MSCWR1_MS_SEL (1 << 10) /* SD/MS multiplexer control */ 49*4882a593Smuzhiyun #define MST_MSCWR1_BB_SEL (1 << 9) /* PCMCIA/Baseband multiplexer */ 50*4882a593Smuzhiyun #define MST_MSCWR1_BT_ON (1 << 8) /* Bluetooth UART transceiver */ 51*4882a593Smuzhiyun #define MST_MSCWR1_BTDTR (1 << 7) /* Bluetooth UART DTR */ 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun #define MST_MSCWR1_IRDA_MASK (3 << 5) /* IrDA transceiver mode */ 54*4882a593Smuzhiyun #define MST_MSCWR1_IRDA_FULL (0 << 5) /* full distance power */ 55*4882a593Smuzhiyun #define MST_MSCWR1_IRDA_OFF (1 << 5) /* shutdown */ 56*4882a593Smuzhiyun #define MST_MSCWR1_IRDA_MED (2 << 5) /* 2/3 distance power */ 57*4882a593Smuzhiyun #define MST_MSCWR1_IRDA_LOW (3 << 5) /* 1/3 distance power */ 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun #define MST_MSCWR1_IRDA_FIR (1 << 4) /* IrDA transceiver SIR/FIR */ 60*4882a593Smuzhiyun #define MST_MSCWR1_GREENLED (1 << 3) /* LED D1 control */ 61*4882a593Smuzhiyun #define MST_MSCWR1_PDC_CTL (1 << 2) /* reserved */ 62*4882a593Smuzhiyun #define MST_MSCWR1_MTR_ON (1 << 1) /* Silent alert motor */ 63*4882a593Smuzhiyun #define MST_MSCWR1_SYSRESET (1 << 0) /* System reset */ 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun #define MST_MSCWR2_USB_OTG_RST (1 << 6) /* USB On The Go reset */ 66*4882a593Smuzhiyun #define MST_MSCWR2_USB_OTG_SEL (1 << 5) /* USB On The Go control */ 67*4882a593Smuzhiyun #define MST_MSCWR2_nUSBC_SC (1 << 4) /* USB client soft connect control */ 68*4882a593Smuzhiyun #define MST_MSCWR2_I2S_SPKROFF (1 << 3) /* I2S CODEC amplifier control */ 69*4882a593Smuzhiyun #define MST_MSCWR2_AC97_SPKROFF (1 << 2) /* AC97 CODEC amplifier control */ 70*4882a593Smuzhiyun #define MST_MSCWR2_RADIO_PWR (1 << 1) /* Radio module power control */ 71*4882a593Smuzhiyun #define MST_MSCWR2_RADIO_WAKE (1 << 0) /* Radio module wake-up signal */ 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun #define MST_MSCWR3_GPIO_RESET_EN (1 << 2) /* Enable GPIO Reset */ 74*4882a593Smuzhiyun #define MST_MSCWR3_GPIO_RESET (1 << 1) /* Initiate a GPIO Reset */ 75*4882a593Smuzhiyun #define MST_MSCWR3_COMMS_SW_RESET (1 << 0) /* Communications Processor Reset Control */ 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun #define MST_MSCRD_nPENIRQ (1 << 9) /* ADI7873* nPENIRQ signal */ 78*4882a593Smuzhiyun #define MST_MSCRD_nMEMSTK_CD (1 << 8) /* Memory Stick detection signal */ 79*4882a593Smuzhiyun #define MST_MSCRD_nMMC_CD (1 << 7) /* SD/MMC card detection signal */ 80*4882a593Smuzhiyun #define MST_MSCRD_nUSIM_CD (1 << 6) /* USIM card detection signal */ 81*4882a593Smuzhiyun #define MST_MSCRD_USB_CBL (1 << 5) /* USB client cable status */ 82*4882a593Smuzhiyun #define MST_MSCRD_TS_BUSY (1 << 4) /* ADI7873 busy */ 83*4882a593Smuzhiyun #define MST_MSCRD_BTDSR (1 << 3) /* Bluetooth UART DSR */ 84*4882a593Smuzhiyun #define MST_MSCRD_BTRI (1 << 2) /* Bluetooth UART Ring Indicator */ 85*4882a593Smuzhiyun #define MST_MSCRD_BTDCD (1 << 1) /* Bluetooth UART DCD */ 86*4882a593Smuzhiyun #define MST_MSCRD_nMMC_WP (1 << 0) /* SD/MMC write-protect status */ 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun #define MST_INT_S1_IRQ (1 << 15) /* PCMCIA socket 1 IRQ */ 89*4882a593Smuzhiyun #define MST_INT_S1_STSCHG (1 << 14) /* PCMCIA socket 1 status changed */ 90*4882a593Smuzhiyun #define MST_INT_S1_CD (1 << 13) /* PCMCIA socket 1 card detection */ 91*4882a593Smuzhiyun #define MST_INT_S0_IRQ (1 << 11) /* PCMCIA socket 0 IRQ */ 92*4882a593Smuzhiyun #define MST_INT_S0_STSCHG (1 << 10) /* PCMCIA socket 0 status changed */ 93*4882a593Smuzhiyun #define MST_INT_S0_CD (1 << 9) /* PCMCIA socket 0 card detection */ 94*4882a593Smuzhiyun #define MST_INT_nEXBRD_INT (1 << 7) /* Expansion board IRQ */ 95*4882a593Smuzhiyun #define MST_INT_MSINS (1 << 6) /* Memory Stick* detection */ 96*4882a593Smuzhiyun #define MST_INT_PENIRQ (1 << 5) /* ADI7873* touch-screen IRQ */ 97*4882a593Smuzhiyun #define MST_INT_AC97 (1 << 4) /* AC'97 CODEC IRQ */ 98*4882a593Smuzhiyun #define MST_INT_ETHERNET (1 << 3) /* Ethernet controller IRQ */ 99*4882a593Smuzhiyun #define MST_INT_USBC (1 << 2) /* USB client cable detection IRQ */ 100*4882a593Smuzhiyun #define MST_INT_USIM (1 << 1) /* USIM card detection IRQ */ 101*4882a593Smuzhiyun #define MST_INT_MMC (1 << 0) /* MMC/SD card detection IRQ */ 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun #define MST_PCMCIA_nIRQ (1 << 10) /* IRQ / ready signal */ 104*4882a593Smuzhiyun #define MST_PCMCIA_nSPKR_BVD2 (1 << 9) /* VDD sense / digital speaker */ 105*4882a593Smuzhiyun #define MST_PCMCIA_nSTSCHG_BVD1 (1 << 8) /* VDD sense / card status changed */ 106*4882a593Smuzhiyun #define MST_PCMCIA_nVS2 (1 << 7) /* VSS voltage sense */ 107*4882a593Smuzhiyun #define MST_PCMCIA_nVS1 (1 << 6) /* VSS voltage sense */ 108*4882a593Smuzhiyun #define MST_PCMCIA_nCD (1 << 5) /* Card detection signal */ 109*4882a593Smuzhiyun #define MST_PCMCIA_RESET (1 << 4) /* Card reset signal */ 110*4882a593Smuzhiyun #define MST_PCMCIA_PWR_MASK (0x000f) /* MAX1602 power-supply controls */ 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun #define MST_PCMCIA_PWR_VPP_0 0x0 /* voltage VPP = 0V */ 113*4882a593Smuzhiyun #define MST_PCMCIA_PWR_VPP_120 0x2 /* voltage VPP = 12V*/ 114*4882a593Smuzhiyun #define MST_PCMCIA_PWR_VPP_VCC 0x1 /* voltage VPP = VCC */ 115*4882a593Smuzhiyun #define MST_PCMCIA_PWR_VCC_0 0x0 /* voltage VCC = 0V */ 116*4882a593Smuzhiyun #define MST_PCMCIA_PWR_VCC_33 0x8 /* voltage VCC = 3.3V */ 117*4882a593Smuzhiyun #define MST_PCMCIA_PWR_VCC_50 0x4 /* voltage VCC = 5.0V */ 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun #define MST_PCMCIA_INPUTS \ 120*4882a593Smuzhiyun (MST_PCMCIA_nIRQ | MST_PCMCIA_nSPKR_BVD2 | MST_PCMCIA_nSTSCHG_BVD1 | \ 121*4882a593Smuzhiyun MST_PCMCIA_nVS2 | MST_PCMCIA_nVS1 | MST_PCMCIA_nCD) 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun /* board specific IRQs */ 124*4882a593Smuzhiyun #define MAINSTONE_NR_IRQS IRQ_BOARD_START 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun #define MAINSTONE_IRQ(x) (MAINSTONE_NR_IRQS + (x)) 127*4882a593Smuzhiyun #define MAINSTONE_MMC_IRQ MAINSTONE_IRQ(0) 128*4882a593Smuzhiyun #define MAINSTONE_USIM_IRQ MAINSTONE_IRQ(1) 129*4882a593Smuzhiyun #define MAINSTONE_USBC_IRQ MAINSTONE_IRQ(2) 130*4882a593Smuzhiyun #define MAINSTONE_ETHERNET_IRQ MAINSTONE_IRQ(3) 131*4882a593Smuzhiyun #define MAINSTONE_AC97_IRQ MAINSTONE_IRQ(4) 132*4882a593Smuzhiyun #define MAINSTONE_PEN_IRQ MAINSTONE_IRQ(5) 133*4882a593Smuzhiyun #define MAINSTONE_MSINS_IRQ MAINSTONE_IRQ(6) 134*4882a593Smuzhiyun #define MAINSTONE_EXBRD_IRQ MAINSTONE_IRQ(7) 135*4882a593Smuzhiyun #define MAINSTONE_S0_CD_IRQ MAINSTONE_IRQ(9) 136*4882a593Smuzhiyun #define MAINSTONE_S0_STSCHG_IRQ MAINSTONE_IRQ(10) 137*4882a593Smuzhiyun #define MAINSTONE_S0_IRQ MAINSTONE_IRQ(11) 138*4882a593Smuzhiyun #define MAINSTONE_S1_CD_IRQ MAINSTONE_IRQ(13) 139*4882a593Smuzhiyun #define MAINSTONE_S1_STSCHG_IRQ MAINSTONE_IRQ(14) 140*4882a593Smuzhiyun #define MAINSTONE_S1_IRQ MAINSTONE_IRQ(15) 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun #endif 143