Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /*
  2  *  linux/drivers/mfd/mcp.h
  3  *
  4  *  Copyright (C) 2001 Russell King, All Rights Reserved.
  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.
  9  */
 10 #ifndef MCP_H
 11 #define MCP_H
 12 
 13 struct mcp_ops;
 14 
 15 struct mcp {
 16         struct module   *owner;
 17         struct mcp_ops  *ops;
 18         spinlock_t      lock;
 19         int             use_count;
 20         unsigned int    sclk_rate;
 21         unsigned int    rw_timeout;
 22         dma_device_t    dma_audio_rd;
 23         dma_device_t    dma_audio_wr;
 24         dma_device_t    dma_telco_rd;
 25         dma_device_t    dma_telco_wr;
 26         struct device   attached_device;
 27 };
 28 
 29 struct mcp_ops {
 30         void            (*set_telecom_divisor)(struct mcp *, unsigned int);
 31         void            (*set_audio_divisor)(struct mcp *, unsigned int);
 32         void            (*reg_write)(struct mcp *, unsigned int, unsigned int);
 33         unsigned int    (*reg_read)(struct mcp *, unsigned int);
 34         void            (*enable)(struct mcp *);
 35         void            (*disable)(struct mcp *);
 36 };
 37 
 38 void mcp_set_telecom_divisor(struct mcp *, unsigned int);
 39 void mcp_set_audio_divisor(struct mcp *, unsigned int);
 40 void mcp_reg_write(struct mcp *, unsigned int, unsigned int);
 41 unsigned int mcp_reg_read(struct mcp *, unsigned int);
 42 void mcp_enable(struct mcp *);
 43 void mcp_disable(struct mcp *);
 44 #define mcp_get_sclk_rate(mcp)  ((mcp)->sclk_rate)
 45 
 46 struct mcp *mcp_host_alloc(struct device *, size_t);
 47 int mcp_host_register(struct mcp *);
 48 void mcp_host_unregister(struct mcp *);
 49 
 50 struct mcp_driver {
 51         struct device_driver drv;
 52         int (*probe)(struct mcp *);
 53         void (*remove)(struct mcp *);
 54         int (*suspend)(struct mcp *, pm_message_t);
 55         int (*resume)(struct mcp *);
 56 };
 57 
 58 int mcp_driver_register(struct mcp_driver *);
 59 void mcp_driver_unregister(struct mcp_driver *);
 60 
 61 #define mcp_get_drvdata(mcp)    dev_get_drvdata(&(mcp)->attached_device)
 62 #define mcp_set_drvdata(mcp,d)  dev_set_drvdata(&(mcp)->attached_device, d)
 63 
 64 #define mcp_priv(mcp)           ((void *)((mcp)+1))
 65 
 66 #endif
 67 
  This page was automatically generated by the LXR engine.