1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /******************************************************************
3 * Copyright (c) 2000-2007 PMC-Sierra INC.
5 * PMC-SIERRA INC. DISCLAIMS ANY LIABILITY OF ANY KIND
6 * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS
12 #define NUM_USB_DEVS 1
14 /* Register spaces for USB host 0 */
15 #define MSP_USB0_MAB_START (MSP_USB0_BASE + 0x0)
16 #define MSP_USB0_MAB_END (MSP_USB0_BASE + 0x17)
17 #define MSP_USB0_ID_START (MSP_USB0_BASE + 0x40000)
18 #define MSP_USB0_ID_END (MSP_USB0_BASE + 0x4008f)
19 #define MSP_USB0_HS_START (MSP_USB0_BASE + 0x40100)
20 #define MSP_USB0_HS_END (MSP_USB0_BASE + 0x401FF)
22 /* Register spaces for USB host 1 */
23 #define MSP_USB1_MAB_START (MSP_USB1_BASE + 0x0)
24 #define MSP_USB1_MAB_END (MSP_USB1_BASE + 0x17)
25 #define MSP_USB1_ID_START (MSP_USB1_BASE + 0x40000)
26 #define MSP_USB1_ID_END (MSP_USB1_BASE + 0x4008f)
27 #define MSP_USB1_HS_START (MSP_USB1_BASE + 0x40100)
28 #define MSP_USB1_HS_END (MSP_USB1_BASE + 0x401ff)
30 /* USB Identification registers */
31 struct msp_usbid_regs
{
32 u32 id
; /* 0x0: Identification register */
33 u32 hwgen
; /* 0x4: General HW params */
34 u32 hwhost
; /* 0x8: Host HW params */
35 u32 hwdev
; /* 0xc: Device HW params */
36 u32 hwtxbuf
; /* 0x10: Tx buffer HW params */
37 u32 hwrxbuf
; /* 0x14: Rx buffer HW params */
39 u32 timer0_load
; /* 0x80: General-purpose timer 0 load*/
40 u32 timer0_ctrl
; /* 0x84: General-purpose timer 0 control */
41 u32 timer1_load
; /* 0x88: General-purpose timer 1 load*/
42 u32 timer1_ctrl
; /* 0x8c: General-purpose timer 1 control */
45 /* MSBus to AMBA registers */
47 u32 isr
; /* 0x0: Interrupt status */
48 u32 imr
; /* 0x4: Interrupt mask */
49 u32 thcr0
; /* 0x8: Transaction header capture 0 */
50 u32 thcr1
; /* 0xc: Transaction header capture 1 */
51 u32 int_stat
; /* 0x10: Interrupt status summary */
52 u32 phy_cfg
; /* 0x14: USB phy config */
56 struct msp_usbhs_regs
{
57 u32 hciver
; /* 0x0: Version and offset to operational regs */
58 u32 hcsparams
; /* 0x4: Host control structural parameters */
59 u32 hccparams
; /* 0x8: Host control capability parameters */
61 u32 dciver
; /* 0x20: Device interface version */
62 u32 dccparams
; /* 0x24: Device control capability parameters */
64 u32 cmd
; /* 0x40: USB command */
65 u32 sts
; /* 0x44: USB status */
66 u32 int_ena
; /* 0x48: USB interrupt enable */
67 u32 frindex
; /* 0x4c: Frame index */
71 u32 flb_addr
; /* 0x54: Frame list base address */
72 u32 next_async_addr
; /* 0x58: next asynchronous addr */
73 u32 ttctrl
; /* 0x5c: embedded transaction translator
74 async buffer status */
75 u32 burst_size
; /* 0x60: Controller burst size */
76 u32 tx_fifo_ctrl
; /* 0x64: Tx latency FIFO tuning */
78 u32 endpt_nak
; /* 0x78: Endpoint NAK */
79 u32 endpt_nak_ena
; /* 0x7c: Endpoint NAK enable */
80 u32 cfg_flag
; /* 0x80: Config flag */
81 u32 port_sc1
; /* 0x84: Port status & control 1 */
83 u32 otgsc
; /* 0xa4: OTG status & control */
84 u32 mode
; /* 0xa8: USB controller mode */
88 u32 dev_addr
; /* 0x54: Device address */
89 u32 endpt_list_addr
; /* 0x58: Endpoint list address */
91 u32 endpt_nak
; /* 0x74 */
92 u32 endpt_nak_ctrl
; /* 0x78 */
93 u32 cfg_flag
; /* 0x80 */
94 u32 port_sc1
; /* 0x84: Port status & control 1 */
96 u32 otgsc
; /* 0xa4: OTG status & control */
97 u32 mode
; /* 0xa8: USB controller mode */
98 u32 endpt_setup_stat
; /* 0xac */
99 u32 endpt_prime
; /* 0xb0 */
100 u32 endpt_flush
; /* 0xb4 */
101 u32 endpt_stat
; /* 0xb8 */
102 u32 endpt_complete
; /* 0xbc */
103 u32 endpt_ctrl0
; /* 0xc0 */
104 u32 endpt_ctrl1
; /* 0xc4 */
105 u32 endpt_ctrl2
; /* 0xc8 */
106 u32 endpt_ctrl3
; /* 0xcc */
111 * Container for the more-generic platform_device.
112 * This exists mainly as a way to map the non-standard register
113 * spaces and make them accessible to the USB ISR.
115 struct mspusb_device
{
116 struct msp_mab_regs __iomem
*mab_regs
;
117 struct msp_usbid_regs __iomem
*usbid_regs
;
118 struct msp_usbhs_regs __iomem
*usbhs_regs
;
119 struct platform_device dev
;
122 #define to_mspusb_device(x) container_of((x), struct mspusb_device, dev)
123 #define TO_HOST_ID(x) ((x) & 0x3)
124 #endif /*MSP_USB_H_*/