Commit a845c76741394a6cfb3fbcc6715212decb79dfaf

Authored by faqiang.zhu
Committed by Ji Luo
1 parent ded8e94591

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 }