include/linux/of_platform.h
changeset 0 aa628870c1d3
child 2 d1f6d8b6f81c
equal deleted inserted replaced
-1:000000000000 0:aa628870c1d3
       
     1 #ifndef _LINUX_OF_PLATFORM_H
       
     2 #define _LINUX_OF_PLATFORM_H
       
     3 /*
       
     4  *    Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp.
       
     5  *			 <benh@kernel.crashing.org>
       
     6  *
       
     7  *  This program is free software; you can redistribute it and/or
       
     8  *  modify it under the terms of the GNU General Public License
       
     9  *  as published by the Free Software Foundation; either version
       
    10  *  2 of the License, or (at your option) any later version.
       
    11  *
       
    12  */
       
    13 
       
    14 #include <linux/module.h>
       
    15 #include <linux/device.h>
       
    16 #include <linux/mod_devicetable.h>
       
    17 #include <linux/pm.h>
       
    18 #include <linux/of_device.h>
       
    19 
       
    20 /*
       
    21  * The of_platform_bus_type is a bus type used by drivers that do not
       
    22  * attach to a macio or similar bus but still use OF probing
       
    23  * mechanism
       
    24  */
       
    25 extern struct bus_type of_platform_bus_type;
       
    26 
       
    27 /*
       
    28  * An of_platform_driver driver is attached to a basic of_device on
       
    29  * the "platform bus" (of_platform_bus_type) (or ISA, EBUS and SBUS
       
    30  * busses on sparc).
       
    31  */
       
    32 struct of_platform_driver
       
    33 {
       
    34 	const char		*name;
       
    35 	const struct of_device_id	*match_table;
       
    36 	struct module		*owner;
       
    37 
       
    38 	int	(*probe)(struct of_device* dev,
       
    39 			 const struct of_device_id *match);
       
    40 	int	(*remove)(struct of_device* dev);
       
    41 
       
    42 	int	(*suspend)(struct of_device* dev, pm_message_t state);
       
    43 	int	(*resume)(struct of_device* dev);
       
    44 	int	(*shutdown)(struct of_device* dev);
       
    45 
       
    46 	struct device_driver	driver;
       
    47 };
       
    48 #define	to_of_platform_driver(drv) \
       
    49 	container_of(drv,struct of_platform_driver, driver)
       
    50 
       
    51 extern int of_register_driver(struct of_platform_driver *drv,
       
    52 			      struct bus_type *bus);
       
    53 extern void of_unregister_driver(struct of_platform_driver *drv);
       
    54 
       
    55 #include <asm/of_platform.h>
       
    56 
       
    57 extern struct of_device *of_find_device_by_node(struct device_node *np);
       
    58 
       
    59 extern int of_bus_type_init(struct bus_type *bus, const char *name);
       
    60 
       
    61 #endif	/* _LINUX_OF_PLATFORM_H */