From b1a52928e7bf4126bbe014ee434bd91c4f804bba Mon Sep 17 00:00:00 2001 From: Jan Remmet Date: Fri, 19 Jun 2015 09:41:37 +0200 Subject: libdt: fix detection of eeprom devicepath If nodepath can directly be translated to a device, the device can also be a eeprom. Set default size to 0. The real size can be got from the path. Signed-off-by: Jan Remmet Signed-off-by: Marc Kleine-Budde --- src/libdt.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/libdt.c b/src/libdt.c index 925cca8..7a1fb55 100644 --- a/src/libdt.c +++ b/src/libdt.c @@ -2225,16 +2225,20 @@ int of_get_devicepath(struct device_node *partition_node, char **devpath, off_t int ret; *offset = 0; + *size = 0; /* * simplest case: This nodepath can directly be translated into - * a mtd device. This requires that the mtd partitions have a - * device_node set in the kernel. This requires an out-of-tree kernel - * patch. + * a mtd or eeprom device. A mtd device requires that the mtd + * partitions have a device_node set in the kernel. This requires + * an out-of-tree kernel patch. */ dev = of_find_device_by_node_path(partition_node->full_name); if (dev) - return udev_parse_mtd(dev, devpath, size); + if (udev_device_is_eeprom(dev)) + return udev_parse_eeprom(dev, devpath); + else + return udev_parse_mtd(dev, devpath, size); /* * Ok, the partition node has no udev_device. Try parent node. -- cgit v1.2.3