c55dfb10da84665c720aae5c2abf7217ea33585e
[openwrt.git] / target / linux / ramips / files / drivers / usb / host / xhci-mtk-scheduler.h
1 #ifndef _XHCI_MTK_SCHEDULER_H
2 #define _XHCI_MTK_SCHEDULER_H
3
4 #define MTK_SCH_NEW             1
5
6 #define SCH_SUCCESS             1
7 #define SCH_FAIL                0
8
9 #define MAX_EP_NUM              64
10 #define SS_BW_BOUND             51000
11 #define HS_BW_BOUND             6144
12
13 #define USB_EP_CONTROL          0
14 #define USB_EP_ISOC             1
15 #define USB_EP_BULK             2
16 #define USB_EP_INT              3
17
18 #define USB_SPEED_LOW           1
19 #define USB_SPEED_FULL          2
20 #define USB_SPEED_HIGH          3
21 #define USB_SPEED_SUPER         5
22
23 /* mtk scheduler bitmasks */
24 #define BPKTS(p)                ((p) & 0x3f)
25 #define BCSCOUNT(p)             (((p) & 0x7) << 8)
26 #define BBM(p)                  ((p) << 11)
27 #define BOFFSET(p)              ((p) & 0x3fff)
28 #define BREPEAT(p)              (((p) & 0x7fff) << 16)
29
30
31 #if 1
32 typedef unsigned int mtk_u32;
33 typedef unsigned long long mtk_u64;
34 #endif
35
36 #define NULL ((void *)0)
37
38 struct mtk_xhci_ep_ctx {
39         mtk_u32 ep_info;
40         mtk_u32 ep_info2;
41         mtk_u64 deq;
42         mtk_u32 tx_info;
43         /* offset 0x14 - 0x1f reserved for HC internal use */
44         mtk_u32 reserved[3];
45 };
46
47
48 struct sch_ep
49 {
50         //device info
51         int dev_speed;
52         int isTT;
53         //ep info
54         int is_in;
55         int ep_type;
56         int maxp;
57         int interval;
58         int burst;
59         int mult;
60         //scheduling info
61         int offset;
62         int repeat;
63         int pkts;
64         int cs_count;
65         int burst_mode;
66         //other
67         int bw_cost;    //bandwidth cost in each repeat; including overhead
68         mtk_u32 *ep;            //address of usb_endpoint pointer
69 };
70
71 int mtk_xhci_scheduler_init(void);
72 int mtk_xhci_scheduler_add_ep(int dev_speed, int is_in, int isTT, int ep_type, int maxp, int interval, int burst
73         , int mult, mtk_u32 *ep, mtk_u32 *ep_ctx, struct sch_ep *sch_ep);
74 struct sch_ep * mtk_xhci_scheduler_remove_ep(int dev_speed, int is_in, int isTT, int ep_type, mtk_u32 *ep);
75
76
77 #endif