summaryrefslogtreecommitdiff
path: root/SamsungPlatformPkg/ExynosPkg/Exynos5250/Drivers/PciEmulation/Exynos5_USB2Phy.h
diff options
context:
space:
mode:
Diffstat (limited to 'SamsungPlatformPkg/ExynosPkg/Exynos5250/Drivers/PciEmulation/Exynos5_USB2Phy.h')
-rw-r--r--SamsungPlatformPkg/ExynosPkg/Exynos5250/Drivers/PciEmulation/Exynos5_USB2Phy.h114
1 files changed, 114 insertions, 0 deletions
diff --git a/SamsungPlatformPkg/ExynosPkg/Exynos5250/Drivers/PciEmulation/Exynos5_USB2Phy.h b/SamsungPlatformPkg/ExynosPkg/Exynos5250/Drivers/PciEmulation/Exynos5_USB2Phy.h
new file mode 100644
index 000000000..fce6ca830
--- /dev/null
+++ b/SamsungPlatformPkg/ExynosPkg/Exynos5250/Drivers/PciEmulation/Exynos5_USB2Phy.h
@@ -0,0 +1,114 @@
+#ifndef _EFI_EXYNOS5_USB2_PHY_H_
+#define _EFI_EXYNOS5_USB2_PHY_H_
+
+#define USB_XHCI_HCCAPBASE (0x12000000) //Gaia
+#define USB_EHCI_HCCAPBASE (0x12110000) //Gaia
+#define USB_OHCI_HCCAPBASE (USB_EHCI_HCCAPBASE + 0x10000)
+
+#define EXYNOS5_USB2_PHY_HOST_CTRL0 0x12130000 //Gaia
+
+#define HOST_CTRL0_PHYSWRSTALL (0x1 << 31)
+#define CLKSEL_50M (0x7 << 16)
+#define CLKSEL_24M (0x5 << 16)
+#define CLKSEL_20M (0x4 << 16)
+#define CLKSEL_19200K (0x3 << 16)
+#define CLKSEL_12M (0x2 << 16)
+#define CLKSEL_10M (0x1 << 16)
+#define CLKSEL_9600K (0x0 << 16)
+#define HOST_CTRL0_FSEL_MASK (0x7 << 16)
+#define HOST_CTRL0_COMMONONN (0x1 << 9)
+#define HOST_CTRL0_PHYSWRST (0x1 << 0)
+#define HOST_CTRL0_SIDDQ (0x1 << 6)
+#define HOST_CTRL0_FORCESLEEP (0x1 << 5)
+#define HOST_CTRL0_FORCESUSPEND (0x1 << 4)
+#define HOST_CTRL0_LINKSWRST (0x1 << 1)
+#define HOST_CTRL0_UTMISWRST (0x1 << 2)
+#define HSIC_CTRL_REFCLKDIV(val) ((val&0x7f) << 16)
+#define HSIC_CTRL_REFCLKSEL(val) ((val&0x3) << 23)
+#define HSIC_CTRL_PHYSWRST (0x1 << 0)
+#define PHY_HSIC_CTRL1 (EXYNOS5_USB2_PHY_HOST_CTRL0 + 0x10)
+#define PHY_HSIC_CTRL2 (EXYNOS5_USB2_PHY_HOST_CTRL0 + 0x20)
+#define PHY_HOST_EHCICTRL (EXYNOS5_USB2_PHY_HOST_CTRL0 + 0x30)
+#define EHCICTRL_ENAINCRXALIGN (0x1 << 29)
+#define EHCICTRL_ENAINCR4 (0x1 << 28)
+#define EHCICTRL_ENAINCR8 (0x1 << 27)
+#define EHCICTRL_ENAINCR16 (0x1 << 26)
+
+//CMU
+#define CLK_GATE_IP_FSYS 0x10020944 //GAIA
+
+//GPIO
+#define ETC6PUD (0x114002A8) //(0x11400000 + 0x2A8)
+
+//PMU
+#define EXYNOS5_USBDEV_PHY_CONTROL (0x10040000 + 0x0704)
+#define EXYNOS5_USBHOST_PHY_CONTROL (0x10040000 + 0x0708)
+
+
+//--------------------- for gaia ----------
+#define UHOST_FIN 48000000
+#define USBDEV_FIN 12000000
+
+#define USBHOST_AHB_INCR16 0x2000000
+#define USBHOST_AHB_INCR8 0x1000000
+#define USBHOST_AHB_INCR4 0x0800000
+#define USBHOST_AHB_INCRs 0x3800000
+#define USBHOST_AHB_INCRx 0x3c00000
+#define USBHOST_AHB_SINGLE 0x0000000
+
+typedef enum
+{
+ REFCLK_XTAL = 0x0, //XO : form Crystal
+ REFCLK_OSC = 0x1, //XO : OSC 1.8V Clock
+ REFCLK_PLL = 0x2, //PLL form CLKCORE
+}USBPHY_REFCLK;
+
+typedef enum
+{
+ FSEL_9_6M = 0x0,
+ FSEL_10M = 0x1,
+ FSEL_12M = 0x2,
+ FSEL_19_2M = 0x3,
+ FSEL_20M = 0x4,
+ FSEL_24M = 0x5,
+ FSEL_48M = 0x6, //Reserved
+ FSEL_50M = 0x7,
+}USBPHY_REFSEL;
+
+#define USBPHY_RETENABLE 1 //Retention Mode Enable == 1, Normal Operation mode must be 1.
+
+void USBPHY_Ctr48MhzClk(UINT8 bEnable_48Mhz);
+void usb_host_phy_off(void);
+
+//-------------------------------------------------------
+//OTG
+
+enum USBPHY_CON_SFR
+{
+ rUPHY_USBCTRL0 = EXYNOS5_USB2_PHY_HOST_CTRL0+0x0000,
+ rUPHY_USBTUNE0 = EXYNOS5_USB2_PHY_HOST_CTRL0+0x0004,
+ rUPHY_HSICCTRL1 = EXYNOS5_USB2_PHY_HOST_CTRL0+0x0010,
+ rUPHY_HSICTUNE1 = EXYNOS5_USB2_PHY_HOST_CTRL0+0x0014,
+ rUPHY_HSICCTRL2 = EXYNOS5_USB2_PHY_HOST_CTRL0+0x0020,
+ rUPHY_HSICTUNE2 = EXYNOS5_USB2_PHY_HOST_CTRL0+0x0024,
+
+ rUPHY_EHCICTRL = EXYNOS5_USB2_PHY_HOST_CTRL0+0x0030,
+ rUPHY_OHCICTRL = EXYNOS5_USB2_PHY_HOST_CTRL0+0x0034,
+
+ rUPHY_USBOTG_SYS = EXYNOS5_USB2_PHY_HOST_CTRL0+0x0038,
+ rUPHY_USBOTG_TUNE = EXYNOS5_USB2_PHY_HOST_CTRL0+0x0040,
+};
+
+enum usb_clk_type {
+ USBOTG_CLK, USBHOST_CLK, USBDRD30_CLK
+};
+
+//-------------------------------------------------------
+// Functions
+//-------------------------------------------------------
+
+void exynos5_usb_phy20_init(void);
+
+#endif
+
+