1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * bits.h - register bits of the ChipIdea USB IP core 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2008 Chipidea - MIPS Technologies, Inc. All rights reserved. 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * Author: David Lopo 8*4882a593Smuzhiyun */ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #ifndef __DRIVERS_USB_CHIPIDEA_BITS_H 11*4882a593Smuzhiyun #define __DRIVERS_USB_CHIPIDEA_BITS_H 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #include <linux/usb/ehci_def.h> 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun /* 16*4882a593Smuzhiyun * ID 17*4882a593Smuzhiyun * For 1.x revision, bit24 - bit31 are reserved 18*4882a593Smuzhiyun * For 2.x revision, bit25 - bit28 are 0x2 19*4882a593Smuzhiyun */ 20*4882a593Smuzhiyun #define TAG (0x1F << 16) 21*4882a593Smuzhiyun #define REVISION (0xF << 21) 22*4882a593Smuzhiyun #define VERSION (0xF << 25) 23*4882a593Smuzhiyun #define CIVERSION (0x7 << 29) 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun /* SBUSCFG */ 26*4882a593Smuzhiyun #define AHBBRST_MASK 0x7 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun /* HCCPARAMS */ 29*4882a593Smuzhiyun #define HCCPARAMS_LEN BIT(17) 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun /* DCCPARAMS */ 32*4882a593Smuzhiyun #define DCCPARAMS_DEN (0x1F << 0) 33*4882a593Smuzhiyun #define DCCPARAMS_DC BIT(7) 34*4882a593Smuzhiyun #define DCCPARAMS_HC BIT(8) 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun /* TESTMODE */ 37*4882a593Smuzhiyun #define TESTMODE_FORCE BIT(0) 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun /* USBCMD */ 40*4882a593Smuzhiyun #define USBCMD_RS BIT(0) 41*4882a593Smuzhiyun #define USBCMD_RST BIT(1) 42*4882a593Smuzhiyun #define USBCMD_SUTW BIT(13) 43*4882a593Smuzhiyun #define USBCMD_ATDTW BIT(14) 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun /* USBSTS & USBINTR */ 46*4882a593Smuzhiyun #define USBi_UI BIT(0) 47*4882a593Smuzhiyun #define USBi_UEI BIT(1) 48*4882a593Smuzhiyun #define USBi_PCI BIT(2) 49*4882a593Smuzhiyun #define USBi_URI BIT(6) 50*4882a593Smuzhiyun #define USBi_SLI BIT(8) 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun /* DEVICEADDR */ 53*4882a593Smuzhiyun #define DEVICEADDR_USBADRA BIT(24) 54*4882a593Smuzhiyun #define DEVICEADDR_USBADR (0x7FUL << 25) 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun /* TTCTRL */ 57*4882a593Smuzhiyun #define TTCTRL_TTHA_MASK (0x7fUL << 24) 58*4882a593Smuzhiyun /* Set non-zero value for internal TT Hub address representation */ 59*4882a593Smuzhiyun #define TTCTRL_TTHA (0x7fUL << 24) 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun /* BURSTSIZE */ 62*4882a593Smuzhiyun #define RX_BURST_MASK 0xff 63*4882a593Smuzhiyun #define TX_BURST_MASK 0xff00 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun /* PORTSC */ 66*4882a593Smuzhiyun #define PORTSC_CCS BIT(0) 67*4882a593Smuzhiyun #define PORTSC_CSC BIT(1) 68*4882a593Smuzhiyun #define PORTSC_PEC BIT(3) 69*4882a593Smuzhiyun #define PORTSC_OCC BIT(5) 70*4882a593Smuzhiyun #define PORTSC_FPR BIT(6) 71*4882a593Smuzhiyun #define PORTSC_SUSP BIT(7) 72*4882a593Smuzhiyun #define PORTSC_HSP BIT(9) 73*4882a593Smuzhiyun #define PORTSC_PP BIT(12) 74*4882a593Smuzhiyun #define PORTSC_PTC (0x0FUL << 16) 75*4882a593Smuzhiyun #define PORTSC_WKCN BIT(20) 76*4882a593Smuzhiyun #define PORTSC_PHCD(d) ((d) ? BIT(22) : BIT(23)) 77*4882a593Smuzhiyun /* PTS and PTW for non lpm version only */ 78*4882a593Smuzhiyun #define PORTSC_PFSC BIT(24) 79*4882a593Smuzhiyun #define PORTSC_PTS(d) \ 80*4882a593Smuzhiyun (u32)((((d) & 0x3) << 30) | (((d) & 0x4) ? BIT(25) : 0)) 81*4882a593Smuzhiyun #define PORTSC_PTW BIT(28) 82*4882a593Smuzhiyun #define PORTSC_STS BIT(29) 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun #define PORTSC_W1C_BITS \ 85*4882a593Smuzhiyun (PORTSC_CSC | PORTSC_PEC | PORTSC_OCC) 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun /* DEVLC */ 88*4882a593Smuzhiyun #define DEVLC_PFSC BIT(23) 89*4882a593Smuzhiyun #define DEVLC_PSPD (0x03UL << 25) 90*4882a593Smuzhiyun #define DEVLC_PSPD_HS (0x02UL << 25) 91*4882a593Smuzhiyun #define DEVLC_PTW BIT(27) 92*4882a593Smuzhiyun #define DEVLC_STS BIT(28) 93*4882a593Smuzhiyun #define DEVLC_PTS(d) (u32)(((d) & 0x7) << 29) 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun /* Encoding for DEVLC_PTS and PORTSC_PTS */ 96*4882a593Smuzhiyun #define PTS_UTMI 0 97*4882a593Smuzhiyun #define PTS_ULPI 2 98*4882a593Smuzhiyun #define PTS_SERIAL 3 99*4882a593Smuzhiyun #define PTS_HSIC 4 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun /* OTGSC */ 102*4882a593Smuzhiyun #define OTGSC_IDPU BIT(5) 103*4882a593Smuzhiyun #define OTGSC_HADP BIT(6) 104*4882a593Smuzhiyun #define OTGSC_HABA BIT(7) 105*4882a593Smuzhiyun #define OTGSC_ID BIT(8) 106*4882a593Smuzhiyun #define OTGSC_AVV BIT(9) 107*4882a593Smuzhiyun #define OTGSC_ASV BIT(10) 108*4882a593Smuzhiyun #define OTGSC_BSV BIT(11) 109*4882a593Smuzhiyun #define OTGSC_BSE BIT(12) 110*4882a593Smuzhiyun #define OTGSC_IDIS BIT(16) 111*4882a593Smuzhiyun #define OTGSC_AVVIS BIT(17) 112*4882a593Smuzhiyun #define OTGSC_ASVIS BIT(18) 113*4882a593Smuzhiyun #define OTGSC_BSVIS BIT(19) 114*4882a593Smuzhiyun #define OTGSC_BSEIS BIT(20) 115*4882a593Smuzhiyun #define OTGSC_1MSIS BIT(21) 116*4882a593Smuzhiyun #define OTGSC_DPIS BIT(22) 117*4882a593Smuzhiyun #define OTGSC_IDIE BIT(24) 118*4882a593Smuzhiyun #define OTGSC_AVVIE BIT(25) 119*4882a593Smuzhiyun #define OTGSC_ASVIE BIT(26) 120*4882a593Smuzhiyun #define OTGSC_BSVIE BIT(27) 121*4882a593Smuzhiyun #define OTGSC_BSEIE BIT(28) 122*4882a593Smuzhiyun #define OTGSC_1MSIE BIT(29) 123*4882a593Smuzhiyun #define OTGSC_DPIE BIT(30) 124*4882a593Smuzhiyun #define OTGSC_INT_EN_BITS (OTGSC_IDIE | OTGSC_AVVIE | OTGSC_ASVIE \ 125*4882a593Smuzhiyun | OTGSC_BSVIE | OTGSC_BSEIE | OTGSC_1MSIE \ 126*4882a593Smuzhiyun | OTGSC_DPIE) 127*4882a593Smuzhiyun #define OTGSC_INT_STATUS_BITS (OTGSC_IDIS | OTGSC_AVVIS | OTGSC_ASVIS \ 128*4882a593Smuzhiyun | OTGSC_BSVIS | OTGSC_BSEIS | OTGSC_1MSIS \ 129*4882a593Smuzhiyun | OTGSC_DPIS) 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun /* USBMODE */ 132*4882a593Smuzhiyun #define USBMODE_CM (0x03UL << 0) 133*4882a593Smuzhiyun #define USBMODE_CM_DC (0x02UL << 0) 134*4882a593Smuzhiyun #define USBMODE_SLOM BIT(3) 135*4882a593Smuzhiyun #define USBMODE_CI_SDIS BIT(4) 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun /* ENDPTCTRL */ 138*4882a593Smuzhiyun #define ENDPTCTRL_RXS BIT(0) 139*4882a593Smuzhiyun #define ENDPTCTRL_RXT (0x03UL << 2) 140*4882a593Smuzhiyun #define ENDPTCTRL_RXR BIT(6) /* reserved for port 0 */ 141*4882a593Smuzhiyun #define ENDPTCTRL_RXE BIT(7) 142*4882a593Smuzhiyun #define ENDPTCTRL_TXS BIT(16) 143*4882a593Smuzhiyun #define ENDPTCTRL_TXT (0x03UL << 18) 144*4882a593Smuzhiyun #define ENDPTCTRL_TXR BIT(22) /* reserved for port 0 */ 145*4882a593Smuzhiyun #define ENDPTCTRL_TXE BIT(23) 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun #endif /* __DRIVERS_USB_CHIPIDEA_BITS_H */ 148