[PATCH linux 1/5] spi: aspeed: Fix window offset of CE1
Cédric Le Goater
clg at kaod.org
Fri Jul 1 03:25:48 AEST 2022
On 6/29/22 09:20, Joel Stanley wrote:
> On Tue, 28 Jun 2022 at 16:20, Cédric Le Goater <clg at kaod.org> wrote:
>>
>> The offset value of the mapping window in the kernel structure is
>> calculated using the value of the previous window offset. This doesn't
>> reflect how the HW is configured and can lead to erroneous setting of
>> the second flash device (CE1).
>>
>
> Did you want to include a Fixes tag?
I should and one from the correct tree !
Fixes: e3228ed92893 ("spi: spi-mem: Convert Aspeed SMC driver to spi-mem")
>
>> Signed-off-by: Cédric Le Goater <clg at kaod.org>
>> ---
>> drivers/spi/spi-aspeed-smc.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/spi/spi-aspeed-smc.c b/drivers/spi/spi-aspeed-smc.c
>> index 3e891bf22470..5a995b5653f1 100644
>> --- a/drivers/spi/spi-aspeed-smc.c
>> +++ b/drivers/spi/spi-aspeed-smc.c
>> @@ -398,7 +398,7 @@ static void aspeed_spi_get_windows(struct aspeed_spi *aspi,
>> windows[cs].cs = cs;
>> windows[cs].size = data->segment_end(aspi, reg_val) -
>> data->segment_start(aspi, reg_val);
>> - windows[cs].offset = cs ? windows[cs - 1].offset + windows[cs - 1].size : 0;
>> + windows[cs].offset = data->segment_start(aspi, reg_val) - aspi->ahb_base_phy;
>
> Is subtracting the base address correct for the 2400/2500?
The segment_start() handlers return absolute physical addresses.
Since we want the offset, we could simply :
data->segment_start(aspi, reg_val) & (aspi->ahb_window_size - 1);
May be better,
Thanks,
C.
>
>> dev_vdbg(aspi->dev, "CE%d offset=0x%.8x size=0x%x\n", cs,
>> windows[cs].offset, windows[cs].size);
>> }
>> --
>> 2.35.3
>>
More information about the openbmc
mailing list