sifive_spi: Add missing case for SPIBUS_MODE_NONE
Otherwise sckmode is left uninitialised, not zero. This mode is used for the on-board flash on the HiFive Unmatched board. Whilst here, catch unknown modes and return an error rather than silently continuing. Reviewed by: #riscv, jrtc27 MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D31562
This commit is contained in:
parent
64f09f2346
commit
f5d78bea1f
@ -219,6 +219,9 @@ sfspi_setup(struct sfspi_softc *sc, uint32_t cs, uint32_t mode,
|
||||
SFSPI_WRITE(sc, SFSPI_REG_SCKDIV, sckdiv);
|
||||
|
||||
switch (mode) {
|
||||
case SPIBUS_MODE_NONE:
|
||||
sckmode = 0;
|
||||
break;
|
||||
case SPIBUS_MODE_CPHA:
|
||||
sckmode = SFSPI_SCKMODE_PHA;
|
||||
break;
|
||||
@ -228,6 +231,8 @@ sfspi_setup(struct sfspi_softc *sc, uint32_t cs, uint32_t mode,
|
||||
case SPIBUS_MODE_CPOL_CPHA:
|
||||
sckmode = SFSPI_SCKMODE_PHA | SFSPI_SCKMODE_POL;
|
||||
break;
|
||||
default:
|
||||
return (EINVAL);
|
||||
}
|
||||
SFSPI_WRITE(sc, SFSPI_REG_SCKMODE, sckmode);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user