aspeed/smc: Fix User mode select/unselect scheme
commite7e741ca9dc24dc01cd2b7cb86e8ca5c0b0d9bec
authorCédric Le Goater <clg@kaod.org>
Thu, 6 Feb 2020 11:26:45 +0000 (6 12:26 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Thu, 12 Mar 2020 16:01:37 +0000 (12 16:01 +0000)
treee3550ba86fadc420a2e69e75765eb2f93f8223c8
parentbd6ce9a6ed99889803b044510dc753ed6ac7bfeb
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>
hw/ssi/aspeed_smc.c
hw/ssi/trace-events