git: f5d78bea1f69 - main - sifive_spi: Add missing case for SPIBUS_MODE_NONE

Jessica Clarke jrtc27 at FreeBSD.org
Mon Aug 30 22:38:49 UTC 2021


The branch main has been updated by jrtc27:

URL: https://cgit.FreeBSD.org/src/commit/?id=f5d78bea1f699c05e1694505088e61d22b8fb1f5

commit f5d78bea1f699c05e1694505088e61d22b8fb1f5
Author:     Thomas Skibo <thomas-bsd at skibo.net>
AuthorDate: 2021-08-30 20:39:20 +0000
Commit:     Jessica Clarke <jrtc27 at FreeBSD.org>
CommitDate: 2021-08-30 22:38:02 +0000

    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
---
 sys/riscv/sifive/sifive_spi.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/sys/riscv/sifive/sifive_spi.c b/sys/riscv/sifive/sifive_spi.c
index df72beaac7ae..4a5d79fec01d 100644
--- a/sys/riscv/sifive/sifive_spi.c
+++ b/sys/riscv/sifive/sifive_spi.c
@@ -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);
 


More information about the dev-commits-src-all mailing list