diff options
| author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2013-05-01 08:47:44 -0700 | 
|---|---|---|
| committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2013-05-01 08:47:44 -0700 | 
| commit | bf61c8840efe60fd8f91446860b63338fb424158 (patch) | |
| tree | 7a71832407a4f0d6346db773343f4c3ae2257b19 /include/linux/device.h | |
| parent | 5846115b30f3a881e542c8bfde59a699c1c13740 (diff) | |
| parent | 0c6a61657da78098472fd0eb71cc01f2387fa1bb (diff) | |
| download | olio-linux-3.10-bf61c8840efe60fd8f91446860b63338fb424158.tar.xz olio-linux-3.10-bf61c8840efe60fd8f91446860b63338fb424158.zip  | |
Merge branch 'next' into for-linus
Prepare first set of updates for 3.10 merge window.
Diffstat (limited to 'include/linux/device.h')
| -rw-r--r-- | include/linux/device.h | 41 | 
1 files changed, 39 insertions, 2 deletions
diff --git a/include/linux/device.h b/include/linux/device.h index 86ef6ab553b..4fd899bd2c0 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -21,6 +21,7 @@  #include <linux/compiler.h>  #include <linux/types.h>  #include <linux/mutex.h> +#include <linux/pinctrl/devinfo.h>  #include <linux/pm.h>  #include <linux/atomic.h>  #include <linux/ratelimit.h> @@ -190,6 +191,7 @@ extern struct klist *bus_get_device_klist(struct bus_type *bus);   * @mod_name:	Used for built-in modules.   * @suppress_bind_attrs: Disables bind/unbind via sysfs.   * @of_match_table: The open firmware table. + * @acpi_match_table: The ACPI match table.   * @probe:	Called to query the existence of a specific device,   *		whether this driver can work with it, and bind the driver   *		to a specific device. @@ -223,6 +225,7 @@ struct device_driver {  	bool suppress_bind_attrs;	/* disables bind/unbind via sysfs */  	const struct of_device_id	*of_match_table; +	const struct acpi_device_id	*acpi_match_table;  	int (*probe) (struct device *dev);  	int (*remove) (struct device *dev); @@ -393,8 +396,8 @@ extern int class_for_each_device(struct class *class, struct device *start,  				 void *data,  				 int (*fn)(struct device *dev, void *data));  extern struct device *class_find_device(struct class *class, -					struct device *start, void *data, -					int (*match)(struct device *, void *)); +					struct device *start, const void *data, +					int (*match)(struct device *, const void *));  struct class_attribute {  	struct attribute attr; @@ -496,6 +499,10 @@ ssize_t device_show_int(struct device *dev, struct device_attribute *attr,  			char *buf);  ssize_t device_store_int(struct device *dev, struct device_attribute *attr,  			 const char *buf, size_t count); +ssize_t device_show_bool(struct device *dev, struct device_attribute *attr, +			char *buf); +ssize_t device_store_bool(struct device *dev, struct device_attribute *attr, +			 const char *buf, size_t count);  #define DEVICE_ATTR(_name, _mode, _show, _store) \  	struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store) @@ -505,6 +512,9 @@ ssize_t device_store_int(struct device *dev, struct device_attribute *attr,  #define DEVICE_INT_ATTR(_name, _mode, _var) \  	struct dev_ext_attribute dev_attr_##_name = \  		{ __ATTR(_name, _mode, device_show_int, device_store_int), &(_var) } +#define DEVICE_BOOL_ATTR(_name, _mode, _var) \ +	struct dev_ext_attribute dev_attr_##_name = \ +		{ __ATTR(_name, _mode, device_show_bool, device_store_bool), &(_var) }  #define DEVICE_ATTR_IGNORE_LOCKDEP(_name, _mode, _show, _store) \  	struct device_attribute dev_attr_##_name =		\  		__ATTR_IGNORE_LOCKDEP(_name, _mode, _show, _store) @@ -564,9 +574,14 @@ extern int devres_release_group(struct device *dev, void *id);  extern void *devm_kzalloc(struct device *dev, size_t size, gfp_t gfp);  extern void devm_kfree(struct device *dev, void *p); +void __iomem *devm_ioremap_resource(struct device *dev, struct resource *res);  void __iomem *devm_request_and_ioremap(struct device *dev,  			struct resource *res); +/* allows to add/remove a custom action to devres stack */ +int devm_add_action(struct device *dev, void (*action)(void *), void *data); +void devm_remove_action(struct device *dev, void (*action)(void *), void *data); +  struct device_dma_parameters {  	/*  	 * a low level driver may set these to teach IOMMU code about @@ -576,6 +591,12 @@ struct device_dma_parameters {  	unsigned long segment_boundary_mask;  }; +struct acpi_dev_node { +#ifdef CONFIG_ACPI +	void	*handle; +#endif +}; +  /**   * struct device - The basic device structure   * @parent:	The device's "parent" device, the device to which it is attached. @@ -605,6 +626,8 @@ struct device_dma_parameters {   * @pm_domain:	Provide callbacks that are executed during system suspend,   * 		hibernation, system resume and during runtime PM transitions   * 		along with subsystem-level and driver-level callbacks. + * @pins:	For device pin management. + *		See Documentation/pinctrl.txt for details.   * @numa_node:	NUMA node this device is close to.   * @dma_mask:	Dma mask (if dma'ble device).   * @coherent_dma_mask: Like dma_mask, but for alloc_coherent mapping as not all @@ -616,6 +639,7 @@ struct device_dma_parameters {   * @dma_mem:	Internal for coherent mem override.   * @archdata:	For arch-specific additions.   * @of_node:	Associated device tree node. + * @acpi_node:	Associated ACPI device node.   * @devt:	For creating the sysfs "dev".   * @id:		device instance   * @devres_lock: Spinlock to protect the resource of the device. @@ -656,6 +680,10 @@ struct device {  	struct dev_pm_info	power;  	struct dev_pm_domain	*pm_domain; +#ifdef CONFIG_PINCTRL +	struct dev_pin_info	*pins; +#endif +  #ifdef CONFIG_NUMA  	int		numa_node;	/* NUMA node this device is close to */  #endif @@ -680,6 +708,7 @@ struct device {  	struct dev_archdata	archdata;  	struct device_node	*of_node; /* associated device tree node */ +	struct acpi_dev_node	acpi_node; /* associated ACPI device node */  	dev_t			devt;	/* dev_t, creates the sysfs "dev" */  	u32			id;	/* device instance */ @@ -700,6 +729,14 @@ static inline struct device *kobj_to_dev(struct kobject *kobj)  	return container_of(kobj, struct device, kobj);  } +#ifdef CONFIG_ACPI +#define ACPI_HANDLE(dev)	((dev)->acpi_node.handle) +#define ACPI_HANDLE_SET(dev, _handle_)	(dev)->acpi_node.handle = (_handle_) +#else +#define ACPI_HANDLE(dev)	(NULL) +#define ACPI_HANDLE_SET(dev, _handle_)	do { } while (0) +#endif +  /* Get the wakeup routines, which depend on struct device */  #include <linux/pm_wakeup.h>  |