1
2
3
4
5
6
7
8
9 #ifndef MSP_USB_H_
10 #define MSP_USB_H_
11
12 #define NUM_USB_DEVS 1
13
14
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)
21
22
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)
29
30
31 struct msp_usbid_regs {
32 u32 id;
33 u32 hwgen;
34 u32 hwhost;
35 u32 hwdev;
36 u32 hwtxbuf;
37 u32 hwrxbuf;
38 u32 reserved[26];
39 u32 timer0_load;
40 u32 timer0_ctrl;
41 u32 timer1_load;
42 u32 timer1_ctrl;
43 };
44
45
46 struct msp_mab_regs {
47 u32 isr;
48 u32 imr;
49 u32 thcr0;
50 u32 thcr1;
51 u32 int_stat;
52 u32 phy_cfg;
53 };
54
55
56 struct msp_usbhs_regs {
57 u32 hciver;
58 u32 hcsparams;
59 u32 hccparams;
60 u32 reserved0[5];
61 u32 dciver;
62 u32 dccparams;
63 u32 reserved1[6];
64 u32 cmd;
65 u32 sts;
66 u32 int_ena;
67 u32 frindex;
68 u32 reserved3;
69 union {
70 struct {
71 u32 flb_addr;
72 u32 next_async_addr;
73 u32 ttctrl;
74
75 u32 burst_size;
76 u32 tx_fifo_ctrl;
77 u32 reserved0[4];
78 u32 endpt_nak;
79 u32 endpt_nak_ena;
80 u32 cfg_flag;
81 u32 port_sc1;
82 u32 reserved1[7];
83 u32 otgsc;
84 u32 mode;
85 } host;
86
87 struct {
88 u32 dev_addr;
89 u32 endpt_list_addr;
90 u32 reserved0[7];
91 u32 endpt_nak;
92 u32 endpt_nak_ctrl;
93 u32 cfg_flag;
94 u32 port_sc1;
95 u32 reserved[7];
96 u32 otgsc;
97 u32 mode;
98 u32 endpt_setup_stat;
99 u32 endpt_prime;
100 u32 endpt_flush;
101 u32 endpt_stat;
102 u32 endpt_complete;
103 u32 endpt_ctrl0;
104 u32 endpt_ctrl1;
105 u32 endpt_ctrl2;
106 u32 endpt_ctrl3;
107 } device;
108 } u;
109 };
110
111
112
113
114
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;
120 };
121
122 #define to_mspusb_device(x) container_of((x), struct mspusb_device, dev)
123 #define TO_HOST_ID(x) ((x) & 0x3)
124 #endif