At the moment barebox can't work correctly with more that one at24 eeprom because drivers/eeprom/at24.c tries to register all eeproms as /dev/eeprom0. I have tested this on a system with three at24 eeproms, please see this dts-file fragment: &i2c0 { status = "okay"; i2c-switch@70 { compatible = "nxp,pca9545"; #address-cells = <1>; #size-cells = <0>; i2c-parent = <&i2c0>; reg = <0x70>; i2c@1 { /* misc devices */ reg = <1>; eeprom: at24@50 { compatible = "at24,24c1024"; reg = <0x50>; }; }; i2c@2 { /* SPD */ reg = <2>; spd: at24@53 { compatible = "at24,spd"; reg = <0x53>; }; }; i2c@3 { /* DVI/HDMI */ reg = <3>; ddc: at24@50 { compatible = "at24,24c02"; reg = <0x50>; }; }; }; }; A possible solution is using aliases for naming devices under dev/, e.g.: / { aliases { eeprom = &eeprom; spd = &spd; ddc = &ddc; }; } So we'll get these files in the /dev directory: crw------- 256 /dev/ddc crw------- 131072 /dev/eeprom cr-------- 256 /dev/spd Signed-off-by: Antony Pavlov <antonynpavlov@xxxxxxxxx> --- drivers/eeprom/at24.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/eeprom/at24.c b/drivers/eeprom/at24.c index 3c0a7a9..85fb035 100644 --- a/drivers/eeprom/at24.c +++ b/drivers/eeprom/at24.c @@ -379,6 +379,7 @@ static int at24_probe(struct device_d *dev) struct at24_data *at24; int err; unsigned i, num_addresses; + const char *eeprom_name = NULL; if (dev->platform_data) { chip = *(struct at24_platform_data *)dev->platform_data; @@ -429,7 +430,17 @@ static int at24_probe(struct device_d *dev) at24->chip = chip; at24->num_addresses = num_addresses; - at24->cdev.name = asprintf("eeprom%d", dev->id); + + if (dev->device_node) { + eeprom_name = of_alias_get(dev->device_node); + } + + if (!eeprom_name) { + at24->cdev.name = asprintf("eeprom%d", dev->id); + } else { + at24->cdev.name = eeprom_name; + } + at24->cdev.priv = at24; at24->cdev.dev = dev; at24->cdev.ops = &at24->fops; -- 2.6.2 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox