armv8/ls2080ardb: Enable VID support
This patch enable VID support for ls2080ardb platform. It uses the common VID driver. Signed-off-by: Rai Harninder <harninder.rai@nxp.com> Reviewed-by: York Sun <york.sun@nxp.com>
This commit is contained in:
parent
2ef846e45c
commit
ed2530d096
@ -180,6 +180,10 @@ struct ccsr_gur {
|
|||||||
u8 res_008[0x20-0x8];
|
u8 res_008[0x20-0x8];
|
||||||
u32 gpporcr1; /* General-purpose POR configuration */
|
u32 gpporcr1; /* General-purpose POR configuration */
|
||||||
u32 gpporcr2; /* General-purpose POR configuration 2 */
|
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 dcfg_fusesr; /* Fuse status register */
|
||||||
u32 gpporcr3;
|
u32 gpporcr3;
|
||||||
u32 gpporcr4;
|
u32 gpporcr4;
|
||||||
|
@ -10,6 +10,8 @@
|
|||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#ifdef CONFIG_LS1043A
|
#ifdef CONFIG_LS1043A
|
||||||
#include <asm/arch/immap_lsch2.h>
|
#include <asm/arch/immap_lsch2.h>
|
||||||
|
#elif defined(CONFIG_FSL_LSCH3)
|
||||||
|
#include <asm/arch/immap_lsch3.h>
|
||||||
#else
|
#else
|
||||||
#include <asm/immap_85xx.h>
|
#include <asm/immap_85xx.h>
|
||||||
#endif
|
#endif
|
||||||
@ -285,7 +287,7 @@ static int set_voltage(int i2caddress, int vdd)
|
|||||||
int adjust_vdd(ulong vdd_override)
|
int adjust_vdd(ulong vdd_override)
|
||||||
{
|
{
|
||||||
int re_enable = disable_interrupts();
|
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);
|
struct ccsr_gur *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
|
||||||
#else
|
#else
|
||||||
ccsr_gur_t __iomem *gur =
|
ccsr_gur_t __iomem *gur =
|
||||||
@ -362,7 +364,11 @@ int adjust_vdd(ulong vdd_override)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* get the voltage ID from fuse status register */
|
/* 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);
|
fusesr = in_be32(&gur->dcfg_fusesr);
|
||||||
|
#endif
|
||||||
/*
|
/*
|
||||||
* VID is used according to the table below
|
* 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) &
|
vid = (fusesr >> FSL_CHASSIS2_DCFG_FUSESR_VID_SHIFT) &
|
||||||
FSL_CHASSIS2_DCFG_FUSESR_VID_MASK;
|
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
|
#else
|
||||||
vid = (fusesr >> FSL_CORENET_DCFG_FUSESR_ALTVID_SHIFT) &
|
vid = (fusesr >> FSL_CORENET_DCFG_FUSESR_ALTVID_SHIFT) &
|
||||||
FSL_CORENET_DCFG_FUSESR_ALTVID_MASK;
|
FSL_CORENET_DCFG_FUSESR_ALTVID_MASK;
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include "../common/qixis.h"
|
#include "../common/qixis.h"
|
||||||
#include "ls2080ardb_qixis.h"
|
#include "ls2080ardb_qixis.h"
|
||||||
|
#include "../common/vid.h"
|
||||||
|
|
||||||
#define PIN_MUX_SEL_SDHC 0x00
|
#define PIN_MUX_SEL_SDHC 0x00
|
||||||
#define PIN_MUX_SEL_DSPI 0x0a
|
#define PIN_MUX_SEL_DSPI 0x0a
|
||||||
@ -123,6 +124,11 @@ int select_i2c_ch_pca9547(u8 ch)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int i2c_multiplexer_select_vid_channel(u8 channel)
|
||||||
|
{
|
||||||
|
return select_i2c_ch_pca9547(channel);
|
||||||
|
}
|
||||||
|
|
||||||
int config_board_mux(int ctrl_type)
|
int config_board_mux(int ctrl_type)
|
||||||
{
|
{
|
||||||
u8 reg5;
|
u8 reg5;
|
||||||
@ -189,6 +195,9 @@ int misc_init_r(void)
|
|||||||
if (hwconfig("sdhc"))
|
if (hwconfig("sdhc"))
|
||||||
config_board_mux(MUX_TYPE_SDHC);
|
config_board_mux(MUX_TYPE_SDHC);
|
||||||
|
|
||||||
|
if (adjust_vdd(0))
|
||||||
|
printf("Warning: Adjusting core voltage failed.\n");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,6 +14,22 @@
|
|||||||
|
|
||||||
#define CONFIG_DISPLAY_BOARDINFO
|
#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__
|
#ifndef __ASSEMBLY__
|
||||||
unsigned long get_board_sys_clk(void);
|
unsigned long get_board_sys_clk(void);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user