On bootup the emmc's hw partition is always set to 0 and the partition 
table is read from it. When switching to another hw partition the 
partition table's id is not updated but instead the old one from 
hw partition 0 is used. If there is no partition table on hw partition 0
then the code will terminate and return error even if the desired hw 
partition contains a perfectly fine partition table. This fix updates 
the partition table struct to correspond to the specified hw partition 
before testing if the partition table is valid or not.

Signed-off-by: Erik Tideman <[email protected]>
---
 disk/part.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/disk/part.c b/disk/part.c
index 909712e..70a38c2 100644
--- a/disk/part.c
+++ b/disk/part.c
@@ -493,6 +493,14 @@ int get_device(const char *ifname, const char 
*dev_hwpart_str,
                goto cleanup;
        }
 
+    /*
+    * Updates the partition table for the specified hw partition.
+    * Does not need to be done for hwpart 0 since it is default and
+    * already loaded.
+    */
+       if(hwpart != 0)
+        init_part(*dev_desc);
+
 cleanup:
        free(dup_str);
        return dev;
-- 
2.5.0
_______________________________________________
U-Boot mailing list
[email protected]
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to