In the linux-3.0.35 sd driver.
Reg:SDHCI_HOST_CONTROL2(#define SDHCI_HOST_CONTROL2 0x3E)
From the datasheet,0x3E is part of the retgister uSDHC1_AUTOCMD12_ERR_STATUS,it is a readonly erea.But,the linux kernel source has the write operation:
sdhci_writew(host, ctrl, SDHCI_HOST_CONTROL2);
1.Is there some problem with register write to SDHCI_HOST_CONTROL2(0x3E)
2.The function sdhci_start_signal_voltage_switch can be used to switch signal voltage from 3.3V to 1.8V for UHS card,If SDHCI_HOST_CONTROL2 can be write,it seems no affect to the signal voltage.
3.I also check the source in u-boot.In u-boot,when use a UHS card,the source write register uSDHCx_VEND_SPEC bit 1:
Change the value of output signal VSELECT, to control the voltage on pads for external card. There must be a control circuit out of uSDHC to change the voltage on pads.
1 Change the voltage to low voltage range, around 1.8V
0 Change the voltage to high voltage range, around 3.0V
So I think u-boot source is right,the kernel may be wrong ,is that right?