12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /*
- *
- * arch/arm/mach-u300/mmc.c
- *
- *
- * Copyright (C) 2009 ST-Ericsson SA
- * License terms: GNU General Public License (GPL) version 2
- *
- * Author: Linus Walleij <linus.walleij@stericsson.com>
- * Author: Johan Lundin
- * Author: Jonas Aaberg <jonas.aberg@stericsson.com>
- */
- #include <linux/device.h>
- #include <linux/amba/bus.h>
- #include <linux/mmc/host.h>
- #include <linux/dmaengine.h>
- #include <linux/amba/mmci.h>
- #include <linux/slab.h>
- #include <mach/coh901318.h>
- #include <mach/dma_channels.h>
- #include "u300-gpio.h"
- #include "mmc.h"
- static struct mmci_platform_data mmc0_plat_data = {
- /*
- * Do not set ocr_mask or voltage translation function,
- * we have a regulator we can control instead.
- */
- /* Nominally 2.85V on our platform */
- .f_max = 24000000,
- .gpio_wp = -1,
- .gpio_cd = U300_GPIO_PIN_MMC_CD,
- .cd_invert = true,
- .capabilities = MMC_CAP_MMC_HIGHSPEED |
- MMC_CAP_SD_HIGHSPEED | MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
- #ifdef CONFIG_COH901318
- .dma_filter = coh901318_filter_id,
- .dma_rx_param = (void *) U300_DMA_MMCSD_RX_TX,
- /* Don't specify a TX channel, this RX channel is bidirectional */
- #endif
- };
- int __devinit mmc_init(struct amba_device *adev)
- {
- struct device *mmcsd_device = &adev->dev;
- int ret = 0;
- mmcsd_device->platform_data = &mmc0_plat_data;
- return ret;
- }
|