static int zynqmp_qspi_probe(struct udevice *bus) { struct zynqmp_qspi_platdata *plat = dev_get_platdata(bus); struct zynqmp_qspi_priv *priv = dev_get_priv(bus); #if !defined(CONFIG_ARCH_VERSAL) struct clk clk; unsigned long clock; int ret; #endif debug("%s: bus:%p, priv:%p\n", __func__, bus, priv); priv->regs = plat->regs; priv->dma_regs = plat->dma_regs; priv->is_dual = plat->is_dual; priv->io_mode = plat->io_mode; if (priv->is_dual == -1) { debug("%s: No QSPI device detected based on MIO settings\n", __func__); return -1; } #if !defined(CONFIG_ARCH_VERSAL) ret = clk_get_by_index(bus, 0, &clk); if (ret < 0) { dev_err(dev, "failed to get clock\n"); return ret; } clock = clk_get_rate(&clk); if (IS_ERR_VALUE(clock)) { dev_err(dev, "failed to get rate\n"); return clock; } debug("%s: CLK %ld\n", __func__, clock); ret = clk_enable(&clk); if (ret && ret != -ENOSYS) { dev_err(dev, "failed to enable clock\n"); return ret; } plat->frequency = clock; plat->speed_hz = plat->frequency; #endif /* init the zynq spi hw */ zynqmp_qspi_init_hw(priv); return 0; }
static int zynqmp_qspi_probe(struct udevice *bus) { struct zynqmp_qspi_platdata *plat = dev_get_platdata(bus); struct zynqmp_qspi_priv *priv = dev_get_priv(bus); debug("zynqmp_qspi_probe: bus:%p, priv:%p \n", bus, priv); priv->regs = plat->regs; priv->dma_regs = plat->dma_regs; zynqmp_qspi_check_is_dual_flash(priv); if (priv->is_dual == -1) { debug("%s: No QSPI device detected based on MIO settings\n", __func__); return -1; } /* init the zynq spi hw */ zynqmp_qspi_init_hw(priv); return 0; }