Added netbird specific settings

This commit is contained in:
mr 2016-06-03 10:24:36 +02:00
parent ce337590fc
commit da86d5f219
6 changed files with 154 additions and 3 deletions

View File

@ -381,7 +381,6 @@ config TARGET_AM335X_NETBIRD
select DM
select DM_SERIAL
select DM_GPIO
select TI_I2C_BOARD_DETECT
config TARGET_AM335X_SL50
bool "Support am335x_sl50"

View File

@ -338,6 +338,12 @@ void am33xx_spl_board_init(void)
TPS65217_LDO_VOLTAGE_OUT_3_3,
TPS65217_LDO_MASK))
puts("tps65217_reg_write failure\n");
} else if (board_is_nbhw16()) {
/* Set CPU speed to 600 MHZ */
dpll_mpu_opp100.m = MPUPLL_M_600;
/* Set CORE Frequencies to OPP100 */
do_setup_dpll(&dpll_core_regs, &dpll_core_opp100);
} else {
int sil_rev;
@ -386,7 +392,7 @@ const struct dpll_params *get_dpll_ddr_params(void)
if (board_is_evm_sk())
return &dpll_ddr_evm_sk;
else if (board_is_bone_lt() || board_is_icev2())
else if (board_is_bone_lt() || board_is_icev2() || board_is_nbhw16())
return &dpll_ddr_bone_black;
else if (board_is_evm_15_or_later())
return &dpll_ddr_evm_sk;
@ -473,7 +479,7 @@ void sdram_init(void)
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())
else if (board_is_bone_lt() || board_is_nbhw16())
config_ddr(400, &ioregs_bonelt,
&ddr3_beagleblack_data,
&ddr3_beagleblack_cmd_ctrl_data,
@ -698,6 +704,12 @@ int board_eth_init(bd_t *bis)
writel(MII_MODE_ENABLE, &cdev->miisel);
cpsw_slaves[0].phy_if = cpsw_slaves[1].phy_if =
PHY_INTERFACE_MODE_MII;
} else if (board_is_nbhw16()) {
writel(RMII_MODE_ENABLE | RMII_CHIPCKL_ENABLE, &cdev->miisel);
cpsw_slaves[0].phy_if = PHY_INTERFACE_MODE_RMII;
cpsw_slaves[1].phy_if = PHY_INTERFACE_MODE_RMII;
cpsw_slaves[0].phy_addr = 0;
cpsw_slaves[1].phy_addr = 1;
} else if (board_is_icev2()) {
writel(RMII_MODE_ENABLE | RMII_CHIPCKL_ENABLE, &cdev->miisel);
cpsw_slaves[0].phy_if = PHY_INTERFACE_MODE_RMII;
@ -765,6 +777,8 @@ int board_fit_config_name_match(const char *name)
return 0;
else if (board_is_bone_lt() && !strcmp(name, "am335x-boneblack"))
return 0;
else if (board_is_nbhw16() && !strcmp(name, "am335x-nbhw16"))
return 0;
else if (board_is_evm_sk() && !strcmp(name, "am335x-evmsk"))
return 0;
else if (board_is_bbg1() && !strcmp(name, "am335x-bonegreen"))

View File

@ -21,6 +21,11 @@ static inline int board_is_bone_lt(void)
return board_ti_is("A335BNLT");
}
static inline int board_is_nbhw16(void)
{
return board_ti_is("NBHW16");
}
static inline int board_is_bbg1(void)
{
return board_is_bone_lt() && !strncmp(board_ti_get_rev(), "BBG1", 4);

View File

@ -262,6 +262,52 @@ static struct module_pin_mux uart3_icev2_pin_mux[] = {
{-1},
};
static struct module_pin_mux rmii0_pin_mux_netbird[] = {
{OFFSET(mdio_clk), MODE(0) | PULLUDEN}, /* MDIO_CLK */
{OFFSET(mdio_data), MODE(0) | PULLUP_EN | RXACTIVE }, /* MDIO_DATA */
{OFFSET(mii1_crs), MODE(1) | PULLUDEN | RXACTIVE}, /* MII1_CRS */
{OFFSET(mii1_rxerr), MODE(1) | PULLUDEN | RXACTIVE}, /* MII1_RXERR */
{OFFSET(mii1_txen), MODE(1) | PULLUDEN}, /* MII1_TXEN */
{OFFSET(mii1_txd0), MODE(1) | PULLUDEN}, /* MII1_TXD0 */
{OFFSET(mii1_txd1), MODE(1) | PULLUDEN}, /* MII1_TXD1 */
{OFFSET(mii1_rxd0), MODE(1) | PULLUDEN | RXACTIVE}, /* MII1_RXD0 */
{OFFSET(mii1_rxd1), MODE(1) | PULLUDEN | RXACTIVE}, /* MII1_RXD1 */
{OFFSET(rmii1_refclk), MODE(0) | PULLUDEN | RXACTIVE}, /* RMII1_REFCLK */
{-1},
};
static struct module_pin_mux rmii1_pin_mux_netbird[] = {
{OFFSET(gpmc_a9), MODE(3) | PULLUDEN | RXACTIVE}, /* MII2_CRS */
{OFFSET(gpmc_wpn), MODE(3) | PULLUDEN | RXACTIVE}, /* MII2_RXERR */
{OFFSET(gpmc_a0), MODE(3) | PULLUDEN}, /* MII2_TXEN */
{OFFSET(gpmc_a5), MODE(3) | PULLUDEN}, /* MII2_TXD0 */
{OFFSET(gpmc_a4), MODE(3) | PULLUDEN}, /* MII2_TXD1 */
{OFFSET(gpmc_a11), MODE(3) | PULLUDEN | RXACTIVE}, /* MII1_RXD0 */
{OFFSET(gpmc_a10), MODE(3) | PULLUDEN | RXACTIVE}, /* MII1_RXD1 */
{OFFSET(mii1_col), MODE(1) | PULLUDEN | RXACTIVE}, /* RMII1_REFCLK */
{-1},
};
static struct module_pin_mux mmc0_sdio_pin_mux_netbird[] = {
{OFFSET(mmc0_clk), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* MMC0_CLK */
{OFFSET(mmc0_cmd), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* MMC0_CMD */
{OFFSET(mmc0_dat0), (MODE(0) | PULLUP_EN | RXACTIVE )}, /* MMC0_DAT0 */
{OFFSET(mmc0_dat1), (MODE(0) | PULLUP_EN | RXACTIVE )}, /* MMC0_DAT1 */
{OFFSET(mmc0_dat2), (MODE(0) | PULLUP_EN | RXACTIVE )}, /* MMC0_DAT2 */
{OFFSET(mmc0_dat3), (MODE(0) | PULLUP_EN | RXACTIVE )}, /* MMC0_DAT3 */
{-1},
};
static struct module_pin_mux mmc1_emmc_pin_mux_netbird[] = {
{OFFSET(gpmc_csn1), (MODE(2) | PULLUP_EN | RXACTIVE)}, /* MMC1_CLK */
{OFFSET(gpmc_csn2), (MODE(2) | PULLUP_EN | RXACTIVE)}, /* MMC1_CMD */
{OFFSET(gpmc_ad0), (MODE(1) | PULLUP_EN | RXACTIVE )}, /* MMC1_DAT0 */
{OFFSET(gpmc_ad1), (MODE(1) | PULLUP_EN | RXACTIVE )}, /* MMC1_DAT1 */
{OFFSET(gpmc_ad2), (MODE(1) | PULLUP_EN | RXACTIVE )}, /* MMC1_DAT2 */
{OFFSET(gpmc_ad3), (MODE(1) | PULLUP_EN | RXACTIVE )}, /* MMC1_DAT3 */
{-1},
};
#if defined(CONFIG_NOR_BOOT)
void enable_norboot_pin_mux(void)
{
@ -390,6 +436,12 @@ void enable_board_pin_mux(void)
#else
configure_module_pin_mux(mmc1_pin_mux);
#endif
} else if (board_is_nbhw16()) {
/* Netbird board */
configure_module_pin_mux(rmii0_pin_mux_netbird);
configure_module_pin_mux(rmii1_pin_mux_netbird);
configure_module_pin_mux(mmc0_sdio_pin_mux_netbird);
configure_module_pin_mux(mmc1_emmc_pin_mux_netbird);
} else if (board_is_icev2()) {
configure_module_pin_mux(mmc0_pin_mux);
configure_module_pin_mux(gpio0_18_pin_mux);

View File

@ -4,3 +4,4 @@
#
obj-${CONFIG_TI_I2C_BOARD_DETECT} += board_detect.o
obj-${CONFIG_TARGET_AM335X_NETBIRD} += board_detect_netbird.o

View File

@ -0,0 +1,80 @@
/*
* Library to support early TI EVM EEPROM handling
*
* Copyright (C) 2015-2016 Texas Instruments Incorporated - http://www.ti.com/
* Lokesh Vutla
* Steve Kipisz
*
* SPDX-License-Identifier: GPL-2.0+
*/
#include <common.h>
#include <asm/omap_common.h>
#include <i2c.h>
#include "board_detect.h"
int __maybe_unused ti_i2c_eeprom_am_get(int bus_addr, int dev_addr)
{
struct ti_common_eeprom *ep;
ep = TI_EEPROM_DATA;
if (ep->header == TI_EEPROM_HEADER_MAGIC)
goto already_read;
/* Initialize with a known bad marker for i2c fails.. */
ep->header = TI_EEPROM_HEADER_MAGIC;
strlcpy(ep->name, "NBHW16", TI_EEPROM_HDR_NAME_LEN + 1);
strlcpy(ep->version, "0.0", TI_EEPROM_HDR_REV_LEN + 1);
strlcpy(ep->serial, "1234", TI_EEPROM_HDR_SERIAL_LEN + 1);
strlcpy(ep->config, "", TI_EEPROM_HDR_CONFIG_LEN + 1);
memset(ep->mac_addr, 0x00, TI_EEPROM_HDR_NO_OF_MAC_ADDR * TI_EEPROM_HDR_ETH_ALEN);
already_read:
return 0;
}
bool __maybe_unused board_ti_is(char *name_tag)
{
struct ti_common_eeprom *ep = TI_EEPROM_DATA;
if (ep->header == TI_DEAD_EEPROM_MAGIC)
return false;
return !strncmp(ep->name, name_tag, TI_EEPROM_HDR_NAME_LEN);
}
char * __maybe_unused board_ti_get_rev(void)
{
struct ti_common_eeprom *ep = TI_EEPROM_DATA;
if (ep->header == TI_DEAD_EEPROM_MAGIC)
return NULL;
return ep->version;
}
char * __maybe_unused board_ti_get_config(void)
{
struct ti_common_eeprom *ep = TI_EEPROM_DATA;
if (ep->header == TI_DEAD_EEPROM_MAGIC)
return NULL;
return ep->config;
}
char * __maybe_unused board_ti_get_name(void)
{
struct ti_common_eeprom *ep = TI_EEPROM_DATA;
if (ep->header == TI_DEAD_EEPROM_MAGIC)
return NULL;
return ep->name;
}
void __maybe_unused set_board_info_env(char *name)
{
return;
}