our custom board uses 1V8 IOs for our eMMC (on uSDHC2) and WiFi module (on uSDHC3), around a i.MX6SL.
We just realized that the mmc linux driver on 3.14.52 sets the I/O to 3V3 per default, and only changes it to 1V8 under some very specific circumstances (e.g.; high speed DDR mode). As those circumstances do not apply in our case, the interfaces are being setup to 3V3. (so far, we were relying on setting the I/O levels on the DTS, but had completely missed the fact that VSELECT overrules that)
Does anybody know of a good and maintainable solution to this ?
Our current plan is to 'hack' the driver to force it to do the right thing, but that is always problematic when upgrading kernels and the like.
We have observed that kernel 3.16 (in core/mmc.c power_up()) adds some extra code that attempts to automatic select the right voltage based on the restrictions of the 'regulator' , but I haven't managed to get a viable solution for defining the regulator in the dts that has the behaviour ? (anybody had any advise on that).