Merge branch 'u-boot-samsung/master' into 'u-boot-arm/master'
This commit is contained in:
commit
375a4496ff
@ -1410,7 +1410,8 @@ void set_mmc_clk(int dev_index, unsigned int div)
|
|||||||
else {
|
else {
|
||||||
if (proid_is_exynos4412())
|
if (proid_is_exynos4412())
|
||||||
exynos4x12_set_mmc_clk(dev_index, div);
|
exynos4x12_set_mmc_clk(dev_index, div);
|
||||||
exynos4_set_mmc_clk(dev_index, div);
|
else
|
||||||
|
exynos4_set_mmc_clk(dev_index, div);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -462,7 +462,7 @@ static int exynos4_pinmux_config(int peripheral, int flags)
|
|||||||
case PERIPH_ID_SDMMC1:
|
case PERIPH_ID_SDMMC1:
|
||||||
case PERIPH_ID_SDMMC3:
|
case PERIPH_ID_SDMMC3:
|
||||||
case PERIPH_ID_SDMMC4:
|
case PERIPH_ID_SDMMC4:
|
||||||
printf("SDMMC device %d not implemented\n", peripheral);
|
debug("SDMMC device %d not implemented\n", peripheral);
|
||||||
return -1;
|
return -1;
|
||||||
default:
|
default:
|
||||||
debug("%s: invalid peripheral %d", __func__, peripheral);
|
debug("%s: invalid peripheral %d", __func__, peripheral);
|
||||||
|
@ -10,8 +10,11 @@
|
|||||||
#include <asm/arch/clock.h>
|
#include <asm/arch/clock.h>
|
||||||
#include <asm/arch/clk.h>
|
#include <asm/arch/clk.h>
|
||||||
#include <asm/arch/dmc.h>
|
#include <asm/arch/dmc.h>
|
||||||
|
#include <asm/arch/periph.h>
|
||||||
|
#include <asm/arch/pinmux.h>
|
||||||
#include <asm/arch/power.h>
|
#include <asm/arch/power.h>
|
||||||
#include <asm/arch/spl.h>
|
#include <asm/arch/spl.h>
|
||||||
|
#include <asm/arch/spi.h>
|
||||||
|
|
||||||
#include "common_setup.h"
|
#include "common_setup.h"
|
||||||
#include "clock_init.h"
|
#include "clock_init.h"
|
||||||
@ -59,6 +62,121 @@ static int config_branch_prediction(int set_cr_z)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_SPI_BOOTING
|
||||||
|
static void spi_rx_tx(struct exynos_spi *regs, int todo,
|
||||||
|
void *dinp, void const *doutp, int i)
|
||||||
|
{
|
||||||
|
uint *rxp = (uint *)(dinp + (i * (32 * 1024)));
|
||||||
|
int rx_lvl, tx_lvl;
|
||||||
|
uint out_bytes, in_bytes;
|
||||||
|
|
||||||
|
out_bytes = todo;
|
||||||
|
in_bytes = todo;
|
||||||
|
setbits_le32(®s->ch_cfg, SPI_CH_RST);
|
||||||
|
clrbits_le32(®s->ch_cfg, SPI_CH_RST);
|
||||||
|
writel(((todo * 8) / 32) | SPI_PACKET_CNT_EN, ®s->pkt_cnt);
|
||||||
|
|
||||||
|
while (in_bytes) {
|
||||||
|
uint32_t spi_sts;
|
||||||
|
int temp;
|
||||||
|
|
||||||
|
spi_sts = readl(®s->spi_sts);
|
||||||
|
rx_lvl = ((spi_sts >> 15) & 0x7f);
|
||||||
|
tx_lvl = ((spi_sts >> 6) & 0x7f);
|
||||||
|
while (tx_lvl < 32 && out_bytes) {
|
||||||
|
temp = 0xffffffff;
|
||||||
|
writel(temp, ®s->tx_data);
|
||||||
|
out_bytes -= 4;
|
||||||
|
tx_lvl += 4;
|
||||||
|
}
|
||||||
|
while (rx_lvl >= 4 && in_bytes) {
|
||||||
|
temp = readl(®s->rx_data);
|
||||||
|
if (rxp)
|
||||||
|
*rxp++ = temp;
|
||||||
|
in_bytes -= 4;
|
||||||
|
rx_lvl -= 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copy uboot from spi flash to RAM
|
||||||
|
*
|
||||||
|
* @parma uboot_size size of u-boot to copy
|
||||||
|
* @param uboot_addr address in u-boot to copy
|
||||||
|
*/
|
||||||
|
static void exynos_spi_copy(unsigned int uboot_size, unsigned int uboot_addr)
|
||||||
|
{
|
||||||
|
int upto, todo;
|
||||||
|
int i, timeout = 100;
|
||||||
|
struct exynos_spi *regs = (struct exynos_spi *)CONFIG_ENV_SPI_BASE;
|
||||||
|
|
||||||
|
set_spi_clk(PERIPH_ID_SPI1, 50000000); /* set spi clock to 50Mhz */
|
||||||
|
/* set the spi1 GPIO */
|
||||||
|
exynos_pinmux_config(PERIPH_ID_SPI1, PINMUX_FLAG_NONE);
|
||||||
|
|
||||||
|
/* set pktcnt and enable it */
|
||||||
|
writel(4 | SPI_PACKET_CNT_EN, ®s->pkt_cnt);
|
||||||
|
/* set FB_CLK_SEL */
|
||||||
|
writel(SPI_FB_DELAY_180, ®s->fb_clk);
|
||||||
|
/* set CH_WIDTH and BUS_WIDTH as word */
|
||||||
|
setbits_le32(®s->mode_cfg, SPI_MODE_CH_WIDTH_WORD |
|
||||||
|
SPI_MODE_BUS_WIDTH_WORD);
|
||||||
|
clrbits_le32(®s->ch_cfg, SPI_CH_CPOL_L); /* CPOL: active high */
|
||||||
|
|
||||||
|
/* clear rx and tx channel if set priveously */
|
||||||
|
clrbits_le32(®s->ch_cfg, SPI_RX_CH_ON | SPI_TX_CH_ON);
|
||||||
|
|
||||||
|
setbits_le32(®s->swap_cfg, SPI_RX_SWAP_EN |
|
||||||
|
SPI_RX_BYTE_SWAP |
|
||||||
|
SPI_RX_HWORD_SWAP);
|
||||||
|
|
||||||
|
/* do a soft reset */
|
||||||
|
setbits_le32(®s->ch_cfg, SPI_CH_RST);
|
||||||
|
clrbits_le32(®s->ch_cfg, SPI_CH_RST);
|
||||||
|
|
||||||
|
/* now set rx and tx channel ON */
|
||||||
|
setbits_le32(®s->ch_cfg, SPI_RX_CH_ON | SPI_TX_CH_ON | SPI_CH_HS_EN);
|
||||||
|
clrbits_le32(®s->cs_reg, SPI_SLAVE_SIG_INACT); /* CS low */
|
||||||
|
|
||||||
|
/* Send read instruction (0x3h) followed by a 24 bit addr */
|
||||||
|
writel((SF_READ_DATA_CMD << 24) | SPI_FLASH_UBOOT_POS, ®s->tx_data);
|
||||||
|
|
||||||
|
/* waiting for TX done */
|
||||||
|
while (!(readl(®s->spi_sts) & SPI_ST_TX_DONE)) {
|
||||||
|
if (!timeout) {
|
||||||
|
debug("SPI TIMEOUT\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
timeout--;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (upto = 0, i = 0; upto < uboot_size; upto += todo, i++) {
|
||||||
|
todo = min(uboot_size - upto, (1 << 15));
|
||||||
|
spi_rx_tx(regs, todo, (void *)(uboot_addr),
|
||||||
|
(void *)(SPI_FLASH_UBOOT_POS), i);
|
||||||
|
}
|
||||||
|
|
||||||
|
setbits_le32(®s->cs_reg, SPI_SLAVE_SIG_INACT);/* make the CS high */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Let put controller mode to BYTE as
|
||||||
|
* SPI driver does not support WORD mode yet
|
||||||
|
*/
|
||||||
|
clrbits_le32(®s->mode_cfg, SPI_MODE_CH_WIDTH_WORD |
|
||||||
|
SPI_MODE_BUS_WIDTH_WORD);
|
||||||
|
writel(0, ®s->swap_cfg);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Flush spi tx, rx fifos and reset the SPI controller
|
||||||
|
* and clear rx/tx channel
|
||||||
|
*/
|
||||||
|
clrsetbits_le32(®s->ch_cfg, SPI_CH_HS_EN, SPI_CH_RST);
|
||||||
|
clrbits_le32(®s->ch_cfg, SPI_CH_RST);
|
||||||
|
clrbits_le32(®s->ch_cfg, SPI_TX_CH_ON | SPI_RX_CH_ON);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copy U-boot from mmc to RAM:
|
* Copy U-boot from mmc to RAM:
|
||||||
* COPY_BL2_FNPTR_ADDR: Address in iRAM, which Contains
|
* COPY_BL2_FNPTR_ADDR: Address in iRAM, which Contains
|
||||||
@ -70,6 +188,9 @@ void copy_uboot_to_ram(void)
|
|||||||
|
|
||||||
u32 (*copy_bl2)(u32 offset, u32 nblock, u32 dst) = NULL;
|
u32 (*copy_bl2)(u32 offset, u32 nblock, u32 dst) = NULL;
|
||||||
u32 offset = 0, size = 0;
|
u32 offset = 0, size = 0;
|
||||||
|
#ifdef CONFIG_SPI_BOOTING
|
||||||
|
struct spl_machine_param *param = spl_get_machine_params();
|
||||||
|
#endif
|
||||||
#ifdef CONFIG_SUPPORT_EMMC_BOOT
|
#ifdef CONFIG_SUPPORT_EMMC_BOOT
|
||||||
u32 (*copy_bl2_from_emmc)(u32 nblock, u32 dst);
|
u32 (*copy_bl2_from_emmc)(u32 nblock, u32 dst);
|
||||||
void (*end_bootop_from_emmc)(void);
|
void (*end_bootop_from_emmc)(void);
|
||||||
@ -91,9 +212,8 @@ void copy_uboot_to_ram(void)
|
|||||||
switch (bootmode) {
|
switch (bootmode) {
|
||||||
#ifdef CONFIG_SPI_BOOTING
|
#ifdef CONFIG_SPI_BOOTING
|
||||||
case BOOT_MODE_SERIAL:
|
case BOOT_MODE_SERIAL:
|
||||||
offset = SPI_FLASH_UBOOT_POS;
|
/* Customised function to copy u-boot from SF */
|
||||||
size = CONFIG_BL2_SIZE;
|
exynos_spi_copy(param->uboot_size, CONFIG_SYS_TEXT_BASE);
|
||||||
copy_bl2 = get_irom_func(SPI_INDEX);
|
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case BOOT_MODE_MMC:
|
case BOOT_MODE_MMC:
|
||||||
|
@ -6,10 +6,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#define DWMCI_CLKSEL 0x09C
|
#define DWMCI_CLKSEL 0x09C
|
||||||
#define DWMCI_SHIFT_0 0x0
|
|
||||||
#define DWMCI_SHIFT_1 0x1
|
|
||||||
#define DWMCI_SHIFT_2 0x2
|
|
||||||
#define DWMCI_SHIFT_3 0x3
|
|
||||||
#define DWMCI_SET_SAMPLE_CLK(x) (x)
|
#define DWMCI_SET_SAMPLE_CLK(x) (x)
|
||||||
#define DWMCI_SET_DRV_CLK(x) ((x) << 16)
|
#define DWMCI_SET_DRV_CLK(x) ((x) << 16)
|
||||||
#define DWMCI_SET_DIV_RATIO(x) ((x) << 24)
|
#define DWMCI_SET_DIV_RATIO(x) ((x) << 24)
|
||||||
|
@ -55,7 +55,7 @@
|
|||||||
|
|
||||||
int s5p_sdhci_init(u32 regbase, int index, int bus_width);
|
int s5p_sdhci_init(u32 regbase, int index, int bus_width);
|
||||||
|
|
||||||
static inline unsigned int s5p_mmc_init(int index, int bus_width)
|
static inline int s5p_mmc_init(int index, int bus_width)
|
||||||
{
|
{
|
||||||
unsigned int base = samsung_get_base_mmc() +
|
unsigned int base = samsung_get_base_mmc() +
|
||||||
(S5P_MMC_DEV_OFFSET * index);
|
(S5P_MMC_DEV_OFFSET * index);
|
||||||
|
@ -16,7 +16,7 @@ struct exynos4_power {
|
|||||||
unsigned int gnss_rtc_out_ctrl;
|
unsigned int gnss_rtc_out_ctrl;
|
||||||
unsigned char res2[0x1ec];
|
unsigned char res2[0x1ec];
|
||||||
unsigned int system_power_down_ctrl;
|
unsigned int system_power_down_ctrl;
|
||||||
unsigned char res3[0x1];
|
unsigned int res3;
|
||||||
unsigned int system_power_down_option;
|
unsigned int system_power_down_option;
|
||||||
unsigned char res4[0x1f4];
|
unsigned char res4[0x1f4];
|
||||||
unsigned int swreset;
|
unsigned int swreset;
|
||||||
|
@ -30,6 +30,7 @@ struct exynos_spi {
|
|||||||
#define EXYNOS_SPI_MAX_FREQ 50000000
|
#define EXYNOS_SPI_MAX_FREQ 50000000
|
||||||
|
|
||||||
#define SPI_TIMEOUT_MS 10
|
#define SPI_TIMEOUT_MS 10
|
||||||
|
#define SF_READ_DATA_CMD 0x3
|
||||||
|
|
||||||
/* SPI_CHCFG */
|
/* SPI_CHCFG */
|
||||||
#define SPI_CH_HS_EN (1 << 6)
|
#define SPI_CH_HS_EN (1 << 6)
|
||||||
|
@ -55,7 +55,7 @@
|
|||||||
|
|
||||||
int s5p_sdhci_init(u32 regbase, int index, int bus_width);
|
int s5p_sdhci_init(u32 regbase, int index, int bus_width);
|
||||||
|
|
||||||
static inline unsigned int s5p_mmc_init(int index, int bus_width)
|
static inline int s5p_mmc_init(int index, int bus_width)
|
||||||
{
|
{
|
||||||
unsigned int base = samsung_get_base_mmc() +
|
unsigned int base = samsung_get_base_mmc() +
|
||||||
(S5P_MMC_DEV_OFFSET * index);
|
(S5P_MMC_DEV_OFFSET * index);
|
||||||
|
@ -501,6 +501,17 @@ int board_usb_init(int index, enum usb_init_type init)
|
|||||||
debug("USB_udc_probe\n");
|
debug("USB_udc_probe\n");
|
||||||
return s3c_udc_probe(&s5pc210_otg_data);
|
return s3c_udc_probe(&s5pc210_otg_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_USB_CABLE_CHECK
|
||||||
|
int usb_cable_connected(void)
|
||||||
|
{
|
||||||
|
struct pmic *muic = pmic_get("MAX8997_MUIC");
|
||||||
|
if (!muic)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return !!muic->chrg->chrg_type(muic);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void pmic_reset(void)
|
static void pmic_reset(void)
|
||||||
|
@ -25,6 +25,9 @@
|
|||||||
#include <power/max77693_fg.h>
|
#include <power/max77693_fg.h>
|
||||||
#include <libtizen.h>
|
#include <libtizen.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <usb.h>
|
||||||
|
#include <usb/s3c_udc.h>
|
||||||
|
#include <usb_mass_storage.h>
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
@ -40,7 +43,7 @@ static void check_hw_revision(void)
|
|||||||
int modelrev = 0;
|
int modelrev = 0;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
gpio2 = (struct exynos4x12_gpio_part2 *)EXYNOS4X12_GPIO_PART2_BASE;
|
gpio2 = (struct exynos4x12_gpio_part2 *)samsung_get_base_gpio_part2();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* GPM1[1:0]: MODEL_REV[1:0]
|
* GPM1[1:0]: MODEL_REV[1:0]
|
||||||
@ -90,7 +93,7 @@ static inline u32 get_model_rev(void)
|
|||||||
|
|
||||||
static void board_external_gpio_init(void)
|
static void board_external_gpio_init(void)
|
||||||
{
|
{
|
||||||
gpio2 = (struct exynos4x12_gpio_part2 *)EXYNOS4X12_GPIO_PART2_BASE;
|
gpio2 = (struct exynos4x12_gpio_part2 *)samsung_get_base_gpio_part2();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* some pins which in alive block are connected with external pull-up
|
* some pins which in alive block are connected with external pull-up
|
||||||
@ -115,8 +118,8 @@ static void board_external_gpio_init(void)
|
|||||||
#ifdef CONFIG_SYS_I2C_INIT_BOARD
|
#ifdef CONFIG_SYS_I2C_INIT_BOARD
|
||||||
static void board_init_i2c(void)
|
static void board_init_i2c(void)
|
||||||
{
|
{
|
||||||
gpio1 = (struct exynos4x12_gpio_part1 *)EXYNOS4X12_GPIO_PART1_BASE;
|
gpio1 = (struct exynos4x12_gpio_part1 *)samsung_get_base_gpio_part1();
|
||||||
gpio2 = (struct exynos4x12_gpio_part2 *)EXYNOS4X12_GPIO_PART2_BASE;
|
gpio2 = (struct exynos4x12_gpio_part2 *)samsung_get_base_gpio_part2();
|
||||||
|
|
||||||
/* I2C_7 */
|
/* I2C_7 */
|
||||||
s5p_gpio_direction_output(&gpio1->d0, 2, 1);
|
s5p_gpio_direction_output(&gpio1->d0, 2, 1);
|
||||||
@ -147,7 +150,7 @@ static int pmic_init_max77686(void);
|
|||||||
int board_init(void)
|
int board_init(void)
|
||||||
{
|
{
|
||||||
struct exynos4_power *pwr =
|
struct exynos4_power *pwr =
|
||||||
(struct exynos4_power *)EXYNOS4X12_POWER_BASE;
|
(struct exynos4_power *)samsung_get_base_power();
|
||||||
|
|
||||||
gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
|
gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
|
||||||
|
|
||||||
@ -254,7 +257,7 @@ int board_mmc_init(bd_t *bis)
|
|||||||
{
|
{
|
||||||
int err0, err2 = 0;
|
int err0, err2 = 0;
|
||||||
|
|
||||||
gpio2 = (struct exynos4x12_gpio_part2 *)EXYNOS4X12_GPIO_PART2_BASE;
|
gpio2 = (struct exynos4x12_gpio_part2 *)samsung_get_base_gpio_part2();
|
||||||
|
|
||||||
/* eMMC_EN: SD_0_CDn: GPK0[2] Output High */
|
/* eMMC_EN: SD_0_CDn: GPK0[2] Output High */
|
||||||
s5p_gpio_direction_output(&gpio2->k0, 2, 1);
|
s5p_gpio_direction_output(&gpio2->k0, 2, 1);
|
||||||
@ -308,6 +311,95 @@ int board_mmc_init(bd_t *bis)
|
|||||||
return err0 & err2;
|
return err0 & err2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_USB_GADGET
|
||||||
|
static int s5pc210_phy_control(int on)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
unsigned int val;
|
||||||
|
struct pmic *p, *p_pmic, *p_muic;
|
||||||
|
|
||||||
|
p_pmic = pmic_get("MAX77686_PMIC");
|
||||||
|
if (!p_pmic)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
if (pmic_probe(p_pmic))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
p_muic = pmic_get("MAX77693_MUIC");
|
||||||
|
if (!p_muic)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
if (pmic_probe(p_muic))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (on) {
|
||||||
|
ret = max77686_set_ldo_mode(p_pmic, 12, OPMODE_ON);
|
||||||
|
if (ret)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
p = pmic_get("MAX77693_PMIC");
|
||||||
|
if (!p)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
if (pmic_probe(p))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
/* SAFEOUT */
|
||||||
|
ret = pmic_reg_read(p, MAX77693_SAFEOUT, &val);
|
||||||
|
if (ret)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
val |= MAX77693_ENSAFEOUT1;
|
||||||
|
ret = pmic_reg_write(p, MAX77693_SAFEOUT, val);
|
||||||
|
if (ret)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
/* PATH: USB */
|
||||||
|
ret = pmic_reg_write(p_muic, MAX77693_MUIC_CONTROL1,
|
||||||
|
MAX77693_MUIC_CTRL1_DN1DP2);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
ret = max77686_set_ldo_mode(p_pmic, 12, OPMODE_LPM);
|
||||||
|
if (ret)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
/* PATH: UART */
|
||||||
|
ret = pmic_reg_write(p_muic, MAX77693_MUIC_CONTROL1,
|
||||||
|
MAX77693_MUIC_CTRL1_UT1UR2);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ret)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct s3c_plat_otg_data s5pc210_otg_data = {
|
||||||
|
.phy_control = s5pc210_phy_control,
|
||||||
|
.regs_phy = EXYNOS4X12_USBPHY_BASE,
|
||||||
|
.regs_otg = EXYNOS4X12_USBOTG_BASE,
|
||||||
|
.usb_phy_ctrl = EXYNOS4X12_USBPHY_CONTROL,
|
||||||
|
.usb_flags = PHY0_SLEEP,
|
||||||
|
};
|
||||||
|
|
||||||
|
int board_usb_init(int index, enum usb_init_type init)
|
||||||
|
{
|
||||||
|
debug("USB_udc_probe\n");
|
||||||
|
return s3c_udc_probe(&s5pc210_otg_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_USB_CABLE_CHECK
|
||||||
|
int usb_cable_connected(void)
|
||||||
|
{
|
||||||
|
struct pmic *muic = pmic_get("MAX77693_MUIC");
|
||||||
|
if (!muic)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return !!muic->chrg->chrg_type(muic);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
static int pmic_init_max77686(void)
|
static int pmic_init_max77686(void)
|
||||||
{
|
{
|
||||||
struct pmic *p = pmic_get("MAX77686_PMIC");
|
struct pmic *p = pmic_get("MAX77686_PMIC");
|
||||||
@ -421,7 +513,7 @@ void exynos_lcd_power_on(void)
|
|||||||
{
|
{
|
||||||
struct pmic *p = pmic_get("MAX77686_PMIC");
|
struct pmic *p = pmic_get("MAX77686_PMIC");
|
||||||
|
|
||||||
gpio1 = (struct exynos4x12_gpio_part1 *)EXYNOS4X12_GPIO_PART1_BASE;
|
gpio1 = (struct exynos4x12_gpio_part1 *)samsung_get_base_gpio_part1();
|
||||||
|
|
||||||
/* LCD_2.2V_EN: GPC0[1] */
|
/* LCD_2.2V_EN: GPC0[1] */
|
||||||
s5p_gpio_set_pull(&gpio1->c0, 1, GPIO_PULL_UP);
|
s5p_gpio_set_pull(&gpio1->c0, 1, GPIO_PULL_UP);
|
||||||
@ -435,7 +527,7 @@ void exynos_lcd_power_on(void)
|
|||||||
|
|
||||||
void exynos_reset_lcd(void)
|
void exynos_reset_lcd(void)
|
||||||
{
|
{
|
||||||
gpio1 = (struct exynos4x12_gpio_part1 *)EXYNOS4X12_GPIO_PART1_BASE;
|
gpio1 = (struct exynos4x12_gpio_part1 *)samsung_get_base_gpio_part1();
|
||||||
|
|
||||||
/* reset lcd */
|
/* reset lcd */
|
||||||
s5p_gpio_direction_output(&gpio1->f2, 1, 0);
|
s5p_gpio_direction_output(&gpio1->f2, 1, 0);
|
||||||
|
@ -226,6 +226,11 @@ struct s3c_usbotg_reg {
|
|||||||
#define CLK_SEL_12MHZ (0x2 << 0)
|
#define CLK_SEL_12MHZ (0x2 << 0)
|
||||||
#define CLK_SEL_48MHZ (0x0 << 0)
|
#define CLK_SEL_48MHZ (0x0 << 0)
|
||||||
|
|
||||||
|
#define EXYNOS4X12_ID_PULLUP0 (0x01 << 3)
|
||||||
|
#define EXYNOS4X12_COMMON_ON_N0 (0x01 << 4)
|
||||||
|
#define EXYNOS4X12_CLK_SEL_12MHZ (0x02 << 0)
|
||||||
|
#define EXYNOS4X12_CLK_SEL_24MHZ (0x05 << 0)
|
||||||
|
|
||||||
/* Device Configuration Register DCFG */
|
/* Device Configuration Register DCFG */
|
||||||
#define DEV_SPEED_HIGH_SPEED_20 (0x0 << 0)
|
#define DEV_SPEED_HIGH_SPEED_20 (0x0 << 0)
|
||||||
#define DEV_SPEED_FULL_SPEED_20 (0x1 << 0)
|
#define DEV_SPEED_FULL_SPEED_20 (0x1 << 0)
|
||||||
|
@ -167,8 +167,13 @@ void otg_phy_init(struct s3c_udc *dev)
|
|||||||
writel((readl(&phy->phypwr) &~(OTG_DISABLE_0 | ANALOG_PWRDOWN)
|
writel((readl(&phy->phypwr) &~(OTG_DISABLE_0 | ANALOG_PWRDOWN)
|
||||||
&~FORCE_SUSPEND_0), &phy->phypwr);
|
&~FORCE_SUSPEND_0), &phy->phypwr);
|
||||||
|
|
||||||
writel((readl(&phy->phyclk) &~(ID_PULLUP0 | COMMON_ON_N0)) |
|
if (s5p_cpu_id == 0x4412)
|
||||||
CLK_SEL_24MHZ, &phy->phyclk); /* PLL 24Mhz */
|
writel((readl(&phy->phyclk) & ~(EXYNOS4X12_ID_PULLUP0 |
|
||||||
|
EXYNOS4X12_COMMON_ON_N0)) | EXYNOS4X12_CLK_SEL_24MHZ,
|
||||||
|
&phy->phyclk); /* PLL 24Mhz */
|
||||||
|
else
|
||||||
|
writel((readl(&phy->phyclk) & ~(ID_PULLUP0 | COMMON_ON_N0)) |
|
||||||
|
CLK_SEL_24MHZ, &phy->phyclk); /* PLL 24Mhz */
|
||||||
|
|
||||||
writel((readl(&phy->rstcon) &~(LINK_SW_RST | PHYLNK_SW_RST))
|
writel((readl(&phy->rstcon) &~(LINK_SW_RST | PHYLNK_SW_RST))
|
||||||
| PHY_SW_RST0, &phy->rstcon);
|
| PHY_SW_RST0, &phy->rstcon);
|
||||||
|
@ -198,10 +198,6 @@
|
|||||||
#define BL2_START_OFFSET (CONFIG_BL2_OFFSET/512)
|
#define BL2_START_OFFSET (CONFIG_BL2_OFFSET/512)
|
||||||
#define BL2_SIZE_BLOC_COUNT (CONFIG_BL2_SIZE/512)
|
#define BL2_SIZE_BLOC_COUNT (CONFIG_BL2_SIZE/512)
|
||||||
|
|
||||||
#define CONFIG_SPI_BOOTING
|
|
||||||
#define EXYNOS_COPY_SPI_FNPTR_ADDR 0x02020058
|
|
||||||
#define SPI_FLASH_UBOOT_POS (CONFIG_SEC_FW_SIZE + CONFIG_BL1_SIZE)
|
|
||||||
|
|
||||||
#define CONFIG_DOS_PARTITION
|
#define CONFIG_DOS_PARTITION
|
||||||
#define CONFIG_EFI_PARTITION
|
#define CONFIG_EFI_PARTITION
|
||||||
#define CONFIG_CMD_PART
|
#define CONFIG_CMD_PART
|
||||||
|
@ -157,6 +157,7 @@
|
|||||||
#define COPY_BL2_FNPTR_ADDR 0x02020030
|
#define COPY_BL2_FNPTR_ADDR 0x02020030
|
||||||
|
|
||||||
#define CONFIG_SPL_LIBCOMMON_SUPPORT
|
#define CONFIG_SPL_LIBCOMMON_SUPPORT
|
||||||
|
#define CONFIG_SPL_GPIO_SUPPORT
|
||||||
|
|
||||||
/* specific .lds file */
|
/* specific .lds file */
|
||||||
#define CONFIG_SPL_LDSCRIPT "board/samsung/common/exynos-uboot-spl.lds"
|
#define CONFIG_SPL_LDSCRIPT "board/samsung/common/exynos-uboot-spl.lds"
|
||||||
@ -255,7 +256,7 @@
|
|||||||
#define CONFIG_DRIVER_S3C24X0_I2C
|
#define CONFIG_DRIVER_S3C24X0_I2C
|
||||||
#define CONFIG_I2C_MULTI_BUS
|
#define CONFIG_I2C_MULTI_BUS
|
||||||
#define CONFIG_MAX_I2C_NUM 8
|
#define CONFIG_MAX_I2C_NUM 8
|
||||||
#define CONFIG_SYS_I2C_SLAVE 0x0
|
#define CONFIG_SYS_I2C_SLAVE 0x0
|
||||||
#define CONFIG_I2C_EDID
|
#define CONFIG_I2C_EDID
|
||||||
|
|
||||||
/* PMIC */
|
/* PMIC */
|
||||||
@ -266,6 +267,7 @@
|
|||||||
/* SPI */
|
/* SPI */
|
||||||
#define CONFIG_ENV_IS_IN_SPI_FLASH
|
#define CONFIG_ENV_IS_IN_SPI_FLASH
|
||||||
#define CONFIG_SPI_FLASH
|
#define CONFIG_SPI_FLASH
|
||||||
|
#define CONFIG_ENV_SPI_BASE 0x12D30000
|
||||||
|
|
||||||
#ifdef CONFIG_SPI_FLASH
|
#ifdef CONFIG_SPI_FLASH
|
||||||
#define CONFIG_EXYNOS_SPI
|
#define CONFIG_EXYNOS_SPI
|
||||||
@ -290,27 +292,6 @@
|
|||||||
#define CONFIG_POWER_I2C
|
#define CONFIG_POWER_I2C
|
||||||
#define CONFIG_POWER_MAX77686
|
#define CONFIG_POWER_MAX77686
|
||||||
|
|
||||||
/* SPI */
|
|
||||||
#define CONFIG_ENV_IS_IN_SPI_FLASH
|
|
||||||
#define CONFIG_SPI_FLASH
|
|
||||||
|
|
||||||
#ifdef CONFIG_SPI_FLASH
|
|
||||||
#define CONFIG_EXYNOS_SPI
|
|
||||||
#define CONFIG_CMD_SF
|
|
||||||
#define CONFIG_CMD_SPI
|
|
||||||
#define CONFIG_SPI_FLASH_WINBOND
|
|
||||||
#define CONFIG_SF_DEFAULT_MODE SPI_MODE_0
|
|
||||||
#define CONFIG_SF_DEFAULT_SPEED 50000000
|
|
||||||
#define EXYNOS5_SPI_NUM_CONTROLLERS 5
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_ENV_IS_IN_SPI_FLASH
|
|
||||||
#define CONFIG_ENV_SPI_MODE SPI_MODE_0
|
|
||||||
#define CONFIG_ENV_SECT_SIZE CONFIG_ENV_SIZE
|
|
||||||
#define CONFIG_ENV_SPI_BUS 1
|
|
||||||
#define CONFIG_ENV_SPI_MAX_HZ 50000000
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Ethernet Controllor Driver */
|
/* Ethernet Controllor Driver */
|
||||||
#ifdef CONFIG_CMD_NET
|
#ifdef CONFIG_CMD_NET
|
||||||
#define CONFIG_SMC911X
|
#define CONFIG_SMC911X
|
||||||
|
@ -308,6 +308,7 @@
|
|||||||
#define CONFIG_USB_GADGET_S3C_UDC_OTG
|
#define CONFIG_USB_GADGET_S3C_UDC_OTG
|
||||||
#define CONFIG_USB_GADGET_DUALSPEED
|
#define CONFIG_USB_GADGET_DUALSPEED
|
||||||
#define CONFIG_USB_GADGET_VBUS_DRAW 2
|
#define CONFIG_USB_GADGET_VBUS_DRAW 2
|
||||||
|
#define CONFIG_USB_CABLE_CHECK
|
||||||
|
|
||||||
/* LCD */
|
/* LCD */
|
||||||
#define CONFIG_EXYNOS_FB
|
#define CONFIG_EXYNOS_FB
|
||||||
|
@ -20,8 +20,6 @@
|
|||||||
#define CONFIG_EXYNOS4 /* which is in a EXYNOS4XXX */
|
#define CONFIG_EXYNOS4 /* which is in a EXYNOS4XXX */
|
||||||
#define CONFIG_TIZEN /* TIZEN lib */
|
#define CONFIG_TIZEN /* TIZEN lib */
|
||||||
|
|
||||||
#define PLATFORM_NO_UNALIGNED
|
|
||||||
|
|
||||||
#include <asm/arch/cpu.h> /* get chip and board defs */
|
#include <asm/arch/cpu.h> /* get chip and board defs */
|
||||||
|
|
||||||
#define CONFIG_ARCH_CPU_INIT
|
#define CONFIG_ARCH_CPU_INIT
|
||||||
@ -65,10 +63,9 @@
|
|||||||
|
|
||||||
#define CONFIG_DISPLAY_CPUINFO
|
#define CONFIG_DISPLAY_CPUINFO
|
||||||
|
|
||||||
/*
|
#include <asm/sizes.h>
|
||||||
* Size of malloc() pool
|
/* Size of malloc() pool */
|
||||||
*/
|
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (80 * SZ_1M))
|
||||||
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (2 << 20))
|
|
||||||
|
|
||||||
/* select serial console configuration */
|
/* select serial console configuration */
|
||||||
#define CONFIG_SERIAL2
|
#define CONFIG_SERIAL2
|
||||||
@ -100,6 +97,7 @@
|
|||||||
#define CONFIG_CMD_CACHE
|
#define CONFIG_CMD_CACHE
|
||||||
#define CONFIG_CMD_I2C
|
#define CONFIG_CMD_I2C
|
||||||
#define CONFIG_CMD_MMC
|
#define CONFIG_CMD_MMC
|
||||||
|
#define CONFIG_CMD_DFU
|
||||||
#define CONFIG_CMD_GPT
|
#define CONFIG_CMD_GPT
|
||||||
#define CONFIG_CMD_PMIC
|
#define CONFIG_CMD_PMIC
|
||||||
|
|
||||||
@ -113,6 +111,23 @@
|
|||||||
#define CONFIG_CMD_EXT4
|
#define CONFIG_CMD_EXT4
|
||||||
#define CONFIG_CMD_EXT4_WRITE
|
#define CONFIG_CMD_EXT4_WRITE
|
||||||
|
|
||||||
|
/* USB Composite download gadget - g_dnl */
|
||||||
|
#define CONFIG_USBDOWNLOAD_GADGET
|
||||||
|
#define CONFIG_SYS_DFU_DATA_BUF_SIZE SZ_32M
|
||||||
|
#define CONFIG_DFU_FUNCTION
|
||||||
|
#define CONFIG_DFU_MMC
|
||||||
|
|
||||||
|
/* TIZEN THOR downloader support */
|
||||||
|
#define CONFIG_CMD_THOR_DOWNLOAD
|
||||||
|
#define CONFIG_THOR_FUNCTION
|
||||||
|
|
||||||
|
/* USB Samsung's IDs */
|
||||||
|
#define CONFIG_G_DNL_VENDOR_NUM 0x04E8
|
||||||
|
#define CONFIG_G_DNL_PRODUCT_NUM 0x6601
|
||||||
|
#define CONFIG_G_DNL_THOR_VENDOR_NUM CONFIG_G_DNL_VENDOR_NUM
|
||||||
|
#define CONFIG_G_DNL_THOR_PRODUCT_NUM 0x685D
|
||||||
|
#define CONFIG_G_DNL_MANUFACTURER "Samsung"
|
||||||
|
|
||||||
/* To use the TFTPBOOT over USB, Please enable the CONFIG_CMD_NET */
|
/* To use the TFTPBOOT over USB, Please enable the CONFIG_CMD_NET */
|
||||||
#undef CONFIG_CMD_NET
|
#undef CONFIG_CMD_NET
|
||||||
|
|
||||||
@ -136,25 +151,29 @@
|
|||||||
#define CONFIG_SYS_CONSOLE_IS_IN_ENV
|
#define CONFIG_SYS_CONSOLE_IS_IN_ENV
|
||||||
|
|
||||||
/* Tizen - partitions definitions */
|
/* Tizen - partitions definitions */
|
||||||
#define PARTS_CSA "csa-mmc"
|
#define PARTS_CSA "csa"
|
||||||
#define PARTS_BOOTLOADER "u-boot"
|
|
||||||
#define PARTS_BOOT "boot"
|
#define PARTS_BOOT "boot"
|
||||||
|
#define PARTS_MODEM "modem"
|
||||||
|
#define PARTS_CSC "csc"
|
||||||
#define PARTS_ROOT "platform"
|
#define PARTS_ROOT "platform"
|
||||||
#define PARTS_DATA "data"
|
#define PARTS_DATA "data"
|
||||||
#define PARTS_CSC "csc"
|
|
||||||
#define PARTS_UMS "ums"
|
#define PARTS_UMS "ums"
|
||||||
|
|
||||||
#define PARTS_DEFAULT \
|
#define PARTS_DEFAULT \
|
||||||
"uuid_disk=${uuid_gpt_disk};" \
|
"name="PARTS_CSA",start=5MiB,size=8MiB,uuid=${uuid_gpt_"PARTS_CSA"};" \
|
||||||
"name="PARTS_CSA",size=8MiB,uuid=${uuid_gpt_"PARTS_CSA"};" \
|
"name="PARTS_BOOT",size=64MiB,uuid=${uuid_gpt_"PARTS_BOOT"};" \
|
||||||
"name="PARTS_BOOTLOADER",size=60MiB," \
|
"name="PARTS_MODEM",size=100MiB,uuid=${uuid_gpt_"PARTS_MODEM"};" \
|
||||||
"uuid=${uuid_gpt_"PARTS_BOOTLOADER"};" \
|
|
||||||
"name="PARTS_BOOT",size=100MiB,uuid=${uuid_gpt_"PARTS_BOOT"};" \
|
|
||||||
"name="PARTS_ROOT",size=1GiB,uuid=${uuid_gpt_"PARTS_ROOT"};" \
|
|
||||||
"name="PARTS_DATA",size=3GiB,uuid=${uuid_gpt_"PARTS_DATA"};" \
|
|
||||||
"name="PARTS_CSC",size=150MiB,uuid=${uuid_gpt_"PARTS_CSC"};" \
|
"name="PARTS_CSC",size=150MiB,uuid=${uuid_gpt_"PARTS_CSC"};" \
|
||||||
|
"name="PARTS_ROOT",size=1536MiB,uuid=${uuid_gpt_"PARTS_ROOT"};" \
|
||||||
|
"name="PARTS_DATA",size=512MiB,uuid=${uuid_gpt_"PARTS_DATA"};" \
|
||||||
"name="PARTS_UMS",size=-,uuid=${uuid_gpt_"PARTS_UMS"}\0" \
|
"name="PARTS_UMS",size=-,uuid=${uuid_gpt_"PARTS_UMS"}\0" \
|
||||||
|
|
||||||
|
#define CONFIG_DFU_ALT \
|
||||||
|
"u-boot mmc 80 800;" \
|
||||||
|
"uImage ext4 0 2;" \
|
||||||
|
"exynos4412-trats2.dtb ext4 0 2;" \
|
||||||
|
""PARTS_ROOT" part 0 5\0"
|
||||||
|
|
||||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||||
"bootk=" \
|
"bootk=" \
|
||||||
"run loaddtb; run loaduimage; bootm 0x40007FC0 - ${fdtaddr}\0" \
|
"run loaddtb; run loaduimage; bootm 0x40007FC0 - ${fdtaddr}\0" \
|
||||||
@ -178,15 +197,16 @@
|
|||||||
"rootfstype=ext4\0" \
|
"rootfstype=ext4\0" \
|
||||||
"console=" CONFIG_DEFAULT_CONSOLE \
|
"console=" CONFIG_DEFAULT_CONSOLE \
|
||||||
"kernelname=uImage\0" \
|
"kernelname=uImage\0" \
|
||||||
"loaduimage=ext4load mmc ${mmcdev}:${mmcbootpart} 0x40007FC0 uImage\0" \
|
"loaduimage=ext4load mmc ${mmcdev}:${mmcbootpart} 0x40007FC0 " \
|
||||||
"0x40007FC0 ${kernelname}\0" \
|
"${kernelname}\0" \
|
||||||
"loaddtb=ext4load mmc ${mmcdev}:${mmcbootpart} ${fdtaddr} " \
|
"loaddtb=ext4load mmc ${mmcdev}:${mmcbootpart} ${fdtaddr} " \
|
||||||
"${fdtfile}\0" \
|
"${fdtfile}\0" \
|
||||||
"mmcdev=0\0" \
|
"mmcdev=CONFIG_MMC_DEFAULT_DEV\0" \
|
||||||
"mmcbootpart=2\0" \
|
"mmcbootpart=2\0" \
|
||||||
"mmcrootpart=5\0" \
|
"mmcrootpart=5\0" \
|
||||||
"opts=always_resume=1\0" \
|
"opts=always_resume=1\0" \
|
||||||
"partitions=" PARTS_DEFAULT \
|
"partitions=" PARTS_DEFAULT \
|
||||||
|
"dfu_alt_info=" CONFIG_DFU_ALT \
|
||||||
"uartpath=ap\0" \
|
"uartpath=ap\0" \
|
||||||
"usbpath=ap\0" \
|
"usbpath=ap\0" \
|
||||||
"consoleon=set console console=ttySAC2,115200n8; save; reset\0" \
|
"consoleon=set console console=ttySAC2,115200n8; save; reset\0" \
|
||||||
@ -233,8 +253,6 @@
|
|||||||
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_LOAD_ADDR \
|
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_LOAD_ADDR \
|
||||||
- GENERATED_GBL_DATA_SIZE)
|
- GENERATED_GBL_DATA_SIZE)
|
||||||
|
|
||||||
#define CONFIG_SYS_HZ 1000
|
|
||||||
|
|
||||||
/* valid baudrates */
|
/* valid baudrates */
|
||||||
#define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
|
#define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
|
||||||
|
|
||||||
@ -293,6 +311,11 @@
|
|||||||
#define CONFIG_POWER_MUIC_MAX77693
|
#define CONFIG_POWER_MUIC_MAX77693
|
||||||
#define CONFIG_POWER_FG_MAX77693
|
#define CONFIG_POWER_FG_MAX77693
|
||||||
#define CONFIG_POWER_BATTERY_TRATS2
|
#define CONFIG_POWER_BATTERY_TRATS2
|
||||||
|
#define CONFIG_USB_GADGET
|
||||||
|
#define CONFIG_USB_GADGET_S3C_UDC_OTG
|
||||||
|
#define CONFIG_USB_GADGET_DUALSPEED
|
||||||
|
#define CONFIG_USB_GADGET_VBUS_DRAW 2
|
||||||
|
#define CONFIG_USB_CABLE_CHECK
|
||||||
|
|
||||||
/* LCD */
|
/* LCD */
|
||||||
#define CONFIG_EXYNOS_FB
|
#define CONFIG_EXYNOS_FB
|
||||||
@ -305,6 +328,9 @@
|
|||||||
#define CONFIG_VIDEO_BMP_GZIP
|
#define CONFIG_VIDEO_BMP_GZIP
|
||||||
#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE ((500 * 250 * 4) + (1 << 12))
|
#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE ((500 * 250 * 4) + (1 << 12))
|
||||||
|
|
||||||
|
#define CONFIG_CMD_USB_MASS_STORAGE
|
||||||
|
#define CONFIG_USB_GADGET_MASS_STORAGE
|
||||||
|
|
||||||
/* Pass open firmware flat tree */
|
/* Pass open firmware flat tree */
|
||||||
#define CONFIG_OF_LIBFDT 1
|
#define CONFIG_OF_LIBFDT 1
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user