[SPAM] [PATCH 1/1] mtd: spi-nor: aspeed: set the decoding size to at least 2MB for AST2600

Cédric Le Goater clg at kaod.org
Sat Mar 5 04:29:50 AEDT 2022


Hello Potin,

On 3/4/22 18:07, Potin Lai wrote:
> In AST2600, the unit of SPI CEx decoding range register is 1MB, and end
> address offset is set to the acctual offset - 1MB. If the flash only has
> 1MB, the end address will has same value as start address, which will
> causing unexpected errors.

Yes. That's probably true.
  
> This patch set the decoding size to at least 2MB to avoid decoding errors.
>
> Tested:
> root at bletchley:~# dmesg | grep "aspeed-smc 1e631000.spi: CE0 window"

Could you send all the "aspeed-smc" logs please ? I would like to
reproduce on QEMU. You can use these machine options :

   fmc-model=<string>     - Change the FMC Flash model
   spi-model=<string>     - Change the SPI Flash model

to change the default flash device models and see how the driver reacts.
Add -trace aspeed_smc_flash_set_segment to see how the QEMU model is
configured.

> [   59.328134] aspeed-smc 1e631000.spi: CE0 window resized to 2MB (AST2600 Decoding)
> [   59.343001] aspeed-smc 1e631000.spi: CE0 window [ 0x50000000 - 0x50200000 ] 2MB
> root at bletchley:~# devmem 0x1e631030
> 0x00100000

I thought devmem was banned :)

We could expose the main FMC/SPI registers under sysfs or debugfs.
The segment registers and the timing registers would be nice to
have. I can revive some experimental patch I did a few years ago.

If you have some time, could you please try the new driver based
on spi-mem ?

v3 is pushed here :

   https://github.com/legoater/linux/commits/openbmc-5.15

The patch looks correct but we also want to fix the new driver and
I have reworked the window setting part. It should be less fragile.
aspeed_spi_chip_adjust_window() still needs to handle HW quirks
though.

Thanks,

C.

> Signed-off-by: Potin Lai <potin.lai at quantatw.com>
> ---
>   drivers/mtd/spi-nor/controllers/aspeed-smc.c | 11 +++++++++++
>   1 file changed, 11 insertions(+)
> 
> diff --git a/drivers/mtd/spi-nor/controllers/aspeed-smc.c b/drivers/mtd/spi-nor/controllers/aspeed-smc.c
> index 416ea247f843..6db35732c0fb 100644
> --- a/drivers/mtd/spi-nor/controllers/aspeed-smc.c
> +++ b/drivers/mtd/spi-nor/controllers/aspeed-smc.c
> @@ -781,6 +781,17 @@ static u32 aspeed_smc_chip_set_segment(struct aspeed_smc_chip *chip)
>   			 chip->cs, size >> 20);
>   	}
>   
> +	/*
> +	 * The decoding size of AST2600 SPI controller should set at
> +	 * least 2MB.
> +	 */
> +	if (controller->info == &spi_2600_info && size < SZ_2M) {
> +		size = SZ_2M;
> +		dev_info(chip->nor.dev,
> +			 "CE%d window resized to %dMB (AST2600 Decoding)",
> +			 chip->cs, size >> 20);
> +	}
> +
>   	ahb_base_phy = controller->ahb_base_phy;
>   
>   	/*



More information about the Linux-aspeed mailing list