[U-Boot] [PATCH] board/t4240rdb: VID support

york sun york.sun at nxp.com
Wed Jan 20 23:26:28 CET 2016


On 12/09/2015 11:00 PM, ying.zhang at freescale.com wrote:
> From: Ying Zhang <b40530 at freescale.com>
> 
> The fuse status register provides the values from on-chip
> voltage ID efuses programmed at the factory.
> These values define the voltage requirements for
> the chip. u-boot reads FUSESR and translates the values
> into the appropriate commands to set the voltage output
> value of an external voltage regulator.
> 
> Signed-off-by: Ying Zhang <b40530 at freescale.com>
> ---
>  board/freescale/common/vid.c     |  2 +-
>  board/freescale/t4rdb/t4240rdb.c |  7 +++++++
>  include/configs/T4240RDB.h       | 10 ++++++++++
>  3 files changed, 18 insertions(+), 1 deletion(-)
> 
> diff --git a/board/freescale/common/vid.c b/board/freescale/common/vid.c
> index f1bed51..571e105 100644
> --- a/board/freescale/common/vid.c
> +++ b/board/freescale/common/vid.c
> @@ -42,7 +42,7 @@ int __weak board_vdd_drop_compensation(void)
>   * The IR chip can show up under the following addresses:
>   * 0x08 (Verified on T1040RDB-PA,T4240RDB-PB,X-T4240RDB-16GPA)
>   * 0x09 (Verified on T1040RDB-PA)
> - * 0x38 (Verified on T2080QDS, T2081QDS)
> + * 0x38 (Verified on T2080QDS, T2081QDS, T4240RDB)
>   */
>  static int find_ir_chip_on_i2c(void)
>  {
> diff --git a/board/freescale/t4rdb/t4240rdb.c b/board/freescale/t4rdb/t4240rdb.c
> index fac442b..99a8730 100644
> --- a/board/freescale/t4rdb/t4240rdb.c
> +++ b/board/freescale/t4rdb/t4240rdb.c
> @@ -21,6 +21,7 @@
>  
>  #include "t4rdb.h"
>  #include "cpld.h"
> +#include "../common/vid.h"
>  
>  DECLARE_GLOBAL_DATA_PTR;
>  
> @@ -79,6 +80,12 @@ int board_early_init_r(void)
>  #ifdef CONFIG_SYS_DPAA_QBMAN
>  	setup_portals();
>  #endif
> +	/*
> +	 * Adjust core voltage according to voltage ID
> +	 * This function changes I2C mux to channel 2.
> +	*/
> +	if (adjust_vdd(0))
> +		printf("Warning: Adjusting core voltage failed.\n");
>  
>  	return 0;
>  }
> diff --git a/include/configs/T4240RDB.h b/include/configs/T4240RDB.h
> index 73279c8..4a17f41 100644
> --- a/include/configs/T4240RDB.h
> +++ b/include/configs/T4240RDB.h
> @@ -606,6 +606,16 @@ unsigned long get_board_ddr_clk(void);
>  #define I2C_VOL_MONITOR_BUS_V_OVF	0x1
>  #define I2C_VOL_MONITOR_BUS_V_SHIFT	3
>  
> +#define CONFIG_VID_FLS_ENV		"t4240rdb_vdd_mv"
> +#ifndef CONFIG_SPL_BUILD
> +#define CONFIG_VID
> +#endif
> +#define CONFIG_VOL_MONITOR_IR36021_SET
> +#define CONFIG_VOL_MONITOR_IR36021_READ
> +/* The lowest and highest voltage allowed for T4240RDB */
> +#define VDD_MV_MIN			819
> +#define VDD_MV_MAX			1212
> +
>  /*
>   * eSPI - Enhanced SPI
>   */
> 

Ying,

This patch looks OK but the board doesn't work. I traced the code to the first
setting voltage. The VID has 1025mV and current voltage is 1047mV. As soon as
the code drops voltage by one step, the board hangs. Please double check if the
voltage setting is correct. You can measure it on the board to confirm.

York


More information about the U-Boot mailing list