From patchwork Tue Jan 28 18:02:04 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sagar Shrikant Kadam X-Patchwork-Id: 240427 List-Id: U-Boot discussion From: sagar.kadam at sifive.com (Sagar Shrikant Kadam) Date: Tue, 28 Jan 2020 10:02:04 -0800 Subject: [U-Boot Patch v2 1/4] fu540: dtsi: spi: add num-cs info to device tree In-Reply-To: <1580234527-29280-1-git-send-email-sagar.kadam@sifive.com> References: <1580234527-29280-1-git-send-email-sagar.kadam@sifive.com> Message-ID: <1580234527-29280-2-git-send-email-sagar.kadam@sifive.com> Add the number of chip select information to spi nodes which can be used by spi-uclass for error handling if invalid cs number passed from command. Signed-off-by: Sagar Shrikant Kadam --- arch/riscv/dts/fu540-c000.dtsi | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arch/riscv/dts/fu540-c000.dtsi b/arch/riscv/dts/fu540-c000.dtsi index afa43c7..9c6ab21 100644 --- a/arch/riscv/dts/fu540-c000.dtsi +++ b/arch/riscv/dts/fu540-c000.dtsi @@ -191,6 +191,7 @@ clocks = <&prci PRCI_CLK_TLCLK>; #address-cells = <1>; #size-cells = <0>; + num-cs = <1>; status = "disabled"; }; qspi1: spi at 10041000 { @@ -202,6 +203,7 @@ clocks = <&prci PRCI_CLK_TLCLK>; #address-cells = <1>; #size-cells = <0>; + num-cs = <1>; status = "disabled"; }; qspi2: spi at 10050000 { @@ -212,6 +214,7 @@ clocks = <&prci PRCI_CLK_TLCLK>; #address-cells = <1>; #size-cells = <0>; + num-cs = <1>; status = "disabled"; }; eth0: ethernet at 10090000 { From patchwork Tue Jan 28 18:02:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sagar Shrikant Kadam X-Patchwork-Id: 240429 List-Id: U-Boot discussion From: sagar.kadam at sifive.com (Sagar Shrikant Kadam) Date: Tue, 28 Jan 2020 10:02:05 -0800 Subject: [U-Boot Patch v2 2/4] spi: fu540: add claim and release method to spi-sifive.c In-Reply-To: <1580234527-29280-1-git-send-email-sagar.kadam@sifive.com> References: <1580234527-29280-1-git-send-email-sagar.kadam@sifive.com> Message-ID: <1580234527-29280-3-git-send-email-sagar.kadam@sifive.com> Add missing bus claim/release method to spi driver for HiFive Unleashed, and handle num_cs generously so that it generates an error if invalid cs number is passed to sf probe. Signed-off-by: Sagar Shrikant Kadam --- drivers/spi/spi-sifive.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/drivers/spi/spi-sifive.c b/drivers/spi/spi-sifive.c index 969bd4b..f990ad6 100644 --- a/drivers/spi/spi-sifive.c +++ b/drivers/spi/spi-sifive.c @@ -186,6 +186,36 @@ static void sifive_spi_tx(struct sifive_spi *spi, const u8 *tx_ptr) writel(tx_data, spi->regs + SIFIVE_SPI_REG_TXDATA); } +static int sifive_spi_claim_bus(struct udevice *dev) +{ + int ret; + struct udevice *bus = dev->parent; + struct sifive_spi *spi = dev_get_priv(bus); + struct dm_spi_slave_platdata *slave = dev_get_parent_platdata(dev); + + if (!(slave->cs < spi->num_cs)) { + printf("Invalid cs number = %d\n", slave->cs); + return -EINVAL; + } + + sifive_spi_prep_device(spi, slave); + + ret = sifive_spi_set_cs(spi, slave); + if (ret) + return ret; + + return 0; +} + +static int sifive_spi_release_bus(struct udevice *dev) +{ + struct sifive_spi *spi = dev_get_priv(dev->parent); + + sifive_spi_clear_cs(spi); + + return 0; +} + static int sifive_spi_xfer(struct udevice *dev, unsigned int bitlen, const void *dout, void *din, unsigned long flags) { @@ -345,6 +375,10 @@ static int sifive_spi_probe(struct udevice *bus) /* init the sifive spi hw */ sifive_spi_init_hw(spi); + /* Fetch number of chip selects from DT if present */ + ret = dev_read_u32_default(bus, "num-cs", spi->num_cs); + spi->num_cs = ret; + return 0; } @@ -353,6 +387,8 @@ static const struct dm_spi_ops sifive_spi_ops = { .set_speed = sifive_spi_set_speed, .set_mode = sifive_spi_set_mode, .cs_info = sifive_spi_cs_info, + .claim_bus = sifive_spi_claim_bus, + .release_bus = sifive_spi_release_bus, }; static const struct udevice_id sifive_spi_ids[] = { From patchwork Tue Jan 28 18:02:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sagar Shrikant Kadam X-Patchwork-Id: 240428 List-Id: U-Boot discussion From: sagar.kadam at sifive.com (Sagar Shrikant Kadam) Date: Tue, 28 Jan 2020 10:02:06 -0800 Subject: [U-Boot Patch v2 3/4] dts: u-boot.dtsi: override flash tx-rx width In-Reply-To: <1580234527-29280-1-git-send-email-sagar.kadam@sifive.com> References: <1580234527-29280-1-git-send-email-sagar.kadam@sifive.com> Message-ID: <1580234527-29280-4-git-send-email-sagar.kadam@sifive.com> The hifive-unleashed-a00.dts has flash spi-tx/rx width set to 4-bit mode. During sf probe, spi_nor_scan fails to read the JEDEC ID with reg_proto set to SNOR_PROTO_1_1_1. Setting it to 1-bit mode as of now will help read the JEDEC-ID and perform other flash operations. Signed-off-by: Sagar Shrikant Kadam --- arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi b/arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi index d7a6413..dae9f87 100644 --- a/arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi +++ b/arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi @@ -9,3 +9,11 @@ spi2 = &qspi2; }; }; + +&qspi0 { + flash at 0 { + spi-tx-bus-width = <1>; + spi-rx-bus-width = <1>; + }; +}; + From patchwork Tue Jan 28 18:02:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sagar Shrikant Kadam X-Patchwork-Id: 240430 List-Id: U-Boot discussion From: sagar.kadam at sifive.com (Sagar Shrikant Kadam) Date: Tue, 28 Jan 2020 10:02:07 -0800 Subject: [U-Boot Patch v2 4/4] bdinfo: fu540: print fdt base address for debugging In-Reply-To: <1580234527-29280-1-git-send-email-sagar.kadam@sifive.com> References: <1580234527-29280-1-git-send-email-sagar.kadam@sifive.com> Message-ID: <1580234527-29280-5-git-send-email-sagar.kadam@sifive.com> Add fdt->gd info to bdinfo so that it is useful for debugging and easily use it with fdt util. Signed-off-by: Sagar Shrikant Kadam --- cmd/bdinfo.c | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index d6a7175..96892b3 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -433,6 +433,7 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) print_bi_dram(bd); print_num("relocaddr", gd->relocaddr); print_num("reloc off", gd->reloc_off); + print_num("fdt_blob", (ulong)gd->fdt_blob); print_eth_ip_addr(); print_baudrate();