On 12 May 2017 at 12:16, Jean-Jacques Hiblot <jjhib...@ti.com> wrote: > This will be reused later in the selection of high speed and ddr modes. > > Signed-off-by: Jean-Jacques Hiblot <jjhib...@ti.com> > --- > drivers/mmc/mmc.c | 49 +++++++++++++++++++++++++++++-------------------- > 1 file changed, 29 insertions(+), 20 deletions(-)
Reviewed-by: Simon Glass <s...@chromium.org> Please add a function comment. > > diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c > index 4bd6a96..344d760 100644 > --- a/drivers/mmc/mmc.c > +++ b/drivers/mmc/mmc.c > @@ -1146,10 +1146,35 @@ static int sd_select_bus_freq_width(struct mmc *mmc) > return 0; > } > > -static int mmc_select_bus_freq_width(struct mmc *mmc) > +static int mmc_read_and_compare_ext_csd(struct mmc *mmc) > { > - ALLOC_CACHE_ALIGN_BUFFER(u8, test_csd, MMC_MAX_BLOCK_LEN); > + int err; > const u8 *ext_csd = mmc->ext_csd; > + ALLOC_CACHE_ALIGN_BUFFER(u8, test_csd, MMC_MAX_BLOCK_LEN); > + > + err = mmc_send_ext_csd(mmc, test_csd); > + if (err) > + return err; > + > + /* Only compare read only fields */ > + if (ext_csd[EXT_CSD_PARTITIONING_SUPPORT] > + == test_csd[EXT_CSD_PARTITIONING_SUPPORT] && > + ext_csd[EXT_CSD_HC_WP_GRP_SIZE] > + == test_csd[EXT_CSD_HC_WP_GRP_SIZE] && > + ext_csd[EXT_CSD_REV] > + == test_csd[EXT_CSD_REV] && > + ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE] > + == test_csd[EXT_CSD_HC_ERASE_GRP_SIZE] && > + memcmp(&ext_csd[EXT_CSD_SEC_CNT], > + &test_csd[EXT_CSD_SEC_CNT], 4) == 0) > + return 0; > + > + return -EBADMSG; > +} > + > + > +static int mmc_select_bus_freq_width(struct mmc *mmc) > +{ > /* An array of possible bus widths in order of preference */ > static const unsigned ext_csd_bits[] = { > EXT_CSD_DDR_BUS_WIDTH_8, > @@ -1222,25 +1247,9 @@ static int mmc_select_bus_freq_width(struct mmc *mmc) > mmc->ddr_mode = (caps & MMC_MODE_DDR_52MHz) ? 1 : 0; > mmc_set_bus_width(mmc, widths[idx]); > > - err = mmc_send_ext_csd(mmc, test_csd); > - > - if (err) > - continue; > - > - /* Only compare read only fields */ > - if (ext_csd[EXT_CSD_PARTITIONING_SUPPORT] > - == test_csd[EXT_CSD_PARTITIONING_SUPPORT] && > - ext_csd[EXT_CSD_HC_WP_GRP_SIZE] > - == test_csd[EXT_CSD_HC_WP_GRP_SIZE] && > - ext_csd[EXT_CSD_REV] > - == test_csd[EXT_CSD_REV] && > - ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE] > - == test_csd[EXT_CSD_HC_ERASE_GRP_SIZE] && > - memcmp(&ext_csd[EXT_CSD_SEC_CNT], > - &test_csd[EXT_CSD_SEC_CNT], 4) == 0) > + err = mmc_read_and_compare_ext_csd(mmc); > + if (!err) > break; > - else > - err = -EBADMSG; > } > > if (err) > -- > 1.9.1 > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot