|
|
|
@ -14,13 +14,18 @@ |
|
|
|
|
#include <asm/arch/sys_proto.h> |
|
|
|
|
#include <asm/gpio.h> |
|
|
|
|
#include <asm/imx-common/iomux-v3.h> |
|
|
|
|
#include <asm/imx-common/mxc_i2c.h> |
|
|
|
|
#include <asm/io.h> |
|
|
|
|
#include <common.h> |
|
|
|
|
#include <miiphy.h> |
|
|
|
|
#include <netdev.h> |
|
|
|
|
#include <fsl_esdhc.h> |
|
|
|
|
#include <i2c.h> |
|
|
|
|
#include <linux/sizes.h> |
|
|
|
|
#include <usb.h> |
|
|
|
|
#include <power/pmic.h> |
|
|
|
|
#include <power/pfuze3000_pmic.h> |
|
|
|
|
#include "../../freescale/common/pfuze.h" |
|
|
|
|
|
|
|
|
|
DECLARE_GLOBAL_DATA_PTR; |
|
|
|
|
|
|
|
|
@ -32,6 +37,11 @@ DECLARE_GLOBAL_DATA_PTR; |
|
|
|
|
PAD_CTL_PUS_22K_UP | PAD_CTL_SPEED_LOW | \
|
|
|
|
|
PAD_CTL_DSE_80ohm | PAD_CTL_SRE_FAST | PAD_CTL_HYS) |
|
|
|
|
|
|
|
|
|
#define I2C_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE | \ |
|
|
|
|
PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \
|
|
|
|
|
PAD_CTL_DSE_40ohm | PAD_CTL_HYS | \
|
|
|
|
|
PAD_CTL_ODE) |
|
|
|
|
|
|
|
|
|
#define OTG_ID_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE | \ |
|
|
|
|
PAD_CTL_PUS_47K_UP | PAD_CTL_SPEED_LOW | \
|
|
|
|
|
PAD_CTL_DSE_80ohm | PAD_CTL_SRE_FAST | PAD_CTL_HYS) |
|
|
|
@ -47,6 +57,23 @@ DECLARE_GLOBAL_DATA_PTR; |
|
|
|
|
|
|
|
|
|
#define RMII_PHY_RESET IMX_GPIO_NR(1, 28) |
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_SYS_I2C_MXC |
|
|
|
|
#define PC MUX_PAD_CTRL(I2C_PAD_CTRL) |
|
|
|
|
/* I2C2 for PMIC */ |
|
|
|
|
struct i2c_pads_info i2c_pad_info1 = { |
|
|
|
|
.scl = { |
|
|
|
|
.i2c_mode = MX6_PAD_GPIO1_IO02__I2C1_SCL | PC, |
|
|
|
|
.gpio_mode = MX6_PAD_GPIO1_IO02__GPIO1_IO02 | PC, |
|
|
|
|
.gp = IMX_GPIO_NR(1, 2), |
|
|
|
|
}, |
|
|
|
|
.sda = { |
|
|
|
|
.i2c_mode = MX6_PAD_GPIO1_IO03__I2C1_SDA | PC, |
|
|
|
|
.gpio_mode = MX6_PAD_GPIO1_IO03__GPIO1_IO03 | PC, |
|
|
|
|
.gp = IMX_GPIO_NR(1, 3), |
|
|
|
|
}, |
|
|
|
|
}; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
static iomux_v3_cfg_t const fec_pads[] = { |
|
|
|
|
MX6_PAD_ENET1_TX_EN__ENET2_MDC | MUX_PAD_CTRL(MDIO_PAD_CTRL), |
|
|
|
|
MX6_PAD_ENET1_TX_DATA1__ENET2_MDIO | MUX_PAD_CTRL(MDIO_PAD_CTRL), |
|
|
|
@ -182,6 +209,45 @@ int board_early_init_f(void) |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_POWER |
|
|
|
|
#define I2C_PMIC 0 |
|
|
|
|
static struct pmic *pfuze; |
|
|
|
|
int power_init_board(void) |
|
|
|
|
{ |
|
|
|
|
int ret; |
|
|
|
|
unsigned int reg, rev_id; |
|
|
|
|
|
|
|
|
|
ret = power_pfuze3000_init(I2C_PMIC); |
|
|
|
|
if (ret) |
|
|
|
|
return ret; |
|
|
|
|
|
|
|
|
|
pfuze = pmic_get("PFUZE3000"); |
|
|
|
|
ret = pmic_probe(pfuze); |
|
|
|
|
if (ret) |
|
|
|
|
return ret; |
|
|
|
|
|
|
|
|
|
pmic_reg_read(pfuze, PFUZE3000_DEVICEID, ®); |
|
|
|
|
pmic_reg_read(pfuze, PFUZE3000_REVID, &rev_id); |
|
|
|
|
printf("PMIC: PFUZE3000 DEV_ID=0x%x REV_ID=0x%x\n", reg, rev_id); |
|
|
|
|
|
|
|
|
|
/* disable Low Power Mode during standby mode */ |
|
|
|
|
pmic_reg_read(pfuze, PFUZE3000_LDOGCTL, ®); |
|
|
|
|
reg |= 0x1; |
|
|
|
|
pmic_reg_write(pfuze, PFUZE3000_LDOGCTL, reg); |
|
|
|
|
|
|
|
|
|
/* SW1B step ramp up time from 2us to 4us/25mV */ |
|
|
|
|
pmic_reg_write(pfuze, PFUZE3000_SW1BCONF, 0x40); |
|
|
|
|
|
|
|
|
|
/* SW1B mode to APS/PFM */ |
|
|
|
|
pmic_reg_write(pfuze, PFUZE3000_SW1BMODE, 0xc); |
|
|
|
|
|
|
|
|
|
/* SW1B standby voltage set to 0.975V */ |
|
|
|
|
pmic_reg_write(pfuze, PFUZE3000_SW1BSTBY, 0xb); |
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
int board_usb_phy_mode(int port) |
|
|
|
|
{ |
|
|
|
|
if (port == 1) |
|
|
|
@ -211,6 +277,10 @@ int board_init(void) |
|
|
|
|
/* Address of boot parameters */ |
|
|
|
|
gd->bd->bi_boot_params = PHYS_SDRAM + 0x100; |
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_SYS_I2C_MXC |
|
|
|
|
setup_i2c(0, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
setup_fec(); |
|
|
|
|
setup_usb(); |
|
|
|
|
|
|
|
|
|