board: freescale: ls1012ardb: Add command to switch QSPI bank
PATCH 1/1 board: freescale: ls1012ardb: Add command to switch QSPI bank
Add command "boot_bank X" to switch the boot bank to either 1 or 2.
--- board/freescale/ls1012ardb/ls1012ardb.c | 85 +++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+)
board/freescale/ls1012ardb/ls1012ardb.c +85 -0
@@ -26,6 +26,9 @@DECLARE_GLOBAL_DATA_PTR ; +#define BOOT_FROM_UPPER_BANK 0x2 +#define BOOT_FROM_LOWER_BANK 0x1 +int checkboard (void ) {#ifdef CONFIG_TARGET_LS1012ARDB
@@ -212,3 +215,85 @@ int ft_board_setup(void *blob, bd_t *bd)return 0 ; } + +static int switch_to_bank1 (void ) +{ +u8 data; +int ret; + +i2c_set_bus_num (0 ); + + data =0xf4 ; + ret =i2c_write (0x24 ,0x3 ,1 , &data,1 ); +if (ret) { +printf ("i2c write error to chip : %u, addr : %u, data : %u\n" , +0x24 ,0x3 , data); + } + +return ret; +} + +static int switch_to_bank2 (void ) +{ +u8 data; +int ret; + +i2c_set_bus_num (0 ); + + data =0xfc ; + ret =i2c_write (0x24 ,0x7 ,1 , &data,1 ); +if (ret) { +printf ("i2c write error to chip : %u, addr : %u, data : %u\n" , +0x24 ,0x7 , data); + goto err; + } + + data =0xf5 ; + ret =i2c_write (0x24 ,0x3 ,1 , &data,1 ); +if (ret) { +printf ("i2c write error to chip : %u, addr : %u, data : %u\n" , +0x24 ,0x3 , data); + } +err: +return ret; +} + +static int convert_flash_bank (int bank) +{ +int ret =0 ; + +switch (bank) { +case BOOT_FROM_UPPER_BANK : + ret =switch_to_bank2 (); +break ; +case BOOT_FROM_LOWER_BANK : + ret =switch_to_bank1 (); +break ; +default : + ret =CMD_RET_USAGE ; +break ; + }; + +return ret; +} + +static int flash_bank_cmd (cmd_tbl_t *cmdtp,int flag,int argc, +char *const argv[]) +{ +if (argc !=2 ) +return CMD_RET_USAGE ; +if (strcmp (argv[1 ],"1" ) ==0 ) +convert_flash_bank (BOOT_FROM_LOWER_BANK ); +else if (strcmp (argv[1 ],"2" ) ==0 ) +convert_flash_bank (BOOT_FROM_UPPER_BANK ); +else +return CMD_RET_USAGE ; + +return 0 ; +} + +U_BOOT_CMD ( + boot_bank,2 ,0 , flash_bank_cmd, +"Flash bank Selection Control" , +"bank[1-lower bank/2-upper bank] (e.g. boot_bank 1)" +);
Signature · 1 line
1.9.1
PATCH 1/1 board: freescale: ls1012ardb: Add command to switch QSPI bank
Quoted 2 lines · Jagdish Gediya
Add command "
boot_bankX" to switch the boot bank to either 1 or 2.
Are these functions required as this can be handled by new env vars to switch banks?
Quoted 113 lines
Signed-off-by Jagdish Gediya <[email protected]>--- board/freescale/ls1012ardb/ls1012ardb.c | 85 +++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+)board/freescale/ls1012ardb/ls1012ardb.c +85
-1@@ -26,6 +26,9 @@DECLARE_GLOBAL_DATA_PTR ; +#define BOOT_FROM_UPPER_BANK 0x2 +#define BOOT_FROM_LOWER_BANK 0x1 +int checkboard (void ) {#ifdef CONFIG_TARGET_LS1012ARDB @@ -212,3 +215,85 @@ int ft_board_setup(void *blob, bd_t *bd)return 0 ; } + +static int switch_to_bank1 (void ) +{ +u8 data; +int ret; + +i2c_set_bus_num (0 ); + + data =0xf4 ; + ret =i2c_write (0x24 ,0x3 ,1 , &data,1 ); +if (ret) { +printf ("i2c write error to chip : %u, addr : %u, data : %u\n" , +0x24 ,0x3 , data); + } + +return ret; +} + +static int switch_to_bank2 (void ) +{ +u8 data; +int ret; + +i2c_set_bus_num (0 ); + + data =0xfc ; + ret =i2c_write (0x24 ,0x7 ,1 , &data,1 ); +if (ret) { +printf ("i2c write error to chip : %u, addr : %u, data : %u\n" , +0x24 ,0x7 , data); + goto err; + } + + data =0xf5 ; + ret =i2c_write (0x24 ,0x3 ,1 , &data,1 ); +if (ret) { +printf ("i2c write error to chip : %u, addr : %u, data : %u\n" , +0x24 ,0x3 , data); + } +err: +return ret; +} + +static int convert_flash_bank (int bank) +{ +int ret =0 ; + +switch (bank) { +case BOOT_FROM_UPPER_BANK : + ret =switch_to_bank2 (); +break ; +case BOOT_FROM_LOWER_BANK : + ret =switch_to_bank1 (); +break ; +default : + ret =CMD_RET_USAGE ; +break ; + }; + +return ret; +} + +static int flash_bank_cmd (cmd_tbl_t *cmdtp,int flag,int argc, +char *const argv[]) +{ +if (argc !=2 ) +return CMD_RET_USAGE ; +if (strcmp (argv[1 ],"1" ) ==0 ) +convert_flash_bank (BOOT_FROM_LOWER_BANK ); +else if (strcmp (argv[1 ],"2" ) ==0 ) +convert_flash_bank (BOOT_FROM_UPPER_BANK ); +else +return CMD_RET_USAGE ; + +return 0 ; +} + +U_BOOT_CMD ( + boot_bank,2 ,0 , flash_bank_cmd, +"Flash bank Selection Control" , +"bank[1-lower bank/2-upper bank] (e.g. boot_bank 1)" +); --1.9.1
_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
https://lists.denx.de/listinfo/u-boot
PATCH 1/1 board: freescale: ls1012ardb: Add command to switch QSPI bank
Quoted 7 lines · Calvin Johnson
Quoted 2 lines · Jagdish Gediya
Add command "
boot_bankX" to switch the boot bank to either 1 or 2.Are these functions required as this can be handled by new env vars to switch banks?
If you're going to add something new, a command is much more pleasant than env vars -- particularly if you stick to something like the familiar interfaces ("pix altbank", "qix altbank", etc), and include reporting of which bank was booted from if it's not there already. Of course, a fully standardized interface would be even better.
I'm assuming this hardware isn't at all compatible with pixis/qixis?
-Scott
PATCH 1/1 board: freescale: ls1012ardb: Add command to switch QSPI bank
Quoted 6 lines · Scott Wood
Quoted 5 lines · Calvin Johnson
Quoted 2 lines · Jagdish Gediya
Add command "
boot_bankX" to switch the boot bank to either 1 or 2.
Quoted 8 lines
Quoted 2 lines
Are these functions required as this can be handled by new env vars to switch banks?
If you're going to add something new, a command is much more pleasant than env vars -- particularly if you stick to something like the familiar interfaces ("pix altbank", "qix altbank", etc), and include reporting of which bank was booted from if it's not there already. Of course, a fully standardized interface would be even better.
Yes, a fully standardized generic interface supporting all similar platforms with multiple banks
would be better. What this patch currently does can be done with simple env vars, like :
setenv boot_bank_1 'i2c mw 0x24 0x7 0xfc; i2c mw 0x24 0x3 0xf5' setenv boot_bank_2 'i2c mw 0x24 0x7 0xfc; i2c mw 0x24 0x3 0xf4'
regards
Calvin
PATCH 1/1 board: freescale: ls1012ardb: Add command to switch QSPI bank
Quoted 20 lines · Calvin Johnson
Quoted 10 lines · Scott Wood
Quoted 8 lines · Calvin Johnson
On Fri, Apr 13, 2018 at 12:18 AM, Jagdish Gediya <[email protected]
Quoted 1 line
Quoted 2 lines · wrote:
Add command "
boot_bankX" to switch the boot bank to either 1 or 2.Are these functions required as this can be handled by new env vars to switch banks?
Quoted 8 lines
If you're going to add something new, a command is much more pleasant than env
vars -- particularly if you stick to something like the familiar interfaces
("pix altbank", "qix altbank", etc), and include reporting of which bank was
booted from if it's not there already. Of course, a fully standardized interface would be even better.
Quoted 2 lines
Yes, a fully standardized generic interface supporting all similar platforms with multiple banks
And other boot sources such as NAND and MMC.
Quoted 5 lines
would be better. What this patch currently does can be done with simple env vars, like :
setenv
boot_bank_1'i2c mw0x240x70xfc; i2c mw0x240x30xf5' setenvboot_bank_2'i2c mw0x240x70xfc; i2c mw0x240x30xf4'
...if the user knows to env reset those variables after the update (versus something that shows up in help), and if they don't get corrupted in a multi- user board farm environment, etc.
-Scott
PATCH 1/1 board: freescale: ls1012ardb: Add command to switch QSPI bank
Quoted 40 lines
-----Original Message-----
From: Scott Wood [mailto:oss at buserror.net]
Sent: Friday, April 20, 2018 6:40 AM
To: Calvin Johnson <[email protected]>
Cc: Jagdish Gediya <[email protected]>; U-Boot Mailing List <u- boot at lists.denx.de>; Calvin Johnson <[email protected]>; York Sun <[email protected]>
Subject: Re: [U-Boot] [PATCH] board: freescale: ls1012ardb: Add command to switch QSPI bankQuoted 4 lines · Calvin Johnson
Quoted 3 lines · Scott Wood
Quoted 2 lines · Calvin Johnson
On Fri, Apr 13, 2018 at 12:18 AM, Jagdish Gediya <[email protected]
Quoted 1 line
Quoted 8 lines
Quoted 8 lines
Quoted 6 lines
Quoted 2 lines · wrote:
Add command "
boot_bankX" to switch the boot bank to either 1 or 2.Are these functions required as this can be handled by new env vars to switch banks?
If you're going to add something new, a command is much more pleasant
than
Quoted 10 lines
Quoted 7 lines
env
vars -- particularly if you stick to something like the familiar interfaces
("pix altbank", "qix altbank", etc), and include reporting of which bank was
booted from if it's not there already. Of course, a fully standardized interface would be even better.Yes, a fully standardized generic interface supporting all similar platforms with multiple banks
And other boot sources such as NAND and MMC.
Quoted 3 lines
would be better. What this patch currently does can be done with simple env vars, like :
Quoted 6 lines
Quoted 2 lines
setenv
boot_bank_1'i2c mw0x240x70xfc; i2c mw0x240x30xf5' setenvboot_bank_2'i2c mw0x240x70xfc; i2c mw0x240x30xf4'...if the user knows to env reset those variables after the update (versus something that shows up in help), and if they don't get corrupted in a multi- user board farm environment, etc.
Make sense. Thanks!
Calvin
PATCH 1/1 board: freescale: ls1012ardb: Add command to switch QSPI bank
Quoted 4 lines · Calvin Johnson
Quoted 4 lines
Quoted 4 lines
would be better. What this patch currently does can be done with simple env vars, like :
Quoted 9 lines
Quoted 6 lines
Quoted 2 lines
setenv
boot_bank_1'i2c mw0x240x70xfc; i2c mw0x240x30xf5' setenvboot_bank_2'i2c mw0x240x70xfc; i2c mw0x240x30xf4'...if the user knows to env reset those variables after the update (versus something that shows up in help), and if they don't get corrupted in a multi- user board farm environment, etc.
Make sense. Thanks!
Calvin,
Do you want to stay with env, or still want this patch, or standardize the command?
York
PATCH 1/1 board: freescale: ls1012ardb: Add command to switch QSPI bank
Hi York,
Quoted 22 lines
-----Original Message-----
From: York Sun
Sent: Tuesday, July 31, 2018 8:37 PM
To: Calvin Johnson <[email protected]>; Scott Wood <[email protected]>; Calvin Johnson <[email protected]>
Cc: Jagdish Gediya <[email protected]>; U-Boot Mailing List <u- boot at lists.denx.de>
Subject: Re: [U-Boot] [PATCH] board: freescale: ls1012ardb: Add command to switch QSPI bankQuoted 11 lines · Calvin Johnson
Quoted 10 lines
Quoted 6 lines
would be better. What this patch currently does can be done with simple env vars, like :
setenv
boot_bank_1'i2c mw0x240x70xfc; i2c mw0x240x30xf5' setenvboot_bank_2'i2c mw0x240x70xfc; i2c mw0x240x30xf4'...if the user knows to env reset those variables after the update (versus something that shows up in help), and if they don't get corrupted in a multi- user board farm environment, etc.
Quoted 7 lines
Quoted 2 lines
Make sense. Thanks!
Calvin,
Do you want to stay with env, or still want this patch, or standardize the command?
Ideally, a fully standardized generic command interface supporting all similar platforms with multiple banks as well as other boot sources such as NAND and MMC, is the best option.
This patch looks good as an interim solution.
Regards
Calvin
PATCH 1/1 board: freescale: ls1012ardb: Add command to switch QSPI bank
In reply to Scott WoodThanks Scott for reviewing this patch
Quoted 29 lines
-----Original Message-----
From: U-Boot [mailto:u-boot-bounces at lists.denx.de] On Behalf Of Scott Wood
Sent: Friday, April 20, 2018 6:40 AM
To: Calvin Johnson <[email protected]>
Cc: U-Boot Mailing List <[email protected]>
Subject: Re: [U-Boot] [PATCH] board: freescale: ls1012ardb: Add command to switch QSPI bankQuoted 19 lines · Calvin Johnson
Quoted 17 lines · Scott Wood
Quoted 9 lines · Calvin Johnson
On Fri, Apr 13, 2018 at 12:18 AM, Jagdish Gediya
<[email protected]Quoted 1 line
Quoted 2 lines · wrote:
Add command "
boot_bankX" to switch the boot bank to either 1 or 2.Are these functions required as this can be handled by new env vars to switch banks?
If you're going to add something new, a command is much more pleasant than env vars -- particularly if you stick to something like the familiar interfaces ("pix altbank", "qix altbank", etc), and include reporting of which bank was booted from if it's not there already. Of course, a fully standardized interface would be even better.
Quoted 4 lines
Quoted 2 lines
Yes, a fully standardized generic interface supporting all similar platforms with multiple banks
And other boot sources such as NAND and MMC.
LS1012A has only one boot source i.e. QSPI
Quoted 11 lines
Quoted 6 lines
would be better. What this patch currently does can be done with simple env vars, like :
setenv
boot_bank_1'i2c mw0x240x70xfc; i2c mw0x240x30xf5' setenvboot_bank_2'i2c mw0x240x70xfc; i2c mw0x240x30xf4'...if the user knows to env reset those variables after the update (versus something that shows up in help), and if they don't get corrupted in a multi- user board farm environment, etc.
With env there is always a probability of getting erased. In that case user will not have these commands.
Better approach should be command which is always available. If required we can update the doc.
--pk
PATCH 1/1 board: freescale: ls1012ardb: Add command to switch QSPI bank
Quoted 32 lines · Prabhakar Kushwaha
Thanks Scott for reviewing this patch
Quoted 30 lines
-----Original Message-----
From: U-Boot [mailto:u-boot-bounces at lists.denx.de] On Behalf Of Scott Wood
Sent: Friday, April 20, 2018 6:40 AM
To: Calvin Johnson <[email protected]>
Cc: U-Boot Mailing List <[email protected]>
Subject: Re: [U-Boot] [PATCH] board: freescale: ls1012ardb: Add command to switch QSPI bankQuoted 20 lines · Calvin Johnson
Quoted 18 lines · Scott Wood
Quoted 10 lines · Calvin Johnson
On Fri, Apr 13, 2018 at 12:18 AM, Jagdish Gediya
<[email protected]Quoted 1 line
Quoted 2 lines · wrote:
Add command "
boot_bankX" to switch the boot bank to either 1 or 2.Are these functions required as this can be handled by new env vars to switch banks?
If you're going to add something new, a command is much more pleasant than env vars -- particularly if you stick to something like the familiar interfaces ("pix altbank", "qix altbank", etc), and include reporting of which bank was booted from if it's not there already. Of course, a fully standardized interface would be even better.
Quoted 7 lines
Quoted 4 lines
Quoted 2 lines
Yes, a fully standardized generic interface supporting all similar platforms with multiple banks
And other boot sources such as NAND and MMC.
LS1012A has only one boot source i.e. QSPI
I meant that if there is any effort to standardize the command it should support multiple boot sources, not just bank selection.
-Scott
York Sun
AppliedPATCH 1/1 board: freescale: ls1012ardb: Add command to switch QSPI bank
In reply to Jagdish GediyaQuoted 5 lines · Jagdish Gediya
Add command "
boot_bankX" to switch the boot bank to either 1 or 2.Signed-off-by Jagdish Gediya <[email protected]>---
Applied to fsl-qoriq master, awaiting upstream.
Thanks.
York