Commit 2a54e325 authored by Nishad Kamdar's avatar Nishad Kamdar Committed by Greg Kroah-Hartman
Browse files

staging: mt7621-mmc: Remove #if 0 blocks in sd.c



This patch removes #if 0 code blocks and usages of
functions defined in the #if 0 blocks in sd.c.

Signed-off-by: default avatarNishad Kamdar <nishadkamdar@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b99e0ce2
Loading
Loading
Loading
Loading
+1 −248
Original line number Diff line number Diff line
@@ -72,11 +72,6 @@
#define GPIO_PULL_DOWN      (0)
#define GPIO_PULL_UP        (1)

#if 0 /* --- by chhung */
#define MSDC_CLKSRC_REG     (0xf100000C)
#define PDN_REG           (0xF1000010)
#endif /* end of --- */

#define DEFAULT_DEBOUNCE    (8)       /* 8 cycles */
#define DEFAULT_DTOC        (40)      /* data timeout counter. 65536x40 sclk. */

@@ -100,26 +95,6 @@ static int cd_active_low = 1;
//#define PERI_MSDC2_PDN    (17)
//#define PERI_MSDC3_PDN    (18)

#if 0 /* --- by chhung */
/* gate means clock power down */
static int g_clk_gate = 0;
#define msdc_gate_clock(id) \
	do {					       \
		g_clk_gate &= ~(1 << ((id) + PERI_MSDC0_PDN));	\
	} while (0)
/* not like power down register. 1 means clock on. */
#define msdc_ungate_clock(id) \
	do {					    \
		g_clk_gate |= 1 << ((id) + PERI_MSDC0_PDN);	\
	} while (0)

// do we need sync object or not
void msdc_clk_status(int *status)
{
	*status = g_clk_gate;
}
#endif /* end of --- */

/* +++ by chhung */
struct msdc_hw msdc0_hw = {
	.clk_src        = 0,
@@ -221,7 +196,6 @@ static void msdc_tasklet_card(struct work_struct *work)
				struct msdc_host, card_delaywork.work);
	u32 inserted;
	u32 status = 0;
    //u32 change = 0;

	spin_lock(&host->lock);

@@ -231,33 +205,17 @@ static void msdc_tasklet_card(struct work_struct *work)
	else
		inserted = (status & MSDC_PS_CDSTS) ? 1 : 0;

#if 0
	change = host->card_inserted ^ inserted;
	host->card_inserted = inserted;

	if (change && !host->suspend) {
		if (inserted)
			host->mmc->f_max = HOST_MAX_MCLK;  // work around
		mmc_detect_change(host->mmc, msecs_to_jiffies(20));
	}
#else  /* Make sure: handle the last interrupt */
	/* Make sure: handle the last interrupt */
	host->card_inserted = inserted;

	if (!host->suspend) {
		host->mmc->f_max = HOST_MAX_MCLK;
		mmc_detect_change(host->mmc, msecs_to_jiffies(20));
	}
#endif

	spin_unlock(&host->lock);
}

#if 0 /* --- by chhung */
/* For E2 only */
static u8 clk_src_bit[4] = {
	0, 3, 5, 7
};

static void msdc_select_clksrc(struct msdc_host *host, unsigned char clksrc)
{
	u32 val;
@@ -358,115 +316,6 @@ static void msdc_abort_data(struct msdc_host *host)
	//}
}

#if 0 /* --- by chhung */
static void msdc_pin_config(struct msdc_host *host, int mode)
{
	struct msdc_hw *hw = host->hw;
	int pull = (mode == MSDC_PIN_PULL_UP) ? GPIO_PULL_UP : GPIO_PULL_DOWN;

	/* Config WP pin */
	if (hw->flags & MSDC_WP_PIN_EN) {
		if (hw->config_gpio_pin) /* NULL */
			hw->config_gpio_pin(MSDC_WP_PIN, pull);
	}

	switch (mode) {
	case MSDC_PIN_PULL_UP:
		//sdr_set_field(MSDC_PAD_CTL0, MSDC_PAD_CTL0_CLKPU, 1); /* Check & FIXME */
		//sdr_set_field(MSDC_PAD_CTL0, MSDC_PAD_CTL0_CLKPD, 0); /* Check & FIXME */
		sdr_set_field(host->base + MSDC_PAD_CTL1, MSDC_PAD_CTL1_CMDPU, 1);
		sdr_set_field(host->base + MSDC_PAD_CTL1, MSDC_PAD_CTL1_CMDPD, 0);
		sdr_set_field(host->base + MSDC_PAD_CTL2, MSDC_PAD_CTL2_DATPU, 1);
		sdr_set_field(host->base + MSDC_PAD_CTL2, MSDC_PAD_CTL2_DATPD, 0);
		break;
	case MSDC_PIN_PULL_DOWN:
		//sdr_set_field(MSDC_PAD_CTL0, MSDC_PAD_CTL0_CLKPU, 0); /* Check & FIXME */
		//sdr_set_field(MSDC_PAD_CTL0, MSDC_PAD_CTL0_CLKPD, 1); /* Check & FIXME */
		sdr_set_field(host->base + MSDC_PAD_CTL1, MSDC_PAD_CTL1_CMDPU, 0);
		sdr_set_field(host->base + MSDC_PAD_CTL1, MSDC_PAD_CTL1_CMDPD, 1);
		sdr_set_field(host->base + MSDC_PAD_CTL2, MSDC_PAD_CTL2_DATPU, 0);
		sdr_set_field(host->base + MSDC_PAD_CTL2, MSDC_PAD_CTL2_DATPD, 1);
		break;
	case MSDC_PIN_PULL_NONE:
	default:
		//sdr_set_field(MSDC_PAD_CTL0, MSDC_PAD_CTL0_CLKPU, 0); /* Check & FIXME */
		//sdr_set_field(MSDC_PAD_CTL0, MSDC_PAD_CTL0_CLKPD, 0); /* Check & FIXME */
		sdr_set_field(host->base + MSDC_PAD_CTL1, MSDC_PAD_CTL1_CMDPU, 0);
		sdr_set_field(host->base + MSDC_PAD_CTL1, MSDC_PAD_CTL1_CMDPD, 0);
		sdr_set_field(host->base + MSDC_PAD_CTL2, MSDC_PAD_CTL2_DATPU, 0);
		sdr_set_field(host->base + MSDC_PAD_CTL2, MSDC_PAD_CTL2_DATPD, 0);
		break;
	}

}

void msdc_pin_reset(struct msdc_host *host, int mode)
{
	struct msdc_hw *hw = (struct msdc_hw *)host->hw;
	int pull = (mode == MSDC_PIN_PULL_UP) ? GPIO_PULL_UP : GPIO_PULL_DOWN;

	/* Config reset pin */
	if (hw->flags & MSDC_RST_PIN_EN) {
		if (hw->config_gpio_pin) /* NULL */
			hw->config_gpio_pin(MSDC_RST_PIN, pull);

		if (mode == MSDC_PIN_PULL_UP)
			sdr_clr_bits(host->base + EMMC_IOCON, EMMC_IOCON_BOOTRST);
		else
			sdr_set_bits(host->base + EMMC_IOCON, EMMC_IOCON_BOOTRST);
	}
}

static void msdc_core_power(struct msdc_host *host, int on)
{
	if (on && host->core_power == 0) {
		msdc_vcore_on(host);
		host->core_power = 1;
		msleep(1);
	} else if (!on && host->core_power == 1) {
		msdc_vcore_off(host);
		host->core_power = 0;
		msleep(1);
	}
}

static void msdc_host_power(struct msdc_host *host, int on)
{
	if (on) {
		//msdc_core_power(host, 1); // need do card detection.
		msdc_pin_reset(host, MSDC_PIN_PULL_UP);
	} else {
		msdc_pin_reset(host, MSDC_PIN_PULL_DOWN);
		//msdc_core_power(host, 0);
	}
}

static void msdc_card_power(struct msdc_host *host, int on)
{
	if (on) {
		msdc_pin_config(host, MSDC_PIN_PULL_UP);
		//msdc_vdd_on(host);  // need todo card detection.
		msleep(1);
	} else {
		//msdc_vdd_off(host);
		msdc_pin_config(host, MSDC_PIN_PULL_DOWN);
		msleep(1);
	}
}

static void msdc_set_power_mode(struct msdc_host *host, u8 mode)
{
	if (host->power_mode == MMC_POWER_OFF && mode != MMC_POWER_OFF) {
		msdc_host_power(host, 1);
		msdc_card_power(host, 1);
	} else if (host->power_mode != MMC_POWER_OFF && mode == MMC_POWER_OFF) {
		msdc_card_power(host, 0);
		msdc_host_power(host, 0);
	}
	host->power_mode = mode;
}
#endif /* end of --- */

#ifdef CONFIG_PM
/*
   register as callback function of WIFI(combo_sdio_register_pm) .
@@ -722,14 +571,6 @@ end:
	return cmd->error;
}

#if 0 /* --- by chhung */
// DMA resume / start / stop
static void msdc_dma_resume(struct msdc_host *host)
{
	sdr_set_field(host->base + MSDC_DMA_CTRL, MSDC_DMA_CTRL_RESUME, 1);
}
#endif /* end of --- */

static void msdc_dma_start(struct msdc_host *host)
{
	u32 wints = MSDC_INTEN_XFER_COMPL | MSDC_INTEN_DATTMO | MSDC_INTEN_DATCRCERR;
@@ -828,12 +669,6 @@ static int msdc_do_request(struct mmc_host *mmc, struct mmc_request *mrq)
	cmd  = mrq->cmd;
	data = mrq->cmd->data;

#if 0 /* --- by chhung */
	//if(host->id ==1){
	msdc_ungate_clock(host->id);
	//}
#endif /* end of --- */

	if (!data) {
		send_type = SND_CMD;
		if (msdc_do_command(host, cmd, 1, CMD_TIMEOUT) != 0)
@@ -920,36 +755,8 @@ done:
		dma_unmap_sg(mmc_dev(mmc), data->sg, data->sg_len,
			     mmc_get_dma_dir(data));
		host->blksz = 0;

#if 0 // don't stop twice!
		if (host->hw->flags & MSDC_REMOVABLE && data->error) {
			msdc_abort_data(host);
			/* reset in IRQ, stop command has issued. -> No need */
		}
#endif

	}

#if 0 /* --- by chhung */
#if 1
	//if(host->id==1) {
	if (send_type == SND_CMD) {
		if (cmd->opcode == MMC_SEND_STATUS) {
			if ((cmd->resp[0] & CARD_READY_FOR_DATA) || (CARD_CURRENT_STATE(cmd->resp[0]) != 7))
				msdc_gate_clock(host->id);
		} else {
			msdc_gate_clock(host->id);
		}
	} else {
		if (read)
			msdc_gate_clock(host->id);
	}
	//}
#else
	msdc_gate_clock(host->id);
#endif
#endif /* end of --- */

	if (mrq->cmd->error)
		host->error = 0x001;
	if (mrq->data && mrq->data->error)
@@ -968,11 +775,7 @@ static int msdc_app_cmd(struct mmc_host *mmc, struct msdc_host *host)

	memset(&cmd, 0, sizeof(struct mmc_command));
	cmd.opcode = MMC_APP_CMD;
#if 0   /* bug: we meet mmc->card is null when ACMD6 */
	cmd.arg = mmc->card->rca << 16;
#else
	cmd.arg = host->app_cmd_arg;
#endif
	cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_AC;

	memset(&mrq, 0, sizeof(struct mmc_request));
@@ -1359,22 +1162,10 @@ static void msdc_ops_request(struct mmc_host *mmc, struct mmc_request *mrq)
{
	struct msdc_host *host = mmc_priv(mmc);

	//=== for sdio profile ===
#if 0 /* --- by chhung */
	u32 old_H32, old_L32, new_H32, new_L32;
	u32 ticks = 0, opcode = 0, sizes = 0, bRx = 0;
#endif /* end of --- */

	WARN_ON(host->mrq);

	/* start to process */
	spin_lock(&host->lock);
#if 0 /* --- by chhung */
	if (sdio_pro_enable) {  //=== for sdio profile ===
		if (mrq->cmd->opcode == 52 || mrq->cmd->opcode == 53)
			GPT_GetCounter64(&old_L32, &old_H32);
	}
#endif /* end of --- */

	host->mrq = mrq;

@@ -1394,26 +1185,6 @@ static void msdc_ops_request(struct mmc_host *mmc, struct mmc_request *mrq)

	host->mrq = NULL;

#if 0 /* --- by chhung */
	//=== for sdio profile ===
	if (sdio_pro_enable) {
		if (mrq->cmd->opcode == 52 || mrq->cmd->opcode == 53) {
			GPT_GetCounter64(&new_L32, &new_H32);
			ticks = msdc_time_calc(old_L32, old_H32, new_L32, new_H32);

			opcode = mrq->cmd->opcode;
			if (mrq->cmd->data) {
				sizes = mrq->cmd->data->blocks * mrq->cmd->data->blksz;
				bRx = mrq->cmd->data->flags & MMC_DATA_READ ? 1 : 0;
			} else {
				bRx = mrq->cmd->arg	& 0x80000000 ? 1 : 0;
			}

			if (!mrq->cmd->error)
				msdc_performance(opcode, sizes, bRx, ticks);
		}
	}
#endif /* end of --- */
	spin_unlock(&host->lock);

	mmc_request_done(mmc, mrq);
@@ -1480,7 +1251,6 @@ static void msdc_ops_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
	switch (ios->power_mode) {
	case MMC_POWER_OFF:
	case MMC_POWER_UP:
		// msdc_set_power_mode(host, ios->power_mode); /* --- by chhung */
		break;
	case MMC_POWER_ON:
		host->power_mode = MMC_POWER_ON;
@@ -1552,9 +1322,6 @@ static int msdc_ops_get_cd(struct mmc_host *mmc)
	/* MSDC_CD_PIN_EN set for card */
	if (host->hw->flags & MSDC_CD_PIN_EN) {
		spin_lock_irqsave(&host->lock, flags);
#if 0
		present = host->card_inserted;  /* why not read from H/W: Fix me*/
#else
		// CD
		present = readl(host->base + MSDC_PS) & MSDC_PS_CDSTS;
		if (cd_active_low)
@@ -1562,7 +1329,6 @@ static int msdc_ops_get_cd(struct mmc_host *mmc)
		else
			present = present ? 1 : 0;
		host->card_inserted = present;
#endif
		spin_unlock_irqrestore(&host->lock, flags);
	} else {
		present = 0; /* TODO? Check DAT3 pins for card detection */
@@ -1725,14 +1491,6 @@ static void msdc_enable_cd_irq(struct msdc_host *host, int enable)
static void msdc_init_hw(struct msdc_host *host)
{

	/* Power on */
#if 0 /* --- by chhung */
	msdc_vcore_on(host);
	msdc_pin_reset(host, MSDC_PIN_PULL_UP);
	msdc_select_clksrc(host, hw->clk_src);
	enable_clock(PERI_MSDC0_PDN + host->id, "SD");
	msdc_vdd_on(host);
#endif /* end of --- */
	/* Configure to MMC/SD mode */
	sdr_set_field(host->base + MSDC_CFG, MSDC_CFG_MODE, MSDC_SDMMC);

@@ -1764,10 +1522,6 @@ static void msdc_init_hw(struct msdc_host *host)

	writel(0x00000000, host->base + MSDC_DAT_RDDLY1);
	writel(0x00000000, host->base + MSDC_IOCON);
#if 0 // use MT7620 default value: 0x403c004f
	/* bit0 modified: Rx Data Clock Source: 1 -> 2.0*/
	writel(0x003C000F, host->base + MSDC_PATCH_BIT0);
#endif

	if (readl(host->base + MSDC_ECO_VER) >= 4) {
		if (host->id == 1) {
@@ -1834,7 +1588,6 @@ static void msdc_deinit_hw(struct msdc_host *host)

	/* Disable card detection */
	msdc_enable_cd_irq(host, 0);
	// msdc_set_power_mode(host, MMC_POWER_OFF);   /* make sure power down */ /* --- by chhung */
}

/* init gpd and bd list in msdc_drv_probe */