rk: restore file mode
[firefly-linux-kernel-4.4.55.git] / drivers / usb / dwc_otg_310 / usbdev_rk.h
index 70728e814aa3b1860d5d8a135b3a1700db114f47..c4b0dd72f550c8eb5d59c5e6f20e8b42a1c4aef1 100755 (executable)
@@ -1,8 +1,34 @@
 #ifndef __USBDEV_RK_H
 #define __USBDEV_RK_H
+
+#include <linux/kernel.h>
+#include <linux/platform_device.h>
+#include <linux/delay.h>
+#include <linux/dma-mapping.h>
+#include <linux/clk.h>
+#include <linux/module.h>
+#include <linux/slab.h>
+#include <linux/err.h>
+#include <linux/io.h>
+#include <linux/of_gpio.h>
+#include <linux/of_device.h>
+#include <linux/of_address.h>
+#include <linux/gpio.h>
 #include <linux/wakelock.h>
 #include <linux/workqueue.h>
+#include <linux/interrupt.h>
+#include <linux/irq.h>
+#include <linux/reset.h>
+#include <linux/mfd/syscon.h>
+#include <linux/regmap.h>
+#include <linux/rockchip/cru.h>
+#include <linux/rockchip/grf.h>
+#include <linux/rockchip/cpu.h>
+#include <linux/rockchip/iomap.h>
+
 #include "usbdev_grf_regs.h"
+#include "usbdev_bc.h"
+#include "usbdev_rkuoc.h"
 
 #define USB_PHY_ENABLED (0)
 #define USB_PHY_SUSPEND (1)
 #define PHY_USB_MODE    (0)
 #define PHY_UART_MODE   (1)
 
+#define PHY_POWER_DOWN (0)
+#define PHY_POWER_UP   (1)
+
 #define USB_STATUS_BVABLID    (1)
-#define USB_STATUS_DPDM                  (2)
+#define USB_STATUS_DPDM       (2)
 #define USB_STATUS_ID         (3)
 #define USB_STATUS_UARTMODE   (4)
+#define USB_CHIP_ID           (5)
+#define USB_REMOTE_WAKEUP     (6)
+#define USB_IRQ_WAKEUP        (7)
+
+#define UOC_HIWORD_UPDATE(val, mask, shift) \
+               ((val) << (shift) | (mask) << ((shift) + 16))
 
+enum rkusb_rst_flag {
+       RST_POR = 0, /* Reset power-on */
+       RST_RECNT,      /* Reset re-connect */
+       RST_CHN_HALT, /* Reset a channel halt has been detected */
+       RST_OTHER,
+};
+
+extern void rk_send_wakeup_key(void);
 /* rk3188 platform data */
 extern struct dwc_otg_platform_data usb20otg_pdata_rk3188;
 extern struct dwc_otg_platform_data usb20host_pdata_rk3188;
-extern struct rkehci_platform_data rkhsic_pdata_rk3188;
+extern struct rkehci_platform_data rkehci_pdata_rk3188;
 /* rk3288 platform data */
 extern struct dwc_otg_platform_data usb20otg_pdata_rk3288;
 extern struct dwc_otg_platform_data usb20host_pdata_rk3288;
-extern struct rkehci_platform_data rkhsic_pdata_rk3288;
+extern struct rkehci_platform_data rkehci1_pdata_rk3288;
 extern struct rkehci_platform_data rkehci_pdata_rk3288;
 extern struct rkehci_platform_data rkohci_pdata_rk3288;
+/* rk3036 platform data */
+extern struct dwc_otg_platform_data usb20otg_pdata_rk3036;
+extern struct dwc_otg_platform_data usb20host_pdata_rk3036;
+/* rk3126 platform data */
+extern struct dwc_otg_platform_data usb20otg_pdata_rk3126;
+extern struct dwc_otg_platform_data usb20host_pdata_rk3126;
+extern struct dwc_otg_platform_data usb20ohci_pdata_rk3126;
+extern struct rkehci_platform_data usb20ehci_pdata_rk3126;
+/* rk3368 platform data */
+extern struct rkehci_platform_data usb20ehci_pdata_rk3368;
+extern struct dwc_otg_platform_data usb20ohci_pdata_rk3368;
+extern struct dwc_otg_platform_data usb20otg_pdata_rk3368;
 
 struct dwc_otg_platform_data {
-    void *privdata;
-    struct device *dev;
-    struct clk* phyclk;
-    struct clk* ahbclk;
-    struct clk* busclk;
-    int phy_status;
-    void (*hw_init)(void);
-    void (*phy_suspend)(void* pdata, int suspend);
-    void (*soft_reset)(void);
-    void (*clock_init)(void* pdata);
-    void (*clock_enable)(void* pdata, int enable);
-    void (*power_enable)(int enable);
-    void (*dwc_otg_uart_mode)(void* pdata, int enter_usb_uart_mode);
-    int (*get_status)(int id);
-    int (*get_chip_id)(void);
+       void *privdata;
+       struct device *dev;
+       struct clk *phyclk;
+       struct clk *ahbclk;
+       struct clk *busclk;
+       struct clk *phyclk_480m;
+       int phy_status;
+       void (*hw_init) (void);
+       void (*phy_suspend) (void *pdata, int suspend);
+       void (*soft_reset) (void *pdata, enum rkusb_rst_flag rst_type);
+       void (*clock_init) (void *pdata);
+       void (*clock_enable) (void *pdata, int enable);
+       void (*power_enable) (int enable);
+       void (*dwc_otg_uart_mode) (void *pdata, int enter_usb_uart_mode);
+       void (*bc_detect_cb) (int bc_type);
+       int (*get_status) (int id);
+       void (*phy_power_down)(int power_down);
 };
 
-struct rkehci_platform_data{
+struct rkehci_platform_data {
        struct device *dev;
-       struct clk* hclk_hsic;
-       struct clk* hsic_phy_480m;
-       struct clk* hsic_phy_12m;
-       struct clk* phyclk;
-       struct clk* ahbclk;
-       void (*hw_init)(void);
-       void (*clock_init)(void* pdata);
-       void (*clock_enable)(void *pdata, int enable);
-       void (*soft_reset)(void);
-       int (*get_chip_id)(void);
+       struct clk *hclk_ehci;
+       struct clk *ehci_phy_480m;
+       struct clk *ehci_phy_12m;
+       struct clk *phyclk;
+       struct clk *ahbclk;
+       void (*hw_init) (void);
+       void (*clock_init) (void *pdata);
+       void (*clock_enable) (void *pdata, int enable);
+       void (*phy_suspend) (void *pdata, int suspend);
+       void (*soft_reset) (void *pdata, enum rkusb_rst_flag rst_type);
+       int (*get_status) (int id);
        int clk_status;
+       int phy_status;
 };
 
 struct dwc_otg_control_usb {
@@ -70,27 +129,25 @@ struct dwc_otg_control_usb {
        pGRF_SOC_STATUS2_RK3288 grf_soc_status2_rk3288;
        pGRF_SOC_STATUS19_RK3288 grf_soc_status19_rk3288;
        pGRF_SOC_STATUS21_RK3288 grf_soc_status21_rk3288;
+
+       struct regmap *grf;
        struct gpio *host_gpios;
        struct gpio *otg_gpios;
-       struct clkhclk_usb_peri;
+       struct clk *hclk_usb_peri;
        struct delayed_work usb_det_wakeup_work;
+       struct delayed_work usb_charger_det_work;
        struct wake_lock usb_wakelock;
+       int remote_wakeup;
+       int usb_irq_wakeup;
+       int linestate_wakeup;
        int chip_id;
 };
 
 enum {
        RK3188_USB_CTLR = 0,    /* rk3188 chip usb */
        RK3288_USB_CTLR,        /* rk3288 chip usb */
-};
-
-struct usb20otg_pdata_id {
-       char name[32];
-       struct dwc_otg_platform_data *pdata;
-};
-
-struct usb20host_pdata_id {
-       char name[32];
-       struct dwc_otg_platform_data *pdata;
+       RK3036_USB_CTLR,        /* rk3036 chip usb */
+       RK3126_USB_CTLR,
 };
 
 struct rkehci_pdata_id {