Logo Search packages:      
Sourcecode: linux-fsl-imx51 version File versions  Download package

mx_sdhci.c File Reference


Detailed Description

Driver for the Freescale Semiconductor MXC eSDHC modules.

This driver code is based on sdhci.c, by Pierre Ossman <drzeus@drzeus.cx>"); This driver supports Enhanced Secure Digital Host Controller modules eSDHC of MXC. eSDHC is also referred as enhanced MMC/SD controller.

Definition in file mx_sdhci.c.

#include <linux/delay.h>
#include <linux/highmem.h>
#include <linux/platform_device.h>
#include <linux/dma-mapping.h>
#include <linux/scatterlist.h>
#include <linux/leds.h>
#include <linux/mmc/host.h>
#include <linux/mmc/mmc.h>
#include <linux/mmc/card.h>
#include <linux/clk.h>
#include <linux/regulator/consumer.h>
#include <asm/dma.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/mach/irq.h>
#include <asm/mach-types.h>
#include <mach/hardware.h>
#include <mach/dma.h>
#include <mach/mmc.h>
#include "mx_sdhci.h"

Go to the source code of this file.

Defines

#define DBG(f, x...)   pr_debug(DRIVER_NAME " [%s()]: " f, __func__, ## x)
#define DRIVER_NAME   "mxsdhci"
#define MXC_SDHCI_NUM   4
#define SDHCI_QUIRK_32BIT_DMA_ADDR   (1<<6)
#define SDHCI_QUIRK_32BIT_DMA_SIZE   (1<<7)
#define SDHCI_QUIRK_BROKEN_DMA   (1<<5)
#define SDHCI_QUIRK_CLOCK_BEFORE_RESET   (1<<0)
#define SDHCI_QUIRK_EXTERNAL_DMA_MODE   (1<<17)
#define SDHCI_QUIRK_FORCE_DMA   (1<<1)
#define SDHCI_QUIRK_INCR_TIMEOUT_CONTROL   (1<<10)
#define SDHCI_QUIRK_INTERNAL_ADVANCED_DMA   (1<<19)
#define SDHCI_QUIRK_INTERNAL_SIMPLE_DMA   (1<<18)
#define SDHCI_QUIRK_NO_CARD_NO_RESET   (1<<2)
#define SDHCI_QUIRK_NO_SIMULT_VDD_AND_POWER   (1<<9)
#define SDHCI_QUIRK_ONLY_PIO   (1<<16)
#define SDHCI_QUIRK_RESET_AFTER_REQUEST   (1<<8)
#define SDHCI_QUIRK_RESET_CMD_DATA_ON_IOS   (1<<4)
#define SDHCI_QUIRK_SINGLE_POWER_WRITE   (1<<3)
#define sdhci_resume   NULL
#define sdhci_suspend   NULL

Functions

static void esdhc_cd_callback (struct work_struct *work)
 EXPORT_SYMBOL (mxc_mmc_force_detect)
void gpio_sdhc_active (int module)
void gpio_sdhc_inactive (int module)
 MODULE_AUTHOR ("Freescale Semiconductor, Inc.")
 MODULE_DESCRIPTION ("MXC Secure Digital Host Controller Interface driver")
 module_exit (sdhci_drv_exit)
 module_init (sdhci_drv_init)
 MODULE_LICENSE ("GPL")
 module_param (debug_quirks, uint, 0444)
 MODULE_PARM_DESC (debug_quirks,"Force certain quirks.")
void mxc_mmc_force_detect (int id)
static void sdhci_activate_led (struct sdhci_host *host)
static irqreturn_t sdhci_cd_irq (int irq, void *dev_id)
static void sdhci_cd_timer (unsigned long data)
static void sdhci_cmd_irq (struct sdhci_host *host, u32 intmask)
static void sdhci_data_irq (struct sdhci_host *host, u32 intmask)
static void sdhci_deactivate_led (struct sdhci_host *host)
static void sdhci_dma_irq (void *devid, int error, unsigned int cnt)
static void __exit sdhci_drv_exit (void)
static int __init sdhci_drv_init (void)
static void sdhci_dumpregs (struct sdhci_host *host)
static void sdhci_enable_sdio_irq (struct mmc_host *mmc, int enable)
static void sdhci_finish_command (struct sdhci_host *)
static void sdhci_finish_data (struct sdhci_host *)
static int sdhci_get_ro (struct mmc_host *mmc)
static void sdhci_init (struct sdhci_host *host)
static irqreturn_t sdhci_irq (int irq, void *dev_id)
static int sdhci_next_sg (struct sdhci_host *host)
static void sdhci_prepare_data (struct sdhci_host *, struct mmc_data *)
static int sdhci_probe (struct platform_device *pdev)
static int __devinit sdhci_probe_slot (struct platform_device *pdev, int slot)
static void sdhci_read_block_pio (struct sdhci_host *host)
static int sdhci_remove (struct platform_device *pdev)
static void sdhci_remove_slot (struct platform_device *pdev, int slot)
static void sdhci_request (struct mmc_host *mmc, struct mmc_request *mrq)
static void sdhci_reset (struct sdhci_host *host, u8 mask)
static void sdhci_send_command (struct sdhci_host *, struct mmc_command *)
static void sdhci_set_clock (struct sdhci_host *host, unsigned int clock)
static void sdhci_set_ios (struct mmc_host *mmc, struct mmc_ios *ios)
static void sdhci_set_power (struct sdhci_host *host, unsigned short power)
static char * sdhci_sg_to_buffer (struct sdhci_host *host)
static void sdhci_tasklet_card (unsigned long param)
static void sdhci_tasklet_finish (unsigned long param)
static void sdhci_timeout_timer (unsigned long data)
static void sdhci_transfer_pio (struct sdhci_host *host)
static void sdhci_write_block_pio (struct sdhci_host *host)

Variables

static unsigned int * adma_des_table
static unsigned int debug_quirks
static int last_op_dir
static struct sdhci_chip * mxc_fix_chips [MXC_SDHCI_NUM]
static unsigned int mxc_quirks
static unsigned int mxc_wml_value = 512
static struct platform_driver sdhci_driver
static struct mmc_host_ops sdhci_ops


Generated by  Doxygen 1.6.0   Back to index