diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-21 18:49:58 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-21 18:49:58 -0400 |
| commit | e80ab411e589e00550e2e6e5a6a02d59cc730357 (patch) | |
| tree | 870225ff7b5b8d03e82a996963213a4bb9cce248 /include | |
| parent | 529a41e36673b518c9e091f3a8d932b6b9e3c461 (diff) | |
| parent | ee959b00c335d7780136c5abda37809191fe52c3 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6: (36 commits)
SCSI: convert struct class_device to struct device
DRM: remove unused dev_class
IB: rename "dev" to "srp_dev" in srp_host structure
IB: convert struct class_device to struct device
memstick: convert struct class_device to struct device
driver core: replace remaining __FUNCTION__ occurrences
sysfs: refill attribute buffer when reading from offset 0
PM: Remove destroy_suspended_device()
Firmware: add iSCSI iBFT Support
PM: Remove legacy PM (fix)
Kobject: Replace list_for_each() with list_for_each_entry().
SYSFS: Explicitly include required header file slab.h.
Driver core: make device_is_registered() work for class devices
PM: Convert wakeup flag accessors to inline functions
PM: Make wakeup flags available whenever CONFIG_PM is set
PM: Fix misuse of wakeup flag accessors in serial core
Driver core: Call device_pm_add() after bus_add_device() in device_add()
PM: Handle device registrations during suspend/resume
block: send disk "change" event for rescan_partitions()
sysdev: detect multiple driver registrations
...
Fixed trivial conflict in include/linux/memory.h due to semaphore header
file change (made irrelevant by the change to mutex).
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/attribute_container.h | 28 | ||||
| -rw-r--r-- | include/linux/bsg.h | 2 | ||||
| -rw-r--r-- | include/linux/device.h | 35 | ||||
| -rw-r--r-- | include/linux/enclosure.h | 11 | ||||
| -rw-r--r-- | include/linux/hw_random.h | 10 | ||||
| -rw-r--r-- | include/linux/iscsi_ibft.h | 50 | ||||
| -rw-r--r-- | include/linux/kernel.h | 6 | ||||
| -rw-r--r-- | include/linux/leds.h | 10 | ||||
| -rw-r--r-- | include/linux/libata.h | 2 | ||||
| -rw-r--r-- | include/linux/memory.h | 4 | ||||
| -rw-r--r-- | include/linux/memstick.h | 2 | ||||
| -rw-r--r-- | include/linux/miscdevice.h | 10 | ||||
| -rw-r--r-- | include/linux/pm.h | 43 | ||||
| -rw-r--r-- | include/linux/pm_wakeup.h | 90 | ||||
| -rw-r--r-- | include/linux/raid_class.h | 12 | ||||
| -rw-r--r-- | include/linux/sysfs.h | 9 | ||||
| -rw-r--r-- | include/linux/transport_class.h | 6 | ||||
| -rw-r--r-- | include/rdma/ib_verbs.h | 2 | ||||
| -rw-r--r-- | include/scsi/scsi_device.h | 10 | ||||
| -rw-r--r-- | include/scsi/scsi_host.h | 7 | ||||
| -rw-r--r-- | include/scsi/scsi_transport.h | 2 | ||||
| -rw-r--r-- | include/scsi/scsi_transport_fc.h | 14 | ||||
| -rw-r--r-- | include/scsi/scsi_transport_sas.h | 12 | ||||
| -rw-r--r-- | include/scsi/sd.h | 4 |
24 files changed, 218 insertions, 163 deletions
diff --git a/include/linux/attribute_container.h b/include/linux/attribute_container.h index 574b201b99d8..794ad74b1d61 100644 --- a/include/linux/attribute_container.h +++ b/include/linux/attribute_container.h | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * class_container.h - a generic container for all classes | 2 | * attribute_container.h - a generic container for all classes |
| 3 | * | 3 | * |
| 4 | * Copyright (c) 2005 - James Bottomley <James.Bottomley@steeleye.com> | 4 | * Copyright (c) 2005 - James Bottomley <James.Bottomley@steeleye.com> |
| 5 | * | 5 | * |
| @@ -18,7 +18,7 @@ struct attribute_container { | |||
| 18 | struct klist containers; | 18 | struct klist containers; |
| 19 | struct class *class; | 19 | struct class *class; |
| 20 | struct attribute_group *grp; | 20 | struct attribute_group *grp; |
| 21 | struct class_device_attribute **attrs; | 21 | struct device_attribute **attrs; |
| 22 | int (*match)(struct attribute_container *, struct device *); | 22 | int (*match)(struct attribute_container *, struct device *); |
| 23 | #define ATTRIBUTE_CONTAINER_NO_CLASSDEVS 0x01 | 23 | #define ATTRIBUTE_CONTAINER_NO_CLASSDEVS 0x01 |
| 24 | unsigned long flags; | 24 | unsigned long flags; |
| @@ -41,31 +41,31 @@ int __must_check attribute_container_unregister(struct attribute_container *cont | |||
| 41 | void attribute_container_create_device(struct device *dev, | 41 | void attribute_container_create_device(struct device *dev, |
| 42 | int (*fn)(struct attribute_container *, | 42 | int (*fn)(struct attribute_container *, |
| 43 | struct device *, | 43 | struct device *, |
| 44 | struct class_device *)); | 44 | struct device *)); |
| 45 | void attribute_container_add_device(struct device *dev, | 45 | void attribute_container_add_device(struct device *dev, |
| 46 | int (*fn)(struct attribute_container *, | 46 | int (*fn)(struct attribute_container *, |
| 47 | struct device *, | 47 | struct device *, |
| 48 | struct class_device *)); | 48 | struct device *)); |
| 49 | void attribute_container_remove_device(struct device *dev, | 49 | void attribute_container_remove_device(struct device *dev, |
| 50 | void (*fn)(struct attribute_container *, | 50 | void (*fn)(struct attribute_container *, |
| 51 | struct device *, | 51 | struct device *, |
| 52 | struct class_device *)); | 52 | struct device *)); |
| 53 | void attribute_container_device_trigger(struct device *dev, | 53 | void attribute_container_device_trigger(struct device *dev, |
| 54 | int (*fn)(struct attribute_container *, | 54 | int (*fn)(struct attribute_container *, |
| 55 | struct device *, | 55 | struct device *, |
| 56 | struct class_device *)); | 56 | struct device *)); |
| 57 | void attribute_container_trigger(struct device *dev, | 57 | void attribute_container_trigger(struct device *dev, |
| 58 | int (*fn)(struct attribute_container *, | 58 | int (*fn)(struct attribute_container *, |
| 59 | struct device *)); | 59 | struct device *)); |
| 60 | int attribute_container_add_attrs(struct class_device *classdev); | 60 | int attribute_container_add_attrs(struct device *classdev); |
| 61 | int attribute_container_add_class_device(struct class_device *classdev); | 61 | int attribute_container_add_class_device(struct device *classdev); |
| 62 | int attribute_container_add_class_device_adapter(struct attribute_container *cont, | 62 | int attribute_container_add_class_device_adapter(struct attribute_container *cont, |
| 63 | struct device *dev, | 63 | struct device *dev, |
| 64 | struct class_device *classdev); | 64 | struct device *classdev); |
| 65 | void attribute_container_remove_attrs(struct class_device *classdev); | 65 | void attribute_container_remove_attrs(struct device *classdev); |
| 66 | void attribute_container_class_device_del(struct class_device *classdev); | 66 | void attribute_container_class_device_del(struct device *classdev); |
| 67 | struct attribute_container *attribute_container_classdev_to_container(struct class_device *); | 67 | struct attribute_container *attribute_container_classdev_to_container(struct device *); |
| 68 | struct class_device *attribute_container_find_class_device(struct attribute_container *, struct device *); | 68 | struct device *attribute_container_find_class_device(struct attribute_container *, struct device *); |
| 69 | struct class_device_attribute **attribute_container_classdev_to_attrs(const struct class_device *classdev); | 69 | struct device_attribute **attribute_container_classdev_to_attrs(const struct device *classdev); |
| 70 | 70 | ||
| 71 | #endif | 71 | #endif |
diff --git a/include/linux/bsg.h b/include/linux/bsg.h index 60e377b520f8..e8406c55c6d3 100644 --- a/include/linux/bsg.h +++ b/include/linux/bsg.h | |||
| @@ -55,7 +55,7 @@ struct sg_io_v4 { | |||
| 55 | 55 | ||
| 56 | #if defined(CONFIG_BLK_DEV_BSG) | 56 | #if defined(CONFIG_BLK_DEV_BSG) |
| 57 | struct bsg_class_device { | 57 | struct bsg_class_device { |
| 58 | struct class_device *class_dev; | 58 | struct device *class_dev; |
| 59 | struct device *dev; | 59 | struct device *dev; |
| 60 | int minor; | 60 | int minor; |
| 61 | struct request_queue *queue; | 61 | struct request_queue *queue; |
diff --git a/include/linux/device.h b/include/linux/device.h index c79b93e56fa0..1a060265acea 100644 --- a/include/linux/device.h +++ b/include/linux/device.h | |||
| @@ -429,7 +429,6 @@ struct device { | |||
| 429 | struct kobject kobj; | 429 | struct kobject kobj; |
| 430 | char bus_id[BUS_ID_SIZE]; /* position on parent bus */ | 430 | char bus_id[BUS_ID_SIZE]; /* position on parent bus */ |
| 431 | struct device_type *type; | 431 | struct device_type *type; |
| 432 | unsigned is_registered:1; | ||
| 433 | unsigned uevent_suppress:1; | 432 | unsigned uevent_suppress:1; |
| 434 | 433 | ||
| 435 | struct semaphore sem; /* semaphore to synchronize calls to | 434 | struct semaphore sem; /* semaphore to synchronize calls to |
| @@ -475,6 +474,9 @@ struct device { | |||
| 475 | void (*release)(struct device *dev); | 474 | void (*release)(struct device *dev); |
| 476 | }; | 475 | }; |
| 477 | 476 | ||
| 477 | /* Get the wakeup routines, which depend on struct device */ | ||
| 478 | #include <linux/pm_wakeup.h> | ||
| 479 | |||
| 478 | #ifdef CONFIG_NUMA | 480 | #ifdef CONFIG_NUMA |
| 479 | static inline int dev_to_node(struct device *dev) | 481 | static inline int dev_to_node(struct device *dev) |
| 480 | { | 482 | { |
| @@ -506,7 +508,7 @@ static inline void dev_set_drvdata(struct device *dev, void *data) | |||
| 506 | 508 | ||
| 507 | static inline int device_is_registered(struct device *dev) | 509 | static inline int device_is_registered(struct device *dev) |
| 508 | { | 510 | { |
| 509 | return dev->is_registered; | 511 | return dev->kobj.state_in_sysfs; |
| 510 | } | 512 | } |
| 511 | 513 | ||
| 512 | void driver_init(void); | 514 | void driver_init(void); |
| @@ -543,20 +545,6 @@ extern struct device *device_create(struct class *cls, struct device *parent, | |||
| 543 | dev_t devt, const char *fmt, ...) | 545 | dev_t devt, const char *fmt, ...) |
| 544 | __attribute__((format(printf, 4, 5))); | 546 | __attribute__((format(printf, 4, 5))); |
| 545 | extern void device_destroy(struct class *cls, dev_t devt); | 547 | extern void device_destroy(struct class *cls, dev_t devt); |
| 546 | #ifdef CONFIG_PM_SLEEP | ||
| 547 | extern void destroy_suspended_device(struct class *cls, dev_t devt); | ||
| 548 | extern void device_pm_schedule_removal(struct device *); | ||
| 549 | #else /* !CONFIG_PM_SLEEP */ | ||
| 550 | static inline void destroy_suspended_device(struct class *cls, dev_t devt) | ||
| 551 | { | ||
| 552 | device_destroy(cls, devt); | ||
| 553 | } | ||
| 554 | |||
| 555 | static inline void device_pm_schedule_removal(struct device *dev) | ||
| 556 | { | ||
| 557 | device_unregister(dev); | ||
| 558 | } | ||
| 559 | #endif /* !CONFIG_PM_SLEEP */ | ||
| 560 | 548 | ||
| 561 | /* | 549 | /* |
| 562 | * Platform "fixup" functions - allow the platform to have their say | 550 | * Platform "fixup" functions - allow the platform to have their say |
| @@ -608,21 +596,16 @@ extern const char *dev_driver_string(struct device *dev); | |||
| 608 | #define dev_dbg(dev, format, arg...) \ | 596 | #define dev_dbg(dev, format, arg...) \ |
| 609 | dev_printk(KERN_DEBUG , dev , format , ## arg) | 597 | dev_printk(KERN_DEBUG , dev , format , ## arg) |
| 610 | #else | 598 | #else |
| 611 | static inline int __attribute__ ((format (printf, 2, 3))) | 599 | #define dev_dbg(dev, format, arg...) \ |
| 612 | dev_dbg(struct device *dev, const char *fmt, ...) | 600 | ({ if (0) dev_printk(KERN_DEBUG, dev, format, ##arg); 0; }) |
| 613 | { | ||
| 614 | return 0; | ||
| 615 | } | ||
| 616 | #endif | 601 | #endif |
| 617 | 602 | ||
| 618 | #ifdef VERBOSE_DEBUG | 603 | #ifdef VERBOSE_DEBUG |
| 619 | #define dev_vdbg dev_dbg | 604 | #define dev_vdbg dev_dbg |
| 620 | #else | 605 | #else |
| 621 | static inline int __attribute__ ((format (printf, 2, 3))) | 606 | |
| 622 | dev_vdbg(struct device *dev, const char *fmt, ...) | 607 | #define dev_vdbg(dev, format, arg...) \ |
| 623 | { | 608 | ({ if (0) dev_printk(KERN_DEBUG, dev, format, ##arg); 0; }) |
| 624 | return 0; | ||
| 625 | } | ||
| 626 | #endif | 609 | #endif |
| 627 | 610 | ||
| 628 | /* Create alias, so I can be autoloaded. */ | 611 | /* Create alias, so I can be autoloaded. */ |
diff --git a/include/linux/enclosure.h b/include/linux/enclosure.h index a5978f18ca40..4332442b1b57 100644 --- a/include/linux/enclosure.h +++ b/include/linux/enclosure.h | |||
| @@ -82,7 +82,8 @@ struct enclosure_component_callbacks { | |||
| 82 | 82 | ||
| 83 | struct enclosure_component { | 83 | struct enclosure_component { |
| 84 | void *scratch; | 84 | void *scratch; |
| 85 | struct class_device cdev; | 85 | struct device cdev; |
| 86 | struct device *dev; | ||
| 86 | enum enclosure_component_type type; | 87 | enum enclosure_component_type type; |
| 87 | int number; | 88 | int number; |
| 88 | int fault; | 89 | int fault; |
| @@ -94,20 +95,20 @@ struct enclosure_component { | |||
| 94 | struct enclosure_device { | 95 | struct enclosure_device { |
| 95 | void *scratch; | 96 | void *scratch; |
| 96 | struct list_head node; | 97 | struct list_head node; |
| 97 | struct class_device cdev; | 98 | struct device edev; |
| 98 | struct enclosure_component_callbacks *cb; | 99 | struct enclosure_component_callbacks *cb; |
| 99 | int components; | 100 | int components; |
| 100 | struct enclosure_component component[0]; | 101 | struct enclosure_component component[0]; |
| 101 | }; | 102 | }; |
| 102 | 103 | ||
| 103 | static inline struct enclosure_device * | 104 | static inline struct enclosure_device * |
| 104 | to_enclosure_device(struct class_device *dev) | 105 | to_enclosure_device(struct device *dev) |
| 105 | { | 106 | { |
| 106 | return container_of(dev, struct enclosure_device, cdev); | 107 | return container_of(dev, struct enclosure_device, edev); |
| 107 | } | 108 | } |
| 108 | 109 | ||
| 109 | static inline struct enclosure_component * | 110 | static inline struct enclosure_component * |
| 110 | to_enclosure_component(struct class_device *dev) | 111 | to_enclosure_component(struct device *dev) |
| 111 | { | 112 | { |
| 112 | return container_of(dev, struct enclosure_component, cdev); | 113 | return container_of(dev, struct enclosure_component, cdev); |
| 113 | } | 114 | } |
diff --git a/include/linux/hw_random.h b/include/linux/hw_random.h index 42131820bb89..85d11916e9ea 100644 --- a/include/linux/hw_random.h +++ b/include/linux/hw_random.h | |||
| @@ -44,15 +44,7 @@ struct hwrng { | |||
| 44 | /** Register a new Hardware Random Number Generator driver. */ | 44 | /** Register a new Hardware Random Number Generator driver. */ |
| 45 | extern int hwrng_register(struct hwrng *rng); | 45 | extern int hwrng_register(struct hwrng *rng); |
| 46 | /** Unregister a Hardware Random Number Generator driver. */ | 46 | /** Unregister a Hardware Random Number Generator driver. */ |
| 47 | extern void __hwrng_unregister(struct hwrng *rng, bool suspended); | 47 | extern void hwrng_unregister(struct hwrng *rng); |
| 48 | static inline void hwrng_unregister(struct hwrng *rng) | ||
| 49 | { | ||
| 50 | __hwrng_unregister(rng, false); | ||
| 51 | } | ||
| 52 | static inline void hwrng_unregister_suspended(struct hwrng *rng) | ||
| 53 | { | ||
| 54 | __hwrng_unregister(rng, true); | ||
| 55 | } | ||
| 56 | 48 | ||
| 57 | #endif /* __KERNEL__ */ | 49 | #endif /* __KERNEL__ */ |
| 58 | #endif /* LINUX_HWRANDOM_H_ */ | 50 | #endif /* LINUX_HWRANDOM_H_ */ |
diff --git a/include/linux/iscsi_ibft.h b/include/linux/iscsi_ibft.h new file mode 100644 index 000000000000..6092487e2950 --- /dev/null +++ b/include/linux/iscsi_ibft.h | |||
| @@ -0,0 +1,50 @@ | |||
| 1 | /* | ||
| 2 | * Copyright 2007 Red Hat, Inc. | ||
| 3 | * by Peter Jones <pjones@redhat.com> | ||
| 4 | * Copyright 2007 IBM, Inc. | ||
| 5 | * by Konrad Rzeszutek <konradr@linux.vnet.ibm.com> | ||
| 6 | * Copyright 2008 | ||
| 7 | * by Konrad Rzeszutek <ketuzsezr@darnok.org> | ||
| 8 | * | ||
| 9 | * This code exposes the iSCSI Boot Format Table to userland via sysfs. | ||
| 10 | * | ||
| 11 | * This program is free software; you can redistribute it and/or modify | ||
| 12 | * it under the terms of the GNU General Public License v2.0 as published by | ||
| 13 | * the Free Software Foundation | ||
| 14 | * | ||
| 15 | * This program is distributed in the hope that it will be useful, | ||
| 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 18 | * GNU General Public License for more details. | ||
| 19 | */ | ||
| 20 | |||
| 21 | #ifndef ISCSI_IBFT_H | ||
| 22 | #define ISCSI_IBFT_H | ||
| 23 | |||
| 24 | struct ibft_table_header { | ||
| 25 | char signature[4]; | ||
| 26 | u32 length; | ||
| 27 | u8 revision; | ||
| 28 | u8 checksum; | ||
| 29 | char oem_id[6]; | ||
| 30 | char oem_table_id[8]; | ||
| 31 | char reserved[24]; | ||
| 32 | } __attribute__((__packed__)); | ||
| 33 | |||
| 34 | /* | ||
| 35 | * Logical location of iSCSI Boot Format Table. | ||
| 36 | * If the value is NULL there is no iBFT on the machine. | ||
| 37 | */ | ||
| 38 | extern struct ibft_table_header *ibft_addr; | ||
| 39 | |||
| 40 | /* | ||
| 41 | * Routine used to find and reserve the iSCSI Boot Format Table. The | ||
| 42 | * mapped address is set in the ibft_addr variable. | ||
| 43 | */ | ||
| 44 | #ifdef CONFIG_ISCSI_IBFT_FIND | ||
| 45 | extern void __init reserve_ibft_region(void); | ||
| 46 | #else | ||
| 47 | static inline void reserve_ibft_region(void) { } | ||
| 48 | #endif | ||
| 49 | |||
| 50 | #endif /* ISCSI_IBFT_H */ | ||
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 2df44e773270..cd6d02cf854d 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h | |||
| @@ -293,10 +293,8 @@ extern void print_hex_dump_bytes(const char *prefix_str, int prefix_type, | |||
| 293 | #define pr_debug(fmt, arg...) \ | 293 | #define pr_debug(fmt, arg...) \ |
| 294 | printk(KERN_DEBUG fmt, ##arg) | 294 | printk(KERN_DEBUG fmt, ##arg) |
| 295 | #else | 295 | #else |
| 296 | static inline int __attribute__ ((format (printf, 1, 2))) pr_debug(const char * fmt, ...) | 296 | #define pr_debug(fmt, arg...) \ |
| 297 | { | 297 | ({ if (0) printk(KERN_DEBUG fmt, ##arg); 0; }) |
| 298 | return 0; | ||
| 299 | } | ||
| 300 | #endif | 298 | #endif |
| 301 | 299 | ||
| 302 | /* | 300 | /* |
diff --git a/include/linux/leds.h b/include/linux/leds.h index 0201f6f51cea..b07e3d400bd6 100644 --- a/include/linux/leds.h +++ b/include/linux/leds.h | |||
| @@ -59,15 +59,7 @@ struct led_classdev { | |||
| 59 | 59 | ||
| 60 | extern int led_classdev_register(struct device *parent, | 60 | extern int led_classdev_register(struct device *parent, |
| 61 | struct led_classdev *led_cdev); | 61 | struct led_classdev *led_cdev); |
| 62 | extern void __led_classdev_unregister(struct led_classdev *led_cdev, bool sus); | 62 | extern void led_classdev_unregister(struct led_classdev *lcd); |
| 63 | static inline void led_classdev_unregister(struct led_classdev *lcd) | ||
| 64 | { | ||
| 65 | __led_classdev_unregister(lcd, false); | ||
| 66 | } | ||
| 67 | static inline void led_classdev_unregister_suspended(struct led_classdev *lcd) | ||
| 68 | { | ||
| 69 | __led_classdev_unregister(lcd, true); | ||
| 70 | } | ||
| 71 | extern void led_classdev_suspend(struct led_classdev *led_cdev); | 63 | extern void led_classdev_suspend(struct led_classdev *led_cdev); |
| 72 | extern void led_classdev_resume(struct led_classdev *led_cdev); | 64 | extern void led_classdev_resume(struct led_classdev *led_cdev); |
| 73 | 65 | ||
diff --git a/include/linux/libata.h b/include/linux/libata.h index 165734a2dd47..07ed56f7a767 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
| @@ -443,7 +443,7 @@ enum link_pm { | |||
| 443 | MAX_PERFORMANCE, | 443 | MAX_PERFORMANCE, |
| 444 | MEDIUM_POWER, | 444 | MEDIUM_POWER, |
| 445 | }; | 445 | }; |
| 446 | extern struct class_device_attribute class_device_attr_link_power_management_policy; | 446 | extern struct device_attribute dev_attr_link_power_management_policy; |
| 447 | 447 | ||
| 448 | #ifdef CONFIG_ATA_SFF | 448 | #ifdef CONFIG_ATA_SFF |
| 449 | struct ata_ioports { | 449 | struct ata_ioports { |
diff --git a/include/linux/memory.h b/include/linux/memory.h index 54d7866d9c0e..f80e0e331cb7 100644 --- a/include/linux/memory.h +++ b/include/linux/memory.h | |||
| @@ -18,7 +18,7 @@ | |||
| 18 | #include <linux/sysdev.h> | 18 | #include <linux/sysdev.h> |
| 19 | #include <linux/node.h> | 19 | #include <linux/node.h> |
| 20 | #include <linux/compiler.h> | 20 | #include <linux/compiler.h> |
| 21 | #include <linux/semaphore.h> | 21 | #include <linux/mutex.h> |
| 22 | 22 | ||
| 23 | struct memory_block { | 23 | struct memory_block { |
| 24 | unsigned long phys_index; | 24 | unsigned long phys_index; |
| @@ -29,7 +29,7 @@ struct memory_block { | |||
| 29 | * created long after the critical areas during | 29 | * created long after the critical areas during |
| 30 | * initialization. | 30 | * initialization. |
| 31 | */ | 31 | */ |
| 32 | struct semaphore state_sem; | 32 | struct mutex state_mutex; |
| 33 | int phys_device; /* to which fru does this belong? */ | 33 | int phys_device; /* to which fru does this belong? */ |
| 34 | void *hw; /* optional pointer to fw/hw data */ | 34 | void *hw; /* optional pointer to fw/hw data */ |
| 35 | int (*phys_callback)(struct memory_block *); | 35 | int (*phys_callback)(struct memory_block *); |
diff --git a/include/linux/memstick.h b/include/linux/memstick.h index 3e686ec6a967..37a5cdb03918 100644 --- a/include/linux/memstick.h +++ b/include/linux/memstick.h | |||
| @@ -276,7 +276,7 @@ struct memstick_host { | |||
| 276 | #define MEMSTICK_CAP_PAR8 4 | 276 | #define MEMSTICK_CAP_PAR8 4 |
| 277 | 277 | ||
| 278 | struct work_struct media_checker; | 278 | struct work_struct media_checker; |
| 279 | struct class_device cdev; | 279 | struct device dev; |
| 280 | 280 | ||
| 281 | struct memstick_dev *card; | 281 | struct memstick_dev *card; |
| 282 | unsigned int retries; | 282 | unsigned int retries; |
diff --git a/include/linux/miscdevice.h b/include/linux/miscdevice.h index 24b30b9b4f8a..26433ec520b3 100644 --- a/include/linux/miscdevice.h +++ b/include/linux/miscdevice.h | |||
| @@ -43,15 +43,7 @@ struct miscdevice { | |||
| 43 | }; | 43 | }; |
| 44 | 44 | ||
| 45 | extern int misc_register(struct miscdevice * misc); | 45 | extern int misc_register(struct miscdevice * misc); |
| 46 | extern int __misc_deregister(struct miscdevice *misc, bool suspended); | 46 | extern int misc_deregister(struct miscdevice *misc); |
| 47 | static inline int misc_deregister(struct miscdevice *misc) | ||
| 48 | { | ||
| 49 | return __misc_deregister(misc, false); | ||
| 50 | } | ||
| 51 | static inline int misc_deregister_suspended(struct miscdevice *misc) | ||
| 52 | { | ||
| 53 | return __misc_deregister(misc, true); | ||
| 54 | } | ||
| 55 | 47 | ||
| 56 | #define MODULE_ALIAS_MISCDEV(minor) \ | 48 | #define MODULE_ALIAS_MISCDEV(minor) \ |
| 57 | MODULE_ALIAS("char-major-" __stringify(MISC_MAJOR) \ | 49 | MODULE_ALIAS("char-major-" __stringify(MISC_MAJOR) \ |
diff --git a/include/linux/pm.h b/include/linux/pm.h index 015b735811b4..1de72cbbe0d1 100644 --- a/include/linux/pm.h +++ b/include/linux/pm.h | |||
| @@ -183,8 +183,9 @@ typedef struct pm_message { | |||
| 183 | struct dev_pm_info { | 183 | struct dev_pm_info { |
| 184 | pm_message_t power_state; | 184 | pm_message_t power_state; |
| 185 | unsigned can_wakeup:1; | 185 | unsigned can_wakeup:1; |
| 186 | #ifdef CONFIG_PM_SLEEP | ||
| 187 | unsigned should_wakeup:1; | 186 | unsigned should_wakeup:1; |
| 187 | bool sleeping:1; /* Owned by the PM core */ | ||
| 188 | #ifdef CONFIG_PM_SLEEP | ||
| 188 | struct list_head entry; | 189 | struct list_head entry; |
| 189 | #endif | 190 | #endif |
| 190 | }; | 191 | }; |
| @@ -197,11 +198,6 @@ extern void device_resume(void); | |||
| 197 | extern int device_suspend(pm_message_t state); | 198 | extern int device_suspend(pm_message_t state); |
| 198 | extern int device_prepare_suspend(pm_message_t state); | 199 | extern int device_prepare_suspend(pm_message_t state); |
| 199 | 200 | ||
| 200 | #define device_set_wakeup_enable(dev,val) \ | ||
| 201 | ((dev)->power.should_wakeup = !!(val)) | ||
| 202 | #define device_may_wakeup(dev) \ | ||
| 203 | (device_can_wakeup(dev) && (dev)->power.should_wakeup) | ||
| 204 | |||
| 205 | extern void __suspend_report_result(const char *function, void *fn, int ret); | 201 | extern void __suspend_report_result(const char *function, void *fn, int ret); |
| 206 | 202 | ||
| 207 | #define suspend_report_result(fn, ret) \ | 203 | #define suspend_report_result(fn, ret) \ |
| @@ -209,20 +205,6 @@ extern void __suspend_report_result(const char *function, void *fn, int ret); | |||
| 209 | __suspend_report_result(__FUNCTION__, fn, ret); \ | 205 | __suspend_report_result(__FUNCTION__, fn, ret); \ |
| 210 | } while (0) | 206 | } while (0) |
| 211 | 207 | ||
| 212 | /* | ||
| 213 | * Platform hook to activate device wakeup capability, if that's not already | ||
| 214 | * handled by enable_irq_wake() etc. | ||
| 215 | * Returns zero on success, else negative errno | ||
| 216 | */ | ||
| 217 | extern int (*platform_enable_wakeup)(struct device *dev, int is_on); | ||
| 218 | |||
| 219 | static inline int call_platform_enable_wakeup(struct device *dev, int is_on) | ||
| 220 | { | ||
| 221 | if (platform_enable_wakeup) | ||
| 222 | return (*platform_enable_wakeup)(dev, is_on); | ||
| 223 | return 0; | ||
| 224 | } | ||
| 225 | |||
| 226 | #else /* !CONFIG_PM_SLEEP */ | 208 | #else /* !CONFIG_PM_SLEEP */ |
| 227 | 209 | ||
| 228 | static inline int device_suspend(pm_message_t state) | 210 | static inline int device_suspend(pm_message_t state) |
| @@ -230,29 +212,10 @@ static inline int device_suspend(pm_message_t state) | |||
| 230 | return 0; | 212 | return 0; |
| 231 | } | 213 | } |
| 232 | 214 | ||
| 233 | #define device_set_wakeup_enable(dev,val) do{}while(0) | 215 | #define suspend_report_result(fn, ret) do {} while (0) |
| 234 | #define device_may_wakeup(dev) (0) | ||
| 235 | |||
| 236 | #define suspend_report_result(fn, ret) do { } while (0) | ||
| 237 | |||
| 238 | static inline int call_platform_enable_wakeup(struct device *dev, int is_on) | ||
| 239 | { | ||
| 240 | return 0; | ||
| 241 | } | ||
| 242 | 216 | ||
| 243 | #endif /* !CONFIG_PM_SLEEP */ | 217 | #endif /* !CONFIG_PM_SLEEP */ |
| 244 | 218 | ||
| 245 | /* changes to device_may_wakeup take effect on the next pm state change. | ||
| 246 | * by default, devices should wakeup if they can. | ||
| 247 | */ | ||
| 248 | #define device_can_wakeup(dev) \ | ||
| 249 | ((dev)->power.can_wakeup) | ||
| 250 | #define device_init_wakeup(dev,val) \ | ||
| 251 | do { \ | ||
| 252 | device_can_wakeup(dev) = !!(val); \ | ||
| 253 | device_set_wakeup_enable(dev,val); \ | ||
| 254 | } while(0) | ||
| 255 | |||
| 256 | /* | 219 | /* |
| 257 | * Global Power Management flags | 220 | * Global Power Management flags |
| 258 | * Used to keep APM and ACPI from both being active | 221 | * Used to keep APM and ACPI from both being active |
diff --git a/include/linux/pm_wakeup.h b/include/linux/pm_wakeup.h new file mode 100644 index 000000000000..f0d0b2cb8d20 --- /dev/null +++ b/include/linux/pm_wakeup.h | |||
| @@ -0,0 +1,90 @@ | |||
| 1 | /* | ||
| 2 | * pm_wakeup.h - Power management wakeup interface | ||
| 3 | * | ||
| 4 | * Copyright (C) 2008 Alan Stern | ||
| 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, or | ||
| 9 | * (at your option) any later version. | ||
| 10 | * | ||
| 11 | * This program is distributed in the hope that it will be useful, | ||
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 14 | * GNU General Public License for more details. | ||
| 15 | * | ||
| 16 | * You should have received a copy of the GNU General Public License | ||
| 17 | * along with this program; if not, write to the Free Software | ||
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 19 | */ | ||
| 20 | |||
| 21 | #ifndef _LINUX_PM_WAKEUP_H | ||
| 22 | #define _LINUX_PM_WAKEUP_H | ||
| 23 | |||
| 24 | #ifndef _DEVICE_H_ | ||
| 25 | # error "please don't include this file directly" | ||
| 26 | #endif | ||
| 27 | |||
| 28 | #ifdef CONFIG_PM | ||
| 29 | |||
| 30 | /* changes to device_may_wakeup take effect on the next pm state change. | ||
| 31 | * by default, devices should wakeup if they can. | ||
| 32 | */ | ||
| 33 | static inline void device_init_wakeup(struct device *dev, int val) | ||
| 34 | { | ||
| 35 | dev->power.can_wakeup = dev->power.should_wakeup = !!val; | ||
| 36 | } | ||
| 37 | |||
| 38 | static inline int device_can_wakeup(struct device *dev) | ||
| 39 | { | ||
| 40 | return dev->power.can_wakeup; | ||
| 41 | } | ||
| 42 | |||
| 43 | static inline void device_set_wakeup_enable(struct device *dev, int val) | ||
| 44 | { | ||
| 45 | dev->power.should_wakeup = !!val; | ||
| 46 | } | ||
| 47 | |||
| 48 | static inline int device_may_wakeup(struct device *dev) | ||
| 49 | { | ||
| 50 | return dev->power.can_wakeup & dev->power.should_wakeup; | ||
| 51 | } | ||
| 52 | |||
| 53 | /* | ||
| 54 | * Platform hook to activate device wakeup capability, if that's not already | ||
| 55 | * handled by enable_irq_wake() etc. | ||
| 56 | * Returns zero on success, else negative errno | ||
| 57 | */ | ||
| 58 | extern int (*platform_enable_wakeup)(struct device *dev, int is_on); | ||
| 59 | |||
| 60 | static inline int call_platform_enable_wakeup(struct device *dev, int is_on) | ||
| 61 | { | ||
| 62 | if (platform_enable_wakeup) | ||
| 63 | return (*platform_enable_wakeup)(dev, is_on); | ||
| 64 | return 0; | ||
| 65 | } | ||
| 66 | |||
| 67 | #else /* !CONFIG_PM */ | ||
| 68 | |||
| 69 | /* For some reason the next two routines work even without CONFIG_PM */ | ||
| 70 | static inline void device_init_wakeup(struct device *dev, int val) | ||
| 71 | { | ||
| 72 | dev->power.can_wakeup = !!val; | ||
| 73 | } | ||
| 74 | |||
| 75 | static inline int device_can_wakeup(struct device *dev) | ||
| 76 | { | ||
| 77 | return dev->power.can_wakeup; | ||
| 78 | } | ||
| 79 | |||
| 80 | #define device_set_wakeup_enable(dev, val) do {} while (0) | ||
| 81 | #define device_may_wakeup(dev) 0 | ||
| 82 | |||
| 83 | static inline int call_platform_enable_wakeup(struct device *dev, int is_on) | ||
| 84 | { | ||
| 85 | return 0; | ||
| 86 | } | ||
| 87 | |||
| 88 | #endif /* !CONFIG_PM */ | ||
| 89 | |||
| 90 | #endif /* _LINUX_PM_WAKEUP_H */ | ||
diff --git a/include/linux/raid_class.h b/include/linux/raid_class.h index d22ad392242a..6b537f1ac96c 100644 --- a/include/linux/raid_class.h +++ b/include/linux/raid_class.h | |||
| @@ -53,20 +53,20 @@ struct raid_data { | |||
| 53 | #define DEFINE_RAID_ATTRIBUTE(type, attr) \ | 53 | #define DEFINE_RAID_ATTRIBUTE(type, attr) \ |
| 54 | static inline void \ | 54 | static inline void \ |
| 55 | raid_set_##attr(struct raid_template *r, struct device *dev, type value) { \ | 55 | raid_set_##attr(struct raid_template *r, struct device *dev, type value) { \ |
| 56 | struct class_device *cdev = \ | 56 | struct device *device = \ |
| 57 | attribute_container_find_class_device(&r->raid_attrs.ac, dev);\ | 57 | attribute_container_find_class_device(&r->raid_attrs.ac, dev);\ |
| 58 | struct raid_data *rd; \ | 58 | struct raid_data *rd; \ |
| 59 | BUG_ON(!cdev); \ | 59 | BUG_ON(!device); \ |
| 60 | rd = class_get_devdata(cdev); \ | 60 | rd = dev_get_drvdata(device); \ |
| 61 | rd->attr = value; \ | 61 | rd->attr = value; \ |
| 62 | } \ | 62 | } \ |
| 63 | static inline type \ | 63 | static inline type \ |
| 64 | raid_get_##attr(struct raid_template *r, struct device *dev) { \ | 64 | raid_get_##attr(struct raid_template *r, struct device *dev) { \ |
| 65 | struct class_device *cdev = \ | 65 | struct device *device = \ |
| 66 | attribute_container_find_class_device(&r->raid_attrs.ac, dev);\ | 66 | attribute_container_find_class_device(&r->raid_attrs.ac, dev);\ |
| 67 | struct raid_data *rd; \ | 67 | struct raid_data *rd; \ |
| 68 | BUG_ON(!cdev); \ | 68 | BUG_ON(!device); \ |
| 69 | rd = class_get_devdata(cdev); \ | 69 | rd = dev_get_drvdata(device); \ |
| 70 | return rd->attr; \ | 70 | return rd->attr; \ |
| 71 | } | 71 | } |
| 72 | 72 | ||
diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h index 802710438a9e..03378e3515b3 100644 --- a/include/linux/sysfs.h +++ b/include/linux/sysfs.h | |||
| @@ -131,7 +131,6 @@ static inline int sysfs_create_dir(struct kobject *kobj) | |||
| 131 | 131 | ||
| 132 | static inline void sysfs_remove_dir(struct kobject *kobj) | 132 | static inline void sysfs_remove_dir(struct kobject *kobj) |
| 133 | { | 133 | { |
| 134 | ; | ||
| 135 | } | 134 | } |
| 136 | 135 | ||
| 137 | static inline int sysfs_rename_dir(struct kobject *kobj, const char *new_name) | 136 | static inline int sysfs_rename_dir(struct kobject *kobj, const char *new_name) |
| @@ -160,7 +159,6 @@ static inline int sysfs_chmod_file(struct kobject *kobj, | |||
| 160 | static inline void sysfs_remove_file(struct kobject *kobj, | 159 | static inline void sysfs_remove_file(struct kobject *kobj, |
| 161 | const struct attribute *attr) | 160 | const struct attribute *attr) |
| 162 | { | 161 | { |
| 163 | ; | ||
| 164 | } | 162 | } |
| 165 | 163 | ||
| 166 | static inline int sysfs_create_bin_file(struct kobject *kobj, | 164 | static inline int sysfs_create_bin_file(struct kobject *kobj, |
| @@ -169,10 +167,9 @@ static inline int sysfs_create_bin_file(struct kobject *kobj, | |||
| 169 | return 0; | 167 | return 0; |
| 170 | } | 168 | } |
| 171 | 169 | ||
| 172 | static inline int sysfs_remove_bin_file(struct kobject *kobj, | 170 | static inline void sysfs_remove_bin_file(struct kobject *kobj, |
| 173 | struct bin_attribute *attr) | 171 | struct bin_attribute *attr) |
| 174 | { | 172 | { |
| 175 | return 0; | ||
| 176 | } | 173 | } |
| 177 | 174 | ||
| 178 | static inline int sysfs_create_link(struct kobject *kobj, | 175 | static inline int sysfs_create_link(struct kobject *kobj, |
| @@ -183,7 +180,6 @@ static inline int sysfs_create_link(struct kobject *kobj, | |||
| 183 | 180 | ||
| 184 | static inline void sysfs_remove_link(struct kobject *kobj, const char *name) | 181 | static inline void sysfs_remove_link(struct kobject *kobj, const char *name) |
| 185 | { | 182 | { |
| 186 | ; | ||
| 187 | } | 183 | } |
| 188 | 184 | ||
| 189 | static inline int sysfs_create_group(struct kobject *kobj, | 185 | static inline int sysfs_create_group(struct kobject *kobj, |
| @@ -195,7 +191,6 @@ static inline int sysfs_create_group(struct kobject *kobj, | |||
| 195 | static inline void sysfs_remove_group(struct kobject *kobj, | 191 | static inline void sysfs_remove_group(struct kobject *kobj, |
| 196 | const struct attribute_group *grp) | 192 | const struct attribute_group *grp) |
| 197 | { | 193 | { |
| 198 | ; | ||
| 199 | } | 194 | } |
| 200 | 195 | ||
| 201 | static inline int sysfs_add_file_to_group(struct kobject *kobj, | 196 | static inline int sysfs_add_file_to_group(struct kobject *kobj, |
diff --git a/include/linux/transport_class.h b/include/linux/transport_class.h index 6696cf79c4f7..eaec1ea9558e 100644 --- a/include/linux/transport_class.h +++ b/include/linux/transport_class.h | |||
| @@ -17,11 +17,11 @@ struct transport_container; | |||
| 17 | struct transport_class { | 17 | struct transport_class { |
| 18 | struct class class; | 18 | struct class class; |
| 19 | int (*setup)(struct transport_container *, struct device *, | 19 | int (*setup)(struct transport_container *, struct device *, |
| 20 | struct class_device *); | 20 | struct device *); |
| 21 | int (*configure)(struct transport_container *, struct device *, | 21 | int (*configure)(struct transport_container *, struct device *, |
| 22 | struct class_device *); | 22 | struct device *); |
| 23 | int (*remove)(struct transport_container *, struct device *, | 23 | int (*remove)(struct transport_container *, struct device *, |
| 24 | struct class_device *); | 24 | struct device *); |
| 25 | }; | 25 | }; |
| 26 | 26 | ||
| 27 | #define DECLARE_TRANSPORT_CLASS(cls, nm, su, rm, cfg) \ | 27 | #define DECLARE_TRANSPORT_CLASS(cls, nm, su, rm, cfg) \ |
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index 95bf4bac44cb..2dcbecce3f61 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h | |||
| @@ -1051,7 +1051,7 @@ struct ib_device { | |||
| 1051 | struct ib_dma_mapping_ops *dma_ops; | 1051 | struct ib_dma_mapping_ops *dma_ops; |
| 1052 | 1052 | ||
| 1053 | struct module *owner; | 1053 | struct module *owner; |
| 1054 | struct class_device class_dev; | 1054 | struct device dev; |
| 1055 | struct kobject *ports_parent; | 1055 | struct kobject *ports_parent; |
| 1056 | struct list_head port_list; | 1056 | struct list_head port_list; |
| 1057 | 1057 | ||
diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h index ab7acbe80960..b8b19e2f57bb 100644 --- a/include/scsi/scsi_device.h +++ b/include/scsi/scsi_device.h | |||
| @@ -156,8 +156,8 @@ struct scsi_device { | |||
| 156 | 156 | ||
| 157 | int timeout; | 157 | int timeout; |
| 158 | 158 | ||
| 159 | struct device sdev_gendev; | 159 | struct device sdev_gendev, |
| 160 | struct class_device sdev_classdev; | 160 | sdev_dev; |
| 161 | 161 | ||
| 162 | struct execute_work ew; /* used to get process context on put */ | 162 | struct execute_work ew; /* used to get process context on put */ |
| 163 | 163 | ||
| @@ -167,9 +167,9 @@ struct scsi_device { | |||
| 167 | #define to_scsi_device(d) \ | 167 | #define to_scsi_device(d) \ |
| 168 | container_of(d, struct scsi_device, sdev_gendev) | 168 | container_of(d, struct scsi_device, sdev_gendev) |
| 169 | #define class_to_sdev(d) \ | 169 | #define class_to_sdev(d) \ |
| 170 | container_of(d, struct scsi_device, sdev_classdev) | 170 | container_of(d, struct scsi_device, sdev_dev) |
| 171 | #define transport_class_to_sdev(class_dev) \ | 171 | #define transport_class_to_sdev(class_dev) \ |
| 172 | to_scsi_device(class_dev->dev) | 172 | to_scsi_device(class_dev->parent) |
| 173 | 173 | ||
| 174 | #define sdev_printk(prefix, sdev, fmt, a...) \ | 174 | #define sdev_printk(prefix, sdev, fmt, a...) \ |
| 175 | dev_printk(prefix, &(sdev)->sdev_gendev, fmt, ##a) | 175 | dev_printk(prefix, &(sdev)->sdev_gendev, fmt, ##a) |
| @@ -220,7 +220,7 @@ static inline struct scsi_target *scsi_target(struct scsi_device *sdev) | |||
| 220 | return to_scsi_target(sdev->sdev_gendev.parent); | 220 | return to_scsi_target(sdev->sdev_gendev.parent); |
| 221 | } | 221 | } |
| 222 | #define transport_class_to_starget(class_dev) \ | 222 | #define transport_class_to_starget(class_dev) \ |
| 223 | to_scsi_target(class_dev->dev) | 223 | to_scsi_target(class_dev->parent) |
| 224 | 224 | ||
| 225 | #define starget_printk(prefix, starget, fmt, a...) \ | 225 | #define starget_printk(prefix, starget, fmt, a...) \ |
| 226 | dev_printk(prefix, &(starget)->dev, fmt, ##a) | 226 | dev_printk(prefix, &(starget)->dev, fmt, ##a) |
diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h index 49132862bfaa..d967d6dc7a28 100644 --- a/include/scsi/scsi_host.h +++ b/include/scsi/scsi_host.h | |||
| @@ -470,7 +470,7 @@ struct scsi_host_template { | |||
| 470 | /* | 470 | /* |
| 471 | * Pointer to the sysfs class properties for this host, NULL terminated. | 471 | * Pointer to the sysfs class properties for this host, NULL terminated. |
| 472 | */ | 472 | */ |
| 473 | struct class_device_attribute **shost_attrs; | 473 | struct device_attribute **shost_attrs; |
| 474 | 474 | ||
| 475 | /* | 475 | /* |
| 476 | * Pointer to the SCSI device properties for this host, NULL terminated. | 476 | * Pointer to the SCSI device properties for this host, NULL terminated. |
| @@ -655,8 +655,7 @@ struct Scsi_Host { | |||
| 655 | enum scsi_host_state shost_state; | 655 | enum scsi_host_state shost_state; |
| 656 | 656 | ||
| 657 | /* ldm bits */ | 657 | /* ldm bits */ |
| 658 | struct device shost_gendev; | 658 | struct device shost_gendev, shost_dev; |
| 659 | struct class_device shost_classdev; | ||
| 660 | 659 | ||
| 661 | /* | 660 | /* |
| 662 | * List of hosts per template. | 661 | * List of hosts per template. |
| @@ -683,7 +682,7 @@ struct Scsi_Host { | |||
| 683 | }; | 682 | }; |
| 684 | 683 | ||
| 685 | #define class_to_shost(d) \ | 684 | #define class_to_shost(d) \ |
| 686 | container_of(d, struct Scsi_Host, shost_classdev) | 685 | container_of(d, struct Scsi_Host, shost_dev) |
| 687 | 686 | ||
| 688 | #define shost_printk(prefix, shost, fmt, a...) \ | 687 | #define shost_printk(prefix, shost, fmt, a...) \ |
| 689 | dev_printk(prefix, &(shost)->shost_gendev, fmt, ##a) | 688 | dev_printk(prefix, &(shost)->shost_gendev, fmt, ##a) |
diff --git a/include/scsi/scsi_transport.h b/include/scsi/scsi_transport.h index 0dfef752f0e2..490bd13a634c 100644 --- a/include/scsi/scsi_transport.h +++ b/include/scsi/scsi_transport.h | |||
| @@ -80,7 +80,7 @@ struct scsi_transport_template { | |||
| 80 | }; | 80 | }; |
| 81 | 81 | ||
| 82 | #define transport_class_to_shost(tc) \ | 82 | #define transport_class_to_shost(tc) \ |
| 83 | dev_to_shost((tc)->dev) | 83 | dev_to_shost((tc)->parent) |
| 84 | 84 | ||
| 85 | 85 | ||
| 86 | /* Private area maintenance. The driver requested allocations come | 86 | /* Private area maintenance. The driver requested allocations come |
diff --git a/include/scsi/scsi_transport_fc.h b/include/scsi/scsi_transport_fc.h index 4769efd4db24..06f72bab9df0 100644 --- a/include/scsi/scsi_transport_fc.h +++ b/include/scsi/scsi_transport_fc.h | |||
| @@ -163,8 +163,8 @@ enum fc_tgtid_binding_type { | |||
| 163 | 163 | ||
| 164 | 164 | ||
| 165 | /* Macro for use in defining Virtual Port attributes */ | 165 | /* Macro for use in defining Virtual Port attributes */ |
| 166 | #define FC_VPORT_ATTR(_name,_mode,_show,_store) \ | 166 | #define FC_VPORT_ATTR(_name,_mode,_show,_store) \ |
| 167 | struct class_device_attribute class_device_attr_vport_##_name = \ | 167 | struct device_attribute dev_attr_vport_##_name = \ |
| 168 | __ATTR(_name,_mode,_show,_store) | 168 | __ATTR(_name,_mode,_show,_store) |
| 169 | 169 | ||
| 170 | 170 | ||
| @@ -234,8 +234,8 @@ struct fc_vport { | |||
| 234 | 234 | ||
| 235 | #define dev_to_vport(d) \ | 235 | #define dev_to_vport(d) \ |
| 236 | container_of(d, struct fc_vport, dev) | 236 | container_of(d, struct fc_vport, dev) |
| 237 | #define transport_class_to_vport(classdev) \ | 237 | #define transport_class_to_vport(dev) \ |
| 238 | dev_to_vport(classdev->dev) | 238 | dev_to_vport(dev->parent) |
| 239 | #define vport_to_shost(v) \ | 239 | #define vport_to_shost(v) \ |
| 240 | (v->shost) | 240 | (v->shost) |
| 241 | #define vport_to_shost_channel(v) \ | 241 | #define vport_to_shost_channel(v) \ |
| @@ -271,7 +271,7 @@ struct fc_rport_identifiers { | |||
| 271 | 271 | ||
| 272 | /* Macro for use in defining Remote Port attributes */ | 272 | /* Macro for use in defining Remote Port attributes */ |
| 273 | #define FC_RPORT_ATTR(_name,_mode,_show,_store) \ | 273 | #define FC_RPORT_ATTR(_name,_mode,_show,_store) \ |
| 274 | struct class_device_attribute class_device_attr_rport_##_name = \ | 274 | struct device_attribute dev_attr_rport_##_name = \ |
| 275 | __ATTR(_name,_mode,_show,_store) | 275 | __ATTR(_name,_mode,_show,_store) |
| 276 | 276 | ||
| 277 | 277 | ||
| @@ -341,8 +341,8 @@ struct fc_rport { /* aka fc_starget_attrs */ | |||
| 341 | 341 | ||
| 342 | #define dev_to_rport(d) \ | 342 | #define dev_to_rport(d) \ |
| 343 | container_of(d, struct fc_rport, dev) | 343 | container_of(d, struct fc_rport, dev) |
| 344 | #define transport_class_to_rport(classdev) \ | 344 | #define transport_class_to_rport(dev) \ |
| 345 | dev_to_rport(classdev->dev) | 345 | dev_to_rport(dev->parent) |
| 346 | #define rport_to_shost(r) \ | 346 | #define rport_to_shost(r) \ |
| 347 | dev_to_shost(r->dev.parent) | 347 | dev_to_shost(r->dev.parent) |
| 348 | 348 | ||
diff --git a/include/scsi/scsi_transport_sas.h b/include/scsi/scsi_transport_sas.h index 09125fa95b93..61ad3594aad6 100644 --- a/include/scsi/scsi_transport_sas.h +++ b/include/scsi/scsi_transport_sas.h | |||
| @@ -80,8 +80,8 @@ struct sas_phy { | |||
| 80 | 80 | ||
| 81 | #define dev_to_phy(d) \ | 81 | #define dev_to_phy(d) \ |
| 82 | container_of((d), struct sas_phy, dev) | 82 | container_of((d), struct sas_phy, dev) |
| 83 | #define transport_class_to_phy(cdev) \ | 83 | #define transport_class_to_phy(dev) \ |
| 84 | dev_to_phy((cdev)->dev) | 84 | dev_to_phy((dev)->parent) |
| 85 | #define phy_to_shost(phy) \ | 85 | #define phy_to_shost(phy) \ |
| 86 | dev_to_shost((phy)->dev.parent) | 86 | dev_to_shost((phy)->dev.parent) |
| 87 | 87 | ||
| @@ -96,8 +96,8 @@ struct sas_rphy { | |||
| 96 | 96 | ||
| 97 | #define dev_to_rphy(d) \ | 97 | #define dev_to_rphy(d) \ |
| 98 | container_of((d), struct sas_rphy, dev) | 98 | container_of((d), struct sas_rphy, dev) |
| 99 | #define transport_class_to_rphy(cdev) \ | 99 | #define transport_class_to_rphy(dev) \ |
| 100 | dev_to_rphy((cdev)->dev) | 100 | dev_to_rphy((dev)->parent) |
| 101 | #define rphy_to_shost(rphy) \ | 101 | #define rphy_to_shost(rphy) \ |
| 102 | dev_to_shost((rphy)->dev.parent) | 102 | dev_to_shost((rphy)->dev.parent) |
| 103 | #define target_to_rphy(targ) \ | 103 | #define target_to_rphy(targ) \ |
| @@ -152,8 +152,8 @@ struct sas_port { | |||
| 152 | 152 | ||
| 153 | #define dev_to_sas_port(d) \ | 153 | #define dev_to_sas_port(d) \ |
| 154 | container_of((d), struct sas_port, dev) | 154 | container_of((d), struct sas_port, dev) |
| 155 | #define transport_class_to_sas_port(cdev) \ | 155 | #define transport_class_to_sas_port(dev) \ |
| 156 | dev_to_sas_port((cdev)->dev) | 156 | dev_to_sas_port((dev)->parent) |
| 157 | 157 | ||
| 158 | struct sas_phy_linkrates { | 158 | struct sas_phy_linkrates { |
| 159 | enum sas_linkrate maximum_linkrate; | 159 | enum sas_linkrate maximum_linkrate; |
diff --git a/include/scsi/sd.h b/include/scsi/sd.h index 8ea9f7358ac1..4f032d48cb6e 100644 --- a/include/scsi/sd.h +++ b/include/scsi/sd.h | |||
| @@ -34,7 +34,7 @@ | |||
| 34 | struct scsi_disk { | 34 | struct scsi_disk { |
| 35 | struct scsi_driver *driver; /* always &sd_template */ | 35 | struct scsi_driver *driver; /* always &sd_template */ |
| 36 | struct scsi_device *device; | 36 | struct scsi_device *device; |
| 37 | struct class_device cdev; | 37 | struct device dev; |
| 38 | struct gendisk *disk; | 38 | struct gendisk *disk; |
| 39 | unsigned int openers; /* protected by BKL for now, yuck */ | 39 | unsigned int openers; /* protected by BKL for now, yuck */ |
| 40 | sector_t capacity; /* size in 512-byte sectors */ | 40 | sector_t capacity; /* size in 512-byte sectors */ |
| @@ -46,7 +46,7 @@ struct scsi_disk { | |||
| 46 | unsigned RCD : 1; /* state of disk RCD bit, unused */ | 46 | unsigned RCD : 1; /* state of disk RCD bit, unused */ |
| 47 | unsigned DPOFUA : 1; /* state of disk DPOFUA bit */ | 47 | unsigned DPOFUA : 1; /* state of disk DPOFUA bit */ |
| 48 | }; | 48 | }; |
| 49 | #define to_scsi_disk(obj) container_of(obj,struct scsi_disk,cdev) | 49 | #define to_scsi_disk(obj) container_of(obj,struct scsi_disk,dev) |
| 50 | 50 | ||
| 51 | #define sd_printk(prefix, sdsk, fmt, a...) \ | 51 | #define sd_printk(prefix, sdsk, fmt, a...) \ |
| 52 | (sdsk)->disk ? \ | 52 | (sdsk)->disk ? \ |
