Loading drivers/staging/mt7621-mmc/sd.c +1 −248 Original line number Diff line number Diff line Loading @@ -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. */ Loading @@ -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, Loading Loading @@ -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); Loading @@ -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; Loading Loading @@ -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) . Loading Loading @@ -722,14 +571,6 @@ static unsigned int msdc_do_command(struct msdc_host *host, 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; Loading Loading @@ -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) Loading Loading @@ -920,36 +755,8 @@ static int msdc_do_request(struct mmc_host *mmc, struct mmc_request *mrq) 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) Loading @@ -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)); Loading Loading @@ -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; Loading @@ -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); Loading Loading @@ -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; Loading Loading @@ -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) Loading @@ -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 */ Loading Loading @@ -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); Loading Loading @@ -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) { Loading Loading @@ -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 */ Loading Loading
drivers/staging/mt7621-mmc/sd.c +1 −248 Original line number Diff line number Diff line Loading @@ -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. */ Loading @@ -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, Loading Loading @@ -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); Loading @@ -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; Loading Loading @@ -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) . Loading Loading @@ -722,14 +571,6 @@ static unsigned int msdc_do_command(struct msdc_host *host, 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; Loading Loading @@ -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) Loading Loading @@ -920,36 +755,8 @@ static int msdc_do_request(struct mmc_host *mmc, struct mmc_request *mrq) 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) Loading @@ -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)); Loading Loading @@ -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; Loading @@ -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); Loading Loading @@ -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; Loading Loading @@ -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) Loading @@ -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 */ Loading Loading @@ -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); Loading Loading @@ -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) { Loading Loading @@ -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 */ Loading