diff options
author | John Crispin <blogic@openwrt.org> | 2014-01-19 17:27:13 +0000 |
---|---|---|
committer | John Crispin <blogic@openwrt.org> | 2014-01-19 17:27:13 +0000 |
commit | cbd4880e3ce3dc60748e9a57b01c51f1d1221a21 (patch) | |
tree | 8ad6df74bb3f33de192112ff3207bce3c698e4c8 /target/linux/ramips/files/drivers/usb/host/xhci-mtk-scheduler.h | |
parent | c0a637de039dff73ea4ed379e7eb385cf8d26e3d (diff) | |
download | master-187ad058-cbd4880e3ce3dc60748e9a57b01c51f1d1221a21.tar.gz master-187ad058-cbd4880e3ce3dc60748e9a57b01c51f1d1221a21.tar.bz2 master-187ad058-cbd4880e3ce3dc60748e9a57b01c51f1d1221a21.zip |
ralink: add xhci driver
Signed-off-by: John Crispin <blogic@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39328 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/ramips/files/drivers/usb/host/xhci-mtk-scheduler.h')
-rw-r--r-- | target/linux/ramips/files/drivers/usb/host/xhci-mtk-scheduler.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/target/linux/ramips/files/drivers/usb/host/xhci-mtk-scheduler.h b/target/linux/ramips/files/drivers/usb/host/xhci-mtk-scheduler.h new file mode 100644 index 0000000000..c55dfb10da --- /dev/null +++ b/target/linux/ramips/files/drivers/usb/host/xhci-mtk-scheduler.h @@ -0,0 +1,77 @@ +#ifndef _XHCI_MTK_SCHEDULER_H +#define _XHCI_MTK_SCHEDULER_H + +#define MTK_SCH_NEW 1 + +#define SCH_SUCCESS 1 +#define SCH_FAIL 0 + +#define MAX_EP_NUM 64 +#define SS_BW_BOUND 51000 +#define HS_BW_BOUND 6144 + +#define USB_EP_CONTROL 0 +#define USB_EP_ISOC 1 +#define USB_EP_BULK 2 +#define USB_EP_INT 3 + +#define USB_SPEED_LOW 1 +#define USB_SPEED_FULL 2 +#define USB_SPEED_HIGH 3 +#define USB_SPEED_SUPER 5 + +/* mtk scheduler bitmasks */ +#define BPKTS(p) ((p) & 0x3f) +#define BCSCOUNT(p) (((p) & 0x7) << 8) +#define BBM(p) ((p) << 11) +#define BOFFSET(p) ((p) & 0x3fff) +#define BREPEAT(p) (((p) & 0x7fff) << 16) + + +#if 1 +typedef unsigned int mtk_u32; +typedef unsigned long long mtk_u64; +#endif + +#define NULL ((void *)0) + +struct mtk_xhci_ep_ctx { + mtk_u32 ep_info; + mtk_u32 ep_info2; + mtk_u64 deq; + mtk_u32 tx_info; + /* offset 0x14 - 0x1f reserved for HC internal use */ + mtk_u32 reserved[3]; +}; + + +struct sch_ep +{ + //device info + int dev_speed; + int isTT; + //ep info + int is_in; + int ep_type; + int maxp; + int interval; + int burst; + int mult; + //scheduling info + int offset; + int repeat; + int pkts; + int cs_count; + int burst_mode; + //other + int bw_cost; //bandwidth cost in each repeat; including overhead + mtk_u32 *ep; //address of usb_endpoint pointer +}; + +int mtk_xhci_scheduler_init(void); +int mtk_xhci_scheduler_add_ep(int dev_speed, int is_in, int isTT, int ep_type, int maxp, int interval, int burst + , int mult, mtk_u32 *ep, mtk_u32 *ep_ctx, struct sch_ep *sch_ep); +struct sch_ep * mtk_xhci_scheduler_remove_ep(int dev_speed, int is_in, int isTT, int ep_type, mtk_u32 *ep); + + +#endif |