Comments
Patch
@@ -46,6 +46,9 @@
#define EXYNOS4_ADC_BASE 0x13910000
#define EXYNOS4_PWMTIMER_BASE 0x139D0000
#define EXYNOS4_MODEM_BASE 0x13A00000
+#define EXYNOS4_OTG_BASE 0x12480000
+#define EXYNOS4_PHY_BASE 0x125B0000
+#define EXYNOS4_USB_PHY_CONTROL 0x10020704
#ifndef __ASSEMBLY__
#include <asm/io.h>
@@ -28,6 +28,9 @@
#include <asm/arch/gpio.h>
#include <asm/arch/mmc.h>
#include <pmic.h>
+#include <usb/s3c_udc.h>
+#include <asm/arch/cpu.h>
+#include <max8998_pmic.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -253,3 +256,48 @@ int board_mmc_init(bd_t *bis)
}
#endif
+
+#ifdef CONFIG_USB_GADGET
+static int s5pc210_phy_control(int on)
+{
+ int ret;
+ static int status;
+ struct pmic *p = get_pmic();
+
+ if (pmic_probe(p))
+ return -1;
+
+ if (on && !status) {
+ ret = pmic_set_output(p, MAX8998_REG_ONOFF1,
+ MAX8998_LDO3, LDO_ON);
+ ret = pmic_set_output(p, MAX8998_REG_ONOFF2,
+ MAX8998_LDO8, LDO_ON);
+ if (ret) {
+ puts("MAX8998 LDO setting error!\n");
+ return -1;
+ }
+ status = 1;
+ } else if (!on && status) {
+ ret = pmic_set_output(p, MAX8998_REG_ONOFF1,
+ MAX8998_LDO3, LDO_OFF);
+ ret = pmic_set_output(p, MAX8998_REG_ONOFF2,
+ MAX8998_LDO8, LDO_OFF);
+ if (ret) {
+ puts("MAX8998 LDO setting error!\n");
+ return -1;
+ }
+ status = 0;
+ }
+ udelay(10000);
+
+ return 0;
+}
+
+struct s3c_plat_otg_data s5pc210_otg_data = {
+ .phy_control = s5pc210_phy_control,
+ .regs_phy = EXYNOS4_PHY_BASE,
+ .regs_otg = EXYNOS4_OTG_BASE,
+ .usb_phy_ctrl = EXYNOS4_USB_PHY_CONTROL,
+ .usb_flags = PHY0_SLEEP,
+};
+#endif
@@ -262,4 +262,8 @@
#define CONFIG_PMIC_I2C
#define CONFIG_PMIC_MAX8998
+#define CONFIG_USB_GADGET
+#define CONFIG_USB_GADGET_S3C_UDC_OTG
+#define CONFIG_USB_GADGET_DUALSPEED
+
#endif /* __CONFIG_H */