svn commit: r320091 - head/sys/arm/allwinner

Emmanuel Vadot manu at FreeBSD.org
Mon Jun 19 06:30:05 UTC 2017


Author: manu
Date: Mon Jun 19 06:30:04 2017
New Revision: 320091
URL: https://svnweb.freebsd.org/changeset/base/320091

Log:
  allwinner: Configure pins for DTS >= Linux 4.11
  
  Starting with DTS from Linux 4.11, the pins list, function, drive and pull
  are no longer prefixed with "allwinner,".
  Allow the pinctrl driver to handle both case.

Modified:
  head/sys/arm/allwinner/a10_gpio.c

Modified: head/sys/arm/allwinner/a10_gpio.c
==============================================================================
--- head/sys/arm/allwinner/a10_gpio.c	Mon Jun 19 05:02:27 2017	(r320090)
+++ head/sys/arm/allwinner/a10_gpio.c	Mon Jun 19 06:30:04 2017	(r320091)
@@ -565,24 +565,38 @@ aw_fdt_configure_pins(device_t dev, phandle_t cfgxref)
 	ret = 0;
 
 	/* Getting all prop for configuring pins */
-	pins_nb = ofw_bus_string_list_to_array(node, "allwinner,pins", &pinlist);
-	if (pins_nb <= 0)
-		return (ENOENT);
-	if (OF_getprop_alloc(node, "allwinner,function",
+	pins_nb = ofw_bus_string_list_to_array(node, "pins", &pinlist);
+	if (pins_nb <= 0) {
+		pins_nb = ofw_bus_string_list_to_array(node, "allwinner,pins",
+		    &pinlist);
+		if (pins_nb <= 0)
+			return (ENOENT);
+	}
+	if (OF_getprop_alloc(node, "function",
 			     sizeof(*pin_function),
 			     (void **)&pin_function) == -1) {
-		ret = ENOENT;
-		goto out;
+		if (OF_getprop_alloc(node, "allwinner,function",
+		    sizeof(*pin_function),
+		    (void **)&pin_function) == -1) {
+			ret = ENOENT;
+			goto out;
+		}
 	}
-	if (OF_getencprop(node, "allwinner,drive",
+	if (OF_getencprop(node, "drive",
 			  &pin_drive, sizeof(pin_drive)) == -1) {
-		ret = ENOENT;
-		goto out;
+		if (OF_getencprop(node, "allwinner,drive",
+		    &pin_drive, sizeof(pin_drive)) == -1) {
+			ret = ENOENT;
+			goto out;
+		}
 	}
-	if (OF_getencprop(node, "allwinner,pull",
+	if (OF_getencprop(node, "pull",
 			  &pin_pull, sizeof(pin_pull)) == -1) {
-		ret = ENOENT;
-		goto out;
+		if (OF_getencprop(node, "allwinner,pull",
+		    &pin_pull, sizeof(pin_pull)) == -1) {
+			ret = ENOENT;
+			goto out;
+		}
 	}
 
 	/* Configure each pin to the correct function, drive and pull */
@@ -697,6 +711,8 @@ a10_gpio_attach(device_t dev)
 	/*
 	 * Register as a pinctrl device
 	 */
+	fdt_pinctrl_register(dev, "pins");
+	fdt_pinctrl_configure_tree(dev);
 	fdt_pinctrl_register(dev, "allwinner,pins");
 	fdt_pinctrl_configure_tree(dev);
 


More information about the svn-src-head mailing list