spi: npcm_pspi: Reset HW in driver probe
authorJim Liu <jim.t90615@gmail.com>
Tue, 23 Apr 2024 06:38:42 +0000 (14:38 +0800)
committerTom Rini <trini@konsulko.com>
Fri, 3 May 2024 18:22:58 +0000 (12:22 -0600)
Reset HW to clear old status and use default data mode(8-bit).

Signed-off-by: Jim Liu <JJLIU0@nuvoton.com>
drivers/spi/npcm_pspi.c

index eb14185..c944130 100644 (file)
@@ -7,6 +7,7 @@
 #include <dm.h>
 #include <spi.h>
 #include <clk.h>
+#include <reset.h>
 #include <asm/gpio.h>
 #include <linux/iopoll.h>
 
@@ -194,6 +195,7 @@ static int npcm_pspi_probe(struct udevice *bus)
 {
        struct npcm_pspi_priv *priv = dev_get_priv(bus);
        int node = dev_of_offset(bus);
+       struct reset_ctl reset;
        int ret;
 
        ret = clk_get_by_index(bus, 0, &priv->clk);
@@ -205,6 +207,14 @@ static int npcm_pspi_probe(struct udevice *bus)
        gpio_request_by_name_nodev(offset_to_ofnode(node), "cs-gpios", 0,
                                   &priv->cs_gpio, GPIOD_IS_OUT| GPIOD_ACTIVE_LOW);
 
+       /* Reset HW */
+       ret = reset_get_by_index(bus, 0, &reset);
+       if (!ret) {
+               reset_assert(&reset);
+               udelay(5);
+               reset_deassert(&reset);
+       }
+
        return 0;
 }