diff options
Diffstat (limited to 'drivers/message/i2o/exec-osm.c')
-rw-r--r-- | drivers/message/i2o/exec-osm.c | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/drivers/message/i2o/exec-osm.c b/drivers/message/i2o/exec-osm.c index 0160221c802a..ffe0cecfa060 100644 --- a/drivers/message/i2o/exec-osm.c +++ b/drivers/message/i2o/exec-osm.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <linux/module.h> | 30 | #include <linux/module.h> |
31 | #include <linux/i2o.h> | 31 | #include <linux/i2o.h> |
32 | #include <linux/delay.h> | 32 | #include <linux/delay.h> |
33 | #include "core.h" | ||
33 | 34 | ||
34 | #define OSM_NAME "exec-osm" | 35 | #define OSM_NAME "exec-osm" |
35 | 36 | ||
@@ -37,9 +38,6 @@ struct i2o_driver i2o_exec_driver; | |||
37 | 38 | ||
38 | static int i2o_exec_lct_notify(struct i2o_controller *c, u32 change_ind); | 39 | static int i2o_exec_lct_notify(struct i2o_controller *c, u32 change_ind); |
39 | 40 | ||
40 | /* Module internal functions from other sources */ | ||
41 | extern int i2o_device_parse_lct(struct i2o_controller *); | ||
42 | |||
43 | /* global wait list for POST WAIT */ | 41 | /* global wait list for POST WAIT */ |
44 | static LIST_HEAD(i2o_exec_wait_list); | 42 | static LIST_HEAD(i2o_exec_wait_list); |
45 | 43 | ||
@@ -50,7 +48,7 @@ struct i2o_exec_wait { | |||
50 | u32 tcntxt; /* transaction context from reply */ | 48 | u32 tcntxt; /* transaction context from reply */ |
51 | int complete; /* 1 if reply received otherwise 0 */ | 49 | int complete; /* 1 if reply received otherwise 0 */ |
52 | u32 m; /* message id */ | 50 | u32 m; /* message id */ |
53 | struct i2o_message __iomem *msg; /* pointer to the reply message */ | 51 | struct i2o_message *msg; /* pointer to the reply message */ |
54 | struct list_head list; /* node in global wait list */ | 52 | struct list_head list; /* node in global wait list */ |
55 | }; | 53 | }; |
56 | 54 | ||
@@ -162,7 +160,7 @@ int i2o_msg_post_wait_mem(struct i2o_controller *c, u32 m, unsigned long | |||
162 | barrier(); | 160 | barrier(); |
163 | 161 | ||
164 | if (wait->complete) { | 162 | if (wait->complete) { |
165 | rc = readl(&wait->msg->body[0]) >> 24; | 163 | rc = le32_to_cpu(wait->msg->body[0]) >> 24; |
166 | i2o_flush_reply(c, wait->m); | 164 | i2o_flush_reply(c, wait->m); |
167 | i2o_exec_wait_free(wait); | 165 | i2o_exec_wait_free(wait); |
168 | } else { | 166 | } else { |
@@ -202,8 +200,7 @@ int i2o_msg_post_wait_mem(struct i2o_controller *c, u32 m, unsigned long | |||
202 | * message must also be given back to the controller. | 200 | * message must also be given back to the controller. |
203 | */ | 201 | */ |
204 | static int i2o_msg_post_wait_complete(struct i2o_controller *c, u32 m, | 202 | static int i2o_msg_post_wait_complete(struct i2o_controller *c, u32 m, |
205 | struct i2o_message __iomem *msg, | 203 | struct i2o_message *msg, u32 context) |
206 | u32 context) | ||
207 | { | 204 | { |
208 | struct i2o_exec_wait *wait, *tmp; | 205 | struct i2o_exec_wait *wait, *tmp; |
209 | unsigned long flags; | 206 | unsigned long flags; |
@@ -378,11 +375,11 @@ static void i2o_exec_lct_modified(struct i2o_controller *c) | |||
378 | * code on failure and if the reply should be flushed. | 375 | * code on failure and if the reply should be flushed. |
379 | */ | 376 | */ |
380 | static int i2o_exec_reply(struct i2o_controller *c, u32 m, | 377 | static int i2o_exec_reply(struct i2o_controller *c, u32 m, |
381 | struct i2o_message __iomem *msg) | 378 | struct i2o_message *msg) |
382 | { | 379 | { |
383 | u32 context; | 380 | u32 context; |
384 | 381 | ||
385 | if (readl(&msg->u.head[0]) & MSG_FAIL) { | 382 | if (le32_to_cpu(msg->u.head[0]) & MSG_FAIL) { |
386 | /* | 383 | /* |
387 | * If Fail bit is set we must take the transaction context of | 384 | * If Fail bit is set we must take the transaction context of |
388 | * the preserved message to find the right request again. | 385 | * the preserved message to find the right request again. |
@@ -390,7 +387,7 @@ static int i2o_exec_reply(struct i2o_controller *c, u32 m, | |||
390 | struct i2o_message __iomem *pmsg; | 387 | struct i2o_message __iomem *pmsg; |
391 | u32 pm; | 388 | u32 pm; |
392 | 389 | ||
393 | pm = readl(&msg->body[3]); | 390 | pm = le32_to_cpu(msg->body[3]); |
394 | 391 | ||
395 | pmsg = i2o_msg_in_to_virt(c, pm); | 392 | pmsg = i2o_msg_in_to_virt(c, pm); |
396 | 393 | ||
@@ -401,12 +398,12 @@ static int i2o_exec_reply(struct i2o_controller *c, u32 m, | |||
401 | /* Release the preserved msg */ | 398 | /* Release the preserved msg */ |
402 | i2o_msg_nop(c, pm); | 399 | i2o_msg_nop(c, pm); |
403 | } else | 400 | } else |
404 | context = readl(&msg->u.s.tcntxt); | 401 | context = le32_to_cpu(msg->u.s.tcntxt); |
405 | 402 | ||
406 | if (context & 0x80000000) | 403 | if (context & 0x80000000) |
407 | return i2o_msg_post_wait_complete(c, m, msg, context); | 404 | return i2o_msg_post_wait_complete(c, m, msg, context); |
408 | 405 | ||
409 | if ((readl(&msg->u.head[1]) >> 24) == I2O_CMD_LCT_NOTIFY) { | 406 | if ((le32_to_cpu(msg->u.head[1]) >> 24) == I2O_CMD_LCT_NOTIFY) { |
410 | struct work_struct *work; | 407 | struct work_struct *work; |
411 | 408 | ||
412 | pr_debug("%s: LCT notify received\n", c->name); | 409 | pr_debug("%s: LCT notify received\n", c->name); |
@@ -442,9 +439,9 @@ static int i2o_exec_reply(struct i2o_controller *c, u32 m, | |||
442 | */ | 439 | */ |
443 | static void i2o_exec_event(struct i2o_event *evt) | 440 | static void i2o_exec_event(struct i2o_event *evt) |
444 | { | 441 | { |
445 | if(likely(evt->i2o_dev)) | 442 | if (likely(evt->i2o_dev)) |
446 | osm_info("Event received from device: %d\n", | 443 | osm_debug("Event received from device: %d\n", |
447 | evt->i2o_dev->lct_data.tid); | 444 | evt->i2o_dev->lct_data.tid); |
448 | kfree(evt); | 445 | kfree(evt); |
449 | }; | 446 | }; |
450 | 447 | ||