|  | @@ -236,3 +236,79 @@ static int cpld_mmc_get_cd(int module)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	/* low == card present */
 | 
	
		
			
				|  |  |  	return !(__raw_readb(cpld + CPLD_CARDSTAT) & BIT(module ? 4 : 0));
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static int cpld_mmc_get_ro(int module)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	if (!cpld)
 | 
	
		
			
				|  |  | +		return -ENXIO;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/* high == card's write protect switch active */
 | 
	
		
			
				|  |  | +	return !!(__raw_readb(cpld + CPLD_CARDSTAT) & BIT(module ? 5 : 1));
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct davinci_mmc_config dm365evm_mmc_config = {
 | 
	
		
			
				|  |  | +	.get_cd		= cpld_mmc_get_cd,
 | 
	
		
			
				|  |  | +	.get_ro		= cpld_mmc_get_ro,
 | 
	
		
			
				|  |  | +	.wires		= 4,
 | 
	
		
			
				|  |  | +	.max_freq	= 50000000,
 | 
	
		
			
				|  |  | +	.caps		= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED,
 | 
	
		
			
				|  |  | +	.version	= MMC_CTLR_VERSION_2,
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static void dm365evm_emac_configure(void)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	/*
 | 
	
		
			
				|  |  | +	 * EMAC pins are multiplexed with GPIO and UART
 | 
	
		
			
				|  |  | +	 * Further details are available at the DM365 ARM
 | 
	
		
			
				|  |  | +	 * Subsystem Users Guide(sprufg5.pdf) pages 125 - 127
 | 
	
		
			
				|  |  | +	 */
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_EMAC_TX_EN);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_EMAC_TX_CLK);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_EMAC_COL);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_EMAC_TXD3);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_EMAC_TXD2);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_EMAC_TXD1);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_EMAC_TXD0);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_EMAC_RXD3);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_EMAC_RXD2);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_EMAC_RXD1);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_EMAC_RXD0);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_EMAC_RX_CLK);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_EMAC_RX_DV);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_EMAC_RX_ER);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_EMAC_CRS);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_EMAC_MDIO);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_EMAC_MDCLK);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	/*
 | 
	
		
			
				|  |  | +	 * EMAC interrupts are multiplexed with GPIO interrupts
 | 
	
		
			
				|  |  | +	 * Details are available at the DM365 ARM
 | 
	
		
			
				|  |  | +	 * Subsystem Users Guide(sprufg5.pdf) pages 133 - 134
 | 
	
		
			
				|  |  | +	 */
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_INT_EMAC_RXTHRESH);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_INT_EMAC_RXPULSE);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_INT_EMAC_TXPULSE);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_INT_EMAC_MISCPULSE);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static void dm365evm_mmc_configure(void)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	/*
 | 
	
		
			
				|  |  | +	 * MMC/SD pins are multiplexed with GPIO and EMIF
 | 
	
		
			
				|  |  | +	 * Further details are available at the DM365 ARM
 | 
	
		
			
				|  |  | +	 * Subsystem Users Guide(sprufg5.pdf) pages 118, 128 - 131
 | 
	
		
			
				|  |  | +	 */
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_SD1_CLK);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_SD1_CMD);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_SD1_DATA3);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_SD1_DATA2);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_SD1_DATA1);
 | 
	
		
			
				|  |  | +	davinci_cfg_reg(DM365_SD1_DATA0);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static struct tvp514x_platform_data tvp5146_pdata = {
 | 
	
		
			
				|  |  | +	.clk_polarity = 0,
 | 
	
		
			
				|  |  | +	.hs_polarity = 1,
 | 
	
		
			
				|  |  | +	.vs_polarity = 1
 | 
	
		
			
				|  |  | +};
 |