mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 09:14:19 +08:00
Merge branch 'omap-for-v3.8/cleanup-headers-mmc' into omap-for-v3.8/cleanup-headers
Conflicts: arch/arm/mach-omap1/devices.c arch/arm/mach-omap2/omap_hwmod_33xx_data.c arch/arm/mach-omap2/omap_hwmod_3xxx_data.c drivers/mmc/host/omap.c
This commit is contained in:
commit
46cddc01aa
@ -13,12 +13,11 @@
|
||||
*/
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include <linux/platform_data/gpio-omap.h>
|
||||
#include <linux/i2c/tps65010.h>
|
||||
|
||||
#include <plat/mmc.h>
|
||||
|
||||
#include "board-h2.h"
|
||||
#include "mmc.h"
|
||||
|
||||
#if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE)
|
||||
|
||||
|
@ -16,9 +16,8 @@
|
||||
|
||||
#include <linux/i2c/tps65010.h>
|
||||
|
||||
#include <plat/mmc.h>
|
||||
|
||||
#include "board-h3.h"
|
||||
#include "mmc.h"
|
||||
|
||||
#if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE)
|
||||
|
||||
|
@ -43,7 +43,7 @@
|
||||
#include <asm/mach/arch.h>
|
||||
|
||||
#include <mach/omap7xx.h>
|
||||
#include <plat/mmc.h>
|
||||
#include "mmc.h"
|
||||
|
||||
#include <mach/irqs.h>
|
||||
#include <mach/usb.h>
|
||||
|
@ -36,13 +36,13 @@
|
||||
#include <plat/fpga.h>
|
||||
#include <plat/tc.h>
|
||||
#include <linux/platform_data/keypad-omap.h>
|
||||
#include <plat/mmc.h>
|
||||
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/usb.h>
|
||||
|
||||
#include "iomap.h"
|
||||
#include "common.h"
|
||||
#include "mmc.h"
|
||||
|
||||
/* At OMAP1610 Innovator the Ethernet is directly connected to CS1 */
|
||||
#define INNOVATOR1610_ETHR_START 0x04000300
|
||||
|
@ -29,13 +29,13 @@
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include <mach/mux.h>
|
||||
#include <plat/mmc.h>
|
||||
#include <plat/clock.h>
|
||||
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/usb.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "mmc.h"
|
||||
|
||||
#define ADS7846_PENDOWN_GPIO 15
|
||||
|
||||
|
@ -16,9 +16,10 @@
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include <mach/hardware.h>
|
||||
#include <plat/mmc.h>
|
||||
#include <mach/board-sx1.h>
|
||||
|
||||
#include "mmc.h"
|
||||
|
||||
#if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE)
|
||||
|
||||
static int mmc_set_power(struct device *dev, int slot, int power_on,
|
||||
|
@ -21,7 +21,6 @@
|
||||
|
||||
#include <plat/tc.h>
|
||||
#include <mach/mux.h>
|
||||
#include <plat/mmc.h>
|
||||
|
||||
#include <mach/omap7xx.h>
|
||||
#include <mach/camera.h>
|
||||
@ -30,6 +29,7 @@
|
||||
#include "common.h"
|
||||
#include "clock.h"
|
||||
#include "dma.h"
|
||||
#include "mmc.h"
|
||||
|
||||
#if defined(CONFIG_SND_SOC) || defined(CONFIG_SND_SOC_MODULE)
|
||||
|
||||
@ -175,6 +175,13 @@ static int __init omap_mmc_add(const char *name, int id, unsigned long base,
|
||||
res[3].name = "tx";
|
||||
res[3].flags = IORESOURCE_DMA;
|
||||
|
||||
if (cpu_is_omap7xx())
|
||||
data->slots[0].features = MMC_OMAP7XX;
|
||||
if (cpu_is_omap15xx())
|
||||
data->slots[0].features = MMC_OMAP15XX;
|
||||
if (cpu_is_omap16xx())
|
||||
data->slots[0].features = MMC_OMAP16XX;
|
||||
|
||||
ret = platform_device_add_resources(pdev, res, ARRAY_SIZE(res));
|
||||
if (ret == 0)
|
||||
ret = platform_device_add_data(pdev, data, sizeof(*data));
|
||||
|
18
arch/arm/mach-omap1/mmc.h
Normal file
18
arch/arm/mach-omap1/mmc.h
Normal file
@ -0,0 +1,18 @@
|
||||
#include <linux/mmc/host.h>
|
||||
#include <linux/platform_data/mmc-omap.h>
|
||||
|
||||
#define OMAP15XX_NR_MMC 1
|
||||
#define OMAP16XX_NR_MMC 2
|
||||
#define OMAP1_MMC_SIZE 0x080
|
||||
#define OMAP1_MMC1_BASE 0xfffb7800
|
||||
#define OMAP1_MMC2_BASE 0xfffb7c00 /* omap16xx only */
|
||||
|
||||
#if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE)
|
||||
void omap1_init_mmc(struct omap_mmc_platform_data **mmc_data,
|
||||
int nr_controllers);
|
||||
#else
|
||||
static inline void omap1_init_mmc(struct omap_mmc_platform_data **mmc_data,
|
||||
int nr_controllers)
|
||||
{
|
||||
}
|
||||
#endif
|
@ -35,7 +35,6 @@
|
||||
|
||||
#include "common.h"
|
||||
#include <plat/usb.h>
|
||||
#include <plat/mmc.h>
|
||||
#include "omap4-keypad.h"
|
||||
#include <video/omapdss.h>
|
||||
#include <video/omap-panel-nokia-dsi.h>
|
||||
@ -45,6 +44,7 @@
|
||||
|
||||
#include "soc.h"
|
||||
#include "mux.h"
|
||||
#include "mmc.h"
|
||||
#include "hsmmc.h"
|
||||
#include "control.h"
|
||||
#include "common-board-devices.h"
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
#include "common.h"
|
||||
#include <plat/menelaus.h>
|
||||
#include <plat/mmc.h>
|
||||
#include "mmc.h"
|
||||
|
||||
#include "mux.h"
|
||||
#include "gpmc-onenand.h"
|
||||
|
@ -40,10 +40,10 @@
|
||||
|
||||
#include "common.h"
|
||||
#include <plat/usb.h>
|
||||
#include <plat/mmc.h>
|
||||
#include <video/omap-panel-tfp410.h>
|
||||
|
||||
#include "soc.h"
|
||||
#include "mmc.h"
|
||||
#include "hsmmc.h"
|
||||
#include "control.h"
|
||||
#include "mux.h"
|
||||
|
@ -23,13 +23,13 @@
|
||||
#include <asm/mach-types.h>
|
||||
|
||||
#include <plat/i2c.h>
|
||||
#include <plat/mmc.h>
|
||||
#include <plat/usb.h>
|
||||
#include "gpmc.h"
|
||||
#include "common.h"
|
||||
#include <plat/serial.h>
|
||||
|
||||
#include "mux.h"
|
||||
#include "mmc.h"
|
||||
#include "hsmmc.h"
|
||||
#include "sdram-nokia.h"
|
||||
#include "common-board-devices.h"
|
||||
|
@ -17,11 +17,11 @@
|
||||
#include <mach/hardware.h>
|
||||
#include <linux/platform_data/gpio-omap.h>
|
||||
|
||||
#include <plat/mmc.h>
|
||||
#include <plat/omap-pm.h>
|
||||
#include <plat/omap_device.h>
|
||||
|
||||
#include "mux.h"
|
||||
#include "mmc.h"
|
||||
#include "hsmmc.h"
|
||||
#include "control.h"
|
||||
|
||||
|
23
arch/arm/mach-omap2/mmc.h
Normal file
23
arch/arm/mach-omap2/mmc.h
Normal file
@ -0,0 +1,23 @@
|
||||
#include <linux/mmc/host.h>
|
||||
#include <linux/platform_data/mmc-omap.h>
|
||||
|
||||
#define OMAP24XX_NR_MMC 2
|
||||
#define OMAP2420_MMC_SIZE OMAP1_MMC_SIZE
|
||||
#define OMAP2_MMC1_BASE 0x4809c000
|
||||
|
||||
#define OMAP4_MMC_REG_OFFSET 0x100
|
||||
|
||||
#if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE)
|
||||
void omap242x_init_mmc(struct omap_mmc_platform_data **mmc_data);
|
||||
#else
|
||||
static inline void omap242x_init_mmc(struct omap_mmc_platform_data **mmc_data)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
struct omap_hwmod;
|
||||
int omap_msdi_reset(struct omap_hwmod *oh);
|
||||
|
||||
/* called from board-specific card detection service routine */
|
||||
extern void omap_mmc_notify_cover_event(struct device *dev, int slot,
|
||||
int is_closed);
|
@ -27,11 +27,11 @@
|
||||
|
||||
#include <plat/omap_hwmod.h>
|
||||
#include <plat/omap_device.h>
|
||||
#include <plat/mmc.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "control.h"
|
||||
#include "mux.h"
|
||||
#include "mmc.h"
|
||||
|
||||
/*
|
||||
* MSDI_CON_OFFSET: offset in bytes of the MSDI IP block's CON register
|
||||
|
@ -27,12 +27,12 @@
|
||||
|
||||
#include <plat/sram.h>
|
||||
#include <plat/omap-secure.h>
|
||||
#include <plat/mmc.h>
|
||||
|
||||
#include "omap-wakeupgen.h"
|
||||
|
||||
#include "soc.h"
|
||||
#include "common.h"
|
||||
#include "mmc.h"
|
||||
#include "hsmmc.h"
|
||||
#include "omap4-sar-layout.h"
|
||||
|
||||
|
@ -21,12 +21,12 @@
|
||||
#include <plat/dmtimer.h>
|
||||
#include "l3_2xxx.h"
|
||||
#include "l4_2xxx.h"
|
||||
#include <plat/mmc.h>
|
||||
|
||||
#include "omap_hwmod_common_data.h"
|
||||
|
||||
#include "cm-regbits-24xx.h"
|
||||
#include "prm-regbits-24xx.h"
|
||||
#include "mmc.h"
|
||||
#include "wd_timer.h"
|
||||
|
||||
/*
|
||||
|
@ -20,7 +20,7 @@
|
||||
#include <plat/serial.h>
|
||||
#include <plat/i2c.h>
|
||||
#include <plat/dmtimer.h>
|
||||
#include <plat/mmc.h>
|
||||
#include "mmc.h"
|
||||
#include "l3_2xxx.h"
|
||||
|
||||
#include "soc.h"
|
||||
|
@ -18,8 +18,6 @@
|
||||
#include <plat/cpu.h>
|
||||
#include <linux/platform_data/gpio-omap.h>
|
||||
#include <linux/platform_data/spi-omap2-mcspi.h>
|
||||
#include <plat-omap/dma-omap.h>
|
||||
#include <plat/mmc.h>
|
||||
#include <plat/i2c.h>
|
||||
|
||||
#include "omap_hwmod_common_data.h"
|
||||
@ -28,6 +26,7 @@
|
||||
#include "cm33xx.h"
|
||||
#include "prm33xx.h"
|
||||
#include "prm-regbits-33xx.h"
|
||||
#include "mmc.h"
|
||||
|
||||
/*
|
||||
* IP blocks
|
||||
|
@ -23,7 +23,6 @@
|
||||
#include "l3_3xxx.h"
|
||||
#include "l4_3xxx.h"
|
||||
#include <plat/i2c.h>
|
||||
#include <plat/mmc.h>
|
||||
#include <linux/platform_data/asoc-ti-mcbsp.h>
|
||||
#include <linux/platform_data/spi-omap2-mcspi.h>
|
||||
#include <plat/dmtimer.h>
|
||||
@ -37,6 +36,7 @@
|
||||
#include "cm-regbits-34xx.h"
|
||||
|
||||
#include "dma.h"
|
||||
#include "mmc.h"
|
||||
#include "wd_timer.h"
|
||||
|
||||
/*
|
||||
|
@ -27,7 +27,6 @@
|
||||
#include <plat-omap/dma-omap.h>
|
||||
#include <linux/platform_data/spi-omap2-mcspi.h>
|
||||
#include <linux/platform_data/asoc-ti-mcbsp.h>
|
||||
#include <plat/mmc.h>
|
||||
#include <plat/dmtimer.h>
|
||||
#include <plat/common.h>
|
||||
#include <plat/iommu.h>
|
||||
@ -37,6 +36,7 @@
|
||||
#include "cm2_44xx.h"
|
||||
#include "prm44xx.h"
|
||||
#include "prm-regbits-44xx.h"
|
||||
#include "mmc.h"
|
||||
#include "wd_timer.h"
|
||||
|
||||
/* Base offset for all OMAP4 interrupts external to MPUSS */
|
||||
|
@ -28,9 +28,8 @@
|
||||
#include <linux/clk.h>
|
||||
#include <linux/scatterlist.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/platform_data/mmc-omap.h>
|
||||
|
||||
#include <plat/mmc.h>
|
||||
#include <plat-omap/dma-omap.h>
|
||||
|
||||
#define OMAP_MMC_REG_CMD 0x00
|
||||
#define OMAP_MMC_REG_ARGL 0x01
|
||||
@ -72,6 +71,13 @@
|
||||
#define OMAP_MMC_STAT_CARD_BUSY (1 << 2)
|
||||
#define OMAP_MMC_STAT_END_OF_CMD (1 << 0)
|
||||
|
||||
#define mmc_omap7xx() (host->features & MMC_OMAP7XX)
|
||||
#define mmc_omap15xx() (host->features & MMC_OMAP15XX)
|
||||
#define mmc_omap16xx() (host->features & MMC_OMAP16XX)
|
||||
#define MMC_OMAP1_MASK (MMC_OMAP7XX | MMC_OMAP15XX | MMC_OMAP16XX)
|
||||
#define mmc_omap1() (host->features & MMC_OMAP1_MASK)
|
||||
#define mmc_omap2() (!mmc_omap1())
|
||||
|
||||
#define OMAP_MMC_REG(host, reg) (OMAP_MMC_REG_##reg << (host)->reg_shift)
|
||||
#define OMAP_MMC_READ(host, reg) __raw_readw((host)->virt_base + OMAP_MMC_REG(host, reg))
|
||||
#define OMAP_MMC_WRITE(host, reg, val) __raw_writew((val), (host)->virt_base + OMAP_MMC_REG(host, reg))
|
||||
@ -157,6 +163,7 @@ struct mmc_omap_host {
|
||||
u32 buffer_bytes_left;
|
||||
u32 total_bytes_left;
|
||||
|
||||
unsigned features;
|
||||
unsigned use_dma:1;
|
||||
unsigned brs_received:1, dma_done:1;
|
||||
unsigned dma_in_use:1;
|
||||
@ -998,7 +1005,7 @@ mmc_omap_prepare_data(struct mmc_omap_host *host, struct mmc_request *req)
|
||||
* blocksize is at least that large. Blocksize is
|
||||
* usually 512 bytes; but not for some SD reads.
|
||||
*/
|
||||
burst = cpu_is_omap15xx() ? 32 : 64;
|
||||
burst = mmc_omap15xx() ? 32 : 64;
|
||||
if (burst > data->blksz)
|
||||
burst = data->blksz;
|
||||
|
||||
@ -1114,8 +1121,7 @@ static void mmc_omap_set_power(struct mmc_omap_slot *slot, int power_on,
|
||||
if (slot->pdata->set_power != NULL)
|
||||
slot->pdata->set_power(mmc_dev(slot->mmc), slot->id, power_on,
|
||||
vdd);
|
||||
|
||||
if (cpu_is_omap24xx()) {
|
||||
if (mmc_omap2()) {
|
||||
u16 w;
|
||||
|
||||
if (power_on) {
|
||||
@ -1249,7 +1255,7 @@ static int __devinit mmc_omap_new_slot(struct mmc_omap_host *host, int id)
|
||||
mmc->ops = &mmc_omap_ops;
|
||||
mmc->f_min = 400000;
|
||||
|
||||
if (cpu_class_is_omap2())
|
||||
if (mmc_omap2())
|
||||
mmc->f_max = 48000000;
|
||||
else
|
||||
mmc->f_max = 24000000;
|
||||
@ -1369,6 +1375,7 @@ static int __devinit mmc_omap_probe(struct platform_device *pdev)
|
||||
init_waitqueue_head(&host->slot_wq);
|
||||
|
||||
host->pdata = pdata;
|
||||
host->features = host->pdata->slots[0].features;
|
||||
host->dev = &pdev->dev;
|
||||
platform_set_drvdata(pdev, host);
|
||||
|
||||
@ -1401,7 +1408,7 @@ static int __devinit mmc_omap_probe(struct platform_device *pdev)
|
||||
host->dma_tx_burst = -1;
|
||||
host->dma_rx_burst = -1;
|
||||
|
||||
if (cpu_is_omap24xx())
|
||||
if (mmc_omap2())
|
||||
sig = host->id == 0 ? OMAP24XX_DMA_MMC1_TX : OMAP24XX_DMA_MMC2_TX;
|
||||
else
|
||||
sig = host->id == 0 ? OMAP_DMA_MMC_TX : OMAP_DMA_MMC2_TX;
|
||||
@ -1417,7 +1424,7 @@ static int __devinit mmc_omap_probe(struct platform_device *pdev)
|
||||
dev_warn(host->dev, "unable to obtain TX DMA engine channel %u\n",
|
||||
sig);
|
||||
#endif
|
||||
if (cpu_is_omap24xx())
|
||||
if (mmc_omap2())
|
||||
sig = host->id == 0 ? OMAP24XX_DMA_MMC1_RX : OMAP24XX_DMA_MMC2_RX;
|
||||
else
|
||||
sig = host->id == 0 ? OMAP_DMA_MMC_RX : OMAP_DMA_MMC2_RX;
|
||||
@ -1445,7 +1452,7 @@ static int __devinit mmc_omap_probe(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
host->nr_slots = pdata->nr_slots;
|
||||
host->reg_shift = (cpu_is_omap7xx() ? 1 : 2);
|
||||
host->reg_shift = (mmc_omap7xx() ? 1 : 2);
|
||||
|
||||
host->mmc_omap_wq = alloc_workqueue("mmc_omap", 0, 0);
|
||||
if (!host->mmc_omap_wq)
|
||||
|
@ -38,9 +38,7 @@
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/regulator/consumer.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <mach/hardware.h>
|
||||
#include <plat/mmc.h>
|
||||
#include <plat/cpu.h>
|
||||
#include <linux/platform_data/mmc-omap.h>
|
||||
|
||||
/* OMAP HSMMC Host Controller Registers */
|
||||
#define OMAP_HSMMC_SYSSTATUS 0x0014
|
||||
|
@ -8,27 +8,6 @@
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef __OMAP2_MMC_H
|
||||
#define __OMAP2_MMC_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/mmc/host.h>
|
||||
|
||||
#include <plat/omap_hwmod.h>
|
||||
|
||||
#define OMAP15XX_NR_MMC 1
|
||||
#define OMAP16XX_NR_MMC 2
|
||||
#define OMAP1_MMC_SIZE 0x080
|
||||
#define OMAP1_MMC1_BASE 0xfffb7800
|
||||
#define OMAP1_MMC2_BASE 0xfffb7c00 /* omap16xx only */
|
||||
|
||||
#define OMAP24XX_NR_MMC 2
|
||||
#define OMAP2420_MMC_SIZE OMAP1_MMC_SIZE
|
||||
#define OMAP2_MMC1_BASE 0x4809c000
|
||||
|
||||
#define OMAP4_MMC_REG_OFFSET 0x100
|
||||
|
||||
#define OMAP_MMC_MAX_SLOTS 2
|
||||
|
||||
/*
|
||||
@ -50,6 +29,8 @@
|
||||
#define OMAP_HSMMC_SUPPORTS_DUAL_VOLT BIT(0)
|
||||
#define OMAP_HSMMC_BROKEN_MULTIBLOCK_READ BIT(1)
|
||||
|
||||
struct mmc_card;
|
||||
|
||||
struct omap_mmc_dev_attr {
|
||||
u8 flags;
|
||||
};
|
||||
@ -126,6 +107,9 @@ struct omap_mmc_platform_data {
|
||||
/* we can put the features above into this variable */
|
||||
#define HSMMC_HAS_PBIAS (1 << 0)
|
||||
#define HSMMC_HAS_UPDATED_RESET (1 << 1)
|
||||
#define MMC_OMAP7XX (1 << 2)
|
||||
#define MMC_OMAP15XX (1 << 3)
|
||||
#define MMC_OMAP16XX (1 << 4)
|
||||
unsigned features;
|
||||
|
||||
int switch_pin; /* gpio (card detect) */
|
||||
@ -164,25 +148,3 @@ struct omap_mmc_platform_data {
|
||||
|
||||
} slots[OMAP_MMC_MAX_SLOTS];
|
||||
};
|
||||
|
||||
/* called from board-specific card detection service routine */
|
||||
extern void omap_mmc_notify_cover_event(struct device *dev, int slot,
|
||||
int is_closed);
|
||||
|
||||
#if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE)
|
||||
void omap1_init_mmc(struct omap_mmc_platform_data **mmc_data,
|
||||
int nr_controllers);
|
||||
void omap242x_init_mmc(struct omap_mmc_platform_data **mmc_data);
|
||||
#else
|
||||
static inline void omap1_init_mmc(struct omap_mmc_platform_data **mmc_data,
|
||||
int nr_controllers)
|
||||
{
|
||||
}
|
||||
static inline void omap242x_init_mmc(struct omap_mmc_platform_data **mmc_data)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
extern int omap_msdi_reset(struct omap_hwmod *oh);
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user