mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH 0/8 v2:wqa] pm9g45/pm9253/pm9261: add 1-wire support
@ 2012-10-29 13:40 Jean-Christophe PLAGNIOL-VILLARD
  2012-10-29 13:46 ` [PATCH 1/8] arm: at91: add gpio_is_valid support Jean-Christophe PLAGNIOL-VILLARD
  0 siblings, 1 reply; 16+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-10-29 13:40 UTC (permalink / raw)
  To: barebox

Hi,

	v2: fixup and add comment

	add 1-wire support for:
	 - pm9g45
	 - pm9263
	 - pm9261

	use the 1-wire uniq id to generate a local mac address
	The OUI will be 'ron' => 72:6F:6E

	The patch series go on the top of the 1-wire support v2

The following changes since commit acaa716bce8cd1373cb5dabff54332fb1da7355b:

  1-wire: add ds2433 support (2012-10-29 04:46:21 +0800)

are available in the git repository at:

  git://git.jcrosoft.org/barebox.git delivery/ronetix_w1

for you to fetch changes up to f64064f91ca518f538c5f9e92d4d4a80c75acdf4:

  pm9261: use w1 serial number to generate local mac address (2012-10-29 05:19:04 +0800)

----------------------------------------------------------------
Jean-Christophe PLAGNIOL-VILLARD (8):
      arm: at91: add gpio_is_valid support
      w1: introduce helper to generate mac address from 1-wire id
      pm9g45: add 1-wire support
      pm9g45: use w1 serial number to generate local mac address
      pm9263: add 1-wire support
      pm9263: use w1 serial number to generate local mac address
      pm9261: add 1-wire support
      pm9261: use w1 serial number to generate local mac address

 arch/arm/boards/pm9261/init.c          |   10 ++++++++++
 arch/arm/boards/pm9263/init.c          |   38 ++++++++++++++++++++++++++++++--------
 arch/arm/boards/pm9g45/init.c          |   22 +++++++++++++++++++---
 arch/arm/configs/pm9261_defconfig      |    2 ++
 arch/arm/configs/pm9263_defconfig      |    2 ++
 arch/arm/configs/pm9g45_defconfig      |    2 ++
 arch/arm/mach-at91/include/mach/gpio.h |   11 +++++++++++
 include/w1_mac_address.h               |   72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 8 files changed, 148 insertions(+), 11 deletions(-)
 create mode 100644 include/w1_mac_address.h

Best Regards,
J.

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* [PATCH 1/8] arm: at91: add gpio_is_valid support
  2012-10-29 13:40 [PATCH 0/8 v2:wqa] pm9g45/pm9253/pm9261: add 1-wire support Jean-Christophe PLAGNIOL-VILLARD
@ 2012-10-29 13:46 ` Jean-Christophe PLAGNIOL-VILLARD
  2012-10-29 13:46   ` [PATCH 2/8] w1: introduce helper to generate mac address from 1-wire id Jean-Christophe PLAGNIOL-VILLARD
                     ` (7 more replies)
  0 siblings, 8 replies; 16+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-10-29 13:46 UTC (permalink / raw)
  To: barebox

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
 arch/arm/mach-at91/include/mach/gpio.h |   11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/arch/arm/mach-at91/include/mach/gpio.h b/arch/arm/mach-at91/include/mach/gpio.h
index 3533bf9..fa695a6 100644
--- a/arch/arm/mach-at91/include/mach/gpio.h
+++ b/arch/arm/mach-at91/include/mach/gpio.h
@@ -22,6 +22,17 @@
 
 /* these pin numbers double as IRQ numbers, like AT91xxx_ID_* values */
 
+#define ARCH_NR_GPIOS 256
+
+static inline int gpio_is_valid(int gpio)
+{
+	if (gpio < 1)
+		return 0;
+	if (gpio < ARCH_NR_GPIOS)
+		return 1;
+	return 0;
+}
+
 #define	AT91_PIN_PA0	(PIN_BASE + 0x00 + 0)
 #define	AT91_PIN_PA1	(PIN_BASE + 0x00 + 1)
 #define	AT91_PIN_PA2	(PIN_BASE + 0x00 + 2)
-- 
1.7.10.4


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* [PATCH 2/8] w1: introduce helper to generate mac address from 1-wire id
  2012-10-29 13:46 ` [PATCH 1/8] arm: at91: add gpio_is_valid support Jean-Christophe PLAGNIOL-VILLARD
@ 2012-10-29 13:46   ` Jean-Christophe PLAGNIOL-VILLARD
  2012-10-29 22:24     ` Sascha Hauer
  2012-10-29 13:46   ` [PATCH 3/8] pm9g45: add 1-wire support Jean-Christophe PLAGNIOL-VILLARD
                     ` (6 subsequent siblings)
  7 siblings, 1 reply; 16+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-10-29 13:46 UTC (permalink / raw)
  To: barebox

use the first 3 byte of the id of a 1-wire
or 6 if no OUI provided device to provide an Ethernet address

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
 include/w1_mac_address.h |   72 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 72 insertions(+)
 create mode 100644 include/w1_mac_address.h

diff --git a/include/w1_mac_address.h b/include/w1_mac_address.h
new file mode 100644
index 0000000..78348be
--- /dev/null
+++ b/include/w1_mac_address.h
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnio@jcrosoft.com>
+ *
+ * Under GPLv2 only
+ */
+
+#ifndef __W1_MAC_ADDRESS_H__
+#define __W1_MAC_ADDRESS_H__
+
+/**
+ * w1_mac_address_register - use the first 3 byte of the id of a 1-wire
+ * or 6 if no OUI provided device to provide an Ethernet address
+ * @ethid: ethernet device id
+ * @local: generate a local Ethernet address
+ * @oui: Ethernet OUI (3 bytes
+ * @w1_dev: 1-wire device name
+ *
+ * Generate a Ethernet address (MAC) that is not multicast using a 1-wire id.
+ */
+static inline int w1_mac_address_register(int ethid, bool local,
+					 char * oui, char *w1_dev)
+{
+	char addr[6];
+	const char *val;
+	u64 id;
+	int nb_oui = 0;
+	int i, shift;
+	char *tmp = NULL;
+	int ret = 0;
+
+	if (!local && !oui)
+		return -EINVAL;
+
+	if (oui) {
+		nb_oui = 3;
+
+		for (i = 0; i < nb_oui; i++)
+			addr[i] = oui[i];
+	}
+
+	tmp = asprintf("%s.id", w1_dev);
+	if (!tmp)
+		return -ENOMEM;
+
+	val = getenv(tmp);
+	if (!val) {
+		ret = -EINVAL;
+		goto err;
+	}
+
+	id = simple_strtoull(val, NULL, 16);
+	if (!id) {
+		ret = -EINVAL;
+		goto err;
+	}
+
+	for (i = nb_oui, shift = 40; i < 6; i++, shift -= 8)
+		addr[i] = (id >> shift) & 0xff;
+
+	if (local) {
+		addr[0] &= 0xfe;	/* clear multicast bit */
+		addr[0] |= 0x02;	/* set local assignment bit (IEEE802) */
+	}
+
+	eth_register_ethaddr(ethid, addr);
+
+err:
+	free(tmp);
+	return ret;
+}
+
+#endif /* __W1_MAC_ADDRESS_H__ */
-- 
1.7.10.4


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* [PATCH 3/8] pm9g45: add 1-wire support
  2012-10-29 13:46 ` [PATCH 1/8] arm: at91: add gpio_is_valid support Jean-Christophe PLAGNIOL-VILLARD
  2012-10-29 13:46   ` [PATCH 2/8] w1: introduce helper to generate mac address from 1-wire id Jean-Christophe PLAGNIOL-VILLARD
@ 2012-10-29 13:46   ` Jean-Christophe PLAGNIOL-VILLARD
  2012-10-29 13:47   ` [PATCH 4/8] pm9g45: use w1 serial number to generate local mac address Jean-Christophe PLAGNIOL-VILLARD
                     ` (5 subsequent siblings)
  7 siblings, 0 replies; 16+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-10-29 13:46 UTC (permalink / raw)
  To: barebox

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
 arch/arm/boards/pm9g45/init.c     |   11 ++++++++++-
 arch/arm/configs/pm9g45_defconfig |    2 ++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/arch/arm/boards/pm9g45/init.c b/arch/arm/boards/pm9g45/init.c
index a12896b..907c6bb 100644
--- a/arch/arm/boards/pm9g45/init.c
+++ b/arch/arm/boards/pm9g45/init.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 Jean-Christophe PLAGNIOL-VILLARD <plagnio@jcrosoft.com>
+ * Copyright (C) 2009-2012 Jean-Christophe PLAGNIOL-VILLARD <plagnio@jcrosoft.com>
  *
  * Copyright (C) 2007 Sascha Hauer, Pengutronix
  *
@@ -35,6 +35,12 @@
 #include <mach/io.h>
 #include <mach/at91sam9_smc.h>
 #include <mach/sam9_smc.h>
+#include <linux/w1-gpio.h>
+
+struct w1_gpio_platform_data w1_pdata = {
+	.pin = AT91_PIN_PA31,
+	.is_open_drain = 0,
+};
 
 static struct atmel_nand_data nand_pdata = {
 	.ale		= 21,
@@ -132,6 +138,9 @@ mem_initcall(pm9g45_mem_init);
 
 static int pm9g45_devices_init(void)
 {
+	at91_set_gpio_input(w1_pdata.pin, 0);
+	add_generic_device_res("w1-gpio", DEVICE_ID_SINGLE, NULL, 0, &w1_pdata);
+
 	pm_add_device_nand();
 	pm9g45_add_device_mci();
 	pm9g45_phy_init();
diff --git a/arch/arm/configs/pm9g45_defconfig b/arch/arm/configs/pm9g45_defconfig
index 958301d..d242bdc 100644
--- a/arch/arm/configs/pm9g45_defconfig
+++ b/arch/arm/configs/pm9g45_defconfig
@@ -56,6 +56,8 @@ CONFIG_USB_OHCI_AT91=y
 CONFIG_USB_STORAGE=y
 CONFIG_MCI=y
 CONFIG_MCI_ATMEL=y
+CONFIG_W1=y
+CONFIG_W1_MASTER_GPIO=y
 CONFIG_FS_TFTP=y
 CONFIG_FS_FAT=y
 CONFIG_FS_FAT_WRITE=y
-- 
1.7.10.4


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* [PATCH 4/8] pm9g45: use w1 serial number to generate local mac address
  2012-10-29 13:46 ` [PATCH 1/8] arm: at91: add gpio_is_valid support Jean-Christophe PLAGNIOL-VILLARD
  2012-10-29 13:46   ` [PATCH 2/8] w1: introduce helper to generate mac address from 1-wire id Jean-Christophe PLAGNIOL-VILLARD
  2012-10-29 13:46   ` [PATCH 3/8] pm9g45: add 1-wire support Jean-Christophe PLAGNIOL-VILLARD
@ 2012-10-29 13:47   ` Jean-Christophe PLAGNIOL-VILLARD
  2012-10-29 13:47   ` [PATCH 5/8] pm9263: add 1-wire support Jean-Christophe PLAGNIOL-VILLARD
                     ` (4 subsequent siblings)
  7 siblings, 0 replies; 16+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-10-29 13:47 UTC (permalink / raw)
  To: barebox

The OUI will be 'ron' => 72:6F:6E

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
 arch/arm/boards/pm9g45/init.c |   11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boards/pm9g45/init.c b/arch/arm/boards/pm9g45/init.c
index 907c6bb..f3764bb 100644
--- a/arch/arm/boards/pm9g45/init.c
+++ b/arch/arm/boards/pm9g45/init.c
@@ -36,6 +36,7 @@
 #include <mach/at91sam9_smc.h>
 #include <mach/sam9_smc.h>
 #include <linux/w1-gpio.h>
+#include <w1_mac_address.h>
 
 struct w1_gpio_platform_data w1_pdata = {
 	.pin = AT91_PIN_PA31,
@@ -128,6 +129,13 @@ static void pm9g45_phy_init(void)
 	at91_set_gpio_value(AT91_PIN_PD2, 1);
 }
 
+static void pm9g45_add_device_eth(void)
+{
+	w1_mac_address_register(0, true, "ron", "w1-1-0");
+	pm9g45_phy_init();
+	at91_add_device_eth(0, &macb_pdata);
+}
+
 static int pm9g45_mem_init(void)
 {
 	at91_add_device_sdram(128 * 1024 * 1024);
@@ -143,8 +151,7 @@ static int pm9g45_devices_init(void)
 
 	pm_add_device_nand();
 	pm9g45_add_device_mci();
-	pm9g45_phy_init();
-	at91_add_device_eth(0, &macb_pdata);
+	pm9g45_add_device_eth();
 	pm9g45_add_device_usbh();
 
 	devfs_add_partition("nand0", 0x00000, SZ_128K, DEVFS_PARTITION_FIXED, "at91bootstrap_raw");
-- 
1.7.10.4


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* [PATCH 5/8] pm9263: add 1-wire support
  2012-10-29 13:46 ` [PATCH 1/8] arm: at91: add gpio_is_valid support Jean-Christophe PLAGNIOL-VILLARD
                     ` (2 preceding siblings ...)
  2012-10-29 13:47   ` [PATCH 4/8] pm9g45: use w1 serial number to generate local mac address Jean-Christophe PLAGNIOL-VILLARD
@ 2012-10-29 13:47   ` Jean-Christophe PLAGNIOL-VILLARD
  2012-10-29 13:47   ` [PATCH 6/8] pm9263: use w1 serial number to generate local mac address Jean-Christophe PLAGNIOL-VILLARD
                     ` (3 subsequent siblings)
  7 siblings, 0 replies; 16+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-10-29 13:47 UTC (permalink / raw)
  To: barebox

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
 arch/arm/boards/pm9263/init.c     |   11 +++++++++++
 arch/arm/configs/pm9263_defconfig |    2 ++
 2 files changed, 13 insertions(+)

diff --git a/arch/arm/boards/pm9263/init.c b/arch/arm/boards/pm9263/init.c
index b17a90a..1d13e03 100644
--- a/arch/arm/boards/pm9263/init.c
+++ b/arch/arm/boards/pm9263/init.c
@@ -1,4 +1,6 @@
 /*
+ * Copyright (C) 2009-2012 Jean-Christophe PLAGNIOL-VILLARD <plagnio@jcrosoft.com>
+ *
  * Copyright (C) 2007 Sascha Hauer, Pengutronix
  *
  * This program is free software; you can redistribute it and/or
@@ -34,6 +36,12 @@
 #include <mach/io.h>
 #include <mach/at91sam9_smc.h>
 #include <mach/sam9_smc.h>
+#include <linux/w1-gpio.h>
+
+struct w1_gpio_platform_data w1_pdata = {
+	.pin = AT91_PIN_PB31,
+	.is_open_drain = 0,
+};
 
 static struct atmel_nand_data nand_pdata = {
 	.ale		= 21,
@@ -95,6 +103,9 @@ mem_initcall(pm9263_mem_init);
 
 static int pm9263_devices_init(void)
 {
+	at91_set_gpio_input(w1_pdata.pin, 0);
+	add_generic_device_res("w1-gpio", DEVICE_ID_SINGLE, NULL, 0, &w1_pdata);
+
 	/*
 	 * PB27 enables the 50MHz oscillator for Ethernet PHY
 	 * 1 - enable
diff --git a/arch/arm/configs/pm9263_defconfig b/arch/arm/configs/pm9263_defconfig
index 8c92894..e223e77 100644
--- a/arch/arm/configs/pm9263_defconfig
+++ b/arch/arm/configs/pm9263_defconfig
@@ -35,3 +35,5 @@ CONFIG_DRIVER_NET_MACB=y
 # CONFIG_SPI is not set
 CONFIG_DRIVER_CFI=y
 CONFIG_CFI_BUFFER_WRITE=y
+CONFIG_W1=y
+CONFIG_W1_MASTER_GPIO=y
-- 
1.7.10.4


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* [PATCH 6/8] pm9263: use w1 serial number to generate local mac address
  2012-10-29 13:46 ` [PATCH 1/8] arm: at91: add gpio_is_valid support Jean-Christophe PLAGNIOL-VILLARD
                     ` (3 preceding siblings ...)
  2012-10-29 13:47   ` [PATCH 5/8] pm9263: add 1-wire support Jean-Christophe PLAGNIOL-VILLARD
@ 2012-10-29 13:47   ` Jean-Christophe PLAGNIOL-VILLARD
  2012-10-29 13:47   ` [PATCH 7/8] pm9261: add 1-wire support Jean-Christophe PLAGNIOL-VILLARD
                     ` (2 subsequent siblings)
  7 siblings, 0 replies; 16+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-10-29 13:47 UTC (permalink / raw)
  To: barebox

The OUI will be 'ron' => 72:6F:6E

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
 arch/arm/boards/pm9263/init.c |   29 ++++++++++++++++++++---------
 1 file changed, 20 insertions(+), 9 deletions(-)

diff --git a/arch/arm/boards/pm9263/init.c b/arch/arm/boards/pm9263/init.c
index 1d13e03..7ba804a 100644
--- a/arch/arm/boards/pm9263/init.c
+++ b/arch/arm/boards/pm9263/init.c
@@ -37,6 +37,7 @@
 #include <mach/at91sam9_smc.h>
 #include <mach/sam9_smc.h>
 #include <linux/w1-gpio.h>
+#include <w1_mac_address.h>
 
 struct w1_gpio_platform_data w1_pdata = {
 	.pin = AT91_PIN_PB31,
@@ -93,6 +94,24 @@ static struct at91_ether_platform_data macb_pdata = {
 	.phy_addr = 0,
 };
 
+static void pm9263_phy_init(void)
+{
+	/*
+	 * PB27 enables the 50MHz oscillator for Ethernet PHY
+	 * 1 - enable
+	 * 0 - disable
+	 */
+	at91_set_gpio_output(AT91_PIN_PB27, 1);
+	at91_set_gpio_value(AT91_PIN_PB27, 1); /* 1- enable, 0 - disable */
+}
+
+static void pm9263_add_device_eth(void)
+{
+	w1_mac_address_register(0, true, "ron", "w1-1-0");
+	pm9263_phy_init();
+	at91_add_device_eth(0, &macb_pdata);
+}
+
 static int pm9263_mem_init(void)
 {
 	at91_add_device_sdram(64 * 1024 * 1024);
@@ -106,16 +125,8 @@ static int pm9263_devices_init(void)
 	at91_set_gpio_input(w1_pdata.pin, 0);
 	add_generic_device_res("w1-gpio", DEVICE_ID_SINGLE, NULL, 0, &w1_pdata);
 
-	/*
-	 * PB27 enables the 50MHz oscillator for Ethernet PHY
-	 * 1 - enable
-	 * 0 - disable
-	 */
-	at91_set_gpio_output(AT91_PIN_PB27, 1);
-	at91_set_gpio_value(AT91_PIN_PB27, 1); /* 1- enable, 0 - disable */
-
 	pm_add_device_nand();
-	at91_add_device_eth(0, &macb_pdata);
+	pm9263_add_device_eth();
 	add_cfi_flash_device(0, AT91_CHIPSELECT_0, 4 * 1024 * 1024, 0);
 
 	devfs_add_partition("nor0", 0x00000, 0x40000, DEVFS_PARTITION_FIXED, "self0");
-- 
1.7.10.4


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* [PATCH 7/8] pm9261: add 1-wire support
  2012-10-29 13:46 ` [PATCH 1/8] arm: at91: add gpio_is_valid support Jean-Christophe PLAGNIOL-VILLARD
                     ` (4 preceding siblings ...)
  2012-10-29 13:47   ` [PATCH 6/8] pm9263: use w1 serial number to generate local mac address Jean-Christophe PLAGNIOL-VILLARD
@ 2012-10-29 13:47   ` Jean-Christophe PLAGNIOL-VILLARD
  2012-10-29 13:47   ` [PATCH 8/8] pm9261: use w1 serial number to generate local mac address Jean-Christophe PLAGNIOL-VILLARD
  2012-10-30  7:32   ` [PATCH 1/8] arm: at91: add gpio_is_valid support Sascha Hauer
  7 siblings, 0 replies; 16+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-10-29 13:47 UTC (permalink / raw)
  To: barebox

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
 arch/arm/boards/pm9261/init.c     |    8 ++++++++
 arch/arm/configs/pm9261_defconfig |    2 ++
 2 files changed, 10 insertions(+)

diff --git a/arch/arm/boards/pm9261/init.c b/arch/arm/boards/pm9261/init.c
index 5214394..2c3615f 100644
--- a/arch/arm/boards/pm9261/init.c
+++ b/arch/arm/boards/pm9261/init.c
@@ -1,4 +1,6 @@
 /*
+ * Copyright (C) 2009-2012 Jean-Christophe PLAGNIOL-VILLARD <plagnio@jcrosoft.com>
+ *
  * Copyright (C) 2007 Sascha Hauer, Pengutronix
  *
  * This program is free software; you can redistribute it and/or
@@ -34,6 +36,12 @@
 #include <mach/at91sam9_smc.h>
 #include <mach/sam9_smc.h>
 #include <dm9000.h>
+#include <linux/w1-gpio.h>
+
+struct w1_gpio_platform_data w1_pdata = {
+	.pin = AT91_PIN_PA7,
+	.is_open_drain = 0,
+};
 
 static struct atmel_nand_data nand_pdata = {
 	.ale		= 22,
diff --git a/arch/arm/configs/pm9261_defconfig b/arch/arm/configs/pm9261_defconfig
index 1db16d5..0aea2c9 100644
--- a/arch/arm/configs/pm9261_defconfig
+++ b/arch/arm/configs/pm9261_defconfig
@@ -50,3 +50,5 @@ CONFIG_MTD=y
 CONFIG_NAND=y
 CONFIG_NAND_ATMEL=y
 CONFIG_UBI=y
+CONFIG_W1=y
+CONFIG_W1_MASTER_GPIO=y
-- 
1.7.10.4


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* [PATCH 8/8] pm9261: use w1 serial number to generate local mac address
  2012-10-29 13:46 ` [PATCH 1/8] arm: at91: add gpio_is_valid support Jean-Christophe PLAGNIOL-VILLARD
                     ` (5 preceding siblings ...)
  2012-10-29 13:47   ` [PATCH 7/8] pm9261: add 1-wire support Jean-Christophe PLAGNIOL-VILLARD
@ 2012-10-29 13:47   ` Jean-Christophe PLAGNIOL-VILLARD
  2012-10-30  7:32   ` [PATCH 1/8] arm: at91: add gpio_is_valid support Sascha Hauer
  7 siblings, 0 replies; 16+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-10-29 13:47 UTC (permalink / raw)
  To: barebox

The OUI will be 'ron' => 72:6F:6E

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
 arch/arm/boards/pm9261/init.c |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/arm/boards/pm9261/init.c b/arch/arm/boards/pm9261/init.c
index 2c3615f..72fdb0e 100644
--- a/arch/arm/boards/pm9261/init.c
+++ b/arch/arm/boards/pm9261/init.c
@@ -37,6 +37,7 @@
 #include <mach/sam9_smc.h>
 #include <dm9000.h>
 #include <linux/w1-gpio.h>
+#include <w1_mac_address.h>
 
 struct w1_gpio_platform_data w1_pdata = {
 	.pin = AT91_PIN_PA7,
@@ -120,6 +121,7 @@ static struct sam9_smc_config __initdata dm9000_smc_config = {
 
 static void __init pm_add_device_dm9000(void)
 {
+	w1_mac_address_register(0, true, "ron", "w1-1-0");
 	/* Configure chip-select 2 (DM9000) */
 	sam9_smc_configure(2, &dm9000_smc_config);
 
-- 
1.7.10.4


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* Re: [PATCH 2/8] w1: introduce helper to generate mac address from 1-wire id
  2012-10-29 13:46   ` [PATCH 2/8] w1: introduce helper to generate mac address from 1-wire id Jean-Christophe PLAGNIOL-VILLARD
@ 2012-10-29 22:24     ` Sascha Hauer
  0 siblings, 0 replies; 16+ messages in thread
From: Sascha Hauer @ 2012-10-29 22:24 UTC (permalink / raw)
  To: Jean-Christophe PLAGNIOL-VILLARD; +Cc: barebox

On Mon, Oct 29, 2012 at 02:46:58PM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
> use the first 3 byte of the id of a 1-wire
> or 6 if no OUI provided device to provide an Ethernet address
> 
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> ---
>  include/w1_mac_address.h |   72 ++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 72 insertions(+)
>  create mode 100644 include/w1_mac_address.h
> + *
> + * Generate a Ethernet address (MAC) that is not multicast using a 1-wire id.
> + */
> +static inline int w1_mac_address_register(int ethid, bool local,
> +					 char * oui, char *w1_dev)

Please drop the local parameter. I believe that it may have a valid
use, but really until someone proves he has such a usecase I do not
want to have this in the tree. This only increases the risk that some
users slip through the review which do not make valid use of this flag.

> +{
> +	char addr[6];
> +	const char *val;
> +	u64 id;
> +	int nb_oui = 0;
> +	int i, shift;
> +	char *tmp = NULL;
> +	int ret = 0;
> +
> +	if (!local && !oui)
> +		return -EINVAL;
> +
> +	if (oui) {
> +		nb_oui = 3;
> +
> +		for (i = 0; i < nb_oui; i++)
> +			addr[i] = oui[i];
> +	}
> +
> +	tmp = asprintf("%s.id", w1_dev);
> +	if (!tmp)
> +		return -ENOMEM;
> +
> +	val = getenv(tmp);
> +	if (!val) {
> +		ret = -EINVAL;
> +		goto err;
> +	}
> +
> +	id = simple_strtoull(val, NULL, 16);
> +	if (!id) {
> +		ret = -EINVAL;
> +		goto err;
> +	}
> +
> +	for (i = nb_oui, shift = 40; i < 6; i++, shift -= 8)
> +		addr[i] = (id >> shift) & 0xff;
> +
> +	if (local) {
> +		addr[0] &= 0xfe;	/* clear multicast bit */

Shouldn't this bit always be cleared?

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* Re: [PATCH 1/8] arm: at91: add gpio_is_valid support
  2012-10-29 13:46 ` [PATCH 1/8] arm: at91: add gpio_is_valid support Jean-Christophe PLAGNIOL-VILLARD
                     ` (6 preceding siblings ...)
  2012-10-29 13:47   ` [PATCH 8/8] pm9261: use w1 serial number to generate local mac address Jean-Christophe PLAGNIOL-VILLARD
@ 2012-10-30  7:32   ` Sascha Hauer
  2012-10-30  8:41     ` Jean-Christophe PLAGNIOL-VILLARD
  7 siblings, 1 reply; 16+ messages in thread
From: Sascha Hauer @ 2012-10-30  7:32 UTC (permalink / raw)
  To: Jean-Christophe PLAGNIOL-VILLARD; +Cc: barebox

On Mon, Oct 29, 2012 at 02:46:57PM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> ---
>  arch/arm/mach-at91/include/mach/gpio.h |   11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/arch/arm/mach-at91/include/mach/gpio.h b/arch/arm/mach-at91/include/mach/gpio.h
> index 3533bf9..fa695a6 100644
> --- a/arch/arm/mach-at91/include/mach/gpio.h
> +++ b/arch/arm/mach-at91/include/mach/gpio.h
> @@ -22,6 +22,17 @@
>  
>  /* these pin numbers double as IRQ numbers, like AT91xxx_ID_* values */
>  
> +#define ARCH_NR_GPIOS 256
> +
> +static inline int gpio_is_valid(int gpio)
> +{
> +	if (gpio < 1)
> +		return 0;
> +	if (gpio < ARCH_NR_GPIOS)
> +		return 1;
> +	return 0;
> +}

Why is this patch in this series? It is unused and wrong. 0 is a valid
gpio.

Sascha


-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* Re: [PATCH 1/8] arm: at91: add gpio_is_valid support
  2012-10-30  7:32   ` [PATCH 1/8] arm: at91: add gpio_is_valid support Sascha Hauer
@ 2012-10-30  8:41     ` Jean-Christophe PLAGNIOL-VILLARD
  0 siblings, 0 replies; 16+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-10-30  8:41 UTC (permalink / raw)
  To: Sascha Hauer; +Cc: barebox

On 08:32 Tue 30 Oct     , Sascha Hauer wrote:
> On Mon, Oct 29, 2012 at 02:46:57PM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
> > Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> > ---
> >  arch/arm/mach-at91/include/mach/gpio.h |   11 +++++++++++
> >  1 file changed, 11 insertions(+)
> > 
> > diff --git a/arch/arm/mach-at91/include/mach/gpio.h b/arch/arm/mach-at91/include/mach/gpio.h
> > index 3533bf9..fa695a6 100644
> > --- a/arch/arm/mach-at91/include/mach/gpio.h
> > +++ b/arch/arm/mach-at91/include/mach/gpio.h
> > @@ -22,6 +22,17 @@
> >  
> >  /* these pin numbers double as IRQ numbers, like AT91xxx_ID_* values */
> >  
> > +#define ARCH_NR_GPIOS 256
> > +
> > +static inline int gpio_is_valid(int gpio)
> > +{
> > +	if (gpio < 1)
> > +		return 0;
> > +	if (gpio < ARCH_NR_GPIOS)
> > +		return 1;
> > +	return 0;
> > +}
> 
> Why is this patch in this series? It is unused and wrong. 0 is a valid
> gpio.
not on at91

0 means invalid

It ws the case on the kernel too before I wrok on the pinctrl

I'll clenaup it too whe I swtich to gpiolib buta bit later

Best Regards,
J.

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* [PATCH 2/8] w1: introduce helper to generate mac address from 1-wire id
  2012-10-30 21:00 ` [PATCH 1/8] arm: at91: add gpio_is_valid support Jean-Christophe PLAGNIOL-VILLARD
@ 2012-10-30 21:00   ` Jean-Christophe PLAGNIOL-VILLARD
  0 siblings, 0 replies; 16+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-10-30 21:00 UTC (permalink / raw)
  To: barebox

use the first 3 byte of the id of a 1-wire
or 6 if no OUI provided device to provide an Ethernet address

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
 include/w1_mac_address.h |   65 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 65 insertions(+)
 create mode 100644 include/w1_mac_address.h

diff --git a/include/w1_mac_address.h b/include/w1_mac_address.h
new file mode 100644
index 0000000..89dd914
--- /dev/null
+++ b/include/w1_mac_address.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnio@jcrosoft.com>
+ *
+ * Under GPLv2 only
+ */
+
+#ifndef __W1_MAC_ADDRESS_H__
+#define __W1_MAC_ADDRESS_H__
+
+/**
+ * w1_local_mac_address_register - use the first 3 byte of the id of a 1-wire
+ * or 6 if no OUI provided device to provide an Ethernet address
+ * @ethid: ethernet device id
+ * @oui: Ethernet OUI (3 bytes)
+ * @w1_dev: 1-wire device name
+ *
+ * Generate a local Ethernet address (MAC) that is not multicast using a 1-wire id.
+ */
+static inline int w1_local_mac_address_register(int ethid, char * oui, char *w1_dev)
+{
+	char addr[6];
+	const char *val;
+	u64 id;
+	int nb_oui = 0;
+	int i, shift;
+	char *tmp = NULL;
+	int ret = 0;
+
+	if (oui) {
+		nb_oui = 3;
+
+		for (i = 0; i < nb_oui; i++)
+			addr[i] = oui[i];
+	}
+
+	tmp = asprintf("%s.id", w1_dev);
+	if (!tmp)
+		return -ENOMEM;
+
+	val = getenv(tmp);
+	if (!val) {
+		ret = -EINVAL;
+		goto err;
+	}
+
+	id = simple_strtoull(val, NULL, 16);
+	if (!id) {
+		ret = -EINVAL;
+		goto err;
+	}
+
+	for (i = nb_oui, shift = 40; i < 6; i++, shift -= 8)
+		addr[i] = (id >> shift) & 0xff;
+
+	addr[0] &= 0xfe;	/* clear multicast bit */
+	addr[0] |= 0x02;	/* set local assignment bit (IEEE802) */
+
+	eth_register_ethaddr(ethid, addr);
+
+err:
+	free(tmp);
+	return ret;
+}
+
+#endif /* __W1_MAC_ADDRESS_H__ */
-- 
1.7.10.4


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* Re: [PATCH 2/8] w1: introduce helper to generate mac address from 1-wire id
  2012-10-29  8:33     ` Sascha Hauer
@ 2012-10-29 11:29       ` Jean-Christophe PLAGNIOL-VILLARD
  0 siblings, 0 replies; 16+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-10-29 11:29 UTC (permalink / raw)
  To: Sascha Hauer; +Cc: barebox

On 09:33 Mon 29 Oct     , Sascha Hauer wrote:
> On Sun, Oct 28, 2012 at 02:24:06AM +0200, Jean-Christophe PLAGNIOL-VILLARD wrote:
> > Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> > ---
> >  include/w1_mac_address.h |   64 ++++++++++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 64 insertions(+)
> >  create mode 100644 include/w1_mac_address.h
> > 
> > diff --git a/include/w1_mac_address.h b/include/w1_mac_address.h
> > new file mode 100644
> > index 0000000..ed93e0e
> > --- /dev/null
> > +++ b/include/w1_mac_address.h
> > @@ -0,0 +1,64 @@
> > +/*
> > + * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnio@jcrosoft.com>
> > + *
> > + * Under GPLv2 only
> > + */
> > +
> > +#ifndef __W1_MAC_ADDRESS_H__
> > +#define __W1_MAC_ADDRESS_H__
> > +
> > +static inline int w1_mac_address_register(int eth_num, bool local,
> > +					 char * oui, char *w1_dev)
> 
> This function really deserves a comment what it does. From the name I
> assume that it turns something w1 related into a MAC address, but I have
> no clue what.
> 
> Also I think the 'local' parameter should not exist and be unconditional
> true. I don't think any vendor with a real ieee registered oui will
> match their mac addresses with ids from a w1 eeprom.
as you can request specific id format for the serial number 1-wire (smem)

you can use it for real OUI

with this way you can prouve than you manage your OUI correctly if you need to
request an other one

Best Regards,
J.
> 
> > +{
> > +	char buf[6];
> > +	const char *val;
> > +	u64 id;
> > +	int nb_oui = 0;
> > +	int i, shift;
> > +	char *tmp = NULL;
> > +	int ret = 0;
> > +
> > +	if (!local && !oui)
> > +		return -EINVAL;
> > +
> > +	if (oui) {
> > +		nb_oui = strlen(oui);
> 
> A oui always has three bytes. You can't use strlen here as for example
> Freescale has the oui 00-04-9f
> 
> > +		if (!local && nb_oui != 3)
> > +			return -EINVAL;
> > +
> > +		nb_oui = min(nb_oui, 3);
> > +
> > +		for (i = 0; i < nb_oui; i++)
> > +			buf[i] = oui[i];
> > +	}
> > +
> > +	tmp = asprintf("%s.id", w1_dev);
> > +	if (!tmp)
> > +		return -ENOMEM;
> > +
> > +	val = getenv("w1-1-0.id");
> 
> tmp is never used. I assume it should be used here, right?
> 
> > +	if (!val) {
> > +		ret = -EINVAL;
> > +		goto err;
> > +	}
> > +
> > +	id = simple_strtoull(val, NULL, 16);
> > +	if (!id) {
> > +		ret = -EINVAL;
> > +		goto err;
> > +	}
> > +
> > +	for (i = nb_oui, shift = 40; i < 6; i++, shift -= 8)
> > +		buf[i] = (id >> shift) & 0xff;
> > +
> > +	if (local)
> > +		buf[0] |= 0x2;
> > +
> > +	eth_register_ethaddr(eth_num, buf);
> > +
> > +err:
> > +	free(tmp);
> > +	return ret;
> > +}
> > +
> > +#endif /* __W1_MAC_ADDRESS_H__ */
> > -- 
> > 1.7.10.4
> > 
> > 
> > _______________________________________________
> > barebox mailing list
> > barebox@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/barebox
> > 
> 
> -- 
> Pengutronix e.K.                           |                             |
> Industrial Linux Solutions                 | http://www.pengutronix.de/  |
> Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
> Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* Re: [PATCH 2/8] w1: introduce helper to generate mac address from 1-wire id
  2012-10-28  0:24   ` [PATCH 2/8] w1: introduce helper to generate mac address from 1-wire id Jean-Christophe PLAGNIOL-VILLARD
@ 2012-10-29  8:33     ` Sascha Hauer
  2012-10-29 11:29       ` Jean-Christophe PLAGNIOL-VILLARD
  0 siblings, 1 reply; 16+ messages in thread
From: Sascha Hauer @ 2012-10-29  8:33 UTC (permalink / raw)
  To: Jean-Christophe PLAGNIOL-VILLARD; +Cc: barebox

On Sun, Oct 28, 2012 at 02:24:06AM +0200, Jean-Christophe PLAGNIOL-VILLARD wrote:
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> ---
>  include/w1_mac_address.h |   64 ++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 64 insertions(+)
>  create mode 100644 include/w1_mac_address.h
> 
> diff --git a/include/w1_mac_address.h b/include/w1_mac_address.h
> new file mode 100644
> index 0000000..ed93e0e
> --- /dev/null
> +++ b/include/w1_mac_address.h
> @@ -0,0 +1,64 @@
> +/*
> + * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnio@jcrosoft.com>
> + *
> + * Under GPLv2 only
> + */
> +
> +#ifndef __W1_MAC_ADDRESS_H__
> +#define __W1_MAC_ADDRESS_H__
> +
> +static inline int w1_mac_address_register(int eth_num, bool local,
> +					 char * oui, char *w1_dev)

This function really deserves a comment what it does. From the name I
assume that it turns something w1 related into a MAC address, but I have
no clue what.

Also I think the 'local' parameter should not exist and be unconditional
true. I don't think any vendor with a real ieee registered oui will
match their mac addresses with ids from a w1 eeprom.

> +{
> +	char buf[6];
> +	const char *val;
> +	u64 id;
> +	int nb_oui = 0;
> +	int i, shift;
> +	char *tmp = NULL;
> +	int ret = 0;
> +
> +	if (!local && !oui)
> +		return -EINVAL;
> +
> +	if (oui) {
> +		nb_oui = strlen(oui);

A oui always has three bytes. You can't use strlen here as for example
Freescale has the oui 00-04-9f

> +		if (!local && nb_oui != 3)
> +			return -EINVAL;
> +
> +		nb_oui = min(nb_oui, 3);
> +
> +		for (i = 0; i < nb_oui; i++)
> +			buf[i] = oui[i];
> +	}
> +
> +	tmp = asprintf("%s.id", w1_dev);
> +	if (!tmp)
> +		return -ENOMEM;
> +
> +	val = getenv("w1-1-0.id");

tmp is never used. I assume it should be used here, right?

> +	if (!val) {
> +		ret = -EINVAL;
> +		goto err;
> +	}
> +
> +	id = simple_strtoull(val, NULL, 16);
> +	if (!id) {
> +		ret = -EINVAL;
> +		goto err;
> +	}
> +
> +	for (i = nb_oui, shift = 40; i < 6; i++, shift -= 8)
> +		buf[i] = (id >> shift) & 0xff;
> +
> +	if (local)
> +		buf[0] |= 0x2;
> +
> +	eth_register_ethaddr(eth_num, buf);
> +
> +err:
> +	free(tmp);
> +	return ret;
> +}
> +
> +#endif /* __W1_MAC_ADDRESS_H__ */
> -- 
> 1.7.10.4
> 
> 
> _______________________________________________
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
> 

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* [PATCH 2/8] w1: introduce helper to generate mac address from 1-wire id
  2012-10-28  0:24 ` [PATCH 1/8] arm: at91: add gpio_is_valid support Jean-Christophe PLAGNIOL-VILLARD
@ 2012-10-28  0:24   ` Jean-Christophe PLAGNIOL-VILLARD
  2012-10-29  8:33     ` Sascha Hauer
  0 siblings, 1 reply; 16+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-10-28  0:24 UTC (permalink / raw)
  To: barebox

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
 include/w1_mac_address.h |   64 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 64 insertions(+)
 create mode 100644 include/w1_mac_address.h

diff --git a/include/w1_mac_address.h b/include/w1_mac_address.h
new file mode 100644
index 0000000..ed93e0e
--- /dev/null
+++ b/include/w1_mac_address.h
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnio@jcrosoft.com>
+ *
+ * Under GPLv2 only
+ */
+
+#ifndef __W1_MAC_ADDRESS_H__
+#define __W1_MAC_ADDRESS_H__
+
+static inline int w1_mac_address_register(int eth_num, bool local,
+					 char * oui, char *w1_dev)
+{
+	char buf[6];
+	const char *val;
+	u64 id;
+	int nb_oui = 0;
+	int i, shift;
+	char *tmp = NULL;
+	int ret = 0;
+
+	if (!local && !oui)
+		return -EINVAL;
+
+	if (oui) {
+		nb_oui = strlen(oui);
+		if (!local && nb_oui != 3)
+			return -EINVAL;
+
+		nb_oui = min(nb_oui, 3);
+
+		for (i = 0; i < nb_oui; i++)
+			buf[i] = oui[i];
+	}
+
+	tmp = asprintf("%s.id", w1_dev);
+	if (!tmp)
+		return -ENOMEM;
+
+	val = getenv("w1-1-0.id");
+	if (!val) {
+		ret = -EINVAL;
+		goto err;
+	}
+
+	id = simple_strtoull(val, NULL, 16);
+	if (!id) {
+		ret = -EINVAL;
+		goto err;
+	}
+
+	for (i = nb_oui, shift = 40; i < 6; i++, shift -= 8)
+		buf[i] = (id >> shift) & 0xff;
+
+	if (local)
+		buf[0] |= 0x2;
+
+	eth_register_ethaddr(eth_num, buf);
+
+err:
+	free(tmp);
+	return ret;
+}
+
+#endif /* __W1_MAC_ADDRESS_H__ */
-- 
1.7.10.4


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

end of thread, other threads:[~2012-10-30 21:02 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-10-29 13:40 [PATCH 0/8 v2:wqa] pm9g45/pm9253/pm9261: add 1-wire support Jean-Christophe PLAGNIOL-VILLARD
2012-10-29 13:46 ` [PATCH 1/8] arm: at91: add gpio_is_valid support Jean-Christophe PLAGNIOL-VILLARD
2012-10-29 13:46   ` [PATCH 2/8] w1: introduce helper to generate mac address from 1-wire id Jean-Christophe PLAGNIOL-VILLARD
2012-10-29 22:24     ` Sascha Hauer
2012-10-29 13:46   ` [PATCH 3/8] pm9g45: add 1-wire support Jean-Christophe PLAGNIOL-VILLARD
2012-10-29 13:47   ` [PATCH 4/8] pm9g45: use w1 serial number to generate local mac address Jean-Christophe PLAGNIOL-VILLARD
2012-10-29 13:47   ` [PATCH 5/8] pm9263: add 1-wire support Jean-Christophe PLAGNIOL-VILLARD
2012-10-29 13:47   ` [PATCH 6/8] pm9263: use w1 serial number to generate local mac address Jean-Christophe PLAGNIOL-VILLARD
2012-10-29 13:47   ` [PATCH 7/8] pm9261: add 1-wire support Jean-Christophe PLAGNIOL-VILLARD
2012-10-29 13:47   ` [PATCH 8/8] pm9261: use w1 serial number to generate local mac address Jean-Christophe PLAGNIOL-VILLARD
2012-10-30  7:32   ` [PATCH 1/8] arm: at91: add gpio_is_valid support Sascha Hauer
2012-10-30  8:41     ` Jean-Christophe PLAGNIOL-VILLARD
  -- strict thread matches above, loose matches on Subject: below --
2012-10-30 20:54 [PATCH 0/8 v3] pm9g45/pm9253/pm9261: add 1-wire support Jean-Christophe PLAGNIOL-VILLARD
2012-10-30 21:00 ` [PATCH 1/8] arm: at91: add gpio_is_valid support Jean-Christophe PLAGNIOL-VILLARD
2012-10-30 21:00   ` [PATCH 2/8] w1: introduce helper to generate mac address from 1-wire id Jean-Christophe PLAGNIOL-VILLARD
2012-10-28  0:21 [PATCH 0/8] pm9g45/pm9253/pm9261: add 1-wire support Jean-Christophe PLAGNIOL-VILLARD
2012-10-28  0:24 ` [PATCH 1/8] arm: at91: add gpio_is_valid support Jean-Christophe PLAGNIOL-VILLARD
2012-10-28  0:24   ` [PATCH 2/8] w1: introduce helper to generate mac address from 1-wire id Jean-Christophe PLAGNIOL-VILLARD
2012-10-29  8:33     ` Sascha Hauer
2012-10-29 11:29       ` Jean-Christophe PLAGNIOL-VILLARD

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox