On Wed, Jun 23, 2010 at 00:03:47 +0200, Linus Walleij wrote: > 2010/6/22 Rabin Vincent <rabin.vincent@xxxxxxxxxxxxxx>: > > @@ -17,7 +17,8 @@ > > * mmc/host.h > > * @translate_vdd: a callback function to translate a MMC_VDD_* > > * mask into a value to be binary or:ed and written into the > > - * MMCIPWR register of the block > > + * MMCIPWR register of the block. May also control external power > > + * based on the power_mode. > > Actually this callback is named like that for a reason: it is to be used > to translate the MMC_VDD_* into a u8:4 bitmask for the MMCIPWR > register, 4 bits possibly routed out of the PL180 block on some > designs (never seen in practice, but could be used in theory). > > So it translates a voltage into a 4-bit bitmask, hence the name. > > Now the semantics are altered to have other side-effects in > the platform, so the function should be renamed, something like > platform_vdd_handler() would be more appropriate. > This is already inside platform data, so how about just ->vdd_handler()? Or ->set_power(), like some other drivers? Note that we'd also like to use this to do the board-specific settings for the *DIREN and FBCLK bits, which replace the Voltage bits on some ST variants, like so: +static u32 mop500_sdi0_translate_vdd(struct device *dev, unsigned int vdd, + unsigned char power_mode) +{ + if (power_mode == MMC_POWER_UP) + gpio_set_value(gpio_sdmmc_en, 1); + else if (power_mode == MMC_POWER_OFF) + gpio_set_value(gpio_sdmmc_en, 0); + + return MCI_FBCLKEN | MCI_CMDDIREN | MCI_DATA0DIREN | + MCI_DATA2DIREN | MCI_DATA31DIREN; +} Rabin -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html