From 9a11a260b2919601cb2aa97984b9a7f99e0118ae Mon Sep 17 00:00:00 2001 From: Pratyush Yadav Date: Fri, 28 Apr 2023 16:50:13 +0530 Subject: spi: cadence-qspi: Find the start of PHY tuning pattern in devicetree The PHY tuning pattern should be located at the start of the partition named "ospi.phypattern". Find it in the devicetree, if it exists. Signed-off-by: Pratyush Yadav Signed-off-by: Apurva Nandan --- drivers/spi/cadence_qspi.c | 15 +++++++++++++++ drivers/spi/cadence_qspi.h | 2 ++ 2 files changed, 17 insertions(+) (limited to 'drivers') diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c index 456f23faca..b1dc305d15 100644 --- a/drivers/spi/cadence_qspi.c +++ b/drivers/spi/cadence_qspi.c @@ -206,6 +206,7 @@ static int cadence_spi_probe(struct udevice *bus) priv->trigger_address = plat->trigger_address; priv->read_delay = plat->read_delay; priv->has_phy = plat->has_phy; + priv->phy_pattern_start = plat->phy_pattern_start; priv->ahbsize = plat->ahbsize; priv->max_hz = plat->max_hz; @@ -389,6 +390,8 @@ static int cadence_spi_of_to_plat(struct udevice *bus) struct cadence_spi_plat *plat = dev_get_plat(bus); struct cadence_spi_priv *priv = dev_get_priv(bus); ofnode subnode; + const char *label; + u32 start; plat->regbase = (void *)devfdt_get_addr_index(bus, 0); plat->ahbbase = (void *)devfdt_get_addr_size_index(bus, 1, @@ -435,6 +438,18 @@ static int cadence_spi_of_to_plat(struct udevice *bus) -1); plat->has_phy = ofnode_read_bool(subnode, "cdns,phy-mode"); + /* Find the PHY tuning pattern partition. */ + subnode = ofnode_first_subnode(subnode); + while (ofnode_valid(subnode)) { + label = ofnode_read_string(subnode, "label"); + if (label && strcmp(label, "ospi.phypattern") == 0) { + if (!ofnode_read_u32_array(subnode, "reg", &start, 1)) + plat->phy_pattern_start = start; + break; + } + subnode = ofnode_next_subnode(subnode); + } + debug("%s: regbase=%p ahbbase=%p max-frequency=%d page-size=%d\n", __func__, plat->regbase, plat->ahbbase, plat->max_hz, plat->page_size); diff --git a/drivers/spi/cadence_qspi.h b/drivers/spi/cadence_qspi.h index 01611ae10d..ef8ac00994 100644 --- a/drivers/spi/cadence_qspi.h +++ b/drivers/spi/cadence_qspi.h @@ -209,6 +209,7 @@ struct cadence_spi_plat { bool use_dac_mode; int read_delay; bool has_phy; + u32 phy_pattern_start; /* Flash parameters */ u32 page_size; @@ -241,6 +242,7 @@ struct cadence_spi_priv { u32 wr_delay; int read_delay; bool has_phy; + u32 phy_pattern_start; struct reset_ctl_bulk *resets; u32 page_size; -- cgit v1.2.3