Commit 46cddc01 authored by Tony Lindgren's avatar Tony Lindgren

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
parents 99f0b8d6 53db20d1
......@@ -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));
......
#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"
......
#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
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