[U-Boot] [PATCH v4 1/5] rockchip: Avoid using libfdt with of-platdata

Simon Glass sjg at chromium.org
Thu Nov 7 15:53:08 UTC 2019


At present a few of the clk and pinctrl drivers use libfdt routines (via
dev_read_..()) when of-platdata is enabled. This is not permitted.

Correct this by returning errors instead. The drivers may need to be
modified to add full support.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

Changes in v4:
- Add new patch for rockchip build errors

Changes in v3: None

 drivers/clk/rockchip/clk_rk3328.c                | 14 ++++++++++++--
 drivers/pinctrl/rockchip/pinctrl-rockchip-core.c |  6 ++++--
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/drivers/clk/rockchip/clk_rk3328.c b/drivers/clk/rockchip/clk_rk3328.c
index a89e2ecc4a..e86c17e6d6 100644
--- a/drivers/clk/rockchip/clk_rk3328.c
+++ b/drivers/clk/rockchip/clk_rk3328.c
@@ -669,6 +669,10 @@ static int rk3328_gmac2io_set_parent(struct clk *clk, struct clk *parent)
 		return 0;
 	}
 
+	/* FIXME: Device tree should be read in ofdata_to_platdata() */
+	if (CONFIG_IS_ENABLED(OF_PLATDATA))
+		return -EDEADLK;
+
 	/*
 	 * Otherwise, we need to check the clock-output-names of the
 	 * requested parent to see if the requested id is "gmac_clkin".
@@ -706,6 +710,10 @@ static int rk3328_gmac2io_ext_set_parent(struct clk *clk, struct clk *parent)
 		return 0;
 	}
 
+	/* FIXME: Device tree should be read in ofdata_to_platdata() */
+	if (CONFIG_IS_ENABLED(OF_PLATDATA))
+		return -EDEADLK;
+
 	/*
 	 * Otherwise, we need to check the clock-output-names of the
 	 * requested parent to see if the requested id is "gmac_clkin".
@@ -762,9 +770,11 @@ static int rk3328_clk_probe(struct udevice *dev)
 
 static int rk3328_clk_ofdata_to_platdata(struct udevice *dev)
 {
-	struct rk3328_clk_priv *priv = dev_get_priv(dev);
+	if (!CONFIG_IS_ENABLED(OF_PLATDATA)) {
+		struct rk3328_clk_priv *priv = dev_get_priv(dev);
 
-	priv->cru = dev_read_addr_ptr(dev);
+		priv->cru = dev_read_addr_ptr(dev);
+	}
 
 	return 0;
 }
diff --git a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
index 80dc431d20..dccc54e95f 100644
--- a/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
+++ b/drivers/pinctrl/rockchip/pinctrl-rockchip-core.c
@@ -383,8 +383,8 @@ static int rockchip_pinconf_prop_name_to_param(const char *property,
 	return -EPERM;
 }
 
-static int rockchip_pinctrl_set_state(struct udevice *dev,
-				      struct udevice *config)
+static int __maybe_unused rockchip_pinctrl_set_state(struct udevice *dev,
+						     struct udevice *config)
 {
 	struct rockchip_pinctrl_priv *priv = dev_get_priv(dev);
 	struct rockchip_pin_ctrl *ctrl = priv->ctrl;
@@ -474,7 +474,9 @@ static int rockchip_pinctrl_set_state(struct udevice *dev,
 }
 
 const struct pinctrl_ops rockchip_pinctrl_ops = {
+#if !CONFIG_IS_ENABLED(PLATDATA)
 	.set_state			= rockchip_pinctrl_set_state,
+#endif
 	.get_gpio_mux			= rockchip_pinctrl_get_gpio_mux,
 };
 
-- 
2.24.0.rc1.363.gb1bccd3e3d-goog



More information about the U-Boot mailing list