| .. | .. |
|---|
| 44 | 44 | #endif |
|---|
| 45 | 45 | |
|---|
| 46 | 46 | #ifdef CONFIG_DM_MMC |
|---|
| 47 | | -static int pmbr_part_valid(struct partition *part) |
|---|
| 48 | | -{ |
|---|
| 49 | | - if (part->sys_ind == EFI_PMBR_OSTYPE_EFI_GPT && |
|---|
| 50 | | - get_unaligned_le32(&part->start_sect) == 1UL) { |
|---|
| 51 | | - return 1; |
|---|
| 52 | | - } |
|---|
| 53 | | - |
|---|
| 54 | | - return 0; |
|---|
| 55 | | -} |
|---|
| 56 | | - |
|---|
| 57 | 47 | static int is_pmbr_valid(legacy_mbr * mbr) |
|---|
| 58 | 48 | { |
|---|
| 59 | 49 | int i = 0; |
|---|
| .. | .. |
|---|
| 62 | 52 | return 0; |
|---|
| 63 | 53 | |
|---|
| 64 | 54 | for (i = 0; i < 4; i++) { |
|---|
| 65 | | - if (pmbr_part_valid(&mbr->partition_record[i])) { |
|---|
| 55 | + if (mbr->partition_record[i].sys_ind == 0xc) |
|---|
| 66 | 56 | return 1; |
|---|
| 67 | | - } |
|---|
| 68 | 57 | } |
|---|
| 58 | + |
|---|
| 69 | 59 | return 0; |
|---|
| 70 | 60 | } |
|---|
| 71 | 61 | |
|---|
| .. | .. |
|---|
| 76 | 66 | /* Read legacy MBR from block 0 and validate it */ |
|---|
| 77 | 67 | if ((blk_dread(dev_desc, 0, 1, (ulong *)legacymbr) != 1) |
|---|
| 78 | 68 | || (is_pmbr_valid(legacymbr) != 1)) { |
|---|
| 79 | | - return -1; |
|---|
| 69 | + return 0; |
|---|
| 80 | 70 | } |
|---|
| 81 | 71 | |
|---|
| 82 | | - return 0; |
|---|
| 72 | + return 1; |
|---|
| 83 | 73 | } |
|---|
| 84 | 74 | #endif |
|---|
| 85 | 75 | |
|---|
| .. | .. |
|---|
| 262 | 252 | return envf_num; |
|---|
| 263 | 253 | } |
|---|
| 264 | 254 | |
|---|
| 265 | | -#ifdef CONFIG_ENV_PARTITION |
|---|
| 266 | | -static int envf_add_partition_bootargs(void) |
|---|
| 267 | | -{ |
|---|
| 268 | | - char *part_list; |
|---|
| 269 | | - char *bootargs; |
|---|
| 270 | | - int i; |
|---|
| 271 | | - |
|---|
| 272 | | - for (i = 0; i < ARRAY_SIZE(part_type); i++) { |
|---|
| 273 | | - part_list = env_get(part_type[i]); |
|---|
| 274 | | - if (part_list) |
|---|
| 275 | | - break; |
|---|
| 276 | | - } |
|---|
| 277 | | - if (!part_list) |
|---|
| 278 | | - return -EINVAL; |
|---|
| 279 | | - |
|---|
| 280 | | - bootargs = calloc(1, strlen(part_list) + strlen(part_type[i]) + 2); |
|---|
| 281 | | - if (!bootargs) |
|---|
| 282 | | - return -ENOMEM; |
|---|
| 283 | | - |
|---|
| 284 | | - strcat(bootargs, part_type[i]); |
|---|
| 285 | | - strcat(bootargs, "="); |
|---|
| 286 | | - strcat(bootargs, part_list); |
|---|
| 287 | | - env_update("bootargs", bootargs); |
|---|
| 288 | | - free(bootargs); |
|---|
| 289 | | - |
|---|
| 290 | | - return 0; |
|---|
| 291 | | -} |
|---|
| 292 | | -#endif |
|---|
| 293 | | - |
|---|
| 294 | 255 | static int envf_load(void) |
|---|
| 295 | 256 | { |
|---|
| 296 | 257 | struct blk_desc *desc; |
|---|
| .. | .. |
|---|
| 313 | 274 | return -EINTR; |
|---|
| 314 | 275 | } |
|---|
| 315 | 276 | } |
|---|
| 316 | | - |
|---|
| 317 | | -#ifdef CONFIG_ENV_PARTITION |
|---|
| 318 | | - envf_add_partition_bootargs(); |
|---|
| 319 | | -#endif |
|---|
| 320 | 277 | |
|---|
| 321 | 278 | return 0; |
|---|
| 322 | 279 | } |
|---|