* [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
* 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
* [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 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 0/8 v3] pm9g45/pm9253/pm9261: add 1-wire support @ 2012-10-30 20:54 Jean-Christophe PLAGNIOL-VILLARD 2012-10-30 21:00 ` [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-30 20:54 UTC (permalink / raw) To: barebox Hi, v3: comment 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 7fb0cb2ce2f7800341ab8de711dccbd2c4753c84: pm9261: use w1 serial number to generate local mac address (2012-10-30 13:44:54 +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 | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 141 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-30 20:54 [PATCH 0/8 v3] pm9g45/pm9253/pm9261: add 1-wire support Jean-Christophe PLAGNIOL-VILLARD @ 2012-10-30 21:00 ` 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 0 siblings, 1 reply; 16+ messages in thread From: Jean-Christophe PLAGNIOL-VILLARD @ 2012-10-30 21:00 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-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
* [PATCH 0/8] pm9g45/pm9253/pm9261: add 1-wire support @ 2012-10-28 0:21 Jean-Christophe PLAGNIOL-VILLARD 2012-10-28 0:24 ` [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-28 0:21 UTC (permalink / raw) To: barebox Hi, 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 The following changes since commit 91413767b35d5f9f66d14376c925386a42d1db0e: 1-wire: add ds2433 support (2012-10-27 12:47:20 +0800) are available in the git repository at: git://git.jcrosoft.org/barebox.git delivery/ronetix_w1 for you to fetch changes up to 32c1cc8c210614799454e63cd2728470ab8732b5: pm9261: use w1 serial number to generate local mac address (2012-10-27 17:08:03 +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 | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 140 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-28 0:21 [PATCH 0/8] pm9g45/pm9253/pm9261: add 1-wire support Jean-Christophe PLAGNIOL-VILLARD @ 2012-10-28 0:24 ` 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 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> --- 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..4edfd25 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 < 0) + 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-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
* 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
* 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
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