~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to drivers/mmc/core/core.h

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 *  linux/drivers/mmc/core/core.h
 
3
 *
 
4
 *  Copyright (C) 2003 Russell King, All Rights Reserved.
 
5
 *  Copyright 2007 Pierre Ossman
 
6
 *
 
7
 * This program is free software; you can redistribute it and/or modify
 
8
 * it under the terms of the GNU General Public License version 2 as
 
9
 * published by the Free Software Foundation.
 
10
 */
 
11
#ifndef _MMC_CORE_CORE_H
 
12
#define _MMC_CORE_CORE_H
 
13
 
 
14
#include <linux/delay.h>
 
15
 
 
16
#define MMC_CMD_RETRIES        3
 
17
 
 
18
struct mmc_bus_ops {
 
19
        int (*awake)(struct mmc_host *);
 
20
        int (*sleep)(struct mmc_host *);
 
21
        void (*remove)(struct mmc_host *);
 
22
        void (*detect)(struct mmc_host *);
 
23
        int (*suspend)(struct mmc_host *);
 
24
        int (*resume)(struct mmc_host *);
 
25
        int (*power_save)(struct mmc_host *);
 
26
        int (*power_restore)(struct mmc_host *);
 
27
};
 
28
 
 
29
void mmc_attach_bus(struct mmc_host *host, const struct mmc_bus_ops *ops);
 
30
void mmc_detach_bus(struct mmc_host *host);
 
31
 
 
32
void mmc_init_erase(struct mmc_card *card);
 
33
 
 
34
void mmc_set_chip_select(struct mmc_host *host, int mode);
 
35
void mmc_set_clock(struct mmc_host *host, unsigned int hz);
 
36
void mmc_gate_clock(struct mmc_host *host);
 
37
void mmc_ungate_clock(struct mmc_host *host);
 
38
void mmc_set_ungated(struct mmc_host *host);
 
39
void mmc_set_bus_mode(struct mmc_host *host, unsigned int mode);
 
40
void mmc_set_bus_width(struct mmc_host *host, unsigned int width);
 
41
u32 mmc_select_voltage(struct mmc_host *host, u32 ocr);
 
42
int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage,
 
43
                           bool cmd11);
 
44
void mmc_set_timing(struct mmc_host *host, unsigned int timing);
 
45
void mmc_set_driver_type(struct mmc_host *host, unsigned int drv_type);
 
46
void mmc_power_off(struct mmc_host *host);
 
47
 
 
48
static inline void mmc_delay(unsigned int ms)
 
49
{
 
50
        if (ms < 1000 / HZ) {
 
51
                cond_resched();
 
52
                mdelay(ms);
 
53
        } else {
 
54
                msleep(ms);
 
55
        }
 
56
}
 
57
 
 
58
void mmc_rescan(struct work_struct *work);
 
59
void mmc_start_host(struct mmc_host *host);
 
60
void mmc_stop_host(struct mmc_host *host);
 
61
 
 
62
int mmc_attach_mmc(struct mmc_host *host);
 
63
int mmc_attach_sd(struct mmc_host *host);
 
64
int mmc_attach_sdio(struct mmc_host *host);
 
65
 
 
66
/* Module parameters */
 
67
extern int use_spi_crc;
 
68
 
 
69
/* Debugfs information for hosts and cards */
 
70
void mmc_add_host_debugfs(struct mmc_host *host);
 
71
void mmc_remove_host_debugfs(struct mmc_host *host);
 
72
 
 
73
void mmc_add_card_debugfs(struct mmc_card *card);
 
74
void mmc_remove_card_debugfs(struct mmc_card *card);
 
75
 
 
76
#endif
 
77