@ -254,7 +254,7 @@ static int sdhci_set_clock(struct mmc *mmc, unsigned int clock)
if ( clock = = 0 )
return 0 ;
if ( ( host - > version & SDHCI_SPEC_VER_MASK ) > = SDHCI_SPEC_300 ) {
if ( SDHCI_GET_VERSION ( host ) > = SDHCI_SPEC_300 ) {
/* Version 3.00 divisors must be a multiple of 2. */
if ( mmc - > f_max < = clock )
div = 1 ;
@ -347,10 +347,11 @@ void sdhci_set_ios(struct mmc *mmc)
ctrl = sdhci_readb ( host , SDHCI_HOST_CONTROL ) ;
if ( mmc - > bus_width = = 8 ) {
ctrl & = ~ SDHCI_CTRL_4BITBUS ;
if ( ( host - > version & SDHCI_SPEC_VER_MASK ) > = SDHCI_SPEC_300 )
if ( ( SDHCI_GET_VERSION ( host ) > = SDHCI_SPEC_300 ) | |
( host - > quirks & SDHCI_QUIRK_USE_WIDE8 ) )
ctrl | = SDHCI_CTRL_8BITBUS ;
} else {
if ( ( host - > version & SDHCI_SPEC_VER_MASK ) > = SDHCI_SPEC_300 )
if ( SDHCI_GET_VERSION ( host ) > = SDHCI_SPEC_300 )
ctrl & = ~ SDHCI_CTRL_8BITBUS ;
if ( mmc - > bus_width = = 4 )
ctrl | = SDHCI_CTRL_4BITBUS ;
@ -437,7 +438,7 @@ int add_sdhci(struct sdhci_host *host, u32 max_clk, u32 min_clk)
if ( max_clk )
mmc - > f_max = max_clk ;
else {
if ( ( host - > version & SDHCI_SPEC_VER_MASK ) > = SDHCI_SPEC_300 )
if ( SDHCI_GET_VERSION ( host ) > = SDHCI_SPEC_300 )
mmc - > f_max = ( caps & SDHCI_CLOCK_V3_BASE_MASK )
> > SDHCI_CLOCK_BASE_SHIFT ;
else
@ -452,7 +453,7 @@ int add_sdhci(struct sdhci_host *host, u32 max_clk, u32 min_clk)
if ( min_clk )
mmc - > f_min = min_clk ;
else {
if ( ( host - > version & SDHCI_SPEC_VER_MASK ) > = SDHCI_SPEC_300 )
if ( SDHCI_GET_VERSION ( host ) > = SDHCI_SPEC_300 )
mmc - > f_min = mmc - > f_max / SDHCI_MAX_DIV_SPEC_300 ;
else
mmc - > f_min = mmc - > f_max / SDHCI_MAX_DIV_SPEC_200 ;
@ -470,7 +471,7 @@ int add_sdhci(struct sdhci_host *host, u32 max_clk, u32 min_clk)
mmc - > voltages | = host - > voltages ;
mmc - > host_caps = MMC_MODE_HS | MMC_MODE_HS_52MHz | MMC_MODE_4BIT ;
if ( ( host - > version & SDHCI_SPEC_VER_MASK ) > = SDHCI_SPEC_300 ) {
if ( SDHCI_GET_VERSION ( host ) > = SDHCI_SPEC_300 ) {
if ( caps & SDHCI_CAN_DO_8BIT )
mmc - > host_caps | = MMC_MODE_8BIT ;
}