Home | History | Annotate | Download | only in linux
      1 /*
      2  * platform_device.h - generic, centralized driver model
      3  *
      4  * Copyright (c) 2001-2003 Patrick Mochel <mochel (at) 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 
     16 struct platform_device {
     17 	const char	* name;
     18 	u32		id;
     19 	struct device	dev;
     20 	u32		num_resources;
     21 	struct resource	* resource;
     22 };
     23 
     24 #define to_platform_device(x) container_of((x), struct platform_device, dev)
     25 
     26 extern int platform_device_register(struct platform_device *);
     27 extern void platform_device_unregister(struct platform_device *);
     28 
     29 extern struct bus_type platform_bus_type;
     30 extern struct device platform_bus;
     31 
     32 extern struct resource *platform_get_resource(struct platform_device *, unsigned int, unsigned int);
     33 extern int platform_get_irq(struct platform_device *, unsigned int);
     34 extern struct resource *platform_get_resource_byname(struct platform_device *, unsigned int, char *);
     35 extern int platform_get_irq_byname(struct platform_device *, char *);
     36 extern int platform_add_devices(struct platform_device **, int);
     37 
     38 extern struct platform_device *platform_device_register_simple(char *, unsigned int, struct resource *, unsigned int);
     39 
     40 extern struct platform_device *platform_device_alloc(const char *name, unsigned int id);
     41 extern int platform_device_add_resources(struct platform_device *pdev, struct resource *res, unsigned int num);
     42 extern int platform_device_add_data(struct platform_device *pdev, void *data, size_t size);
     43 extern int platform_device_add(struct platform_device *pdev);
     44 extern void platform_device_del(struct platform_device *pdev);
     45 extern void platform_device_put(struct platform_device *pdev);
     46 
     47 struct platform_driver {
     48 	int (*probe)(struct platform_device *);
     49 	int (*remove)(struct platform_device *);
     50 	void (*shutdown)(struct platform_device *);
     51 	int (*suspend)(struct platform_device *, pm_message_t state);
     52 	int (*resume)(struct platform_device *);
     53 	struct device_driver driver;
     54 };
     55 
     56 extern int platform_driver_register(struct platform_driver *);
     57 extern void platform_driver_unregister(struct platform_driver *);
     58 
     59 #define platform_get_drvdata(_dev)	dev_get_drvdata(&(_dev)->dev)
     60 #define platform_set_drvdata(_dev,data)	dev_set_drvdata(&(_dev)->dev, (data))
     61 
     62 #endif /* _PLATFORM_DEVICE_H_ */
     63