diff options
Diffstat (limited to 'drivers/message/i2o/i2o_block.c')
-rw-r--r-- | drivers/message/i2o/i2o_block.c | 190 |
1 files changed, 95 insertions, 95 deletions
diff --git a/drivers/message/i2o/i2o_block.c b/drivers/message/i2o/i2o_block.c index f283b5bafdd3..5b1febed3133 100644 --- a/drivers/message/i2o/i2o_block.c +++ b/drivers/message/i2o/i2o_block.c | |||
@@ -59,10 +59,12 @@ | |||
59 | #include <linux/blkdev.h> | 59 | #include <linux/blkdev.h> |
60 | #include <linux/hdreg.h> | 60 | #include <linux/hdreg.h> |
61 | 61 | ||
62 | #include <scsi/scsi.h> | ||
63 | |||
62 | #include "i2o_block.h" | 64 | #include "i2o_block.h" |
63 | 65 | ||
64 | #define OSM_NAME "block-osm" | 66 | #define OSM_NAME "block-osm" |
65 | #define OSM_VERSION "1.287" | 67 | #define OSM_VERSION "1.325" |
66 | #define OSM_DESCRIPTION "I2O Block Device OSM" | 68 | #define OSM_DESCRIPTION "I2O Block Device OSM" |
67 | 69 | ||
68 | static struct i2o_driver i2o_block_driver; | 70 | static struct i2o_driver i2o_block_driver; |
@@ -130,20 +132,20 @@ static int i2o_block_remove(struct device *dev) | |||
130 | */ | 132 | */ |
131 | static int i2o_block_device_flush(struct i2o_device *dev) | 133 | static int i2o_block_device_flush(struct i2o_device *dev) |
132 | { | 134 | { |
133 | struct i2o_message __iomem *msg; | 135 | struct i2o_message *msg; |
134 | u32 m; | ||
135 | 136 | ||
136 | m = i2o_msg_get_wait(dev->iop, &msg, I2O_TIMEOUT_MESSAGE_GET); | 137 | msg = i2o_msg_get_wait(dev->iop, I2O_TIMEOUT_MESSAGE_GET); |
137 | if (m == I2O_QUEUE_EMPTY) | 138 | if (IS_ERR(msg)) |
138 | return -ETIMEDOUT; | 139 | return PTR_ERR(msg); |
139 | 140 | ||
140 | writel(FIVE_WORD_MSG_SIZE | SGL_OFFSET_0, &msg->u.head[0]); | 141 | msg->u.head[0] = cpu_to_le32(FIVE_WORD_MSG_SIZE | SGL_OFFSET_0); |
141 | writel(I2O_CMD_BLOCK_CFLUSH << 24 | HOST_TID << 12 | dev->lct_data.tid, | 142 | msg->u.head[1] = |
142 | &msg->u.head[1]); | 143 | cpu_to_le32(I2O_CMD_BLOCK_CFLUSH << 24 | HOST_TID << 12 | dev-> |
143 | writel(60 << 16, &msg->body[0]); | 144 | lct_data.tid); |
145 | msg->body[0] = cpu_to_le32(60 << 16); | ||
144 | osm_debug("Flushing...\n"); | 146 | osm_debug("Flushing...\n"); |
145 | 147 | ||
146 | return i2o_msg_post_wait(dev->iop, m, 60); | 148 | return i2o_msg_post_wait(dev->iop, msg, 60); |
147 | }; | 149 | }; |
148 | 150 | ||
149 | /** | 151 | /** |
@@ -181,21 +183,21 @@ static int i2o_block_issue_flush(request_queue_t * queue, struct gendisk *disk, | |||
181 | */ | 183 | */ |
182 | static int i2o_block_device_mount(struct i2o_device *dev, u32 media_id) | 184 | static int i2o_block_device_mount(struct i2o_device *dev, u32 media_id) |
183 | { | 185 | { |
184 | struct i2o_message __iomem *msg; | 186 | struct i2o_message *msg; |
185 | u32 m; | 187 | |
186 | 188 | msg = i2o_msg_get_wait(dev->iop, I2O_TIMEOUT_MESSAGE_GET); | |
187 | m = i2o_msg_get_wait(dev->iop, &msg, I2O_TIMEOUT_MESSAGE_GET); | 189 | if (IS_ERR(msg)) |
188 | if (m == I2O_QUEUE_EMPTY) | 190 | return PTR_ERR(msg); |
189 | return -ETIMEDOUT; | 191 | |
190 | 192 | msg->u.head[0] = cpu_to_le32(FIVE_WORD_MSG_SIZE | SGL_OFFSET_0); | |
191 | writel(FIVE_WORD_MSG_SIZE | SGL_OFFSET_0, &msg->u.head[0]); | 193 | msg->u.head[1] = |
192 | writel(I2O_CMD_BLOCK_MMOUNT << 24 | HOST_TID << 12 | dev->lct_data.tid, | 194 | cpu_to_le32(I2O_CMD_BLOCK_MMOUNT << 24 | HOST_TID << 12 | dev-> |
193 | &msg->u.head[1]); | 195 | lct_data.tid); |
194 | writel(-1, &msg->body[0]); | 196 | msg->body[0] = cpu_to_le32(-1); |
195 | writel(0, &msg->body[1]); | 197 | msg->body[1] = cpu_to_le32(0x00000000); |
196 | osm_debug("Mounting...\n"); | 198 | osm_debug("Mounting...\n"); |
197 | 199 | ||
198 | return i2o_msg_post_wait(dev->iop, m, 2); | 200 | return i2o_msg_post_wait(dev->iop, msg, 2); |
199 | }; | 201 | }; |
200 | 202 | ||
201 | /** | 203 | /** |
@@ -210,20 +212,20 @@ static int i2o_block_device_mount(struct i2o_device *dev, u32 media_id) | |||
210 | */ | 212 | */ |
211 | static int i2o_block_device_lock(struct i2o_device *dev, u32 media_id) | 213 | static int i2o_block_device_lock(struct i2o_device *dev, u32 media_id) |
212 | { | 214 | { |
213 | struct i2o_message __iomem *msg; | 215 | struct i2o_message *msg; |
214 | u32 m; | ||
215 | 216 | ||
216 | m = i2o_msg_get_wait(dev->iop, &msg, I2O_TIMEOUT_MESSAGE_GET); | 217 | msg = i2o_msg_get_wait(dev->iop, I2O_TIMEOUT_MESSAGE_GET); |
217 | if (m == I2O_QUEUE_EMPTY) | 218 | if (IS_ERR(msg) == I2O_QUEUE_EMPTY) |
218 | return -ETIMEDOUT; | 219 | return PTR_ERR(msg); |
219 | 220 | ||
220 | writel(FIVE_WORD_MSG_SIZE | SGL_OFFSET_0, &msg->u.head[0]); | 221 | msg->u.head[0] = cpu_to_le32(FIVE_WORD_MSG_SIZE | SGL_OFFSET_0); |
221 | writel(I2O_CMD_BLOCK_MLOCK << 24 | HOST_TID << 12 | dev->lct_data.tid, | 222 | msg->u.head[1] = |
222 | &msg->u.head[1]); | 223 | cpu_to_le32(I2O_CMD_BLOCK_MLOCK << 24 | HOST_TID << 12 | dev-> |
223 | writel(-1, &msg->body[0]); | 224 | lct_data.tid); |
225 | msg->body[0] = cpu_to_le32(-1); | ||
224 | osm_debug("Locking...\n"); | 226 | osm_debug("Locking...\n"); |
225 | 227 | ||
226 | return i2o_msg_post_wait(dev->iop, m, 2); | 228 | return i2o_msg_post_wait(dev->iop, msg, 2); |
227 | }; | 229 | }; |
228 | 230 | ||
229 | /** | 231 | /** |
@@ -238,20 +240,20 @@ static int i2o_block_device_lock(struct i2o_device *dev, u32 media_id) | |||
238 | */ | 240 | */ |
239 | static int i2o_block_device_unlock(struct i2o_device *dev, u32 media_id) | 241 | static int i2o_block_device_unlock(struct i2o_device *dev, u32 media_id) |
240 | { | 242 | { |
241 | struct i2o_message __iomem *msg; | 243 | struct i2o_message *msg; |
242 | u32 m; | ||
243 | 244 | ||
244 | m = i2o_msg_get_wait(dev->iop, &msg, I2O_TIMEOUT_MESSAGE_GET); | 245 | msg = i2o_msg_get_wait(dev->iop, I2O_TIMEOUT_MESSAGE_GET); |
245 | if (m == I2O_QUEUE_EMPTY) | 246 | if (IS_ERR(msg)) |
246 | return -ETIMEDOUT; | 247 | return PTR_ERR(msg); |
247 | 248 | ||
248 | writel(FIVE_WORD_MSG_SIZE | SGL_OFFSET_0, &msg->u.head[0]); | 249 | msg->u.head[0] = cpu_to_le32(FIVE_WORD_MSG_SIZE | SGL_OFFSET_0); |
249 | writel(I2O_CMD_BLOCK_MUNLOCK << 24 | HOST_TID << 12 | dev->lct_data.tid, | 250 | msg->u.head[1] = |
250 | &msg->u.head[1]); | 251 | cpu_to_le32(I2O_CMD_BLOCK_MUNLOCK << 24 | HOST_TID << 12 | dev-> |
251 | writel(media_id, &msg->body[0]); | 252 | lct_data.tid); |
253 | msg->body[0] = cpu_to_le32(media_id); | ||
252 | osm_debug("Unlocking...\n"); | 254 | osm_debug("Unlocking...\n"); |
253 | 255 | ||
254 | return i2o_msg_post_wait(dev->iop, m, 2); | 256 | return i2o_msg_post_wait(dev->iop, msg, 2); |
255 | }; | 257 | }; |
256 | 258 | ||
257 | /** | 259 | /** |
@@ -267,21 +269,21 @@ static int i2o_block_device_power(struct i2o_block_device *dev, u8 op) | |||
267 | { | 269 | { |
268 | struct i2o_device *i2o_dev = dev->i2o_dev; | 270 | struct i2o_device *i2o_dev = dev->i2o_dev; |
269 | struct i2o_controller *c = i2o_dev->iop; | 271 | struct i2o_controller *c = i2o_dev->iop; |
270 | struct i2o_message __iomem *msg; | 272 | struct i2o_message *msg; |
271 | u32 m; | ||
272 | int rc; | 273 | int rc; |
273 | 274 | ||
274 | m = i2o_msg_get_wait(c, &msg, I2O_TIMEOUT_MESSAGE_GET); | 275 | msg = i2o_msg_get_wait(c, I2O_TIMEOUT_MESSAGE_GET); |
275 | if (m == I2O_QUEUE_EMPTY) | 276 | if (IS_ERR(msg)) |
276 | return -ETIMEDOUT; | 277 | return PTR_ERR(msg); |
277 | 278 | ||
278 | writel(FOUR_WORD_MSG_SIZE | SGL_OFFSET_0, &msg->u.head[0]); | 279 | msg->u.head[0] = cpu_to_le32(FOUR_WORD_MSG_SIZE | SGL_OFFSET_0); |
279 | writel(I2O_CMD_BLOCK_POWER << 24 | HOST_TID << 12 | i2o_dev->lct_data. | 280 | msg->u.head[1] = |
280 | tid, &msg->u.head[1]); | 281 | cpu_to_le32(I2O_CMD_BLOCK_POWER << 24 | HOST_TID << 12 | i2o_dev-> |
281 | writel(op << 24, &msg->body[0]); | 282 | lct_data.tid); |
283 | msg->body[0] = cpu_to_le32(op << 24); | ||
282 | osm_debug("Power...\n"); | 284 | osm_debug("Power...\n"); |
283 | 285 | ||
284 | rc = i2o_msg_post_wait(c, m, 60); | 286 | rc = i2o_msg_post_wait(c, msg, 60); |
285 | if (!rc) | 287 | if (!rc) |
286 | dev->power = op; | 288 | dev->power = op; |
287 | 289 | ||
@@ -331,7 +333,7 @@ static inline void i2o_block_request_free(struct i2o_block_request *ireq) | |||
331 | */ | 333 | */ |
332 | static inline int i2o_block_sglist_alloc(struct i2o_controller *c, | 334 | static inline int i2o_block_sglist_alloc(struct i2o_controller *c, |
333 | struct i2o_block_request *ireq, | 335 | struct i2o_block_request *ireq, |
334 | u32 __iomem ** mptr) | 336 | u32 ** mptr) |
335 | { | 337 | { |
336 | int nents; | 338 | int nents; |
337 | enum dma_data_direction direction; | 339 | enum dma_data_direction direction; |
@@ -466,7 +468,7 @@ static void i2o_block_end_request(struct request *req, int uptodate, | |||
466 | 468 | ||
467 | spin_lock_irqsave(q->queue_lock, flags); | 469 | spin_lock_irqsave(q->queue_lock, flags); |
468 | 470 | ||
469 | end_that_request_last(req); | 471 | end_that_request_last(req, uptodate); |
470 | 472 | ||
471 | if (likely(dev)) { | 473 | if (likely(dev)) { |
472 | dev->open_queue_depth--; | 474 | dev->open_queue_depth--; |
@@ -745,10 +747,9 @@ static int i2o_block_transfer(struct request *req) | |||
745 | struct i2o_block_device *dev = req->rq_disk->private_data; | 747 | struct i2o_block_device *dev = req->rq_disk->private_data; |
746 | struct i2o_controller *c; | 748 | struct i2o_controller *c; |
747 | int tid = dev->i2o_dev->lct_data.tid; | 749 | int tid = dev->i2o_dev->lct_data.tid; |
748 | struct i2o_message __iomem *msg; | 750 | struct i2o_message *msg; |
749 | u32 __iomem *mptr; | 751 | u32 *mptr; |
750 | struct i2o_block_request *ireq = req->special; | 752 | struct i2o_block_request *ireq = req->special; |
751 | u32 m; | ||
752 | u32 tcntxt; | 753 | u32 tcntxt; |
753 | u32 sgl_offset = SGL_OFFSET_8; | 754 | u32 sgl_offset = SGL_OFFSET_8; |
754 | u32 ctl_flags = 0x00000000; | 755 | u32 ctl_flags = 0x00000000; |
@@ -763,9 +764,9 @@ static int i2o_block_transfer(struct request *req) | |||
763 | 764 | ||
764 | c = dev->i2o_dev->iop; | 765 | c = dev->i2o_dev->iop; |
765 | 766 | ||
766 | m = i2o_msg_get(c, &msg); | 767 | msg = i2o_msg_get(c); |
767 | if (m == I2O_QUEUE_EMPTY) { | 768 | if (IS_ERR(msg)) { |
768 | rc = -EBUSY; | 769 | rc = PTR_ERR(msg); |
769 | goto exit; | 770 | goto exit; |
770 | } | 771 | } |
771 | 772 | ||
@@ -775,8 +776,8 @@ static int i2o_block_transfer(struct request *req) | |||
775 | goto nop_msg; | 776 | goto nop_msg; |
776 | } | 777 | } |
777 | 778 | ||
778 | writel(i2o_block_driver.context, &msg->u.s.icntxt); | 779 | msg->u.s.icntxt = cpu_to_le32(i2o_block_driver.context); |
779 | writel(tcntxt, &msg->u.s.tcntxt); | 780 | msg->u.s.tcntxt = cpu_to_le32(tcntxt); |
780 | 781 | ||
781 | mptr = &msg->body[0]; | 782 | mptr = &msg->body[0]; |
782 | 783 | ||
@@ -834,11 +835,11 @@ static int i2o_block_transfer(struct request *req) | |||
834 | 835 | ||
835 | sgl_offset = SGL_OFFSET_12; | 836 | sgl_offset = SGL_OFFSET_12; |
836 | 837 | ||
837 | writel(I2O_CMD_PRIVATE << 24 | HOST_TID << 12 | tid, | 838 | msg->u.head[1] = |
838 | &msg->u.head[1]); | 839 | cpu_to_le32(I2O_CMD_PRIVATE << 24 | HOST_TID << 12 | tid); |
839 | 840 | ||
840 | writel(I2O_VENDOR_DPT << 16 | I2O_CMD_SCSI_EXEC, mptr++); | 841 | *mptr++ = cpu_to_le32(I2O_VENDOR_DPT << 16 | I2O_CMD_SCSI_EXEC); |
841 | writel(tid, mptr++); | 842 | *mptr++ = cpu_to_le32(tid); |
842 | 843 | ||
843 | /* | 844 | /* |
844 | * ENABLE_DISCONNECT | 845 | * ENABLE_DISCONNECT |
@@ -846,29 +847,31 @@ static int i2o_block_transfer(struct request *req) | |||
846 | * RETURN_SENSE_DATA_IN_REPLY_MESSAGE_FRAME | 847 | * RETURN_SENSE_DATA_IN_REPLY_MESSAGE_FRAME |
847 | */ | 848 | */ |
848 | if (rq_data_dir(req) == READ) { | 849 | if (rq_data_dir(req) == READ) { |
849 | cmd[0] = 0x28; | 850 | cmd[0] = READ_10; |
850 | scsi_flags = 0x60a0000a; | 851 | scsi_flags = 0x60a0000a; |
851 | } else { | 852 | } else { |
852 | cmd[0] = 0x2A; | 853 | cmd[0] = WRITE_10; |
853 | scsi_flags = 0xa0a0000a; | 854 | scsi_flags = 0xa0a0000a; |
854 | } | 855 | } |
855 | 856 | ||
856 | writel(scsi_flags, mptr++); | 857 | *mptr++ = cpu_to_le32(scsi_flags); |
857 | 858 | ||
858 | *((u32 *) & cmd[2]) = cpu_to_be32(req->sector * hwsec); | 859 | *((u32 *) & cmd[2]) = cpu_to_be32(req->sector * hwsec); |
859 | *((u16 *) & cmd[7]) = cpu_to_be16(req->nr_sectors * hwsec); | 860 | *((u16 *) & cmd[7]) = cpu_to_be16(req->nr_sectors * hwsec); |
860 | 861 | ||
861 | memcpy_toio(mptr, cmd, 10); | 862 | memcpy(mptr, cmd, 10); |
862 | mptr += 4; | 863 | mptr += 4; |
863 | writel(req->nr_sectors << KERNEL_SECTOR_SHIFT, mptr++); | 864 | *mptr++ = cpu_to_le32(req->nr_sectors << KERNEL_SECTOR_SHIFT); |
864 | } else | 865 | } else |
865 | #endif | 866 | #endif |
866 | { | 867 | { |
867 | writel(cmd | HOST_TID << 12 | tid, &msg->u.head[1]); | 868 | msg->u.head[1] = cpu_to_le32(cmd | HOST_TID << 12 | tid); |
868 | writel(ctl_flags, mptr++); | 869 | *mptr++ = cpu_to_le32(ctl_flags); |
869 | writel(req->nr_sectors << KERNEL_SECTOR_SHIFT, mptr++); | 870 | *mptr++ = cpu_to_le32(req->nr_sectors << KERNEL_SECTOR_SHIFT); |
870 | writel((u32) (req->sector << KERNEL_SECTOR_SHIFT), mptr++); | 871 | *mptr++ = |
871 | writel(req->sector >> (32 - KERNEL_SECTOR_SHIFT), mptr++); | 872 | cpu_to_le32((u32) (req->sector << KERNEL_SECTOR_SHIFT)); |
873 | *mptr++ = | ||
874 | cpu_to_le32(req->sector >> (32 - KERNEL_SECTOR_SHIFT)); | ||
872 | } | 875 | } |
873 | 876 | ||
874 | if (!i2o_block_sglist_alloc(c, ireq, &mptr)) { | 877 | if (!i2o_block_sglist_alloc(c, ireq, &mptr)) { |
@@ -876,13 +879,13 @@ static int i2o_block_transfer(struct request *req) | |||
876 | goto context_remove; | 879 | goto context_remove; |
877 | } | 880 | } |
878 | 881 | ||
879 | writel(I2O_MESSAGE_SIZE(mptr - &msg->u.head[0]) | | 882 | msg->u.head[0] = |
880 | sgl_offset, &msg->u.head[0]); | 883 | cpu_to_le32(I2O_MESSAGE_SIZE(mptr - &msg->u.head[0]) | sgl_offset); |
881 | 884 | ||
882 | list_add_tail(&ireq->queue, &dev->open_queue); | 885 | list_add_tail(&ireq->queue, &dev->open_queue); |
883 | dev->open_queue_depth++; | 886 | dev->open_queue_depth++; |
884 | 887 | ||
885 | i2o_msg_post(c, m); | 888 | i2o_msg_post(c, msg); |
886 | 889 | ||
887 | return 0; | 890 | return 0; |
888 | 891 | ||
@@ -890,7 +893,7 @@ static int i2o_block_transfer(struct request *req) | |||
890 | i2o_cntxt_list_remove(c, req); | 893 | i2o_cntxt_list_remove(c, req); |
891 | 894 | ||
892 | nop_msg: | 895 | nop_msg: |
893 | i2o_msg_nop(c, m); | 896 | i2o_msg_nop(c, msg); |
894 | 897 | ||
895 | exit: | 898 | exit: |
896 | return rc; | 899 | return rc; |
@@ -978,13 +981,12 @@ static struct i2o_block_device *i2o_block_device_alloc(void) | |||
978 | struct request_queue *queue; | 981 | struct request_queue *queue; |
979 | int rc; | 982 | int rc; |
980 | 983 | ||
981 | dev = kmalloc(sizeof(*dev), GFP_KERNEL); | 984 | dev = kzalloc(sizeof(*dev), GFP_KERNEL); |
982 | if (!dev) { | 985 | if (!dev) { |
983 | osm_err("Insufficient memory to allocate I2O Block disk.\n"); | 986 | osm_err("Insufficient memory to allocate I2O Block disk.\n"); |
984 | rc = -ENOMEM; | 987 | rc = -ENOMEM; |
985 | goto exit; | 988 | goto exit; |
986 | } | 989 | } |
987 | memset(dev, 0, sizeof(*dev)); | ||
988 | 990 | ||
989 | INIT_LIST_HEAD(&dev->open_queue); | 991 | INIT_LIST_HEAD(&dev->open_queue); |
990 | spin_lock_init(&dev->lock); | 992 | spin_lock_init(&dev->lock); |
@@ -1049,8 +1051,8 @@ static int i2o_block_probe(struct device *dev) | |||
1049 | int rc; | 1051 | int rc; |
1050 | u64 size; | 1052 | u64 size; |
1051 | u32 blocksize; | 1053 | u32 blocksize; |
1052 | u32 flags, status; | ||
1053 | u16 body_size = 4; | 1054 | u16 body_size = 4; |
1055 | u16 power; | ||
1054 | unsigned short max_sectors; | 1056 | unsigned short max_sectors; |
1055 | 1057 | ||
1056 | #ifdef CONFIG_I2O_EXT_ADAPTEC | 1058 | #ifdef CONFIG_I2O_EXT_ADAPTEC |
@@ -1108,22 +1110,20 @@ static int i2o_block_probe(struct device *dev) | |||
1108 | * Ask for the current media data. If that isn't supported | 1110 | * Ask for the current media data. If that isn't supported |
1109 | * then we ask for the device capacity data | 1111 | * then we ask for the device capacity data |
1110 | */ | 1112 | */ |
1111 | if (i2o_parm_field_get(i2o_dev, 0x0004, 1, &blocksize, 4) || | 1113 | if (!i2o_parm_field_get(i2o_dev, 0x0004, 1, &blocksize, 4) || |
1112 | i2o_parm_field_get(i2o_dev, 0x0000, 3, &blocksize, 4)) { | 1114 | !i2o_parm_field_get(i2o_dev, 0x0000, 3, &blocksize, 4)) { |
1113 | blk_queue_hardsect_size(queue, blocksize); | 1115 | blk_queue_hardsect_size(queue, le32_to_cpu(blocksize)); |
1114 | } else | 1116 | } else |
1115 | osm_warn("unable to get blocksize of %s\n", gd->disk_name); | 1117 | osm_warn("unable to get blocksize of %s\n", gd->disk_name); |
1116 | 1118 | ||
1117 | if (i2o_parm_field_get(i2o_dev, 0x0004, 0, &size, 8) || | 1119 | if (!i2o_parm_field_get(i2o_dev, 0x0004, 0, &size, 8) || |
1118 | i2o_parm_field_get(i2o_dev, 0x0000, 4, &size, 8)) { | 1120 | !i2o_parm_field_get(i2o_dev, 0x0000, 4, &size, 8)) { |
1119 | set_capacity(gd, size >> KERNEL_SECTOR_SHIFT); | 1121 | set_capacity(gd, le64_to_cpu(size) >> KERNEL_SECTOR_SHIFT); |
1120 | } else | 1122 | } else |
1121 | osm_warn("could not get size of %s\n", gd->disk_name); | 1123 | osm_warn("could not get size of %s\n", gd->disk_name); |
1122 | 1124 | ||
1123 | if (!i2o_parm_field_get(i2o_dev, 0x0000, 2, &i2o_blk_dev->power, 2)) | 1125 | if (!i2o_parm_field_get(i2o_dev, 0x0000, 2, &power, 2)) |
1124 | i2o_blk_dev->power = 0; | 1126 | i2o_blk_dev->power = power; |
1125 | i2o_parm_field_get(i2o_dev, 0x0000, 5, &flags, 4); | ||
1126 | i2o_parm_field_get(i2o_dev, 0x0000, 6, &status, 4); | ||
1127 | 1127 | ||
1128 | i2o_event_register(i2o_dev, &i2o_block_driver, 0, 0xffffffff); | 1128 | i2o_event_register(i2o_dev, &i2o_block_driver, 0, 0xffffffff); |
1129 | 1129 | ||