diff options
| -rw-r--r-- | arch/arm/include/asm/arch-exynos/cpu.h | 1 | ||||
| -rw-r--r-- | board/samsung/universal_c210/universal.c | 48 | ||||
| -rw-r--r-- | include/configs/s5pc210_universal.h | 4 | ||||
| -rw-r--r-- | include/max8998_pmic.h | 1 | 
4 files changed, 54 insertions, 0 deletions
| diff --git a/arch/arm/include/asm/arch-exynos/cpu.h b/arch/arm/include/asm/arch-exynos/cpu.h index 4464d2715..6d97b9954 100644 --- a/arch/arm/include/asm/arch-exynos/cpu.h +++ b/arch/arm/include/asm/arch-exynos/cpu.h @@ -46,6 +46,7 @@  #define EXYNOS4_ADC_BASE		0x13910000  #define EXYNOS4_PWMTIMER_BASE		0x139D0000  #define EXYNOS4_MODEM_BASE		0x13A00000 +#define EXYNOS4_USBPHY_CONTROL          0x10020704  #ifndef __ASSEMBLY__  #include <asm/io.h> diff --git a/board/samsung/universal_c210/universal.c b/board/samsung/universal_c210/universal.c index f9b8a7642..8393e4fdd 100644 --- a/board/samsung/universal_c210/universal.c +++ b/board/samsung/universal_c210/universal.c @@ -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; +	struct pmic *p = get_pmic(); + +	if (pmic_probe(p)) +		return -1; + +	if (on) { +		ret |= pmic_set_output(p, +				       MAX8998_REG_BUCK_ACTIVE_DISCHARGE3, +				       MAX8998_SAFEOUT1, LDO_ON); +		ret |= pmic_set_output(p, MAX8998_REG_ONOFF1, +				      MAX8998_LDO3, LDO_ON); +		ret |= pmic_set_output(p, MAX8998_REG_ONOFF2, +				      MAX8998_LDO8, LDO_ON); + +	} else { +		ret |= pmic_set_output(p, MAX8998_REG_ONOFF2, +				      MAX8998_LDO8, LDO_OFF); +		ret |= pmic_set_output(p, MAX8998_REG_ONOFF1, +				      MAX8998_LDO3, LDO_OFF); +		ret |= pmic_set_output(p, +				       MAX8998_REG_BUCK_ACTIVE_DISCHARGE3, +				       MAX8998_SAFEOUT1, LDO_OFF); +	} + +	if (ret) { +		puts("MAX8998 LDO setting error!\n"); +		return -1; +	} + +	return 0; +} + +struct s3c_plat_otg_data s5pc210_otg_data = { +	.phy_control = s5pc210_phy_control, +	.regs_phy = EXYNOS4_USBPHY_BASE, +	.regs_otg = EXYNOS4_USBOTG_BASE, +	.usb_phy_ctrl = EXYNOS4_USBPHY_CONTROL, +	.usb_flags = PHY0_SLEEP, +}; +#endif diff --git a/include/configs/s5pc210_universal.h b/include/configs/s5pc210_universal.h index b36ad3a19..be000cbaf 100644 --- a/include/configs/s5pc210_universal.h +++ b/include/configs/s5pc210_universal.h @@ -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 */ diff --git a/include/max8998_pmic.h b/include/max8998_pmic.h index bf28820c5..10c892a51 100644 --- a/include/max8998_pmic.h +++ b/include/max8998_pmic.h @@ -76,6 +76,7 @@ enum {  #define MAX8998_LDO3		(1 << 2)  #define MAX8998_LDO8		(1 << 5) +#define MAX8998_SAFEOUT1	(1 << 4)  #define MAX8998_I2C_ADDR        (0xCC >> 1) |