Commit 1784b157 authored by Philippe Langlais's avatar Philippe Langlais Committed by Russell King

ARM: 6832/1: mmci: support for ST-Ericsson db8500v2

ST-Ericsson modified ARM PrimeCell PL180 block has not got
an updated corresponding amba-id, althought the IP block has
changed in db8500v2. The change was done to the datactrl register.
Using the overrided subversion ID, account for this.
Signed-off-by: default avatarPhilippe Langlais <philippe.langlais@linaro.org>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 72930319
...@@ -51,6 +51,7 @@ static unsigned int fmax = 515633; ...@@ -51,6 +51,7 @@ static unsigned int fmax = 515633;
* is asserted (likewise for RX) * is asserted (likewise for RX)
* @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
* @blksz_datactrl16: true if Block size is at b16..b30 position in datactrl register
*/ */
struct variant_data { struct variant_data {
unsigned int clkreg; unsigned int clkreg;
...@@ -60,6 +61,7 @@ struct variant_data { ...@@ -60,6 +61,7 @@ struct variant_data {
unsigned int fifohalfsize; unsigned int fifohalfsize;
bool sdio; bool sdio;
bool st_clkdiv; bool st_clkdiv;
bool blksz_datactrl16;
}; };
static struct variant_data variant_arm = { static struct variant_data variant_arm = {
...@@ -92,6 +94,17 @@ static struct variant_data variant_ux500 = { ...@@ -92,6 +94,17 @@ static struct variant_data variant_ux500 = {
.st_clkdiv = true, .st_clkdiv = true,
}; };
static struct variant_data variant_ux500v2 = {
.fifosize = 30 * 4,
.fifohalfsize = 8 * 4,
.clkreg = MCI_CLK_ENABLE,
.clkreg_enable = MCI_ST_UX500_HWFCEN,
.datalength_bits = 24,
.sdio = true,
.st_clkdiv = true,
.blksz_datactrl16 = true,
};
/* /*
* This must be called with host->lock held * This must be called with host->lock held
*/ */
...@@ -465,7 +478,10 @@ static void mmci_start_data(struct mmci_host *host, struct mmc_data *data) ...@@ -465,7 +478,10 @@ static void mmci_start_data(struct mmci_host *host, struct mmc_data *data)
blksz_bits = ffs(data->blksz) - 1; blksz_bits = ffs(data->blksz) - 1;
BUG_ON(1 << blksz_bits != data->blksz); BUG_ON(1 << blksz_bits != data->blksz);
datactrl = MCI_DPSM_ENABLE | blksz_bits << 4; if (variant->blksz_datactrl16)
datactrl = MCI_DPSM_ENABLE | (data->blksz << 16);
else
datactrl = MCI_DPSM_ENABLE | blksz_bits << 4;
if (data->flags & MMC_DATA_READ) if (data->flags & MMC_DATA_READ)
datactrl |= MCI_DPSM_DIRECTION; datactrl |= MCI_DPSM_DIRECTION;
...@@ -1311,9 +1327,14 @@ static struct amba_id mmci_ids[] = { ...@@ -1311,9 +1327,14 @@ static struct amba_id mmci_ids[] = {
}, },
{ {
.id = 0x00480180, .id = 0x00480180,
.mask = 0x00ffffff, .mask = 0xf0ffffff,
.data = &variant_ux500, .data = &variant_ux500,
}, },
{
.id = 0x10480180,
.mask = 0xf0ffffff,
.data = &variant_ux500v2,
},
{ 0, 0 }, { 0, 0 },
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment