[PATCH 11/14] at91sam9x5ek: Configure 1-wire in DT
Andrey Smirnov
andrew.smirnov at gmail.com
Thu Mar 23 06:23:55 PDT 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 | 15 +++++++++++++++
4 files changed, 20 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..c169181 100644
--- a/arch/arm/dts/at91sam9x5ek.dts
+++ b/arch/arm/dts/at91sam9x5ek.dts
@@ -29,6 +29,21 @@
};
};
};
+
+ leds {
+ /*
+ * PB18 has a resource conflict since it is both used
+ * as a heartbeat LED and 1-wire bus in the kernel
+ * device tree. Because 1-wire EEPROMs contains
+ * importatnt revision information 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