[PATCH 31/45] at91sam9x5ek: Configure 1-wire in DT

Andrey Smirnov andrew.smirnov at gmail.com
Mon Mar 6 14:53:42 PST 2017


Signed-off-by: Andrey Smirnov <andrew.smirnov at gmail.com>
---
 arch/arm/boards/at91sam9x5ek/hw_version.c |  6 +++++-
 arch/arm/boards/at91sam9x5ek/hw_version.h |  1 -
 arch/arm/boards/at91sam9x5ek/init.c       | 16 ----------------
 arch/arm/dts/at91sam9x5ek.dts             | 17 +++++++++++++++++
 4 files changed, 22 insertions(+), 18 deletions(-)

diff --git a/arch/arm/boards/at91sam9x5ek/hw_version.c b/arch/arm/boards/at91sam9x5ek/hw_version.c
index 2f84d82..d1ca036 100644
--- a/arch/arm/boards/at91sam9x5ek/hw_version.c
+++ b/arch/arm/boards/at91sam9x5ek/hw_version.c
@@ -15,6 +15,7 @@
  */
 
 #include <common.h>
+#include <init.h>
 #include <fs.h>
 #include <fcntl.h>
 #include <libbb.h>
@@ -250,7 +251,7 @@ static int cm_cogent_fixup(struct device_node *root, void *unused)
 	return 0;
 }
 
-void at91sam9x5ek_devices_detect_hw(void)
+static int at91sam9x5ek_devices_detect_hw(void)
 {
 	at91sam9x5ek_devices_detect_one("/dev/ds24310");
 	at91sam9x5ek_devices_detect_one("/dev/ds24311");
@@ -262,4 +263,7 @@ void at91sam9x5ek_devices_detect_hw(void)
 
 	if (at91sam9x5ek_cm_is_vendor(VENDOR_COGENT))
 		of_register_fixup(cm_cogent_fixup, NULL);
+
+	return 0;
 }
+late_initcall(at91sam9x5ek_devices_detect_hw);
diff --git a/arch/arm/boards/at91sam9x5ek/hw_version.h b/arch/arm/boards/at91sam9x5ek/hw_version.h
index 91fd429..3f3c800 100644
--- a/arch/arm/boards/at91sam9x5ek/hw_version.h
+++ b/arch/arm/boards/at91sam9x5ek/hw_version.h
@@ -29,6 +29,5 @@ enum vendor_id {
 bool at91sam9x5ek_cm_is_vendor(enum vendor_id vid);
 bool at91sam9x5ek_ek_is_vendor(enum vendor_id vid);
 bool at91sam9x5ek_dm_is_vendor(enum vendor_id vid);
-void at91sam9x5ek_devices_detect_hw(void);
 
 #endif /* __HW_REVISION_H__ */
diff --git a/arch/arm/boards/at91sam9x5ek/init.c b/arch/arm/boards/at91sam9x5ek/init.c
index 2fe724c..09b7d0f 100644
--- a/arch/arm/boards/at91sam9x5ek/init.c
+++ b/arch/arm/boards/at91sam9x5ek/init.c
@@ -45,12 +45,6 @@
 
 #include "hw_version.h"
 
-struct w1_gpio_platform_data w1_pdata = {
-	.pin = AT91_PIN_PB18,
-	.ext_pullup_enable_pin = -EINVAL,
-	.is_open_drain = 0,
-};
-
 static struct atmel_nand_data nand_pdata = {
 	.ale		= 21,
 	.cle		= 22,
@@ -186,18 +180,8 @@ static void ek_add_device_usb(void)
 static void ek_add_device_usb(void) {}
 #endif
 
-static void ek_add_device_w1(void)
-{
-	at91_set_gpio_input(w1_pdata.pin, 0);
-	at91_set_multi_drive(w1_pdata.pin, 1);
-	add_generic_device_res("w1-gpio", DEVICE_ID_SINGLE, NULL, 0, &w1_pdata);
-
-	at91sam9x5ek_devices_detect_hw();
-}
-
 static int at91sam9x5ek_devices_init(void)
 {
-	ek_add_device_w1();
 	ek_add_device_nand();
 	ek_add_device_eth();
 	ek_add_device_usb();
diff --git a/arch/arm/dts/at91sam9x5ek.dts b/arch/arm/dts/at91sam9x5ek.dts
index efdba61..fa79347 100644
--- a/arch/arm/dts/at91sam9x5ek.dts
+++ b/arch/arm/dts/at91sam9x5ek.dts
@@ -29,6 +29,23 @@
 			};
 		};
 	};
+
+	leds {
+		/*
+		 * PB18 has a resource conflict since it is both used
+                 * as a heartbeat LED and 1-wire bus in the kernel
+                 * device tree. Since 1-wire EEPROMs contains
+                 * importatnt revision information as a part of
+                 * Barebox DT stup we move heartbeat to PD21 and
+                 * remove the original pb18 node
+		 */
+
+		/delete-node/ pb18;
+
+		pd21 {
+			linux,default-trigger = "heartbeat";
+		};
+	};
 };
 
 &spi0 {
-- 
2.9.3




More information about the barebox mailing list