diff options
Diffstat (limited to 'recipes-bsp/u-boot/u-boot-v2012.04.01/0019-mx53loco-Add-support-for-1GHz-operation-for-DA9053-b.patch')
-rw-r--r-- | recipes-bsp/u-boot/u-boot-v2012.04.01/0019-mx53loco-Add-support-for-1GHz-operation-for-DA9053-b.patch | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/recipes-bsp/u-boot/u-boot-v2012.04.01/0019-mx53loco-Add-support-for-1GHz-operation-for-DA9053-b.patch b/recipes-bsp/u-boot/u-boot-v2012.04.01/0019-mx53loco-Add-support-for-1GHz-operation-for-DA9053-b.patch new file mode 100644 index 0000000..e9e2c1b --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-v2012.04.01/0019-mx53loco-Add-support-for-1GHz-operation-for-DA9053-b.patch @@ -0,0 +1,155 @@ +From f658ecfa1294ec653afde9deb6ebedb1fe7d1afd Mon Sep 17 00:00:00 2001 +From: Fabio Estevam <festevam@gmail.com> +Date: Mon, 30 Apr 2012 08:12:04 +0000 +Subject: [PATCH 19/56] mx53loco: Add support for 1GHz operation for + DA9053-based boards + +There are two types of mx53loco boards: initial boards were built with a Dialog +DA9053 PMIC and more recent version is based on a Freescale MC34708 PMIC. + +Add DA9053 PMIC support and adjust the required voltages and clocks for running +the CPU at 1GHz. + +Tested on both versions of mx53loco boards. + +In the case of a MC34708-based board the CPU operating voltage remains at 800MHz. + +Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> +Acked-by : Stefano Babic <sbabic@denx.de> +--- + board/freescale/mx53loco/mx53loco.c | 71 +++++++++++++++++++++++++++++++++++ + include/configs/mx53loco.h | 14 +++++++ + 2 files changed, 85 insertions(+) + +diff --git a/board/freescale/mx53loco/mx53loco.c b/board/freescale/mx53loco/mx53loco.c +index 46aaeb2..0dcec9b 100644 +--- a/board/freescale/mx53loco/mx53loco.c ++++ b/board/freescale/mx53loco/mx53loco.c +@@ -36,6 +36,8 @@ + #include <mmc.h> + #include <fsl_esdhc.h> + #include <asm/gpio.h> ++#include <pmic.h> ++#include <dialog_pmic.h> + + DECLARE_GLOBAL_DATA_PTR; + +@@ -291,6 +293,71 @@ int board_mmc_init(bd_t *bis) + } + #endif + ++static void setup_iomux_i2c(void) ++{ ++ /* I2C1 SDA */ ++ mxc_request_iomux(MX53_PIN_CSI0_D8, ++ IOMUX_CONFIG_ALT5 | IOMUX_CONFIG_SION); ++ mxc_iomux_set_input(MX53_I2C1_IPP_SDA_IN_SELECT_INPUT, ++ INPUT_CTL_PATH0); ++ mxc_iomux_set_pad(MX53_PIN_CSI0_D8, ++ PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | ++ PAD_CTL_100K_PU | PAD_CTL_PKE_ENABLE | ++ PAD_CTL_PUE_PULL | ++ PAD_CTL_ODE_OPENDRAIN_ENABLE); ++ /* I2C1 SCL */ ++ mxc_request_iomux(MX53_PIN_CSI0_D9, ++ IOMUX_CONFIG_ALT5 | IOMUX_CONFIG_SION); ++ mxc_iomux_set_input(MX53_I2C1_IPP_SCL_IN_SELECT_INPUT, ++ INPUT_CTL_PATH0); ++ mxc_iomux_set_pad(MX53_PIN_CSI0_D9, ++ PAD_CTL_SRE_FAST | PAD_CTL_DRV_HIGH | ++ PAD_CTL_100K_PU | PAD_CTL_PKE_ENABLE | ++ PAD_CTL_PUE_PULL | ++ PAD_CTL_ODE_OPENDRAIN_ENABLE); ++} ++ ++static int power_init(void) ++{ ++ unsigned int val, ret; ++ struct pmic *p; ++ ++ pmic_init(); ++ p = get_pmic(); ++ ++ /* Set VDDA to 1.25V */ ++ val = DA9052_BUCKCORE_BCOREEN | DA_BUCKCORE_VBCORE_1_250V; ++ ret = pmic_reg_write(p, DA9053_BUCKCORE_REG, val); ++ ++ ret |= pmic_reg_read(p, DA9053_SUPPLY_REG, &val); ++ val |= DA9052_SUPPLY_VBCOREGO; ++ ret |= pmic_reg_write(p, DA9053_SUPPLY_REG, val); ++ ++ /* Set Vcc peripheral to 1.35V */ ++ ret |= pmic_reg_write(p, DA9053_BUCKPRO_REG, 0x62); ++ ret |= pmic_reg_write(p, DA9053_SUPPLY_REG, 0x62); ++ ++ return ret; ++} ++ ++static void clock_1GHz(void) ++{ ++ int ret; ++ u32 ref_clk = CONFIG_SYS_MX5_HCLK; ++ /* ++ * After increasing voltage to 1.25V, we can switch ++ * CPU clock to 1GHz and DDR to 400MHz safely ++ */ ++ ret = mxc_set_clock(ref_clk, 1000, MXC_ARM_CLK); ++ if (ret) ++ printf("CPU: Switch CPU clock to 1GHZ failed\n"); ++ ++ ret = mxc_set_clock(ref_clk, 400, MXC_PERIPH_CLK); ++ ret |= mxc_set_clock(ref_clk, 400, MXC_DDR_CLK); ++ if (ret) ++ printf("CPU: Switch DDR clock to 400MHz failed\n"); ++} ++ + int board_early_init_f(void) + { + setup_iomux_uart(); +@@ -316,7 +383,11 @@ int print_cpuinfo(void) + #ifdef CONFIG_BOARD_LATE_INIT + int board_late_init(void) + { ++ setup_iomux_i2c(); ++ if (!power_init()) ++ clock_1GHz(); + print_cpuinfo(); ++ + return 0; + } + #endif +diff --git a/include/configs/mx53loco.h b/include/configs/mx53loco.h +index 0778bde..8f43eec 100644 +--- a/include/configs/mx53loco.h ++++ b/include/configs/mx53loco.h +@@ -41,6 +41,7 @@ + #define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 2 * 1024 * 1024) + + #define CONFIG_BOARD_EARLY_INIT_F ++#define CONFIG_BOARD_LATE_INIT + #define CONFIG_MXC_GPIO + + #define CONFIG_MXC_UART +@@ -85,6 +86,19 @@ + #define CONFIG_MXC_USB_PORTSC (PORT_PTS_UTMI | PORT_PTS_PTW) + #define CONFIG_MXC_USB_FLAGS 0 + ++/* I2C Configs */ ++#define CONFIG_HARD_I2C ++#define CONFIG_I2C_MXC ++#define CONFIG_SYS_I2C_MX53_PORT1 ++#define CONFIG_SYS_I2C_SPEED 100000 ++#define CONFIG_SYS_I2C_SLAVE 0xfe ++ ++/* PMIC Controller */ ++#define CONFIG_PMIC ++#define CONFIG_PMIC_I2C ++#define CONFIG_DIALOG_PMIC ++#define CONFIG_SYS_DIALOG_PMIC_I2C_ADDR 0x48 ++ + /* allow to overwrite serial and ethaddr */ + #define CONFIG_ENV_OVERWRITE + #define CONFIG_CONS_INDEX 1 +-- +1.7.10 + |