Commit a51ec63b85edbc6f8987069d0a60eec09d4f35c8
Committed by
Tom Rini
1 parent
782cfbb259
Exists in
master
and in
53 other branches
image: Use fit_image_load() to load ramdisk
Use the new common code to load a ramdisk. The functionality should not change. Signed-off-by: Simon Glass <sjg@chromium.org>
Showing 3 changed files with 16 additions and 169 deletions Side-by-side Diff
common/image-fit.c
... | ... | @@ -1371,25 +1371,6 @@ |
1371 | 1371 | } |
1372 | 1372 | |
1373 | 1373 | /** |
1374 | - * fit_conf_get_ramdisk_node - get ramdisk image node offset that corresponds to | |
1375 | - * a given configuration | |
1376 | - * @fit: pointer to the FIT format image header | |
1377 | - * @noffset: configuration node offset | |
1378 | - * | |
1379 | - * fit_conf_get_ramdisk_node() retrives ramdisk image node unit name from | |
1380 | - * configuration FIT_KERNEL_PROP property and translates it to the node | |
1381 | - * offset. | |
1382 | - * | |
1383 | - * returns: | |
1384 | - * image node offset when found (>=0) | |
1385 | - * negative number on failure (FDT_ERR_* code) | |
1386 | - */ | |
1387 | -int fit_conf_get_ramdisk_node(const void *fit, int noffset) | |
1388 | -{ | |
1389 | - return fit_conf_get_prop_node(fit, noffset, FIT_RAMDISK_PROP); | |
1390 | -} | |
1391 | - | |
1392 | -/** | |
1393 | 1374 | * fit_conf_get_fdt_node - get fdt image node offset that corresponds to |
1394 | 1375 | * a given configuration |
1395 | 1376 | * @fit: pointer to the FIT format image header |
... | ... | @@ -1465,49 +1446,6 @@ |
1465 | 1446 | } |
1466 | 1447 | |
1467 | 1448 | return 0; |
1468 | -} | |
1469 | - | |
1470 | -/** | |
1471 | - * fit_check_ramdisk - verify FIT format ramdisk subimage | |
1472 | - * @fit_hdr: pointer to the FIT ramdisk header | |
1473 | - * @rd_noffset: ramdisk subimage node offset within FIT image | |
1474 | - * @arch: requested ramdisk image architecture type | |
1475 | - * @verify: data CRC verification flag | |
1476 | - * | |
1477 | - * fit_check_ramdisk() verifies integrity of the ramdisk subimage and from | |
1478 | - * specified FIT image. | |
1479 | - * | |
1480 | - * returns: | |
1481 | - * 1, on success | |
1482 | - * 0, on failure | |
1483 | - */ | |
1484 | -int fit_check_ramdisk(const void *fit, int rd_noffset, uint8_t arch, | |
1485 | - int verify) | |
1486 | -{ | |
1487 | - fit_image_print(fit, rd_noffset, " "); | |
1488 | - | |
1489 | - if (verify) { | |
1490 | - puts(" Verifying Hash Integrity ... "); | |
1491 | - if (!fit_image_verify(fit, rd_noffset)) { | |
1492 | - puts("Bad Data Hash\n"); | |
1493 | - bootstage_error(BOOTSTAGE_ID_FIT_RD_HASH); | |
1494 | - return 0; | |
1495 | - } | |
1496 | - puts("OK\n"); | |
1497 | - } | |
1498 | - | |
1499 | - bootstage_mark(BOOTSTAGE_ID_FIT_RD_CHECK_ALL); | |
1500 | - if (!fit_image_check_os(fit, rd_noffset, IH_OS_LINUX) || | |
1501 | - !fit_image_check_arch(fit, rd_noffset, arch) || | |
1502 | - !fit_image_check_type(fit, rd_noffset, IH_TYPE_RAMDISK)) { | |
1503 | - printf("No Linux %s Ramdisk Image\n", | |
1504 | - genimg_get_arch_name(arch)); | |
1505 | - bootstage_error(BOOTSTAGE_ID_FIT_RD_CHECK_ALL); | |
1506 | - return 0; | |
1507 | - } | |
1508 | - | |
1509 | - bootstage_mark(BOOTSTAGE_ID_FIT_RD_CHECK_ALL_OK); | |
1510 | - return 1; | |
1511 | 1449 | } |
1512 | 1450 | |
1513 | 1451 | int fit_get_node_from_config(bootm_headers_t *images, const char *prop_name, |
common/image.c
... | ... | @@ -51,6 +51,7 @@ |
51 | 51 | |
52 | 52 | #include <u-boot/md5.h> |
53 | 53 | #include <sha1.h> |
54 | +#include <asm/errno.h> | |
54 | 55 | #include <asm/io.h> |
55 | 56 | |
56 | 57 | #ifdef CONFIG_CMD_BDI |
57 | 58 | |
... | ... | @@ -810,14 +811,10 @@ |
810 | 811 | char *end; |
811 | 812 | #endif |
812 | 813 | #if defined(CONFIG_FIT) |
813 | - void *fit_hdr; | |
814 | 814 | const char *fit_uname_config = NULL; |
815 | 815 | const char *fit_uname_ramdisk = NULL; |
816 | 816 | ulong default_addr; |
817 | 817 | int rd_noffset; |
818 | - int cfg_noffset; | |
819 | - const void *data; | |
820 | - size_t size; | |
821 | 818 | #endif |
822 | 819 | |
823 | 820 | *rd_start = 0; |
824 | 821 | |
825 | 822 | |
... | ... | @@ -865,32 +862,16 @@ |
865 | 862 | #if defined(CONFIG_FIT) |
866 | 863 | } else { |
867 | 864 | /* use FIT configuration provided in first bootm |
868 | - * command argument | |
865 | + * command argument. If the property is not defined, | |
866 | + * quit silently. | |
869 | 867 | */ |
870 | 868 | rd_addr = map_to_sysmem(images->fit_hdr_os); |
871 | - fit_uname_config = images->fit_uname_cfg; | |
872 | - debug("* ramdisk: using config '%s' from image " | |
873 | - "at 0x%08lx\n", | |
874 | - fit_uname_config, rd_addr); | |
875 | - | |
876 | - /* | |
877 | - * Check whether configuration has ramdisk defined, | |
878 | - * if not, don't try to use it, quit silently. | |
879 | - */ | |
880 | - fit_hdr = images->fit_hdr_os; | |
881 | - cfg_noffset = fit_conf_get_node(fit_hdr, | |
882 | - fit_uname_config); | |
883 | - if (cfg_noffset < 0) { | |
884 | - debug("* ramdisk: no such config\n"); | |
885 | - return 1; | |
886 | - } | |
887 | - | |
888 | - rd_noffset = fit_conf_get_ramdisk_node(fit_hdr, | |
889 | - cfg_noffset); | |
890 | - if (rd_noffset < 0) { | |
891 | - debug("* ramdisk: no ramdisk in config\n"); | |
869 | + rd_noffset = fit_get_node_from_config(images, | |
870 | + FIT_RAMDISK_PROP, rd_addr); | |
871 | + if (rd_noffset == -ENOLINK) | |
892 | 872 | return 0; |
893 | - } | |
873 | + else if (rd_noffset < 0) | |
874 | + return 1; | |
894 | 875 | } |
895 | 876 | #endif |
896 | 877 | |
897 | 878 | |
898 | 879 | |
... | ... | @@ -921,87 +902,16 @@ |
921 | 902 | break; |
922 | 903 | #if defined(CONFIG_FIT) |
923 | 904 | case IMAGE_FORMAT_FIT: |
924 | - fit_hdr = buf; | |
925 | - printf("## Loading init Ramdisk from FIT " | |
926 | - "Image at %08lx ...\n", rd_addr); | |
927 | - | |
928 | - bootstage_mark(BOOTSTAGE_ID_FIT_RD_FORMAT); | |
929 | - if (!fit_check_format(fit_hdr)) { | |
930 | - puts("Bad FIT ramdisk image format!\n"); | |
931 | - bootstage_error( | |
932 | - BOOTSTAGE_ID_FIT_RD_FORMAT); | |
905 | + rd_noffset = fit_image_load(images, FIT_RAMDISK_PROP, | |
906 | + rd_addr, &fit_uname_ramdisk, | |
907 | + fit_uname_config, arch, | |
908 | + IH_TYPE_RAMDISK, | |
909 | + BOOTSTAGE_ID_FIT_RD_START, | |
910 | + FIT_LOAD_REQUIRED, &rd_data, &rd_len); | |
911 | + if (rd_noffset < 0) | |
933 | 912 | return 1; |
934 | - } | |
935 | - bootstage_mark(BOOTSTAGE_ID_FIT_RD_FORMAT_OK); | |
936 | 913 | |
937 | - if (!fit_uname_ramdisk) { | |
938 | - /* | |
939 | - * no ramdisk image node unit name, try to get config | |
940 | - * node first. If config unit node name is NULL | |
941 | - * fit_conf_get_node() will try to find default config node | |
942 | - */ | |
943 | - bootstage_mark( | |
944 | - BOOTSTAGE_ID_FIT_RD_NO_UNIT_NAME); | |
945 | - cfg_noffset = fit_conf_get_node(fit_hdr, | |
946 | - fit_uname_config); | |
947 | - if (cfg_noffset < 0) { | |
948 | - puts("Could not find configuration " | |
949 | - "node\n"); | |
950 | - bootstage_error( | |
951 | - BOOTSTAGE_ID_FIT_RD_NO_UNIT_NAME); | |
952 | - return 1; | |
953 | - } | |
954 | - fit_uname_config = fdt_get_name(fit_hdr, | |
955 | - cfg_noffset, NULL); | |
956 | - printf(" Using '%s' configuration\n", | |
957 | - fit_uname_config); | |
958 | - | |
959 | - rd_noffset = fit_conf_get_ramdisk_node(fit_hdr, | |
960 | - cfg_noffset); | |
961 | - fit_uname_ramdisk = fit_get_name(fit_hdr, | |
962 | - rd_noffset, NULL); | |
963 | - } else { | |
964 | - /* get ramdisk component image node offset */ | |
965 | - bootstage_mark( | |
966 | - BOOTSTAGE_ID_FIT_RD_UNIT_NAME); | |
967 | - rd_noffset = fit_image_get_node(fit_hdr, | |
968 | - fit_uname_ramdisk); | |
969 | - } | |
970 | - if (rd_noffset < 0) { | |
971 | - puts("Could not find subimage node\n"); | |
972 | - bootstage_error(BOOTSTAGE_ID_FIT_RD_SUBNODE); | |
973 | - return 1; | |
974 | - } | |
975 | - | |
976 | - printf(" Trying '%s' ramdisk subimage\n", | |
977 | - fit_uname_ramdisk); | |
978 | - | |
979 | - bootstage_mark(BOOTSTAGE_ID_FIT_RD_CHECK); | |
980 | - if (!fit_check_ramdisk(fit_hdr, rd_noffset, arch, | |
981 | - images->verify)) | |
982 | - return 1; | |
983 | - | |
984 | - /* get ramdisk image data address and length */ | |
985 | - if (fit_image_get_data(fit_hdr, rd_noffset, &data, | |
986 | - &size)) { | |
987 | - puts("Could not find ramdisk subimage data!\n"); | |
988 | - bootstage_error(BOOTSTAGE_ID_FIT_RD_GET_DATA); | |
989 | - return 1; | |
990 | - } | |
991 | - bootstage_mark(BOOTSTAGE_ID_FIT_RD_GET_DATA_OK); | |
992 | - | |
993 | - rd_data = (ulong)data; | |
994 | - rd_len = size; | |
995 | - | |
996 | - if (fit_image_get_load(fit_hdr, rd_noffset, &rd_load)) { | |
997 | - puts("Can't get ramdisk subimage load " | |
998 | - "address!\n"); | |
999 | - bootstage_error(BOOTSTAGE_ID_FIT_RD_LOAD); | |
1000 | - return 1; | |
1001 | - } | |
1002 | - bootstage_mark(BOOTSTAGE_ID_FIT_RD_LOAD); | |
1003 | - | |
1004 | - images->fit_hdr_rd = fit_hdr; | |
914 | + images->fit_hdr_rd = map_sysmem(rd_addr, 0); | |
1005 | 915 | images->fit_uname_rd = fit_uname_ramdisk; |
1006 | 916 | images->fit_noffset_rd = rd_noffset; |
1007 | 917 | break; |
include/image.h
... | ... | @@ -777,7 +777,6 @@ |
777 | 777 | int fit_conf_find_compat(const void *fit, const void *fdt); |
778 | 778 | int fit_conf_get_node(const void *fit, const char *conf_uname); |
779 | 779 | int fit_conf_get_kernel_node(const void *fit, int noffset); |
780 | -int fit_conf_get_ramdisk_node(const void *fit, int noffset); | |
781 | 780 | int fit_conf_get_fdt_node(const void *fit, int noffset); |
782 | 781 | |
783 | 782 | /** |