| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- /*
- * Copyright (C) 2014 mtk
- *
- *
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
- #ifndef __LINUX_XHCI_MTK_H
- #define __LINUX_XHCI_MTK_H
- #include "xhci.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 HS_BW_BOUND 6145 // for HS HB transfer test. (Test Plan SOP 3.4.1 and 3.4.2) */
- #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 */
- };
- extern int mtk_xhci_scheduler_init(void);
- extern 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);
- extern struct sch_ep *mtk_xhci_scheduler_remove_ep(int dev_speed, int is_in, int isTT, int ep_type,
- mtk_u32 *ep);
- extern int mtk_xhci_ip_init(struct usb_hcd *hcd, struct xhci_hcd *xhci);
- extern void mtk_xhci_vbus_on(struct platform_device *pdev);
- extern void mtk_xhci_vbus_off(struct platform_device *pdev);
- #define XHCI_DRIVER_NAME "xhci"
- #define XHCI_BASE_REGS_ADDR_RES_NAME "ssusb_base"
- #define XHCI_SIF_REGS_ADDR_RES_NAME "ssusb_sif"
- #define XHCI_SIF2_REGS_ADDR_RES_NAME "ssusb_sif2"
- #endif /* __LINUX_XHCI_MTK_H */
|