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

          Line data    Source code
       1             : /*
       2             :  * platform_device.h - generic, centralized driver model
       3             :  *
       4             :  * Copyright (c) 2001-2003 Patrick Mochel <mochel@osdl.org>
       5             :  *
       6             :  * This file is released under the GPLv2
       7             :  *
       8             :  * See Documentation/driver-model/ for more information.
       9             :  */
      10             : 
      11             : #ifndef _PLATFORM_DEVICE_H_
      12             : #define _PLATFORM_DEVICE_H_
      13             : 
      14             : #include <linux/device.h>
      15             : #include <linux/mod_devicetable.h>
      16             : 
      17             : struct platform_device {
      18             :         const char      * name;
      19             :         int             id;
      20             :         struct device   dev;
      21             :         u32             num_resources;
      22             :         struct resource * resource;
      23             : 
      24             :         struct platform_device_id       *id_entry;
      25             : 
      26             :         /* arch specific additions */
      27             :         struct pdev_archdata    archdata;
      28             : };
      29             : 
      30             : #define platform_get_device_id(pdev)    ((pdev)->id_entry)
      31             : 
      32             : #define to_platform_device(x) container_of((x), struct platform_device, dev)
      33             : 
      34             : extern int platform_device_register(struct platform_device *);
      35             : extern void platform_device_unregister(struct platform_device *);
      36             : 
      37             : extern struct bus_type platform_bus_type;
      38             : extern struct device platform_bus;
      39             : 
      40             : extern struct resource *platform_get_resource(struct platform_device *, unsigned int, unsigned int);
      41             : extern int platform_get_irq(struct platform_device *, unsigned int);
      42             : extern struct resource *platform_get_resource_byname(struct platform_device *, unsigned int, const char *);
      43             : extern int platform_get_irq_byname(struct platform_device *, const char *);
      44             : extern int platform_add_devices(struct platform_device **, int);
      45             : 
      46             : extern struct platform_device *platform_device_register_simple(const char *, int id,
      47             :                                         struct resource *, unsigned int);
      48             : extern struct platform_device *platform_device_register_data(struct device *,
      49             :                 const char *, int, const void *, size_t);
      50             : 
      51             : extern struct platform_device *platform_device_alloc(const char *name, int id);
      52             : extern int platform_device_add_resources(struct platform_device *pdev, struct resource *res, unsigned int num);
      53             : extern int platform_device_add_data(struct platform_device *pdev, const void *data, size_t size);
      54             : extern int platform_device_add(struct platform_device *pdev);
      55             : extern void platform_device_del(struct platform_device *pdev);
      56             : extern void platform_device_put(struct platform_device *pdev);
      57           1 : 
      58             : struct platform_driver {
      59             :         int (*probe)(struct platform_device *);
      60             :         int (*remove)(struct platform_device *);
      61             :         void (*shutdown)(struct platform_device *);
      62             :         int (*suspend)(struct platform_device *, pm_message_t state);
      63             :         int (*resume)(struct platform_device *);
      64             :         struct device_driver driver;
      65             :         struct platform_device_id *id_table;
      66             : };
      67             : 
      68             : extern int platform_driver_register(struct platform_driver *);
      69             : extern void platform_driver_unregister(struct platform_driver *);
      70             : 
      71             : /* non-hotpluggable platform devices may use this so that probe() and
      72             :  * its support may live in __init sections, conserving runtime memory.
      73             :  */
      74             : extern int platform_driver_probe(struct platform_driver *driver,
      75             :                 int (*probe)(struct platform_device *));
      76             : 
      77             : #define platform_get_drvdata(_dev)      dev_get_drvdata(&(_dev)->dev)
      78             : #define platform_set_drvdata(_dev,data) dev_set_drvdata(&(_dev)->dev, (data))
      79             : 
      80             : /* early platform driver interface */
      81             : struct early_platform_driver {
      82             :         const char *class_str;
      83             :         struct platform_driver *pdrv;
      84             :         struct list_head list;
      85             :         int requested_id;
      86             :         char *buffer;
      87             :         int bufsize;
      88             : };
      89             : 
      90             : #define EARLY_PLATFORM_ID_UNSET -2
      91             : #define EARLY_PLATFORM_ID_ERROR -3
      92             : 
      93             : extern int early_platform_driver_register(struct early_platform_driver *epdrv,
      94             :                                           char *buf);
      95             : extern void early_platform_add_devices(struct platform_device **devs, int num);
      96             : 
      97             : static inline int is_early_platform_device(struct platform_device *pdev)
      98             : {
      99             :         return !pdev->dev.driver;
     100             : }
     101             : 
     102             : extern void early_platform_driver_register_all(char *class_str);
     103             : extern int early_platform_driver_probe(char *class_str,
     104             :                                        int nr_probe, int user_only);
     105             : extern void early_platform_cleanup(void);
     106             : 
     107             : #define early_platform_init(class_string, platdrv)              \
     108             :         early_platform_init_buffer(class_string, platdrv, NULL, 0)
     109             : 
     110             : #ifndef MODULE
     111             : #define early_platform_init_buffer(class_string, platdrv, buf, bufsiz)  \
     112             : static __initdata struct early_platform_driver early_driver = {         \
     113             :         .class_str = class_string,                                      \
     114             :         .buffer = buf,                                                  \
     115             :         .bufsize = bufsiz,                                              \
     116             :         .pdrv = platdrv,                                                \
     117             :         .requested_id = EARLY_PLATFORM_ID_UNSET,                        \
     118           1 : };                                                                      \
     119             : static int __init early_platform_driver_setup_func(char *buffer)        \
     120             : {                                                                       \
     121             :         return early_platform_driver_register(&early_driver, buffer);       \
     122             : }                                                                       \
     123             : early_param(class_string, early_platform_driver_setup_func)
     124             : #else /* MODULE */
     125             : #define early_platform_init_buffer(class_string, platdrv, buf, bufsiz)  \
     126             : static inline char *early_platform_driver_setup_func(void)              \
     127             : {                                                                       \
     128             :         return bufsiz ? buf : NULL;                                     \
     129             : }
     130             : #endif /* MODULE */
     131             : 
     132             : #endif /* _PLATFORM_DEVICE_H_ */

Generated by: LCOV version 1.10