[U-Boot] [PATCH v2 3/7] sf: Make BAR discovery, as spi_flash_read_bar
Bin Meng
bmeng.cn at gmail.com
Tue Aug 18 09:46:31 CEST 2015
Hi Jagan,
On Mon, Aug 17, 2015 at 6:32 PM, Jagan Teki <jteki at openedev.com> wrote:
> Add spi_flash_read_bar function for reading bar and discovering
> bar commands at probe time.
>
> Signed-off-by: Jagan Teki <jteki at openedev.com>
> Cc: Michal Simek <michal.simek at xilinx.com>
> Cc: Siva Durga Prasad Paladugu <sivadur at xilinx.com>
> ---
> drivers/mtd/spi/sf_probe.c | 54 ++++++++++++++++++++++++++++++----------------
> 1 file changed, 35 insertions(+), 19 deletions(-)
>
> diff --git a/drivers/mtd/spi/sf_probe.c b/drivers/mtd/spi/sf_probe.c
> index e0283dc..0483bed 100644
> --- a/drivers/mtd/spi/sf_probe.c
> +++ b/drivers/mtd/spi/sf_probe.c
> @@ -99,6 +99,37 @@ static int spi_flash_set_qeb(struct spi_flash *flash, u8 idcode0)
> }
> }
>
> +#ifdef CONFIG_SPI_FLASH_BAR
> +static int spi_flash_read_bank(struct spi_flash *flash, u8 idcode0)
> +{
> + u8 curr_bank = 0;
> + int ret;
> +
> + if (flash->size <= SPI_FLASH_16MB_BOUN)
> + goto bank_end;
> +
> + switch (idcode0) {
> + case SPI_FLASH_CFI_MFR_SPANSION:
> + flash->bank_read_cmd = CMD_BANKADDR_BRRD;
> + flash->bank_write_cmd = CMD_BANKADDR_BRWR;
> + default:
> + flash->bank_read_cmd = CMD_EXTNADDR_RDEAR;
> + flash->bank_write_cmd = CMD_EXTNADDR_WREAR;
> + }
> +
> + ret = spi_flash_read_common(flash, &flash->bank_read_cmd, 1,
> + &curr_bank, 1);
> + if (ret) {
> + debug("SF: fail to read bank addr register\n");
> + return ret;
> + }
> +
> +bank_end:
> + flash->bank_curr = curr_bank;
> + return 0;
> +}
> +#endif
> +
> static int spi_flash_validate_params(struct spi_slave *spi, u8 *idcode,
> struct spi_flash *flash)
> {
> @@ -106,6 +137,7 @@ static int spi_flash_validate_params(struct spi_slave *spi, u8 *idcode,
> u8 cmd;
> u16 jedec = idcode[1] << 8 | idcode[2];
> u16 ext_jedec = idcode[3] << 8 | idcode[4];
> + int ret;
>
> /* Validate params from spi_flash_params table */
> params = spi_flash_params_table;
> @@ -235,25 +267,9 @@ static int spi_flash_validate_params(struct spi_slave *spi, u8 *idcode,
>
> /* Configure the BAR - discover bank cmds and read current bank */
> #ifdef CONFIG_SPI_FLASH_BAR
> - u8 curr_bank = 0;
> - if (flash->size > SPI_FLASH_16MB_BOUN) {
> - int ret;
> -
> - flash->bank_read_cmd = (idcode[0] == 0x01) ?
> - CMD_BANKADDR_BRRD : CMD_EXTNADDR_RDEAR;
> - flash->bank_write_cmd = (idcode[0] == 0x01) ?
> - CMD_BANKADDR_BRWR : CMD_EXTNADDR_WREAR;
> -
> - ret = spi_flash_read_common(flash, &flash->bank_read_cmd, 1,
> - &curr_bank, 1);
> - if (ret) {
> - debug("SF: fail to read bank addr register\n");
> - return ret;
> - }
> - flash->bank_curr = curr_bank;
> - } else {
> - flash->bank_curr = curr_bank;
> - }
> + ret = spi_flash_read_bank(flash, idcode[0]);
> + if (ret < 0)
> + return ret;
> #endif
>
> /* Flash powers up read-only, so clear BP# bits */
> --
This commit is causing build warnings:
drivers/mtd/spi/sf_probe.c: In function ‘spi_flash_validate_params’:
drivers/mtd/spi/sf_probe.c:140:6: warning: unused variable ‘ret’
[-Wunused-variable]
Regards,
Bin
More information about the U-Boot
mailing list