All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v4 31/72] dm: gpio: Add live tree support
@ 2017-05-31  3:47 Simon Glass
  2017-05-31  3:47 ` [U-Boot] [PATCH v4 51/72] dm: clk: Update uclass to support livetree Simon Glass
  2017-05-31 17:39 ` [U-Boot] [PATCH v4 31/72] dm: gpio: Add live tree support Simon Glass
  0 siblings, 2 replies; 4+ messages in thread
From: Simon Glass @ 2017-05-31  3:47 UTC (permalink / raw)
  To: u-boot

Add support for requesting GPIOs with a live device tree.

This involves adjusting the function signature for the legacy function
gpio_request_by_name_nodev(), so fix up all callers.

Signed-off-by: Simon Glass <sjg@chromium.org>
Fixes to stm32f746-disco.c:
Signed-off-by: Tom Rini <trini@konsulko.com>
---

Changes in v4:
- Update stm32f746-disco.c to support live tree

Changes in v3: None
Changes in v2: None

 board/qualcomm/dragonboard410c/dragonboard410c.c | 12 +++---
 board/samsung/common/board.c                     |  4 +-
 board/samsung/common/exynos5-dt.c                |  2 +-
 board/st/stm32f746-disco/stm32f746-disco.c       |  6 +--
 drivers/gpio/gpio-uclass.c                       | 51 +++++++++++-------------
 drivers/i2c/mxc_i2c.c                            | 12 +++---
 drivers/mmc/fsl_esdhc.c                          |  6 +--
 drivers/mmc/s5p_sdhci.c                          |  8 ++--
 drivers/mtd/nand/sunxi_nand.c                    |  2 +-
 drivers/mtd/nand/tegra_nand.c                    |  4 +-
 drivers/net/pic32_eth.c                          |  3 +-
 drivers/sound/max98095.c                         |  2 +
 drivers/sound/wm8994.c                           |  2 +-
 drivers/spi/pic32_spi.c                          |  2 +-
 drivers/usb/host/ehci-tegra.c                    |  7 ++--
 drivers/usb/host/ehci-vf.c                       |  5 ++-
 include/asm-generic/gpio.h                       | 10 ++---
 17 files changed, 68 insertions(+), 70 deletions(-)

diff --git a/board/qualcomm/dragonboard410c/dragonboard410c.c b/board/qualcomm/dragonboard410c/dragonboard410c.c
index e923ddc2e2..37d0b85e0e 100644
--- a/board/qualcomm/dragonboard410c/dragonboard410c.c
+++ b/board/qualcomm/dragonboard410c/dragonboard410c.c
@@ -53,8 +53,8 @@ int board_prepare_usb(enum usb_init_type type)
 			printf("Failed to find usb_hub_reset_pm dt node.\n");
 			return node;
 		}
-		ret = gpio_request_by_name_nodev(gd->fdt_blob, node, "gpios", 0,
-						 &hub_reset, 0);
+		ret = gpio_request_by_name_nodev(offset_to_ofnode(node),
+						 "gpios", 0, &hub_reset, 0);
 		if (ret < 0) {
 			printf("Failed to request usb_hub_reset_pm gpio.\n");
 			return ret;
@@ -69,8 +69,8 @@ int board_prepare_usb(enum usb_init_type type)
 			printf("Failed to find usb_sw_sel_pm dt node.\n");
 			return 0;
 		}
-		ret = gpio_request_by_name_nodev(gd->fdt_blob, node, "gpios", 0,
-						 &usb_sel, 0);
+		ret = gpio_request_by_name_nodev(offset_to_ofnode(node),
+						 "gpios", 0, &usb_sel, 0);
 		if (ret < 0) {
 			printf("Failed to request usb_sw_sel_pm gpio.\n");
 			return ret;
@@ -121,8 +121,8 @@ int misc_init_r(void)
 		return 0;
 	}
 
-	if (gpio_request_by_name_nodev(gd->fdt_blob, node, "gpios", 0, &resin,
-				       0)) {
+	if (gpio_request_by_name_nodev(offset_to_ofnode(node), "gpios", 0,
+				       &resin, 0)) {
 		printf("Failed to request key_vol_down button.\n");
 		return 0;
 	}
diff --git a/board/samsung/common/board.c b/board/samsung/common/board.c
index 17626966aa..88299f17e3 100644
--- a/board/samsung/common/board.c
+++ b/board/samsung/common/board.c
@@ -351,8 +351,8 @@ void reset_misc(void)
 	if (node < 0)
 		return;
 
-	gpio_request_by_name_nodev(gd->fdt_blob, node, "reset-gpio", 0, &gpio,
-				   GPIOD_IS_OUT);
+	gpio_request_by_name_nodev(offset_to_ofnode(node), "reset-gpio", 0,
+				   &gpio, GPIOD_IS_OUT);
 
 	if (dm_gpio_is_valid(&gpio)) {
 		/*
diff --git a/board/samsung/common/exynos5-dt.c b/board/samsung/common/exynos5-dt.c
index aec1f396b0..44f412db5d 100644
--- a/board/samsung/common/exynos5-dt.c
+++ b/board/samsung/common/exynos5-dt.c
@@ -45,7 +45,7 @@ static void board_enable_audio_codec(void)
 	if (node <= 0)
 		return;
 
-	ret = gpio_request_by_name_nodev(gd->fdt_blob, node,
+	ret = gpio_request_by_name_nodev(offset_to_ofnode(node),
 					 "codec-enable-gpio", 0, &en_gpio,
 					 GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE);
 	if (ret == -FDT_ERR_NOTFOUND)
diff --git a/board/st/stm32f746-disco/stm32f746-disco.c b/board/st/stm32f746-disco/stm32f746-disco.c
index aeaa31146a..7a6d93cb67 100644
--- a/board/st/stm32f746-disco/stm32f746-disco.c
+++ b/board/st/stm32f746-disco/stm32f746-disco.c
@@ -101,7 +101,7 @@ int board_late_init(void)
 	if (node < 0)
 		return -1;
 
-	gpio_request_by_name_nodev(gd->fdt_blob, node, "led-gpio", 0, &gpio,
+	gpio_request_by_name_nodev(offset_to_ofnode(node), "led-gpio", 0, &gpio,
 				   GPIOD_IS_OUT);
 
 	if (dm_gpio_is_valid(&gpio)) {
@@ -115,8 +115,8 @@ int board_late_init(void)
 	if (node < 0)
 		return -1;
 
-	gpio_request_by_name_nodev(gd->fdt_blob, node, "button-gpio", 0, &gpio,
-				   GPIOD_IS_IN);
+	gpio_request_by_name_nodev(offset_to_ofnode(node), "button-gpio", 0,
+				   &gpio, GPIOD_IS_IN);
 
 	if (dm_gpio_is_valid(&gpio)) {
 		if (dm_gpio_get_value(&gpio))
diff --git a/drivers/gpio/gpio-uclass.c b/drivers/gpio/gpio-uclass.c
index 92a1346aa2..f611996f17 100644
--- a/drivers/gpio/gpio-uclass.c
+++ b/drivers/gpio/gpio-uclass.c
@@ -683,45 +683,41 @@ err:
 	return ret;
 }
 
-static int _gpio_request_by_name_nodev(const void *blob, int node,
-				       const char *list_name, int index,
-				       struct gpio_desc *desc, int flags,
-				       bool add_index)
+static int _gpio_request_by_name_nodev(ofnode node, const char *list_name,
+				       int index, struct gpio_desc *desc,
+				       int flags, bool add_index)
 {
 	struct ofnode_phandle_args args;
 	int ret;
 
-	ret = ofnode_parse_phandle_with_args(offset_to_ofnode(node), list_name,
-					     "#gpio-cells", 0, index, &args);
-	if (ret)
-		debug("%s: fdtdec_parse_phandle_with_args failed\n", __func__);
+	ret = ofnode_parse_phandle_with_args(node, list_name, "#gpio-cells", 0,
+					     index, &args);
 
-	return gpio_request_tail(ret, offset_to_ofnode(node), &args, list_name,
-				 index, desc, flags, add_index);
+	return gpio_request_tail(ret, node, &args, list_name, index, desc,
+				 flags, add_index);
 }
 
-int gpio_request_by_name_nodev(const void *blob, int node,
-			       const char *list_name, int index,
+int gpio_request_by_name_nodev(ofnode node, const char *list_name, int index,
 			       struct gpio_desc *desc, int flags)
 {
-	return _gpio_request_by_name_nodev(blob, node, list_name, index, desc,
-					   flags, index > 0);
+	return _gpio_request_by_name_nodev(node, list_name, index, desc, flags,
+					   index > 0);
 }
 
-int gpio_request_by_name(struct udevice *dev,  const char *list_name, int index,
+int gpio_request_by_name(struct udevice *dev, const char *list_name, int index,
 			 struct gpio_desc *desc, int flags)
 {
-	/*
-	 * This isn't ideal since we don't use dev->name in the debug()
-	 * calls in gpio_request_by_name(), but we can do this until
-	 * gpio_request_by_name_nodev() can be dropped.
-	 */
-	return gpio_request_by_name_nodev(gd->fdt_blob, dev_of_offset(dev),
-					  list_name, index, desc, flags);
+	struct ofnode_phandle_args args;
+	int ret;
+
+	ret = dev_read_phandle_with_args(dev, list_name, "#gpio-cells", 0,
+					 index, &args);
+
+	return gpio_request_tail(ret, dev_ofnode(dev), &args, list_name,
+				 index, desc, flags, index > 0);
 }
 
-int gpio_request_list_by_name_nodev(const void *blob, int node,
-				    const char *list_name,
+int gpio_request_list_by_name_nodev(ofnode node, const char *list_name,
 				    struct gpio_desc *desc, int max_count,
 				    int flags)
 {
@@ -729,7 +725,7 @@ int gpio_request_list_by_name_nodev(const void *blob, int node,
 	int ret;
 
 	for (count = 0; count < max_count; count++) {
-		ret = _gpio_request_by_name_nodev(blob, node, list_name, count,
+		ret = _gpio_request_by_name_nodev(node, list_name, count,
 						  &desc[count], flags, true);
 		if (ret == -ENOENT)
 			break;
@@ -755,9 +751,8 @@ int gpio_request_list_by_name(struct udevice *dev, const char *list_name,
 	 * calls in gpio_request_by_name(), but we can do this until
 	 * gpio_request_list_by_name_nodev() can be dropped.
 	 */
-	return gpio_request_list_by_name_nodev(gd->fdt_blob, dev_of_offset(dev),
-					       list_name, desc, max_count,
-					       flags);
+	return gpio_request_list_by_name_nodev(dev_ofnode(dev), list_name, desc,
+					       max_count, flags);
 }
 
 int gpio_get_list_count(struct udevice *dev, const char *list_name)
diff --git a/drivers/i2c/mxc_i2c.c b/drivers/i2c/mxc_i2c.c
index 3258ae7ced..110b9d6119 100644
--- a/drivers/i2c/mxc_i2c.c
+++ b/drivers/i2c/mxc_i2c.c
@@ -773,12 +773,12 @@ static int mxc_i2c_probe(struct udevice *bus)
 	if (ret < 0) {
 		debug("i2c bus %d@0x%2lx, no gpio pinctrl state.\n", bus->seq, i2c_bus->base);
 	} else {
-		ret = gpio_request_by_name_nodev(fdt, node, "scl-gpios",
-						 0, &i2c_bus->scl_gpio,
-						 GPIOD_IS_OUT);
-		ret2 = gpio_request_by_name_nodev(fdt, node, "sda-gpios",
-						 0, &i2c_bus->sda_gpio,
-						 GPIOD_IS_OUT);
+		ret = gpio_request_by_name_nodev(offset_to_ofnode(node),
+				"scl-gpios", 0, &i2c_bus->scl_gpio,
+				GPIOD_IS_OUT);
+		ret2 = gpio_request_by_name_nodev(offset_to_ofnode(node),
+				"sda-gpios", 0, &i2c_bus->sda_gpio,
+				GPIOD_IS_OUT);
 		if (!dm_gpio_is_valid(&i2c_bus->sda_gpio) |
 		    !dm_gpio_is_valid(&i2c_bus->scl_gpio) |
 		    ret | ret2) {
diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c
index 3b3110f58b..5ee712f09b 100644
--- a/drivers/mmc/fsl_esdhc.c
+++ b/drivers/mmc/fsl_esdhc.c
@@ -983,15 +983,15 @@ static int fsl_esdhc_probe(struct udevice *dev)
 	 } else {
 		priv->non_removable = 0;
 #ifdef CONFIG_DM_GPIO
-		gpio_request_by_name_nodev(fdt, node, "cd-gpios", 0,
-					   &priv->cd_gpio, GPIOD_IS_IN);
+		gpio_request_by_name_nodev(offset_to_ofnode(node), "cd-gpios",
+					   0, &priv->cd_gpio, GPIOD_IS_IN);
 #endif
 	}
 
 	priv->wp_enable = 1;
 
 #ifdef CONFIG_DM_GPIO
-	ret = gpio_request_by_name_nodev(fdt, node, "wp-gpios", 0,
+	ret = gpio_request_by_name_nodev(offset_to_ofnode(node), "wp-gpios", 0,
 					 &priv->wp_gpio, GPIOD_IS_IN);
 	if (ret)
 		priv->wp_enable = 0;
diff --git a/drivers/mmc/s5p_sdhci.c b/drivers/mmc/s5p_sdhci.c
index 640ea0261e..62817a0d07 100644
--- a/drivers/mmc/s5p_sdhci.c
+++ b/drivers/mmc/s5p_sdhci.c
@@ -184,10 +184,10 @@ static int sdhci_get_config(const void *blob, int node, struct sdhci_host *host)
 	}
 	host->ioaddr = (void *)base;
 
-	gpio_request_by_name_nodev(blob, node, "pwr-gpios", 0, &host->pwr_gpio,
-				   GPIOD_IS_OUT);
-	gpio_request_by_name_nodev(blob, node, "cd-gpios", 0, &host->cd_gpio,
-				   GPIOD_IS_IN);
+	gpio_request_by_name_nodev(offset_to_ofnode(node), "pwr-gpios", 0,
+				   &host->pwr_gpio, GPIOD_IS_OUT);
+	gpio_request_by_name_nodev(offset_to_ofnode(node), "cd-gpios", 0,
+				   &host->cd_gpio, GPIOD_IS_IN);
 
 	return 0;
 }
diff --git a/drivers/mtd/nand/sunxi_nand.c b/drivers/mtd/nand/sunxi_nand.c
index c4e2cd7f55..8bc3828854 100644
--- a/drivers/mtd/nand/sunxi_nand.c
+++ b/drivers/mtd/nand/sunxi_nand.c
@@ -1663,7 +1663,7 @@ static int sunxi_nand_chip_init(int node, struct sunxi_nfc *nfc, int devnum)
 			chip->sels[i].rb.type = RB_NATIVE;
 			chip->sels[i].rb.info.nativeid = tmp;
 		} else {
-			ret = gpio_request_by_name_nodev(blob, node,
+			ret = gpio_request_by_name_nodev(offset_to_ofnode(node),
 						"rb-gpios", i,
 						&chip->sels[i].rb.info.gpio,
 						GPIOD_IS_IN);
diff --git a/drivers/mtd/nand/tegra_nand.c b/drivers/mtd/nand/tegra_nand.c
index 5c9b485b08..c03c9cb178 100644
--- a/drivers/mtd/nand/tegra_nand.c
+++ b/drivers/mtd/nand/tegra_nand.c
@@ -894,8 +894,8 @@ static int fdt_decode_nand(const void *blob, int node, struct fdt_nand *config)
 	config->reg = (struct nand_ctlr *)fdtdec_get_addr(blob, node, "reg");
 	config->enabled = fdtdec_get_is_enabled(blob, node);
 	config->width = fdtdec_get_int(blob, node, "nvidia,nand-width", 8);
-	err = gpio_request_by_name_nodev(blob, node, "nvidia,wp-gpios", 0,
-				 &config->wp_gpio, GPIOD_IS_OUT);
+	err = gpio_request_by_name_nodev(offset_to_ofnode(node),
+			"nvidia,wp-gpios", 0, &config->wp_gpio, GPIOD_IS_OUT);
 	if (err)
 		return err;
 	err = fdtdec_get_int_array(blob, node, "nvidia,timing",
diff --git a/drivers/net/pic32_eth.c b/drivers/net/pic32_eth.c
index 385aad5b7e..0b89911f04 100644
--- a/drivers/net/pic32_eth.c
+++ b/drivers/net/pic32_eth.c
@@ -561,8 +561,7 @@ static int pic32_eth_probe(struct udevice *dev)
 		phy_addr = fdtdec_get_int(gd->fdt_blob, offset, "reg", -1);
 
 	/* phy reset gpio */
-	gpio_request_by_name_nodev(gd->fdt_blob, dev_of_offset(dev),
-				   "reset-gpios", 0,
+	gpio_request_by_name_nodev(dev_ofnode(dev), "reset-gpios", 0,
 				   &priv->rst_gpio, GPIOD_IS_OUT);
 
 	priv->phyif	= pdata->phy_interface;
diff --git a/drivers/sound/max98095.c b/drivers/sound/max98095.c
index 35829f88c9..7c37bd0701 100644
--- a/drivers/sound/max98095.c
+++ b/drivers/sound/max98095.c
@@ -9,6 +9,8 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
+
+#include <common.h>
 #include <asm/arch/clk.h>
 #include <asm/arch/cpu.h>
 #include <asm/arch/power.h>
diff --git a/drivers/sound/wm8994.c b/drivers/sound/wm8994.c
index d378442c50..b8208cdc87 100644
--- a/drivers/sound/wm8994.c
+++ b/drivers/sound/wm8994.c
@@ -4,11 +4,11 @@
  *
  * SPDX-License-Identifier:	GPL-2.0+
  */
+#include <common.h>
 #include <asm/arch/clk.h>
 #include <asm/arch/cpu.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
-#include <common.h>
 #include <div64.h>
 #include <fdtdec.h>
 #include <i2c.h>
diff --git a/drivers/spi/pic32_spi.c b/drivers/spi/pic32_spi.c
index 78d78bc54b..15266b048c 100644
--- a/drivers/spi/pic32_spi.c
+++ b/drivers/spi/pic32_spi.c
@@ -414,7 +414,7 @@ static int pic32_spi_probe(struct udevice *bus)
 	 * of the ongoing transfer. To avoid this sort of error we will drive
 	 * /CS manually by toggling cs-gpio pins.
 	 */
-	ret = gpio_request_by_name_nodev(gd->fdt_blob, node, "cs-gpios", 0,
+	ret = gpio_request_by_name_nodev(offset_to_ofnode(node), "cs-gpios", 0,
 					 &priv->cs_gpio, GPIOD_IS_OUT);
 	if (ret) {
 		printf("pic32-spi: error, cs-gpios not found\n");
diff --git a/drivers/usb/host/ehci-tegra.c b/drivers/usb/host/ehci-tegra.c
index da9e9440b7..7dc37f045d 100644
--- a/drivers/usb/host/ehci-tegra.c
+++ b/drivers/usb/host/ehci-tegra.c
@@ -728,9 +728,10 @@ static int fdt_decode_usb(struct udevice *dev, struct fdt_usb *config)
 		debug("%s: Missing/invalid peripheral ID\n", __func__);
 		return -EINVAL;
 	}
-	gpio_request_by_name_nodev(blob, node, "nvidia,vbus-gpio", 0,
-				   &config->vbus_gpio, GPIOD_IS_OUT);
-	gpio_request_by_name_nodev(blob, node, "nvidia,phy-reset-gpio", 0,
+	gpio_request_by_name_nodev(offset_to_ofnode(node), "nvidia,vbus-gpio",
+				   0, &config->vbus_gpio, GPIOD_IS_OUT);
+	gpio_request_by_name_nodev(offset_to_ofnode(node),
+				   "nvidia,phy-reset-gpio", 0,
 				   &config->phy_reset_gpio, GPIOD_IS_OUT);
 	debug("enabled=%d, legacy_mode=%d, utmi=%d, ulpi=%d, periph_id=%d, "
 		"vbus=%d, phy_reset=%d, dr_mode=%d\n",
diff --git a/drivers/usb/host/ehci-vf.c b/drivers/usb/host/ehci-vf.c
index e52cd6ad32..a7f6f21fa2 100644
--- a/drivers/usb/host/ehci-vf.c
+++ b/drivers/usb/host/ehci-vf.c
@@ -252,8 +252,9 @@ static int vf_usb_ofdata_to_platdata(struct udevice *dev)
 	}
 
 	if (priv->dr_mode == DR_MODE_OTG) {
-		gpio_request_by_name_nodev(dt_blob, node, "fsl,cdet-gpio", 0,
-					   &priv->cdet_gpio, GPIOD_IS_IN);
+		gpio_request_by_name_nodev(offset_to_ofnode(node),
+					   "fsl,cdet-gpio", 0, &priv->cdet_gpio,
+					   GPIOD_IS_IN);
 		if (dm_gpio_is_valid(&priv->cdet_gpio)) {
 			if (dm_gpio_get_value(&priv->cdet_gpio))
 				priv->init_type = USB_INIT_DEVICE;
diff --git a/include/asm-generic/gpio.h b/include/asm-generic/gpio.h
index d78491dfc2..bf230c15ba 100644
--- a/include/asm-generic/gpio.h
+++ b/include/asm-generic/gpio.h
@@ -7,6 +7,8 @@
 #ifndef _ASM_GENERIC_GPIO_H_
 #define _ASM_GENERIC_GPIO_H_
 
+#include <dm/ofnode.h>
+
 struct ofnode_phandle_args;
 
 /*
@@ -488,9 +490,8 @@ int gpio_get_list_count(struct udevice *dev, const char *list_name);
  * This is a version of gpio_request_list_by_name() that does not use a
  * device. Avoid it unless the caller is not yet using driver model
  */
-int gpio_request_by_name_nodev(const void *blob, int node,
-			       const char *list_name,
-			       int index, struct gpio_desc *desc, int flags);
+int gpio_request_by_name_nodev(ofnode node, const char *list_name, int index,
+			       struct gpio_desc *desc, int flags);
 
 /**
  * gpio_request_list_by_name_nodev() - request GPIOs without a device
@@ -498,8 +499,7 @@ int gpio_request_by_name_nodev(const void *blob, int node,
  * This is a version of gpio_request_list_by_name() that does not use a
  * device. Avoid it unless the caller is not yet using driver model
  */
-int gpio_request_list_by_name_nodev(const void *blob, int node,
-				    const char *list_name,
+int gpio_request_list_by_name_nodev(ofnode node, const char *list_name,
 				    struct gpio_desc *desc_list, int max_count,
 				    int flags);
 
-- 
2.13.0.219.gdb65acc882-goog

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [U-Boot] [PATCH v4 51/72] dm: clk: Update uclass to support livetree
  2017-05-31  3:47 [U-Boot] [PATCH v4 31/72] dm: gpio: Add live tree support Simon Glass
@ 2017-05-31  3:47 ` Simon Glass
  2017-05-31 17:39   ` Simon Glass
  2017-05-31 17:39 ` [U-Boot] [PATCH v4 31/72] dm: gpio: Add live tree support Simon Glass
  1 sibling, 1 reply; 4+ messages in thread
From: Simon Glass @ 2017-05-31  3:47 UTC (permalink / raw)
  To: u-boot

Update the clk uclass to support a live device tree.

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

Changes in v4:
- Update zynq clock driver to use the correct error number

Changes in v3: None
Changes in v2: None

 drivers/clk/clk-uclass.c | 17 +++++++----------
 drivers/clk/clk_zynq.c   |  2 +-
 2 files changed, 8 insertions(+), 11 deletions(-)

diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c
index f6194b60f9..83b63288fb 100644
--- a/drivers/clk/clk-uclass.c
+++ b/drivers/clk/clk-uclass.c
@@ -58,23 +58,22 @@ static int clk_of_xlate_default(struct clk *clk,
 int clk_get_by_index(struct udevice *dev, int index, struct clk *clk)
 {
 	int ret;
-	struct fdtdec_phandle_args args;
+	struct ofnode_phandle_args args;
 	struct udevice *dev_clk;
 	struct clk_ops *ops;
 
 	debug("%s(dev=%p, index=%d, clk=%p)\n", __func__, dev, index, clk);
 
 	assert(clk);
-	ret = fdtdec_parse_phandle_with_args(gd->fdt_blob, dev_of_offset(dev),
-					     "clocks", "#clock-cells", 0, index,
-					     &args);
+	ret = dev_read_phandle_with_args(dev, "clocks", "#clock-cells", 0,
+					  index, &args);
 	if (ret) {
 		debug("%s: fdtdec_parse_phandle_with_args failed: err=%d\n",
 		      __func__, ret);
 		return ret;
 	}
 
-	ret = uclass_get_device_by_of_offset(UCLASS_CLK, args.node, &dev_clk);
+	ret = uclass_get_device_by_ofnode(UCLASS_CLK, args.node, &dev_clk);
 	if (ret) {
 		debug("%s: uclass_get_device_by_of_offset failed: err=%d\n",
 		      __func__, ret);
@@ -86,10 +85,9 @@ int clk_get_by_index(struct udevice *dev, int index, struct clk *clk)
 	ops = clk_dev_ops(dev_clk);
 
 	if (ops->of_xlate)
-		ret = ops->of_xlate(clk, (struct ofnode_phandle_args *)&args);
+		ret = ops->of_xlate(clk, &args);
 	else
-		ret = clk_of_xlate_default(clk,
-					   (struct ofnode_phandle_args *)&args);
+		ret = clk_of_xlate_default(clk, &args);
 	if (ret) {
 		debug("of_xlate() failed: %d\n", ret);
 		return ret;
@@ -105,8 +103,7 @@ int clk_get_by_name(struct udevice *dev, const char *name, struct clk *clk)
 
 	debug("%s(dev=%p, name=%s, clk=%p)\n", __func__, dev, name, clk);
 
-	index = fdt_stringlist_search(gd->fdt_blob, dev_of_offset(dev),
-				      "clock-names", name);
+	index = dev_read_stringlist_search(dev, "clock-names", name);
 	if (index < 0) {
 		debug("fdt_stringlist_search() failed: %d\n", index);
 		return index;
diff --git a/drivers/clk/clk_zynq.c b/drivers/clk/clk_zynq.c
index b9975456fa..50f2a65c20 100644
--- a/drivers/clk/clk_zynq.c
+++ b/drivers/clk/clk_zynq.c
@@ -459,7 +459,7 @@ static int zynq_clk_probe(struct udevice *dev)
 	for (i = 0; i < 2; i++) {
 		sprintf(name, "gem%d_emio_clk", i);
 		ret = clk_get_by_name(dev, name, &priv->gem_emio_clk[i]);
-		if (ret < 0 && ret != -FDT_ERR_NOTFOUND) {
+		if (ret < 0 && ret != -ENODATA) {
 			dev_err(dev, "failed to get %s clock\n", name);
 			return ret;
 		}
-- 
2.13.0.219.gdb65acc882-goog

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [U-Boot] [PATCH v4 31/72] dm: gpio: Add live tree support
  2017-05-31  3:47 [U-Boot] [PATCH v4 31/72] dm: gpio: Add live tree support Simon Glass
  2017-05-31  3:47 ` [U-Boot] [PATCH v4 51/72] dm: clk: Update uclass to support livetree Simon Glass
@ 2017-05-31 17:39 ` Simon Glass
  1 sibling, 0 replies; 4+ messages in thread
From: Simon Glass @ 2017-05-31 17:39 UTC (permalink / raw)
  To: u-boot

On 30 May 2017 at 21:47, Simon Glass <sjg@chromium.org> wrote:
> Add support for requesting GPIOs with a live device tree.
>
> This involves adjusting the function signature for the legacy function
> gpio_request_by_name_nodev(), so fix up all callers.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> Fixes to stm32f746-disco.c:
> Signed-off-by: Tom Rini <trini@konsulko.com>
> ---
>
> Changes in v4:
> - Update stm32f746-disco.c to support live tree
>
> Changes in v3: None
> Changes in v2: None
>
>  board/qualcomm/dragonboard410c/dragonboard410c.c | 12 +++---
>  board/samsung/common/board.c                     |  4 +-
>  board/samsung/common/exynos5-dt.c                |  2 +-
>  board/st/stm32f746-disco/stm32f746-disco.c       |  6 +--
>  drivers/gpio/gpio-uclass.c                       | 51 +++++++++++-------------
>  drivers/i2c/mxc_i2c.c                            | 12 +++---
>  drivers/mmc/fsl_esdhc.c                          |  6 +--
>  drivers/mmc/s5p_sdhci.c                          |  8 ++--
>  drivers/mtd/nand/sunxi_nand.c                    |  2 +-
>  drivers/mtd/nand/tegra_nand.c                    |  4 +-
>  drivers/net/pic32_eth.c                          |  3 +-
>  drivers/sound/max98095.c                         |  2 +
>  drivers/sound/wm8994.c                           |  2 +-
>  drivers/spi/pic32_spi.c                          |  2 +-
>  drivers/usb/host/ehci-tegra.c                    |  7 ++--
>  drivers/usb/host/ehci-vf.c                       |  5 ++-
>  include/asm-generic/gpio.h                       | 10 ++---
>  17 files changed, 68 insertions(+), 70 deletions(-)

Applied to u-boot-dm in place of the earlier patch.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [U-Boot] [PATCH v4 51/72] dm: clk: Update uclass to support livetree
  2017-05-31  3:47 ` [U-Boot] [PATCH v4 51/72] dm: clk: Update uclass to support livetree Simon Glass
@ 2017-05-31 17:39   ` Simon Glass
  0 siblings, 0 replies; 4+ messages in thread
From: Simon Glass @ 2017-05-31 17:39 UTC (permalink / raw)
  To: u-boot

On 30 May 2017 at 21:47, Simon Glass <sjg@chromium.org> wrote:
> Update the clk uclass to support a live device tree.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
> Changes in v4:
> - Update zynq clock driver to use the correct error number
>
> Changes in v3: None
> Changes in v2: None
>
>  drivers/clk/clk-uclass.c | 17 +++++++----------
>  drivers/clk/clk_zynq.c   |  2 +-
>  2 files changed, 8 insertions(+), 11 deletions(-)

Applied to u-boot-dm in place of the earlier patch.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-05-31 17:39 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-31  3:47 [U-Boot] [PATCH v4 31/72] dm: gpio: Add live tree support Simon Glass
2017-05-31  3:47 ` [U-Boot] [PATCH v4 51/72] dm: clk: Update uclass to support livetree Simon Glass
2017-05-31 17:39   ` Simon Glass
2017-05-31 17:39 ` [U-Boot] [PATCH v4 31/72] dm: gpio: Add live tree support Simon Glass

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.