USB: RK3288 USB CTLR initialization
[firefly-linux-kernel-4.4.55.git] / drivers / usb / dwc_otg_310 / usbdev_rk.h
1 #ifndef __USBDEV_RK_H
2 #define __USBDEV_RK_H
3 #include <linux/wakelock.h>
4 #include <linux/workqueue.h>
5 #include "usbdev_grf_regs.h"
6
7 #define USB_PHY_ENABLED (0)
8 #define USB_PHY_SUSPEND (1)
9
10 #define PHY_USB_MODE    (0)
11 #define PHY_UART_MODE   (1)
12
13 #define USB_STATUS_BVABLID    (1)
14 #define USB_STATUS_DPDM           (2)
15 #define USB_STATUS_ID         (3)
16 #define USB_STATUS_UARTMODE   (4)
17
18 /* rk3188 platform data */
19 extern struct dwc_otg_platform_data usb20otg_pdata_rk3188;
20 extern struct dwc_otg_platform_data usb20host_pdata_rk3188;
21 extern struct rkehci_platform_data rkhsic_pdata_rk3188;
22 /* rk3288 platform data */
23 extern struct dwc_otg_platform_data usb20otg_pdata_rk3288;
24 extern struct dwc_otg_platform_data usb20host_pdata_rk3288;
25 extern struct rkehci_platform_data rkhsic_pdata_rk3288;
26 extern struct rkehci_platform_data rkehci_pdata_rk3288;
27 extern struct rkehci_platform_data rkohci_pdata_rk3288;
28
29 struct dwc_otg_platform_data {
30     void *privdata;
31     struct device *dev;
32     struct clk* phyclk;
33     struct clk* ahbclk;
34     struct clk* busclk;
35     int phy_status;
36     void (*hw_init)(void);
37     void (*phy_suspend)(void* pdata, int suspend);
38     void (*soft_reset)(void);
39     void (*clock_init)(void* pdata);
40     void (*clock_enable)(void* pdata, int enable);
41     void (*power_enable)(int enable);
42     void (*dwc_otg_uart_mode)(void* pdata, int enter_usb_uart_mode);
43     int (*get_status)(int id);
44     int (*get_chip_id)(void);
45 };
46
47 struct rkehci_platform_data{
48         struct device *dev;
49         struct clk* hclk_hsic;
50         struct clk* hsic_phy_480m;
51         struct clk* hsic_phy_12m;
52         struct clk* phyclk;
53         struct clk* ahbclk;
54         void (*hw_init)(void);
55         void (*clock_init)(void* pdata);
56         void (*clock_enable)(void *pdata, int enable);
57         void (*soft_reset)(void);
58         int (*get_chip_id)(void);
59         int clk_status;
60 };
61
62 struct dwc_otg_control_usb {
63         pGRF_UOC0_REG grf_uoc0_base;
64         pGRF_UOC1_REG grf_uoc1_base;
65         pGRF_UOC2_REG grf_uoc2_base;
66         pGRF_UOC3_REG grf_uoc3_base;
67         pGRF_UOC4_REG grf_uoc4_base;
68         pGRF_SOC_STATUS_RK3188 grf_soc_status0_rk3188;
69         pGRF_SOC_STATUS1_RK3288 grf_soc_status1_rk3288;
70         pGRF_SOC_STATUS2_RK3288 grf_soc_status2_rk3288;
71         pGRF_SOC_STATUS19_RK3288 grf_soc_status19_rk3288;
72         pGRF_SOC_STATUS21_RK3288 grf_soc_status21_rk3288;
73         struct gpio *host_gpios;
74         struct gpio *otg_gpios;
75         struct clk* hclk_usb_peri;
76         struct delayed_work usb_det_wakeup_work;
77         struct wake_lock usb_wakelock;
78         int chip_id;
79 };
80
81 enum {
82         RK3188_USB_CTLR = 0,    /* rk3188 chip usb */
83         RK3288_USB_CTLR,        /* rk3288 chip usb */
84 };
85
86 struct usb20otg_pdata_id {
87         char name[32];
88         struct dwc_otg_platform_data *pdata;
89 };
90
91 struct usb20host_pdata_id {
92         char name[32];
93         struct dwc_otg_platform_data *pdata;
94 };
95
96 struct rkehci_pdata_id {
97         char name[32];
98         struct rkehci_platform_data *pdata;
99 };
100 #endif