On 12/09/2015 11:00 PM, ying.zh...@freescale.com wrote: > From: Ying Zhang <b40...@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 <b40...@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 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot