]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
spi: aspeed: Fix window offset of CE1
authorCédric Le Goater <clg@kaod.org>
Sun, 16 Oct 2022 15:57:22 +0000 (17:57 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 3 Nov 2022 15:00:28 +0000 (00:00 +0900)
[ Upstream commit f8aa6c895d482847c9b799dcdac8bbdb56cb8e04 ]

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).

Cc: Chin-Ting Kuo <chin-ting_kuo@aspeedtech.com>
Fixes: e3228ed92893 ("spi: spi-mem: Convert Aspeed SMC driver to spi-mem")
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Reviewed-by: Joel Stanley <joel@jms.id.au>
Link: https://lore.kernel.org/r/20221016155722.3520802-1-clg@kaod.org
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/spi/spi-aspeed-smc.c

index 3e891bf22470e0610c64c5e15bf0a2f3f1e956eb..5a995b5653f1bfa30a401714ab047a3e850a832a 100644 (file)
@@ -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;
                dev_vdbg(aspi->dev, "CE%d offset=0x%.8x size=0x%x\n", cs,
                         windows[cs].offset, windows[cs].size);
        }