Skip to content

Commit

Permalink
ARM: 5698/1: MMCI pass capabilities in platform data
Browse files Browse the repository at this point in the history
This makes it possible to pass down the host controller
capabilities for the MMCI driver using the platform data. It
also provides the capabilties for the U300 implementation as an
example, and makes sure the 4bit wide mode is set if this is
requested by the ios() now that we can actually set that
capability for a platform.

Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Linus Walleij authored and Russell King committed Sep 15, 2009
1 parent a6a6464 commit 9e6c82c
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 0 deletions.
1 change: 1 addition & 0 deletions arch/arm/include/asm/mach/mmc.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ struct mmc_platform_data {
unsigned int (*status)(struct device *);
int gpio_wp;
int gpio_cd;
unsigned long capabilities;
};

#endif
2 changes: 2 additions & 0 deletions arch/arm/mach-u300/mmc.c
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,8 @@ int __devinit mmc_init(struct amba_device *adev)
mmci_card->mmc0_plat_data.status = mmc_status;
mmci_card->mmc0_plat_data.gpio_wp = -1;
mmci_card->mmc0_plat_data.gpio_cd = -1;
mmci_card->mmc0_plat_data.capabilities = MMC_CAP_MMC_HIGHSPEED |
MMC_CAP_SD_HIGHSPEED | MMC_CAP_4_BIT_DATA;

mmcsd_device->platform_data = (void *) &mmci_card->mmc0_plat_data;

Expand Down
4 changes: 4 additions & 0 deletions drivers/mmc/host/mmci.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@ static void mmci_set_clkreg(struct mmci_host *host, unsigned int desired)
/* clk |= MCI_CLK_PWRSAVE; */
}

if (host->mmc->ios.bus_width == MMC_BUS_WIDTH_4)
clk |= MCI_WIDE_BUS;

writel(clk, host->base + MMCICLOCK);
}

Expand Down Expand Up @@ -601,6 +604,7 @@ static int __devinit mmci_probe(struct amba_device *dev, struct amba_id *id)
mmc->f_min = (host->mclk + 511) / 512;
mmc->f_max = min(host->mclk, fmax);
mmc->ocr_avail = plat->ocr_mask;
mmc->caps = plat->capabilities;

/*
* We can do SGIO
Expand Down

0 comments on commit 9e6c82c

Please sign in to comment.