1381626a9SGerd Hoffmann #ifndef HW_USB_EHCI_REGS_H 2*175de524SMarkus Armbruster #define HW_USB_EHCI_REGS_H 3381626a9SGerd Hoffmann 4381626a9SGerd Hoffmann /* Capability Registers Base Address - section 2.2 */ 5381626a9SGerd Hoffmann #define CAPLENGTH 0x0000 /* 1-byte, 0x0001 reserved */ 6381626a9SGerd Hoffmann #define HCIVERSION 0x0002 /* 2-bytes, i/f version # */ 7381626a9SGerd Hoffmann #define HCSPARAMS 0x0004 /* 4-bytes, structural params */ 8381626a9SGerd Hoffmann #define HCCPARAMS 0x0008 /* 4-bytes, capability params */ 9381626a9SGerd Hoffmann #define EECP HCCPARAMS + 1 10381626a9SGerd Hoffmann #define HCSPPORTROUTE1 0x000c 11381626a9SGerd Hoffmann #define HCSPPORTROUTE2 0x0010 12381626a9SGerd Hoffmann 13381626a9SGerd Hoffmann #define USBCMD 0x0000 14381626a9SGerd Hoffmann #define USBCMD_RUNSTOP (1 << 0) // run / Stop 15381626a9SGerd Hoffmann #define USBCMD_HCRESET (1 << 1) // HC Reset 16381626a9SGerd Hoffmann #define USBCMD_FLS (3 << 2) // Frame List Size 17381626a9SGerd Hoffmann #define USBCMD_FLS_SH 2 // Frame List Size Shift 18381626a9SGerd Hoffmann #define USBCMD_PSE (1 << 4) // Periodic Schedule Enable 19381626a9SGerd Hoffmann #define USBCMD_ASE (1 << 5) // Asynch Schedule Enable 20381626a9SGerd Hoffmann #define USBCMD_IAAD (1 << 6) // Int Asynch Advance Doorbell 21381626a9SGerd Hoffmann #define USBCMD_LHCR (1 << 7) // Light Host Controller Reset 22381626a9SGerd Hoffmann #define USBCMD_ASPMC (3 << 8) // Async Sched Park Mode Count 23381626a9SGerd Hoffmann #define USBCMD_ASPME (1 << 11) // Async Sched Park Mode Enable 24381626a9SGerd Hoffmann #define USBCMD_ITC (0x7f << 16) // Int Threshold Control 25381626a9SGerd Hoffmann #define USBCMD_ITC_SH 16 // Int Threshold Control Shift 26381626a9SGerd Hoffmann 27381626a9SGerd Hoffmann #define USBSTS 0x0004 28381626a9SGerd Hoffmann #define USBSTS_RO_MASK 0x0000003f 29381626a9SGerd Hoffmann #define USBSTS_INT (1 << 0) // USB Interrupt 30381626a9SGerd Hoffmann #define USBSTS_ERRINT (1 << 1) // Error Interrupt 31381626a9SGerd Hoffmann #define USBSTS_PCD (1 << 2) // Port Change Detect 32381626a9SGerd Hoffmann #define USBSTS_FLR (1 << 3) // Frame List Rollover 33381626a9SGerd Hoffmann #define USBSTS_HSE (1 << 4) // Host System Error 34381626a9SGerd Hoffmann #define USBSTS_IAA (1 << 5) // Interrupt on Async Advance 35381626a9SGerd Hoffmann #define USBSTS_HALT (1 << 12) // HC Halted 36381626a9SGerd Hoffmann #define USBSTS_REC (1 << 13) // Reclamation 37381626a9SGerd Hoffmann #define USBSTS_PSS (1 << 14) // Periodic Schedule Status 38381626a9SGerd Hoffmann #define USBSTS_ASS (1 << 15) // Asynchronous Schedule Status 39381626a9SGerd Hoffmann 40381626a9SGerd Hoffmann /* 41381626a9SGerd Hoffmann * Interrupt enable bits correspond to the interrupt active bits in USBSTS 42381626a9SGerd Hoffmann * so no need to redefine here. 43381626a9SGerd Hoffmann */ 44381626a9SGerd Hoffmann #define USBINTR 0x0008 45381626a9SGerd Hoffmann #define USBINTR_MASK 0x0000003f 46381626a9SGerd Hoffmann 47381626a9SGerd Hoffmann #define FRINDEX 0x000c 48381626a9SGerd Hoffmann #define CTRLDSSEGMENT 0x0010 49381626a9SGerd Hoffmann #define PERIODICLISTBASE 0x0014 50381626a9SGerd Hoffmann #define ASYNCLISTADDR 0x0018 51381626a9SGerd Hoffmann #define ASYNCLISTADDR_MASK 0xffffffe0 52381626a9SGerd Hoffmann 53381626a9SGerd Hoffmann #define CONFIGFLAG 0x0040 54381626a9SGerd Hoffmann 55381626a9SGerd Hoffmann /* 56381626a9SGerd Hoffmann * Bits that are reserved or are read-only are masked out of values 57381626a9SGerd Hoffmann * written to us by software 58381626a9SGerd Hoffmann */ 59381626a9SGerd Hoffmann #define PORTSC_RO_MASK 0x007001c0 60381626a9SGerd Hoffmann #define PORTSC_RWC_MASK 0x0000002a 61381626a9SGerd Hoffmann #define PORTSC_WKOC_E (1 << 22) // Wake on Over Current Enable 62381626a9SGerd Hoffmann #define PORTSC_WKDS_E (1 << 21) // Wake on Disconnect Enable 63381626a9SGerd Hoffmann #define PORTSC_WKCN_E (1 << 20) // Wake on Connect Enable 64381626a9SGerd Hoffmann #define PORTSC_PTC (15 << 16) // Port Test Control 65381626a9SGerd Hoffmann #define PORTSC_PTC_SH 16 // Port Test Control shift 66381626a9SGerd Hoffmann #define PORTSC_PIC (3 << 14) // Port Indicator Control 67381626a9SGerd Hoffmann #define PORTSC_PIC_SH 14 // Port Indicator Control Shift 68381626a9SGerd Hoffmann #define PORTSC_POWNER (1 << 13) // Port Owner 69381626a9SGerd Hoffmann #define PORTSC_PPOWER (1 << 12) // Port Power 70381626a9SGerd Hoffmann #define PORTSC_LINESTAT (3 << 10) // Port Line Status 71381626a9SGerd Hoffmann #define PORTSC_LINESTAT_SH 10 // Port Line Status Shift 72381626a9SGerd Hoffmann #define PORTSC_PRESET (1 << 8) // Port Reset 73381626a9SGerd Hoffmann #define PORTSC_SUSPEND (1 << 7) // Port Suspend 74381626a9SGerd Hoffmann #define PORTSC_FPRES (1 << 6) // Force Port Resume 75381626a9SGerd Hoffmann #define PORTSC_OCC (1 << 5) // Over Current Change 76381626a9SGerd Hoffmann #define PORTSC_OCA (1 << 4) // Over Current Active 77381626a9SGerd Hoffmann #define PORTSC_PEDC (1 << 3) // Port Enable/Disable Change 78381626a9SGerd Hoffmann #define PORTSC_PED (1 << 2) // Port Enable/Disable 79381626a9SGerd Hoffmann #define PORTSC_CSC (1 << 1) // Connect Status Change 80381626a9SGerd Hoffmann #define PORTSC_CONNECT (1 << 0) // Current Connect Status 81381626a9SGerd Hoffmann 82381626a9SGerd Hoffmann #endif /* HW_USB_EHCI_REGS_H */ 83