All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms
@ 2018-08-20 14:25 Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 01/34] w1: Add 1-Wire uclass Eugen Hristev
                   ` (33 more replies)
  0 siblings, 34 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:25 UTC (permalink / raw)
  To: u-boot

This is a patch series originally written by Maxime Ripard,
https://lists.denx.de/pipermail/u-boot/2016-November/272138.html

titled:

[U-Boot] [PATCH RESEND 0/9] sunxi: chip: Enable the DIP auto-detection

and reworked to include support for the EEPROMs on the PDAs connected
to the sama xplained boards.

This is the version 3 of the rework, version 1 was titled:
[PATCH 00/20] Add support for 1wire protocol and 1wire eeproms
and version 2 was titled:
[PATCH v2 00/30] Add support for 1wire protocol and 1wire eeproms

It addresses feedback received in the first version and fixes a few bugs
found in the second version.

The patch series adds first a driver for onewire uclass, and onewire over
gpio bitbanging driver. Then it adds a uclass for onewire EEPROMS, and
specific driver for Maxim EEPROMs. I have added some sandbox support,
configuration and device tree for it and for boards sama5d2_xplained,
sama5d3_xplained, sama5d4_xplained, sama5d2_ptc_ek and sama5d27_som1_ek.
Also added common code for PDA detection, as the memory
on the PDAs is connected to the SoC on the onewire bus.

Thanks to everyone for the review and feedback.

Below is a short summary of the commits:

The series adds a w1-uclass driver for the onewire interface u-class.
This is done in patch:
[PATCH v3 01/34] w1: Add 1-Wire uclass

Also, we add a driver for the w1-uclass specific to the onewire over
bitbanged gpio, this is done in patch:
[PATCH v3 02/34] w1: Add 1-Wire gpio driver

Add the bindings documentation in:
[PATCH v3 03/34] dt-bindings: W1: w1-gpio: added bindings for w1-gpio

A uclass driver is added for one wire eeproms, in patch :
[PATCH v3 04/34] W1-EEPROM: Add an W1-EEPROM uclass for 1 wire EEPROMs

Connection between memories and the bus is done in the patch:
[PATCH v3 05/34] w1: identify devices with w1-eeprom uclas

Specific driver for the DS24 Maxim EEPROMs is added in the patch:
[PATCH v3 06/34] W1-EEPROM: add support for Maxim DS24 eeprom families

Bindings for the DS24xxx driver added in the patch:
[PATCH v3 07/34] dt-bindings: w1-eeprom: ds24xxx: create bindings

A sandbox driver for a onewire EEPROM is added in patch:
[PATCH v3 08/34] W1-EEPROM: add sandbox driver

Bindings for the sandbox eeprom driver added in patch:
[PATCH v3 09/34] dt-bindings: w1-eeprom: eep_sandbox: create bindings

A command is added for the onewire protocol in patch:
[PATCH v3 10/34] w1: add command for onewire protocol

Pinctrl driver for sandbox was updated to add a new group and function for w1:
[PATCH v3 11/34] pinctrl: sandbox: add gpio onewire w1 group

Add a node in sandbox DT to have a test node for sandbox.
[PATCH v3 12/34] sandbox: DTS: w1: add node for one wire interface on
 GPIO

The defconfig for sandbox is updated to include the drivers:
[PATCH v3 13/34] configs: sandbox: add onewire w1 and sandbox
 eeprom

Configuration for sama5d2 xplained is updated in patch:
[PATCH v3 14/34] configs: sama5d2_xplained: add onewire and eeprom

Configuration for sama5d3 xplained is updated in patch:
[PATCH v3 15/34] configs: sama5d3_xplained: add onewire and eeprom

Configuration for sama5d27_som1_ek is updated in patch:
[PATCH v3 16/34] configs: sama5d27_som1_ek: add onewire and eeprom
 drivers

Configuration for sama5d2 ptc is updated in patch:
[PATCH v3 17/34] configs: sama5d2_ptc_ek: add onewire and eeprom
 drivers

Configuration for sama5d4 xplained is updated in patch:
[PATCH v3 18/34] configs: sama5d4_xplained: add onewire and eeprom
 drivers

Pda detection is added in the common part for atmel boards:
[PATCH v3 19/34] board: atmel: add support for pda detection

Specifically add it for Sama5d2 xplained board in patch:
[PATCH v3 20/34] board: sama5d2_xplained: add pda detect call at init
 time

Specifically add it for Sama5d3 xplained board in patch:
[PATCH v3 21/34] board: sama5d3_xplained: add pda detect call at init
 time

Specifically add it for Sama5d27 som1 ek board in patch:
[PATCH v3 22/34] board: sama5d27_som1_ek: add pda detect call at init
 time

Specifically add it for Sama5d27 ptc ek board in patch:
[PATCH v3 23/34] board: sama5d2_ptc_ek: add pda detect call at init
 time

Specifically add it for Sama5d4 xplained board in patch:
[PATCH v3 24/34] board: sama5d4_xplained: add pda detect call at init
 time

Add support for overlays for sama5d2 xplained config in patch:
[PATCH v3 25/34] configs: sama5d2_xplained: add fdt overlay support

Add support for overlays for sama5d3 xplained config in patch:
[PATCH v3 26/34] configs: sama5d3_xplained: add fdt overlay support

Add support for overlays for sama5d2 ptc ek config in patch:
[PATCH v3 27/34] configs: sama5d2_ptc_ek: add fdt overlay support

Add support for overlays for sama5d2 som1 ek config in patch:
[PATCH v3 28/34] configs: sama5d27_som1_ek: add fdt overlay support

Add support for overlays for sama5d4 xplained config in patch:
[PATCH v3 29/34] configs: sama5d4_xplained: add fdt overlay support

The DT for the SAMA5D2 Soc and xplained is updated to include a onewire node.
This is done in patch:
[PATCH v3 30/34] ARM: dts: at91: sama5d2_xplained: add onewire connector

The DT for the SAMA5D3 Soc and xplained is updated to include a onewire node.
This is done in patch:
[PATCH v3 31/34] ARM: dts: at91: sama5d3_xplained: add onewire connector

The DT for sama5d27 som1 ek is updated to include a onewire node.
This is done in patch:
[PATCH v3 32/34] ARM: dts: at91: sama5d27_som1_ek: add onewire
 connector for LCD eeprom

The DT for sama5d2 ptc ek is updated to include a onewire node.
This is done in patch:
[PATCH v3 33/34] ARM: dts: at91: sama5d2_ptc: add onewire connector
 for LCD eeprom

The DT for sama5d2 xplained is updated to include a onewire node.
This is done in patch:
[PATCH v3 34/34] ARM: dts: at91: sama5d4_xplained: add onewire connector
 for LCD eeprom

Changes in v3:
- add suport for sama5d4 xplained.
- modified the reset ops for the w1-gpio driver to also check for bus
release by the memory after the presence pulse. This is done to avoid the
case when the bus is being kept indefinitely at low, thus confusing the
detection algorithm.
- fixed issue in w1-uclass when the id for the child node was improperly saved
- fixed issue when the gpio driver was returning only FFs but the read buf
function error code was not checked.

Changes in v2:
- added support for two more boards: the PTC ek and the SOM1 ek.
- modified the enumerate mechanism, to search through devicetree nodes,
the memories are now in device tree, as suggested by Simon Glass.
When a serial number is read from the bus, the driver will match it
with a corresponding node in device tree.
- modified the probe mechanism for the bus, when trying to get the bus
use a different get function that will also probe the driver, regardless
of present aliases in DT.
- added bindings for ds24xxx driver and eep_sandbox, because they are
referenced from devicetree now.


Eugen Hristev (30):
  dt-bindings: W1: w1-gpio: added bindings for w1-gpio
  w1: identify devices with w1-eeprom uclass
  dt-bindings: w1-eeprom: ds24xxx: create bindings
  W1-EEPROM: add sandbox driver
  dt-bindings: w1-eeprom: eep_sandbox: create bindings
  w1: add command for onewire protocol
  pinctrl: sandbox: add gpio onewire w1 group
  sandbox: DTS: w1: add node for one wire interface on GPIO
  configs: sandbox: add onewire w1 and sandbox eeprom
  configs: sama5d2_xplained: add onewire and eeprom drivers
  configs: sama5d3_xplained: add onewire and eeprom drivers
  configs: sama5d27_som1_ek: add onewire and eeprom drivers
  configs: sama5d2_ptc_ek: add onewire and eeprom drivers
  configs: sama5d4_xplained: add onewire and eeprom drivers
  board: atmel: add support for pda detection
  board: sama5d2_xplained: add pda detect call at init time
  board: sama5d3_xplained: add pda detect call at init time
  board: sama5d27_som1_ek: add pda detect call at init time
  board: sama5d2_ptc_ek: add pda detect call at init time
  board: sama5d4_xplained: add pda detect call at init time
  configs: sama5d2_xplained: add fdt overlay support
  configs: sama5d3_xplained: add fdt overlay support
  configs: sama5d2_ptc_ek: add fdt overlay support
  configs: sama5d27_som1_ek: add fdt overlay support
  configs: sama5d4_xplained: add fdt overlay support
  ARM: dts: at91: sama5d2_xplained: add onewire connector for LCD eeprom
  ARM: dts: at91: sama5d3_xplained: add onewire connector for LCD eeprom
  ARM: dts: at91: sama5d27_som1_ek: add onewire connector for LCD eeprom
  ARM: dts: at91: sama5d2_ptc: add onewire connector for LCD eeprom
  ARM: dts: at91: sama5d4_xplained: add onewire connector for LCD eeprom

Maxime Ripard (4):
  w1: Add 1-Wire uclass
  w1: Add 1-Wire gpio driver
  W1-EEPROM: Add an W1-EEPROM uclass for 1 wire EEPROMs
  W1-EEPROM: add support for Maxim DS24 eeprom families

 arch/arm/dts/at91-sama5d27_som1_ek.dts             |  17 ++
 arch/arm/dts/at91-sama5d2_ptc_ek.dts               |  17 ++
 arch/arm/dts/at91-sama5d2_xplained.dts             |  17 ++
 arch/arm/dts/at91-sama5d3_xplained.dts             |  17 ++
 arch/arm/dts/at91-sama5d4_xplained.dts             |  16 ++
 arch/arm/dts/sama5d2.dtsi                          |   5 +
 arch/arm/dts/sama5d3.dtsi                          |   5 +
 arch/arm/dts/sama5d4.dtsi                          |   5 +
 arch/arm/mach-at91/Kconfig                         |   2 +
 arch/sandbox/dts/sandbox.dts                       |  20 ++
 board/atmel/common/board.c                         |  55 +++++
 board/atmel/sama5d27_som1_ek/sama5d27_som1_ek.c    |   3 +
 board/atmel/sama5d2_ptc_ek/sama5d2_ptc_ek.c        |  10 +
 board/atmel/sama5d2_xplained/sama5d2_xplained.c    |   3 +
 board/atmel/sama5d3_xplained/sama5d3_xplained.c    |  10 +
 board/atmel/sama5d4_xplained/sama5d4_xplained.c    |   3 +
 cmd/Kconfig                                        |   7 +
 cmd/Makefile                                       |   1 +
 cmd/w1.c                                           | 126 +++++++++++
 configs/sama5d27_som1_ek_mmc_defconfig             |   5 +
 configs/sama5d2_ptc_ek_mmc_defconfig               |   5 +
 configs/sama5d2_ptc_ek_nandflash_defconfig         |   5 +
 configs/sama5d2_xplained_mmc_defconfig             |   5 +
 configs/sama5d2_xplained_spiflash_defconfig        |   5 +
 configs/sama5d3_xplained_mmc_defconfig             |   5 +
 configs/sama5d3_xplained_nandflash_defconfig       |   5 +
 configs/sama5d4_xplained_mmc_defconfig             |   5 +
 configs/sama5d4_xplained_nandflash_defconfig       |   5 +
 configs/sama5d4_xplained_spiflash_defconfig        |   5 +
 configs/sandbox_defconfig                          |   4 +
 doc/device-tree-bindings/w1-eeprom/ds24xxx.txt     |  37 ++++
 doc/device-tree-bindings/w1-eeprom/eep_sandbox.txt |  34 +++
 doc/device-tree-bindings/w1/w1-gpio.txt            |  40 ++++
 drivers/Kconfig                                    |   4 +
 drivers/Makefile                                   |   2 +
 drivers/pinctrl/pinctrl-sandbox.c                  |   3 +
 drivers/w1-eeprom/Kconfig                          |  29 +++
 drivers/w1-eeprom/Makefile                         |   5 +
 drivers/w1-eeprom/ds24xxx.c                        |  55 +++++
 drivers/w1-eeprom/eep_sandbox.c                    |  61 ++++++
 drivers/w1-eeprom/w1-eeprom-uclass.c               | 116 ++++++++++
 drivers/w1/Kconfig                                 |  25 +++
 drivers/w1/Makefile                                |   3 +
 drivers/w1/w1-gpio.c                               | 176 +++++++++++++++
 drivers/w1/w1-uclass.c                             | 240 +++++++++++++++++++++
 include/dm/uclass-id.h                             |   2 +
 include/w1-eeprom.h                                |  33 +++
 include/w1.h                                       |  37 ++++
 48 files changed, 1295 insertions(+)
 create mode 100644 cmd/w1.c
 create mode 040000 doc/device-tree-bindings/w1-eeprom
 create mode 100644 doc/device-tree-bindings/w1-eeprom/ds24xxx.txt
 create mode 100644 doc/device-tree-bindings/w1-eeprom/eep_sandbox.txt
 create mode 040000 doc/device-tree-bindings/w1
 create mode 100644 doc/device-tree-bindings/w1/w1-gpio.txt
 create mode 040000 drivers/w1-eeprom
 create mode 100644 drivers/w1-eeprom/Kconfig
 create mode 100644 drivers/w1-eeprom/Makefile
 create mode 100644 drivers/w1-eeprom/ds24xxx.c
 create mode 100644 drivers/w1-eeprom/eep_sandbox.c
 create mode 100644 drivers/w1-eeprom/w1-eeprom-uclass.c
 create mode 040000 drivers/w1
 create mode 100644 drivers/w1/Kconfig
 create mode 100644 drivers/w1/Makefile
 create mode 100644 drivers/w1/w1-gpio.c
 create mode 100644 drivers/w1/w1-uclass.c
 create mode 100644 include/w1-eeprom.h
 create mode 100644 include/w1.h

-- 
2.7.4

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

* [U-Boot] [PATCH v3 01/34] w1: Add 1-Wire uclass
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
@ 2018-08-20 14:25 ` Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 02/34] w1: Add 1-Wire gpio driver Eugen Hristev
                   ` (32 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:25 UTC (permalink / raw)
  To: u-boot

From: Maxime Ripard <maxime.ripard@free-electrons.com>

We might want to use 1-Wire devices connected on boards such as EEPROMs in
U-Boot.

Provide a framework to be able to do that.

Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
[eugen.hristev at microchip.com: reworked]
Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 drivers/Kconfig        |   2 +
 drivers/Makefile       |   1 +
 drivers/w1/Kconfig     |  18 ++++
 drivers/w1/Makefile    |   1 +
 drivers/w1/w1-uclass.c | 236 +++++++++++++++++++++++++++++++++++++++++++++++++
 include/dm/uclass-id.h |   1 +
 include/w1.h           |  36 ++++++++
 7 files changed, 295 insertions(+)
 create mode 040000 drivers/w1
 create mode 100644 drivers/w1/Kconfig
 create mode 100644 drivers/w1/Makefile
 create mode 100644 drivers/w1/w1-uclass.c
 create mode 100644 include/w1.h

diff --git a/drivers/Kconfig b/drivers/Kconfig
index 9e21b28..2cae829 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -102,6 +102,8 @@ source "drivers/usb/Kconfig"
 
 source "drivers/video/Kconfig"
 
+source "drivers/w1/Kconfig"
+
 source "drivers/watchdog/Kconfig"
 
 config PHYS_TO_BUS
diff --git a/drivers/Makefile b/drivers/Makefile
index a213ea9..728380b 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -101,6 +101,7 @@ obj-y += input/
 obj-y += soc/
 obj-$(CONFIG_REMOTEPROC) += remoteproc/
 obj-y += thermal/
+obj-$(CONFIG_W1) += w1/
 
 obj-$(CONFIG_MACH_PIC32) += ddr/microchip/
 endif
diff --git a/drivers/w1/Kconfig b/drivers/w1/Kconfig
new file mode 100644
index 0000000..64b27c6
--- /dev/null
+++ b/drivers/w1/Kconfig
@@ -0,0 +1,18 @@
+#
+# W1 subsystem configuration
+#
+
+menu "1-Wire support"
+
+config W1
+	bool "Enable 1-wire controllers support"
+	default no
+	depends on DM
+	help
+	  Support for the Dallas 1-Wire bus.
+
+if W1
+
+endif
+
+endmenu
diff --git a/drivers/w1/Makefile b/drivers/w1/Makefile
new file mode 100644
index 0000000..f81693b
--- /dev/null
+++ b/drivers/w1/Makefile
@@ -0,0 +1 @@
+obj-$(CONFIG_W1) += w1-uclass.o
diff --git a/drivers/w1/w1-uclass.c b/drivers/w1/w1-uclass.c
new file mode 100644
index 0000000..44759fe
--- /dev/null
+++ b/drivers/w1/w1-uclass.c
@@ -0,0 +1,236 @@
+// SPDX-License-Identifier:	GPL-2.0+
+/*
+ *
+ * Copyright (c) 2015 Free Electrons
+ * Copyright (c) 2015 NextThing Co.
+ * Copyright (c) 2018 Microchip Technology, Inc.
+ *
+ * Maxime Ripard <maxime.ripard@free-electrons.com>
+ * Eugen Hristev <eugen.hristev@microchip.com>
+ *
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <w1.h>
+
+#include <dm/device-internal.h>
+
+#define W1_MATCH_ROM	0x55
+#define W1_SKIP_ROM	0xcc
+#define W1_SEARCH	0xf0
+
+struct w1_bus {
+	u64	search_id;
+};
+
+static int w1_enumerate(struct udevice *bus)
+{
+	const struct w1_ops *ops = device_get_ops(bus);
+	struct w1_bus *w1 = dev_get_uclass_priv(bus);
+	u64 last_rn, rn = w1->search_id, tmp64;
+	bool last_device = false;
+	int search_bit, desc_bit = 64;
+	int last_zero = -1;
+	u8 triplet_ret = 0;
+	int i;
+
+	if (!ops->reset || !ops->write_byte || !ops->triplet)
+		return -ENOSYS;
+
+	while (!last_device) {
+		last_rn = rn;
+		rn = 0;
+
+		/*
+		 * Reset bus and all 1-wire device state machines
+		 * so they can respond to our requests.
+		 *
+		 * Return 0 - device(s) present, 1 - no devices present.
+		 */
+		if (ops->reset(bus)) {
+			debug("%s: No devices present on the wire.\n",
+			      __func__);
+			break;
+		}
+
+		/* Start the search */
+		ops->write_byte(bus, W1_SEARCH);
+		for (i = 0; i < 64; ++i) {
+			/* Determine the direction/search bit */
+			if (i == desc_bit)
+				/* took the 0 path last time, so take the 1 path */
+				search_bit = 1;
+			else if (i > desc_bit)
+				/* take the 0 path on the next branch */
+				search_bit = 0;
+			else
+				search_bit = ((last_rn >> i) & 0x1);
+
+			/* Read two bits and write one bit */
+			triplet_ret = ops->triplet(bus, search_bit);
+
+			/* quit if no device responded */
+			if ((triplet_ret & 0x03) == 0x03)
+				break;
+
+			/* If both directions were valid, and we took the 0 path... */
+			if (triplet_ret == 0)
+				last_zero = i;
+
+			/* extract the direction taken & update the device number */
+			tmp64 = (triplet_ret >> 2);
+			rn |= (tmp64 << i);
+		}
+
+		/* last device or error, aborting here */
+		if ((triplet_ret & 0x03) == 0x03)
+			last_device = true;
+
+		if ((triplet_ret & 0x03) != 0x03) {
+			if (desc_bit == last_zero || last_zero < 0) {
+				last_device = 1;
+				w1->search_id = 0;
+			} else {
+				w1->search_id = rn;
+			}
+			desc_bit = last_zero;
+
+			debug("%s: Detected new device 0x%llx (family 0x%x)\n",
+			      bus->name, rn, (u8)(rn & 0xff));
+		}
+	}
+
+	return 0;
+}
+
+int w1_get_bus(int busnum, struct udevice **busp)
+{
+	int ret, i = 0;
+
+	struct udevice *dev;
+
+	for (ret = uclass_first_device(UCLASS_W1, &dev);
+	     !ret;
+	     uclass_next_device(&dev), i++) {
+		if (ret) {
+			debug("Cannot find w1 bus %d\n", busnum);
+			return ret;
+		}
+		if (i == busnum) {
+			*busp = dev;
+			return 0;
+		}
+	}
+	return ret;
+}
+
+u8 w1_get_device_family(struct udevice *dev)
+{
+	struct w1_device *w1 = dev_get_parent_platdata(dev);
+
+	return w1->id & 0xff;
+}
+
+int w1_reset_select(struct udevice *dev)
+{
+	struct w1_device *w1 = dev_get_parent_platdata(dev);
+	struct udevice *bus = dev_get_parent(dev);
+	const struct w1_ops *ops = device_get_ops(bus);
+	int i;
+
+	if (!ops->reset || !ops->write_byte)
+		return -ENOSYS;
+
+	ops->reset(bus);
+
+	ops->write_byte(bus, W1_MATCH_ROM);
+
+	for (i = 0; i < sizeof(w1->id); i++)
+		ops->write_byte(bus, (w1->id >> (i * 8)) & 0xff);
+
+	return 0;
+}
+
+int w1_read_byte(struct udevice *dev)
+{
+	struct udevice *bus = dev_get_parent(dev);
+	const struct w1_ops *ops = device_get_ops(bus);
+
+	if (!ops->read_byte)
+		return -ENOSYS;
+
+	return ops->read_byte(bus);
+}
+
+int w1_read_buf(struct udevice *dev, u8 *buf, unsigned int count)
+{
+	int i, ret;
+
+	for (i = 0; i < count; i++) {
+		ret = w1_read_byte(dev);
+		if (ret < 0)
+			return ret;
+
+		buf[i] = ret & 0xff;
+	}
+
+	return 0;
+}
+
+int w1_write_byte(struct udevice *dev, u8 byte)
+{
+	struct udevice *bus = dev_get_parent(dev);
+	const struct w1_ops *ops = device_get_ops(bus);
+
+	if (!ops->write_byte)
+		return -ENOSYS;
+
+	ops->write_byte(bus, byte);
+
+	return 0;
+}
+
+static int w1_post_probe(struct udevice *bus)
+{
+	w1_enumerate(bus);
+
+	return 0;
+}
+
+int w1_init(void)
+{
+	struct udevice *bus;
+	struct uclass *uc;
+	int ret;
+
+	ret = uclass_get(UCLASS_W1, &uc);
+	if (ret)
+		return ret;
+
+	uclass_foreach_dev(bus, uc) {
+		ret = device_probe(bus);
+		if (ret == -ENODEV) {	/* No such device. */
+			printf("W1 controller not available.\n");
+			continue;
+		}
+
+		if (ret) {		/* Other error. */
+			printf("W1 controller probe failed.\n");
+			continue;
+		}
+	}
+	return 0;
+}
+
+UCLASS_DRIVER(w1) = {
+	.name		= "w1",
+	.id		= UCLASS_W1,
+	.flags		= DM_UC_FLAG_SEQ_ALIAS,
+	.per_device_auto_alloc_size	= sizeof(struct w1_bus),
+	.post_probe	= w1_post_probe,
+#if CONFIG_IS_ENABLED(OF_CONTROL)
+	.post_bind	= dm_scan_fdt_dev,
+#endif
+	.per_child_platdata_auto_alloc_size     = sizeof(struct w1_device),
+};
diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h
index d7f9df3..8eca9dc 100644
--- a/include/dm/uclass-id.h
+++ b/include/dm/uclass-id.h
@@ -89,6 +89,7 @@ enum uclass_id {
 	UCLASS_VIDEO,		/* Video or LCD device */
 	UCLASS_VIDEO_BRIDGE,	/* Video bridge, e.g. DisplayPort to LVDS */
 	UCLASS_VIDEO_CONSOLE,	/* Text console driver for video device */
+	UCLASS_W1,		/* Dallas 1-Wire bus */
 	UCLASS_WDT,		/* Watchdot Timer driver */
 
 	UCLASS_COUNT,
diff --git a/include/w1.h b/include/w1.h
new file mode 100644
index 0000000..b36e0f8
--- /dev/null
+++ b/include/w1.h
@@ -0,0 +1,36 @@
+/* SPDX-License-Identifier:	GPL-2.0+
+ *
+ * Copyright (c) 2015 Free Electrons
+ * Copyright (c) 2015 NextThing Co
+ *
+ */
+
+#ifndef __W1_H
+#define __W1_H
+
+#include <dm.h>
+
+#define W1_FAMILY_DS24B33	0x23
+#define W1_FAMILY_DS2431	0x2d
+
+struct w1_device {
+	u64	id;
+};
+
+struct w1_ops {
+	u8	(*read_byte)(struct udevice *dev);
+	bool	(*reset)(struct udevice *dev);
+	u8	(*triplet)(struct udevice *dev, bool bdir);
+	void	(*write_byte)(struct udevice *dev, u8 byte);
+};
+
+int w1_get_bus(int busnum, struct udevice **busp);
+u8 w1_get_device_family(struct udevice *dev);
+
+int w1_read_buf(struct udevice *dev, u8 *buf, unsigned int count);
+int w1_read_byte(struct udevice *dev);
+int w1_reset_select(struct udevice *dev);
+int w1_write_buf(struct udevice *dev, u8 *buf, unsigned int count);
+int w1_write_byte(struct udevice *dev, u8 byte);
+
+#endif
-- 
2.7.4

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

* [U-Boot] [PATCH v3 02/34] w1: Add 1-Wire gpio driver
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 01/34] w1: Add 1-Wire uclass Eugen Hristev
@ 2018-08-20 14:25 ` Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 03/34] dt-bindings: W1: w1-gpio: added bindings for w1-gpio Eugen Hristev
                   ` (31 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:25 UTC (permalink / raw)
  To: u-boot

From: Maxime Ripard <maxime.ripard@free-electrons.com>

Add a bus driver for bitbanging a 1-Wire bus over a GPIO.

Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
[eugen.hristev at microchip.com: fixed some issues]
Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 drivers/w1/Kconfig   |   7 ++
 drivers/w1/Makefile  |   2 +
 drivers/w1/w1-gpio.c | 176 +++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 185 insertions(+)
 create mode 100644 drivers/w1/w1-gpio.c

diff --git a/drivers/w1/Kconfig b/drivers/w1/Kconfig
index 64b27c6..d6e0457 100644
--- a/drivers/w1/Kconfig
+++ b/drivers/w1/Kconfig
@@ -13,6 +13,13 @@ config W1
 
 if W1
 
+config W1_GPIO
+	bool "Enable 1-wire GPIO bitbanging"
+	default no
+	depends on DM_GPIO
+	help
+	  Emulate a 1-wire bus using a GPIO.
+
 endif
 
 endmenu
diff --git a/drivers/w1/Makefile b/drivers/w1/Makefile
index f81693b..7fd8697 100644
--- a/drivers/w1/Makefile
+++ b/drivers/w1/Makefile
@@ -1 +1,3 @@
 obj-$(CONFIG_W1) += w1-uclass.o
+
+obj-$(CONFIG_W1_GPIO) += w1-gpio.o
diff --git a/drivers/w1/w1-gpio.c b/drivers/w1/w1-gpio.c
new file mode 100644
index 0000000..5e5d6b3
--- /dev/null
+++ b/drivers/w1/w1-gpio.c
@@ -0,0 +1,176 @@
+/* SPDX-License-Identifier:	GPL-2.0+
+ *
+ * Copyright (c) 2015 Free Electrons
+ * Copyright (c) 2015 NextThing Co
+ *
+ * Maxime Ripard <maxime.ripard@free-electrons.com>
+ *
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <w1.h>
+
+#include <asm/gpio.h>
+
+#define W1_TIMING_A	6
+#define W1_TIMING_B	64
+#define W1_TIMING_C	60
+#define W1_TIMING_D	10
+#define W1_TIMING_E	9
+#define W1_TIMING_F	55
+#define W1_TIMING_G	0
+#define W1_TIMING_H	480
+#define W1_TIMING_I	70
+#define W1_TIMING_J	410
+
+struct w1_gpio_pdata {
+	struct gpio_desc	gpio;
+	u64			search_id;
+};
+
+static bool w1_gpio_read_bit(struct udevice *dev)
+{
+	struct w1_gpio_pdata *pdata = dev_get_platdata(dev);
+	int val;
+
+	dm_gpio_set_dir_flags(&pdata->gpio, GPIOD_IS_OUT);
+	udelay(W1_TIMING_A);
+
+	dm_gpio_set_dir_flags(&pdata->gpio, GPIOD_IS_IN);
+	udelay(W1_TIMING_E);
+
+	val = dm_gpio_get_value(&pdata->gpio);
+	if (val < 0)
+		debug("error in retrieving GPIO value");
+	udelay(W1_TIMING_F);
+
+	return val;
+}
+
+static u8 w1_gpio_read_byte(struct udevice *dev)
+{
+	int i;
+	u8 ret = 0;
+
+	for (i = 0; i < 8; ++i)
+		ret |= (w1_gpio_read_bit(dev) ? 1 : 0) << i;
+
+	return ret;
+}
+
+static void w1_gpio_write_bit(struct udevice *dev, bool bit)
+{
+	struct w1_gpio_pdata *pdata = dev_get_platdata(dev);
+
+	dm_gpio_set_dir_flags(&pdata->gpio, GPIOD_IS_OUT);
+
+	bit ? udelay(W1_TIMING_A) : udelay(W1_TIMING_C);
+
+	dm_gpio_set_value(&pdata->gpio, 1);
+
+	bit ? udelay(W1_TIMING_B) : udelay(W1_TIMING_D);
+}
+
+static void w1_gpio_write_byte(struct udevice *dev, u8 byte)
+{
+	int i;
+
+	for (i = 0; i < 8; ++i)
+		w1_gpio_write_bit(dev, (byte >> i) & 0x1);
+}
+
+static bool w1_gpio_reset(struct udevice *dev)
+{
+	struct w1_gpio_pdata *pdata = dev_get_platdata(dev);
+	int val;
+
+	/* initiate the reset pulse. first we must pull the bus to low */
+	dm_gpio_set_dir_flags(&pdata->gpio, GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE);
+	udelay(W1_TIMING_G);
+
+	dm_gpio_set_value(&pdata->gpio, 0);
+	/* wait for the specified time with the bus kept low */
+	udelay(W1_TIMING_H);
+
+	/* now we must read the presence pulse */
+	dm_gpio_set_dir_flags(&pdata->gpio, GPIOD_IS_IN);
+	udelay(W1_TIMING_I);
+
+	val = dm_gpio_get_value(&pdata->gpio);
+	if (val < 0)
+		debug("error in retrieving GPIO value");
+
+	/* if nobody pulled the bus down , it means nobody is on the bus */
+	if (val != 0)
+		return 1;
+	/* we have the bus pulled down, let's wait for the specified presence time */
+	udelay(W1_TIMING_J);
+
+	/* read again, the other end should leave the bus free */
+	val = dm_gpio_get_value(&pdata->gpio);
+	if (val < 0)
+		debug("error in retrieving GPIO value");
+
+	/* bus is not going up again, so we have an error */
+	if (val != 1)
+		return 1;
+
+	/* all good, presence detected */
+	return 0;
+}
+
+static u8 w1_gpio_triplet(struct udevice *dev, bool bdir)
+{
+	u8 id_bit   = w1_gpio_read_bit(dev);
+	u8 comp_bit = w1_gpio_read_bit(dev);
+	u8 retval;
+
+	if (id_bit && comp_bit)
+		return 0x03;  /* error */
+
+	if (!id_bit && !comp_bit) {
+		/* Both bits are valid, take the direction given */
+		retval = bdir ? 0x04 : 0;
+	} else {
+		/* Only one bit is valid, take that direction */
+		bdir = id_bit;
+		retval = id_bit ? 0x05 : 0x02;
+	}
+
+	w1_gpio_write_bit(dev, bdir);
+	return retval;
+}
+
+static const struct w1_ops w1_gpio_ops = {
+	.read_byte	= w1_gpio_read_byte,
+	.reset		= w1_gpio_reset,
+	.triplet	= w1_gpio_triplet,
+	.write_byte	= w1_gpio_write_byte,
+};
+
+static int w1_gpio_ofdata_to_platdata(struct udevice *dev)
+{
+	struct w1_gpio_pdata *pdata = dev_get_platdata(dev);
+	int ret;
+
+	ret = gpio_request_by_name(dev, "gpios", 0, &pdata->gpio, 0);
+	if (ret < 0)
+		printf("Error claiming GPIO %d\n", ret);
+
+	return ret;
+};
+
+static const struct udevice_id w1_gpio_id[] = {
+	{ "w1-gpio", 0 },
+	{ },
+};
+
+U_BOOT_DRIVER(w1_gpio_drv) = {
+	.id				= UCLASS_W1,
+	.name				= "w1_gpio_drv",
+	.of_match			= w1_gpio_id,
+	.ofdata_to_platdata		= w1_gpio_ofdata_to_platdata,
+	.ops				= &w1_gpio_ops,
+	.platdata_auto_alloc_size	= sizeof(struct w1_gpio_pdata),
+};
-- 
2.7.4

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

* [U-Boot] [PATCH v3 03/34] dt-bindings: W1: w1-gpio: added bindings for w1-gpio
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 01/34] w1: Add 1-Wire uclass Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 02/34] w1: Add 1-Wire gpio driver Eugen Hristev
@ 2018-08-20 14:25 ` Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 04/34] W1-EEPROM: Add an W1-EEPROM uclass for 1 wire EEPROMs Eugen Hristev
                   ` (30 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:25 UTC (permalink / raw)
  To: u-boot

Added bindings specification for bitbanged gpio driver for Dallas
one wire protocol

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 doc/device-tree-bindings/w1/w1-gpio.txt | 40 +++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)
 create mode 040000 doc/device-tree-bindings/w1
 create mode 100644 doc/device-tree-bindings/w1/w1-gpio.txt

diff --git a/doc/device-tree-bindings/w1/w1-gpio.txt b/doc/device-tree-bindings/w1/w1-gpio.txt
new file mode 100644
index 0000000..5a58244
--- /dev/null
+++ b/doc/device-tree-bindings/w1/w1-gpio.txt
@@ -0,0 +1,40 @@
+W1 gpio device binding - one wire protocol over bitbanged gpio
+=======================
+
+
+Child nodes are required in device tree. The driver will detect
+the devices serial number and then search in the child nodes in the device tree
+for the proper node and try to match it with the device.
+
+Also check doc/device-tree-bindings/w1-eeprom for possible child nodes drivers
+
+Driver:
+- drivers/w1/w1-gpio.c
+
+Software w1 device-tree node properties:
+Required:
+* compatible = "w1-gpio";
+* gpios = <...>;
+	This is the gpio used for one wire protocol, using bitbanging
+
+Optional:
+* none
+
+Example:
+
+onewire_tm: onewire {
+		compatible = "w1-gpio";
+		gpios = <&pioA 32 0>;
+};
+
+Example with child:
+
+onewire_tm: onewire {
+		compatible = "w1-gpio";
+		gpios = <&pioA 32 0>;
+
+		eeprom1: eeprom at 0 {
+			compatible = "maxim,ds24xxx";
+		}
+};
+
-- 
2.7.4

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

* [U-Boot] [PATCH v3 04/34] W1-EEPROM: Add an W1-EEPROM uclass for 1 wire EEPROMs
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (2 preceding siblings ...)
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 03/34] dt-bindings: W1: w1-gpio: added bindings for w1-gpio Eugen Hristev
@ 2018-08-20 14:25 ` Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 05/34] w1: identify devices with w1-eeprom uclass Eugen Hristev
                   ` (29 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:25 UTC (permalink / raw)
  To: u-boot

From: Maxime Ripard <maxime.ripard@free-electrons.com>

We might want to access data stored onto one wire EEPROMs.
Create a framework to provide a consistent API.

Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
[eugen.hristev at microchip.com: reworked patch]
Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 drivers/Kconfig                      |   2 +
 drivers/Makefile                     |   1 +
 drivers/w1-eeprom/Kconfig            |  17 +++++
 drivers/w1-eeprom/Makefile           |   2 +
 drivers/w1-eeprom/w1-eeprom-uclass.c | 116 +++++++++++++++++++++++++++++++++++
 include/dm/uclass-id.h               |   1 +
 include/w1-eeprom.h                  |  33 ++++++++++
 7 files changed, 172 insertions(+)
 create mode 040000 drivers/w1-eeprom
 create mode 100644 drivers/w1-eeprom/Kconfig
 create mode 100644 drivers/w1-eeprom/Makefile
 create mode 100644 drivers/w1-eeprom/w1-eeprom-uclass.c
 create mode 100644 include/w1-eeprom.h

diff --git a/drivers/Kconfig b/drivers/Kconfig
index 2cae829..386af75 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -104,6 +104,8 @@ source "drivers/video/Kconfig"
 
 source "drivers/w1/Kconfig"
 
+source "drivers/w1-eeprom/Kconfig"
+
 source "drivers/watchdog/Kconfig"
 
 config PHYS_TO_BUS
diff --git a/drivers/Makefile b/drivers/Makefile
index 728380b..de67a17 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -102,6 +102,7 @@ obj-y += soc/
 obj-$(CONFIG_REMOTEPROC) += remoteproc/
 obj-y += thermal/
 obj-$(CONFIG_W1) += w1/
+obj-$(CONFIG_W1_EEPROM) += w1-eeprom/
 
 obj-$(CONFIG_MACH_PIC32) += ddr/microchip/
 endif
diff --git a/drivers/w1-eeprom/Kconfig b/drivers/w1-eeprom/Kconfig
new file mode 100644
index 0000000..d5ddc80
--- /dev/null
+++ b/drivers/w1-eeprom/Kconfig
@@ -0,0 +1,17 @@
+#
+# EEPROM subsystem configuration
+#
+
+menu "1-wire EEPROM support"
+
+config W1_EEPROM
+	bool "Enable support for EEPROMs on 1wire interface"
+	depends on DM
+	help
+	  Support for the EEPROMs connected on 1-wire Dallas protocol interface
+
+if W1_EEPROM
+
+endif
+
+endmenu
diff --git a/drivers/w1-eeprom/Makefile b/drivers/w1-eeprom/Makefile
new file mode 100644
index 0000000..b72950e
--- /dev/null
+++ b/drivers/w1-eeprom/Makefile
@@ -0,0 +1,2 @@
+obj-$(CONFIG_W1_EEPROM) += w1-eeprom-uclass.o
+
diff --git a/drivers/w1-eeprom/w1-eeprom-uclass.c b/drivers/w1-eeprom/w1-eeprom-uclass.c
new file mode 100644
index 0000000..1e5c1b1
--- /dev/null
+++ b/drivers/w1-eeprom/w1-eeprom-uclass.c
@@ -0,0 +1,116 @@
+// SPDX-License-Identifier:	GPL-2.0+
+/*
+ *
+ * Copyright (c) 2015 Free Electrons
+ * Copyright (c) 2015 NextThing Co.
+ * Copyright (c) 2018 Microchip Technology, Inc.
+ *
+ * Maxime Ripard <maxime.ripard@free-electrons.com>
+ * Eugen Hristev <eugen.hristev@microchip.com>
+ *
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <w1.h>
+#include <w1-eeprom.h>
+
+#include <dm/device-internal.h>
+
+int w1_eeprom_read_buf(struct udevice *dev, unsigned int offset,
+		       u8 *buf, unsigned int count)
+{
+	const struct w1_eeprom_ops *ops = device_get_ops(dev);
+	u64 id = 0;
+	int ret;
+
+	if (!ops->read_buf)
+		return -ENOSYS;
+
+	ret = w1_eeprom_get_id(dev, &id);
+	if (ret)
+		return ret;
+	if (!id)
+		return -ENODEV;
+
+	return ops->read_buf(dev, offset, buf, count);
+}
+
+int w1_eeprom_register_new_device(u64 id)
+{
+	u8 family = id & 0xff;
+	int ret;
+	struct udevice *dev;
+
+	for (ret = uclass_first_device(UCLASS_W1_EEPROM, &dev);
+	     !ret && dev;
+	     uclass_next_device(&dev)) {
+		if (ret || !dev) {
+			debug("cannot find w1 eeprom dev\n");
+			return ret;
+		}
+		if (dev_get_driver_data(dev) == family) {
+			struct w1_device *w1;
+
+			w1 = dev_get_parent_platdata(dev);
+			if (w1->id) /* device already in use */
+				continue;
+			w1->id = id;
+			debug("%s: Match found: %s:%s %llx\n", __func__,
+			      dev->name, dev->driver->name, id);
+			return 0;
+		}
+	}
+
+	debug("%s: No matches found: error %d\n", __func__, ret);
+
+	return ret;
+}
+
+int w1_eeprom_get_id(struct udevice *dev, u64 *id)
+{
+	struct w1_device *w1 = dev_get_parent_platdata(dev);
+
+	if (!w1)
+		return -ENODEV;
+	*id = w1->id;
+
+	return 0;
+}
+
+UCLASS_DRIVER(w1_eeprom) = {
+	.name		= "w1_eeprom",
+	.id		= UCLASS_W1_EEPROM,
+	.flags		= DM_UC_FLAG_SEQ_ALIAS,
+#if CONFIG_IS_ENABLED(OF_CONTROL)
+	.post_bind	= dm_scan_fdt_dev,
+#endif
+};
+
+int w1_eeprom_dm_init(void)
+{
+	struct udevice *dev;
+	struct uclass *uc;
+	int ret;
+
+	ret = uclass_get(UCLASS_W1_EEPROM, &uc);
+	if (ret) {
+		debug ("W1_EEPROM uclass not available\n");
+		return ret;
+	}
+
+	uclass_foreach_dev(dev, uc) {
+		ret = device_probe(dev);
+		if (ret == -ENODEV) {	/* No such device. */
+			debug("W1_EEPROM not available.\n");
+			continue;
+		}
+
+		if (ret) {		/* Other error. */
+			printf("W1_EEPROM probe failed, error %d\n", ret);
+			continue;
+		}
+	}
+
+	return 0;
+}
diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h
index 8eca9dc..06ff339 100644
--- a/include/dm/uclass-id.h
+++ b/include/dm/uclass-id.h
@@ -90,6 +90,7 @@ enum uclass_id {
 	UCLASS_VIDEO_BRIDGE,	/* Video bridge, e.g. DisplayPort to LVDS */
 	UCLASS_VIDEO_CONSOLE,	/* Text console driver for video device */
 	UCLASS_W1,		/* Dallas 1-Wire bus */
+	UCLASS_W1_EEPROM,	/* one-wire EEPROMs */
 	UCLASS_WDT,		/* Watchdot Timer driver */
 
 	UCLASS_COUNT,
diff --git a/include/w1-eeprom.h b/include/w1-eeprom.h
new file mode 100644
index 0000000..2233736
--- /dev/null
+++ b/include/w1-eeprom.h
@@ -0,0 +1,33 @@
+/* SPDX-License-Identifier:	GPL-2.0+
+ *
+ * Copyright (c) 2015 Free Electrons
+ * Copyright (c) 2015 NextThing Co
+ * Copyright (c) 2018 Microchip Technology, Inc.
+ *
+ */
+
+#ifndef __W1_EEPROM_H
+#define __W1_EEPROM_H
+
+struct udevice;
+
+struct w1_eeprom_ops {
+	/*
+	 * Reads a buff from the given EEPROM memory, starting at
+	 * given offset and place the results into the given buffer.
+	 * Should read given count of bytes.
+	 * Should return 0 on success, and normal error.h on error
+	 */
+	int	(*read_buf)(struct udevice *dev, unsigned int offset,
+			    u8 *buf, unsigned int count);
+};
+
+int w1_eeprom_read_buf(struct udevice *dev, unsigned int offset,
+		       u8 *buf, unsigned int count);
+
+int w1_eeprom_dm_init(void);
+
+int w1_eeprom_register_new_device(u64 id);
+
+int w1_eeprom_get_id(struct udevice *dev, u64 *id);
+#endif
-- 
2.7.4

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

* [U-Boot] [PATCH v3 05/34] w1: identify devices with w1-eeprom uclass
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (3 preceding siblings ...)
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 04/34] W1-EEPROM: Add an W1-EEPROM uclass for 1 wire EEPROMs Eugen Hristev
@ 2018-08-20 14:25 ` Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 06/34] W1-EEPROM: add support for Maxim DS24 eeprom families Eugen Hristev
                   ` (28 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:25 UTC (permalink / raw)
  To: u-boot

When a new device is discovered, this may be a w1 eeprom device.
Attempt to find the proper node and driver from the w1-eeprom subsystem.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 drivers/w1/w1-uclass.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/w1/w1-uclass.c b/drivers/w1/w1-uclass.c
index 44759fe..aecf7fe 100644
--- a/drivers/w1/w1-uclass.c
+++ b/drivers/w1/w1-uclass.c
@@ -13,6 +13,7 @@
 #include <common.h>
 #include <dm.h>
 #include <w1.h>
+#include <w1-eeprom.h>
 
 #include <dm/device-internal.h>
 
@@ -98,6 +99,9 @@ static int w1_enumerate(struct udevice *bus)
 
 			debug("%s: Detected new device 0x%llx (family 0x%x)\n",
 			      bus->name, rn, (u8)(rn & 0xff));
+
+			/* attempt to register as w1-eeprom device */
+			w1_eeprom_register_new_device(rn);
 		}
 	}
 
-- 
2.7.4

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

* [U-Boot] [PATCH v3 06/34] W1-EEPROM: add support for Maxim DS24 eeprom families
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (4 preceding siblings ...)
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 05/34] w1: identify devices with w1-eeprom uclass Eugen Hristev
@ 2018-08-20 14:25 ` Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 07/34] dt-bindings: w1-eeprom: ds24xxx: create bindings Eugen Hristev
                   ` (27 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:25 UTC (permalink / raw)
  To: u-boot

From: Maxime Ripard <maxime.ripard@free-electrons.com>

Add a driver that supports Maxim 1 wire EEPROMs families
DS24B33 and DS2431.
Can be extended for other families as well.

Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
[eugen.hristev at microchip.com: reworked driver]
Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 drivers/w1-eeprom/Kconfig   |  6 +++++
 drivers/w1-eeprom/Makefile  |  2 ++
 drivers/w1-eeprom/ds24xxx.c | 55 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 63 insertions(+)
 create mode 100644 drivers/w1-eeprom/ds24xxx.c

diff --git a/drivers/w1-eeprom/Kconfig b/drivers/w1-eeprom/Kconfig
index d5ddc80..20ec549 100644
--- a/drivers/w1-eeprom/Kconfig
+++ b/drivers/w1-eeprom/Kconfig
@@ -12,6 +12,12 @@ config W1_EEPROM
 
 if W1_EEPROM
 
+config W1_EEPROM_DS24XXX
+	bool "Enable Maxim DS24 families EEPROM support"
+	depends on W1
+	help
+	  Maxim DS24 EEPROMs 1-Wire EEPROM support
+
 endif
 
 endmenu
diff --git a/drivers/w1-eeprom/Makefile b/drivers/w1-eeprom/Makefile
index b72950e..3f4aa13 100644
--- a/drivers/w1-eeprom/Makefile
+++ b/drivers/w1-eeprom/Makefile
@@ -1,2 +1,4 @@
 obj-$(CONFIG_W1_EEPROM) += w1-eeprom-uclass.o
 
+obj-$(CONFIG_W1_EEPROM_DS24XXX) += ds24xxx.o
+
diff --git a/drivers/w1-eeprom/ds24xxx.c b/drivers/w1-eeprom/ds24xxx.c
new file mode 100644
index 0000000..56186e5
--- /dev/null
+++ b/drivers/w1-eeprom/ds24xxx.c
@@ -0,0 +1,55 @@
+// SPDX-License-Identifier:	GPL-2.0+
+/*
+ *
+ * Copyright (c) 2015 Free Electrons
+ * Copyright (c) 2015 NextThing Co
+ * Copyright (c) 2018 Microchip Technology, Inc.
+ *
+ */
+
+#include <common.h>
+#include <linux/err.h>
+#include <dm.h>
+#include <w1-eeprom.h>
+#include <w1.h>
+
+#define W1_F2D_READ_EEPROM	0xf0
+
+static int ds24xxx_read_buf(struct udevice *dev, unsigned int offset,
+			    u8 *buf, unsigned int count)
+{
+	w1_reset_select(dev);
+
+	w1_write_byte(dev, W1_F2D_READ_EEPROM);
+	w1_write_byte(dev, offset & 0xff);
+	w1_write_byte(dev, offset >> 8);
+
+	return w1_read_buf(dev, buf, count);
+}
+
+static int ds24xxx_probe(struct udevice *dev)
+{
+	struct w1_device *w1;
+
+	w1 = dev_get_platdata(dev);
+	w1->id = 0;
+	return 0;
+}
+
+static const struct w1_eeprom_ops ds24xxx_ops = {
+	.read_buf	= ds24xxx_read_buf,
+};
+
+static const struct udevice_id ds24xxx_id[] = {
+	{ .compatible = "maxim,ds24b33", .data = W1_FAMILY_DS24B33 },
+	{ .compatible = "maxim,ds2431", .data = W1_FAMILY_DS2431 },
+	{ },
+};
+
+U_BOOT_DRIVER(ds24xxx) = {
+	.name		= "ds24xxx",
+	.id		= UCLASS_W1_EEPROM,
+	.of_match	= ds24xxx_id,
+	.ops		= &ds24xxx_ops,
+	.probe		= ds24xxx_probe,
+};
-- 
2.7.4

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

* [U-Boot] [PATCH v3 07/34] dt-bindings: w1-eeprom: ds24xxx: create bindings
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (5 preceding siblings ...)
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 06/34] W1-EEPROM: add support for Maxim DS24 eeprom families Eugen Hristev
@ 2018-08-20 14:25 ` Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 08/34] W1-EEPROM: add sandbox driver Eugen Hristev
                   ` (26 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:25 UTC (permalink / raw)
  To: u-boot

Bindings for Maxim's ds24 onewire EEPROM families driver

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 doc/device-tree-bindings/w1-eeprom/ds24xxx.txt | 37 ++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)
 create mode 040000 doc/device-tree-bindings/w1-eeprom
 create mode 100644 doc/device-tree-bindings/w1-eeprom/ds24xxx.txt

diff --git a/doc/device-tree-bindings/w1-eeprom/ds24xxx.txt b/doc/device-tree-bindings/w1-eeprom/ds24xxx.txt
new file mode 100644
index 0000000..2e91be9
--- /dev/null
+++ b/doc/device-tree-bindings/w1-eeprom/ds24xxx.txt
@@ -0,0 +1,37 @@
+Maxim DS24 families driver device binding - one wire protocol EEPROMS from Maxim
+=======================
+
+This memory needs to be connected to a onewire bus, as a child node.
+The bus will read the device serial number and match this node with a found
+device on the bus
+Also check doc/device-tree-bindings/w1 for onewire bus drivers
+
+Driver:
+- drivers/w1-eeprom/ds24xxx.c
+
+Software ds24xxx device-tree node properties:
+Required:
+* compatible = "maxim,ds24b33"
+or
+* compatible = "maxim,ds2431"
+Further memories can be added.
+
+Optional:
+* none
+
+Example:
+	eeprom1: eeprom at 0 {
+		compatible = "maxim,ds24xxx";
+	}
+
+Example with parent bus:
+
+onewire_tm: onewire {
+		compatible = "w1-gpio";
+		gpios = <&pioA 32 0>;
+
+		eeprom1: eeprom at 0 {
+			compatible = "maxim,ds24xxx";
+		}
+};
+
-- 
2.7.4

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

* [U-Boot] [PATCH v3 08/34] W1-EEPROM: add sandbox driver
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (6 preceding siblings ...)
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 07/34] dt-bindings: w1-eeprom: ds24xxx: create bindings Eugen Hristev
@ 2018-08-20 14:25 ` Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 09/34] dt-bindings: w1-eeprom: eep_sandbox: create bindings Eugen Hristev
                   ` (25 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:25 UTC (permalink / raw)
  To: u-boot

Add a sandbox driver for a one wire EEPROM memory

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 drivers/w1-eeprom/Kconfig       |  6 ++++
 drivers/w1-eeprom/Makefile      |  1 +
 drivers/w1-eeprom/eep_sandbox.c | 61 +++++++++++++++++++++++++++++++++++++++++
 include/w1.h                    |  1 +
 4 files changed, 69 insertions(+)
 create mode 100644 drivers/w1-eeprom/eep_sandbox.c

diff --git a/drivers/w1-eeprom/Kconfig b/drivers/w1-eeprom/Kconfig
index 20ec549..4b7f3c4 100644
--- a/drivers/w1-eeprom/Kconfig
+++ b/drivers/w1-eeprom/Kconfig
@@ -18,6 +18,12 @@ config W1_EEPROM_DS24XXX
 	help
 	  Maxim DS24 EEPROMs 1-Wire EEPROM support
 
+config W1_EEPROM_SANDBOX
+	bool "Enable sandbox onewire EEPROM driver"
+	depends on W1
+	help
+	  Sandbox driver for a onewire EEPROM memory
+
 endif
 
 endmenu
diff --git a/drivers/w1-eeprom/Makefile b/drivers/w1-eeprom/Makefile
index 3f4aa13..03cc4c8 100644
--- a/drivers/w1-eeprom/Makefile
+++ b/drivers/w1-eeprom/Makefile
@@ -2,3 +2,4 @@ obj-$(CONFIG_W1_EEPROM) += w1-eeprom-uclass.o
 
 obj-$(CONFIG_W1_EEPROM_DS24XXX) += ds24xxx.o
 
+obj-$(CONFIG_W1_EEPROM_SANDBOX) += eep_sandbox.o
diff --git a/drivers/w1-eeprom/eep_sandbox.c b/drivers/w1-eeprom/eep_sandbox.c
new file mode 100644
index 0000000..27c7f9f
--- /dev/null
+++ b/drivers/w1-eeprom/eep_sandbox.c
@@ -0,0 +1,61 @@
+/* SPDX-License-Identifier:	GPL-2.0+
+ *
+ * Copyright (c) 2018 Microchip Technology, Inc.
+ *
+ */
+
+#include <common.h>
+#include <linux/err.h>
+#include <dm.h>
+#include <w1-eeprom.h>
+#include <w1.h>
+
+#define W1_F2D_READ_EEPROM      0xf0
+
+#define EEP_SANDBOX_SAMPLE_MEM "this is a sample EEPROM memory string."
+
+static int eep_sandbox_read_buf(struct udevice *dev, unsigned int offset,
+				u8 *buf, unsigned int count)
+{
+	/* do not allow to copy more than our maximum sample string */
+	if (offset + count < strlen(EEP_SANDBOX_SAMPLE_MEM)) {
+		offset = 0;
+		count = strlen(EEP_SANDBOX_SAMPLE_MEM);
+	}
+	strncpy((char *)buf, EEP_SANDBOX_SAMPLE_MEM, count);
+
+	/*
+	 * in case the w1 subsystem uses some different kind of sandbox testing,
+	 * like randomized gpio values , we take the buffer from there
+	 */
+
+	w1_reset_select(dev);
+
+	w1_write_byte(dev, W1_F2D_READ_EEPROM);
+	w1_write_byte(dev, offset & 0xff);
+	w1_write_byte(dev, offset >> 8);
+
+	w1_read_buf(dev, buf, count);
+
+	/*
+	 * even if read buf from w1 fails, return success as we hardcoded
+	 * the buffer.
+	 */
+	return 0;
+}
+
+static const struct w1_eeprom_ops eep_sandbox_ops = {
+	.read_buf	= eep_sandbox_read_buf,
+};
+
+static const struct udevice_id eep_sandbox_id[] = {
+	{ .compatible = "sandbox,w1-eeprom", .data = W1_FAMILY_EEP_SANDBOX },
+	{ },
+};
+
+U_BOOT_DRIVER(eep_sandbox) = {
+	.name		= "eep_sandbox",
+	.id		= UCLASS_W1_EEPROM,
+	.of_match	= eep_sandbox_id,
+	.ops		= &eep_sandbox_ops,
+};
diff --git a/include/w1.h b/include/w1.h
index b36e0f8..399177a 100644
--- a/include/w1.h
+++ b/include/w1.h
@@ -12,6 +12,7 @@
 
 #define W1_FAMILY_DS24B33	0x23
 #define W1_FAMILY_DS2431	0x2d
+#define W1_FAMILY_EEP_SANDBOX	0xfe
 
 struct w1_device {
 	u64	id;
-- 
2.7.4

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

* [U-Boot] [PATCH v3 09/34] dt-bindings: w1-eeprom: eep_sandbox: create bindings
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (7 preceding siblings ...)
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 08/34] W1-EEPROM: add sandbox driver Eugen Hristev
@ 2018-08-20 14:25 ` Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 10/34] w1: add command for onewire protocol Eugen Hristev
                   ` (24 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:25 UTC (permalink / raw)
  To: u-boot

Bindings for sandbox onewire eeprom driver

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 doc/device-tree-bindings/w1-eeprom/eep_sandbox.txt | 34 ++++++++++++++++++++++
 1 file changed, 34 insertions(+)
 create mode 100644 doc/device-tree-bindings/w1-eeprom/eep_sandbox.txt

diff --git a/doc/device-tree-bindings/w1-eeprom/eep_sandbox.txt b/doc/device-tree-bindings/w1-eeprom/eep_sandbox.txt
new file mode 100644
index 0000000..82bb589
--- /dev/null
+++ b/doc/device-tree-bindings/w1-eeprom/eep_sandbox.txt
@@ -0,0 +1,34 @@
+Onewire EEPROM sandbox driver device binding - one wire protocol sandbox EEPROM
+=======================
+
+This memory needs to be connected to a onewire bus, as a child node.
+The bus will read the device serial number and match this node with a found
+device on the bus
+Also check doc/device-tree-bindings/w1 for onewire bus drivers
+
+Driver:
+- drivers/w1-eeprom/eep_sandbox.c
+
+Software ds24xxx device-tree node properties:
+Required:
+* compatible = "sandbox,w1-eeprom"
+
+Optional:
+* none
+
+Example:
+	eeprom1: eeprom at 0 {
+		compatible = "sandbox,w1-eeprom";
+	}
+
+Example with parent bus:
+
+onewire_tm: onewire {
+		compatible = "w1-gpio";
+		gpios = <&gpio_a 8>;
+
+		eeprom1: eeprom at 0 {
+			compatible = "sandbox,w1-eeprom";
+		}
+};
+
-- 
2.7.4

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

* [U-Boot] [PATCH v3 10/34] w1: add command for onewire protocol
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (8 preceding siblings ...)
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 09/34] dt-bindings: w1-eeprom: eep_sandbox: create bindings Eugen Hristev
@ 2018-08-20 14:25 ` Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 11/34] pinctrl: sandbox: add gpio onewire w1 group Eugen Hristev
                   ` (23 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:25 UTC (permalink / raw)
  To: u-boot

Add basic command for bus information and read for onewire
bus using Dallas 1-Wire protocol.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 cmd/Kconfig  |   7 ++++
 cmd/Makefile |   1 +
 cmd/w1.c     | 126 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 134 insertions(+)
 create mode 100644 cmd/w1.c

diff --git a/cmd/Kconfig b/cmd/Kconfig
index aec2090..1a68b1f 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -816,6 +816,13 @@ config CMD_I2C
 	help
 	  I2C support.
 
+config CMD_W1
+	depends on W1
+	default y if W1
+	bool "w1 - Support for Dallas 1-Wire protocol"
+	help
+	  Dallas 1-wire protocol support
+
 config CMD_LOADB
 	bool "loadb"
 	default y
diff --git a/cmd/Makefile b/cmd/Makefile
index 323f1fd..51ad1d8 100644
--- a/cmd/Makefile
+++ b/cmd/Makefile
@@ -143,6 +143,7 @@ obj-$(CONFIG_CMD_THOR_DOWNLOAD) += thordown.o
 obj-$(CONFIG_CMD_XIMG) += ximg.o
 obj-$(CONFIG_CMD_YAFFS2) += yaffs2.o
 obj-$(CONFIG_CMD_SPL) += spl.o
+obj-$(CONFIG_CMD_W1) += w1.o
 obj-$(CONFIG_CMD_ZIP) += zip.o
 obj-$(CONFIG_CMD_ZFS) += zfs.o
 
diff --git a/cmd/w1.c b/cmd/w1.c
new file mode 100644
index 0000000..9c95fcf
--- /dev/null
+++ b/cmd/w1.c
@@ -0,0 +1,126 @@
+/* SPDX-License-Identifier: GPL-2.0+
+ *
+ * (C) Copyright 2018
+ * Microchip Technology, Inc.
+ * Eugen Hristev <eugen.hristev@microchip.com>
+ */
+#include <common.h>
+#include <command.h>
+#include <w1.h>
+#include <w1-eeprom.h>
+#include <dm/device-internal.h>
+
+static int w1_bus(void)
+{
+	struct udevice *bus, *dev;
+	int ret;
+
+	ret = w1_get_bus(0, &bus);
+	if (ret) {
+		printf("one wire interface not found\n");
+		return CMD_RET_FAILURE;
+	}
+	printf("Bus %d:\t%s", bus->seq, bus->name);
+	if (device_active(bus))
+		printf("  (active)");
+	printf("\n");
+
+	for (device_find_first_child(bus, &dev);
+	     dev;
+	     device_find_next_child(&dev)) {
+		ret = device_probe(dev);
+
+		printf("\t%s (%d) uclass %s : ", dev->name, dev->seq,
+		       dev->uclass->uc_drv->name);
+
+		if (ret)
+			printf("device error\n");
+		else
+			printf("family 0x%x\n", w1_get_device_family(dev));
+	}
+	return CMD_RET_SUCCESS;
+}
+
+static int w1_read(int argc, char *const argv[])
+{
+	int bus_n = 0, dev_n = 0, offset = 0, len = 512;
+	int i;
+	struct udevice *bus, *dev;
+	int ret;
+	u8 buf[512];
+
+	if (argc > 2)
+		bus_n = simple_strtoul(argv[2], NULL, 10);
+
+	if (argc > 3)
+		dev_n = simple_strtoul(argv[3], NULL, 10);
+
+	if (argc > 4)
+		offset = simple_strtoul(argv[4], NULL, 10);
+
+	if (argc > 5)
+		len = simple_strtoul(argv[5], NULL, 10);
+
+	if (len > 512) {
+		printf("len needs to be <= 512\n");
+		return CMD_RET_FAILURE;
+	}
+
+	ret = w1_get_bus(bus_n, &bus);
+	if (ret) {
+		printf("one wire interface not found\n");
+		return CMD_RET_FAILURE;
+	}
+
+	for (device_find_first_child(bus, &dev), i = 0;
+	   dev && i <= dev_n;
+	   device_find_next_child(&dev), i++) {
+		ret = device_probe(dev);
+		if (!ret && i == dev_n)
+			break;
+	}
+
+	if (i != dev_n || ret || !dev) {
+		printf("invalid dev\n");
+		return CMD_RET_FAILURE;
+	}
+
+	if (strcmp(dev->uclass->uc_drv->name, "w1_eeprom")) {
+		printf("the device present on the interface is of unknown device class\n");
+		return CMD_RET_FAILURE;
+	}
+
+	ret = w1_eeprom_read_buf(dev, offset, (u8 *)buf, len);
+	if (ret) {
+		printf("error reading device %s\n", dev->name);
+		return CMD_RET_FAILURE;
+	}
+
+	for (i = 0; i < len; i++)
+		printf("%x", buf[i]);
+	printf("\n");
+
+	return CMD_RET_SUCCESS;
+}
+
+int do_w1(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
+{
+	if (argc < 2)
+		return CMD_RET_USAGE;
+
+	if (!strcmp(argv[1], "bus"))
+		return w1_bus();
+
+	if (!strcmp(argv[1], "read"))
+		return w1_read(argc, argv);
+
+	return CMD_RET_SUCCESS;
+}
+
+U_BOOT_CMD(w1, 6, 0, do_w1,
+	   "onewire interface utility commands",
+	   "bus - show onewire bus info (all)\n"
+	   "w1 read [<bus> [<dev> [offset [length]]]]"
+	   "    - read from onewire device 'dev' on onewire bus 'bus'"
+	   " starting from offset 'offset' and length 'length'\n"
+	   "      defaults: bus 0, dev 0, offset 0, length 512 bytes.");
-- 
2.7.4

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

* [U-Boot] [PATCH v3 11/34] pinctrl: sandbox: add gpio onewire w1 group
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (9 preceding siblings ...)
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 10/34] w1: add command for onewire protocol Eugen Hristev
@ 2018-08-20 14:25 ` Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 12/34] sandbox: DTS: w1: add node for one wire interface on GPIO Eugen Hristev
                   ` (22 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:25 UTC (permalink / raw)
  To: u-boot

Add onewire "w1" groups and pin function for onewire GPIOs in sandbox.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 drivers/pinctrl/pinctrl-sandbox.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/pinctrl/pinctrl-sandbox.c b/drivers/pinctrl/pinctrl-sandbox.c
index 468fa2a..755ac08 100644
--- a/drivers/pinctrl/pinctrl-sandbox.c
+++ b/drivers/pinctrl/pinctrl-sandbox.c
@@ -14,6 +14,7 @@ static const char * const sandbox_pins[] = {
 	"SDA",
 	"TX",
 	"RX",
+	"W1"
 };
 
 static const char * const sandbox_groups[] = {
@@ -21,12 +22,14 @@ static const char * const sandbox_groups[] = {
 	"serial_a",
 	"serial_b",
 	"spi",
+	"w1",
 };
 
 static const char * const sandbox_functions[] = {
 	"i2c",
 	"serial",
 	"spi",
+	"w1",
 };
 
 static const struct pinconf_param sandbox_conf_params[] = {
-- 
2.7.4

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

* [U-Boot] [PATCH v3 12/34] sandbox: DTS: w1: add node for one wire interface on GPIO
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (10 preceding siblings ...)
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 11/34] pinctrl: sandbox: add gpio onewire w1 group Eugen Hristev
@ 2018-08-20 14:25 ` Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 13/34] configs: sandbox: add onewire w1 and sandbox eeprom Eugen Hristev
                   ` (21 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:25 UTC (permalink / raw)
  To: u-boot

Add a node for the one wire uclass and one wire gpio driver
in sandbox.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 arch/sandbox/dts/sandbox.dts | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/arch/sandbox/dts/sandbox.dts b/arch/sandbox/dts/sandbox.dts
index 0ea2452..2be836d 100644
--- a/arch/sandbox/dts/sandbox.dts
+++ b/arch/sandbox/dts/sandbox.dts
@@ -160,6 +160,7 @@
 
 	pinctrl {
 		compatible = "sandbox,pinctrl";
+		status = "okay";
 
 		pinctrl_i2c0: i2c0 {
 			groups = "i2c";
@@ -171,6 +172,12 @@
 			groups = "serial_a";
 			function = "serial";
 		};
+
+		pinctrl_onewire0: onewire0 {
+			groups = "w1";
+			function = "w1";
+			bias-pull-up;
+		};
 	};
 
 	reset at 1 {
@@ -319,6 +326,19 @@
 			};
 		};
 	};
+
+	onewire0: onewire {
+		compatible = "w1-gpio";
+		gpios = <&gpio_a 8>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_onewire0>;
+		status = "okay";
+
+		sandbox_eeprom0: sandbox_eeprom at 0 {
+			compatible = "sandbox,w1-eeprom";
+			status = "okay";
+		};
+	};
 };
 
 #include "cros-ec-keyboard.dtsi"
-- 
2.7.4

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

* [U-Boot] [PATCH v3 13/34] configs: sandbox: add onewire w1 and sandbox eeprom
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (11 preceding siblings ...)
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 12/34] sandbox: DTS: w1: add node for one wire interface on GPIO Eugen Hristev
@ 2018-08-20 14:25 ` Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 14/34] configs: sama5d2_xplained: add onewire and eeprom drivers Eugen Hristev
                   ` (20 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:25 UTC (permalink / raw)
  To: u-boot

To be able to test Dallas onewire protocol and one wire eeproms driver
and subsystem, add in sandbox defconfig the drivers' config.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 configs/sandbox_defconfig | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig
index 2fc84a1..2a86bf3 100644
--- a/configs/sandbox_defconfig
+++ b/configs/sandbox_defconfig
@@ -186,6 +186,10 @@ CONFIG_CONSOLE_ROTATION=y
 CONFIG_CONSOLE_TRUETYPE=y
 CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y
 CONFIG_VIDEO_SANDBOX_SDL=y
+CONFIG_W1=y
+CONFIG_W1_GPIO=y
+CONFIG_W1_EEPROM=y
+CONFIG_W1_EEPROM_SANDBOX=y
 CONFIG_WDT=y
 CONFIG_WDT_SANDBOX=y
 CONFIG_FS_CBFS=y
-- 
2.7.4

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

* [U-Boot] [PATCH v3 14/34] configs: sama5d2_xplained: add onewire and eeprom drivers
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (12 preceding siblings ...)
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 13/34] configs: sandbox: add onewire w1 and sandbox eeprom Eugen Hristev
@ 2018-08-20 14:25 ` Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 15/34] configs: sama5d3_xplained: " Eugen Hristev
                   ` (19 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:25 UTC (permalink / raw)
  To: u-boot

SAMA5D2 SoC can have extra clip boards (PDAs) connected, which have
an EEPROM memory for identification. A special GPIO can be used to read
this memory over 1wire protocol.
Enabling one wire and eeprom drivers for this memory.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 configs/sama5d2_xplained_mmc_defconfig      | 4 ++++
 configs/sama5d2_xplained_spiflash_defconfig | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/configs/sama5d2_xplained_mmc_defconfig b/configs/sama5d2_xplained_mmc_defconfig
index 4182e84..7e62d9f 100644
--- a/configs/sama5d2_xplained_mmc_defconfig
+++ b/configs/sama5d2_xplained_mmc_defconfig
@@ -86,3 +86,7 @@ CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
 CONFIG_DM_VIDEO=y
 CONFIG_ATMEL_HLCD=y
+CONFIG_W1=y
+CONFIG_W1_GPIO=y
+CONFIG_W1_EEPROM=y
+CONFIG_W1_EEPROM_DS24XXX=y
diff --git a/configs/sama5d2_xplained_spiflash_defconfig b/configs/sama5d2_xplained_spiflash_defconfig
index 18d1cb5..b5a95c5 100644
--- a/configs/sama5d2_xplained_spiflash_defconfig
+++ b/configs/sama5d2_xplained_spiflash_defconfig
@@ -83,3 +83,7 @@ CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
 CONFIG_DM_VIDEO=y
 CONFIG_ATMEL_HLCD=y
+CONFIG_W1=y
+CONFIG_W1_GPIO=y
+CONFIG_W1_EEPROM=y
+CONFIG_W1_EEPROM_DS24XXX=y
-- 
2.7.4

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

* [U-Boot] [PATCH v3 15/34] configs: sama5d3_xplained: add onewire and eeprom drivers
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (13 preceding siblings ...)
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 14/34] configs: sama5d2_xplained: add onewire and eeprom drivers Eugen Hristev
@ 2018-08-20 14:25 ` Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 16/34] configs: sama5d27_som1_ek: " Eugen Hristev
                   ` (18 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:25 UTC (permalink / raw)
  To: u-boot

SAMA5D3 SoC can have extra clip boards (PDAs) connected, which have
an EEPROM memory for identification. A special GPIO can be used to read
this memory over 1wire protocol.
Enabling one wire and eeprom drivers for this memory.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 configs/sama5d3_xplained_mmc_defconfig       | 4 ++++
 configs/sama5d3_xplained_nandflash_defconfig | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/configs/sama5d3_xplained_mmc_defconfig b/configs/sama5d3_xplained_mmc_defconfig
index 861a851..771264e 100644
--- a/configs/sama5d3_xplained_mmc_defconfig
+++ b/configs/sama5d3_xplained_mmc_defconfig
@@ -73,3 +73,7 @@ CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_STORAGE=y
+CONFIG_W1=y
+CONFIG_W1_GPIO=y
+CONFIG_W1_EEPROM=y
+CONFIG_W1_EEPROM_DS24XXX=y
diff --git a/configs/sama5d3_xplained_nandflash_defconfig b/configs/sama5d3_xplained_nandflash_defconfig
index b72462d..a35beff 100644
--- a/configs/sama5d3_xplained_nandflash_defconfig
+++ b/configs/sama5d3_xplained_nandflash_defconfig
@@ -70,4 +70,8 @@ CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_STORAGE=y
+CONFIG_W1=y
+CONFIG_W1_GPIO=y
+CONFIG_W1_EEPROM=y
+CONFIG_W1_EEPROM_DS24XXX=y
 CONFIG_FAT_WRITE=y
-- 
2.7.4

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

* [U-Boot] [PATCH v3 16/34] configs: sama5d27_som1_ek: add onewire and eeprom drivers
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (14 preceding siblings ...)
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 15/34] configs: sama5d3_xplained: " Eugen Hristev
@ 2018-08-20 14:25 ` Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 17/34] configs: sama5d2_ptc_ek: " Eugen Hristev
                   ` (17 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:25 UTC (permalink / raw)
  To: u-boot

SAMA5D2 SoC can have extra clip boards (PDAs) connected, which have
an EEPROM memory for identification. A special GPIO can be used to read
this memory over 1wire protocol.
Enabling one wire and eeprom drivers for this memory.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 configs/sama5d27_som1_ek_mmc_defconfig | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/configs/sama5d27_som1_ek_mmc_defconfig b/configs/sama5d27_som1_ek_mmc_defconfig
index 53d4b7c..3df7e5c 100644
--- a/configs/sama5d27_som1_ek_mmc_defconfig
+++ b/configs/sama5d27_som1_ek_mmc_defconfig
@@ -86,3 +86,7 @@ CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
 CONFIG_DM_VIDEO=y
 CONFIG_ATMEL_HLCD=y
+CONFIG_W1=y
+CONFIG_W1_GPIO=y
+CONFIG_W1_EEPROM=y
+CONFIG_W1_EEPROM_DS24XXX=y
-- 
2.7.4

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

* [U-Boot] [PATCH v3 17/34] configs: sama5d2_ptc_ek: add onewire and eeprom drivers
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (15 preceding siblings ...)
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 16/34] configs: sama5d27_som1_ek: " Eugen Hristev
@ 2018-08-20 14:25 ` Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 18/34] configs: sama5d4_xplained: " Eugen Hristev
                   ` (16 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:25 UTC (permalink / raw)
  To: u-boot

SAMA5D2 SoC can have extra clip boards (PDAs) connected, which have
an EEPROM memory for identification. A special GPIO can be used to read
this memory over 1wire protocol.
Enabling one wire and eeprom drivers for this memory.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 configs/sama5d2_ptc_ek_mmc_defconfig       | 4 ++++
 configs/sama5d2_ptc_ek_nandflash_defconfig | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/configs/sama5d2_ptc_ek_mmc_defconfig b/configs/sama5d2_ptc_ek_mmc_defconfig
index 3fc18a1..c53ab09 100644
--- a/configs/sama5d2_ptc_ek_mmc_defconfig
+++ b/configs/sama5d2_ptc_ek_mmc_defconfig
@@ -59,3 +59,7 @@ CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_STORAGE=y
+CONFIG_W1=y
+CONFIG_W1_GPIO=y
+CONFIG_W1_EEPROM=y
+CONFIG_W1_EEPROM_DS24XXX=y
diff --git a/configs/sama5d2_ptc_ek_nandflash_defconfig b/configs/sama5d2_ptc_ek_nandflash_defconfig
index 886f342..e56e19e 100644
--- a/configs/sama5d2_ptc_ek_nandflash_defconfig
+++ b/configs/sama5d2_ptc_ek_nandflash_defconfig
@@ -59,3 +59,7 @@ CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_STORAGE=y
+CONFIG_W1=y
+CONFIG_W1_GPIO=y
+CONFIG_W1_EEPROM=y
+CONFIG_W1_EEPROM_DS24XXX=y
-- 
2.7.4

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

* [U-Boot] [PATCH v3 18/34] configs: sama5d4_xplained: add onewire and eeprom drivers
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (16 preceding siblings ...)
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 17/34] configs: sama5d2_ptc_ek: " Eugen Hristev
@ 2018-08-20 14:25 ` Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 19/34] board: atmel: add support for pda detection Eugen Hristev
                   ` (15 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:25 UTC (permalink / raw)
  To: u-boot

SAMA5D4 SoC can have extra clip boards (PDAs) connected, which have
an EEPROM memory for identification. A special GPIO can be used to read
this memory over 1wire protocol.
Enabling one wire and eeprom drivers for this memory.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 configs/sama5d4_xplained_mmc_defconfig       | 4 ++++
 configs/sama5d4_xplained_nandflash_defconfig | 4 ++++
 configs/sama5d4_xplained_spiflash_defconfig  | 4 ++++
 3 files changed, 12 insertions(+)

diff --git a/configs/sama5d4_xplained_mmc_defconfig b/configs/sama5d4_xplained_mmc_defconfig
index 5e1234b..311743e 100644
--- a/configs/sama5d4_xplained_mmc_defconfig
+++ b/configs/sama5d4_xplained_mmc_defconfig
@@ -80,3 +80,7 @@ CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
 CONFIG_DM_VIDEO=y
 CONFIG_ATMEL_HLCD=y
+CONFIG_W1=y
+CONFIG_W1_GPIO=y
+CONFIG_W1_EEPROM=y
+CONFIG_W1_EEPROM_DS24XXX=y
diff --git a/configs/sama5d4_xplained_nandflash_defconfig b/configs/sama5d4_xplained_nandflash_defconfig
index e017e03..234cf24 100644
--- a/configs/sama5d4_xplained_nandflash_defconfig
+++ b/configs/sama5d4_xplained_nandflash_defconfig
@@ -77,3 +77,7 @@ CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
 CONFIG_DM_VIDEO=y
 CONFIG_ATMEL_HLCD=y
+CONFIG_W1=y
+CONFIG_W1_GPIO=y
+CONFIG_W1_EEPROM=y
+CONFIG_W1_EEPROM_DS24XXX=y
diff --git a/configs/sama5d4_xplained_spiflash_defconfig b/configs/sama5d4_xplained_spiflash_defconfig
index dc17f9b..b0fcd3b 100644
--- a/configs/sama5d4_xplained_spiflash_defconfig
+++ b/configs/sama5d4_xplained_spiflash_defconfig
@@ -80,3 +80,7 @@ CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_ATMEL_USBA=y
 CONFIG_DM_VIDEO=y
 CONFIG_ATMEL_HLCD=y
+CONFIG_W1=y
+CONFIG_W1_GPIO=y
+CONFIG_W1_EEPROM=y
+CONFIG_W1_EEPROM_DS24XXX=y
-- 
2.7.4

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

* [U-Boot] [PATCH v3 19/34] board: atmel: add support for pda detection
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (17 preceding siblings ...)
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 18/34] configs: sama5d4_xplained: " Eugen Hristev
@ 2018-08-20 14:25 ` Eugen Hristev
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 20/34] board: sama5d2_xplained: add pda detect call at init time Eugen Hristev
                   ` (14 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:25 UTC (permalink / raw)
  To: u-boot

This adds the support for PDA detection as common code for
Atmel boards.
Using the one wire interface over GPIO , an EEPROM memory is read
and compared to preprogrammed values for PDA screens TM4300, TM7000
and TM7000B.
Once the PDA is detected, an environment variable is set accordingly.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 board/atmel/common/board.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/board/atmel/common/board.c b/board/atmel/common/board.c
index 650eb22..b9cf54c 100644
--- a/board/atmel/common/board.c
+++ b/board/atmel/common/board.c
@@ -5,7 +5,62 @@
  */
 
 #include <common.h>
+#include <w1.h>
+#include <w1-eeprom.h>
+#include <dm/device-internal.h>
+
+#define AT91_PDA_EEPROM_ID_OFFSET		15
+#define AT91_PDA_EEPROM_ID_LENGTH		5
+#define AT91_PDA_EEPROM_DEFAULT_BUS		0
 
 void dummy(void)
 {
 }
+
+#if defined CONFIG_W1
+void at91_pda_detect(void)
+{
+	struct udevice *bus, *dev;
+	u8 buf[AT91_PDA_EEPROM_ID_LENGTH + 1] = {0};
+	int ret;
+	int pda = 0;
+
+	ret = w1_get_bus(AT91_PDA_EEPROM_DEFAULT_BUS, &bus);
+	if (ret)
+		return;
+
+	for (device_find_first_child(bus, &dev);
+	     dev;
+	     device_find_next_child(&dev)) {
+		ret = device_probe(dev);
+		if (ret) {
+			continue;
+		} else {
+			w1_eeprom_read_buf(dev, AT91_PDA_EEPROM_ID_OFFSET,
+					   (u8 *)buf, AT91_PDA_EEPROM_ID_LENGTH);
+			break;
+		}
+	}
+	pda = simple_strtoul((const char *)buf, NULL, 10);
+
+	switch (pda) {
+	case 7000:
+		if (buf[4] == 'B')
+			printf("PDA TM7000B detected\n");
+		else
+			printf("PDA TM7000 detected\n");
+		break;
+	case 4300:
+		printf("PDA TM4300 detected\n");
+		break;
+	case 5000:
+		printf("PDA TM5000 detected\n");
+		break;
+	}
+	env_set("pda", (const char *)buf);
+}
+#else
+void at91_pda_detect(void)
+{
+}
+#endif
-- 
2.7.4

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

* [U-Boot] [PATCH v3 20/34] board: sama5d2_xplained: add pda detect call at init time
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (18 preceding siblings ...)
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 19/34] board: atmel: add support for pda detection Eugen Hristev
@ 2018-08-20 14:25 ` Eugen Hristev
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 21/34] board: sama5d3_xplained: " Eugen Hristev
                   ` (13 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:25 UTC (permalink / raw)
  To: u-boot

Call the PDA detection mechanism at boot time so we can have
the pda environment variable ready for use.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 board/atmel/sama5d2_xplained/sama5d2_xplained.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/board/atmel/sama5d2_xplained/sama5d2_xplained.c b/board/atmel/sama5d2_xplained/sama5d2_xplained.c
index 592b4d8..fccd80e 100644
--- a/board/atmel/sama5d2_xplained/sama5d2_xplained.c
+++ b/board/atmel/sama5d2_xplained/sama5d2_xplained.c
@@ -15,6 +15,8 @@
 #include <asm/arch/gpio.h>
 #include <asm/arch/sama5d2.h>
 
+extern void at91_pda_detect(void);
+
 DECLARE_GLOBAL_DATA_PTR;
 
 static void board_usb_hw_init(void)
@@ -28,6 +30,7 @@ int board_late_init(void)
 #ifdef CONFIG_DM_VIDEO
 	at91_video_show_board_info();
 #endif
+	at91_pda_detect();
 	return 0;
 }
 #endif
-- 
2.7.4

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

* [U-Boot] [PATCH v3 21/34] board: sama5d3_xplained: add pda detect call at init time
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (19 preceding siblings ...)
  2018-08-20 14:25 ` [U-Boot] [PATCH v3 20/34] board: sama5d2_xplained: add pda detect call at init time Eugen Hristev
@ 2018-08-20 14:26 ` Eugen Hristev
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 22/34] board: sama5d27_som1_ek: " Eugen Hristev
                   ` (12 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:26 UTC (permalink / raw)
  To: u-boot

Call the PDA detection mechanism at boot time so we can have
the pda environment variable ready for use.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 arch/arm/mach-at91/Kconfig                      |  1 +
 board/atmel/sama5d3_xplained/sama5d3_xplained.c | 10 ++++++++++
 2 files changed, 11 insertions(+)

diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index ce6be38..6fe701a 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -175,6 +175,7 @@ config TARGET_SAMA5D3_XPLAINED
 	select SAMA5D3
 	select SUPPORT_SPL
 	select BOARD_EARLY_INIT_F
+	select BOARD_LATE_INIT
 
 config TARGET_SAMA5D3XEK
 	bool "SAMA5D3X-EK board"
diff --git a/board/atmel/sama5d3_xplained/sama5d3_xplained.c b/board/atmel/sama5d3_xplained/sama5d3_xplained.c
index c47f638..289f8d8 100644
--- a/board/atmel/sama5d3_xplained/sama5d3_xplained.c
+++ b/board/atmel/sama5d3_xplained/sama5d3_xplained.c
@@ -18,6 +18,8 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
+extern void at91_pda_detect(void);
+
 #ifdef CONFIG_NAND_ATMEL
 void sama5d3_xplained_nand_hw_init(void)
 {
@@ -72,6 +74,14 @@ void board_debug_uart_init(void)
 }
 #endif
 
+#ifdef CONFIG_BOARD_LATE_INIT
+int board_late_init(void)
+{
+	at91_pda_detect();
+	return 0;
+}
+#endif
+
 #ifdef CONFIG_BOARD_EARLY_INIT_F
 int board_early_init_f(void)
 {
-- 
2.7.4

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

* [U-Boot] [PATCH v3 22/34] board: sama5d27_som1_ek: add pda detect call at init time
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (20 preceding siblings ...)
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 21/34] board: sama5d3_xplained: " Eugen Hristev
@ 2018-08-20 14:26 ` Eugen Hristev
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 23/34] board: sama5d2_ptc_ek: " Eugen Hristev
                   ` (11 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:26 UTC (permalink / raw)
  To: u-boot

Call the PDA detection mechanism at boot time so we can have
the pda environment variable ready for use.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 board/atmel/sama5d27_som1_ek/sama5d27_som1_ek.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/board/atmel/sama5d27_som1_ek/sama5d27_som1_ek.c b/board/atmel/sama5d27_som1_ek/sama5d27_som1_ek.c
index d5ddf8d..8363434 100644
--- a/board/atmel/sama5d27_som1_ek/sama5d27_som1_ek.c
+++ b/board/atmel/sama5d27_som1_ek/sama5d27_som1_ek.c
@@ -15,6 +15,8 @@
 #include <asm/arch/gpio.h>
 #include <asm/arch/sama5d2.h>
 
+extern void at91_pda_detect(void);
+
 DECLARE_GLOBAL_DATA_PTR;
 
 static void board_usb_hw_init(void)
@@ -28,6 +30,7 @@ int board_late_init(void)
 #ifdef CONFIG_DM_VIDEO
 	at91_video_show_board_info();
 #endif
+	at91_pda_detect();
 	return 0;
 }
 #endif
-- 
2.7.4

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

* [U-Boot] [PATCH v3 23/34] board: sama5d2_ptc_ek: add pda detect call at init time
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (21 preceding siblings ...)
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 22/34] board: sama5d27_som1_ek: " Eugen Hristev
@ 2018-08-20 14:26 ` Eugen Hristev
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 24/34] board: sama5d4_xplained: " Eugen Hristev
                   ` (10 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:26 UTC (permalink / raw)
  To: u-boot

Call the PDA detection mechanism at boot time so we can have
the pda environment variable ready for use.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 arch/arm/mach-at91/Kconfig                  |  1 +
 board/atmel/sama5d2_ptc_ek/sama5d2_ptc_ek.c | 10 ++++++++++
 2 files changed, 11 insertions(+)

diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 6fe701a..983d9b9 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -149,6 +149,7 @@ config TARGET_SAMA5D2_PTC_EK
 	bool "SAMA5D2 PTC EK board"
 	select SAMA5D2
 	select BOARD_EARLY_INIT_F
+	select BOARD_LATE_INIT
 
 config TARGET_SAMA5D2_XPLAINED
 	bool "SAMA5D2 Xplained board"
diff --git a/board/atmel/sama5d2_ptc_ek/sama5d2_ptc_ek.c b/board/atmel/sama5d2_ptc_ek/sama5d2_ptc_ek.c
index 789841e..17e08fa 100644
--- a/board/atmel/sama5d2_ptc_ek/sama5d2_ptc_ek.c
+++ b/board/atmel/sama5d2_ptc_ek/sama5d2_ptc_ek.c
@@ -20,6 +20,8 @@
 #include <asm/arch/sama5d2.h>
 #include <asm/arch/sama5d2_smc.h>
 
+extern void at91_pda_detect(void);
+
 DECLARE_GLOBAL_DATA_PTR;
 
 #ifdef CONFIG_NAND_ATMEL
@@ -65,6 +67,14 @@ static void board_nand_hw_init(void)
 }
 #endif
 
+#ifdef CONFIG_BOARD_LATE_INIT
+int board_late_init(void)
+{
+	at91_pda_detect();
+	return 0;
+}
+#endif
+
 static void board_usb_hw_init(void)
 {
 	atmel_pio4_set_pio_output(AT91_PIO_PORTB, 12, ATMEL_PIO_PUEN_MASK);
-- 
2.7.4

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

* [U-Boot] [PATCH v3 24/34] board: sama5d4_xplained: add pda detect call at init time
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (22 preceding siblings ...)
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 23/34] board: sama5d2_ptc_ek: " Eugen Hristev
@ 2018-08-20 14:26 ` Eugen Hristev
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 25/34] configs: sama5d2_xplained: add fdt overlay support Eugen Hristev
                   ` (9 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:26 UTC (permalink / raw)
  To: u-boot

Call the PDA detection mechanism at boot time so we can have
the pda environment variable ready for use.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 board/atmel/sama5d4_xplained/sama5d4_xplained.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/board/atmel/sama5d4_xplained/sama5d4_xplained.c b/board/atmel/sama5d4_xplained/sama5d4_xplained.c
index 526c6c7..4da6489 100644
--- a/board/atmel/sama5d4_xplained/sama5d4_xplained.c
+++ b/board/atmel/sama5d4_xplained/sama5d4_xplained.c
@@ -17,6 +17,8 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
+extern void at91_pda_detect(void);
+
 #ifdef CONFIG_NAND_ATMEL
 static void sama5d4_xplained_nand_hw_init(void)
 {
@@ -71,6 +73,7 @@ static void sama5d4_xplained_usb_hw_init(void)
 #ifdef CONFIG_BOARD_LATE_INIT
 int board_late_init(void)
 {
+	at91_pda_detect();
 #ifdef CONFIG_DM_VIDEO
 	at91_video_show_board_info();
 #endif
-- 
2.7.4

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

* [U-Boot] [PATCH v3 25/34] configs: sama5d2_xplained: add fdt overlay support
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (23 preceding siblings ...)
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 24/34] board: sama5d4_xplained: " Eugen Hristev
@ 2018-08-20 14:26 ` Eugen Hristev
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 26/34] configs: sama5d3_xplained: " Eugen Hristev
                   ` (8 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:26 UTC (permalink / raw)
  To: u-boot

Add commands for fdt overlay merging. This is required for the boot scripts
that detect PDAs and apply specific overlays to the DTB passed on to kernel.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 configs/sama5d2_xplained_mmc_defconfig      | 1 +
 configs/sama5d2_xplained_spiflash_defconfig | 1 +
 2 files changed, 2 insertions(+)

diff --git a/configs/sama5d2_xplained_mmc_defconfig b/configs/sama5d2_xplained_mmc_defconfig
index 7e62d9f..4b2b5f0 100644
--- a/configs/sama5d2_xplained_mmc_defconfig
+++ b/configs/sama5d2_xplained_mmc_defconfig
@@ -90,3 +90,4 @@ CONFIG_W1=y
 CONFIG_W1_GPIO=y
 CONFIG_W1_EEPROM=y
 CONFIG_W1_EEPROM_DS24XXX=y
+CONFIG_OF_LIBFDT_OVERLAY=y
diff --git a/configs/sama5d2_xplained_spiflash_defconfig b/configs/sama5d2_xplained_spiflash_defconfig
index b5a95c5..d2c264d 100644
--- a/configs/sama5d2_xplained_spiflash_defconfig
+++ b/configs/sama5d2_xplained_spiflash_defconfig
@@ -87,3 +87,4 @@ CONFIG_W1=y
 CONFIG_W1_GPIO=y
 CONFIG_W1_EEPROM=y
 CONFIG_W1_EEPROM_DS24XXX=y
+CONFIG_OF_LIBFDT_OVERLAY=y
-- 
2.7.4

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

* [U-Boot] [PATCH v3 26/34] configs: sama5d3_xplained: add fdt overlay support
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (24 preceding siblings ...)
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 25/34] configs: sama5d2_xplained: add fdt overlay support Eugen Hristev
@ 2018-08-20 14:26 ` Eugen Hristev
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 27/34] configs: sama5d2_ptc_ek: " Eugen Hristev
                   ` (7 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:26 UTC (permalink / raw)
  To: u-boot

Add commands for fdt overlay merging. This is required for the boot scripts
that detect PDAs and apply specific overlays to the DTB passed on to kernel.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 configs/sama5d3_xplained_mmc_defconfig       | 1 +
 configs/sama5d3_xplained_nandflash_defconfig | 1 +
 2 files changed, 2 insertions(+)

diff --git a/configs/sama5d3_xplained_mmc_defconfig b/configs/sama5d3_xplained_mmc_defconfig
index 771264e..c6dddbf 100644
--- a/configs/sama5d3_xplained_mmc_defconfig
+++ b/configs/sama5d3_xplained_mmc_defconfig
@@ -77,3 +77,4 @@ CONFIG_W1=y
 CONFIG_W1_GPIO=y
 CONFIG_W1_EEPROM=y
 CONFIG_W1_EEPROM_DS24XXX=y
+CONFIG_OF_LIBFDT_OVERLAY=y
diff --git a/configs/sama5d3_xplained_nandflash_defconfig b/configs/sama5d3_xplained_nandflash_defconfig
index a35beff..6fbbde0 100644
--- a/configs/sama5d3_xplained_nandflash_defconfig
+++ b/configs/sama5d3_xplained_nandflash_defconfig
@@ -75,3 +75,4 @@ CONFIG_W1_GPIO=y
 CONFIG_W1_EEPROM=y
 CONFIG_W1_EEPROM_DS24XXX=y
 CONFIG_FAT_WRITE=y
+CONFIG_OF_LIBFDT_OVERLAY=y
-- 
2.7.4

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

* [U-Boot] [PATCH v3 27/34] configs: sama5d2_ptc_ek: add fdt overlay support
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (25 preceding siblings ...)
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 26/34] configs: sama5d3_xplained: " Eugen Hristev
@ 2018-08-20 14:26 ` Eugen Hristev
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 28/34] configs: sama5d27_som1_ek: " Eugen Hristev
                   ` (6 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:26 UTC (permalink / raw)
  To: u-boot

Add commands for fdt overlay merging. This is required for the boot scripts
that detect PDAs and apply specific overlays to the DTB passed on to kernel.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 configs/sama5d2_ptc_ek_mmc_defconfig       | 1 +
 configs/sama5d2_ptc_ek_nandflash_defconfig | 1 +
 2 files changed, 2 insertions(+)

diff --git a/configs/sama5d2_ptc_ek_mmc_defconfig b/configs/sama5d2_ptc_ek_mmc_defconfig
index c53ab09..31af019 100644
--- a/configs/sama5d2_ptc_ek_mmc_defconfig
+++ b/configs/sama5d2_ptc_ek_mmc_defconfig
@@ -63,3 +63,4 @@ CONFIG_W1=y
 CONFIG_W1_GPIO=y
 CONFIG_W1_EEPROM=y
 CONFIG_W1_EEPROM_DS24XXX=y
+CONFIG_OF_LIBFDT_OVERLAY=y
diff --git a/configs/sama5d2_ptc_ek_nandflash_defconfig b/configs/sama5d2_ptc_ek_nandflash_defconfig
index e56e19e..46345b4 100644
--- a/configs/sama5d2_ptc_ek_nandflash_defconfig
+++ b/configs/sama5d2_ptc_ek_nandflash_defconfig
@@ -63,3 +63,4 @@ CONFIG_W1=y
 CONFIG_W1_GPIO=y
 CONFIG_W1_EEPROM=y
 CONFIG_W1_EEPROM_DS24XXX=y
+CONFIG_OF_LIBFDT_OVERLAY=y
-- 
2.7.4

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

* [U-Boot] [PATCH v3 28/34] configs: sama5d27_som1_ek: add fdt overlay support
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (26 preceding siblings ...)
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 27/34] configs: sama5d2_ptc_ek: " Eugen Hristev
@ 2018-08-20 14:26 ` Eugen Hristev
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 29/34] configs: sama5d4_xplained: " Eugen Hristev
                   ` (5 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:26 UTC (permalink / raw)
  To: u-boot

Add commands for fdt overlay merging. This is required for the boot scripts
that detect PDAs and apply specific overlays to the DTB passed on to kernel.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 configs/sama5d27_som1_ek_mmc_defconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/configs/sama5d27_som1_ek_mmc_defconfig b/configs/sama5d27_som1_ek_mmc_defconfig
index 3df7e5c..f8250bc 100644
--- a/configs/sama5d27_som1_ek_mmc_defconfig
+++ b/configs/sama5d27_som1_ek_mmc_defconfig
@@ -90,3 +90,4 @@ CONFIG_W1=y
 CONFIG_W1_GPIO=y
 CONFIG_W1_EEPROM=y
 CONFIG_W1_EEPROM_DS24XXX=y
+CONFIG_OF_LIBFDT_OVERLAY=y
-- 
2.7.4

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

* [U-Boot] [PATCH v3 29/34] configs: sama5d4_xplained: add fdt overlay support
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (27 preceding siblings ...)
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 28/34] configs: sama5d27_som1_ek: " Eugen Hristev
@ 2018-08-20 14:26 ` Eugen Hristev
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 30/34] ARM: dts: at91: sama5d2_xplained: add onewire connector for LCD eeprom Eugen Hristev
                   ` (4 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:26 UTC (permalink / raw)
  To: u-boot

Add commands for fdt overlay merging. This is required for the boot scripts
that detect PDAs and apply specific overlays to the DTB passed on to kernel.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 configs/sama5d4_xplained_mmc_defconfig       | 1 +
 configs/sama5d4_xplained_nandflash_defconfig | 1 +
 configs/sama5d4_xplained_spiflash_defconfig  | 1 +
 3 files changed, 3 insertions(+)

diff --git a/configs/sama5d4_xplained_mmc_defconfig b/configs/sama5d4_xplained_mmc_defconfig
index 311743e..2b38ad0 100644
--- a/configs/sama5d4_xplained_mmc_defconfig
+++ b/configs/sama5d4_xplained_mmc_defconfig
@@ -84,3 +84,4 @@ CONFIG_W1=y
 CONFIG_W1_GPIO=y
 CONFIG_W1_EEPROM=y
 CONFIG_W1_EEPROM_DS24XXX=y
+CONFIG_OF_LIBFDT_OVERLAY=y
diff --git a/configs/sama5d4_xplained_nandflash_defconfig b/configs/sama5d4_xplained_nandflash_defconfig
index 234cf24..d503606 100644
--- a/configs/sama5d4_xplained_nandflash_defconfig
+++ b/configs/sama5d4_xplained_nandflash_defconfig
@@ -81,3 +81,4 @@ CONFIG_W1=y
 CONFIG_W1_GPIO=y
 CONFIG_W1_EEPROM=y
 CONFIG_W1_EEPROM_DS24XXX=y
+CONFIG_OF_LIBFDT_OVERLAY=y
diff --git a/configs/sama5d4_xplained_spiflash_defconfig b/configs/sama5d4_xplained_spiflash_defconfig
index b0fcd3b..9a643d9 100644
--- a/configs/sama5d4_xplained_spiflash_defconfig
+++ b/configs/sama5d4_xplained_spiflash_defconfig
@@ -84,3 +84,4 @@ CONFIG_W1=y
 CONFIG_W1_GPIO=y
 CONFIG_W1_EEPROM=y
 CONFIG_W1_EEPROM_DS24XXX=y
+CONFIG_OF_LIBFDT_OVERLAY=y
-- 
2.7.4

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

* [U-Boot] [PATCH v3 30/34] ARM: dts: at91: sama5d2_xplained: add onewire connector for LCD eeprom
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (28 preceding siblings ...)
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 29/34] configs: sama5d4_xplained: " Eugen Hristev
@ 2018-08-20 14:26 ` Eugen Hristev
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 31/34] ARM: dts: at91: sama5d3_xplained: " Eugen Hristev
                   ` (3 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:26 UTC (permalink / raw)
  To: u-boot

Add onewire node in device tree for TM series LCDs

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 arch/arm/dts/at91-sama5d2_xplained.dts | 17 +++++++++++++++++
 arch/arm/dts/sama5d2.dtsi              |  5 +++++
 2 files changed, 22 insertions(+)

diff --git a/arch/arm/dts/at91-sama5d2_xplained.dts b/arch/arm/dts/at91-sama5d2_xplained.dts
index 01326a1..33064b3 100644
--- a/arch/arm/dts/at91-sama5d2_xplained.dts
+++ b/arch/arm/dts/at91-sama5d2_xplained.dts
@@ -11,6 +11,18 @@
 		stdout-path = &uart1;
 	};
 
+	onewire_tm: onewire {
+		gpios = <&pioA PIN_PB0 0>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_onewire_tm_default>;
+		status = "okay";
+
+		w1_eeprom: w1_eeprom at 0 {
+			compatible = "maxim,ds24b33";
+			status = "okay";
+		};
+	};
+
 	ahb {
 		usb1: ohci at 00400000 {
 			num-ports = <3>;
@@ -270,6 +282,11 @@
 						pinmux = <PIN_PA31__GPIO>;
 						bias-disable;
 					};
+
+					pinctrl_onewire_tm_default: onewire_tm_default {
+						pinmux = <PIN_PB0__GPIO>;
+						bias-pull-up;
+					};
 				};
 			};
 		};
diff --git a/arch/arm/dts/sama5d2.dtsi b/arch/arm/dts/sama5d2.dtsi
index 6645a55..830251a 100644
--- a/arch/arm/dts/sama5d2.dtsi
+++ b/arch/arm/dts/sama5d2.dtsi
@@ -769,4 +769,9 @@
 			};
 		};
 	};
+
+	onewire_tm: onewire {
+		compatible = "w1-gpio";
+		status = "disabled";
+	};
 };
-- 
2.7.4

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

* [U-Boot] [PATCH v3 31/34] ARM: dts: at91: sama5d3_xplained: add onewire connector for LCD eeprom
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (29 preceding siblings ...)
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 30/34] ARM: dts: at91: sama5d2_xplained: add onewire connector for LCD eeprom Eugen Hristev
@ 2018-08-20 14:26 ` Eugen Hristev
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 32/34] ARM: dts: at91: sama5d27_som1_ek: " Eugen Hristev
                   ` (2 subsequent siblings)
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:26 UTC (permalink / raw)
  To: u-boot

Add onewire node in device tree for TM series LCDs

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 arch/arm/dts/at91-sama5d3_xplained.dts | 17 +++++++++++++++++
 arch/arm/dts/sama5d3.dtsi              |  5 +++++
 2 files changed, 22 insertions(+)

diff --git a/arch/arm/dts/at91-sama5d3_xplained.dts b/arch/arm/dts/at91-sama5d3_xplained.dts
index 6959710..20fba5f 100644
--- a/arch/arm/dts/at91-sama5d3_xplained.dts
+++ b/arch/arm/dts/at91-sama5d3_xplained.dts
@@ -36,6 +36,18 @@
 		};
 	};
 
+	onewire_tm: onewire {
+		gpios = <&pioE 23 GPIO_ACTIVE_LOW>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_onewire_tm_default>;
+		status = "okay";
+
+		w1_eeprom: w1_eeprom at 0 {
+			compatible = "maxim,ds24b33";
+			status = "okay";
+		};
+	};
+
 	ahb {
 		apb {
 			mmc0: mmc at f0000000 {
@@ -243,6 +255,11 @@
 						atmel,pins =
 							<AT91_PIOE 9 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;	/* PE9, conflicts with A9 */
 					};
+
+					pinctrl_onewire_tm_default: onewire_tm_default {
+						atmel,pins =
+							<AT91_PIOE 23 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+					};
 				};
 			};
 		};
diff --git a/arch/arm/dts/sama5d3.dtsi b/arch/arm/dts/sama5d3.dtsi
index ee0e14e..87ec17a 100644
--- a/arch/arm/dts/sama5d3.dtsi
+++ b/arch/arm/dts/sama5d3.dtsi
@@ -1538,4 +1538,9 @@
 			};
 		};
 	};
+
+	onewire_tm: onewire {
+		compatible = "w1-gpio";
+		status = "disabled";
+	};
 };
-- 
2.7.4

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

* [U-Boot] [PATCH v3 32/34] ARM: dts: at91: sama5d27_som1_ek: add onewire connector for LCD eeprom
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (30 preceding siblings ...)
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 31/34] ARM: dts: at91: sama5d3_xplained: " Eugen Hristev
@ 2018-08-20 14:26 ` Eugen Hristev
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 33/34] ARM: dts: at91: sama5d2_ptc: " Eugen Hristev
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 34/34] ARM: dts: at91: sama5d4_xplained: " Eugen Hristev
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:26 UTC (permalink / raw)
  To: u-boot

Add onewire node in device tree for TM series LCDs

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 arch/arm/dts/at91-sama5d27_som1_ek.dts | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/arch/arm/dts/at91-sama5d27_som1_ek.dts b/arch/arm/dts/at91-sama5d27_som1_ek.dts
index 5e62d4a..4cd6db6 100644
--- a/arch/arm/dts/at91-sama5d27_som1_ek.dts
+++ b/arch/arm/dts/at91-sama5d27_som1_ek.dts
@@ -54,6 +54,18 @@
 		stdout-path = &uart1;
 	};
 
+	onewire_tm: onewire {
+		gpios = <&pioA 17 0>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_onewire_tm_default>;
+		status = "okay";
+
+		w1_eeprom: w1_eeprom at 0 {
+			compatible = "maxim,ds24b33";
+			status = "okay";
+		};
+	};
+
 	ahb {
 		usb1: ohci at 00400000 {
 			num-ports = <3>;
@@ -208,6 +220,11 @@
 						pinmux = <PIN_PA31__GPIO>;
 						bias-disable;
 					};
+
+					pinctrl_onewire_tm_default: onewire_tm_default {
+						pinmux = <PIN_PA17__GPIO>;
+						bias-pull-up;
+					};
 				};
 			};
 		};
-- 
2.7.4

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

* [U-Boot] [PATCH v3 33/34] ARM: dts: at91: sama5d2_ptc: add onewire connector for LCD eeprom
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (31 preceding siblings ...)
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 32/34] ARM: dts: at91: sama5d27_som1_ek: " Eugen Hristev
@ 2018-08-20 14:26 ` Eugen Hristev
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 34/34] ARM: dts: at91: sama5d4_xplained: " Eugen Hristev
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:26 UTC (permalink / raw)
  To: u-boot

Add onewire node in device tree for TM series LCDs

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 arch/arm/dts/at91-sama5d2_ptc_ek.dts | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/arch/arm/dts/at91-sama5d2_ptc_ek.dts b/arch/arm/dts/at91-sama5d2_ptc_ek.dts
index ab5ab21..068a117 100644
--- a/arch/arm/dts/at91-sama5d2_ptc_ek.dts
+++ b/arch/arm/dts/at91-sama5d2_ptc_ek.dts
@@ -56,6 +56,18 @@
 		stdout-path = &uart0;
 	};
 
+	onewire_tm: onewire {
+		gpios = <&pioA PIN_PB31 0>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_onewire_tm_default>;
+		status = "okay";
+
+		w1_eeprom: w1_eeprom at 0 {
+			compatible = "maxim,ds24b33";
+			status = "okay";
+		};
+	};
+
 	ahb {
 		usb0: gadget at 00300000 {
 			atmel,vbus-gpio = <&pioA PIN_PA27 GPIO_ACTIVE_HIGH>;
@@ -208,6 +220,11 @@
 						pinmux = <PIN_PB11__GPIO>;
 						bias-disable;
 					};
+
+					pinctrl_onewire_tm_default: onewire_tm_default {
+						pinmux = <PIN_PB31__GPIO>;
+						bias-pull-up;
+					};
 				};
 			};
 		};
-- 
2.7.4

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

* [U-Boot] [PATCH v3 34/34] ARM: dts: at91: sama5d4_xplained: add onewire connector for LCD eeprom
  2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
                   ` (32 preceding siblings ...)
  2018-08-20 14:26 ` [U-Boot] [PATCH v3 33/34] ARM: dts: at91: sama5d2_ptc: " Eugen Hristev
@ 2018-08-20 14:26 ` Eugen Hristev
  33 siblings, 0 replies; 35+ messages in thread
From: Eugen Hristev @ 2018-08-20 14:26 UTC (permalink / raw)
  To: u-boot

Add onewire node in device tree for TM series LCDs

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
---
 arch/arm/dts/at91-sama5d4_xplained.dts | 16 ++++++++++++++++
 arch/arm/dts/sama5d4.dtsi              |  5 +++++
 2 files changed, 21 insertions(+)

diff --git a/arch/arm/dts/at91-sama5d4_xplained.dts b/arch/arm/dts/at91-sama5d4_xplained.dts
index ea35dc2..58a0e60 100644
--- a/arch/arm/dts/at91-sama5d4_xplained.dts
+++ b/arch/arm/dts/at91-sama5d4_xplained.dts
@@ -58,6 +58,18 @@
 		stdout-path = &usart3;
 	};
 
+	onewire_tm: onewire {
+		gpios = <&pioE 15 GPIO_ACTIVE_LOW>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_onewire_tm_default>;
+		status = "okay";
+
+		w1_eeprom: w1_eeprom at 0 {
+			compatible = "maxim,ds24b33";
+			status = "okay";
+		};
+	};
+
 	memory {
 		reg = <0x20000000 0x20000000>;
 	};
@@ -199,6 +211,10 @@
 						atmel,pins =
 							<AT91_PIOE 1 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
 					};
+					pinctrl_onewire_tm_default: onewire_tm_default {
+						atmel,pins =
+							<AT91_PIOE 15 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
+					};
 				};
 			};
 		};
diff --git a/arch/arm/dts/sama5d4.dtsi b/arch/arm/dts/sama5d4.dtsi
index 8072b8a..8875d7b 100644
--- a/arch/arm/dts/sama5d4.dtsi
+++ b/arch/arm/dts/sama5d4.dtsi
@@ -1913,4 +1913,9 @@
 			};
 		};
 	};
+
+	onewire_tm: onewire {
+		compatible = "w1-gpio";
+		status = "disabled";
+	};
 };
-- 
2.7.4

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

end of thread, other threads:[~2018-08-20 14:26 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-08-20 14:25 [U-Boot] [PATCH v3 00/34] Add support for 1wire protocol and 1wire eeproms Eugen Hristev
2018-08-20 14:25 ` [U-Boot] [PATCH v3 01/34] w1: Add 1-Wire uclass Eugen Hristev
2018-08-20 14:25 ` [U-Boot] [PATCH v3 02/34] w1: Add 1-Wire gpio driver Eugen Hristev
2018-08-20 14:25 ` [U-Boot] [PATCH v3 03/34] dt-bindings: W1: w1-gpio: added bindings for w1-gpio Eugen Hristev
2018-08-20 14:25 ` [U-Boot] [PATCH v3 04/34] W1-EEPROM: Add an W1-EEPROM uclass for 1 wire EEPROMs Eugen Hristev
2018-08-20 14:25 ` [U-Boot] [PATCH v3 05/34] w1: identify devices with w1-eeprom uclass Eugen Hristev
2018-08-20 14:25 ` [U-Boot] [PATCH v3 06/34] W1-EEPROM: add support for Maxim DS24 eeprom families Eugen Hristev
2018-08-20 14:25 ` [U-Boot] [PATCH v3 07/34] dt-bindings: w1-eeprom: ds24xxx: create bindings Eugen Hristev
2018-08-20 14:25 ` [U-Boot] [PATCH v3 08/34] W1-EEPROM: add sandbox driver Eugen Hristev
2018-08-20 14:25 ` [U-Boot] [PATCH v3 09/34] dt-bindings: w1-eeprom: eep_sandbox: create bindings Eugen Hristev
2018-08-20 14:25 ` [U-Boot] [PATCH v3 10/34] w1: add command for onewire protocol Eugen Hristev
2018-08-20 14:25 ` [U-Boot] [PATCH v3 11/34] pinctrl: sandbox: add gpio onewire w1 group Eugen Hristev
2018-08-20 14:25 ` [U-Boot] [PATCH v3 12/34] sandbox: DTS: w1: add node for one wire interface on GPIO Eugen Hristev
2018-08-20 14:25 ` [U-Boot] [PATCH v3 13/34] configs: sandbox: add onewire w1 and sandbox eeprom Eugen Hristev
2018-08-20 14:25 ` [U-Boot] [PATCH v3 14/34] configs: sama5d2_xplained: add onewire and eeprom drivers Eugen Hristev
2018-08-20 14:25 ` [U-Boot] [PATCH v3 15/34] configs: sama5d3_xplained: " Eugen Hristev
2018-08-20 14:25 ` [U-Boot] [PATCH v3 16/34] configs: sama5d27_som1_ek: " Eugen Hristev
2018-08-20 14:25 ` [U-Boot] [PATCH v3 17/34] configs: sama5d2_ptc_ek: " Eugen Hristev
2018-08-20 14:25 ` [U-Boot] [PATCH v3 18/34] configs: sama5d4_xplained: " Eugen Hristev
2018-08-20 14:25 ` [U-Boot] [PATCH v3 19/34] board: atmel: add support for pda detection Eugen Hristev
2018-08-20 14:25 ` [U-Boot] [PATCH v3 20/34] board: sama5d2_xplained: add pda detect call at init time Eugen Hristev
2018-08-20 14:26 ` [U-Boot] [PATCH v3 21/34] board: sama5d3_xplained: " Eugen Hristev
2018-08-20 14:26 ` [U-Boot] [PATCH v3 22/34] board: sama5d27_som1_ek: " Eugen Hristev
2018-08-20 14:26 ` [U-Boot] [PATCH v3 23/34] board: sama5d2_ptc_ek: " Eugen Hristev
2018-08-20 14:26 ` [U-Boot] [PATCH v3 24/34] board: sama5d4_xplained: " Eugen Hristev
2018-08-20 14:26 ` [U-Boot] [PATCH v3 25/34] configs: sama5d2_xplained: add fdt overlay support Eugen Hristev
2018-08-20 14:26 ` [U-Boot] [PATCH v3 26/34] configs: sama5d3_xplained: " Eugen Hristev
2018-08-20 14:26 ` [U-Boot] [PATCH v3 27/34] configs: sama5d2_ptc_ek: " Eugen Hristev
2018-08-20 14:26 ` [U-Boot] [PATCH v3 28/34] configs: sama5d27_som1_ek: " Eugen Hristev
2018-08-20 14:26 ` [U-Boot] [PATCH v3 29/34] configs: sama5d4_xplained: " Eugen Hristev
2018-08-20 14:26 ` [U-Boot] [PATCH v3 30/34] ARM: dts: at91: sama5d2_xplained: add onewire connector for LCD eeprom Eugen Hristev
2018-08-20 14:26 ` [U-Boot] [PATCH v3 31/34] ARM: dts: at91: sama5d3_xplained: " Eugen Hristev
2018-08-20 14:26 ` [U-Boot] [PATCH v3 32/34] ARM: dts: at91: sama5d27_som1_ek: " Eugen Hristev
2018-08-20 14:26 ` [U-Boot] [PATCH v3 33/34] ARM: dts: at91: sama5d2_ptc: " Eugen Hristev
2018-08-20 14:26 ` [U-Boot] [PATCH v3 34/34] ARM: dts: at91: sama5d4_xplained: " Eugen Hristev

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.