-
Notifications
You must be signed in to change notification settings - Fork 176
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
arm, am335x: add support for 3 siemens boards
add support for the am335x based boards from siemens: dxr2: - DDR3 128MiB - NAND 256MiB - Ethernet with external Switch SMSC LAN9303 - no PMIC - internal Watchdog - DFU support pxm2: - DDR2 512 MiB - NAND 1024 MiB - PMIC - PHY atheros ar803x - USB Host - internal Watchdog - DFU support rut: - DDR3 256 MiB - NAND 256 MiB - PMIC - PHY natsemi dp83630 - external Watchdog - DFU support Signed-off-by: Heiko Schocher <hs@denx.de> Signed-off-by: Roger Meier <r.meier@siemens.com> Signed-off-by: Samuel Egli <samuel.egli@siemens.com> Cc: Pascal Bach <pascal.bach@siemens.com> Cc: Tom Rini <trini@ti.com>
- Loading branch information
Showing
23 changed files
with
3,434 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,171 @@ | ||
/* | ||
* Common board functions for siemens AM335X based boards | ||
* (C) Copyright 2013 Siemens Schweiz AG | ||
* (C) Heiko Schocher, DENX Software Engineering, hs@denx.de. | ||
* | ||
* Based on: | ||
* U-Boot file:/board/ti/am335x/board.c | ||
* Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/ | ||
* | ||
* SPDX-License-Identifier: GPL-2.0+ | ||
*/ | ||
|
||
#include <common.h> | ||
#include <errno.h> | ||
#include <spl.h> | ||
#include <asm/arch/cpu.h> | ||
#include <asm/arch/hardware.h> | ||
#include <asm/arch/omap.h> | ||
#include <asm/arch/ddr_defs.h> | ||
#include <asm/arch/clock.h> | ||
#include <asm/arch/gpio.h> | ||
#include <asm/arch/mmc_host_def.h> | ||
#include <asm/arch/sys_proto.h> | ||
#include <asm/io.h> | ||
#include <asm/emif.h> | ||
#include <asm/gpio.h> | ||
#include <i2c.h> | ||
#include <miiphy.h> | ||
#include <cpsw.h> | ||
#include <watchdog.h> | ||
#include "../common/factoryset.h" | ||
|
||
DECLARE_GLOBAL_DATA_PTR; | ||
|
||
#ifdef CONFIG_SPL_BUILD | ||
void set_uart_mux_conf(void) | ||
{ | ||
enable_uart0_pin_mux(); | ||
} | ||
|
||
void set_mux_conf_regs(void) | ||
{ | ||
/* Initalize the board header */ | ||
enable_i2c0_pin_mux(); | ||
i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); | ||
if (read_eeprom() < 0) | ||
puts("Could not get board ID.\n"); | ||
|
||
enable_board_pin_mux(); | ||
} | ||
|
||
void sdram_init(void) | ||
{ | ||
spl_siemens_board_init(); | ||
board_init_ddr(); | ||
|
||
return; | ||
} | ||
#endif /* #ifdef CONFIG_SPL_BUILD */ | ||
|
||
#ifndef CONFIG_SPL_BUILD | ||
/* | ||
* Basic board specific setup. Pinmux has been handled already. | ||
*/ | ||
int board_init(void) | ||
{ | ||
#if defined(CONFIG_HW_WATCHDOG) | ||
hw_watchdog_init(); | ||
#endif /* defined(CONFIG_HW_WATCHDOG) */ | ||
i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); | ||
if (read_eeprom() < 0) | ||
puts("Could not get board ID.\n"); | ||
|
||
gd->bd->bi_arch_number = CONFIG_MACH_TYPE; | ||
gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100; | ||
|
||
#ifdef CONFIG_FACTORYSET | ||
factoryset_read_eeprom(CONFIG_SYS_I2C_EEPROM_ADDR); | ||
#endif | ||
gpmc_init(); | ||
|
||
#ifdef CONFIG_VIDEO | ||
board_video_init(); | ||
#endif | ||
|
||
return 0; | ||
} | ||
#endif /* #ifndef CONFIG_SPL_BUILD */ | ||
|
||
#define OSC (V_OSCK/1000000) | ||
const struct dpll_params dpll_ddr = { | ||
DDR_PLL_FREQ, OSC-1, 1, -1, -1, -1, -1}; | ||
|
||
const struct dpll_params *get_dpll_ddr_params(void) | ||
{ | ||
return &dpll_ddr; | ||
} | ||
|
||
#ifdef CONFIG_BOARD_LATE_INIT | ||
int board_late_init(void) | ||
{ | ||
omap_nand_switch_ecc(1, 8); | ||
|
||
return 0; | ||
} | ||
#endif | ||
|
||
#ifndef CONFIG_SPL_BUILD | ||
#if defined(BOARD_DFU_BUTTON_GPIO) | ||
/* | ||
* This command returns the status of the user button on | ||
* Input - none | ||
* Returns - 1 if button is held down | ||
* 0 if button is not held down | ||
*/ | ||
static int | ||
do_userbutton(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) | ||
{ | ||
int button = 0; | ||
int gpio; | ||
|
||
gpio = BOARD_DFU_BUTTON_GPIO; | ||
gpio_request(gpio, "DFU"); | ||
gpio_direction_input(gpio); | ||
if (gpio_get_value(gpio)) | ||
button = 1; | ||
else | ||
button = 0; | ||
|
||
gpio_free(gpio); | ||
if (!button) { | ||
/* LED0 - RED=1: GPIO2_0 2*32 = 64 */ | ||
gpio_request(BOARD_DFU_BUTTON_LED, ""); | ||
gpio_direction_output(BOARD_DFU_BUTTON_LED, 1); | ||
gpio_set_value(BOARD_DFU_BUTTON_LED, 1); | ||
} | ||
|
||
return button; | ||
} | ||
|
||
U_BOOT_CMD( | ||
dfubutton, CONFIG_SYS_MAXARGS, 1, do_userbutton, | ||
"Return the status of the DFU button", | ||
"" | ||
); | ||
#endif | ||
|
||
static int | ||
do_usertestwdt(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) | ||
{ | ||
printf("\n\n\n Go into infinite loop\n\n\n"); | ||
while (1) | ||
; | ||
return 0; | ||
}; | ||
|
||
U_BOOT_CMD( | ||
testwdt, CONFIG_SYS_MAXARGS, 1, do_usertestwdt, | ||
"Sends U-Boot into infinite loop", | ||
"" | ||
); | ||
|
||
#ifndef CONFIG_SYS_DCACHE_OFF | ||
void enable_caches(void) | ||
{ | ||
printf("Enable d-cache\n"); | ||
/* Enable D-cache. I-cache is already enabled in start.S */ | ||
dcache_enable(); | ||
} | ||
#endif /* CONFIG_SYS_DCACHE_OFF */ | ||
#endif /* !CONFIG_SPL_BUILD */ |
Oops, something went wrong.