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