Merge branch 'master' of git://git.denx.de/u-boot-usb

* 'master' of git://git.denx.de/u-boot-usb:
  CONFIG: EXYNOS5: USB: Enable USB 2.0 on smdk5250
  EXYNOS5: USB: Fix incorrect USB base addresses
  EXYNOS: Add power Enable/Disable for USB-EHCI
  USB: EXYNOS: Set USB 2.0 HOST Link mode
  EXYNOS5: Add structure for PMU registers
  EXYNOS5: Fix system register structure
  USB: EXYNOS: Incorporate EHCI review comments

Signed-off-by: Wolfgang Denk <wd@denx.de>
This commit is contained in:
Wolfgang Denk 2012-07-09 23:59:00 +02:00
commit ba662f8998
9 changed files with 708 additions and 17 deletions

View File

@ -52,3 +52,25 @@ void set_mipi_phy_ctrl(unsigned int dev_index, unsigned int enable)
if (cpu_is_exynos4())
exynos4_mipi_phy_control(dev_index, enable);
}
void exynos5_set_usbhost_phy_ctrl(unsigned int enable)
{
struct exynos5_power *power =
(struct exynos5_power *)samsung_get_base_power();
if (enable) {
/* Enabling USBHOST_PHY */
setbits_le32(&power->usbhost_phy_control,
POWER_USB_HOST_PHY_CTRL_EN);
} else {
/* Disabling USBHOST_PHY */
clrbits_le32(&power->usbhost_phy_control,
POWER_USB_HOST_PHY_CTRL_EN);
}
}
void set_usbhost_phy_ctrl(unsigned int enable)
{
if (cpu_is_exynos5())
exynos5_set_usbhost_phy_ctrl(enable);
}

View File

@ -25,6 +25,28 @@
#include <asm/io.h>
#include <asm/arch/system.h>
static void exynos5_set_usbhost_mode(unsigned int mode)
{
struct exynos5_sysreg *sysreg =
(struct exynos5_sysreg *)samsung_get_base_sysreg();
unsigned int phy_cfg;
/* Setting USB20PHY_CONFIG register to USB 2.0 HOST link */
if (mode == USB20_PHY_CFG_HOST_LINK_EN) {
setbits_le32(&sysreg->usb20phy_cfg,
USB20_PHY_CFG_HOST_LINK_EN);
} else {
clrbits_le32(&sysreg->usb20phy_cfg,
USB20_PHY_CFG_HOST_LINK_EN);
}
}
void set_usbhost_mode(unsigned int mode)
{
if (cpu_is_exynos5())
exynos5_set_usbhost_mode(mode);
}
static void exynos4_set_system_display(void)
{
struct exynos4_sysreg *sysreg =

View File

@ -46,6 +46,7 @@
#define EXYNOS4_USBOTG_BASE 0x12480000
#define EXYNOS4_MMC_BASE 0x12510000
#define EXYNOS4_SROMC_BASE 0x12570000
#define EXYNOS4_USB_HOST_EHCI_BASE 0x12580000
#define EXYNOS4_USBPHY_BASE 0x125B0000
#define EXYNOS4_UART_BASE 0x13800000
#define EXYNOS4_ADC_BASE 0x13910000
@ -69,10 +70,11 @@
#define EXYNOS5_DMC_CTRL_BASE 0x10DD0000
#define EXYNOS5_GPIO_PART1_BASE 0x11400000
#define EXYNOS5_MIPI_DSIM_BASE 0x11D00000
#define EXYNOS5_USB_HOST_EHCI_BASE 0x12110000
#define EXYNOS5_USBPHY_BASE 0x12130000
#define EXYNOS5_USBOTG_BASE 0x12140000
#define EXYNOS5_MMC_BASE 0x12200000
#define EXYNOS5_SROMC_BASE 0x12250000
#define EXYNOS5_USBOTG_BASE 0x12480000
#define EXYNOS5_USBPHY_BASE 0x12480000
#define EXYNOS5_UART_BASE 0x12C00000
#define EXYNOS5_PWMTIMER_BASE 0x12DD0000
#define EXYNOS5_GPIO_PART2_BASE 0x13400000
@ -159,6 +161,7 @@ SAMSUNG_BASE(swreset, SWRESET)
SAMSUNG_BASE(timer, PWMTIMER_BASE)
SAMSUNG_BASE(uart, UART_BASE)
SAMSUNG_BASE(usb_phy, USBPHY_BASE)
SAMSUNG_BASE(usb_ehci, USB_HOST_EHCI_BASE)
SAMSUNG_BASE(usb_otg, USBOTG_BASE)
SAMSUNG_BASE(watchdog, WATCHDOG_BASE)
SAMSUNG_BASE(power, POWER_BASE)

View File

@ -1,5 +1,5 @@
/*
* SAMSUNG S5P USB HOST EHCI Controller
* SAMSUNG EXYNOS USB HOST EHCI Controller
*
* Copyright (C) 2012 Samsung Electronics Co.Ltd
* Vivek Gautam <gautam.vivek@samsung.com>
@ -20,8 +20,8 @@
* MA 02110-1301 USA
*/
#ifndef __ASM_ARM_ARCH_EXYNOS5_EHCI_S5P_H__
#define __ASM_ARM_ARCH_EXYNOS5_EHCI_S5P_H__
#ifndef __ASM_ARM_ARCH_EHCI_H__
#define __ASM_ARM_ARCH_EHCI_H__
#define CLK_24MHZ 5
@ -43,7 +43,7 @@
#define EHCICTRL_ENAINCR16 (1 << 26)
/* Register map for PHY control */
struct s5p_usb_phy {
struct exynos_usb_phy {
unsigned int usbphyctrl0;
unsigned int usbphytune0;
unsigned int reserved1[2];
@ -63,4 +63,4 @@ struct s5p_usb_phy {
/* Switch on the VBUS power. */
int board_usb_vbus_init(void);
#endif /* __ASM_ARM_ARCH_EXYNOS5_EHCI_S5P_H__ */
#endif /* __ASM_ARM_ARCH_EHCI_H__ */

View File

@ -225,6 +225,628 @@ struct exynos4_power {
unsigned int gps_alive_status;
unsigned int gps_alive_option;
};
struct exynos5_power {
unsigned int om_stat;
unsigned char res1[0x18];
unsigned int rtc_clko_sel;
unsigned int gnss_rtc_out_ctrl;
unsigned char res2[0x1dc];
unsigned int central_seq_configuration;
unsigned int central_seq_status;
unsigned int central_seq_option;
unsigned char res3[0x14];
unsigned int seq_transition0;
unsigned int seq_transition1;
unsigned int seq_transition2;
unsigned int seq_transition3;
unsigned int seq_transition4;
unsigned int seq_transition5;
unsigned int seq_transition6;
unsigned int seq_transition7;
unsigned int central_seq_dmc_configuration;
unsigned int central_seq_dmc_status;
unsigned int central_seq_dmc_option;
unsigned char res4[0x14];
unsigned int seq_dmc_transition0;
unsigned int seq_dmc_transition1;
unsigned int seq_dmc_transition2;
unsigned int seq_dmc_transition3;
unsigned int seq_dmc_transition4;
unsigned int seq_dmc_transition5;
unsigned int seq_dmc_transition6;
unsigned int seq_dmc_transition7;
unsigned char res5[0x180];
unsigned int swreset;
unsigned int rst_stat;
unsigned int automatic_wdt_reset_disable;
unsigned int mask_wdt_reset_request;
unsigned int mask_wreset_request;
unsigned char res6[0xec];
unsigned int reset_sequencer_configuration;
unsigned int reset_sequencer_status;
unsigned int reset_sequencer_option;
unsigned char res7[0xf4];
unsigned int wakeup_stat;
unsigned int eint_wakeup_mask;
unsigned int wakeup_mask;
unsigned int wakeup_interrupt;
unsigned char res8[0x10];
unsigned int wakeup_stat_dmc;
unsigned int eint_wakeup_mask_dmc;
unsigned int wakeup_mask_dmc;
unsigned int wakeup_interrupt_dmc;
unsigned char res9[0xd0];
unsigned int hdmi_phy_control;
unsigned int usbdrd_phy_control;
unsigned int usbhost_phy_control;
unsigned int efnand_phy_control;
unsigned int mipi_phy0_control;
unsigned int mipi_phy1_control;
unsigned int adc_phy_control;
unsigned int mtcadc_phy_control;
unsigned int dptx_phy_control;
unsigned int sata_phy_control;
unsigned char res10[0xd8];
unsigned int inform0;
unsigned int inform1;
unsigned int inform2;
unsigned int inform3;
unsigned int sysip_dat0;
unsigned int sysip_dat1;
unsigned int sysip_dat2;
unsigned int sysip_dat3;
unsigned char res11[0xe0];
unsigned int pmu_spare0;
unsigned int pmu_spare1;
unsigned int pmu_spare2;
unsigned int pmu_spare3;
unsigned char res12[0x70];
unsigned int irom_data_reg0;
unsigned int irom_data_reg1;
unsigned int irom_data_reg2;
unsigned int irom_data_reg3;
unsigned char res13[0x70];
unsigned int pmu_debug;
unsigned char res14[0x5fc];
unsigned int arm_core0_sys_pwr_reg;
unsigned int dis_irq_arm_core0_local_sys_pwr_reg;
unsigned int dis_irq_arm_core0_central_sys_pwr_reg;
unsigned char res15[0x4];
unsigned int arm_core1_sys_pwr_reg;
unsigned int dis_irq_arm_core1_local_sys_pwr_reg;
unsigned int dis_irq_arm_core1_central_sys_pwr_reg;
unsigned char res16[0x24];
unsigned int fsys_arm_sys_pwr_reg;
unsigned int dis_irq_fsys_arm_local_sys_pwr_reg;
unsigned int dis_irq_fsys_arm_central_sys_pwr_reg;
unsigned char res17[0x4];
unsigned int isp_arm_sys_pwr_reg;
unsigned int dis_irq_isp_arm_local_sys_pwr_reg;
unsigned int dis_irq_isp_arm_central_sys_pwr_reg;
unsigned char res18[0x24];
unsigned int arm_common_sys_pwr_reg;
unsigned char res19[0x3c];
unsigned int arm_l2_sys_pwr_reg;
unsigned char res20[0x3c];
unsigned int cmu_aclkstop_sys_pwr_reg;
unsigned int cmu_sclkstop_sys_pwr_reg;
unsigned char res21[0x4];
unsigned int cmu_reset_sys_pwr_reg;
unsigned char res22[0x10];
unsigned int cmu_aclkstop_dmc_sys_pwr_reg;
unsigned int cmu_sclkstop_dmc_sys_pwr_reg;
unsigned char res23[0x4];
unsigned int cmu_reset_dmc_sys_pwr_reg;
unsigned char res24[0x8];
unsigned int ddrphy_dlllock_sys_pwr_reg;
unsigned char res25[0x4];
unsigned int apll_sysclk_sys_pwr_reg;
unsigned int mpll_sysclk_sys_pwr_reg;
unsigned int vpll_sysclk_sys_pwr_reg;
unsigned int epll_sysclk_sys_pwr_reg;
unsigned int bpll_sysclk_sys_pwr_reg;
unsigned int cpll_sysclk_sys_pwr_reg;
unsigned int gpll_sysclk_sys_pwr_reg;
unsigned char res26[0x8];
unsigned int mplluser_sysclk_sys_pwr_reg;
unsigned char res27[0x8];
unsigned int bplluser_sysclk_sys_pwr_reg;
unsigned char res28[0xc];
unsigned int top_bus_sys_pwr_reg;
unsigned int top_retention_sys_pwr_reg;
unsigned int top_pwr_sys_pwr_reg;
unsigned char res29[0x4];
unsigned int top_bus_dmc_sys_pwr_reg;
unsigned int top_retention_dmc_sys_pwr_reg;
unsigned int top_pwr_dmc_sys_pwr_reg;
unsigned char res30[0x4];
unsigned int logic_reset_sys_pwr_reg;
unsigned int oscclk_gate_sys_pwr_reg;
unsigned char res31[0x8];
unsigned int logic_reset_dmc_sys_pwr_reg;
unsigned int oscclk_gate_dmc_sys_pwr_reg;
unsigned char res32[0x8];
unsigned int usbotg_mem_sys_pwr_reg;
unsigned char res33[0x4];
unsigned int g2d_mem_sys_pwr_reg;
unsigned int usbdrd_mem_sys_pwr_reg;
unsigned int efnand_mem_sys_pwr_reg;
unsigned int cssys_mem_sys_pwr_reg;
unsigned int secss_mem_sys_pwr_reg;
unsigned int rotator_mem_sys_pwr_reg;
unsigned int intram_mem_sys_pwr_reg;
unsigned int introm_mem_sys_pwr_reg;
unsigned int jpeg_mem_sys_pwr_reg;
unsigned int hsi_mem_sys_pwr_reg;
unsigned char res34[0x4];
unsigned int mcuiop_mem_sys_pwr_reg;
unsigned char res35[0x4];
unsigned int sata_mem_sys_pwr_reg;
unsigned int pad_retention_dram_sys_pwr_reg;
unsigned int pad_retention_mau_sys_pwr_reg;
unsigned int pad_retention_jtag_sys_pwr_reg;
unsigned char res36[0xc];
unsigned int pad_retention_mmc2_sys_pwr_reg;
unsigned int pad_retention_mmc3_sys_pwr_reg;
unsigned int pad_retention_gpio_sys_pwr_reg;
unsigned int pad_retention_uart_sys_pwr_reg;
unsigned int pad_retention_mmc0_sys_pwr_reg;
unsigned int pad_retention_mmc1_sys_pwr_reg;
unsigned int pad_retention_ebia_sys_pwr_reg;
unsigned int pad_retention_ebib_sys_pwr_reg;
unsigned int pad_retention_spi_sys_pwr_reg;
unsigned int pad_retention_gpio_dmc_sys_pwr_reg;
unsigned int pad_isolation_sys_pwr_reg;
unsigned char res37[0xc];
unsigned int pad_isolation_dmc_sys_pwr_reg;
unsigned char res38[0xc];
unsigned int pad_alv_sel_sys_pwr_reg;
unsigned char res39[0x20];
unsigned int xxti_sys_pwr_reg;
unsigned char res40[0x38];
unsigned int ext_regulator_sys_pwr_reg;
unsigned char res41[0x3c];
unsigned int gpio_mode_sys_pwr_reg;
unsigned char res42[0x1c];
unsigned int gpio_mode_dmc_sys_pwr_reg;
unsigned char res43[0x1c];
unsigned int gpio_mode_mau_sys_pwr_reg;
unsigned int top_asb_reset_sys_pwr_reg;
unsigned int top_asb_isolation_sys_pwr_reg;
unsigned char res44[0xb4];
unsigned int gscl_sys_pwr_reg;
unsigned int isp_sys_pwr_reg;
unsigned int mfc_sys_pwr_reg;
unsigned int g3d_sys_pwr_reg;
unsigned char res45[0x4];
unsigned int disp1_sys_pwr_reg;
unsigned int mau_sys_pwr_reg;
unsigned char res46[0x64];
unsigned int cmu_clkstop_gscl_sys_pwr_reg;
unsigned int cmu_clkstop_isp_sys_pwr_reg;
unsigned int cmu_clkstop_mfc_sys_pwr_reg;
unsigned int cmu_clkstop_g3d_sys_pwr_reg;
unsigned char res47[0x4];
unsigned int cmu_clkstop_disp1_sys_pwr_reg;
unsigned int cmu_clkstop_mau_sys_pwr_reg;
unsigned char res48[0x24];
unsigned int cmu_sysclk_gscl_sys_pwr_reg;
unsigned int cmu_sysclk_isp_sys_pwr_reg;
unsigned int cmu_sysclk_mfc_sys_pwr_reg;
unsigned int cmu_sysclk_g3d_sys_pwr_reg;
unsigned char res49[0x4];
unsigned int cmu_sysclk_disp1_sys_pwr_reg;
unsigned int cmu_sysclk_mau_sys_pwr_reg;
unsigned char res50[0xa4];
unsigned int cmu_reset_gscl_sys_pwr_reg;
unsigned int cmu_reset_isp_sys_pwr_reg;
unsigned int cmu_reset_mfc_sys_pwr_reg;
unsigned int cmu_reset_g3d_sys_pwr_reg;
unsigned char res51[0x4];
unsigned int cmu_reset_disp1_sys_pwr_reg;
unsigned int cmu_reset_mau_sys_pwr_reg;
unsigned char res52[0xa64];
unsigned int arm_core0_configuration;
unsigned int arm_core0_status;
unsigned int arm_core0_option;
unsigned char res53[0x14];
unsigned int dis_irq_arm_core0_local_configuration;
unsigned int dis_irq_arm_core0_local_status;
unsigned int dis_irq_arm_core0_local_option;
unsigned char res54[0x14];
unsigned int dis_irq_arm_core0_central_configuration;
unsigned int dis_irq_arm_core0_central_status;
unsigned int dis_irq_arm_core0_central_option;
unsigned char res55[0x34];
unsigned int arm_core1_configuration;
unsigned int arm_core1_status;
unsigned int arm_core1_option;
unsigned char res56[0x14];
unsigned int dis_irq_arm_core1_local_configuration;
unsigned int dis_irq_arm_core1_local_status;
unsigned int dis_irq_arm_core1_local_option;
unsigned char res57[0x14];
unsigned int dis_irq_arm_core1_central_configuration;
unsigned int dis_irq_arm_core1_central_status;
unsigned int dis_irq_arm_core1_central_option;
unsigned char res58[0x134];
unsigned int fsys_arm_configuration;
unsigned int fsys_arm_status;
unsigned int fsys_arm_option;
unsigned char res59[0x14];
unsigned int dis_irq_fsys_arm_local_configuration;
unsigned int dis_irq_fsys_arm_local_status;
unsigned int dis_irq_fsys_arm_local_option;
unsigned char res60[0x14];
unsigned int dis_irq_fsys_arm_central_configuration;
unsigned int dis_irq_fsys_arm_central_status;
unsigned int dis_irq_fsys_arm_central_option;
unsigned char res61[0x34];
unsigned int isp_arm_configuration;
unsigned int isp_arm_status;
unsigned int isp_arm_option;
unsigned char res62[0x14];
unsigned int dis_irq_isp_arm_local_configuration;
unsigned int dis_irq_isp_arm_local_status;
unsigned int dis_irq_isp_arm_local_option;
unsigned char res63[0x14];
unsigned int dis_irq_isp_arm_central_configuration;
unsigned int dis_irq_isp_arm_central_status;
unsigned int dis_irq_isp_arm_central_option;
unsigned char res64[0x134];
unsigned int arm_common_configuration;
unsigned int arm_common_status;
unsigned int arm_common_option;
unsigned char res65[0x1f4];
unsigned int arm_l2_configuration;
unsigned int arm_l2_status;
unsigned int arm_l2_option;
unsigned char res66[0x1f4];
unsigned int cmu_aclkstop_configuration;
unsigned int cmu_aclkstop_status;
unsigned int cmu_aclkstop_option;
unsigned char res67[0x14];
unsigned int cmu_sclkstop_configuration;
unsigned int cmu_sclkstop_status;
unsigned int cmu_sclkstop_option;
unsigned char res68[0x34];
unsigned int cmu_reset_configuration;
unsigned int cmu_reset_status;
unsigned int cmu_reset_option;
unsigned char res69[0x94];
unsigned int cmu_aclkstop_dmc_configuration;
unsigned int cmu_aclkstop_dmc_status;
unsigned int cmu_aclkstop_dmc_option;
unsigned char res70[0x14];
unsigned int cmu_sclkstop_dmc_configuration;
unsigned int cmu_sclkstop_dmc_status;
unsigned int cmu_sclkstop_dmc_option;
unsigned char res71[0x34];
unsigned int cmu_reset_dmc_configuration;
unsigned int cmu_reset_dmc_status;
unsigned int cmu_reset_dmc_option;
unsigned char res72[0x54];
unsigned int ddrphy_dlllock_configuration;
unsigned int ddrphy_dlllock_status;
unsigned int ddrphy_dlllock_option;
unsigned char res73[0x34];
unsigned int apll_sysclk_configuration;
unsigned int apll_sysclk_status;
unsigned int apll_sysclk_option;
unsigned char res74[0x18];
unsigned int mpll_sysclk_status;
unsigned int mpll_sysclk_option;
unsigned char res75[0x14];
unsigned int vpll_sysclk_configuration;
unsigned int vpll_sysclk_status;
unsigned int vpll_sysclk_option;
unsigned char res76[0x14];
unsigned int epll_sysclk_configuration;
unsigned int epll_sysclk_status;
unsigned int epll_sysclk_option;
unsigned char res77[0x14];
unsigned int bpll_sysclk_configuration;
unsigned int bpll_sysclk_status;
unsigned int bpll_sysclk_option;
unsigned char res78[0x14];
unsigned int cpll_sysclk_configuration;
unsigned int cpll_sysclk_status;
unsigned int cpll_sysclk_option;
unsigned char res79[0x14];
unsigned int gpll_sysclk_configuration;
unsigned int gpll_sysclk_status;
unsigned int gpll_sysclk_option;
unsigned char res80[0x54];
unsigned int mplluser_sysclk_configuration;
unsigned int mplluser_sysclk_status;
unsigned int mplluser_sysclk_option;
unsigned char res81[0x54];
unsigned int bplluser_sysclk_configuration;
unsigned int bplluser_sysclk_status;
unsigned int bplluser_sysclk_option;
unsigned char res82[0x74];
unsigned int top_bus_configuration;
unsigned int top_bus_status;
unsigned int top_bus_option;
unsigned char res83[0x14];
unsigned int top_retention_configuration;
unsigned int top_retention_status;
unsigned int top_retention_option;
unsigned char res84[0x14];
unsigned int top_pwr_configuration;
unsigned int top_pwr_status;
unsigned int top_pwr_option;
unsigned char res85[0x34];
unsigned int top_bus_dmc_configuration;
unsigned int top_bus_dmc_status;
unsigned int top_bus_dmc_option;
unsigned char res86[0x14];
unsigned int top_retention_dmc_configuration;
unsigned int top_retention_dmc_status;
unsigned int top_retention_dmc_option;
unsigned char res87[0x14];
unsigned int top_pwr_dmc_configuration;
unsigned int top_pwr_dmc_status;
unsigned int top_pwr_dmc_option;
unsigned char res88[0x34];
unsigned int logic_reset_configuration;
unsigned int logic_reset_status;
unsigned int logic_reset_option;
unsigned char res89[0x14];
unsigned int oscclk_gate_configuration;
unsigned int oscclk_gate_status;
unsigned int oscclk_gate_option;
unsigned char res90[0x54];
unsigned int logic_reset_dmc_configuration;
unsigned int logic_reset_dmc_status;
unsigned int logic_reset_dmc_option;
unsigned char res91[0x14];
unsigned int oscclk_gate_dmc_configuration;
unsigned int oscclk_gate_dmc_status;
unsigned int oscclk_gate_dmc_option;
unsigned char res92[0x54];
unsigned int usbotg_mem_configuration;
unsigned int usbotg_mem_status;
unsigned int usbotg_mem_option;
unsigned char res93[0x34];
unsigned int g2d_mem_configuration;
unsigned int g2d_mem_status;
unsigned int g2d_mem_option;
unsigned char res94[0x14];
unsigned int usbdrd_mem_configuration;
unsigned int usbdrd_mem_status;
unsigned int usbdrd_mem_option;
unsigned char res95[0x14];
unsigned int efnand_mem_configuration;
unsigned int efnand_mem_status;
unsigned int efnand_mem_option;
unsigned char res96[0x14];
unsigned int cssys_mem_configuration;
unsigned int cssys_mem_status;
unsigned int cssys_mem_option;
unsigned char res97[0x14];
unsigned int secss_mem_configuration;
unsigned int secss_mem_status;
unsigned int secss_mem_option;
unsigned char res98[0x14];
unsigned int rotator_mem_configuration;
unsigned int rotator_mem_status;
unsigned int rotator_mem_option;
unsigned char res99[0x14];
unsigned int intram_mem_configuration;
unsigned int intram_mem_status;
unsigned int intram_mem_option;
unsigned char res100[0x14];
unsigned int introm_mem_configuration;
unsigned int introm_mem_status;
unsigned int introm_mem_option;
unsigned char res101[0x14];
unsigned int jpeg_mem_configuration;
unsigned int jpeg_mem_status;
unsigned int jpeg_mem_option;
unsigned char res102[0x14];
unsigned int hsi_mem_configuration;
unsigned int hsi_mem_status;
unsigned int hsi_mem_option;
unsigned char res103[0x34];
unsigned int mcuiop_mem_configuration;
unsigned int mcuiop_mem_status;
unsigned int mcuiop_mem_option;
unsigned char res104[0x14];
unsigned int sata_mem_configuration;
unsigned int sata_mem_status;
unsigned int sata_mem_option;
unsigned char res105[0x34];
unsigned int pad_retention_dram_configuration;
unsigned int pad_retention_dram_status;
unsigned int pad_retention_dram_option;
unsigned char res106[0x14];
unsigned int pad_retention_mau_configuration;
unsigned int pad_retention_mau_status;
unsigned int pad_retention_mau_option;
unsigned char res107[0x14];
unsigned int pad_retention_jtag_configuration;
unsigned int pad_retention_jtag_status;
unsigned int pad_retention_jtag_option;
unsigned char res108[0x74];
unsigned int pad_retention_mmc2_configuration;
unsigned int pad_retention_mmc2_status;
unsigned int pad_retention_mmc2_option;
unsigned char res109[0x14];
unsigned int pad_retention_mmc3_configuration;
unsigned int pad_retention_mmc3_status;
unsigned int pad_retention_mmc3_option;
unsigned char res110[0x14];
unsigned int pad_retention_gpio_configuration;
unsigned int pad_retention_gpio_status;
unsigned int pad_retention_gpio_option;
unsigned char res111[0x14];
unsigned int pad_retention_uart_configuration;
unsigned int pad_retention_uart_status;
unsigned int pad_retention_uart_option;
unsigned char res112[0x14];
unsigned int pad_retention_mmc0_configuration;
unsigned int pad_retention_mmc0_status;
unsigned int pad_retention_mmc0_option;
unsigned char res113[0x14];
unsigned int pad_retention_mmc1_configuration;
unsigned int pad_retention_mmc1_status;
unsigned int pad_retention_mmc1_option;
unsigned char res114[0x14];
unsigned int pad_retention_ebia_configuration;
unsigned int pad_retention_ebia_status;
unsigned int pad_retention_ebia_option;
unsigned char res115[0x14];
unsigned int pad_retention_ebib_configuration;
unsigned int pad_retention_ebib_status;
unsigned int pad_retention_ebib_option;
unsigned char res116[0x14];
unsigned int pad_retention_spi_configuration;
unsigned int pad_retention_spi_status;
unsigned int pad_retention_spi_option;
unsigned char res117[0x14];
unsigned int pad_retention_gpio_dmc_configuration;
unsigned int pad_retention_gpio_dmc_status;
unsigned int pad_retention_gpio_dmc_option;
unsigned char res118[0x14];
unsigned int pad_isolation_configuration;
unsigned int pad_isolation_status;
unsigned int pad_isolation_option;
unsigned char res119[0x74];
unsigned int pad_isolation_dmc_configuration;
unsigned int pad_isolation_dmc_status;
unsigned int pad_isolation_dmc_option;
unsigned char res120[0x74];
unsigned int pad_alv_sel_configuration;
unsigned int pad_alv_sel_status;
unsigned int pad_alv_sel_option0;
unsigned int ps_hold_control;
unsigned char res130[0x110];
unsigned int xxti_configuration;
unsigned int xxti_status;
unsigned int xxti_option;
unsigned char res131[0x10];
unsigned int xxti_duration3;
unsigned char res132[0x1c0];
unsigned int ext_regulator_configuration;
unsigned int ext_regulator_status;
unsigned int ext_regulator_option;
unsigned char res133[0x10];
unsigned int ext_regulator_duration3;
unsigned char res134[0x1e0];
unsigned int gpio_mode_configuration;
unsigned int gpio_mode_status;
unsigned int gpio_mode_option;
unsigned char res135[0xf4];
unsigned int gpio_mode_dmc_configuration;
unsigned int gpio_mode_dmc_status;
unsigned int gpio_mode_dmc_option;
unsigned char res136[0xd4];
unsigned int gpio_mode_mau_configuration;
unsigned int gpio_mode_mau_status;
unsigned int gpio_mode_mau_option;
unsigned char res137[0x14];
unsigned int top_asb_reset_configuration;
unsigned int top_asb_reset_status;
unsigned int top_asb_reset_option;
unsigned char res138[0x14];
unsigned int top_asb_isolation_configuration;
unsigned int top_asb_isolation_status;
unsigned int top_asb_isolation_option;
unsigned char res139[0x5d4];
unsigned int gscl_configuration;
unsigned int gscl_status;
unsigned int gscl_option;
unsigned char res140[0x14];
unsigned int isp_configuration;
unsigned int isp_status;
unsigned int isp_option;
unsigned char res141[0x14];
unsigned int mfc_configuration;
unsigned int mfc_status;
unsigned int mfc_option;
unsigned char res142[0x14];
unsigned int g3d_configuration;
unsigned int g3d_status;
unsigned int g3d_option;
unsigned char res143[0x34];
unsigned int disp1_configuration;
unsigned int disp1_status;
unsigned int disp1_option;
unsigned char res144[0x14];
unsigned int mau_configuration;
unsigned int mau_status;
unsigned int mau_option;
unsigned char res145[0x334];
unsigned int cmu_clkstop_gscl_configuration;
unsigned int cmu_clkstop_gscl_status;
unsigned int cmu_clkstop_gscl_option;
unsigned char res146[0x14];
unsigned int cmu_clkstop_isp_configuration;
unsigned int cmu_clkstop_isp_status;
unsigned int cmu_clkstop_isp_option;
unsigned char res147[0x14];
unsigned int cmu_clkstop_mfc_configuration;
unsigned int cmu_clkstop_mfc_status;
unsigned int cmu_clkstop_mfc_option;
unsigned char res148[0x14];
unsigned int cmu_clkstop_g3d_configuration;
unsigned int cmu_clkstop_g3d_status;
unsigned int cmu_clkstop_g3d_option;
unsigned char res149[0x34];
unsigned int cmu_clkstop_disp1_configuration;
unsigned int cmu_clkstop_disp1_status;
unsigned int cmu_clkstop_disp1_option;
unsigned char res150[0x14];
unsigned int cmu_clkstop_mau_configuration;
unsigned int cmu_clkstop_mau_status;
unsigned int cmu_clkstop_mau_option;
unsigned char res151[0x134];
unsigned int cmu_sysclk_gscl_configuration;
unsigned int cmu_sysclk_gscl_status;
unsigned int cmu_sysclk_gscl_option;
unsigned char res152[0x18];
unsigned int cmu_sysclk_isp_status;
unsigned int cmu_sysclk_isp_option;
unsigned char res153[0x18];
unsigned int cmu_sysclk_mfc_status;
unsigned int cmu_sysclk_mfc_option;
unsigned char res154[0x18];
unsigned int cmu_sysclk_g3d_status;
unsigned int cmu_sysclk_g3d_option;
unsigned char res155[0x38];
unsigned int cmu_sysclk_disp1_status;
unsigned int cmu_sysclk_disp1_option;
unsigned char res156[0x18];
unsigned int cmu_sysclk_mau_status;
unsigned int cmu_sysclk_mau_option;
unsigned char res157[0x534];
unsigned int cmu_reset_gscl_configuration;
unsigned int cmu_reset_gscl_status;
unsigned int cmu_reset_gscl_option;
unsigned char res158[0x14];
unsigned int cmu_reset_isp_configuration;
unsigned int cmu_reset_isp_status;
unsigned int cmu_reset_isp_option;
unsigned char res159[0x14];
unsigned int cmu_reset_mfc_configuration;
unsigned int cmu_reset_mfc_status;
unsigned int cmu_reset_mfc_option;
unsigned char res160[0x14];
unsigned int cmu_reset_g3d_configuration;
unsigned int cmu_reset_g3d_status;
unsigned int cmu_reset_g3d_option;
unsigned char res161[0x34];
unsigned int cmu_reset_disp1_configuration;
unsigned int cmu_reset_disp1_status;
unsigned int cmu_reset_disp1_option;
unsigned char res162[0x14];
unsigned int cmu_reset_mau_configuration;
unsigned int cmu_reset_mau_status;
unsigned int cmu_reset_mau_option;
unsigned char res163[0x24];
};
#endif /* __ASSEMBLY__ */
void set_mipi_phy_ctrl(unsigned int dev_index, unsigned int enable);
@ -233,4 +855,8 @@ void set_mipi_phy_ctrl(unsigned int dev_index, unsigned int enable);
#define EXYNOS_MIPI_PHY_SRESETN (1 << 1)
#define EXYNOS_MIPI_PHY_MRESETN (1 << 2)
void set_usbhost_phy_ctrl(unsigned int enable);
#define POWER_USB_HOST_PHY_CTRL_EN (1 << 0)
#define POWER_USB_HOST_PHY_CTRL_DISABLE (0 << 0)
#endif

View File

@ -42,12 +42,16 @@ struct exynos5_sysreg {
unsigned int reserved;
unsigned int ispblk_cfg;
unsigned int usb20phy_cfg;
unsigned char res2[0x29c];
unsigned int mipi_dphy;
unsigned int dptx_dphy;
unsigned int phyclk_sel;
};
#endif
#define USB20_PHY_CFG_HOST_LINK_EN (1 << 0)
void set_usbhost_mode(unsigned int mode);
void set_system_display_ctrl(void);
#endif /* _EXYNOS4_SYSTEM_H */

View File

@ -42,6 +42,7 @@ COBJS-$(CONFIG_USB_EHCI_FSL) += ehci-mpc512x.o
else
COBJS-$(CONFIG_USB_EHCI_FSL) += ehci-fsl.o
endif
COBJS-$(CONFIG_USB_EHCI_EXYNOS) += ehci-exynos.o
COBJS-$(CONFIG_USB_EHCI_MXC) += ehci-mxc.o
COBJS-$(CONFIG_USB_EHCI_MXS) += ehci-mxs.o
COBJS-$(CONFIG_USB_EHCI_MX5) += ehci-mx5.o
@ -51,7 +52,6 @@ COBJS-$(CONFIG_USB_EHCI_PPC4XX) += ehci-ppc4xx.o
COBJS-$(CONFIG_USB_EHCI_IXP4XX) += ehci-ixp.o
COBJS-$(CONFIG_USB_EHCI_MARVELL) += ehci-marvell.o
COBJS-$(CONFIG_USB_EHCI_PCI) += ehci-pci.o
COBJS-$(CONFIG_USB_EHCI_S5P) += ehci-s5p.o
COBJS-$(CONFIG_USB_EHCI_TEGRA) += ehci-tegra.o
COBJS-$(CONFIG_USB_EHCI_VCT) += ehci-vct.o

View File

@ -1,5 +1,5 @@
/*
* SAMSUNG S5P USB HOST EHCI Controller
* SAMSUNG EXYNOS USB HOST EHCI Controller
*
* Copyright (C) 2012 Samsung Electronics Co.Ltd
* Vivek Gautam <gautam.vivek@samsung.com>
@ -23,13 +23,19 @@
#include <common.h>
#include <usb.h>
#include <asm/arch/cpu.h>
#include <asm/arch/ehci-s5p.h>
#include <asm/arch/ehci.h>
#include <asm/arch/system.h>
#include <asm/arch/power.h>
#include "ehci.h"
#include "ehci-core.h"
/* Setup the EHCI host controller. */
static void setup_usb_phy(struct s5p_usb_phy *usb)
static void setup_usb_phy(struct exynos_usb_phy *usb)
{
set_usbhost_mode(USB20_PHY_CFG_HOST_LINK_EN);
set_usbhost_phy_ctrl(POWER_USB_HOST_PHY_CTRL_EN);
clrbits_le32(&usb->usbphyctrl0,
HOST_CTRL0_FSEL_MASK |
HOST_CTRL0_COMMONON_N |
@ -61,7 +67,7 @@ static void setup_usb_phy(struct s5p_usb_phy *usb)
}
/* Reset the EHCI host controller. */
static void reset_usb_phy(struct s5p_usb_phy *usb)
static void reset_usb_phy(struct exynos_usb_phy *usb)
{
/* HOST_PHY reset */
setbits_le32(&usb->usbphyctrl0,
@ -70,6 +76,8 @@ static void reset_usb_phy(struct s5p_usb_phy *usb)
HOST_CTRL0_SIDDQ |
HOST_CTRL0_FORCESUSPEND |
HOST_CTRL0_FORCESLEEP);
set_usbhost_phy_ctrl(POWER_USB_HOST_PHY_CTRL_DISABLE);
}
/*
@ -79,12 +87,12 @@ static void reset_usb_phy(struct s5p_usb_phy *usb)
*/
int ehci_hcd_init(void)
{
struct s5p_usb_phy *usb;
struct exynos_usb_phy *usb;
usb = (struct s5p_usb_phy *)samsung_get_base_usb_phy();
usb = (struct exynos_usb_phy *)samsung_get_base_usb_phy();
setup_usb_phy(usb);
hccr = (struct ehci_hccr *)(EXYNOS5_USB_HOST_EHCI_BASE);
hccr = (struct ehci_hccr *)samsung_get_base_usb_ehci();
hcor = (struct ehci_hcor *)((uint32_t) hccr
+ HC_LENGTH(ehci_readl(&hccr->cr_capbase)));
@ -101,9 +109,9 @@ int ehci_hcd_init(void)
*/
int ehci_hcd_stop()
{
struct s5p_usb_phy *usb;
struct exynos_usb_phy *usb;
usb = (struct s5p_usb_phy *)samsung_get_base_usb_phy();
usb = (struct exynos_usb_phy *)samsung_get_base_usb_phy();
reset_usb_phy(usb);
return 0;

View File

@ -102,6 +102,12 @@
#define CONFIG_BOOTDELAY 3
#define CONFIG_ZERO_BOOTDELAY_CHECK
/* USB */
#define CONFIG_CMD_USB
#define CONFIG_USB_EHCI
#define CONFIG_USB_EHCI_EXYNOS
#define CONFIG_USB_STORAGE
/* MMC SPL */
#define CONFIG_SPL
#define COPY_BL2_FNPTR_ADDR 0x02020030