Merge branch 'devel-stable' into devel
Conflicts: MAINTAINERS arch/arm/mm/fault.c
This commit is contained in:
@ -278,7 +278,7 @@ static int cb710_mmc_receive(struct cb710_slot *slot, struct mmc_data *data)
|
||||
if (unlikely(data->blksz & 15 && (data->blocks != 1 || data->blksz != 8)))
|
||||
return -EINVAL;
|
||||
|
||||
sg_miter_start(&miter, data->sg, data->sg_len, 0);
|
||||
sg_miter_start(&miter, data->sg, data->sg_len, SG_MITER_TO_SG);
|
||||
|
||||
cb710_modify_port_8(slot, CB710_MMC_CONFIG2_PORT,
|
||||
15, CB710_MMC_C2_READ_PIO_SIZE_MASK);
|
||||
@ -307,7 +307,7 @@ static int cb710_mmc_receive(struct cb710_slot *slot, struct mmc_data *data)
|
||||
goto out;
|
||||
}
|
||||
out:
|
||||
cb710_sg_miter_stop_writing(&miter);
|
||||
sg_miter_stop(&miter);
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -322,7 +322,7 @@ static int cb710_mmc_send(struct cb710_slot *slot, struct mmc_data *data)
|
||||
if (unlikely(data->blocks > 1 && data->blksz & 15))
|
||||
return -EINVAL;
|
||||
|
||||
sg_miter_start(&miter, data->sg, data->sg_len, 0);
|
||||
sg_miter_start(&miter, data->sg, data->sg_len, SG_MITER_FROM_SG);
|
||||
|
||||
cb710_modify_port_8(slot, CB710_MMC_CONFIG2_PORT,
|
||||
0, CB710_MMC_C2_READ_PIO_SIZE_MASK);
|
||||
|
@ -652,7 +652,7 @@ static irqreturn_t imxmci_irq(int irq, void *devid)
|
||||
set_bit(IMXMCI_PEND_STARTED_b, &host->pending_events);
|
||||
tasklet_schedule(&host->tasklet);
|
||||
|
||||
return IRQ_RETVAL(handled);;
|
||||
return IRQ_RETVAL(handled);
|
||||
}
|
||||
|
||||
static void imxmci_tasklet_fnc(unsigned long data)
|
||||
|
@ -431,7 +431,7 @@ static void mmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
|
||||
clk = 255;
|
||||
host->cclk = host->mclk / (2 * (clk + 1));
|
||||
}
|
||||
if (host->hw_designer == 0x80)
|
||||
if (host->hw_designer == AMBA_VENDOR_ST)
|
||||
clk |= MCI_FCEN; /* Bug fix in ST IP block */
|
||||
clk |= MCI_CLK_ENABLE;
|
||||
}
|
||||
@ -444,7 +444,7 @@ static void mmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
|
||||
break;
|
||||
case MMC_POWER_UP:
|
||||
/* The ST version does not have this, fall through to POWER_ON */
|
||||
if (host->hw_designer != 0x80) {
|
||||
if (host->hw_designer != AMBA_VENDOR_ST) {
|
||||
pwr |= MCI_PWR_UP;
|
||||
break;
|
||||
}
|
||||
@ -454,7 +454,7 @@ static void mmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
|
||||
}
|
||||
|
||||
if (ios->bus_mode == MMC_BUSMODE_OPENDRAIN) {
|
||||
if (host->hw_designer != 0x80)
|
||||
if (host->hw_designer != AMBA_VENDOR_ST)
|
||||
pwr |= MCI_ROD;
|
||||
else {
|
||||
/*
|
||||
|
@ -384,7 +384,7 @@ static irqreturn_t mvsd_irq(int irq, void *dev)
|
||||
u16 val[2] = {0, 0};
|
||||
val[0] = mvsd_read(MVSD_FIFO);
|
||||
val[1] = mvsd_read(MVSD_FIFO);
|
||||
memcpy(p, &val, s);
|
||||
memcpy(p, ((void *)&val) + 4 - s, s);
|
||||
s = 0;
|
||||
intr_status = mvsd_read(MVSD_NOR_INTR_STATUS);
|
||||
}
|
||||
@ -423,7 +423,7 @@ static irqreturn_t mvsd_irq(int irq, void *dev)
|
||||
if (s < 4) {
|
||||
if (s && (intr_status & MVSD_NOR_TX_AVAIL)) {
|
||||
u16 val[2] = {0, 0};
|
||||
memcpy(&val, p, s);
|
||||
memcpy(((void *)&val) + 4 - s, p, s);
|
||||
mvsd_write(MVSD_FIFO, val[0]);
|
||||
mvsd_write(MVSD_FIFO, val[1]);
|
||||
s = 0;
|
||||
|
@ -168,12 +168,12 @@ static void pxamci_setup_data(struct pxamci_host *host, struct mmc_data *data)
|
||||
|
||||
if (data->flags & MMC_DATA_READ) {
|
||||
host->dma_dir = DMA_FROM_DEVICE;
|
||||
dcmd = DCMD_INCTRGADDR | DCMD_FLOWTRG;
|
||||
dcmd = DCMD_INCTRGADDR | DCMD_FLOWSRC;
|
||||
DRCMR(host->dma_drcmrtx) = 0;
|
||||
DRCMR(host->dma_drcmrrx) = host->dma | DRCMR_MAPVLD;
|
||||
} else {
|
||||
host->dma_dir = DMA_TO_DEVICE;
|
||||
dcmd = DCMD_INCSRCADDR | DCMD_FLOWSRC;
|
||||
dcmd = DCMD_INCSRCADDR | DCMD_FLOWTRG;
|
||||
DRCMR(host->dma_drcmrrx) = 0;
|
||||
DRCMR(host->dma_drcmrtx) = host->dma | DRCMR_MAPVLD;
|
||||
}
|
||||
|
@ -158,6 +158,13 @@ static unsigned int esdhc_get_max_clock(struct sdhci_host *host)
|
||||
return of_host->clock;
|
||||
}
|
||||
|
||||
static unsigned int esdhc_get_min_clock(struct sdhci_host *host)
|
||||
{
|
||||
struct sdhci_of_host *of_host = sdhci_priv(host);
|
||||
|
||||
return of_host->clock / 256 / 16;
|
||||
}
|
||||
|
||||
static unsigned int esdhc_get_timeout_clock(struct sdhci_host *host)
|
||||
{
|
||||
struct sdhci_of_host *of_host = sdhci_priv(host);
|
||||
@ -184,6 +191,7 @@ static struct sdhci_of_data sdhci_esdhc = {
|
||||
.set_clock = esdhc_set_clock,
|
||||
.enable_dma = esdhc_enable_dma,
|
||||
.get_max_clock = esdhc_get_max_clock,
|
||||
.get_min_clock = esdhc_get_min_clock,
|
||||
.get_timeout_clock = esdhc_get_timeout_clock,
|
||||
},
|
||||
};
|
||||
|
@ -773,8 +773,14 @@ static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_data *data)
|
||||
}
|
||||
|
||||
if (!(host->flags & SDHCI_REQ_USE_DMA)) {
|
||||
sg_miter_start(&host->sg_miter,
|
||||
data->sg, data->sg_len, SG_MITER_ATOMIC);
|
||||
int flags;
|
||||
|
||||
flags = SG_MITER_ATOMIC;
|
||||
if (host->data->flags & MMC_DATA_READ)
|
||||
flags |= SG_MITER_TO_SG;
|
||||
else
|
||||
flags |= SG_MITER_FROM_SG;
|
||||
sg_miter_start(&host->sg_miter, data->sg, data->sg_len, flags);
|
||||
host->blocks = data->blocks;
|
||||
}
|
||||
|
||||
@ -1766,7 +1772,10 @@ int sdhci_add_host(struct sdhci_host *host)
|
||||
* Set host parameters.
|
||||
*/
|
||||
mmc->ops = &sdhci_ops;
|
||||
mmc->f_min = host->max_clk / 256;
|
||||
if (host->ops->get_min_clock)
|
||||
mmc->f_min = host->ops->get_min_clock(host);
|
||||
else
|
||||
mmc->f_min = host->max_clk / 256;
|
||||
mmc->f_max = host->max_clk;
|
||||
mmc->caps = MMC_CAP_SDIO_IRQ;
|
||||
|
||||
|
@ -302,6 +302,7 @@ struct sdhci_ops {
|
||||
|
||||
int (*enable_dma)(struct sdhci_host *host);
|
||||
unsigned int (*get_max_clock)(struct sdhci_host *host);
|
||||
unsigned int (*get_min_clock)(struct sdhci_host *host);
|
||||
unsigned int (*get_timeout_clock)(struct sdhci_host *host);
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user