diff options
author | Bin Meng <bmeng.cn@gmail.com> | 2021-07-28 13:28:56 +0300 |
---|---|---|
committer | Bin Meng <bmeng.cn@gmail.com> | 2021-08-02 10:11:40 +0300 |
commit | 4dc82797585d87b61ec7b11bf54f8d302532cd55 (patch) | |
tree | 859732c04118c794ef4044b4c10570b77865643b /drivers/spi | |
parent | 5371593aed56ee11cbb6cc6ac8d058fcd9b8f58c (diff) | |
download | u-boot-4dc82797585d87b61ec7b11bf54f8d302532cd55.tar.xz |
spi: ich: Limit slave->max_read_size
Since commit 43c145b8b3ee ("spi: ich: Correct max-size bug in ich_spi_adjust_size()")
(in v2020.04-rc1), SPI flash read no longer works with ICH SPI controller
in software sequencer mode.
ICH controller can only transfer a small number of bytes at once.
Before commit 43c145b8b3ee, the logic happens to make sure data.nbytes
is limited to slave->max_write_size but after commit 43c145b8b3ee
data.nbytes is no longer limited because slave->max_read_size is not
initialized with a valid number.
Fixes: 43c145b8b3ee ("spi: ich: Correct max-size bug in ich_spi_adjust_size()")
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'drivers/spi')
-rw-r--r-- | drivers/spi/ich.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/spi/ich.c b/drivers/spi/ich.c index 3d49c22a9d..08d54e86f4 100644 --- a/drivers/spi/ich.c +++ b/drivers/spi/ich.c @@ -918,12 +918,14 @@ static int ich_spi_child_pre_probe(struct udevice *dev) struct spi_slave *slave = dev_get_parent_priv(dev); /* - * Yes this controller can only write a small number of bytes at + * Yes this controller can only transfer a small number of bytes at * once! The limit is typically 64 bytes. For hardware sequencing a * a loop is used to get around this. */ - if (!plat->hwseq) + if (!plat->hwseq) { + slave->max_read_size = priv->databytes; slave->max_write_size = priv->databytes; + } /* * ICH 7 SPI controller only supports array read command * and byte program command for SST flash |