From 9df731a176aab8e03b984b681b1bea01ccff6644 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Mon, 06 Nov 2023 07:23:06 +0000
Subject: [PATCH] rk3568 rt uboot init

---
 u-boot/drivers/spi/soft_spi.c |   34 +++++++++++++++++++++-------------
 1 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/u-boot/drivers/spi/soft_spi.c b/u-boot/drivers/spi/soft_spi.c
index 1690cd7..64a4862 100644
--- a/u-boot/drivers/spi/soft_spi.c
+++ b/u-boot/drivers/spi/soft_spi.c
@@ -201,10 +201,8 @@
 static int soft_spi_ofdata_to_platdata(struct udevice *dev)
 {
 	struct soft_spi_platdata *plat = dev->platdata;
-	const void *blob = gd->fdt_blob;
-	int node = dev_of_offset(dev);
 
-	plat->spi_delay_us = fdtdec_get_int(blob, node, "spi-delay-us", 0);
+	plat->spi_delay_us = dev_read_u32_default(dev, "spi-delay-us", 0);
 
 	return 0;
 }
@@ -216,24 +214,34 @@
 	int cs_flags, clk_flags;
 	int ret;
 
-	cs_flags = (slave->mode & SPI_CS_HIGH) ? 0 : GPIOD_ACTIVE_LOW;
-	clk_flags = (slave->mode & SPI_CPOL) ? GPIOD_ACTIVE_LOW : 0;
+	if (slave) {
+		cs_flags = (slave->mode & SPI_CS_HIGH) ? 0 : GPIOD_ACTIVE_LOW;
+		clk_flags = (slave->mode & SPI_CPOL) ? GPIOD_ACTIVE_LOW : 0;
+	} else {
+		cs_flags = GPIOD_ACTIVE_LOW;
+		clk_flags = 0;
+	}
 
-	if (gpio_request_by_name(dev, "cs-gpios", 0, &plat->cs,
-				 GPIOD_IS_OUT | cs_flags) ||
-	    gpio_request_by_name(dev, "gpio-sck", 0, &plat->sclk,
-				 GPIOD_IS_OUT | clk_flags))
+	if (gpio_request_by_name(dev, "cs-gpios", 0, &plat->cs, GPIOD_IS_OUT | cs_flags) ||
+	    (gpio_request_by_name(dev, "gpio-sck", 0, &plat->sclk, GPIOD_IS_OUT | clk_flags) &&
+	     gpio_request_by_name(dev, "sck-gpios", 0, &plat->sclk, GPIOD_IS_OUT | clk_flags)))
 		return -EINVAL;
 
 	ret = gpio_request_by_name(dev, "gpio-mosi", 0, &plat->mosi,
 				   GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE);
-	if (ret)
-		plat->flags |= SPI_MASTER_NO_TX;
+	if (ret) {
+		if (gpio_request_by_name(dev, "mosi-gpios", 0, &plat->mosi,
+		    GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE))
+			plat->flags |= SPI_MASTER_NO_TX;
+	}
 
 	ret = gpio_request_by_name(dev, "gpio-miso", 0, &plat->miso,
 				   GPIOD_IS_IN);
-	if (ret)
-		plat->flags |= SPI_MASTER_NO_RX;
+	if (ret) {
+		if (gpio_request_by_name(dev, "miso-gpios", 0, &plat->miso,
+		    GPIOD_IS_IN))
+			plat->flags |= SPI_MASTER_NO_RX;
+	}
 
 	if ((plat->flags & (SPI_MASTER_NO_RX | SPI_MASTER_NO_TX)) ==
 	    (SPI_MASTER_NO_RX | SPI_MASTER_NO_TX))

--
Gitblit v1.6.2