Skip to content
Snippets Groups Projects
Commit b0eac21b authored by Gianfranco Mariotti's avatar Gianfranco Mariotti
Browse files

[i.MX8][ENV] seco_config: add carrier sub-selection

Add carrier sub-selection to seco_config if the device is declared as a module
and modify the FDT carrier environment setup to align to the other selections.
parent 49bec9ee
No related branches found
No related tags found
No related merge requests found
...@@ -43,6 +43,7 @@ static int do_seco_config (struct cmd_tbl *cmdtp, int flag, int argc, char * con ...@@ -43,6 +43,7 @@ static int do_seco_config (struct cmd_tbl *cmdtp, int flag, int argc, char * con
int set_fdt = 0; int set_fdt = 0;
int set_ramfs = 0; int set_ramfs = 0;
int set_filesystem = 0; int set_filesystem = 0;
int set_carrier = 0;
int set_video = 0; int set_video = 0;
int set_touch = 0; int set_touch = 0;
int set_peripheral = 0; int set_peripheral = 0;
...@@ -83,6 +84,12 @@ static int do_seco_config (struct cmd_tbl *cmdtp, int flag, int argc, char * con ...@@ -83,6 +84,12 @@ static int do_seco_config (struct cmd_tbl *cmdtp, int flag, int argc, char * con
set_filesystem = 1; set_filesystem = 1;
} }
#if ENV_IS_MODULE
if (strcmp(argv[1], "carrier") == 0) {
set_carrier = 1;
}
#endif
if (strcmp(argv[1], "video") == 0) { if (strcmp(argv[1], "video") == 0) {
set_video = 1; set_video = 1;
set_fw_load = 1; set_fw_load = 1;
...@@ -116,6 +123,9 @@ static int do_seco_config (struct cmd_tbl *cmdtp, int flag, int argc, char * con ...@@ -116,6 +123,9 @@ static int do_seco_config (struct cmd_tbl *cmdtp, int flag, int argc, char * con
set_fdt = 1; set_fdt = 1;
set_ramfs = 1; set_ramfs = 1;
set_filesystem = 1; set_filesystem = 1;
#if ENV_IS_MODULE
set_carrier = 1;
#endif
set_video = 1; set_video = 1;
#if ENV_NUM_TOUCH > 0 #if ENV_NUM_TOUCH > 0
set_touch = 1; set_touch = 1;
...@@ -167,6 +177,13 @@ static int do_seco_config (struct cmd_tbl *cmdtp, int flag, int argc, char * con ...@@ -167,6 +177,13 @@ static int do_seco_config (struct cmd_tbl *cmdtp, int flag, int argc, char * con
set_filesystem_source( ); set_filesystem_source( );
} }
/* __________________________________________________________________________
* |_____________________________ CARRIER BOARD ______________________________|
*/
if ( set_carrier ) {
set_carriers( -1 );
}
/* __________________________________________________________________________ /* __________________________________________________________________________
* |______________________________ VIDEO OUTPUT ______________________________| * |______________________________ VIDEO OUTPUT ______________________________|
*/ */
...@@ -188,10 +205,16 @@ static int do_seco_config (struct cmd_tbl *cmdtp, int flag, int argc, char * con ...@@ -188,10 +205,16 @@ static int do_seco_config (struct cmd_tbl *cmdtp, int flag, int argc, char * con
if ( set_peripheral ) { if ( set_peripheral ) {
set_peripherals( -1 ); set_peripherals( -1 );
} }
/* __________________________________________________________________________
* |______________________________ DYNAMIC FDT _______________________________|
*/
if ( set_fdt_overlay_load ) { if ( set_fdt_overlay_load ) {
create_overlay_per_dynamic_load_cmd( ); #if ENV_IS_MODULE
create_overlay_carrier_dynamic_load_cmd( );
#endif
create_overlay_video_dynamic_load_cmd( ); create_overlay_video_dynamic_load_cmd( );
create_overlay_per_dynamic_load_cmd( );
} }
/* __________________________________________________________________________ /* __________________________________________________________________________
...@@ -206,9 +229,8 @@ static int do_seco_config (struct cmd_tbl *cmdtp, int flag, int argc, char * con ...@@ -206,9 +229,8 @@ static int do_seco_config (struct cmd_tbl *cmdtp, int flag, int argc, char * con
} }
/* only some seco_config's commands require saving of the environment */ /* only some seco_config's commands require saving of the environment */
if ( set_fdt || set_ramfs || set_kernel || set_fdt || set_ramfs || if ( set_fdt || set_ramfs || set_kernel || set_fdt || set_ramfs || set_filesystem ||
set_filesystem || set_video || set_touch || set_peripheral || set_fw_load ) set_carrier || set_video || set_peripheral || set_fw_load ) {
{
printf ("\n\n"); printf ("\n\n");
env_save (); env_save ();
printf ("\n\n"); printf ("\n\n");
......
...@@ -378,7 +378,7 @@ void selection_fdt_overlay (overlay_list_t list[], int num_element, int *selecti ...@@ -378,7 +378,7 @@ void selection_fdt_overlay (overlay_list_t list[], int num_element, int *selecti
do { do {
printf ("\n __________________________________________________"); printf ("\n __________________________________________________");
printf ("\n Choose FDT overlay option for %s.\n", list[i].title); printf ("\n Choose FDT overlay for %s.\n", list[i].title);
printf (" __________________________________________________\n"); printf (" __________________________________________________\n");
j=0; j=0;
...@@ -853,6 +853,66 @@ int set_filesystem_source( void ) { ...@@ -853,6 +853,66 @@ int set_filesystem_source( void ) {
} }
#define ALWAYS_SAVE_FDT_OVERLAY_CMD 1
/* __________________________________________________________________________
* | |
* | Carrier Settings Selection |
* |__________________________________________________________________________|
*/
#ifdef CONFIG_OF_LIBFDT_OVERLAY
int set_carriers( int fdt_selected_device ) {
int i;
int *carrier_overlay_selections;
char carrier_overlay_list[256];
char *fdtoverlay_carrier_load;
carrier_overlay_selections = malloc( sizeof(int) * gd->boot_setup.overlay_carrier_num );
memset( carrier_overlay_selections, 0, gd->boot_setup.overlay_carrier_num );
memset( carrier_overlay_list, 0, sizeof( carrier_overlay_list ) );
selection_fdt_overlay( gd->boot_setup.overlay_carrier_list, gd->boot_setup.overlay_carrier_num,
carrier_overlay_selections );
for ( i = 0 ; i < gd->boot_setup.overlay_carrier_num ; i++ ) {
if ( gd->boot_setup.overlay_carrier_list[i].options[carrier_overlay_selections[i]].dtb_overlay == NULL )
break;
if ( i == 0 )
sprintf( carrier_overlay_list, "%s",
gd->boot_setup.overlay_carrier_list[i].options[carrier_overlay_selections[i]].dtb_overlay );
else
sprintf( carrier_overlay_list, "%s %s",
carrier_overlay_list,
gd->boot_setup.overlay_carrier_list[i].options[carrier_overlay_selections[i]].dtb_overlay );
SAVE_FDT_OVERLAY_CARRIER_LIST( carrier_overlay_list );
}
#if ALWAYS_SAVE_FDT_OVERLAY_CMD
fdtoverlay_carrier_load = create_fdt_overlay_load_string(
gd->bsp_sources.fdt_dev_list, gd->bsp_sources.fdt_overlay_dev_list,
gd->bsp_sources.fdt_dev_num, carrier_overlay_list, fdt_selected_device );
SAVE_FDT_OVERLAY_CARRIER_CMD( fdtoverlay_carrier_load );
#endif
return 0;
}
void create_overlay_carrier_dynamic_load_cmd( void )
{
char *carrier_list_overlay;
char *fdtoverlay_carrier_load;
carrier_list_overlay = GET_FDT_OVERLAY_CARRIER_LIST;
if ( carrier_list_overlay != NULL ) {
fdtoverlay_carrier_load = create_fdt_overlay_load_string(
gd->bsp_sources.fdt_dev_list, gd->bsp_sources.fdt_overlay_dev_list,
gd->bsp_sources.fdt_dev_num, carrier_list_overlay, -1 );
SAVE_FDT_OVERLAY_CARRIER_CMD( fdtoverlay_carrier_load );
}
}
#endif
/* __________________________________________________________________________ /* __________________________________________________________________________
* | | * | |
...@@ -908,9 +968,8 @@ int selection_video_mode (video_mode_t video_mode_list[], int num_element) { ...@@ -908,9 +968,8 @@ int selection_video_mode (video_mode_t video_mode_list[], int num_element) {
} }
#define ALWAYS_SAVE_FDT_OVERLAY_CMD 1 int set_video_mode( int fdt_selected_device )
{
int set_video_mode( int fdt_selected_device ) {
int video_mode_selection; int video_mode_selection;
#ifdef CONFIG_OF_LIBFDT_OVERLAY #ifdef CONFIG_OF_LIBFDT_OVERLAY
/* for Video FDT overlay */ /* for Video FDT overlay */
......
...@@ -38,6 +38,8 @@ extern int set_ramfs_source( int *use_tftp ); ...@@ -38,6 +38,8 @@ extern int set_ramfs_source( int *use_tftp );
extern void set_for_tftp( int use_tftp ); extern void set_for_tftp( int use_tftp );
extern int set_filesystem_source( void ); extern int set_filesystem_source( void );
extern int set_carriers( int fdt_selected_device );
extern int set_video_mode( int fdt_selected_device ); extern int set_video_mode( int fdt_selected_device );
extern int selection_video_spec( video_boot_args_t *video_args ); extern int selection_video_spec( video_boot_args_t *video_args );
extern int set_video_specification( int video_mode_selection ); extern int set_video_specification( int video_mode_selection );
...@@ -46,6 +48,7 @@ extern int set_touch_mode( int fdt_selected_device ); ...@@ -46,6 +48,7 @@ extern int set_touch_mode( int fdt_selected_device );
extern int set_peripherals( int fdt_selected_device ); extern int set_peripherals( int fdt_selected_device );
extern void create_overlay_carrier_dynamic_load_cmd( void );
extern void create_overlay_video_dynamic_load_cmd( void ); extern void create_overlay_video_dynamic_load_cmd( void );
extern void create_overlay_per_dynamic_load_cmd( void ); extern void create_overlay_per_dynamic_load_cmd( void );
......
...@@ -44,6 +44,12 @@ ...@@ -44,6 +44,12 @@
#define GET_FDT_BOOT_LOAD env_get ("fdt_load2ram") #define GET_FDT_BOOT_LOAD env_get ("fdt_load2ram")
#ifdef CONFIG_OF_LIBFDT_OVERLAY #ifdef CONFIG_OF_LIBFDT_OVERLAY
#define SAVE_FDT_OVERLAY_CARRIER_LIST(x) env_set ("fdt_overlay_carrier_file", (x))
#define GET_FDT_OVERLAY_CARRIER_LIST env_get ("fdt_overlay_carrier_file")
#define SAVE_FDT_OVERLAY_CARRIER_CMD(x) env_set ("fdt_overlay_carrier_cmd", (x))
#define GET_FDT_OVERLAY_CARRIER_CMD env_get ("fdt_overlay_carrier_cmd")
#define SAVE_FDT_OVERLAY_VIDEO_LIST(x) env_set ("fdt_overlay_video_list", (x)) #define SAVE_FDT_OVERLAY_VIDEO_LIST(x) env_set ("fdt_overlay_video_list", (x))
#define GET_FDT_OVERLAY_VIDEO_LIST env_get ("fdt_overlay_video_list") #define GET_FDT_OVERLAY_VIDEO_LIST env_get ("fdt_overlay_video_list")
...@@ -61,8 +67,6 @@ ...@@ -61,8 +67,6 @@
#define SAVE_FDT_OVERLAY_PER_CMD(x) env_set ("fdt_overlay_per_cmd", (x)) #define SAVE_FDT_OVERLAY_PER_CMD(x) env_set ("fdt_overlay_per_cmd", (x))
#define GET_FDT_OVERLAY_PER_CMD env_get ("fdt_overlay_per_cmd") #define GET_FDT_OVERLAY_PER_CMD env_get ("fdt_overlay_per_cmd")
#define SAVE_FDT_OVERLAY_LOAD(x) env_set ("fdt_overlay_per_cmd", (x))
#endif /* CONFIG_OF_LIBFDT_OVERLAY */ #endif /* CONFIG_OF_LIBFDT_OVERLAY */
......
...@@ -216,6 +216,11 @@ typedef struct touch_mode { ...@@ -216,6 +216,11 @@ typedef struct touch_mode {
typedef struct boot_setup { typedef struct boot_setup {
#ifdef CONFIG_OF_LIBFDT_OVERLAY
/* carrier board */
overlay_list_t *overlay_carrier_list;
unsigned int overlay_carrier_num;
#endif
/* video output */ /* video output */
video_mode_t *video_mode_list; video_mode_t *video_mode_list;
int video_mode_num; int video_mode_num;
......
...@@ -92,8 +92,8 @@ ...@@ -92,8 +92,8 @@
#ifdef CONFIG_OF_LIBFDT_OVERLAY #ifdef CONFIG_OF_LIBFDT_OVERLAY
#define MACRO_ENV_FDT_LOAD_OVERLAY_BASE \ #define MACRO_ENV_FDT_LOAD_OVERLAY_BASE \
fdt addr ${fdt_loadaddr}; fdt resize ${fdt_resize}; \ fdt addr ${fdt_loadaddr}; fdt resize ${fdt_resize}; \
if test -n "${fdt_overlay_carrier_file}"; then run fdt_overlay_carrier_cmd; fi; \
seco_config fdtoverlay ; \ seco_config fdtoverlay ; \
if test -n "${fdt_overlay_carrier_file}"; then run fdt_overlay_carrier_cmd; fi; \
if test -n "${fdt_overlay_per_cmd}"; then run fdt_overlay_per_cmd; fi; \ if test -n "${fdt_overlay_per_cmd}"; then run fdt_overlay_per_cmd; fi; \
if test -n "${fdt_overlay_video_cmd}"; then run fdt_overlay_video_cmd; fi; \ if test -n "${fdt_overlay_video_cmd}"; then run fdt_overlay_video_cmd; fi; \
if test -n "${fdt_overlay_touch_cmd}"; then run fdt_overlay_touch_cmd; fi; if test -n "${fdt_overlay_touch_cmd}"; then run fdt_overlay_touch_cmd; fi;
...@@ -284,7 +284,6 @@ ...@@ -284,7 +284,6 @@
"fdt_load_eth2ram="__stringify(MACRO_ENV_FDT_SRC_TFTP)"\0" \ "fdt_load_eth2ram="__stringify(MACRO_ENV_FDT_SRC_TFTP)"\0" \
"fdt_load2ram="__stringify(MACRO_ENV_FDT_SRC_USDHCI)"\0" \ "fdt_load2ram="__stringify(MACRO_ENV_FDT_SRC_USDHCI)"\0" \
"fdt_overlay_carrier_file=" CONFIG_DEFAULT_FDT_OVERLAY_CARRIER_FILE "\0" \ "fdt_overlay_carrier_file=" CONFIG_DEFAULT_FDT_OVERLAY_CARRIER_FILE "\0" \
"fdt_overlay_carrier_cmd= load mmc ${fdt_device_id}:${fdt_partition} ${fdt_overlay_base_addr} ${fdt_overlay_carrier_file}; fdt apply ${fdt_overlay_base_addr};\0" \
"fdt_overlay_base_addr="__stringify(ENV_FDT_OVERLAY_BASEADDR)"\0" \ "fdt_overlay_base_addr="__stringify(ENV_FDT_OVERLAY_BASEADDR)"\0" \
"fdt_overlay_load2ram="__stringify(MACRO_ENV_FDT_LOAD_OVERLAY_BASE)"\0" "fdt_overlay_load2ram="__stringify(MACRO_ENV_FDT_LOAD_OVERLAY_BASE)"\0"
......
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