ARM: 6243/1: mmci: pass power_mode to the translate_vdd callback
Platforms may have some external power control which need to be controlled from board specific code. Rename the translate_vdd() callback to vdd_handler() and pass it the power mode. Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
		
					parent
					
						
							
								f5e2574e73
							
						
					
				
			
			
				commit
				
					
						bb8f563c84
					
				
			
		
					 2 changed files with 9 additions and 14 deletions
				
			
		| 
						 | 
					@ -493,16 +493,9 @@ static void mmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
 | 
				
			||||||
			/* This implicitly enables the regulator */
 | 
								/* This implicitly enables the regulator */
 | 
				
			||||||
			mmc_regulator_set_ocr(host->vcc, ios->vdd);
 | 
								mmc_regulator_set_ocr(host->vcc, ios->vdd);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
		/*
 | 
							if (host->plat->vdd_handler)
 | 
				
			||||||
		 * The translate_vdd function is not used if you have
 | 
								pwr |= host->plat->vdd_handler(mmc_dev(mmc), ios->vdd,
 | 
				
			||||||
		 * an external regulator, or your design is really weird.
 | 
											       ios->power_mode);
 | 
				
			||||||
		 * Using it would mean sending in power control BOTH using
 | 
					 | 
				
			||||||
		 * a regulator AND the 4 MMCIPWR bits. If we don't have
 | 
					 | 
				
			||||||
		 * a regulator, we might have some other platform specific
 | 
					 | 
				
			||||||
		 * power control behind this translate function.
 | 
					 | 
				
			||||||
		 */
 | 
					 | 
				
			||||||
		if (!host->vcc && host->plat->translate_vdd)
 | 
					 | 
				
			||||||
			pwr |= host->plat->translate_vdd(mmc_dev(mmc), ios->vdd);
 | 
					 | 
				
			||||||
		/* The ST version does not have this, fall through to POWER_ON */
 | 
							/* The ST version does not have this, fall through to POWER_ON */
 | 
				
			||||||
		if (host->hw_designer != AMBA_VENDOR_ST) {
 | 
							if (host->hw_designer != AMBA_VENDOR_ST) {
 | 
				
			||||||
			pwr |= MCI_PWR_UP;
 | 
								pwr |= MCI_PWR_UP;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,9 +15,10 @@
 | 
				
			||||||
 * @ocr_mask: available voltages on the 4 pins from the block, this
 | 
					 * @ocr_mask: available voltages on the 4 pins from the block, this
 | 
				
			||||||
 * is ignored if a regulator is used, see the MMC_VDD_* masks in
 | 
					 * is ignored if a regulator is used, see the MMC_VDD_* masks in
 | 
				
			||||||
 * mmc/host.h
 | 
					 * mmc/host.h
 | 
				
			||||||
 * @translate_vdd: a callback function to translate a MMC_VDD_*
 | 
					 * @vdd_handler: a callback function to translate a MMC_VDD_*
 | 
				
			||||||
 * mask into a value to be binary or:ed and written into the
 | 
					 * mask into a value to be binary (or set some other custom bits
 | 
				
			||||||
 * MMCIPWR register of the block
 | 
					 * in MMCIPWR) or:ed and written into the MMCIPWR register of the
 | 
				
			||||||
 | 
					 * block.  May also control external power based on the power_mode.
 | 
				
			||||||
 * @status: if no GPIO read function was given to the block in
 | 
					 * @status: if no GPIO read function was given to the block in
 | 
				
			||||||
 * gpio_wp (below) this function will be called to determine
 | 
					 * gpio_wp (below) this function will be called to determine
 | 
				
			||||||
 * whether a card is present in the MMC slot or not
 | 
					 * whether a card is present in the MMC slot or not
 | 
				
			||||||
| 
						 | 
					@ -29,7 +30,8 @@
 | 
				
			||||||
struct mmci_platform_data {
 | 
					struct mmci_platform_data {
 | 
				
			||||||
	unsigned int f_max;
 | 
						unsigned int f_max;
 | 
				
			||||||
	unsigned int ocr_mask;
 | 
						unsigned int ocr_mask;
 | 
				
			||||||
	u32 (*translate_vdd)(struct device *, unsigned int);
 | 
						u32 (*vdd_handler)(struct device *, unsigned int vdd,
 | 
				
			||||||
 | 
								   unsigned char power_mode);
 | 
				
			||||||
	unsigned int (*status)(struct device *);
 | 
						unsigned int (*status)(struct device *);
 | 
				
			||||||
	int	gpio_wp;
 | 
						int	gpio_wp;
 | 
				
			||||||
	int	gpio_cd;
 | 
						int	gpio_cd;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue