Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/spi ssdfb: support having an optional reset pin



details:   https://anonhg.NetBSD.org/src/rev/01db2528dfc8
branches:  trunk
changeset: 984987:01db2528dfc8
user:      tnn <tnn%NetBSD.org@localhost>
date:      Tue Aug 03 11:30:25 2021 +0000

description:
ssdfb: support having an optional reset pin

diffstat:

 sys/dev/spi/ssdfb_spi.c |  20 +++++++++++++++-----
 1 files changed, 15 insertions(+), 5 deletions(-)

diffs (52 lines):

diff -r 67b1bd5a7a5e -r 01db2528dfc8 sys/dev/spi/ssdfb_spi.c
--- a/sys/dev/spi/ssdfb_spi.c   Tue Aug 03 09:25:43 2021 +0000
+++ b/sys/dev/spi/ssdfb_spi.c   Tue Aug 03 11:30:25 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ssdfb_spi.c,v 1.6 2021/08/01 14:56:18 tnn Exp $ */
+/* $NetBSD: ssdfb_spi.c,v 1.7 2021/08/03 11:30:25 tnn Exp $ */
 
 /*
  * Copyright (c) 2019 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ssdfb_spi.c,v 1.6 2021/08/01 14:56:18 tnn Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ssdfb_spi.c,v 1.7 2021/08/03 11:30:25 tnn Exp $");
 
 #include <sys/param.h>
 #include <sys/device.h>
@@ -55,6 +55,7 @@
        struct spi_handle       *sc_sh;
 #ifdef FDT
        struct fdtbus_gpio_pin  *sc_gpio_dc;
+       struct fdtbus_gpio_pin  *sc_gpio_res;
 #endif
        bool                    sc_3wiremode;
 };
@@ -133,13 +134,22 @@
         * 4 wire mode sends 8 bit sequences and requires an auxiliary GPIO
         * pin for the command/data bit.
         */
-       sc->sc_3wiremode = true;
 #ifdef FDT
        const int phandle = sa->sa_cookie;
-       sc->sc_gpio_dc = fdtbus_gpio_acquire(phandle, "dc-gpio", GPIO_PIN_OUTPUT);
+       sc->sc_gpio_dc =
+           fdtbus_gpio_acquire(phandle, "dc-gpio", GPIO_PIN_OUTPUT);
        if (!sc->sc_gpio_dc)
-               sc->sc_gpio_dc = fdtbus_gpio_acquire(phandle, "cd-gpio", GPIO_PIN_OUTPUT);
+               sc->sc_gpio_dc =
+                   fdtbus_gpio_acquire(phandle, "cd-gpio", GPIO_PIN_OUTPUT);
        sc->sc_3wiremode = (sc->sc_gpio_dc == NULL);
+       sc->sc_gpio_res =
+           fdtbus_gpio_acquire(phandle, "res-gpio", GPIO_PIN_OUTPUT);
+       if (sc->sc_gpio_res) {
+               fdtbus_gpio_write_raw(sc->sc_gpio_res, 0);
+               DELAY(100);
+               fdtbus_gpio_write_raw(sc->sc_gpio_res, 1);
+               DELAY(100);
+       }
 #else
        sc->sc_3wiremode = true;
 #endif



Home | Main Index | Thread Index | Old Index