diff options
author | Cédric Le Goater <clg@kaod.org> | 2020-02-06 12:26:45 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2020-03-12 16:01:37 +0000 |
commit | e7e741ca9dc24dc01cd2b7cb86e8ca5c0b0d9bec (patch) | |
tree | e3550ba86fadc420a2e69e75765eb2f93f8223c8 /hw/ssi/trace-events | |
parent | bd6ce9a6ed99889803b044510dc753ed6ac7bfeb (diff) |
aspeed/smc: Fix User mode select/unselect scheme
The Aspeed SMC Controller can operate in different modes : Read, Fast
Read, Write and User modes. When the User mode is configured, it
selects automatically the SPI slave device until the CE_STOP_ACTIVE
bit is set to 1. When any other modes are configured the device is
unselected. The HW logic handles the chip select automatically when
the flash is accessed through its AHB window.
When configuring the CEx Control Register, the User mode logic to
select and unselect the slave is incorrect and data corruption can be
seen on machines using two chips, witherspoon and romulus.
Rework the handler setting the CEx Control Register to fix this issue.
Fixes: 7c1c69bca43c ("ast2400: add SMC controllers (FMC and SPI)")
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Reviewed-by: Andrew Jeffery <andrew@aj.id.au>
Message-id: 20200206112645.21275-3-clg@kaod.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/ssi/trace-events')
-rw-r--r-- | hw/ssi/trace-events | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/hw/ssi/trace-events b/hw/ssi/trace-events index ffe531a500..0a70629801 100644 --- a/hw/ssi/trace-events +++ b/hw/ssi/trace-events @@ -7,3 +7,4 @@ aspeed_smc_flash_write(int cs, uint64_t addr, uint32_t size, uint64_t data, int aspeed_smc_read(uint64_t addr, uint32_t size, uint64_t data) "@0x%" PRIx64 " size %u: 0x%" PRIx64 aspeed_smc_dma_checksum(uint32_t addr, uint32_t data) "0x%08x: 0x%08x" aspeed_smc_write(uint64_t addr, uint32_t size, uint64_t data) "@0x%" PRIx64 " size %u: 0x%" PRIx64 +aspeed_smc_flash_select(int cs, const char *prefix) "CS%d %sselect" |