spi: ich: Limit slave->max_read_size
Since commit43c145b8b3("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 commit43c145b8b3, the logic happens to make sure data.nbytes is limited to slave->max_write_size but after commit43c145b8b3data.nbytes is no longer limited because slave->max_read_size is not initialized with a valid number. Fixes:43c145b8b3("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>
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user