@ -31,6 +31,7 @@
# include <environment.h>
# include <watchdog.h>
# include <environment.h>
# include "../common/board_detect.h"
# include "board.h"
DECLARE_GLOBAL_DATA_PTR ;
@ -46,43 +47,9 @@ static struct ctrl_dev *cdev = (struct ctrl_dev *)CTRL_DEVICE_BASE;
/*
* Read header information from EEPROM into global structure .
*/
static int read_eeprom ( struct am335x_baseboard_id * header )
static inline int __maybe_unused read_eeprom ( void )
{
/* Check if baseboard eeprom is available */
if ( i2c_probe ( CONFIG_SYS_I2C_EEPROM_ADDR ) ) {
puts ( " Could not probe the EEPROM; something fundamentally "
" wrong on the I2C bus. \n " ) ;
return - ENODEV ;
}
/* read the eeprom using i2c */
if ( i2c_read ( CONFIG_SYS_I2C_EEPROM_ADDR , 0 , 2 , ( uchar * ) header ,
sizeof ( struct am335x_baseboard_id ) ) ) {
puts ( " Could not read the EEPROM; something fundamentally "
" wrong on the I2C bus. \n " ) ;
return - EIO ;
}
if ( header - > magic ! = 0xEE3355AA ) {
/*
* read the eeprom using i2c again ,
* but use only a 1 byte address
*/
if ( i2c_read ( CONFIG_SYS_I2C_EEPROM_ADDR , 0 , 1 , ( uchar * ) header ,
sizeof ( struct am335x_baseboard_id ) ) ) {
puts ( " Could not read the EEPROM; something "
" fundamentally wrong on the I2C bus. \n " ) ;
return - EIO ;
}
if ( header - > magic ! = 0xEE3355AA ) {
printf ( " Incorrect magic number (0x%x) in EEPROM \n " ,
header - > magic ) ;
return - EINVAL ;
}
}
return 0 ;
return ti_i2c_eeprom_am_get ( - 1 , CONFIG_SYS_I2C_EEPROM_ADDR ) ;
}
# ifndef CONFIG_SKIP_LOWLEVEL_INIT
@ -223,16 +190,15 @@ const struct dpll_params dpll_ddr_bone_black = {
void am33xx_spl_board_init ( void )
{
struct am335x_baseboard_id header ;
int mpu_vdd ;
if ( read_eeprom ( & header ) < 0 )
if ( read_eeprom ( ) < 0 )
puts ( " Could not get board ID. \n " ) ;
/* Get the frequency */
dpll_mpu_opp100 . m = am335x_get_efuse_mpu_max_freq ( cdev ) ;
if ( board_is_bone ( & header ) | | board_is_bone_lt ( & header ) ) {
if ( board_is_bone ( ) | | board_is_bone_lt ( ) ) {
/* BeagleBone PMIC Code */
int usb_cur_lim ;
@ -240,8 +206,7 @@ void am33xx_spl_board_init(void)
* Only perform PMIC configurations if board rev > A1
* on Beaglebone White
*/
if ( board_is_bone ( & header ) & & ! strncmp ( header . version ,
" 00A1 " , 4 ) )
if ( board_is_bone ( ) & & ! strncmp ( board_ti_get_rev ( ) , " 00A1 " , 4 ) )
return ;
if ( i2c_probe ( TPS65217_CHIP_PM ) )
@ -251,7 +216,7 @@ void am33xx_spl_board_init(void)
* On Beaglebone White we need to ensure we have AC power
* before increasing the frequency .
*/
if ( board_is_bone ( & header ) ) {
if ( board_is_bone ( ) ) {
uchar pmic_status_reg ;
if ( tps65217_reg_read ( TPS65217_STATUS ,
& pmic_status_reg ) )
@ -266,7 +231,7 @@ void am33xx_spl_board_init(void)
* Override what we have detected since we know if we have
* a Beaglebone Black it supports 1 GHz .
*/
if ( board_is_bone_lt ( & header ) )
if ( board_is_bone_lt ( ) )
dpll_mpu_opp100 . m = MPUPLL_M_1000 ;
/*
@ -307,7 +272,7 @@ void am33xx_spl_board_init(void)
* Set LDO3 , LDO4 output voltage to 3.3 V for Beaglebone .
* Set LDO3 to 1.8 V and LDO4 to 3.3 V for Beaglebone Black .
*/
if ( board_is_bone ( & header ) ) {
if ( board_is_bone ( ) ) {
if ( tps65217_reg_write ( TPS65217_PROT_LEVEL_2 ,
TPS65217_DEFLS1 ,
TPS65217_LDO_VOLTAGE_OUT_3_3 ,
@ -367,18 +332,16 @@ void am33xx_spl_board_init(void)
const struct dpll_params * get_dpll_ddr_params ( void )
{
struct am335x_baseboard_id header ;
enable_i2c0_pin_mux ( ) ;
i2c_init ( CONFIG_SYS_OMAP24_I2C_SPEED , CONFIG_SYS_OMAP24_I2C_SLAVE ) ;
if ( read_eeprom ( & header ) < 0 )
if ( read_eeprom ( ) < 0 )
puts ( " Could not get board ID. \n " ) ;
if ( board_is_evm_sk ( & header ) )
if ( board_is_evm_sk ( ) )
return & dpll_ddr_evm_sk ;
else if ( board_is_bone_lt ( & header ) )
else if ( board_is_bone_lt ( ) )
return & dpll_ddr_bone_black ;
else if ( board_is_evm_15_or_later ( & header ) )
else if ( board_is_evm_15_or_later ( ) )
return & dpll_ddr_evm_sk ;
else
return & dpll_ddr ;
@ -403,12 +366,10 @@ void set_uart_mux_conf(void)
void set_mux_conf_regs ( void )
{
__maybe_unused struct am335x_baseboard_id header ;
if ( read_eeprom ( & header ) < 0 )
if ( read_eeprom ( ) < 0 )
puts ( " Could not get board ID. \n " ) ;
enable_board_pin_mux ( & header ) ;
enable_board_pin_mux ( ) ;
}
const struct ctrl_ioregs ioregs_evmsk = {
@ -445,12 +406,10 @@ const struct ctrl_ioregs ioregs = {
void sdram_init ( void )
{
__maybe_unused struct am335x_baseboard_id header ;
if ( read_eeprom ( & header ) < 0 )
if ( read_eeprom ( ) < 0 )
puts ( " Could not get board ID. \n " ) ;
if ( board_is_evm_sk ( & header ) ) {
if ( board_is_evm_sk ( ) ) {
/*
* EVM SK 1.2 A and later use gpio0_7 to enable DDR3 .
* This is safe enough to do on older revs .
@ -459,15 +418,15 @@ void sdram_init(void)
gpio_direction_output ( GPIO_DDR_VTT_EN , 1 ) ;
}
if ( board_is_evm_sk ( & header ) )
if ( board_is_evm_sk ( ) )
config_ddr ( 303 , & ioregs_evmsk , & ddr3_data ,
& ddr3_cmd_ctrl_data , & ddr3_emif_reg_data , 0 ) ;
else if ( board_is_bone_lt ( & header ) )
else if ( board_is_bone_lt ( ) )
config_ddr ( 400 , & ioregs_bonelt ,
& ddr3_beagleblack_data ,
& ddr3_beagleblack_cmd_ctrl_data ,
& ddr3_beagleblack_emif_reg_data , 0 ) ;
else if ( board_is_evm_15_or_later ( & header ) )
else if ( board_is_evm_15_or_later ( ) )
config_ddr ( 303 , & ioregs_evm15 , & ddr3_evm_data ,
& ddr3_evm_cmd_ctrl_data , & ddr3_evm_emif_reg_data , 0 ) ;
else
@ -496,26 +455,16 @@ int board_init(void)
int board_late_init ( void )
{
# ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
char safe_string [ HDR_NAME_LEN + 1 ] ;
struct am335x_baseboard_id header ;
int rc ;
char * name = NULL ;
if ( read_eeprom ( & header ) < 0 )
rc = read_eeprom ( ) ;
if ( rc )
puts ( " Could not get board ID. \n " ) ;
/* Now set variables based on the header. */
strncpy ( safe_string , ( char * ) header . name , sizeof ( header . name ) ) ;
safe_string [ sizeof ( header . name ) ] = 0 ;
setenv ( " board_name " , safe_string ) ;
/* BeagleBone Green eeprom, board_rev: 0x1a 0x00 0x00 0x00 */
if ( ( header . version [ 0 ] = = 0x1a ) & & ( header . version [ 1 ] = = 0x00 ) & &
( header . version [ 2 ] = = 0x00 ) & & ( header . version [ 3 ] = = 0x00 ) ) {
setenv ( " board_rev " , " BBG1 " ) ;
} else {
strncpy ( safe_string , ( char * ) header . version , sizeof ( header . version ) ) ;
safe_string [ sizeof ( header . version ) ] = 0 ;
setenv ( " board_rev " , safe_string ) ;
}
if ( board_is_bbg1 ( ) )
name = " BBG1 " ;
set_board_info_env ( name ) ;
# endif
return 0 ;
@ -587,7 +536,7 @@ int board_eth_init(bd_t *bis)
int rv , n = 0 ;
uint8_t mac_addr [ 6 ] ;
uint32_t mac_hi , mac_lo ;
__maybe_unused struct am335x_baseboard_id header ;
__maybe_unused struct ti_am_eeprom * header ;
/* try reading mac address from efuse */
mac_lo = readl ( & cdev - > macid0l ) ;
@ -624,11 +573,11 @@ int board_eth_init(bd_t *bis)
eth_setenv_enetaddr ( " eth1addr " , mac_addr ) ;
}
if ( read_eeprom ( & header ) < 0 )
if ( read_eeprom ( ) < 0 )
puts ( " Could not get board ID. \n " ) ;
if ( board_is_bone ( & header ) | | board_is_bone_lt ( & header ) | |
board_is_idk ( & header ) ) {
if ( board_is_bone ( ) | | board_is_bone_lt ( ) | |
board_is_idk ( ) ) {
writel ( MII_MODE_ENABLE , & cdev - > miisel ) ;
cpsw_slaves [ 0 ] . phy_if = cpsw_slaves [ 1 ] . phy_if =
PHY_INTERFACE_MODE_MII ;
@ -657,7 +606,7 @@ int board_eth_init(bd_t *bis)
# define AR8051_DEBUG_RGMII_CLK_DLY_REG 0x5
# define AR8051_RGMII_TX_CLK_DLY 0x100
if ( board_is_evm_sk ( & header ) | | board_is_gp_evm ( & header ) ) {
if ( board_is_evm_sk ( ) | | board_is_gp_evm ( ) ) {
const char * devname ;
devname = miiphy_get_current_dev ( ) ;