Skip to content
Snippets Groups Projects
Commit 61159b76 authored by Heiko Schocher's avatar Heiko Schocher Committed by Tom Rini
Browse files

arm, am33xx: update for siemens am335x based boards


updates for the siemens am335x based boards:

- draco: add delay for DDR3 configuration
- change MTD partition layout and add a possibility
  to redefine MTD layout in board header.
- move ubi support to common header file
- draco: improve dtb naming
- draco: set CONFIG_SYS_CBSIZE to 1024
- add generic env based led
  Leds can now be defined in Environment
- add generic env based dfu button
  Which gpio is used for the dfu button can be defined
  through the Environment
- set MACH_TYPE only if defined
- draco: increase CPU freq to 300MHz
- Add time command to siemens am33xx boards
- DDR3: increase default tRFC
- draco: enable pullup for DFU and ERST pin
- change print format DDR3

Signed-off-by: default avatarSamuel Egli <samuel.egli@siemens.com>
Acked-by: default avatarHeiko Schocher <hs@denx.de>
Reviewed-by: default avatarTom Rini <trini@konsulko.com>

Signed-off-by: default avatarHeiko Schocher <hs@denx.de>
parent 8607c4f1
No related branches found
No related tags found
No related merge requests found
...@@ -75,8 +75,9 @@ int board_init(void) ...@@ -75,8 +75,9 @@ int board_init(void)
i2c_set_bus_num(0); i2c_set_bus_num(0);
if (read_eeprom() < 0) if (read_eeprom() < 0)
puts("Could not get board ID.\n"); puts("Could not get board ID.\n");
#ifdef CONFIG_MACH_TYPE
gd->bd->bi_arch_number = CONFIG_MACH_TYPE; gd->bd->bi_arch_number = CONFIG_MACH_TYPE;
#endif
gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100; gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
#ifdef CONFIG_FACTORYSET #ifdef CONFIG_FACTORYSET
...@@ -102,21 +103,29 @@ const struct dpll_params *get_dpll_ddr_params(void) ...@@ -102,21 +103,29 @@ const struct dpll_params *get_dpll_ddr_params(void)
} }
#ifndef CONFIG_SPL_BUILD #ifndef CONFIG_SPL_BUILD
#define MAX_NR_LEDS 10
#define MAX_PIN_NUMBER 128
#define STARTUP 0
#if defined(BOARD_DFU_BUTTON_GPIO) #if defined(BOARD_DFU_BUTTON_GPIO)
/* unsigned char get_button_state(char * const envname, unsigned char def)
* 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 button = 0;
int gpio; int gpio;
char *ptr_env;
gpio = BOARD_DFU_BUTTON_GPIO; /* If button is not found we take default */
gpio_request(gpio, "DFU"); ptr_env = getenv(envname);
if (NULL == ptr_env) {
gpio = def;
} else {
gpio = (unsigned char)simple_strtoul(ptr_env, NULL, 0);
if (gpio > MAX_PIN_NUMBER)
gpio = def;
}
gpio_request(gpio, "");
gpio_direction_input(gpio); gpio_direction_input(gpio);
if (gpio_get_value(gpio)) if (gpio_get_value(gpio))
button = 1; button = 1;
...@@ -127,53 +136,27 @@ do_userbutton(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) ...@@ -127,53 +136,27 @@ do_userbutton(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
return button; return button;
} }
/**
U_BOOT_CMD( * This command returns the status of the user button on
dfubutton, CONFIG_SYS_MAXARGS, 1, do_userbutton, * Input - none
"Return the status of the DFU button", * Returns - 1 if button is held down
"" * 0 if button is not held down
);
#endif
/*
* This command sets led
* Input - name of led
* value of led
* Returns - 1 if input does not match
* 0 if led was set
*/ */
static int static int
do_setled(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) do_userbutton(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{ {
int gpio = 0; int button = 0;
if (argc != 3) button = get_button_state("button_dfu0", BOARD_DFU_BUTTON_GPIO);
goto exit; button |= get_button_state("button_dfu1", BOARD_DFU_BUTTON_GPIO);
#if defined(BOARD_STATUS_LED) return button;
if (!strcmp(argv[1], "stat"))
gpio = BOARD_STATUS_LED;
#endif
#if defined(BOARD_DFU_BUTTON_LED)
if (!strcmp(argv[1], "dfu"))
gpio = BOARD_DFU_BUTTON_LED;
#endif
/* If argument does not mach exit */
if (gpio == 0)
goto exit;
gpio_request(gpio, "");
gpio_direction_output(gpio, 1);
if (!strcmp(argv[2], "1"))
gpio_set_value(gpio, 1);
else
gpio_set_value(gpio, 0);
return 0;
exit:
return 1;
} }
U_BOOT_CMD( U_BOOT_CMD(
led, CONFIG_SYS_MAXARGS, 2, do_setled, dfubutton, CONFIG_SYS_MAXARGS, 1, do_userbutton,
"Set led on or off", "Return the status of the DFU button",
"dfu val - set dfu led\nled stat val - set status led" ""
); );
#endif
static int static int
do_usertestwdt(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) do_usertestwdt(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
...@@ -189,4 +172,95 @@ U_BOOT_CMD( ...@@ -189,4 +172,95 @@ U_BOOT_CMD(
"Sends U-Boot into infinite loop", "Sends U-Boot into infinite loop",
"" ""
); );
/**
* Get led gpios from env and set them.
* The led define in environment need to need to be of the form ledN=NN,S0,S1
* where N is an unsigned integer from 0 to 9 and S0 and S1 is 0 or 1. S0
* defines the startup state of the led, S1 the special state of the led when
* it enters e.g. dfu mode.
*/
void set_env_gpios(unsigned char state)
{
char *ptr_env;
char str_tmp[5]; /* must contain "ledX"*/
char num[1];
unsigned char i, idx, pos1, pos2, ccount;
unsigned char gpio_n, gpio_s0, gpio_s1;
for (i = 0; i < MAX_NR_LEDS; i++) {
strcpy(str_tmp, "led");
sprintf(num, "%d", i);
strcat(str_tmp, num);
/* If env var is not found we stop */
ptr_env = getenv(str_tmp);
if (NULL == ptr_env)
break;
/* Find sperators position */
pos1 = 0;
pos2 = 0;
ccount = 0;
for (idx = 0; ptr_env[idx] != '\0'; idx++) {
if (ptr_env[idx] == ',') {
if (ccount++ < 1)
pos1 = idx;
else
pos2 = idx;
}
}
/* Bad led description skip this definition */
if (pos2 <= pos1 || ccount > 2)
continue;
/* Get pin number and request gpio */
memset(str_tmp, 0, sizeof(str_tmp));
strncpy(str_tmp, ptr_env, pos1*sizeof(char));
gpio_n = (unsigned char)simple_strtoul(str_tmp, NULL, 0);
/* Invalid gpio number skip definition */
if (gpio_n > MAX_PIN_NUMBER)
continue;
gpio_request(gpio_n, "");
if (state == STARTUP) {
/* get pin state 0 and set */
memset(str_tmp, 0, sizeof(str_tmp));
strncpy(str_tmp, ptr_env+pos1+1,
(pos2-pos1-1)*sizeof(char));
gpio_s0 = (unsigned char)simple_strtoul(str_tmp, NULL,
0);
gpio_direction_output(gpio_n, gpio_s0);
} else {
/* get pin state 1 and set */
memset(str_tmp, 0, sizeof(str_tmp));
strcpy(str_tmp, ptr_env+pos2+1);
gpio_s1 = (unsigned char)simple_strtoul(str_tmp, NULL,
0);
gpio_direction_output(gpio_n, gpio_s1);
}
} /* loop through defined led in environment */
}
static int do_board_led(cmd_tbl_t *cmdtp, int flag, int argc,
char *const argv[])
{
if (argc != 2)
return CMD_RET_USAGE;
if ((unsigned char)simple_strtoul(argv[1], NULL, 0) == STARTUP)
set_env_gpios(0);
else
set_env_gpios(1);
return 0;
};
U_BOOT_CMD(
draco_led, CONFIG_SYS_MAXARGS, 2, do_board_led,
"Set LEDs defined in environment",
"<0|1>"
);
#endif /* !CONFIG_SPL_BUILD */ #endif /* !CONFIG_SPL_BUILD */
...@@ -43,7 +43,7 @@ static struct draco_baseboard_id __attribute__((section(".data"))) settings; ...@@ -43,7 +43,7 @@ static struct draco_baseboard_id __attribute__((section(".data"))) settings;
/* Default@303MHz-i0 */ /* Default@303MHz-i0 */
const struct ddr3_data ddr3_default = { const struct ddr3_data ddr3_default = {
0x33524444, 0x56312e35, 0x0080, 0x0000, 0x003A, 0x003F, 0x009F, 0x33524444, 0x56312e35, 0x0080, 0x0000, 0x003A, 0x003F, 0x009F,
0x0079, 0x0888A39B, 0x26247FDA, 0x501F821F, 0x00100206, 0x61A44A32, 0x0079, 0x0888A39B, 0x26517FDA, 0x501F84EF, 0x00100206, 0x61A44A32,
0x0000093B, 0x0000014A, 0x0000093B, 0x0000014A,
"default name @303MHz \0", "default name @303MHz \0",
"default marking \0", "default marking \0",
...@@ -71,8 +71,8 @@ static void print_ddr3_timings(void) ...@@ -71,8 +71,8 @@ static void print_ddr3_timings(void)
printf("clock:\t\t%d MHz\n", DDR_PLL_FREQ); printf("clock:\t\t%d MHz\n", DDR_PLL_FREQ);
printf("device:\t\t%s\n", settings.ddr3.manu_name); printf("device:\t\t%s\n", settings.ddr3.manu_name);
printf("marking:\t%s\n", settings.ddr3.manu_marking); printf("marking:\t%s\n", settings.ddr3.manu_marking);
printf("timing parameters\n"); printf("%-20s, %-8s, %-8s, %-4s\n", "timing parameters", "eeprom",
printf("diff\teeprom\tdefault\n"); "default", "diff");
PRINTARGS(magic); PRINTARGS(magic);
PRINTARGS(version); PRINTARGS(version);
PRINTARGS(ddr3_sratio); PRINTARGS(ddr3_sratio);
...@@ -96,9 +96,12 @@ static void print_ddr3_timings(void) ...@@ -96,9 +96,12 @@ static void print_ddr3_timings(void)
static void print_chip_data(void) static void print_chip_data(void)
{ {
struct ctrl_dev *cdev = (struct ctrl_dev *)CTRL_DEVICE_BASE;
dpll_mpu_opp100.m = am335x_get_efuse_mpu_max_freq(cdev);
printf("\nCPU BOARD\n"); printf("\nCPU BOARD\n");
printf("device: \t'%s'\n", settings.chip.sdevname); printf("device: \t'%s'\n", settings.chip.sdevname);
printf("hw version: \t'%s'\n", settings.chip.shwver); printf("hw version: \t'%s'\n", settings.chip.shwver);
printf("max freq: \t%d MHz\n", dpll_mpu_opp100.m);
} }
#endif /* CONFIG_SPL_BUILD */ #endif /* CONFIG_SPL_BUILD */
...@@ -193,6 +196,11 @@ struct ctrl_ioregs draco_ddr3_ioregs = { ...@@ -193,6 +196,11 @@ struct ctrl_ioregs draco_ddr3_ioregs = {
config_ddr(DDR_PLL_FREQ, &draco_ddr3_ioregs, &draco_ddr3_data, config_ddr(DDR_PLL_FREQ, &draco_ddr3_ioregs, &draco_ddr3_data,
&draco_ddr3_cmd_ctrl_data, &draco_ddr3_emif_reg_data, 0); &draco_ddr3_cmd_ctrl_data, &draco_ddr3_emif_reg_data, 0);
/* For Samsung 2Gbit RAM we need this delay otherwise config fails after
* soft reset.
*/
udelay(2000);
} }
static void spl_siemens_board_init(void) static void spl_siemens_board_init(void)
...@@ -201,6 +209,26 @@ static void spl_siemens_board_init(void) ...@@ -201,6 +209,26 @@ static void spl_siemens_board_init(void)
} }
#endif /* if def CONFIG_SPL_BUILD */ #endif /* if def CONFIG_SPL_BUILD */
#ifdef CONFIG_BOARD_LATE_INIT
int board_late_init(void)
{
omap_nand_switch_ecc(1, 8);
#ifdef CONFIG_FACTORYSET
/* Set ASN in environment*/
if (factory_dat.asn[0] != 0) {
setenv("dtb_name", (char *)factory_dat.asn);
} else {
/* dtb suffix gets added in load script */
setenv("dtb_name", "am335x-draco");
}
#else
setenv("dtb_name", "am335x-draco");
#endif
return 0;
}
#endif
#if (defined(CONFIG_DRIVER_TI_CPSW) && !defined(CONFIG_SPL_BUILD)) || \ #if (defined(CONFIG_DRIVER_TI_CPSW) && !defined(CONFIG_SPL_BUILD)) || \
(defined(CONFIG_SPL_ETH_SUPPORT) && defined(CONFIG_SPL_BUILD)) (defined(CONFIG_SPL_ETH_SUPPORT) && defined(CONFIG_SPL_BUILD))
static void cpsw_control(int enabled) static void cpsw_control(int enabled)
...@@ -280,13 +308,4 @@ U_BOOT_CMD( ...@@ -280,13 +308,4 @@ U_BOOT_CMD(
#endif /* #if defined(CONFIG_DRIVER_TI_CPSW) */ #endif /* #if defined(CONFIG_DRIVER_TI_CPSW) */
#endif /* #if (defined(CONFIG_DRIVER_TI_CPSW) && !defined(CONFIG_SPL_BUILD)) */ #endif /* #if (defined(CONFIG_DRIVER_TI_CPSW) && !defined(CONFIG_SPL_BUILD)) */
#ifdef CONFIG_BOARD_LATE_INIT
int board_late_init(void)
{
omap_nand_switch_ecc(1, 8);
return 0;
}
#endif
#include "../common/board.c" #include "../common/board.c"
...@@ -16,9 +16,13 @@ ...@@ -16,9 +16,13 @@
#ifndef _BOARD_H_ #ifndef _BOARD_H_
#define _BOARD_H_ #define _BOARD_H_
#define PARGS3(x) settings.ddr3.x-ddr3_default.x, \ #define PARGS(x) #x , /* Parameter Name */ \
settings.ddr3.x, ddr3_default.x settings.ddr3.x, /* EEPROM Value */ \
#define PRINTARGS(y) printf("%x, %8x, %8x : "#y"\n", PARGS3(y)) ddr3_default.x, /* Default Value */ \
settings.ddr3.x-ddr3_default.x /* Difference */
#define PRINTARGS(y) printf("%-20s, %8x, %8x, %4d\n", PARGS(y))
#define MAGIC_CHIP 0x50494843 #define MAGIC_CHIP 0x50494843
/* Automatic generated definition */ /* Automatic generated definition */
...@@ -69,4 +73,7 @@ void enable_uart4_pin_mux(void); ...@@ -69,4 +73,7 @@ void enable_uart4_pin_mux(void);
void enable_uart5_pin_mux(void); void enable_uart5_pin_mux(void);
void enable_i2c0_pin_mux(void); void enable_i2c0_pin_mux(void);
void enable_board_pin_mux(void); void enable_board_pin_mux(void);
/* Forwared declaration, defined in common board.c */
void set_env_gpios(unsigned char state);
#endif #endif
...@@ -60,7 +60,7 @@ static struct module_pin_mux nand_pin_mux[] = { ...@@ -60,7 +60,7 @@ static struct module_pin_mux nand_pin_mux[] = {
static struct module_pin_mux gpios_pin_mux[] = { static struct module_pin_mux gpios_pin_mux[] = {
/* DFU button GPIO0_27*/ /* DFU button GPIO0_27*/
{OFFSET(gpmc_ad11), (MODE(7) | PULLUDEN | RXACTIVE)}, {OFFSET(gpmc_ad11), (MODE(7) | PULLUDEN | PULLUP_EN | RXACTIVE)},
{OFFSET(gpmc_csn3), MODE(7) }, /* LED0 GPIO2_0 */ {OFFSET(gpmc_csn3), MODE(7) }, /* LED0 GPIO2_0 */
{OFFSET(emu0), MODE(7)}, /* LED1 GPIO3_7 */ {OFFSET(emu0), MODE(7)}, /* LED1 GPIO3_7 */
/* Triacs in HW Rev 2 */ /* Triacs in HW Rev 2 */
...@@ -222,7 +222,7 @@ static struct module_pin_mux gpios_pin_mux[] = { ...@@ -222,7 +222,7 @@ static struct module_pin_mux gpios_pin_mux[] = {
{OFFSET(vrefp), MODE(7) | RXACTIVE | PULLUDDIS}, {OFFSET(vrefp), MODE(7) | RXACTIVE | PULLUDDIS},
{OFFSET(vrefn), MODE(7) | RXACTIVE | PULLUDDIS}, {OFFSET(vrefn), MODE(7) | RXACTIVE | PULLUDDIS},
/* nRST for SMSC LAN9303 switch - GPIO2_24 */ /* nRST for SMSC LAN9303 switch - GPIO2_24 */
{OFFSET(lcd_pclk), MODE(7) }, /* LAN9303 nRST */ {OFFSET(lcd_pclk), MODE(7) | PULLUDEN | PULLUP_EN }, /* LAN9303 nRST */
{-1}, {-1},
}; };
......
...@@ -19,18 +19,23 @@ ...@@ -19,18 +19,23 @@
#include "siemens-am33x-common.h" #include "siemens-am33x-common.h"
#define CONFIG_SYS_MPUCLK 275 #define CONFIG_DISPLAY_CPUINFO
#define CONFIG_SYS_MPUCLK 300
#define DDR_PLL_FREQ 303 #define DDR_PLL_FREQ 303
#undef CONFIG_SPL_AM33XX_ENABLE_RTC32K_OSC #undef CONFIG_SPL_AM33XX_ENABLE_RTC32K_OSC
#define BOARD_DFU_BUTTON_GPIO 27 #define BOARD_DFU_BUTTON_GPIO 27 /* Use as default */
#define BOARD_DFU_BUTTON_LED 64 /* red LED */
#define BOARD_STATUS_LED 103 /* green LED */
#define GPIO_LAN9303_NRST 88 /* GPIO2_24 = gpio88 */ #define GPIO_LAN9303_NRST 88 /* GPIO2_24 = gpio88 */
#define CONFIG_ENV_SETTINGS_BUTTONS_AND_LEDS \
"button_dfu0=27\0" \
"led0=103,1,0\0" \
"led1=64,0,1\0"
#undef CONFIG_DOS_PARTITION #undef CONFIG_DOS_PARTITION
#undef CONFIG_CMD_FAT #undef CONFIG_CMD_FAT
#define CONFIG_BOARD_LATE_INIT
/* Physical Memory Map */ /* Physical Memory Map */
#define CONFIG_MAX_RAM_BANK_SIZE (1024 << 20) /* 1GB */ #define CONFIG_MAX_RAM_BANK_SIZE (1024 << 20) /* 1GB */
...@@ -57,13 +62,25 @@ ...@@ -57,13 +62,25 @@
/* Watchdog */ /* Watchdog */
#define CONFIG_OMAP_WATCHDOG #define CONFIG_OMAP_WATCHDOG
/* Define own nand partitions */
#define CONFIG_ENV_OFFSET_REDUND 0x2E0000
#define CONFIG_ENV_SIZE_REDUND 0x2000
#define CONFIG_ENV_RANGE (4 * CONFIG_SYS_ENV_SECT_SIZE)
#define MTDPARTS_DEFAULT MTDPARTS_DEFAULT_V2
#ifndef CONFIG_SPL_BUILD #ifndef CONFIG_SPL_BUILD
/* Default env settings */ /* Default env settings */
#define CONFIG_EXTRA_ENV_SETTINGS \ #define CONFIG_EXTRA_ENV_SETTINGS \
"hostname=draco\0" \
"nand_img_size=0x400000\0" \ "nand_img_size=0x400000\0" \
"optargs=\0" \ "optargs=\0" \
CONFIG_COMMON_ENV_SETTINGS "preboot=draco_led 0\0" \
CONFIG_ENV_SETTINGS_BUTTONS_AND_LEDS \
CONFIG_ENV_SETTINGS_V2 \
CONFIG_ENV_SETTINGS_NAND_V2
#ifndef CONFIG_RESTORE_FLASH #ifndef CONFIG_RESTORE_FLASH
/* set to negative value for no autoboot */ /* set to negative value for no autoboot */
...@@ -75,6 +92,7 @@ ...@@ -75,6 +92,7 @@
"reset; " \ "reset; " \
"fi;" \ "fi;" \
"run nand_boot;" \ "run nand_boot;" \
"run nand_boot_backup;" \
"reset;" "reset;"
......
...@@ -19,7 +19,8 @@ ...@@ -19,7 +19,8 @@
#include "siemens-am33x-common.h" #include "siemens-am33x-common.h"
#define CONFIG_SYS_MPUCLK 275 #define CONFIG_DISPLAY_CPUINFO
#define CONFIG_SYS_MPUCLK 300
#define DDR_PLL_FREQ 303 #define DDR_PLL_FREQ 303
#undef CONFIG_SPL_AM33XX_ENABLE_RTC32K_OSC #undef CONFIG_SPL_AM33XX_ENABLE_RTC32K_OSC
...@@ -28,9 +29,15 @@ ...@@ -28,9 +29,15 @@
#define BOARD_STATUS_LED 103 /* green LED */ #define BOARD_STATUS_LED 103 /* green LED */
#define GPIO_LAN9303_NRST 88 /* GPIO2_24 = gpio88 */ #define GPIO_LAN9303_NRST 88 /* GPIO2_24 = gpio88 */
#define CONFIG_ENV_SETTINGS_BUTTONS_AND_LEDS \
"button_dfu0=27\0" \
"led0=103,1,0\0" \
"led1=64,0,1\0"
#undef CONFIG_DOS_PARTITION #undef CONFIG_DOS_PARTITION
#undef CONFIG_CMD_FAT #undef CONFIG_CMD_FAT
#define CONFIG_BOARD_LATE_INIT
/* Physical Memory Map */ /* Physical Memory Map */
#define CONFIG_MAX_RAM_BANK_SIZE (1024 << 20) /* 1GB */ #define CONFIG_MAX_RAM_BANK_SIZE (1024 << 20) /* 1GB */
...@@ -57,6 +64,14 @@ ...@@ -57,6 +64,14 @@
/* Watchdog */ /* Watchdog */
#define CONFIG_OMAP_WATCHDOG #define CONFIG_OMAP_WATCHDOG
/* Define own nand partitions */
#define CONFIG_ENV_OFFSET_REDUND 0x2E0000
#define CONFIG_ENV_SIZE_REDUND 0x2000
#define CONFIG_ENV_RANGE (4 * CONFIG_SYS_ENV_SECT_SIZE)
#define MTDPARTS_DEFAULT MTDPARTS_DEFAULT_V2
#ifndef CONFIG_SPL_BUILD #ifndef CONFIG_SPL_BUILD
/* Default env settings */ /* Default env settings */
...@@ -64,7 +79,10 @@ ...@@ -64,7 +79,10 @@
"hostname=dxr2\0" \ "hostname=dxr2\0" \
"nand_img_size=0x400000\0" \ "nand_img_size=0x400000\0" \
"optargs=\0" \ "optargs=\0" \
CONFIG_COMMON_ENV_SETTINGS "preboot=draco_led 0\0" \
CONFIG_ENV_SETTINGS_BUTTONS_AND_LEDS \
CONFIG_ENV_SETTINGS_V2 \
CONFIG_ENV_SETTINGS_NAND_V2
#ifndef CONFIG_RESTORE_FLASH #ifndef CONFIG_RESTORE_FLASH
/* set to negative value for no autoboot */ /* set to negative value for no autoboot */
...@@ -76,6 +94,7 @@ ...@@ -76,6 +94,7 @@
"reset; " \ "reset; " \
"fi;" \ "fi;" \
"run nand_boot;" \ "run nand_boot;" \
"run nand_boot_backup;" \
"reset;" "reset;"
......
...@@ -25,11 +25,14 @@ ...@@ -25,11 +25,14 @@
#define DDR_PLL_FREQ 266 #define DDR_PLL_FREQ 266
#define BOARD_DFU_BUTTON_GPIO 59 #define BOARD_DFU_BUTTON_GPIO 59
#define BOARD_DFU_BUTTON_LED 117
#define BOARD_LCD_POWER 111 #define BOARD_LCD_POWER 111
#define BOARD_BACK_LIGHT 112 #define BOARD_BACK_LIGHT 112
#define BOARD_TOUCH_POWER 57 #define BOARD_TOUCH_POWER 57
#define CONFIG_ENV_SETTINGS_BUTTONS_AND_LEDS \
"button_dfu0=59\0" \
"led0=117,0,1\0" \
/* Physical Memory Map */ /* Physical Memory Map */
#define CONFIG_MAX_RAM_BANK_SIZE (512 << 20) /* 1GB */ #define CONFIG_MAX_RAM_BANK_SIZE (512 << 20) /* 1GB */
...@@ -48,29 +51,25 @@ ...@@ -48,29 +51,25 @@
#define CONFIG_FACTORYSET #define CONFIG_FACTORYSET
/* UBI Support */
#ifndef CONFIG_SPL_BUILD
#define CONFIG_CMD_MTDPARTS
#define CONFIG_MTD_PARTITIONS
#define CONFIG_MTD_DEVICE
#define CONFIG_RBTREE
#define CONFIG_LZO
#define CONFIG_CMD_UBI
#define CONFIG_CMD_UBIFS
#endif
/* Watchdog */ /* Watchdog */
#define CONFIG_OMAP_WATCHDOG #define CONFIG_OMAP_WATCHDOG
#ifndef CONFIG_SPL_BUILD #ifndef CONFIG_SPL_BUILD
/* Use common default */
#define MTDPARTS_DEFAULT MTDPARTS_DEFAULT_V1
/* Default env settings */ /* Default env settings */
#define CONFIG_EXTRA_ENV_SETTINGS \ #define CONFIG_EXTRA_ENV_SETTINGS \
"hostname=pxm2\0" \ "hostname=pxm2\0" \
"nand_img_size=0x500000\0" \ "nand_img_size=0x500000\0" \
"optargs=\0" \ "optargs=\0" \
"preboot=draco_led 0\0" \
CONFIG_ENV_SETTINGS_BUTTONS_AND_LEDS \
"splashpos=m,m\0" \ "splashpos=m,m\0" \
CONFIG_COMMON_ENV_SETTINGS \ CONFIG_ENV_SETTINGS_V1 \
CONFIG_ENV_SETTINGS_NAND_V1 \
"mmc_dev=0\0" \ "mmc_dev=0\0" \
"mmc_root=/dev/mmcblk0p2 rw\0" \ "mmc_root=/dev/mmcblk0p2 rw\0" \
"mmc_root_fs_type=ext4 rootwait\0" \ "mmc_root_fs_type=ext4 rootwait\0" \
......
...@@ -45,29 +45,23 @@ ...@@ -45,29 +45,23 @@
#define CONFIG_FACTORYSET #define CONFIG_FACTORYSET
/* UBI Support */
#ifndef CONFIG_SPL_BUILD
#define CONFIG_CMD_MTDPARTS
#define CONFIG_MTD_PARTITIONS
#define CONFIG_MTD_DEVICE
#define CONFIG_RBTREE
#define CONFIG_LZO
#define CONFIG_CMD_UBI
#define CONFIG_CMD_UBIFS
#endif
/* Watchdog */ /* Watchdog */
#define WATCHDOG_TRIGGER_GPIO 14 #define WATCHDOG_TRIGGER_GPIO 14
#ifndef CONFIG_SPL_BUILD #ifndef CONFIG_SPL_BUILD
/* Use common default */
#define MTDPARTS_DEFAULT MTDPARTS_DEFAULT_V1
/* Default env settings */ /* Default env settings */
#define CONFIG_EXTRA_ENV_SETTINGS \ #define CONFIG_EXTRA_ENV_SETTINGS \
"hostname=rut\0" \ "hostname=rut\0" \
"nand_img_size=0x500000\0" \ "nand_img_size=0x500000\0" \
"splashpos=m,m\0" \ "splashpos=m,m\0" \
"optargs=fixrtc --no-log consoleblank=0 \0" \ "optargs=fixrtc --no-log consoleblank=0 \0" \
CONFIG_COMMON_ENV_SETTINGS \ CONFIG_ENV_SETTINGS_V1 \
CONFIG_ENV_SETTINGS_NAND_V1 \
"mmc_dev=0\0" \ "mmc_dev=0\0" \
"mmc_root=/dev/mmcblk0p2 rw\0" \ "mmc_root=/dev/mmcblk0p2 rw\0" \
"mmc_root_fs_type=ext4 rootwait\0" \ "mmc_root_fs_type=ext4 rootwait\0" \
......
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,7 @@
#define CONFIG_CMD_ASKENV #define CONFIG_CMD_ASKENV
#define CONFIG_CMD_ECHO #define CONFIG_CMD_ECHO
#define CONFIG_CMD_CACHE #define CONFIG_CMD_CACHE
#define CONFIG_CMD_TIME
#define CONFIG_SYS_GENERIC_BOARD #define CONFIG_SYS_GENERIC_BOARD
...@@ -69,7 +70,7 @@ ...@@ -69,7 +70,7 @@
#define CONFIG_SYS_MAXARGS 32 #define CONFIG_SYS_MAXARGS 32
/* Console I/O Buffer Size */ /* Console I/O Buffer Size */
#define CONFIG_SYS_CBSIZE 512 #define CONFIG_SYS_CBSIZE 1024
/* Print Buffer Size */ /* Print Buffer Size */
#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE \ #define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE \
...@@ -309,22 +310,87 @@ ...@@ -309,22 +310,87 @@
/* NAND support */ /* NAND support */
#ifdef CONFIG_NAND #ifdef CONFIG_NAND
#define CONFIG_CMD_NAND #define CONFIG_CMD_NAND
/* UBI Support */
#ifndef CONFIG_SPL_BUILD
#define CONFIG_CMD_MTDPARTS #define CONFIG_CMD_MTDPARTS
#define CONFIG_MTD_PARTITIONS
#define CONFIG_MTD_DEVICE
#define CONFIG_RBTREE
#define CONFIG_LZO
#define CONFIG_CMD_UBI
#define CONFIG_CMD_UBIFS
#endif
/* Commen environment */
#define CONFIG_PREBOOT
#define COMMON_ENV_DFU_ARGS "dfu_args=run bootargs_defaults;" \
"setenv bootargs ${bootargs};" \
"mtdparts default;" \
"draco_led 1;" \
"dfu 0 nand 0;" \
"draco_led 0;\0" \
#define COMMON_ENV_NAND_BOOT \
"nand_boot=echo Booting from nand; " \
"if test ${upgrade_available} -eq 1; then " \
"if test ${bootcount} -gt ${bootlimit}; " \
"then " \
"setenv upgrade_available 0;" \
"setenv ${partitionset_active} true;" \
"if test -n ${A}; then " \
"setenv partitionset_active B; " \
"env delete A; " \
"fi;" \
"if test -n ${B}; then " \
"setenv partitionset_active A; " \
"env delete B; " \
"fi;" \
"saveenv; " \
"fi;" \
"fi;" \
"echo set ${partitionset_active}...;" \
"run nand_args; "
#define COMMON_ENV_NAND_CMDS "flash_self=run nand_boot\0" \
"flash_self_test=setenv testargs test; " \
"run nand_boot\0" \
"dfu_start=echo Preparing for dfu mode ...; " \
"run dfu_args; \0"
#define COMMON_ENV_SETTINGS \
"verify=no \0" \
"project_dir=targetdir\0" \
"upgrade_available=0\0" \
"altbootcmd=run bootcmd\0" \
"bootlimit=3\0" \
"partitionset_active=A\0" \
"loadaddr=0x82000000\0" \
"kloadaddr=0x81000000\0" \
"script_addr=0x81900000\0" \
"console=console=ttyMTD,mtdoops console=ttyO0,115200n8 panic=5\0" \
"nfsopts=nolock rw\0" \
"ip_method=none\0" \
"bootenv=uEnv.txt\0" \
"bootargs_defaults=setenv bootargs " \
"console=${console} " \
"${testargs} " \
"${optargs}\0" \
"siemens_help=echo; "\
"echo Type 'run flash_self' to use kernel and root " \
"filesystem on memory; echo Type 'run flash_self_test' to " \
"use kernel and root filesystem on memory, boot in test " \
"mode; echo Not ready yet: 'run flash_nfs' to use kernel " \
"from memory and root filesystem over NFS; echo Type " \
"'run net_nfs' to get Kernel over TFTP and mount root " \
"filesystem over NFS; " \
"echo Set partitionset_active variable to 'A' " \
"or 'B' to select kernel and rootfs partition; " \
"echo" \
"\0"
#define MTDIDS_NAME_STR "omap2-nand.0"
#define MTDIDS_DEFAULT "nand0=" MTDIDS_NAME_STR
#define MTDPARTS_DEFAULT "mtdparts=" MTDIDS_NAME_STR ":" \
"128k(spl)," \
"128k(spl.backup1)," \
"128k(spl.backup2)," \
"128k(spl.backup3)," \
"1920k(u-boot)," \
"128k(uboot.env)," \
"5120k(kernel_a)," \
"5120k(kernel_b)," \
"8192k(mtdoops)," \
"-(rootfs)"
/* /*
* Variant 1 partition layout
* chip-size = 256MiB * chip-size = 256MiB
*| name | size | address area | *| name | size | address area |
*------------------------------------------------------- *-------------------------------------------------------
...@@ -340,8 +406,21 @@ ...@@ -340,8 +406,21 @@
*| rootfs | 235.500 MiB | 0x 1480000..0x fffffff | *| rootfs | 235.500 MiB | 0x 1480000..0x fffffff |
*------------------------------------------------------- *-------------------------------------------------------
*/ */
#define MTDIDS_NAME_STR "omap2-nand.0"
#define MTDIDS_DEFAULT "nand0=" MTDIDS_NAME_STR
#define MTDPARTS_DEFAULT_V1 "mtdparts=" MTDIDS_NAME_STR ":" \
"128k(spl)," \
"128k(spl.backup1)," \
"128k(spl.backup2)," \
"128k(spl.backup3)," \
"1920k(u-boot)," \
"128k(uboot.env)," \
"5120k(kernel_a)," \
"5120k(kernel_b)," \
"8192k(mtdoops)," \
"-(rootfs)"
#define DFU_ALT_INFO_NAND \ #define DFU_ALT_INFO_NAND_V1 \
"spl part 0 1;" \ "spl part 0 1;" \
"spl.backup1 part 0 2;" \ "spl.backup1 part 0 2;" \
"spl.backup2 part 0 3;" \ "spl.backup2 part 0 3;" \
...@@ -352,17 +431,7 @@ ...@@ -352,17 +431,7 @@
"kernel_b part 0 8;" \ "kernel_b part 0 8;" \
"rootfs partubi 0 10" "rootfs partubi 0 10"
#define CONFIG_COMMON_ENV_SETTINGS \ #define CONFIG_ENV_SETTINGS_NAND_V1 \
"verify=no \0" \
"project_dir=targetdir\0" \
"upgrade_available=0\0" \
"altbootcmd=run bootcmd\0" \
"bootlimit=3\0" \
"partitionset_active=A\0" \
"loadaddr=0x82000000\0" \
"kloadaddr=0x81000000\0" \
"script_addr=0x81900000\0" \
"console=console=ttyMTD,mtdoops console=ttyO0,115200n8 panic=5\0" \
"nand_active_ubi_vol=rootfs_a\0" \ "nand_active_ubi_vol=rootfs_a\0" \
"nand_active_ubi_vol_A=rootfs_a\0" \ "nand_active_ubi_vol_A=rootfs_a\0" \
"nand_active_ubi_vol_B=rootfs_b\0" \ "nand_active_ubi_vol_B=rootfs_b\0" \
...@@ -370,13 +439,6 @@ ...@@ -370,13 +439,6 @@
"nand_src_addr=0x280000\0" \ "nand_src_addr=0x280000\0" \
"nand_src_addr_A=0x280000\0" \ "nand_src_addr_A=0x280000\0" \
"nand_src_addr_B=0x780000\0" \ "nand_src_addr_B=0x780000\0" \
"nfsopts=nolock rw mem=128M\0" \
"ip_method=none\0" \
"bootenv=uEnv.txt\0" \
"bootargs_defaults=setenv bootargs " \
"console=${console} " \
"${testargs} " \
"${optargs}\0" \
"nand_args=run bootargs_defaults;" \ "nand_args=run bootargs_defaults;" \
"mtdparts default;" \ "mtdparts default;" \
"setenv ${partitionset_active} true;" \ "setenv ${partitionset_active} true;" \
...@@ -395,15 +457,15 @@ ...@@ -395,15 +457,15 @@
"rootfstype=${nand_root_fs_type} ip=${ip_method} " \ "rootfstype=${nand_root_fs_type} ip=${ip_method} " \
"console=ttyMTD,mtdoops console=ttyO0,115200n8 mtdoops.mtddev" \ "console=ttyMTD,mtdoops console=ttyO0,115200n8 mtdoops.mtddev" \
"=mtdoops\0" \ "=mtdoops\0" \
"dfu_args=run bootargs_defaults;" \ COMMON_ENV_DFU_ARGS \
"setenv bootargs ${bootargs} ;" \ "dfu_alt_info=" DFU_ALT_INFO_NAND_V1 "\0" \
"mtdparts default; " \ COMMON_ENV_NAND_BOOT \
"led dfu 1;" \ "nand read.i ${kloadaddr} ${nand_src_addr} " \
"led stat 0;" \ "${nand_img_size}; bootm ${kloadaddr}\0" \
"dfu 0 nand 0;" \ COMMON_ENV_NAND_CMDS
"led dfu 0;" \
"led stat 1;\0" \ #define CONFIG_ENV_SETTINGS_V1 \
"dfu_alt_info=" DFU_ALT_INFO_NAND "\0" \ COMMON_ENV_SETTINGS \
"net_args=run bootargs_defaults;" \ "net_args=run bootargs_defaults;" \
"mtdparts default;" \ "mtdparts default;" \
"setenv bootfile ${project_dir}/kernel/uImage;" \ "setenv bootfile ${project_dir}/kernel/uImage;" \
...@@ -413,48 +475,103 @@ ...@@ -413,48 +475,103 @@
"nfsroot=${serverip}:${rootpath},${nfsopts} " \ "nfsroot=${serverip}:${rootpath},${nfsopts} " \
"ip=${ipaddr}:${serverip}:" \ "ip=${ipaddr}:${serverip}:" \
"${gatewayip}:${netmask}:${hostname}:eth0:off\0" \ "${gatewayip}:${netmask}:${hostname}:eth0:off\0" \
"nand_boot=echo Booting from nand; " \ "net_nfs=echo Booting from network ...; " \
"if test ${upgrade_available} -eq 1; then " \ "run net_args; " \
"if test ${bootcount} -gt ${bootlimit}; " \ "tftpboot ${kloadaddr} ${serverip}:${bootfile}; " \
"then " \ "bootm ${kloadaddr}\0"
"setenv upgrade_available 0;" \
"setenv ${partitionset_active} true;" \ /*
"if test -n ${A}; then " \ * Variant 2 partition layout
"setenv partitionset_active B; " \ * chip-size = 256MiB
"env delete A; " \ *| name | size | address area |
"fi;" \ *-------------------------------------------------------
"if test -n ${B}; then " \ *| spl | 128.000 KiB | 0x 0..0x 1ffff |
"setenv partitionset_active A; " \ *| spl.backup1 | 128.000 KiB | 0x 20000..0x 3ffff |
"env delete B; " \ *| spl.backup2 | 128.000 KiB | 0x 40000..0x 5ffff |
"fi;" \ *| spl.backup3 | 128.000 KiB | 0x 60000..0x 7ffff |
"saveenv; " \ *| u-boot | 1.875 MiB | 0x 80000..0x 25ffff |
"fi;" \ *| uboot.env0 | 512.000 KiB | 0x 260000..0x 2Dffff |
*| uboot.env1 | 512.000 KiB | 0x 2E0000..0x 35ffff |
*| rootfs | 148.000 MiB | 0x 360000..0x 975ffff |
*| mtdoops | 512.000 KiB | 0x 9760000..0x 98Dffff |
*|configuration | 104.125 MiB | 0x 97E0000..0x fffffff |
*-------------------------------------------------------
*/
#define MTDPARTS_DEFAULT_V2 "mtdparts=" MTDIDS_NAME_STR ":" \
"128k(spl)," \
"128k(spl.backup1)," \
"128k(spl.backup2)," \
"128k(spl.backup3)," \
"1920k(u-boot)," \
"512k(u-boot.env0)," \
"512k(u-boot.env1)," \
"148m(rootfs)," \
"512k(mtdoops)," \
"-(configuration)"
#define DFU_ALT_INFO_NAND_V2 \
"spl part 0 1;" \
"spl.backup1 part 0 2;" \
"spl.backup2 part 0 3;" \
"spl.backup3 part 0 4;" \
"u-boot part 0 5;" \
"u-boot.env0 part 0 6;" \
"u-boot.env1 part 0 7;" \
"rootfs partubi 0 8;" \
"configuration partubi 0 10"
#define CONFIG_ENV_SETTINGS_NAND_V2 \
"nand_active_ubi_vol=rootfs_a\0" \
"rootfs_name=rootfs\0" \
"kernel_name=uImage\0"\
"nand_root_fs_type=ubifs rootwait=1\0" \
"nand_args=run bootargs_defaults;" \
"mtdparts default;" \
"setenv ${partitionset_active} true;" \
"if test -n ${A}; then " \
"setenv nand_active_ubi_vol ${rootfs_name}_a;" \
"fi;" \ "fi;" \
"echo set ${partitionset_active}...;" \ "if test -n ${B}; then " \
"run nand_args; " \ "setenv nand_active_ubi_vol ${rootfs_name}_b;" \
"nand read.i ${kloadaddr} ${nand_src_addr} " \ "fi;" \
"${nand_img_size}; bootm ${kloadaddr}\0" \ "setenv nand_root ubi0:${nand_active_ubi_vol} rw " \
"ubi.mtd=7,2048 ubi.mtd=9,2048;" \
"setenv bootargs ${bootargs} " \
"root=${nand_root} noinitrd ${mtdparts} " \
"rootfstype=${nand_root_fs_type} ip=${ip_method} " \
"console=ttyMTD,mtdoops console=ttyO0,115200n8 mtdoops.mtddev" \
"=mtdoops\0" \
COMMON_ENV_DFU_ARGS \
"dfu_alt_info=" DFU_ALT_INFO_NAND_V2 "\0" \
COMMON_ENV_NAND_BOOT \
"ubi part rootfs 2048;" \
"ubifsmount ubi0:${nand_active_ubi_vol};" \
"ubifsload ${kloadaddr} boot/${kernel_name};" \
"ubifsload ${loadaddr} boot/${dtb_name}.dtb;" \
"bootm ${kloadaddr} - ${loadaddr}\0" \
"nand_boot_backup=ubifsload ${loadaddr} boot/am335x-draco.dtb;" \
"bootm ${kloadaddr} - ${loadaddr}\0" \
COMMON_ENV_NAND_CMDS
#define CONFIG_ENV_SETTINGS_V2 \
COMMON_ENV_SETTINGS \
"net_args=run bootargs_defaults;" \
"mtdparts default;" \
"setenv bootfile ${project_dir}/kernel/uImage;" \
"setenv bootdtb ${project_dir}/kernel/dtb;" \
"setenv rootpath /home/projects/${project_dir}/rootfs;" \
"setenv bootargs ${bootargs} " \
"root=/dev/nfs ${mtdparts} " \
"nfsroot=${serverip}:${rootpath},${nfsopts} " \
"ip=${ipaddr}:${serverip}:" \
"${gatewayip}:${netmask}:${hostname}:eth0:off\0" \
"net_nfs=echo Booting from network ...; " \ "net_nfs=echo Booting from network ...; " \
"run net_args; " \ "run net_args; " \
"tftpboot ${kloadaddr} ${serverip}:${bootfile}; " \ "tftpboot ${kloadaddr} ${serverip}:${bootfile}; " \
"bootm ${kloadaddr}\0" \ "tftpboot ${loadaddr} ${serverip}:${bootdtb}; " \
"flash_self=run nand_boot\0" \ "bootm ${kloadaddr} - ${loadaddr}\0"
"flash_self_test=setenv testargs test; " \
"run nand_boot\0" \
"dfu_start=echo Preparing for dfu mode ...; " \
"run dfu_args; \0" \
"preboot=echo; "\
"echo Type 'run flash_self' to use kernel and root " \
"filesystem on memory; echo Type 'run flash_self_test' to " \
"use kernel and root filesystem on memory, boot in test " \
"mode; echo Not ready yet: 'run flash_nfs' to use kernel " \
"from memory and root filesystem over NFS; echo Type " \
"'run net_nfs' to get Kernel over TFTP and mount root " \
"filesystem over NFS; " \
"echo Set partitionset_active variable to 'A' " \
"or 'B' to select kernel and rootfs partition; " \
"echo" \
"\0"
#define CONFIG_NAND_OMAP_GPMC #define CONFIG_NAND_OMAP_GPMC
#define CONFIG_NAND_OMAP_ELM #define CONFIG_NAND_OMAP_ELM
...@@ -473,6 +590,9 @@ ...@@ -473,6 +590,9 @@
#define CONFIG_OMAP_GPIO #define CONFIG_OMAP_GPIO
/* Gpio cmd support */
#define CONFIG_CMD_GPIO
/* Watchdog */ /* Watchdog */
#define CONFIG_HW_WATCHDOG #define CONFIG_HW_WATCHDOG
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment