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:
Thomas Skibo 2021-08-30 21:39:20 +01:00 committed by Jessica Clarke
parent 64f09f2346
commit f5d78bea1f

View File

@ -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);