mmc: mmci: Add support to data commands via variant structure.
On some SOCs like Qcom there are explicit bits in the command register to specify if its a data transfer command or not. So this patch adds support to such bits in variant data, giving more flexibility to the driver. Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
e8740644ab
commit
ae7b0061f6
|
@ -59,6 +59,7 @@ static unsigned int fmax = 515633;
|
||||||
* is asserted (likewise for RX)
|
* is asserted (likewise for RX)
|
||||||
* @fifohalfsize: number of bytes that can be written when MCI_TXFIFOHALFEMPTY
|
* @fifohalfsize: number of bytes that can be written when MCI_TXFIFOHALFEMPTY
|
||||||
* is asserted (likewise for RX)
|
* is asserted (likewise for RX)
|
||||||
|
* @data_cmd_enable: enable value for data commands.
|
||||||
* @sdio: variant supports SDIO
|
* @sdio: variant supports SDIO
|
||||||
* @st_clkdiv: true if using a ST-specific clock divider algorithm
|
* @st_clkdiv: true if using a ST-specific clock divider algorithm
|
||||||
* @datactrl_mask_ddrmode: ddr mode mask in datactrl register.
|
* @datactrl_mask_ddrmode: ddr mode mask in datactrl register.
|
||||||
|
@ -79,6 +80,7 @@ struct variant_data {
|
||||||
unsigned int datalength_bits;
|
unsigned int datalength_bits;
|
||||||
unsigned int fifosize;
|
unsigned int fifosize;
|
||||||
unsigned int fifohalfsize;
|
unsigned int fifohalfsize;
|
||||||
|
unsigned int data_cmd_enable;
|
||||||
unsigned int datactrl_mask_ddrmode;
|
unsigned int datactrl_mask_ddrmode;
|
||||||
bool sdio;
|
bool sdio;
|
||||||
bool st_clkdiv;
|
bool st_clkdiv;
|
||||||
|
@ -841,6 +843,9 @@ mmci_start_command(struct mmci_host *host, struct mmc_command *cmd, u32 c)
|
||||||
if (/*interrupt*/0)
|
if (/*interrupt*/0)
|
||||||
c |= MCI_CPSM_INTERRUPT;
|
c |= MCI_CPSM_INTERRUPT;
|
||||||
|
|
||||||
|
if (mmc_cmd_type(cmd) == MMC_CMD_ADTC)
|
||||||
|
c |= host->variant->data_cmd_enable;
|
||||||
|
|
||||||
host->cmd = cmd;
|
host->cmd = cmd;
|
||||||
|
|
||||||
writel(cmd->arg, base + MMCIARGUMENT);
|
writel(cmd->arg, base + MMCIARGUMENT);
|
||||||
|
|
Loading…
Reference in New Issue