Home | History | Annotate | Download | only in mmc
      1 /****************************************************************************
      2  ****************************************************************************
      3  ***
      4  ***   This header was automatically generated from a Linux kernel header
      5  ***   of the same name, to make information necessary for userspace to
      6  ***   call into the kernel available to libc.  It contains only constants,
      7  ***   structures, and macros generated from the original header, and thus,
      8  ***   contains no copyrightable information.
      9  ***
     10  ****************************************************************************
     11  ****************************************************************************/
     12 #ifndef LINUX_MMC_CARD_H
     13 #define LINUX_MMC_CARD_H
     14 
     15 #include <linux/mmc/mmc.h>
     16 
     17 struct mmc_cid {
     18  unsigned int manfid;
     19  char prod_name[8];
     20  unsigned int serial;
     21  unsigned short oemid;
     22  unsigned short year;
     23  unsigned char hwrev;
     24  unsigned char fwrev;
     25  unsigned char month;
     26 };
     27 
     28 struct mmc_csd {
     29  unsigned char mmca_vsn;
     30  unsigned short cmdclass;
     31  unsigned short tacc_clks;
     32  unsigned int tacc_ns;
     33  unsigned int r2w_factor;
     34  unsigned int max_dtr;
     35  unsigned int read_blkbits;
     36  unsigned int write_blkbits;
     37  unsigned int capacity;
     38  unsigned int read_partial:1,
     39  read_misalign:1,
     40  write_partial:1,
     41  write_misalign:1;
     42 };
     43 
     44 struct sd_scr {
     45  unsigned char sda_vsn;
     46  unsigned char bus_widths;
     47 #define SD_SCR_BUS_WIDTH_1 (1<<0)
     48 #define SD_SCR_BUS_WIDTH_4 (1<<2)
     49 };
     50 
     51 struct mmc_host;
     52 
     53 struct mmc_card {
     54  struct list_head node;
     55  struct mmc_host *host;
     56  struct device dev;
     57  unsigned int rca;
     58  unsigned int state;
     59 #define MMC_STATE_PRESENT (1<<0)
     60 #define MMC_STATE_DEAD (1<<1)
     61 #define MMC_STATE_BAD (1<<2)
     62 #define MMC_STATE_SDCARD (1<<3)
     63 #define MMC_STATE_READONLY (1<<4)
     64  u32 raw_cid[4];
     65  u32 raw_csd[4];
     66  u32 raw_scr[2];
     67  struct mmc_cid cid;
     68  struct mmc_csd csd;
     69  struct sd_scr scr;
     70 };
     71 
     72 #define mmc_card_present(c) ((c)->state & MMC_STATE_PRESENT)
     73 #define mmc_card_dead(c) ((c)->state & MMC_STATE_DEAD)
     74 #define mmc_card_bad(c) ((c)->state & MMC_STATE_BAD)
     75 #define mmc_card_sd(c) ((c)->state & MMC_STATE_SDCARD)
     76 #define mmc_card_readonly(c) ((c)->state & MMC_STATE_READONLY)
     77 
     78 #define mmc_card_set_present(c) ((c)->state |= MMC_STATE_PRESENT)
     79 #define mmc_card_set_dead(c) ((c)->state |= MMC_STATE_DEAD)
     80 #define mmc_card_set_bad(c) ((c)->state |= MMC_STATE_BAD)
     81 #define mmc_card_set_sd(c) ((c)->state |= MMC_STATE_SDCARD)
     82 #define mmc_card_set_readonly(c) ((c)->state |= MMC_STATE_READONLY)
     83 
     84 #define mmc_card_name(c) ((c)->cid.prod_name)
     85 #define mmc_card_id(c) ((c)->dev.bus_id)
     86 
     87 #define mmc_list_to_card(l) container_of(l, struct mmc_card, node)
     88 #define mmc_get_drvdata(c) dev_get_drvdata(&(c)->dev)
     89 #define mmc_set_drvdata(c,d) dev_set_drvdata(&(c)->dev, d)
     90 
     91 struct mmc_driver {
     92  struct device_driver drv;
     93  int (*probe)(struct mmc_card *);
     94  void (*remove)(struct mmc_card *);
     95  int (*suspend)(struct mmc_card *, pm_message_t);
     96  int (*resume)(struct mmc_card *);
     97 };
     98 
     99 #define mmc_card_release_host(c) mmc_release_host((c)->host)
    100 #endif
    101