Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+23 −2
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ static unsigned int fmax = 515633;
 *		  is asserted (likewise for RX)
 * @sdio: variant supports SDIO
 * @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 {
	unsigned int		clkreg;
@@ -60,6 +61,7 @@ struct variant_data {
	unsigned int		fifohalfsize;
	bool			sdio;
	bool			st_clkdiv;
	bool			blksz_datactrl16;
};

static struct variant_data variant_arm = {
@@ -92,6 +94,17 @@ static struct variant_data variant_ux500 = {
	.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
 */
@@ -465,6 +478,9 @@ static void mmci_start_data(struct mmci_host *host, struct mmc_data *data)
	blksz_bits = ffs(data->blksz) - 1;
	BUG_ON(1 << blksz_bits != data->blksz);

	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)
@@ -1311,9 +1327,14 @@ static struct amba_id mmci_ids[] = {
	},
	{
		.id     = 0x00480180,
		.mask   = 0x00ffffff,
		.mask   = 0xf0ffffff,
		.data	= &variant_ux500,
	},
	{
		.id     = 0x10480180,
		.mask   = 0xf0ffffff,
		.data	= &variant_ux500v2,
	},
	{ 0, 0 },
};