On Mon, Jan 23, 2023 at 10:33:05AM +0100, Sascha Hauer wrote: > And here is the point where you have to request that the EEPROM is > actually availabe to support the deep probe mechanism. Before reading > the EEPROM add a call to: > > of_device_ensure_probed_by_alias("eeprom0"); > > Nowadays the read-MAC-address-from-EEPROM thingy would likely be done > using nvmem cells which would boil this code down to device tree changes > only. If you're feeling brave you could change this, I won't insist on > it though. > > Sascha Hey Sascha, I did some refactoring today based on your suggestions and now have this code: rc = of_device_ensure_probed_by_alias("eeprom0"); if (rc < 0) { pr_err("Unable to probe Novena EEPROM: %s\n", strerror(-rc)); return NULL; } rc = read_file_2("/dev/eeprom0", &read, &eeprom, max); This gets me this bootup sequence: of_platform_device_create: register device 21a8000.i2c@xxxxxxxxxx, io=0x021a8000 register_device: 21a8000.i2c@xxxxxxxxxx probe-> 21a8000.i2c@xxxxxxxxxx imx-iomuxv3 20e0000.pinctrl@xxxxxxxxxx: set state: /soc/bus@2000000/pinctrl@20e0000/i2c3grp-novena __request_region ok: 0x021a8000:0x021abfff flags=0x0 of_get_named_gpio_flags: cannot parse sda-gpios property: -2 of_get_named_gpio_flags: cannot parse scl-gpios property: -2 <NULL>: <i2c_fsl_set_clk> I2C_CLK=66000000, REQ DIV=660 <NULL>: <i2c_fsl_set_clk> IFDR[IC]=0x39, REAL DIV=768 register_device: i2c0 register_device: es83280 es83280: registered on bus 0, chip->addr 0x11 register_device: 24c5120 probe-> 24c5120 of_get_named_gpio_flags: cannot parse wp-gpios property: -2 at24 24c5120: Registering nvmem device eeprom0 register_device: eeprom00 at24 24c5120: registered on bus 0, chip->addr 0x56 eeprom00: read ofs: 0x00000000 count: 0x00000014 i2c0: master_xfer[0] W, addr=0x56, len=2 i2c0: master_xfer[1] R, addr=0x56, len=20 i2c0: timeout waiting for status set 0x20, cur status: 0x93 at24 24c5120: read 20@0 --> -95 (1046280961) Unable to read Novena EEPROM: Connection timed out After the shell boots I'm able to read /dev/eeprom0 just fine. John.