[U-Boot] [PATCH][v2] armv8/ls2080ardb: Enable VID support
york sun
york.sun at nxp.com
Thu Feb 11 20:15:34 CET 2016
On 02/08/2016 05:33 AM, Rai Harninder wrote:
> This patch enable VID support for ls2080ardb platform.
> It uses the common VID driver
>
> Signed-off-by: Rai Harninder <harninder.rai at nxp.com>
> ---
> Changes in v2
> - Use CONFIG_FSL_LSCH3 instead of CONFIG_LAYERSCAPE
> since the latter is defined for other platforms
> as well
> - Modify patch description
>
> .../include/asm/arch-fsl-layerscape/immap_lsch3.h | 4 ++++
> board/freescale/common/vid.c | 15 ++++++++++++++-
> board/freescale/ls2080ardb/ls2080ardb.c | 5 +++++
> include/configs/ls2080ardb.h | 16 ++++++++++++++++
> 4 files changed, 39 insertions(+), 1 deletions(-)
>
> diff --git a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
> index 91f3ce8..4fd58ee 100644
> --- a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
> +++ b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h
> @@ -146,6 +146,10 @@ struct ccsr_gur {
> u8 res_008[0x20-0x8];
> u32 gpporcr1; /* General-purpose POR configuration */
> u32 gpporcr2; /* General-purpose POR configuration 2 */
> +#define FSL_CHASSIS3_DCFG_FUSESR_VID_SHIFT 25
> +#define FSL_CHASSIS3_DCFG_FUSESR_VID_MASK 0x1F
> +#define FSL_CHASSIS3_DCFG_FUSESR_ALTVID_SHIFT 20
> +#define FSL_CHASSIS3_DCFG_FUSESR_ALTVID_MASK 0x1F
> u32 dcfg_fusesr; /* Fuse status register */
> u32 gpporcr3;
> u32 gpporcr4;
> diff --git a/board/freescale/common/vid.c b/board/freescale/common/vid.c
> index 1bd65a8..b037643 100644
> --- a/board/freescale/common/vid.c
> +++ b/board/freescale/common/vid.c
> @@ -10,6 +10,8 @@
> #include <asm/io.h>
> #ifdef CONFIG_LS1043A
> #include <asm/arch/immap_lsch2.h>
> +#elif defined(CONFIG_FSL_LSCH3)
> +#include <asm/arch/immap_lsch3.h>
> #else
> #include <asm/immap_85xx.h>
> #endif
> @@ -285,7 +287,7 @@ static int set_voltage(int i2caddress, int vdd)
> int adjust_vdd(ulong vdd_override)
> {
> int re_enable = disable_interrupts();
> -#ifdef CONFIG_LS1043A
> +#if defined(CONFIG_LS1043A) || defined(CONFIG_FSL_LSCH3)
> struct ccsr_gur *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
> #else
> ccsr_gur_t __iomem *gur =
> @@ -362,7 +364,11 @@ int adjust_vdd(ulong vdd_override)
> }
>
> /* get the voltage ID from fuse status register */
> +#ifdef CONFIG_FSL_LSCH3
> + fusesr = in_le32(&gur->dcfg_fusesr);
> +#else
> fusesr = in_be32(&gur->dcfg_fusesr);
> +#endif
> /*
> * VID is used according to the table below
> * ---------------------------------------
> @@ -387,6 +393,13 @@ int adjust_vdd(ulong vdd_override)
> vid = (fusesr >> FSL_CHASSIS2_DCFG_FUSESR_VID_SHIFT) &
> FSL_CHASSIS2_DCFG_FUSESR_VID_MASK;
> }
> +#elif defined(CONFIG_FSL_LSCH3)
> + vid = (fusesr >> FSL_CHASSIS3_DCFG_FUSESR_ALTVID_SHIFT) &
> + FSL_CHASSIS3_DCFG_FUSESR_ALTVID_MASK;
> + if ((vid == 0) || (vid == FSL_CHASSIS3_DCFG_FUSESR_ALTVID_MASK)) {
> + vid = (fusesr >> FSL_CHASSIS3_DCFG_FUSESR_VID_SHIFT) &
> + FSL_CHASSIS3_DCFG_FUSESR_VID_MASK;
> + }
> #else
> vid = (fusesr >> FSL_CORENET_DCFG_FUSESR_ALTVID_SHIFT) &
> FSL_CORENET_DCFG_FUSESR_ALTVID_MASK;
> diff --git a/board/freescale/ls2080ardb/ls2080ardb.c b/board/freescale/ls2080ardb/ls2080ardb.c
> index c63b639..9515b25 100644
> --- a/board/freescale/ls2080ardb/ls2080ardb.c
> +++ b/board/freescale/ls2080ardb/ls2080ardb.c
> @@ -122,6 +122,11 @@ int select_i2c_ch_pca9547(u8 ch)
> return 0;
> }
>
> +int i2c_multiplexer_select_vid_channel(u8 channel)
> +{
> + return select_i2c_ch_pca9547(channel);
> +}
> +
> int config_board_mux(int ctrl_type)
> {
> u8 reg5;
> diff --git a/include/configs/ls2080ardb.h b/include/configs/ls2080ardb.h
> index 116dbcd..9a95f31 100644
> --- a/include/configs/ls2080ardb.h
> +++ b/include/configs/ls2080ardb.h
> @@ -14,6 +14,22 @@
>
> #define CONFIG_DISPLAY_BOARDINFO
>
> +#define I2C_MUX_CH_VOL_MONITOR 0xa
> +#define I2C_VOL_MONITOR_ADDR 0x38
> +#define CONFIG_VOL_MONITOR_IR36021_READ
> +#define CONFIG_VOL_MONITOR_IR36021_SET
> +
> +#define CONFIG_VID_FLS_ENV "ls2080ardb_vdd_mv"
> +#ifndef CONFIG_SPL_BUILD
> +#define CONFIG_VID
> +#endif
> +/* step the IR regulator in 5mV increments */
> +#define IR_VDD_STEP_DOWN 5
> +#define IR_VDD_STEP_UP 5
> +/* The lowest and highest voltage allowed for LS2080ARDB */
> +#define VDD_MV_MIN 819
> +#define VDD_MV_MAX 1212
> +
> #ifndef __ASSEMBLY__
> unsigned long get_board_sys_clk(void);
> #endif
>
Rai,
Did you test this patch to confirm the voltage change? I don't see you calling
adjust_vdd().
York
More information about the U-Boot
mailing list