LCOV - code coverage report
Current view: top level - lkbce/include/linux/mmc - sdio_func.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 4 4 100.0 %
Date: 2017-01-25 Functions: 0 0 -

          Line data    Source code
       1             : /*
       2             :  *  include/linux/mmc/sdio_func.h
       3             :  *
       4             :  *  Copyright 2007-2008 Pierre Ossman
       5             :  *
       6             :  * This program is free software; you can redistribute it and/or modify
       7             :  * it under the terms of the GNU General Public License as published by
       8             :  * the Free Software Foundation; either version 2 of the License, or (at
       9             :  * your option) any later version.
      10             :  */
      11             : 
      12             : #ifndef MMC_SDIO_FUNC_H
      13             : #define MMC_SDIO_FUNC_H
      14             : 
      15             : #include <linux/device.h>
      16             : #include <linux/mod_devicetable.h>
      17             : 
      18             : struct mmc_card;
      19             : struct sdio_func;
      20             : 
      21           1 : typedef void (sdio_irq_handler_t)(struct sdio_func *);
      22           1 : 
      23             : /*
      24             :  * SDIO function CIS tuple (unknown to the core)
      25             :  */
      26             : struct sdio_func_tuple {
      27             :         struct sdio_func_tuple *next;
      28             :         unsigned char code;
      29             :         unsigned char size;
      30             :         unsigned char data[0];
      31             : };
      32           1 : 
      33             : /*
      34             :  * SDIO function devices
      35             :  */
      36             : struct sdio_func {
      37             :         struct mmc_card         *card;          /* the card this device belongs to */
      38             :         struct device           dev;            /* the device */
      39             :         sdio_irq_handler_t      *irq_handler;   /* IRQ callback */
      40             :         unsigned int            num;            /* function number */
      41             : 
      42             :         unsigned char           class;          /* standard interface class */
      43             :         unsigned short          vendor;         /* vendor id */
      44             :         unsigned short          device;         /* device id */
      45             : 
      46             :         unsigned                max_blksize;    /* maximum block size */
      47             :         unsigned                cur_blksize;    /* current block size */
      48             : 
      49             :         unsigned                enable_timeout; /* max enable timeout in msec */
      50             : 
      51             :         unsigned int            state;          /* function state */
      52             : #define SDIO_STATE_PRESENT      (1<<0)            /* present in sysfs */
      53             : 
      54             :         u8                      tmpbuf[4];      /* DMA:able scratch buffer */
      55             : 
      56             :         unsigned                num_info;       /* number of info strings */
      57             :         const char              **info;         /* info strings */
      58             : 
      59             :         struct sdio_func_tuple *tuples;
      60             : };
      61           1 : 
      62             : #define sdio_func_present(f)    ((f)->state & SDIO_STATE_PRESENT)
      63             : 
      64             : #define sdio_func_set_present(f) ((f)->state |= SDIO_STATE_PRESENT)
      65             : 
      66             : #define sdio_func_id(f)         (dev_name(&(f)->dev))
      67             : 
      68             : #define sdio_get_drvdata(f)     dev_get_drvdata(&(f)->dev)
      69             : #define sdio_set_drvdata(f,d)   dev_set_drvdata(&(f)->dev, d)
      70             : #define dev_to_sdio_func(d)     container_of(d, struct sdio_func, dev)
      71             : 
      72             : /*
      73             :  * SDIO function device driver
      74             :  */
      75             : struct sdio_driver {
      76             :         char *name;
      77             :         const struct sdio_device_id *id_table;
      78             : 
      79             :         int (*probe)(struct sdio_func *, const struct sdio_device_id *);
      80             :         void (*remove)(struct sdio_func *);
      81             : 
      82             :         struct device_driver drv;
      83             : };
      84             : 
      85             : #define to_sdio_driver(d)       container_of(d, struct sdio_driver, drv)
      86             : 
      87             : /**
      88             :  * SDIO_DEVICE - macro used to describe a specific SDIO device
      89             :  * @vend: the 16 bit manufacturer code
      90             :  * @dev: the 16 bit function id
      91             :  *
      92             :  * This macro is used to create a struct sdio_device_id that matches a
      93             :  * specific device. The class field will be set to SDIO_ANY_ID.
      94             :  */
      95             : #define SDIO_DEVICE(vend,dev) \
      96             :         .class = SDIO_ANY_ID, \
      97             :         .vendor = (vend), .device = (dev)
      98             : 
      99             : /**
     100             :  * SDIO_DEVICE_CLASS - macro used to describe a specific SDIO device class
     101             :  * @dev_class: the 8 bit standard interface code
     102             :  *
     103             :  * This macro is used to create a struct sdio_device_id that matches a
     104             :  * specific standard SDIO function type.  The vendor and device fields will
     105             :  * be set to SDIO_ANY_ID.
     106             :  */
     107             : #define SDIO_DEVICE_CLASS(dev_class) \
     108             :         .class = (dev_class), \
     109             :         .vendor = SDIO_ANY_ID, .device = SDIO_ANY_ID
     110             : 
     111             : extern int sdio_register_driver(struct sdio_driver *);
     112             : extern void sdio_unregister_driver(struct sdio_driver *);
     113             : 
     114             : /*
     115             :  * SDIO I/O operations
     116             :  */
     117             : extern void sdio_claim_host(struct sdio_func *func);
     118             : extern void sdio_release_host(struct sdio_func *func);
     119             : 
     120             : extern int sdio_enable_func(struct sdio_func *func);
     121             : extern int sdio_disable_func(struct sdio_func *func);
     122             : 
     123             : extern int sdio_set_block_size(struct sdio_func *func, unsigned blksz);
     124             : 
     125             : extern int sdio_claim_irq(struct sdio_func *func, sdio_irq_handler_t *handler);
     126             : extern int sdio_release_irq(struct sdio_func *func);
     127             : 
     128             : extern unsigned int sdio_align_size(struct sdio_func *func, unsigned int sz);
     129             : 
     130             : extern u8 sdio_readb(struct sdio_func *func, unsigned int addr, int *err_ret);
     131             : extern u16 sdio_readw(struct sdio_func *func, unsigned int addr, int *err_ret);
     132             : extern u32 sdio_readl(struct sdio_func *func, unsigned int addr, int *err_ret);
     133             : 
     134             : extern int sdio_memcpy_fromio(struct sdio_func *func, void *dst,
     135             :         unsigned int addr, int count);
     136             : extern int sdio_readsb(struct sdio_func *func, void *dst,
     137             :         unsigned int addr, int count);
     138             : 
     139             : extern void sdio_writeb(struct sdio_func *func, u8 b,
     140             :         unsigned int addr, int *err_ret);
     141             : extern void sdio_writew(struct sdio_func *func, u16 b,
     142             :         unsigned int addr, int *err_ret);
     143             : extern void sdio_writel(struct sdio_func *func, u32 b,
     144             :         unsigned int addr, int *err_ret);
     145             : 
     146             : extern int sdio_memcpy_toio(struct sdio_func *func, unsigned int addr,
     147             :         void *src, int count);
     148             : extern int sdio_writesb(struct sdio_func *func, unsigned int addr,
     149             :         void *src, int count);
     150             : 
     151             : extern unsigned char sdio_f0_readb(struct sdio_func *func,
     152             :         unsigned int addr, int *err_ret);
     153             : extern void sdio_f0_writeb(struct sdio_func *func, unsigned char b,
     154             :         unsigned int addr, int *err_ret);
     155             : 
     156             : #endif
     157             : 

Generated by: LCOV version 1.10