Commit a845c76741394a6cfb3fbcc6715212decb79dfaf
Committed by
Ji Luo
1 parent
ded8e94591
Exists in
smarc_8mq-imx_v2020.04_5.4.24_2.1.0
and in
1 other branch
MA-14916-7 comply with mmc struct definition in avb library
Driver Module may be used in SPL, with CONFIG_BLK enabled for U-Boot, CONFIG_SPL_BLK will be enabled, struct mmc definition will be different. comply with that mmc struct definition in fsl_avbkey.c file to handle conditions when DM is used in SPL. Change-Id: I632600556e764b25228ba467a5e5141cf3fc3dfe Signed-off-by: faqiang.zhu <faqiang.zhu@nxp.com> (cherry picked from commit de905a8a3c6dfdf9241a188b2e22c76dbef851c1)
Showing 1 changed file with 46 additions and 7 deletions Side-by-side Diff
lib/avb/fsl/fsl_avbkey.c
... | ... | @@ -79,7 +79,7 @@ |
79 | 79 | printf("boota: cannot find '%d' mmc device\n", mmcc); |
80 | 80 | return -1; |
81 | 81 | } |
82 | -#ifndef CONFIG_BLK | |
82 | +#if !CONFIG_IS_ENABLED(BLK) | |
83 | 83 | original_part = mmc->block_dev.hwpart; |
84 | 84 | dev_desc = blk_get_dev("mmc", mmcc); |
85 | 85 | #else |
... | ... | @@ -89,7 +89,7 @@ |
89 | 89 | printf("** Block device MMC %d not supported\n", mmcc); |
90 | 90 | return -1; |
91 | 91 | } |
92 | -#ifdef CONFIG_BLK | |
92 | +#if CONFIG_IS_ENABLED(BLK) | |
93 | 93 | original_part = dev_desc->hwpart; |
94 | 94 | #endif |
95 | 95 | |
... | ... | @@ -107,7 +107,7 @@ |
107 | 107 | ret = -1; |
108 | 108 | goto fail; |
109 | 109 | } |
110 | -#ifndef CONFIG_BLK | |
110 | +#if !CONFIG_IS_ENABLED(BLK) | |
111 | 111 | mmc->block_dev.hwpart = KEYSLOT_HWPARTITION_ID; |
112 | 112 | #else |
113 | 113 | dev_desc->hwpart = KEYSLOT_HWPARTITION_ID; |
... | ... | @@ -126,7 +126,7 @@ |
126 | 126 | if (fill != NULL) |
127 | 127 | free(fill); |
128 | 128 | /* Return to original partition */ |
129 | -#ifndef CONFIG_BLK | |
129 | +#if !CONFIG_IS_ENABLED(BLK) | |
130 | 130 | if (mmc->block_dev.hwpart != original_part) { |
131 | 131 | if (mmc_switch_part(mmc, original_part) != 0) |
132 | 132 | return -1; |
133 | 133 | |
134 | 134 | |
135 | 135 | |
136 | 136 | |
137 | 137 | |
... | ... | @@ -159,16 +159,29 @@ |
159 | 159 | return false; |
160 | 160 | } |
161 | 161 | |
162 | +#if !CONFIG_IS_ENABLED(BLK) | |
163 | + original_part = mmc->block_dev.hwpart; | |
164 | + desc = blk_get_dev("mmc", mmcc); | |
165 | +#else | |
162 | 166 | desc = mmc_get_blk_desc(mmc); |
163 | 167 | original_part = desc->hwpart; |
168 | +#endif | |
164 | 169 | |
165 | 170 | /* Switch to the RPMB partition */ |
171 | +#if !CONFIG_IS_ENABLED(BLK) | |
172 | + if (mmc->block_dev.hwpart != MMC_PART_RPMB) { | |
173 | +#else | |
166 | 174 | if (desc->hwpart != MMC_PART_RPMB) { |
175 | +#endif | |
167 | 176 | if (mmc_switch_part(mmc, MMC_PART_RPMB) != 0) { |
168 | 177 | printf("ERROR - can't switch to rpmb partition \n"); |
169 | 178 | return false; |
170 | 179 | } |
180 | +#if !CONFIG_IS_ENABLED(BLK) | |
181 | + mmc->block_dev.hwpart = MMC_PART_RPMB; | |
182 | +#else | |
171 | 183 | desc->hwpart = MMC_PART_RPMB; |
184 | +#endif | |
172 | 185 | } |
173 | 186 | |
174 | 187 | /* Try to read the first one block, return count '1' means the rpmb |
175 | 188 | |
176 | 189 | |
177 | 190 | |
... | ... | @@ -181,10 +194,18 @@ |
181 | 194 | ret = true; |
182 | 195 | |
183 | 196 | /* return to original partition. */ |
197 | +#if !CONFIG_IS_ENABLED(BLK) | |
198 | + if (mmc->block_dev.hwpart != original_part) { | |
199 | +#else | |
184 | 200 | if (desc->hwpart != original_part) { |
201 | +#endif | |
185 | 202 | if (mmc_switch_part(mmc, original_part) != 0) |
186 | 203 | ret = false; |
204 | +#if !CONFIG_IS_ENABLED(BLK) | |
205 | + mmc->block_dev.hwpart = original_part; | |
206 | +#else | |
187 | 207 | desc->hwpart = original_part; |
208 | +#endif | |
188 | 209 | } |
189 | 210 | /* remember to free the buffer */ |
190 | 211 | if (buf != NULL) |
... | ... | @@ -536,7 +557,7 @@ |
536 | 557 | printf("boota: cannot find '%d' mmc device\n", mmcc); |
537 | 558 | return -1; |
538 | 559 | } |
539 | -#ifndef CONFIG_BLK | |
560 | +#if !CONFIG_IS_ENABLED(BLK) | |
540 | 561 | original_part = mmc->block_dev.hwpart; |
541 | 562 | dev_desc = blk_get_dev("mmc", mmcc); |
542 | 563 | #else |
... | ... | @@ -595,7 +616,7 @@ |
595 | 616 | } |
596 | 617 | |
597 | 618 | /* program key to mmc */ |
598 | -#ifndef CONFIG_BLK | |
619 | +#if !CONFIG_IS_ENABLED(BLK) | |
599 | 620 | if (mmc->block_dev.hwpart != MMC_PART_RPMB) { |
600 | 621 | if (mmc_switch_part(mmc, MMC_PART_RPMB) != 0) { |
601 | 622 | ret = -1; |
... | ... | @@ -621,7 +642,7 @@ |
621 | 642 | |
622 | 643 | fail: |
623 | 644 | /* Return to original partition */ |
624 | -#ifndef CONFIG_BLK | |
645 | +#if !CONFIG_IS_ENABLED(BLK) | |
625 | 646 | if (mmc->block_dev.hwpart != original_part) { |
626 | 647 | if (mmc_switch_part(mmc, original_part) != 0) |
627 | 648 | ret = -1; |
... | ... | @@ -729,6 +750,7 @@ |
729 | 750 | int ret = 0; |
730 | 751 | char original_part; |
731 | 752 | struct keyslot_package kp; |
753 | + struct blk_desc *dev_desc = NULL; | |
732 | 754 | |
733 | 755 | read_keyslot_package(&kp); |
734 | 756 | if (strcmp(kp.magic, KEYPACK_MAGIC)) { |
735 | 757 | |
736 | 758 | |
737 | 759 | |
... | ... | @@ -744,13 +766,22 @@ |
744 | 766 | fill_secure_keyslot_package(&kp); |
745 | 767 | |
746 | 768 | /* switch to boot1 partition. */ |
769 | +#if !CONFIG_IS_ENABLED(BLK) | |
747 | 770 | original_part = mmc->block_dev.hwpart; |
771 | +#else | |
772 | + dev_desc = mmc_get_blk_desc(mmc); | |
773 | + original_part = dev_desc->hwpart; | |
774 | +#endif | |
748 | 775 | if (mmc_switch_part(mmc, KEYSLOT_HWPARTITION_ID) != 0) { |
749 | 776 | printf("ERROR - can't switch to boot1 partition! \n"); |
750 | 777 | ret = -1; |
751 | 778 | goto fail; |
752 | 779 | } else |
780 | +#if !CONFIG_IS_ENABLED(BLK) | |
753 | 781 | mmc->block_dev.hwpart = KEYSLOT_HWPARTITION_ID; |
782 | +#else | |
783 | + dev_desc->hwpart = KEYSLOT_HWPARTITION_ID; | |
784 | +#endif | |
754 | 785 | /* write power-on write protection for boot1 partition. */ |
755 | 786 | if (mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL, |
756 | 787 | EXT_CSD_BOOT_WP, BOOT1_PWR_WP)) { |
757 | 788 | |
... | ... | @@ -760,11 +791,19 @@ |
760 | 791 | } |
761 | 792 | fail: |
762 | 793 | /* return to original partition. */ |
794 | +#if !CONFIG_IS_ENABLED(BLK) | |
763 | 795 | if (mmc->block_dev.hwpart != original_part) { |
764 | 796 | if (mmc_switch_part(mmc, original_part) != 0) |
765 | 797 | return -1; |
766 | 798 | mmc->block_dev.hwpart = original_part; |
767 | 799 | } |
800 | +#else | |
801 | + if (dev_desc->hwpart != original_part) { | |
802 | + if (mmc_switch_part(mmc, original_part) != 0) | |
803 | + return -1; | |
804 | + dev_desc->hwpart = original_part; | |
805 | + } | |
806 | +#endif | |
768 | 807 | |
769 | 808 | return ret; |
770 | 809 | } |