Merge git://git.denx.de/u-boot-ti
This commit is contained in:
commit
cfa1bd0774
|
@ -18,6 +18,7 @@
|
|||
#include <asm/arch/cpu.h>
|
||||
#include <asm/arch/clock.h>
|
||||
#include <power/tps65910.h>
|
||||
#include <linux/compiler.h>
|
||||
|
||||
struct ctrl_stat *cstat = (struct ctrl_stat *)CTRL_BASE;
|
||||
|
||||
|
@ -51,11 +52,11 @@ u32 get_cpu_type(void)
|
|||
|
||||
/**
|
||||
* get_board_rev() - setup to pass kernel board revision information
|
||||
* returns:(bit[0-3] sub version, higher bit[7-4] is higher version)
|
||||
* returns: 0 for the ATAG REVISION tag value.
|
||||
*/
|
||||
u32 get_board_rev(void)
|
||||
u32 __weak get_board_rev(void)
|
||||
{
|
||||
return BOARD_REV_ID;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -22,6 +22,9 @@ config TARGET_CM_T35
|
|||
bool "CompuLab CM-T3530 and CM-T3730 boards"
|
||||
select SUPPORT_SPL
|
||||
|
||||
config TARGET_CM_T3517
|
||||
bool "CompuLab CM-T3517 boards"
|
||||
|
||||
config TARGET_DEVKIT8000
|
||||
bool "TimLL OMAP3 Devkit8000"
|
||||
select SUPPORT_SPL
|
||||
|
@ -98,6 +101,7 @@ source "board/teejet/mt_ventoux/Kconfig"
|
|||
source "board/ti/sdp3430/Kconfig"
|
||||
source "board/ti/beagle/Kconfig"
|
||||
source "board/compulab/cm_t35/Kconfig"
|
||||
source "board/compulab/cm_t3517/Kconfig"
|
||||
source "board/timll/devkit8000/Kconfig"
|
||||
source "board/ti/evm/Kconfig"
|
||||
source "board/isee/igep00x0/Kconfig"
|
||||
|
|
|
@ -14,8 +14,6 @@
|
|||
#include <asm/ti-common/sys_proto.h>
|
||||
#include <asm/arch/cpu.h>
|
||||
|
||||
#define BOARD_REV_ID 0x0
|
||||
|
||||
u32 get_cpu_rev(void);
|
||||
u32 get_sysboot_value(void);
|
||||
|
||||
|
|
|
@ -57,8 +57,6 @@
|
|||
#define KS2_NETCP_PDMA_SCHED_BASE 0x24186100
|
||||
#define KS2_NETCP_PDMA_RX_FLOW_BASE 0x24189000
|
||||
#define KS2_NETCP_PDMA_RX_FLOW_NUM 96
|
||||
#define KS2_NETCP_PDMA_RX_FREE_QUEUE 4001
|
||||
#define KS2_NETCP_PDMA_RX_RCV_QUEUE 4002
|
||||
#define KS2_NETCP_PDMA_TX_SND_QUEUE 896
|
||||
|
||||
/* NETCP */
|
||||
|
|
|
@ -98,8 +98,6 @@
|
|||
#define KS2_NETCP_PDMA_SCHED_BASE 0x02004c00
|
||||
#define KS2_NETCP_PDMA_RX_FLOW_BASE 0x02005000
|
||||
#define KS2_NETCP_PDMA_RX_FLOW_NUM 32
|
||||
#define KS2_NETCP_PDMA_RX_FREE_QUEUE 4001
|
||||
#define KS2_NETCP_PDMA_RX_RCV_QUEUE 4002
|
||||
#define KS2_NETCP_PDMA_TX_SND_QUEUE 648
|
||||
|
||||
/* NETCP */
|
||||
|
|
|
@ -84,6 +84,10 @@
|
|||
/* OSR memory size */
|
||||
#define KS2_OSR_SIZE 0x100000
|
||||
|
||||
/* SGMII SerDes */
|
||||
#define KS2_SGMII_SERDES2_BASE 0x02320000
|
||||
#define KS2_LANES_PER_SGMII_SERDES 2
|
||||
|
||||
/* Number of DSP cores */
|
||||
#define KS2_NUM_DSPS 4
|
||||
|
||||
|
@ -98,4 +102,7 @@
|
|||
#define KS2_NETCP_PDMA_RX_FLOW_NUM 96
|
||||
#define KS2_NETCP_PDMA_TX_SND_QUEUE 896
|
||||
|
||||
/* NETCP */
|
||||
#define KS2_NETCP_BASE 0x26000000
|
||||
|
||||
#endif /* __ASM_ARCH_HARDWARE_K2L_H */
|
||||
|
|
|
@ -122,6 +122,10 @@ typedef volatile unsigned int *dv_reg_p;
|
|||
#define KS2_EDMA_QEESR 0x108c
|
||||
#define KS2_EDMA_PARAM_1(x) (0x4020 + (4 * x))
|
||||
|
||||
/* NETCP pktdma */
|
||||
#define KS2_NETCP_PDMA_RX_FREE_QUEUE 4001
|
||||
#define KS2_NETCP_PDMA_RX_RCV_QUEUE 4002
|
||||
|
||||
/* Chip Interrupt Controller */
|
||||
#define KS2_CIC2_BASE 0x02608000
|
||||
|
||||
|
|
|
@ -19,12 +19,11 @@
|
|||
#include <i2c.h>
|
||||
#include <usb.h>
|
||||
#include <mmc.h>
|
||||
#include <nand.h>
|
||||
#include <twl4030.h>
|
||||
#include <bmp_layout.h>
|
||||
#include <linux/compiler.h>
|
||||
|
||||
#include <asm/io.h>
|
||||
#include <asm/errno.h>
|
||||
#include <asm/arch/mem.h>
|
||||
#include <asm/arch/mux.h>
|
||||
#include <asm/arch/mmc_host_def.h>
|
||||
|
@ -33,6 +32,7 @@
|
|||
#include <asm/ehci-omap.h>
|
||||
#include <asm/gpio.h>
|
||||
|
||||
#include "../common/common.h"
|
||||
#include "../common/eeprom.h"
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
@ -43,58 +43,6 @@ const omap3_sysinfo sysinfo = {
|
|||
"NAND",
|
||||
};
|
||||
|
||||
static u32 gpmc_net_config[GPMC_MAX_REG] = {
|
||||
NET_GPMC_CONFIG1,
|
||||
NET_GPMC_CONFIG2,
|
||||
NET_GPMC_CONFIG3,
|
||||
NET_GPMC_CONFIG4,
|
||||
NET_GPMC_CONFIG5,
|
||||
NET_GPMC_CONFIG6,
|
||||
0
|
||||
};
|
||||
|
||||
#ifdef CONFIG_LCD
|
||||
#ifdef CONFIG_CMD_NAND
|
||||
static int splash_load_from_nand(u32 bmp_load_addr)
|
||||
{
|
||||
struct bmp_header *bmp_hdr;
|
||||
int res, splash_screen_nand_offset = 0x100000;
|
||||
size_t bmp_size, bmp_header_size = sizeof(struct bmp_header);
|
||||
|
||||
if (bmp_load_addr + bmp_header_size >= gd->start_addr_sp)
|
||||
goto splash_address_too_high;
|
||||
|
||||
res = nand_read_skip_bad(&nand_info[nand_curr_device],
|
||||
splash_screen_nand_offset, &bmp_header_size,
|
||||
NULL, nand_info[nand_curr_device].size,
|
||||
(u_char *)bmp_load_addr);
|
||||
if (res < 0)
|
||||
return res;
|
||||
|
||||
bmp_hdr = (struct bmp_header *)bmp_load_addr;
|
||||
bmp_size = le32_to_cpu(bmp_hdr->file_size);
|
||||
|
||||
if (bmp_load_addr + bmp_size >= gd->start_addr_sp)
|
||||
goto splash_address_too_high;
|
||||
|
||||
return nand_read_skip_bad(&nand_info[nand_curr_device],
|
||||
splash_screen_nand_offset, &bmp_size,
|
||||
NULL, nand_info[nand_curr_device].size,
|
||||
(u_char *)bmp_load_addr);
|
||||
|
||||
splash_address_too_high:
|
||||
printf("Error: splashimage address too high. Data overwrites U-Boot "
|
||||
"and/or placed beyond DRAM boundaries.\n");
|
||||
|
||||
return -1;
|
||||
}
|
||||
#else
|
||||
static inline int splash_load_from_nand(void)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
#endif /* CONFIG_CMD_NAND */
|
||||
|
||||
#ifdef CONFIG_SPL_BUILD
|
||||
/*
|
||||
* Routine: get_board_mem_timings
|
||||
|
@ -111,24 +59,12 @@ void get_board_mem_timings(struct board_sdrc_timings *timings)
|
|||
}
|
||||
#endif
|
||||
|
||||
#define CM_T35_SPLASH_NAND_OFFSET 0x100000
|
||||
|
||||
int splash_screen_prepare(void)
|
||||
{
|
||||
char *env_splashimage_value;
|
||||
u32 bmp_load_addr;
|
||||
|
||||
env_splashimage_value = getenv("splashimage");
|
||||
if (env_splashimage_value == NULL)
|
||||
return -1;
|
||||
|
||||
bmp_load_addr = simple_strtoul(env_splashimage_value, 0, 16);
|
||||
if (bmp_load_addr == 0) {
|
||||
printf("Error: bad splashimage address specified\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return splash_load_from_nand(bmp_load_addr);
|
||||
return cl_splash_screen_prepare(CM_T35_SPLASH_NAND_OFFSET);
|
||||
}
|
||||
#endif /* CONFIG_LCD */
|
||||
|
||||
/*
|
||||
* Routine: board_init
|
||||
|
@ -154,34 +90,18 @@ int board_init(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static u32 cm_t3x_rev;
|
||||
|
||||
/*
|
||||
* Routine: get_board_rev
|
||||
* Description: read system revision
|
||||
*/
|
||||
u32 get_board_rev(void)
|
||||
{
|
||||
if (!cm_t3x_rev)
|
||||
cm_t3x_rev = cl_eeprom_get_board_rev();
|
||||
|
||||
return cm_t3x_rev;
|
||||
return cl_eeprom_get_board_rev();
|
||||
};
|
||||
|
||||
/*
|
||||
* Routine: misc_init_r
|
||||
* Description: display die ID
|
||||
*/
|
||||
int misc_init_r(void)
|
||||
{
|
||||
u32 board_rev = get_board_rev();
|
||||
u32 rev_major = board_rev / 100;
|
||||
u32 rev_minor = board_rev - (rev_major * 100);
|
||||
|
||||
if ((rev_minor / 10) * 10 == rev_minor)
|
||||
rev_minor = rev_minor / 10;
|
||||
|
||||
printf("PCB: %u.%u\n", rev_major, rev_minor);
|
||||
cl_print_pcb_info();
|
||||
dieid_num_r();
|
||||
|
||||
return 0;
|
||||
|
@ -462,37 +382,12 @@ int board_mmc_init(bd_t *bis)
|
|||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Routine: setup_net_chip_gmpc
|
||||
* Description: Setting up the configuration GPMC registers specific to the
|
||||
* Ethernet hardware.
|
||||
*/
|
||||
static void setup_net_chip_gmpc(void)
|
||||
{
|
||||
struct ctrl *ctrl_base = (struct ctrl *)OMAP34XX_CTRL_BASE;
|
||||
|
||||
enable_gpmc_cs_config(gpmc_net_config, &gpmc_cfg->cs[5],
|
||||
CM_T3X_SMC911X_BASE, GPMC_SIZE_16M);
|
||||
enable_gpmc_cs_config(gpmc_net_config, &gpmc_cfg->cs[4],
|
||||
SB_T35_SMC911X_BASE, GPMC_SIZE_16M);
|
||||
|
||||
/* Enable off mode for NWE in PADCONF_GPMC_NWE register */
|
||||
writew(readw(&ctrl_base->gpmc_nwe) | 0x0E00, &ctrl_base->gpmc_nwe);
|
||||
|
||||
/* Enable off mode for NOE in PADCONF_GPMC_NADV_ALE register */
|
||||
writew(readw(&ctrl_base->gpmc_noe) | 0x0E00, &ctrl_base->gpmc_noe);
|
||||
|
||||
/* Enable off mode for ALE in PADCONF_GPMC_NADV_ALE register */
|
||||
writew(readw(&ctrl_base->gpmc_nadv_ale) | 0x0E00,
|
||||
&ctrl_base->gpmc_nadv_ale);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SYS_I2C_OMAP34XX
|
||||
/*
|
||||
* Routine: reset_net_chip
|
||||
* Description: reset the Ethernet controller via TPS65930 GPIO
|
||||
*/
|
||||
static void reset_net_chip(void)
|
||||
static int cm_t3x_reset_net_chip(int gpio)
|
||||
{
|
||||
/* Set GPIO1 of TPS65930 as output */
|
||||
twl4030_i2c_write_u8(TWL4030_CHIP_GPIO, TWL4030_BASEADD_GPIO + 0x03,
|
||||
|
@ -507,9 +402,10 @@ static void reset_net_chip(void)
|
|||
twl4030_i2c_write_u8(TWL4030_CHIP_GPIO, TWL4030_BASEADD_GPIO + 0x0C,
|
||||
0x02);
|
||||
mdelay(1);
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
static inline void reset_net_chip(void) {}
|
||||
static inline int cm_t3x_reset_net_chip(int gpio) { return 0; }
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SMC911X
|
||||
|
@ -536,7 +432,6 @@ static int handle_mac_address(void)
|
|||
return eth_setenv_enetaddr("ethaddr", enetaddr);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Routine: board_eth_init
|
||||
* Description: initialize module and base-board Ethernet chips
|
||||
|
@ -545,18 +440,16 @@ int board_eth_init(bd_t *bis)
|
|||
{
|
||||
int rc = 0, rc1 = 0;
|
||||
|
||||
setup_net_chip_gmpc();
|
||||
reset_net_chip();
|
||||
|
||||
rc1 = handle_mac_address();
|
||||
if (rc1)
|
||||
printf("No MAC address found! ");
|
||||
|
||||
rc1 = smc911x_initialize(0, CM_T3X_SMC911X_BASE);
|
||||
rc1 = cl_omap3_smc911x_init(0, 5, CM_T3X_SMC911X_BASE,
|
||||
cm_t3x_reset_net_chip, -EINVAL);
|
||||
if (rc1 > 0)
|
||||
rc++;
|
||||
|
||||
rc1 = smc911x_initialize(1, SB_T35_SMC911X_BASE);
|
||||
rc1 = cl_omap3_smc911x_init(1, 4, SB_T35_SMC911X_BASE, NULL, -EINVAL);
|
||||
if (rc1 > 0)
|
||||
rc++;
|
||||
|
||||
|
@ -564,16 +457,6 @@ int board_eth_init(bd_t *bis)
|
|||
}
|
||||
#endif
|
||||
|
||||
void __weak get_board_serial(struct tag_serialnr *serialnr)
|
||||
{
|
||||
/*
|
||||
* This corresponds to what happens when we can communicate with the
|
||||
* eeprom but don't get a valid board serial value.
|
||||
*/
|
||||
serialnr->low = 0;
|
||||
serialnr->high = 0;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_USB_EHCI_OMAP
|
||||
struct omap_usbhs_board_data usbhs_bdata = {
|
||||
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
||||
|
@ -583,21 +466,12 @@ struct omap_usbhs_board_data usbhs_bdata = {
|
|||
|
||||
#define SB_T35_USB_HUB_RESET_GPIO 167
|
||||
int ehci_hcd_init(int index, enum usb_init_type init,
|
||||
struct ehci_hccr **hccr, struct ehci_hcor **hcor)
|
||||
struct ehci_hccr **hccr, struct ehci_hcor **hcor)
|
||||
{
|
||||
u8 val;
|
||||
int offset;
|
||||
|
||||
if (gpio_request(SB_T35_USB_HUB_RESET_GPIO, "SB-T35 usb hub reset")) {
|
||||
printf("Error: can't obtain GPIO %d for SB-T35 usb hub reset",
|
||||
SB_T35_USB_HUB_RESET_GPIO);
|
||||
return -1;
|
||||
}
|
||||
|
||||
gpio_direction_output(SB_T35_USB_HUB_RESET_GPIO, 0);
|
||||
udelay(10);
|
||||
gpio_set_value(SB_T35_USB_HUB_RESET_GPIO, 1);
|
||||
udelay(1000);
|
||||
cl_usb_hub_init(SB_T35_USB_HUB_RESET_GPIO, "sb-t35 hub rst");
|
||||
|
||||
offset = TWL4030_BASEADD_GPIO + TWL4030_GPIO_GPIODATADIR1;
|
||||
twl4030_i2c_read_u8(TWL4030_CHIP_GPIO, offset, &val);
|
||||
|
@ -614,6 +488,7 @@ int ehci_hcd_init(int index, enum usb_init_type init,
|
|||
|
||||
int ehci_hcd_stop(void)
|
||||
{
|
||||
cl_usb_hub_deinit(SB_T35_USB_HUB_RESET_GPIO);
|
||||
return omap_ehci_hcd_stop();
|
||||
}
|
||||
#endif /* CONFIG_USB_EHCI_OMAP */
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
if TARGET_CM_T3517
|
||||
|
||||
config SYS_BOARD
|
||||
default "cm_t3517"
|
||||
|
||||
config SYS_VENDOR
|
||||
default "compulab"
|
||||
|
||||
config SYS_CONFIG_NAME
|
||||
default "cm_t3517"
|
||||
|
||||
endif
|
|
@ -0,0 +1,6 @@
|
|||
CM_T3517 BOARD
|
||||
M: Igor Grinberg <grinberg@compulab.co.il>
|
||||
S: Maintained
|
||||
F: board/compulab/cm_t3517/
|
||||
F: include/configs/cm_t3517.h
|
||||
F: configs/cm_t3517_defconfig
|
|
@ -0,0 +1,9 @@
|
|||
#
|
||||
# (C) Copyright 2014 CompuLab, Ltd. <www.compulab.co.il>
|
||||
#
|
||||
# Authors: Igor Grinberg <grinberg@compulab.co.il>
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
|
||||
obj-y += cm_t3517.o mux.o
|
|
@ -0,0 +1,231 @@
|
|||
/*
|
||||
* (C) Copyright 2014 CompuLab, Ltd. <www.compulab.co.il>
|
||||
*
|
||||
* Authors: Igor Grinberg <grinberg@compulab.co.il>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <status_led.h>
|
||||
#include <net.h>
|
||||
#include <netdev.h>
|
||||
#include <usb.h>
|
||||
#include <mmc.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/usb/musb.h>
|
||||
|
||||
#include <asm/io.h>
|
||||
#include <asm/arch/mem.h>
|
||||
#include <asm/arch/am35x_def.h>
|
||||
#include <asm/arch/mmc_host_def.h>
|
||||
#include <asm/arch/sys_proto.h>
|
||||
#include <asm/arch/musb.h>
|
||||
#include <asm/omap_musb.h>
|
||||
#include <asm/ehci-omap.h>
|
||||
|
||||
#include "../common/common.h"
|
||||
#include "../common/eeprom.h"
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
const omap3_sysinfo sysinfo = {
|
||||
DDR_DISCRETE,
|
||||
"CM-T3517 board",
|
||||
"NAND 128/512M",
|
||||
};
|
||||
|
||||
#ifdef CONFIG_USB_MUSB_AM35X
|
||||
static struct musb_hdrc_config cm_t3517_musb_config = {
|
||||
.multipoint = 1,
|
||||
.dyn_fifo = 1,
|
||||
.num_eps = 16,
|
||||
.ram_bits = 12,
|
||||
};
|
||||
|
||||
static struct omap_musb_board_data cm_t3517_musb_board_data = {
|
||||
.set_phy_power = am35x_musb_phy_power,
|
||||
.clear_irq = am35x_musb_clear_irq,
|
||||
.reset = am35x_musb_reset,
|
||||
};
|
||||
|
||||
static struct musb_hdrc_platform_data cm_t3517_musb_pdata = {
|
||||
#if defined(CONFIG_MUSB_HOST)
|
||||
.mode = MUSB_HOST,
|
||||
#elif defined(CONFIG_MUSB_GADGET)
|
||||
.mode = MUSB_PERIPHERAL,
|
||||
#else
|
||||
#error "Please define either CONFIG_MUSB_HOST or CONFIG_MUSB_GADGET"
|
||||
#endif
|
||||
.config = &cm_t3517_musb_config,
|
||||
.power = 250,
|
||||
.platform_ops = &am35x_ops,
|
||||
.board_data = &cm_t3517_musb_board_data,
|
||||
};
|
||||
|
||||
static void cm_t3517_musb_init(void)
|
||||
{
|
||||
/*
|
||||
* Set up USB clock/mode in the DEVCONF2 register.
|
||||
* USB2.0 PHY reference clock is 13 MHz
|
||||
*/
|
||||
clrsetbits_le32(&am35x_scm_general_regs->devconf2,
|
||||
CONF2_REFFREQ | CONF2_OTGMODE | CONF2_PHY_GPIOMODE,
|
||||
CONF2_REFFREQ_13MHZ | CONF2_SESENDEN |
|
||||
CONF2_VBDTCTEN | CONF2_DATPOL);
|
||||
|
||||
if (musb_register(&cm_t3517_musb_pdata, &cm_t3517_musb_board_data,
|
||||
(void *)AM35XX_IPSS_USBOTGSS_BASE))
|
||||
printf("Failed initializing AM35x MUSB!\n");
|
||||
}
|
||||
#else
|
||||
static inline void am3517_evm_musb_init(void) {}
|
||||
#endif
|
||||
|
||||
int board_init(void)
|
||||
{
|
||||
gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
|
||||
|
||||
/* boot param addr */
|
||||
gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100);
|
||||
|
||||
#if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT)
|
||||
status_led_set(STATUS_LED_BOOT, STATUS_LED_ON);
|
||||
#endif
|
||||
|
||||
cm_t3517_musb_init();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int misc_init_r(void)
|
||||
{
|
||||
cl_print_pcb_info();
|
||||
dieid_num_r();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_GENERIC_MMC) && !defined(CONFIG_SPL_BUILD)
|
||||
#define SB_T35_CD_GPIO 144
|
||||
#define SB_T35_WP_GPIO 59
|
||||
|
||||
int board_mmc_init(bd_t *bis)
|
||||
{
|
||||
return omap_mmc_init(0, 0, 0, SB_T35_CD_GPIO, SB_T35_WP_GPIO);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DRIVER_TI_EMAC
|
||||
#define CONTROL_EFUSE_EMAC_LSB 0x48002380
|
||||
#define CONTROL_EFUSE_EMAC_MSB 0x48002384
|
||||
|
||||
static int am3517_get_efuse_enetaddr(u8 *enetaddr)
|
||||
{
|
||||
u32 lsb = __raw_readl(CONTROL_EFUSE_EMAC_LSB);
|
||||
u32 msb = __raw_readl(CONTROL_EFUSE_EMAC_MSB);
|
||||
|
||||
enetaddr[0] = (u8)((msb >> 16) & 0xff);
|
||||
enetaddr[1] = (u8)((msb >> 8) & 0xff);
|
||||
enetaddr[2] = (u8)(msb & 0xff);
|
||||
enetaddr[3] = (u8)((lsb >> 16) & 0xff);
|
||||
enetaddr[4] = (u8)((lsb >> 8) & 0xff);
|
||||
enetaddr[5] = (u8)(lsb & 0xff);
|
||||
|
||||
return is_valid_ether_addr(enetaddr);
|
||||
}
|
||||
|
||||
static inline int cm_t3517_init_emac(bd_t *bis)
|
||||
{
|
||||
int ret = cpu_eth_init(bis);
|
||||
|
||||
if (ret > 0)
|
||||
return ret;
|
||||
|
||||
printf("Failed initializing EMAC! ");
|
||||
return 0;
|
||||
}
|
||||
#else /* !CONFIG_DRIVER_TI_EMAC */
|
||||
static inline int am3517_get_efuse_enetaddr(u8 *enetaddr) { return 1; }
|
||||
static inline int cm_t3517_init_emac(bd_t *bis) { return 0; }
|
||||
#endif /* CONFIG_DRIVER_TI_EMAC */
|
||||
|
||||
/*
|
||||
* Routine: handle_mac_address
|
||||
* Description: prepare MAC address for on-board Ethernet.
|
||||
*/
|
||||
static int cm_t3517_handle_mac_address(void)
|
||||
{
|
||||
unsigned char enetaddr[6];
|
||||
int ret;
|
||||
|
||||
ret = eth_getenv_enetaddr("ethaddr", enetaddr);
|
||||
if (ret)
|
||||
return 0;
|
||||
|
||||
ret = cl_eeprom_read_mac_addr(enetaddr);
|
||||
if (ret) {
|
||||
ret = am3517_get_efuse_enetaddr(enetaddr);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (!is_valid_ether_addr(enetaddr))
|
||||
return -1;
|
||||
|
||||
return eth_setenv_enetaddr("ethaddr", enetaddr);
|
||||
}
|
||||
|
||||
#define SB_T35_ETH_RST_GPIO 164
|
||||
|
||||
/*
|
||||
* Routine: board_eth_init
|
||||
* Description: initialize module and base-board Ethernet chips
|
||||
*/
|
||||
int board_eth_init(bd_t *bis)
|
||||
{
|
||||
int rc = 0, rc1 = 0;
|
||||
|
||||
rc1 = cm_t3517_handle_mac_address();
|
||||
if (rc1)
|
||||
printf("No MAC address found! ");
|
||||
|
||||
rc1 = cm_t3517_init_emac(bis);
|
||||
if (rc1 > 0)
|
||||
rc++;
|
||||
|
||||
rc1 = cl_omap3_smc911x_init(0, 4, CONFIG_SMC911X_BASE,
|
||||
NULL, SB_T35_ETH_RST_GPIO);
|
||||
if (rc1 > 0)
|
||||
rc++;
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_USB_EHCI_OMAP
|
||||
static struct omap_usbhs_board_data cm_t3517_usbhs_bdata = {
|
||||
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
||||
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
||||
.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
|
||||
};
|
||||
|
||||
#define CM_T3517_USB_HUB_RESET_GPIO 152
|
||||
#define SB_T35_USB_HUB_RESET_GPIO 98
|
||||
|
||||
int ehci_hcd_init(int index, enum usb_init_type init,
|
||||
struct ehci_hccr **hccr, struct ehci_hcor **hcor)
|
||||
{
|
||||
cl_usb_hub_init(CM_T3517_USB_HUB_RESET_GPIO, "cm-t3517 hub rst");
|
||||
cl_usb_hub_init(SB_T35_USB_HUB_RESET_GPIO, "sb-t35 hub rst");
|
||||
|
||||
return omap_ehci_hcd_init(index, &cm_t3517_usbhs_bdata, hccr, hcor);
|
||||
}
|
||||
|
||||
int ehci_hcd_stop(void)
|
||||
{
|
||||
cl_usb_hub_deinit(CM_T3517_USB_HUB_RESET_GPIO);
|
||||
cl_usb_hub_deinit(SB_T35_USB_HUB_RESET_GPIO);
|
||||
|
||||
return omap_ehci_hcd_stop();
|
||||
}
|
||||
#endif /* CONFIG_USB_EHCI_OMAP */
|
|
@ -0,0 +1,236 @@
|
|||
/*
|
||||
* (C) Copyright 2014 CompuLab, Ltd. <www.compulab.co.il>
|
||||
*
|
||||
* Authors: Igor Grinberg <grinberg@compulab.co.il>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <asm/arch/sys_proto.h>
|
||||
#include <asm/arch/mux.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
void set_muxconf_regs(void)
|
||||
{
|
||||
/* SDRC */
|
||||
MUX_VAL(CP(SDRC_D0), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D1), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D2), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D3), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D4), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D5), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D6), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D7), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D8), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D9), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D10), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D11), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D12), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D13), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D14), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D15), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D16), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D17), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D18), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D19), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D20), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D21), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D22), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D23), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D24), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D25), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D26), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D27), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D28), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D29), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D30), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_D31), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_CLK), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_DQS0), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_DQS1), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_DQS2), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_DQS3), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(SDRC_CKE0), (IDIS | PTU | EN | M0));
|
||||
MUX_VAL(CP(SDRC_CKE1), (IDIS | PTD | DIS | M7));
|
||||
|
||||
/* GPMC */
|
||||
MUX_VAL(CP(GPMC_A1), (IDIS | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_A2), (IDIS | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_A3), (IDIS | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_A4), (IDIS | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_A5), (IDIS | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_A6), (IDIS | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_A7), (IDIS | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_A8), (IDIS | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_A9), (IDIS | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_A10), (IDIS | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_D0), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_D1), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_D2), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_D3), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_D4), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_D5), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_D6), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_D7), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_D8), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_D9), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_D10), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_D11), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_D12), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_D13), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_D14), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_D15), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(GPMC_NCS0), (IDIS | PTU | EN | M0));
|
||||
|
||||
/* SB-T35 Ethernet */
|
||||
MUX_VAL(CP(GPMC_NCS4), (IEN | PTU | EN | M0));
|
||||
/* DVI enable */
|
||||
MUX_VAL(CP(GPMC_NCS3), (IDIS | PTU | DIS | M4));/*GPIO_54*/
|
||||
/* DataImage backlight */
|
||||
MUX_VAL(CP(GPMC_NCS7), (IDIS | PTU | DIS | M4));/*GPIO_58*/
|
||||
|
||||
/* SB-T35 SD/MMC WP GPIO59 */
|
||||
MUX_VAL(CP(GPMC_CLK), (IEN | PTU | EN | M4)); /*GPIO_59*/
|
||||
MUX_VAL(CP(GPMC_NWE), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(GPMC_NOE), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(GPMC_NADV_ALE), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(GPMC_NBE0_CLE), (IDIS | PTU | EN | M0));
|
||||
/* SB-T35 Audio Enable GPIO61 */
|
||||
MUX_VAL(CP(GPMC_NBE1), (IDIS | PTU | EN | M4)); /*GPIO_61*/
|
||||
MUX_VAL(CP(GPMC_NWP), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(GPMC_WAIT0), (IEN | PTU | EN | M0));
|
||||
/* SB-T35 Ethernet IRQ GPIO65 */
|
||||
MUX_VAL(CP(GPMC_WAIT3), (IEN | PTU | EN | M4)); /*GPIO_65*/
|
||||
|
||||
/* UART3 Console */
|
||||
MUX_VAL(CP(UART3_RX_IRRX), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(UART3_TX_IRTX), (IDIS | PTD | DIS | M0));
|
||||
/* RTC V3020 nCS GPIO163 */
|
||||
MUX_VAL(CP(UART3_CTS_RCTX), (IEN | PTU | EN | M4)); /*GPIO_163*/
|
||||
/* SB-T35 Ethernet nRESET GPIO164 */
|
||||
MUX_VAL(CP(UART3_RTS_SD), (IDIS | PTU | EN | M4)); /*GPIO_164*/
|
||||
|
||||
/* SB-T35 SD/MMC CD GPIO144 */
|
||||
MUX_VAL(CP(UART2_CTS), (IEN | PTU | EN | M4)); /*GPIO_144*/
|
||||
/* WIFI nRESET GPIO145 */
|
||||
MUX_VAL(CP(UART2_RTS), (IEN | PTD | EN | M4)); /*GPIO_145*/
|
||||
/* USB1 PHY Reset GPIO 146 */
|
||||
MUX_VAL(CP(UART2_TX), (IEN | PTD | EN | M4)); /*GPIO_146*/
|
||||
/* USB2 PHY Reset GPIO 147 */
|
||||
MUX_VAL(CP(UART2_RX), (IEN | PTD | EN | M4)); /*GPIO_147*/
|
||||
|
||||
/* MMC1 */
|
||||
MUX_VAL(CP(MMC1_CLK), (IDIS | PTU | EN | M0));
|
||||
MUX_VAL(CP(MMC1_CMD), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(MMC1_DAT0), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(MMC1_DAT1), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(MMC1_DAT2), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(MMC1_DAT3), (IEN | PTU | EN | M0));
|
||||
|
||||
/* DSS */
|
||||
MUX_VAL(CP(DSS_PCLK), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_HSYNC), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_VSYNC), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_ACBIAS), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA0), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA1), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA2), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA3), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA4), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA5), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA6), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA7), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA8), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA9), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA10), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA11), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA12), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA13), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA14), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA15), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA16), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA17), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA18), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA19), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA20), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA21), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA22), (IDIS | PTD | DIS | M0));
|
||||
MUX_VAL(CP(DSS_DATA23), (IDIS | PTD | DIS | M0));
|
||||
|
||||
/* I2C */
|
||||
MUX_VAL(CP(I2C1_SCL), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(I2C1_SDA), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(I2C3_SCL), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(I2C3_SDA), (IEN | PTU | EN | M0));
|
||||
|
||||
/* SB-T35 USB HUB Reset GPIO98 */
|
||||
MUX_VAL(CP(CCDC_WEN), (IDIS | PTU | EN | M4)); /*GPIO_98*/
|
||||
/* CM-T3517 USB HUB Reset GPIO152 */
|
||||
MUX_VAL(CP(MCBSP4_CLKX), (IDIS | PTD | DIS | M4)); /*GPIO_152*/
|
||||
|
||||
/* RMII */
|
||||
MUX_VAL(CP(RMII_MDIO_DATA), (IEN | PTU | EN | M0));
|
||||
MUX_VAL(CP(RMII_MDIO_CLK), (M0));
|
||||
MUX_VAL(CP(RMII_RXD0), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(RMII_RXD1), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(RMII_CRS_DV), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(RMII_RXER), (IEN | PTD | DIS | M0));
|
||||
MUX_VAL(CP(RMII_TXD0), (IDIS | M0));
|
||||
MUX_VAL(CP(RMII_TXD1), (IDIS | M0));
|
||||
MUX_VAL(CP(RMII_TXEN), (IDIS | M0));
|
||||
MUX_VAL(CP(RMII_50MHZ_CLK), (IEN | PTU | DIS | M0));
|
||||
|
||||
/* Green LED GPIO186 */
|
||||
MUX_VAL(CP(SYS_CLKOUT2), (IDIS | PTU | DIS | M4)); /*GPIO_186*/
|
||||
|
||||
/* SPI */
|
||||
MUX_VAL(CP(MCBSP1_CLKR), (IEN | PTD | DIS | M1)); /*MCSPI4_CLK*/
|
||||
MUX_VAL(CP(MCBSP1_DX), (IEN | PTD | DIS | M1)); /*MCSPI4_SIMO*/
|
||||
MUX_VAL(CP(MCBSP1_DR), (IEN | PTD | DIS | M1)); /*MCSPI4_SOMI*/
|
||||
MUX_VAL(CP(MCBSP1_FSX), (IEN | PTU | EN | M1)); /*MCSPI4_CS0*/
|
||||
/* LCD reset GPIO157 */
|
||||
MUX_VAL(CP(MCBSP1_FSR), (IDIS | PTU | DIS | M4)); /*GPIO_157*/
|
||||
|
||||
/* RTC V3020 CS Enable GPIO160 */
|
||||
MUX_VAL(CP(MCBSP_CLKS), (IEN | PTD | EN | M4)); /*GPIO_160*/
|
||||
/* SB-T35 LVDS Transmitter SHDN GPIO162 */
|
||||
MUX_VAL(CP(MCBSP1_CLKX), (IEN | PTU | DIS | M4)); /*GPIO_162*/
|
||||
|
||||
/* USB0 - mUSB */
|
||||
MUX_VAL(CP(USB0_DRVBUS), (IEN | PTD | EN | M0));
|
||||
/* USB1 EHCI */
|
||||
MUX_VAL(CP(ETK_D0_ES2), (IEN | PTD | EN | M3)); /*HSUSB1_DT0*/
|
||||
MUX_VAL(CP(ETK_D1_ES2), (IEN | PTD | EN | M3)); /*HSUSB1_DT1*/
|
||||
MUX_VAL(CP(ETK_D2_ES2), (IEN | PTD | EN | M3)); /*HSUSB1_DT2*/
|
||||
MUX_VAL(CP(ETK_D7_ES2), (IEN | PTD | EN | M3)); /*HSUSB1_DT3*/
|
||||
MUX_VAL(CP(ETK_D4_ES2), (IEN | PTD | EN | M3)); /*HSUSB1_DT4*/
|
||||
MUX_VAL(CP(ETK_D5_ES2), (IEN | PTD | EN | M3)); /*HSUSB1_DT5*/
|
||||
MUX_VAL(CP(ETK_D6_ES2), (IEN | PTD | EN | M3)); /*HSUSB1_DT6*/
|
||||
MUX_VAL(CP(ETK_D3_ES2), (IEN | PTD | EN | M3)); /*HSUSB1_DT7*/
|
||||
MUX_VAL(CP(ETK_D8_ES2), (IEN | PTD | EN | M3)); /*HSUSB1_DIR*/
|
||||
MUX_VAL(CP(ETK_D9_ES2), (IEN | PTD | EN | M3)); /*HSUSB1_NXT*/
|
||||
MUX_VAL(CP(ETK_CTL_ES2), (IDIS | PTD | DIS | M3)); /*HSUSB1_CLK*/
|
||||
MUX_VAL(CP(ETK_CLK_ES2), (IDIS | PTU | DIS | M3)); /*HSUSB1_STP*/
|
||||
/* USB2 EHCI */
|
||||
MUX_VAL(CP(ETK_D14_ES2), (IEN | PTD | EN | M3)); /*HSUSB2_DT0*/
|
||||
MUX_VAL(CP(ETK_D15_ES2), (IEN | PTD | EN | M3)); /*HSUSB2_DT1*/
|
||||
MUX_VAL(CP(MCSPI1_CS3), (IEN | PTD | EN | M3)); /*HSUSB2_DT2*/
|
||||
MUX_VAL(CP(MCSPI2_CS1), (IEN | PTD | EN | M3)); /*HSUSB2_DT3*/
|
||||
MUX_VAL(CP(MCSPI2_SIMO), (IEN | PTD | EN | M3)); /*HSUSB2_DT4*/
|
||||
MUX_VAL(CP(MCSPI2_SOMI), (IEN | PTD | EN | M3)); /*HSUSB2_DT5*/
|
||||
MUX_VAL(CP(MCSPI2_CS0), (IEN | PTD | EN | M3)); /*HSUSB2_DT6*/
|
||||
MUX_VAL(CP(MCSPI2_CLK), (IEN | PTD | EN | M3)); /*HSUSB2_DT7*/
|
||||
MUX_VAL(CP(ETK_D12_ES2), (IEN | PTD | EN | M3)); /*HSUSB2_DIR*/
|
||||
MUX_VAL(CP(ETK_D13_ES2), (IEN | PTD | EN | M3)); /*HSUSB2_NXT*/
|
||||
MUX_VAL(CP(ETK_D10_ES2), (IDIS | PTD | DIS | M3)); /*HSUSB2_CLK*/
|
||||
MUX_VAL(CP(ETK_D11_ES2), (IDIS | PTU | DIS | M3)); /*HSUSB2_STP*/
|
||||
|
||||
/* SYS_BOOT */
|
||||
MUX_VAL(CP(SYS_BOOT0), (IEN | PTU | DIS | M4)); /*GPIO_2*/
|
||||
MUX_VAL(CP(SYS_BOOT1), (IEN | PTU | DIS | M4)); /*GPIO_3*/
|
||||
MUX_VAL(CP(SYS_BOOT2), (IEN | PTU | DIS | M4)); /*GPIO_4*/
|
||||
MUX_VAL(CP(SYS_BOOT3), (IEN | PTU | DIS | M4)); /*GPIO_5*/
|
||||
MUX_VAL(CP(SYS_BOOT4), (IEN | PTU | DIS | M4)); /*GPIO_6*/
|
||||
MUX_VAL(CP(SYS_BOOT5), (IEN | PTU | DIS | M4)); /*GPIO_7*/
|
||||
}
|
|
@ -100,16 +100,11 @@ uint mmc_get_env_part(struct mmc *mmc)
|
|||
#define SB_T54_CD_GPIO 228
|
||||
#define SB_T54_WP_GPIO 229
|
||||
|
||||
int board_mmc_getcd(struct mmc *mmc)
|
||||
{
|
||||
return !gpio_get_value(SB_T54_CD_GPIO);
|
||||
}
|
||||
|
||||
int board_mmc_init(bd_t *bis)
|
||||
{
|
||||
int ret0, ret1;
|
||||
|
||||
ret0 = omap_mmc_init(0, 0, 0, -1, SB_T54_WP_GPIO);
|
||||
ret0 = omap_mmc_init(0, 0, 0, SB_T54_CD_GPIO, SB_T54_WP_GPIO);
|
||||
if (ret0)
|
||||
printf("cm_t54: failed to initialize mmc0\n");
|
||||
|
||||
|
|
|
@ -6,5 +6,8 @@
|
|||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
|
||||
obj-$(CONFIG_SYS_I2C) += eeprom.o
|
||||
obj-$(CONFIG_LCD) += omap3_display.o
|
||||
obj-y += common.o
|
||||
obj-$(CONFIG_SYS_I2C) += eeprom.o
|
||||
obj-$(CONFIG_LCD) += omap3_display.o
|
||||
obj-$(CONFIG_SPLASH_SCREEN) += splash.o
|
||||
obj-$(CONFIG_SMC911X) += omap3_smc911x.o
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
/*
|
||||
* (C) Copyright 2014 CompuLab, Ltd. <www.compulab.co.il>
|
||||
*
|
||||
* Authors: Igor Grinberg <grinberg@compulab.co.il>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <asm/bootm.h>
|
||||
#include <asm/gpio.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "eeprom.h"
|
||||
|
||||
void cl_print_pcb_info(void)
|
||||
{
|
||||
u32 board_rev = get_board_rev();
|
||||
u32 rev_major = board_rev / 100;
|
||||
u32 rev_minor = board_rev - (rev_major * 100);
|
||||
|
||||
if ((rev_minor / 10) * 10 == rev_minor)
|
||||
rev_minor = rev_minor / 10;
|
||||
|
||||
printf("PCB: %u.%u\n", rev_major, rev_minor);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SERIAL_TAG
|
||||
void __weak get_board_serial(struct tag_serialnr *serialnr)
|
||||
{
|
||||
/*
|
||||
* This corresponds to what happens when we can communicate with the
|
||||
* eeprom but don't get a valid board serial value.
|
||||
*/
|
||||
serialnr->low = 0;
|
||||
serialnr->high = 0;
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CMD_USB
|
||||
int cl_usb_hub_init(int gpio, const char *label)
|
||||
{
|
||||
if (gpio_request(gpio, label)) {
|
||||
printf("Error: can't obtain GPIO%d for %s", gpio, label);
|
||||
return -1;
|
||||
}
|
||||
|
||||
gpio_direction_output(gpio, 0);
|
||||
udelay(10);
|
||||
gpio_set_value(gpio, 1);
|
||||
udelay(1000);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void cl_usb_hub_deinit(int gpio)
|
||||
{
|
||||
gpio_free(gpio);
|
||||
}
|
||||
#endif
|
|
@ -0,0 +1,47 @@
|
|||
/*
|
||||
* (C) Copyright 2014 CompuLab, Ltd. <www.compulab.co.il>
|
||||
*
|
||||
* Authors: Igor Grinberg <grinberg@compulab.co.il>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef _CL_COMMON_
|
||||
#define _CL_COMMON_
|
||||
|
||||
#include <asm/errno.h>
|
||||
|
||||
void cl_print_pcb_info(void);
|
||||
|
||||
#ifdef CONFIG_CMD_USB
|
||||
int cl_usb_hub_init(int gpio, const char *label);
|
||||
void cl_usb_hub_deinit(int gpio);
|
||||
#else /* !CONFIG_CMD_USB */
|
||||
static inline int cl_usb_hub_init(int gpio, const char *label)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
static inline void cl_usb_hub_deinit(int gpio) {}
|
||||
#endif /* CONFIG_CMD_USB */
|
||||
|
||||
#ifdef CONFIG_SPLASH_SCREEN
|
||||
int cl_splash_screen_prepare(int nand_offset);
|
||||
#else /* !CONFIG_SPLASH_SCREEN */
|
||||
static inline int cl_splash_screen_prepare(int nand_offset)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
#endif /* CONFIG_SPLASH_SCREEN */
|
||||
|
||||
#ifdef CONFIG_SMC911X
|
||||
int cl_omap3_smc911x_init(int id, int cs, u32 base_addr,
|
||||
int (*reset)(int), int rst_gpio);
|
||||
#else /* !CONFIG_SMC911X */
|
||||
static inline int cl_omap3_smc911x_init(int id, int cs, u32 base_addr,
|
||||
int (*reset)(int), int rst_gpio)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
#endif /* CONFIG_SMC911X */
|
||||
|
||||
#endif /* _CL_COMMON_ */
|
|
@ -109,23 +109,27 @@ int cl_eeprom_read_mac_addr(uchar *buf)
|
|||
return cl_eeprom_read(offset, buf, 6);
|
||||
}
|
||||
|
||||
static u32 board_rev;
|
||||
|
||||
/*
|
||||
* Routine: cl_eeprom_get_board_rev
|
||||
* Description: read system revision from eeprom
|
||||
*/
|
||||
u32 cl_eeprom_get_board_rev(void)
|
||||
{
|
||||
u32 rev = 0;
|
||||
char str[5]; /* Legacy representation can contain at most 4 digits */
|
||||
uint offset = BOARD_REV_OFFSET_LEGACY;
|
||||
|
||||
if (board_rev)
|
||||
return board_rev;
|
||||
|
||||
if (cl_eeprom_setup_layout())
|
||||
return 0;
|
||||
|
||||
if (cl_eeprom_layout != LAYOUT_LEGACY)
|
||||
offset = BOARD_REV_OFFSET;
|
||||
|
||||
if (cl_eeprom_read(offset, (uchar *)&rev, BOARD_REV_SIZE))
|
||||
if (cl_eeprom_read(offset, (uchar *)&board_rev, BOARD_REV_SIZE))
|
||||
return 0;
|
||||
|
||||
/*
|
||||
|
@ -133,9 +137,9 @@ u32 cl_eeprom_get_board_rev(void)
|
|||
* representation. i.e. for rev 1.00: 0x100 --> 0x64
|
||||
*/
|
||||
if (cl_eeprom_layout == LAYOUT_LEGACY) {
|
||||
sprintf(str, "%x", rev);
|
||||
rev = simple_strtoul(str, NULL, 10);
|
||||
sprintf(str, "%x", board_rev);
|
||||
board_rev = simple_strtoul(str, NULL, 10);
|
||||
}
|
||||
|
||||
return rev;
|
||||
return board_rev;
|
||||
};
|
||||
|
|
|
@ -0,0 +1,93 @@
|
|||
/*
|
||||
* (C) Copyright 2014 CompuLab, Ltd. <www.compulab.co.il>
|
||||
*
|
||||
* Authors: Igor Grinberg <grinberg@compulab.co.il>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <netdev.h>
|
||||
|
||||
#include <asm/io.h>
|
||||
#include <asm/errno.h>
|
||||
#include <asm/arch/cpu.h>
|
||||
#include <asm/arch/mem.h>
|
||||
#include <asm/arch/sys_proto.h>
|
||||
#include <asm/gpio.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
static u32 cl_omap3_smc911x_gpmc_net_config[GPMC_MAX_REG] = {
|
||||
NET_GPMC_CONFIG1,
|
||||
NET_GPMC_CONFIG2,
|
||||
NET_GPMC_CONFIG3,
|
||||
NET_GPMC_CONFIG4,
|
||||
NET_GPMC_CONFIG5,
|
||||
NET_GPMC_CONFIG6,
|
||||
0
|
||||
};
|
||||
|
||||
static void cl_omap3_smc911x_setup_net_chip_gmpc(int cs, u32 base_addr)
|
||||
{
|
||||
struct ctrl *ctrl_base = (struct ctrl *)OMAP34XX_CTRL_BASE;
|
||||
|
||||
enable_gpmc_cs_config(cl_omap3_smc911x_gpmc_net_config,
|
||||
&gpmc_cfg->cs[cs], base_addr, GPMC_SIZE_16M);
|
||||
|
||||
/* Enable off mode for NWE in PADCONF_GPMC_NWE register */
|
||||
writew(readw(&ctrl_base->gpmc_nwe) | 0x0E00, &ctrl_base->gpmc_nwe);
|
||||
|
||||
/* Enable off mode for NOE in PADCONF_GPMC_NADV_ALE register */
|
||||
writew(readw(&ctrl_base->gpmc_noe) | 0x0E00, &ctrl_base->gpmc_noe);
|
||||
|
||||
/* Enable off mode for ALE in PADCONF_GPMC_NADV_ALE register */
|
||||
writew(readw(&ctrl_base->gpmc_nadv_ale) | 0x0E00,
|
||||
&ctrl_base->gpmc_nadv_ale);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_OMAP_GPIO
|
||||
static int cl_omap3_smc911x_reset_net_chip(int gpio)
|
||||
{
|
||||
int err;
|
||||
|
||||
if (!gpio_is_valid(gpio))
|
||||
return -EINVAL;
|
||||
|
||||
err = gpio_request(gpio, "eth rst");
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
/* Set gpio as output and send a pulse */
|
||||
gpio_direction_output(gpio, 1);
|
||||
udelay(1);
|
||||
gpio_set_value(gpio, 0);
|
||||
mdelay(40);
|
||||
gpio_set_value(gpio, 1);
|
||||
mdelay(1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
#else /* !CONFIG_OMAP_GPIO */
|
||||
static inline int cl_omap3_smc911x_reset_net_chip(int gpio) { return 0; }
|
||||
#endif /* CONFIG_OMAP_GPIO */
|
||||
|
||||
int cl_omap3_smc911x_init(int id, int cs, u32 base_addr,
|
||||
int (*reset)(int), int rst_gpio)
|
||||
{
|
||||
int ret;
|
||||
|
||||
cl_omap3_smc911x_setup_net_chip_gmpc(cs, base_addr);
|
||||
|
||||
if (reset)
|
||||
reset(rst_gpio);
|
||||
else
|
||||
cl_omap3_smc911x_reset_net_chip(rst_gpio);
|
||||
|
||||
ret = smc911x_initialize(id, base_addr);
|
||||
if (ret > 0)
|
||||
return ret;
|
||||
|
||||
printf("Failed initializing SMC911x! ");
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
/*
|
||||
* (C) Copyright 2014 CompuLab, Ltd. <www.compulab.co.il>
|
||||
*
|
||||
* Authors: Igor Grinberg <grinberg@compulab.co.il>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <nand.h>
|
||||
#include <bmp_layout.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
#ifdef CONFIG_CMD_NAND
|
||||
static int splash_load_from_nand(u32 bmp_load_addr, int nand_offset)
|
||||
{
|
||||
struct bmp_header *bmp_hdr;
|
||||
int res;
|
||||
size_t bmp_size, bmp_header_size = sizeof(struct bmp_header);
|
||||
|
||||
if (bmp_load_addr + bmp_header_size >= gd->start_addr_sp)
|
||||
goto splash_address_too_high;
|
||||
|
||||
res = nand_read_skip_bad(&nand_info[nand_curr_device],
|
||||
nand_offset, &bmp_header_size,
|
||||
NULL, nand_info[nand_curr_device].size,
|
||||
(u_char *)bmp_load_addr);
|
||||
if (res < 0)
|
||||
return res;
|
||||
|
||||
bmp_hdr = (struct bmp_header *)bmp_load_addr;
|
||||
bmp_size = le32_to_cpu(bmp_hdr->file_size);
|
||||
|
||||
if (bmp_load_addr + bmp_size >= gd->start_addr_sp)
|
||||
goto splash_address_too_high;
|
||||
|
||||
return nand_read_skip_bad(&nand_info[nand_curr_device],
|
||||
nand_offset, &bmp_size,
|
||||
NULL, nand_info[nand_curr_device].size,
|
||||
(u_char *)bmp_load_addr);
|
||||
|
||||
splash_address_too_high:
|
||||
printf("Error: splashimage address too high. Data overwrites U-Boot "
|
||||
"and/or placed beyond DRAM boundaries.\n");
|
||||
|
||||
return -1;
|
||||
}
|
||||
#else
|
||||
static inline int splash_load_from_nand(u32 bmp_load_addr, int nand_offset)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
#endif /* CONFIG_CMD_NAND */
|
||||
|
||||
int cl_splash_screen_prepare(int nand_offset)
|
||||
{
|
||||
char *env_splashimage_value;
|
||||
u32 bmp_load_addr;
|
||||
|
||||
env_splashimage_value = getenv("splashimage");
|
||||
if (env_splashimage_value == NULL)
|
||||
return -1;
|
||||
|
||||
bmp_load_addr = simple_strtoul(env_splashimage_value, 0, 16);
|
||||
if (bmp_load_addr == 0) {
|
||||
printf("Error: bad splashimage address specified\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return splash_load_from_nand(bmp_load_addr, nand_offset);
|
||||
}
|
|
@ -229,7 +229,7 @@ int board_eth_init(bd_t *bis)
|
|||
#endif /* #ifdef CONFIG_FACTORYSET */
|
||||
|
||||
/* Set rgmii mode and enable rmii clock to be sourced from chip */
|
||||
writel(RGMII_MODE_ENABLE , &cdev->miisel);
|
||||
writel(RGMII_MODE_ENABLE | RGMII_INT_DELAY, &cdev->miisel);
|
||||
|
||||
rv = cpsw_register(&cpsw_data);
|
||||
if (rv < 0)
|
||||
|
|
|
@ -22,4 +22,19 @@ config CONS_INDEX
|
|||
board you may want something other than UART0 as for example the IDK
|
||||
uses UART3 so enter 4 here.
|
||||
|
||||
config NOR
|
||||
bool "Support for NOR flash"
|
||||
help
|
||||
The AM335x SoC supports having a NOR flash connected to the GPMC.
|
||||
In practice this is seen as a NOR flash module connected to the
|
||||
"memory cape" for the BeagleBone family.
|
||||
|
||||
config NOR_BOOT
|
||||
bool "Support for booting from NOR flash"
|
||||
depends on NOR
|
||||
help
|
||||
Enabling this will make a U-Boot binary that is capable of being
|
||||
booted via NOR. In this case we will enable certain pinmux early
|
||||
as the ROM only partially sets up pinmux. We also default to using
|
||||
NOR for environment.
|
||||
endif
|
||||
|
|
|
@ -3,10 +3,11 @@ U-Boot port for Texas Instruments Keystone II EVM boards
|
|||
|
||||
Author: Murali Karicheri <m-karicheri2@ti.com>
|
||||
|
||||
This README has information on the u-boot port for K2HK, K2E boards.
|
||||
This README has information on the u-boot port for K2HK, K2E, and K2L EVM boards.
|
||||
Documentation for this board can be found at
|
||||
http://www.advantech.com/Support/TI-EVM/EVMK2HX_sd.aspx
|
||||
https://www.einfochips.com/index.php/partnerships/texas-instruments/k2e-evm.html
|
||||
https://www.einfochips.com/index.php/partnerships/texas-instruments/k2l-evm.html
|
||||
|
||||
The K2HK board is based on Texas Instruments Keystone2 family of SoCs: K2H, K2K.
|
||||
More details on these SoCs are available at company websites
|
||||
|
@ -14,7 +15,10 @@ More details on these SoCs are available at company websites
|
|||
K2H: http://www.ti.com/product/tci6638k2h
|
||||
|
||||
The K2E SoC details are available at
|
||||
K2E http://www.ti.com/lit/ds/symlink/66ak2e05.pdf
|
||||
http://www.ti.com/lit/ds/symlink/66ak2e05.pdf
|
||||
|
||||
The K2L SoC details are available at
|
||||
http://www.ti.com/lit/ds/symlink/tci6630k2l.pdf
|
||||
|
||||
Board configuration:
|
||||
====================
|
||||
|
@ -25,6 +29,7 @@ Some of the peripherals that are configured by u-boot
|
|||
+------+-------+-------+-----------+-----------+-------+-------+----+
|
||||
|K2HK |2 |512MB |6MB |4(2) |2 |3 |3 |
|
||||
|K2E |4 |512MB |2MB |8(2) |2 |3 |3 |
|
||||
|K2L |2 |512MB |2MB |4(2) |4 |3 |3 |
|
||||
+------+-------+-------+-----------+-----------+-------+-------+----+
|
||||
|
||||
There are only 2 eth port installed on the boards.
|
||||
|
@ -41,10 +46,13 @@ The port related files can be found at following folders
|
|||
Board configuration files:
|
||||
include/configs/k2hk_evm.h
|
||||
include/configs/k2e_evm.h
|
||||
include/configs/k2l_evm.h
|
||||
include/configs/k2l_evm.h
|
||||
|
||||
As u-boot is migrating to Kconfig there is also board defconfig files
|
||||
configs/k2e_evm_defconfig
|
||||
configs/k2hk_evm_defconfig
|
||||
configs/k2l_evm_defconfig
|
||||
|
||||
Supported boot modes:
|
||||
- SPI NOR boot
|
||||
|
@ -58,7 +66,7 @@ Supported image formats:
|
|||
|
||||
Build instructions:
|
||||
===================
|
||||
Examples for k2hk, for k2e just replace k2hk prefix accordingly.
|
||||
Examples for k2hk, for k2e and k2l just replace k2hk prefix accordingly.
|
||||
Don't forget to add ARCH=arm and CROSS_COMPILE.
|
||||
|
||||
To build u-boot.bin
|
||||
|
@ -84,6 +92,8 @@ Use u-boot.bin from the build folder for loading and running u-boot binary
|
|||
on EVM. Follow instructions at
|
||||
K2HK http://processors.wiki.ti.com/index.php/EVMK2H_Hardware_Setup
|
||||
K2E http://processors.wiki.ti.com/index.php/EVMK2E_Hardware_Setup
|
||||
K2L http://processors.wiki.ti.com/index.php/TCIEVMK2L_Hardware_Setup
|
||||
|
||||
to configure SW1 dip switch to use "No Boot/JTAG DSP Little Endian Boot Mode"
|
||||
and Power ON the EVM. Follow instructions to connect serial port of EVM to
|
||||
PC and start TeraTerm or Hyper Terminal.
|
||||
|
@ -128,8 +138,8 @@ instructions:
|
|||
2. Suspend Target. Select Run -> Suspend from top level menu
|
||||
CortexA15_1 (Free Running)"
|
||||
3. Load u-boot-spi.gph binary from build folder on to DDR address 0x87000000
|
||||
through CCS as described in step 2 of "Load and Run U-Boot on K2HK/K2E EVM
|
||||
using CCS", but using address 0x87000000.
|
||||
through CCS as described in step 2 of "Load and Run U-Boot on K2HK/K2E/K2L
|
||||
EVM using CCS", but using address 0x87000000.
|
||||
4. Free Run the target as described earlier (step 4) to get u-boot prompt
|
||||
5. At the U-Boot console type following to setup u-boot environment variables.
|
||||
setenv addr_uboot 0x87000000
|
||||
|
|
|
@ -122,7 +122,6 @@ void ft_board_setup(void *blob, bd_t *bd)
|
|||
int nbanks;
|
||||
u64 size[2];
|
||||
u64 start[2];
|
||||
char name[32];
|
||||
int nodeoffset;
|
||||
u32 ddr3a_size;
|
||||
int unitrd_fixup = 0;
|
||||
|
@ -158,15 +157,13 @@ void ft_board_setup(void *blob, bd_t *bd)
|
|||
}
|
||||
|
||||
/* reserve memory at start of bank */
|
||||
sprintf(name, "mem_reserve_head");
|
||||
env = getenv(name);
|
||||
env = getenv("mem_reserve_head");
|
||||
if (env) {
|
||||
start[0] += ustrtoul(env, &endp, 0);
|
||||
size[0] -= ustrtoul(env, &endp, 0);
|
||||
}
|
||||
|
||||
sprintf(name, "mem_reserve");
|
||||
env = getenv(name);
|
||||
env = getenv("mem_reserve");
|
||||
if (env)
|
||||
size[0] -= ustrtoul(env, &endp, 0);
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#include <common.h>
|
||||
#include <asm/arch/ddr3.h>
|
||||
#include <asm/arch/hardware.h>
|
||||
#include <asm/ti-common/ti-aemif.h>
|
||||
#include <asm/ti-common/keystone_net.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
|
@ -42,6 +42,44 @@ static struct pll_init_data tetris_pll_config[] = {
|
|||
static struct pll_init_data pa_pll_config =
|
||||
PASS_PLL_983;
|
||||
|
||||
#ifdef CONFIG_DRIVER_TI_KEYSTONE_NET
|
||||
struct eth_priv_t eth_priv_cfg[] = {
|
||||
{
|
||||
.int_name = "K2L_EMAC",
|
||||
.rx_flow = 0,
|
||||
.phy_addr = 0,
|
||||
.slave_port = 1,
|
||||
.sgmii_link_type = SGMII_LINK_MAC_PHY,
|
||||
},
|
||||
{
|
||||
.int_name = "K2L_EMAC1",
|
||||
.rx_flow = 8,
|
||||
.phy_addr = 1,
|
||||
.slave_port = 2,
|
||||
.sgmii_link_type = SGMII_LINK_MAC_PHY,
|
||||
},
|
||||
{
|
||||
.int_name = "K2L_EMAC2",
|
||||
.rx_flow = 16,
|
||||
.phy_addr = 2,
|
||||
.slave_port = 3,
|
||||
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
||||
},
|
||||
{
|
||||
.int_name = "K2L_EMAC3",
|
||||
.rx_flow = 32,
|
||||
.phy_addr = 3,
|
||||
.slave_port = 4,
|
||||
.sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
|
||||
},
|
||||
};
|
||||
|
||||
int get_num_eth_ports(void)
|
||||
{
|
||||
return sizeof(eth_priv_cfg) / sizeof(struct eth_priv_t);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BOARD_EARLY_INIT_F
|
||||
int board_early_init_f(void)
|
||||
{
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
CONFIG_SPL=y
|
||||
CONFIG_SYS_EXTRA_OPTIONS="NAND,NOR"
|
||||
CONFIG_SYS_EXTRA_OPTIONS="NAND"
|
||||
CONFIG_CONS_INDEX=1
|
||||
+S:CONFIG_ARM=y
|
||||
+S:CONFIG_TARGET_AM335X_EVM=y
|
||||
CONFIG_NOR=y
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
CONFIG_SYS_EXTRA_OPTIONS="NOR,NOR_BOOT"
|
||||
CONFIG_CONS_INDEX=1
|
||||
CONFIG_ARM=y
|
||||
CONFIG_TARGET_AM335X_EVM=y
|
||||
CONFIG_NOR=y
|
||||
CONFIG_NOR_BOOT=y
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
CONFIG_SPL=n
|
||||
+S:CONFIG_ARM=y
|
||||
+S:CONFIG_OMAP34XX=y
|
||||
+S:CONFIG_TARGET_CM_T3517=y
|
|
@ -81,9 +81,6 @@ void qm_close(void)
|
|||
{
|
||||
u32 j;
|
||||
|
||||
if (qm_cfg == NULL)
|
||||
return;
|
||||
|
||||
queue_close(qm_cfg->qpool_num);
|
||||
|
||||
qm_cfg->mngr_cfg->link_ram_base0 = 0;
|
||||
|
@ -105,9 +102,6 @@ void qm_push(struct qm_host_desc *hd, u32 qnum)
|
|||
{
|
||||
u32 regd;
|
||||
|
||||
if (!qm_cfg)
|
||||
return;
|
||||
|
||||
cpu_to_bus((u32 *)hd, sizeof(struct qm_host_desc)/4);
|
||||
regd = (u32)hd | ((sizeof(struct qm_host_desc) >> 4) - 1);
|
||||
writel(regd, &qm_cfg->queue[qnum].ptr_size_thresh);
|
||||
|
@ -127,9 +121,6 @@ struct qm_host_desc *qm_pop(u32 qnum)
|
|||
{
|
||||
u32 uhd;
|
||||
|
||||
if (!qm_cfg)
|
||||
return NULL;
|
||||
|
||||
uhd = readl(&qm_cfg->queue[qnum].ptr_size_thresh) & ~0xf;
|
||||
if (uhd)
|
||||
cpu_to_bus((u32 *)uhd, sizeof(struct qm_host_desc)/4);
|
||||
|
@ -139,9 +130,6 @@ struct qm_host_desc *qm_pop(u32 qnum)
|
|||
|
||||
struct qm_host_desc *qm_pop_from_free_pool(void)
|
||||
{
|
||||
if (!qm_cfg)
|
||||
return NULL;
|
||||
|
||||
return qm_pop(qm_cfg->qpool_num);
|
||||
}
|
||||
|
||||
|
|
|
@ -611,7 +611,8 @@ static int omap_hsmmc_getcd(struct mmc *mmc)
|
|||
if (cd_gpio < 0)
|
||||
return 1;
|
||||
|
||||
return gpio_get_value(cd_gpio);
|
||||
/* NOTE: assumes card detect signal is active-low */
|
||||
return !gpio_get_value(cd_gpio);
|
||||
}
|
||||
|
||||
static int omap_hsmmc_getwp(struct mmc *mmc)
|
||||
|
@ -624,6 +625,7 @@ static int omap_hsmmc_getwp(struct mmc *mmc)
|
|||
if (wp_gpio < 0)
|
||||
return 0;
|
||||
|
||||
/* NOTE: assumes write protect signal is active-high */
|
||||
return gpio_get_value(wp_gpio);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -315,7 +315,7 @@ int mac_sl_config(u_int16_t port, struct mac_sl_cfg *cfg)
|
|||
writel(cfg->max_rx_len, DEVICE_EMACSL_BASE(port) + CPGMACSL_REG_MAXLEN);
|
||||
writel(cfg->ctl, DEVICE_EMACSL_BASE(port) + CPGMACSL_REG_CTL);
|
||||
|
||||
#ifdef CONFIG_K2E_EVM
|
||||
#if defined(CONFIG_SOC_K2E) || defined(CONFIG_SOC_K2L)
|
||||
/* Map RX packet flow priority to 0 */
|
||||
writel(0, DEVICE_EMACSL_BASE(port) + CPGMACSL_REG_RX_PRI_MAP);
|
||||
#endif
|
||||
|
@ -400,6 +400,9 @@ static int keystone2_eth_open(struct eth_device *dev, bd_t *bis)
|
|||
|
||||
keystone2_net_serdes_setup();
|
||||
|
||||
if (sys_has_mdio)
|
||||
keystone2_mdio_reset(mdio_bus);
|
||||
|
||||
keystone_sgmii_config(phy_dev, eth_priv->slave_port - 1,
|
||||
eth_priv->sgmii_link_type);
|
||||
|
||||
|
@ -582,7 +585,7 @@ static void keystone2_net_serdes_setup(void)
|
|||
&ks2_serdes_sgmii_156p25mhz,
|
||||
CONFIG_KSNET_SERDES_LANES_PER_SGMII);
|
||||
|
||||
#ifdef CONFIG_SOC_K2E
|
||||
#if defined(CONFIG_SOC_K2E) || defined(CONFIG_SOC_K2L)
|
||||
ks2_serdes_init(CONFIG_KSNET_SERDES_SGMII2_BASE,
|
||||
&ks2_serdes_sgmii_156p25mhz,
|
||||
CONFIG_KSNET_SERDES_LANES_PER_SGMII);
|
||||
|
|
|
@ -276,6 +276,57 @@ static int m88e1111s_config(struct phy_device *phydev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* m88e1518_phy_writebits - write bits to a register
|
||||
*/
|
||||
void m88e1518_phy_writebits(struct phy_device *phydev,
|
||||
u8 reg_num, u16 offset, u16 len, u16 data)
|
||||
{
|
||||
u16 reg, mask;
|
||||
|
||||
if ((len + offset) >= 16)
|
||||
mask = 0 - (1 << offset);
|
||||
else
|
||||
mask = (1 << (len + offset)) - (1 << offset);
|
||||
|
||||
reg = phy_read(phydev, MDIO_DEVAD_NONE, reg_num);
|
||||
|
||||
reg &= ~mask;
|
||||
reg |= data << offset;
|
||||
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, reg_num, reg);
|
||||
}
|
||||
|
||||
static int m88e1518_config(struct phy_device *phydev)
|
||||
{
|
||||
/*
|
||||
* As per Marvell Release Notes - Alaska 88E1510/88E1518/88E1512
|
||||
* /88E1514 Rev A0, Errata Section 3.1
|
||||
*/
|
||||
if (phydev->interface == PHY_INTERFACE_MODE_SGMII) {
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, 22, 0x00ff); /* page 0xff */
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, 17, 0x214B);
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, 16, 0x2144);
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, 17, 0x0C28);
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, 16, 0x2146);
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, 17, 0xB233);
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, 16, 0x214D);
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, 17, 0xCC0C);
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, 16, 0x2159);
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, 22, 0x0000); /* reg page 0 */
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, 22, 18); /* reg page 18 */
|
||||
/* Write HWCFG_MODE = SGMII to Copper */
|
||||
m88e1518_phy_writebits(phydev, 20, 0, 3, 1);
|
||||
|
||||
/* Phy reset */
|
||||
m88e1518_phy_writebits(phydev, 20, 15, 1, 1);
|
||||
phy_write(phydev, MDIO_DEVAD_NONE, 22, 0); /* reg page 18 */
|
||||
udelay(100);
|
||||
}
|
||||
|
||||
return m88e1111s_config(phydev);
|
||||
}
|
||||
|
||||
/* Marvell 88E1118 */
|
||||
static int m88e1118_config(struct phy_device *phydev)
|
||||
{
|
||||
|
@ -493,7 +544,7 @@ static struct phy_driver M88E1518_driver = {
|
|||
.uid = 0x1410dd1,
|
||||
.mask = 0xffffff0,
|
||||
.features = PHY_GBIT_FEATURES,
|
||||
.config = &m88e1111s_config,
|
||||
.config = &m88e1518_config,
|
||||
.startup = &m88e1011s_startup,
|
||||
.shutdown = &genphy_shutdown,
|
||||
};
|
||||
|
|
|
@ -314,6 +314,18 @@
|
|||
#define CONFIG_AM335X_USB1
|
||||
#define CONFIG_AM335X_USB1_MODE MUSB_HOST
|
||||
|
||||
#ifndef CONFIG_SPL_USBETH_SUPPORT
|
||||
/* Fastboot */
|
||||
#define CONFIG_CMD_FASTBOOT
|
||||
#define CONFIG_ANDROID_BOOT_IMAGE
|
||||
#define CONFIG_USB_FASTBOOT_BUF_ADDR CONFIG_SYS_LOAD_ADDR
|
||||
#define CONFIG_USB_FASTBOOT_BUF_SIZE 0x07000000
|
||||
|
||||
/* To support eMMC booting */
|
||||
#define CONFIG_STORAGE_EMMC
|
||||
#define CONFIG_FASTBOOT_FLASH_MMC_DEV 1
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_MUSB_HOST
|
||||
#define CONFIG_CMD_USB
|
||||
#define CONFIG_USB_STORAGE
|
||||
|
@ -325,8 +337,8 @@
|
|||
#define CONFIG_USBNET_HOST_ADDR "de:ad:be:af:00:00"
|
||||
|
||||
/* USB TI's IDs */
|
||||
#define CONFIG_G_DNL_VENDOR_NUM 0x0403
|
||||
#define CONFIG_G_DNL_PRODUCT_NUM 0xBD00
|
||||
#define CONFIG_G_DNL_VENDOR_NUM 0x0451
|
||||
#define CONFIG_G_DNL_PRODUCT_NUM 0xD022
|
||||
#define CONFIG_G_DNL_MANUFACTURER "Texas Instruments"
|
||||
#endif /* CONFIG_MUSB_GADGET */
|
||||
|
||||
|
|
|
@ -0,0 +1,320 @@
|
|||
/*
|
||||
* (C) Copyright 2013 CompuLab, Ltd.
|
||||
* Author: Igor Grinberg <grinberg@compulab.co.il>
|
||||
*
|
||||
* Configuration settings for the CompuLab CM-T3517 board
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
|
||||
#ifndef __CONFIG_H
|
||||
#define __CONFIG_H
|
||||
|
||||
/*
|
||||
* High Level Configuration Options
|
||||
*/
|
||||
#define CONFIG_OMAP /* in a TI OMAP core */
|
||||
#define CONFIG_CM_T3517 /* working with CM-T3517 */
|
||||
#define CONFIG_OMAP_COMMON
|
||||
#define CONFIG_SYS_GENERIC_BOARD
|
||||
|
||||
#define CONFIG_SYS_TEXT_BASE 0x80008000
|
||||
|
||||
/*
|
||||
* This is needed for the DMA stuff.
|
||||
* Although the default iss 64, we still define it
|
||||
* to be on the safe side once the default is changed.
|
||||
*/
|
||||
#define CONFIG_SYS_CACHELINE_SIZE 64
|
||||
|
||||
#define CONFIG_EMIF4 /* The chip has EMIF4 controller */
|
||||
|
||||
#include <asm/arch/cpu.h> /* get chip and board defs */
|
||||
#include <asm/arch/omap3.h>
|
||||
|
||||
/*
|
||||
* Display CPU and Board information
|
||||
*/
|
||||
#define CONFIG_DISPLAY_CPUINFO
|
||||
#define CONFIG_DISPLAY_BOARDINFO
|
||||
|
||||
/* Clock Defines */
|
||||
#define V_OSCK 26000000 /* Clock output from T2 */
|
||||
#define V_SCLK (V_OSCK >> 1)
|
||||
|
||||
#define CONFIG_MISC_INIT_R
|
||||
|
||||
#define CONFIG_OF_LIBFDT
|
||||
/*
|
||||
* The early kernel mapping on ARM currently only maps from the base of DRAM
|
||||
* to the end of the kernel image. The kernel is loaded at DRAM base + 0x8000.
|
||||
* The early kernel pagetable uses DRAM base + 0x4000 to DRAM base + 0x8000,
|
||||
* so that leaves DRAM base to DRAM base + 0x4000 available.
|
||||
*/
|
||||
#define CONFIG_SYS_BOOTMAPSZ 0x4000
|
||||
|
||||
#define CONFIG_CMDLINE_TAG /* enable passing of ATAGs */
|
||||
#define CONFIG_SETUP_MEMORY_TAGS
|
||||
#define CONFIG_INITRD_TAG
|
||||
#define CONFIG_REVISION_TAG
|
||||
#define CONFIG_SERIAL_TAG
|
||||
|
||||
/*
|
||||
* Size of malloc() pool
|
||||
*/
|
||||
#define CONFIG_ENV_SIZE (16 << 10) /* 16 KiB */
|
||||
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (128 << 10))
|
||||
|
||||
/*
|
||||
* Hardware drivers
|
||||
*/
|
||||
|
||||
/*
|
||||
* NS16550 Configuration
|
||||
*/
|
||||
#define CONFIG_SYS_NS16550
|
||||
#define CONFIG_SYS_NS16550_SERIAL
|
||||
#define CONFIG_SYS_NS16550_REG_SIZE (-4)
|
||||
#define CONFIG_SYS_NS16550_CLK 48000000 /* 48MHz (APLL96/2) */
|
||||
|
||||
/*
|
||||
* select serial console configuration
|
||||
*/
|
||||
#define CONFIG_CONS_INDEX 3
|
||||
#define CONFIG_SYS_NS16550_COM3 OMAP34XX_UART3
|
||||
#define CONFIG_SERIAL3 3 /* UART3 */
|
||||
#define CONFIG_SYS_CONSOLE_IS_IN_ENV
|
||||
|
||||
/* allow to overwrite serial and ethaddr */
|
||||
#define CONFIG_ENV_OVERWRITE
|
||||
#define CONFIG_BAUDRATE 115200
|
||||
#define CONFIG_SYS_BAUDRATE_TABLE {4800, 9600, 19200, 38400, 57600,\
|
||||
115200}
|
||||
|
||||
#define CONFIG_OMAP_GPIO
|
||||
|
||||
#define CONFIG_GENERIC_MMC
|
||||
#define CONFIG_MMC
|
||||
#define CONFIG_OMAP_HSMMC
|
||||
#define CONFIG_DOS_PARTITION
|
||||
|
||||
/* USB */
|
||||
#define CONFIG_USB_MUSB_AM35X
|
||||
|
||||
#ifndef CONFIG_USB_MUSB_AM35X
|
||||
#define CONFIG_USB_OMAP3
|
||||
#define CONFIG_USB_EHCI
|
||||
#define CONFIG_USB_EHCI_OMAP
|
||||
#define CONFIG_OMAP_EHCI_PHY1_RESET_GPIO 146
|
||||
#define CONFIG_OMAP_EHCI_PHY2_RESET_GPIO 147
|
||||
#else /* !CONFIG_USB_MUSB_AM35X */
|
||||
#define CONFIG_MUSB_HOST
|
||||
#define CONFIG_MUSB_PIO_ONLY
|
||||
#endif /* CONFIG_USB_MUSB_AM35X */
|
||||
|
||||
#define CONFIG_USB_STORAGE
|
||||
#define CONFIG_CMD_USB
|
||||
|
||||
/* commands to include */
|
||||
#include <config_cmd_default.h>
|
||||
|
||||
#define CONFIG_CMD_CACHE
|
||||
#define CONFIG_CMD_EXT2 /* EXT2 Support */
|
||||
#define CONFIG_CMD_FAT /* FAT support */
|
||||
#define CONFIG_CMD_MTDPARTS /* Enable MTD parts commands */
|
||||
#define CONFIG_MTD_DEVICE /* needed for mtdparts commands */
|
||||
#define CONFIG_MTD_PARTITIONS
|
||||
#define MTDIDS_DEFAULT "nand0=nand"
|
||||
#define MTDPARTS_DEFAULT "mtdparts=nand:512k(x-loader),"\
|
||||
"1920k(u-boot),256k(u-boot-env),"\
|
||||
"4m(kernel),-(fs)"
|
||||
|
||||
#define CONFIG_CMD_I2C /* I2C serial bus support */
|
||||
#define CONFIG_CMD_MMC /* MMC support */
|
||||
#define CONFIG_CMD_NAND /* NAND support */
|
||||
#define CONFIG_CMD_DHCP
|
||||
#define CONFIG_CMD_PING
|
||||
#define CONFIG_CMD_GPIO
|
||||
|
||||
#undef CONFIG_CMD_FLASH /* flinfo, erase, protect */
|
||||
#undef CONFIG_CMD_FPGA /* FPGA configuration Support */
|
||||
#undef CONFIG_CMD_IMLS /* List all found images */
|
||||
|
||||
#define CONFIG_SYS_NO_FLASH
|
||||
#define CONFIG_SYS_I2C
|
||||
#define CONFIG_SYS_OMAP24_I2C_SPEED 400000
|
||||
#define CONFIG_SYS_OMAP24_I2C_SLAVE 1
|
||||
#define CONFIG_SYS_I2C_OMAP34XX
|
||||
#define CONFIG_SYS_I2C_EEPROM_ADDR 0x50
|
||||
#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
|
||||
#define CONFIG_SYS_I2C_EEPROM_BUS 0
|
||||
#define CONFIG_I2C_MULTI_BUS
|
||||
|
||||
/*
|
||||
* Board NAND Info.
|
||||
*/
|
||||
#define CONFIG_SYS_NAND_QUIET_TEST
|
||||
#define CONFIG_NAND_OMAP_GPMC
|
||||
#define CONFIG_SYS_NAND_ADDR NAND_BASE /* physical address */
|
||||
/* to access nand */
|
||||
#define CONFIG_SYS_NAND_BASE NAND_BASE /* physical address */
|
||||
/* to access nand at */
|
||||
/* CS0 */
|
||||
#define CONFIG_SYS_MAX_NAND_DEVICE 1 /* Max number of NAND */
|
||||
/* devices */
|
||||
|
||||
/* Environment information */
|
||||
#define CONFIG_BOOTDELAY 3
|
||||
#define CONFIG_ZERO_BOOTDELAY_CHECK
|
||||
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"loadaddr=0x82000000\0" \
|
||||
"baudrate=115200\0" \
|
||||
"console=ttyO2,115200n8\0" \
|
||||
"mpurate=auto\0" \
|
||||
"vram=12M\0" \
|
||||
"dvimode=1024x768MR-16@60\0" \
|
||||
"defaultdisplay=dvi\0" \
|
||||
"mmcdev=0\0" \
|
||||
"mmcroot=/dev/mmcblk0p2 rw rootwait\0" \
|
||||
"mmcrootfstype=ext4\0" \
|
||||
"nandroot=/dev/mtdblock4 rw\0" \
|
||||
"nandrootfstype=ubifs\0" \
|
||||
"mmcargs=setenv bootargs console=${console} " \
|
||||
"mpurate=${mpurate} " \
|
||||
"vram=${vram} " \
|
||||
"omapfb.mode=dvi:${dvimode} " \
|
||||
"omapdss.def_disp=${defaultdisplay} " \
|
||||
"root=${mmcroot} " \
|
||||
"rootfstype=${mmcrootfstype}\0" \
|
||||
"nandargs=setenv bootargs console=${console} " \
|
||||
"mpurate=${mpurate} " \
|
||||
"vram=${vram} " \
|
||||
"omapfb.mode=dvi:${dvimode} " \
|
||||
"omapdss.def_disp=${defaultdisplay} " \
|
||||
"root=${nandroot} " \
|
||||
"rootfstype=${nandrootfstype}\0" \
|
||||
"loadbootscript=fatload mmc ${mmcdev} ${loadaddr} boot.scr\0" \
|
||||
"bootscript=echo Running bootscript from mmc ...; " \
|
||||
"source ${loadaddr}\0" \
|
||||
"loaduimage=fatload mmc ${mmcdev} ${loadaddr} uImage\0" \
|
||||
"mmcboot=echo Booting from mmc ...; " \
|
||||
"run mmcargs; " \
|
||||
"bootm ${loadaddr}\0" \
|
||||
"nandboot=echo Booting from nand ...; " \
|
||||
"run nandargs; " \
|
||||
"nand read ${loadaddr} 2a0000 400000; " \
|
||||
"bootm ${loadaddr}\0" \
|
||||
|
||||
#define CONFIG_CMD_BOOTZ
|
||||
#define CONFIG_BOOTCOMMAND \
|
||||
"mmc dev ${mmcdev}; if mmc rescan; then " \
|
||||
"if run loadbootscript; then " \
|
||||
"run bootscript; " \
|
||||
"else " \
|
||||
"if run loaduimage; then " \
|
||||
"run mmcboot; " \
|
||||
"else run nandboot; " \
|
||||
"fi; " \
|
||||
"fi; " \
|
||||
"else run nandboot; fi"
|
||||
|
||||
/*
|
||||
* Miscellaneous configurable options
|
||||
*/
|
||||
#define CONFIG_AUTO_COMPLETE
|
||||
#define CONFIG_CMDLINE_EDITING
|
||||
#define CONFIG_TIMESTAMP
|
||||
#define CONFIG_SYS_AUTOLOAD "no"
|
||||
#define CONFIG_SYS_LONGHELP /* undef to save memory */
|
||||
#define CONFIG_SYS_HUSH_PARSER /* use "hush" command parser */
|
||||
#define CONFIG_SYS_PROMPT "CM-T3517 # "
|
||||
#define CONFIG_SYS_CBSIZE 512 /* Console I/O Buffer Size */
|
||||
/* Print Buffer Size */
|
||||
#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \
|
||||
sizeof(CONFIG_SYS_PROMPT) + 16)
|
||||
#define CONFIG_SYS_MAXARGS 32 /* max number of command args */
|
||||
/* Boot Argument Buffer Size */
|
||||
#define CONFIG_SYS_BARGSIZE (CONFIG_SYS_CBSIZE)
|
||||
|
||||
#define CONFIG_SYS_LOAD_ADDR (OMAP34XX_SDRC_CS0 + 0x02000000)
|
||||
|
||||
/*
|
||||
* AM3517 has 12 GP timers, they can be driven by the system clock
|
||||
* (12/13/16.8/19.2/38.4MHz) or by 32KHz clock. We use 13MHz (V_SCLK).
|
||||
* This rate is divided by a local divisor.
|
||||
*/
|
||||
#define CONFIG_SYS_TIMERBASE (OMAP34XX_GPT2)
|
||||
#define CONFIG_SYS_PTV 2 /* Divisor: 2^(PTV+1) => 8 */
|
||||
#define CONFIG_SYS_HZ 1000
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* Physical Memory Map
|
||||
*/
|
||||
#define CONFIG_NR_DRAM_BANKS 1 /* CM-T3517 DRAM is only on CS0 */
|
||||
#define PHYS_SDRAM_1 OMAP34XX_SDRC_CS0
|
||||
#define CONFIG_SYS_CS0_SIZE (256 << 20)
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* FLASH and environment organization
|
||||
*/
|
||||
|
||||
/* **** PISMO SUPPORT *** */
|
||||
/* Monitor at start of flash */
|
||||
#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_FLASH_BASE
|
||||
#define CONFIG_SYS_MONITOR_LEN (256 << 10) /* Reserve 2 sectors */
|
||||
|
||||
#define CONFIG_ENV_IS_IN_NAND
|
||||
#define SMNAND_ENV_OFFSET 0x260000 /* environment starts here */
|
||||
#define CONFIG_ENV_OFFSET SMNAND_ENV_OFFSET
|
||||
#define CONFIG_ENV_ADDR SMNAND_ENV_OFFSET
|
||||
|
||||
#if defined(CONFIG_CMD_NET)
|
||||
#define CONFIG_DRIVER_TI_EMAC
|
||||
#define CONFIG_DRIVER_TI_EMAC_USE_RMII
|
||||
#define CONFIG_MII
|
||||
#define CONFIG_SMC911X
|
||||
#define CONFIG_SMC911X_32_BIT
|
||||
#define CONFIG_SMC911X_BASE (0x2C000000 + (16 << 20))
|
||||
#endif /* CONFIG_CMD_NET */
|
||||
|
||||
/* additions for new relocation code, must be added to all boards */
|
||||
#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
|
||||
#define CONFIG_SYS_INIT_RAM_ADDR 0x4020f800
|
||||
#define CONFIG_SYS_INIT_RAM_SIZE 0x800
|
||||
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \
|
||||
CONFIG_SYS_INIT_RAM_SIZE - \
|
||||
GENERATED_GBL_DATA_SIZE)
|
||||
|
||||
/* Status LED */
|
||||
#define CONFIG_STATUS_LED /* Status LED enabled */
|
||||
#define CONFIG_BOARD_SPECIFIC_LED
|
||||
#define CONFIG_GPIO_LED
|
||||
#define GREEN_LED_GPIO 186 /* CM-T3517 Green LED is GPIO186 */
|
||||
#define GREEN_LED_DEV 0
|
||||
#define STATUS_LED_BIT GREEN_LED_GPIO
|
||||
#define STATUS_LED_STATE STATUS_LED_ON
|
||||
#define STATUS_LED_PERIOD (CONFIG_SYS_HZ / 2)
|
||||
#define STATUS_LED_BOOT GREEN_LED_DEV
|
||||
|
||||
/* GPIO banks */
|
||||
#ifdef CONFIG_STATUS_LED
|
||||
#define CONFIG_OMAP3_GPIO_6 /* GPIO186 is in GPIO bank 6 */
|
||||
#endif
|
||||
|
||||
/* Display Configuration */
|
||||
#define CONFIG_OMAP3_GPIO_2
|
||||
#define CONFIG_OMAP3_GPIO_5
|
||||
#define CONFIG_VIDEO_OMAP3
|
||||
#define LCD_BPP LCD_COLOR16
|
||||
|
||||
#define CONFIG_LCD
|
||||
#define CONFIG_SPLASH_SCREEN
|
||||
#define CONFIG_SPLASHIMAGE_GUARD
|
||||
#define CONFIG_CMD_BMP
|
||||
#define CONFIG_BMP_16BPP
|
||||
#define CONFIG_SCF0403_LCD
|
||||
|
||||
#define CONFIG_OMAP3_SPI
|
||||
|
||||
#endif /* __CONFIG_H */
|
|
@ -17,14 +17,15 @@
|
|||
/* U-Boot general configuration */
|
||||
#define CONFIG_SYS_PROMPT "K2E EVM # "
|
||||
|
||||
#define KS2_ARGS_UBI "args_ubi=setenv bootargs ${bootargs} rootfstype=ubifs "\
|
||||
"root=ubi0:rootfs rootflags=sync rw ubi.mtd=2,2048\0"
|
||||
|
||||
#define KS2_FDT_NAME "name_fdt=k2e-evm.dtb\0"
|
||||
#define KS2_ADDR_MON "addr_mon=0x0c140000\0"
|
||||
#define KS2_NAME_MON "name_mon=skern-k2e-evm.bin\0"
|
||||
#define NAME_UBOOT "name_uboot=u-boot-spi-k2e-evm.gph\0"
|
||||
#define NAME_UBI "name_ubi=k2e-evm-ubifs.ubi\0"
|
||||
#define CONFIG_EXTRA_ENV_KS2_BOARD_SETTINGS \
|
||||
"addr_mon=0x0c140000\0" \
|
||||
"args_ubi=setenv bootargs ${bootargs} rootfstype=ubifs " \
|
||||
"root=ubi0:rootfs rootflags=sync rw ubi.mtd=2,2048\0" \
|
||||
"name_fdt=uImage-k2e-evm.dtb\0" \
|
||||
"name_mon=skern-k2e-evm.bin\0" \
|
||||
"name_ubi=k2e-evm-ubifs.ubi\0" \
|
||||
"name_uboot=u-boot-spi-k2e-evm.gph\0" \
|
||||
"name_fs=arago-console-image-k2e-evm.cpio.gz\0"
|
||||
|
||||
#include <configs/ks2_evm.h>
|
||||
|
||||
|
@ -35,14 +36,8 @@
|
|||
#define CONFIG_SYS_NAND_PAGE_2K
|
||||
|
||||
/* Network */
|
||||
#define CONFIG_DRIVER_TI_KEYSTONE_NET
|
||||
#define CONFIG_TI_KSNAV
|
||||
#define CONFIG_KSNAV_PKTDMA_NETCP
|
||||
#define CONFIG_KSNET_NETCP_V1_5
|
||||
#define CONFIG_KSNET_CPSW_NUM_PORTS 9
|
||||
#define CONFIG_KSNET_MDIO_PHY_CONFIG_ENABLE
|
||||
|
||||
/* SerDes */
|
||||
#define CONFIG_TI_KEYSTONE_SERDES
|
||||
|
||||
#endif /* __CONFIG_K2E_EVM_H */
|
||||
|
|
|
@ -17,14 +17,15 @@
|
|||
/* U-Boot general configuration */
|
||||
#define CONFIG_SYS_PROMPT "K2HK EVM # "
|
||||
|
||||
#define KS2_ARGS_UBI "args_ubi=setenv bootargs ${bootargs} rootfstype=ubifs "\
|
||||
"root=ubi0:rootfs rootflags=sync rw ubi.mtd=2,2048\0"
|
||||
|
||||
#define KS2_FDT_NAME "name_fdt=k2hk-evm.dtb\0"
|
||||
#define KS2_ADDR_MON "addr_mon=0x0c5f0000\0"
|
||||
#define KS2_NAME_MON "name_mon=skern-k2hk-evm.bin\0"
|
||||
#define NAME_UBOOT "name_uboot=u-boot-spi-k2hk-evm.gph\0"
|
||||
#define NAME_UBI "name_ubi=k2hk-evm-ubifs.ubi\0"
|
||||
#define CONFIG_EXTRA_ENV_KS2_BOARD_SETTINGS \
|
||||
"addr_mon=0x0c5f0000\0" \
|
||||
"args_ubi=setenv bootargs ${bootargs} rootfstype=ubifs " \
|
||||
"root=ubi0:rootfs rootflags=sync rw ubi.mtd=2,2048\0" \
|
||||
"name_fdt=uImage-k2hk-evm.dtb\0" \
|
||||
"name_mon=skern-k2hk-evm.bin\0" \
|
||||
"name_ubi=k2hk-evm-ubifs.ubi\0" \
|
||||
"name_uboot=u-boot-spi-k2hk-evm.gph\0" \
|
||||
"name_fs=arago-console-image-k2hk-evm.cpio.gz\0"
|
||||
|
||||
#include <configs/ks2_evm.h>
|
||||
|
||||
|
@ -35,13 +36,7 @@
|
|||
#define CONFIG_SYS_NAND_PAGE_2K
|
||||
|
||||
/* Network */
|
||||
#define CONFIG_DRIVER_TI_KEYSTONE_NET
|
||||
#define CONFIG_TI_KSNAV
|
||||
#define CONFIG_KSNAV_PKTDMA_NETCP
|
||||
#define CONFIG_KSNET_NETCP_V1_0
|
||||
#define CONFIG_KSNET_CPSW_NUM_PORTS 5
|
||||
|
||||
/* SerDes */
|
||||
#define CONFIG_TI_KEYSTONE_SERDES
|
||||
|
||||
#endif /* __CONFIG_K2HK_EVM_H */
|
||||
|
|
|
@ -17,14 +17,15 @@
|
|||
/* U-Boot general configuration */
|
||||
#define CONFIG_SYS_PROMPT "K2L EVM # "
|
||||
|
||||
#define KS2_ARGS_UBI "args_ubi=setenv bootargs ${bootargs} rootfstype=ubifs "\
|
||||
"root=ubi0:rootfs rootflags=sync rw ubi.mtd=2,4096\0"
|
||||
|
||||
#define KS2_FDT_NAME "name_fdt=k2l-evm.dtb\0"
|
||||
#define KS2_ADDR_MON "addr_mon=0x0c140000\0"
|
||||
#define KS2_NAME_MON "name_mon=skern-k2l-evm.bin\0"
|
||||
#define NAME_UBOOT "name_uboot=u-boot-spi-k2l-evm.gph\0"
|
||||
#define NAME_UBI "name_ubi=k2l-evm-ubifs.ubi\0"
|
||||
#define CONFIG_EXTRA_ENV_KS2_BOARD_SETTINGS \
|
||||
"addr_mon=0x0c140000\0" \
|
||||
"args_ubi=setenv bootargs ${bootargs} rootfstype=ubifs " \
|
||||
"root=ubi0:rootfs rootflags=sync rw ubi.mtd=2,4096\0" \
|
||||
"name_fdt=uImage-k2l-evm.dtb\0" \
|
||||
"name_mon=skern-k2l-evm.bin\0" \
|
||||
"name_ubi=k2l-evm-ubifs.ubi\0" \
|
||||
"name_uboot=u-boot-spi-k2l-evm.gph\0" \
|
||||
"name_fs=arago-console-image-k2l-evm.cpio.gz\0"
|
||||
|
||||
#include <configs/ks2_evm.h>
|
||||
|
||||
|
@ -34,4 +35,9 @@
|
|||
/* NAND Configuration */
|
||||
#define CONFIG_SYS_NAND_PAGE_4K
|
||||
|
||||
/* Network */
|
||||
#define CONFIG_KSNET_NETCP_V1_5
|
||||
#define CONFIG_KSNET_CPSW_NUM_PORTS 5
|
||||
#define CONFIG_KSNET_MDIO_PHY_CONFIG_ENABLE
|
||||
|
||||
#endif /* __CONFIG_K2L_EVM_H */
|
||||
|
|
|
@ -105,6 +105,7 @@
|
|||
#define CONFIG_SYS_SGMII_RATESCALE 2
|
||||
|
||||
/* Keyston Navigator Configuration */
|
||||
#define CONFIG_TI_KSNAV
|
||||
#define CONFIG_KSNAV_QM_BASE_ADDRESS KS2_QM_BASE_ADDRESS
|
||||
#define CONFIG_KSNAV_QM_CONF_BASE KS2_QM_CONF_BASE
|
||||
#define CONFIG_KSNAV_QM_DESC_SETUP_BASE KS2_QM_DESC_SETUP_BASE
|
||||
|
@ -121,6 +122,7 @@
|
|||
#define CONFIG_KSNAV_QM_QPOOL_NUM KS2_QM_QPOOL_NUM
|
||||
|
||||
/* NETCP pktdma */
|
||||
#define CONFIG_KSNAV_PKTDMA_NETCP
|
||||
#define CONFIG_KSNAV_NETCP_PDMA_CTRL_BASE KS2_NETCP_PDMA_CTRL_BASE
|
||||
#define CONFIG_KSNAV_NETCP_PDMA_TX_BASE KS2_NETCP_PDMA_TX_BASE
|
||||
#define CONFIG_KSNAV_NETCP_PDMA_TX_CH_NUM KS2_NETCP_PDMA_TX_CH_NUM
|
||||
|
@ -134,12 +136,16 @@
|
|||
#define CONFIG_KSNAV_NETCP_PDMA_TX_SND_QUEUE KS2_NETCP_PDMA_TX_SND_QUEUE
|
||||
|
||||
/* Keystone net */
|
||||
#define CONFIG_DRIVER_TI_KEYSTONE_NET
|
||||
#define CONFIG_KSNET_MAC_ID_BASE KS2_MAC_ID_BASE_ADDR
|
||||
#define CONFIG_KSNET_NETCP_BASE KS2_NETCP_BASE
|
||||
#define CONFIG_KSNET_SERDES_SGMII_BASE KS2_SGMII_SERDES_BASE
|
||||
#define CONFIG_KSNET_SERDES_SGMII2_BASE KS2_SGMII_SERDES2_BASE
|
||||
#define CONFIG_KSNET_SERDES_LANES_PER_SGMII KS2_LANES_PER_SGMII_SERDES
|
||||
|
||||
/* SerDes */
|
||||
#define CONFIG_TI_KEYSTONE_SERDES
|
||||
|
||||
/* AEMIF */
|
||||
#define CONFIG_TI_AEMIF
|
||||
#define CONFIG_AEMIF_CNTRL_BASE KS2_AEMIF_CNTRL_BASE
|
||||
|
@ -218,6 +224,8 @@
|
|||
#define CONFIG_CMD_SF
|
||||
#define CONFIG_CMD_EEPROM
|
||||
#define CONFIG_CMD_USB
|
||||
#define CONFIG_CMD_FAT
|
||||
#define CONFIG_CMD_FS_GENERIC
|
||||
|
||||
/* U-Boot general configuration */
|
||||
#define CONFIG_SYS_GENERIC_BOARD
|
||||
|
@ -239,30 +247,25 @@
|
|||
#define CONFIG_BOOTDELAY 3
|
||||
#define CONFIG_BOOTFILE "uImage"
|
||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||
"boot=ramfs\0" \
|
||||
CONFIG_EXTRA_ENV_KS2_BOARD_SETTINGS \
|
||||
"boot=ubi\0" \
|
||||
"tftp_root=/\0" \
|
||||
"nfs_root=/export\0" \
|
||||
"mem_lpae=1\0" \
|
||||
"mem_reserve=512M\0" \
|
||||
"addr_fdt=0x87000000\0" \
|
||||
"addr_kern=0x88000000\0" \
|
||||
KS2_ADDR_MON \
|
||||
"addr_uboot=0x87000000\0" \
|
||||
"addr_fs=0x82000000\0" \
|
||||
"addr_ubi=0x82000000\0" \
|
||||
"addr_secdb_key=0xc000000\0" \
|
||||
"fdt_high=0xffffffff\0" \
|
||||
KS2_FDT_NAME \
|
||||
"name_fs=arago-console-image.cpio.gz\0" \
|
||||
"name_kern=uImage\0" \
|
||||
KS2_NAME_MON \
|
||||
NAME_UBOOT \
|
||||
NAME_UBI \
|
||||
"name_kern=uImage-keystone-evm.bin\0" \
|
||||
"run_mon=mon_install ${addr_mon}\0" \
|
||||
"run_kern=bootm ${addr_kern} - ${addr_fdt}\0" \
|
||||
"init_net=run args_all args_net\0" \
|
||||
"init_ubi=run args_all args_ubi; " \
|
||||
"ubi part ubifs; ubifsmount boot;" \
|
||||
"ubi part ubifs; ubifsmount ubi:boot;" \
|
||||
"ubifsload ${addr_secdb_key} securedb.key.bin;\0" \
|
||||
"get_fdt_net=dhcp ${addr_fdt} ${tftp_root}/${name_fdt}\0" \
|
||||
"get_fdt_ubi=ubifsload ${addr_fdt} ${name_fdt}\0" \
|
||||
|
@ -276,7 +279,6 @@
|
|||
"burn_uboot_nand=nand erase 0 0x100000; " \
|
||||
"nand write ${addr_uboot} 0 ${filesize}\0" \
|
||||
"args_all=setenv bootargs console=ttyS0,115200n8 rootwait=1\0" \
|
||||
KS2_ARGS_UBI \
|
||||
"args_net=setenv bootargs ${bootargs} rootfstype=nfs " \
|
||||
"root=/dev/nfs rw nfsroot=${serverip}:${nfs_root}," \
|
||||
"${nfs_options} ip=dhcp\0" \
|
||||
|
|
|
@ -29,8 +29,6 @@
|
|||
|
||||
#define CONFIG_REVISION_TAG 1
|
||||
|
||||
#define CONFIG_SUPPORT_RAW_INITRD
|
||||
|
||||
/* define to enable boot progress via leds */
|
||||
#if (CONFIG_MACH_TYPE == MACH_TYPE_IGEP0020) || \
|
||||
(CONFIG_MACH_TYPE == MACH_TYPE_IGEP0030)
|
||||
|
|
|
@ -174,6 +174,7 @@
|
|||
#define CONFIG_CMD_ASKENV
|
||||
#define CONFIG_CMD_ECHO
|
||||
#define CONFIG_CMD_BOOTZ
|
||||
#define CONFIG_SUPPORT_RAW_INITRD
|
||||
|
||||
/*
|
||||
* Common filesystems support. When we have removable storage we
|
||||
|
|
|
@ -390,6 +390,8 @@
|
|||
|
||||
/* Voltage Selection in PM Receiver Module */
|
||||
#define TWL4030_PM_RECEIVER_VAUX2_VSEL_18 0x05
|
||||
#define TWL4030_PM_RECEIVER_VAUX2_VSEL_28 0x09
|
||||
#define TWL4030_PM_RECEIVER_VAUX3_VSEL_18 0x01
|
||||
#define TWL4030_PM_RECEIVER_VAUX3_VSEL_28 0x03
|
||||
#define TWL4030_PM_RECEIVER_VPLL2_VSEL_18 0x05
|
||||
#define TWL4030_PM_RECEIVER_VDAC_VSEL_18 0x03
|
||||
|
|
Loading…
Reference in New Issue