diff options
author | Omar Ramirez Luna <omar.ramirez@copitl.com> | 2012-10-24 18:09:19 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-10-24 19:31:31 -0400 |
commit | 5ae4fd94a3b2d2b285cff294a5a23c52e21db208 (patch) | |
tree | 29a45299d2f00273195e81cbc396c3935e7664b1 /drivers | |
parent | 7de8a0cf48a023058642c69145630d51709aa174 (diff) |
staging: tidspbridge: ioremap physical address of the stack segment in shm
Due to data type change, readl can no longer receive a u32.
Signed-off-by: Omar Ramirez Luna <omar.ramirez@copitl.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/staging/tidspbridge/rmgr/node.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/drivers/staging/tidspbridge/rmgr/node.c b/drivers/staging/tidspbridge/rmgr/node.c index c2fc6137c770..294e9b40f516 100644 --- a/drivers/staging/tidspbridge/rmgr/node.c +++ b/drivers/staging/tidspbridge/rmgr/node.c | |||
@@ -304,8 +304,7 @@ int node_allocate(struct proc_object *hprocessor, | |||
304 | u32 pul_value; | 304 | u32 pul_value; |
305 | u32 dynext_base; | 305 | u32 dynext_base; |
306 | u32 off_set = 0; | 306 | u32 off_set = 0; |
307 | u32 ul_stack_seg_addr, ul_stack_seg_val; | 307 | u32 ul_stack_seg_val; |
308 | u32 ul_gpp_mem_base; | ||
309 | struct cfg_hostres *host_res; | 308 | struct cfg_hostres *host_res; |
310 | struct bridge_dev_context *pbridge_context; | 309 | struct bridge_dev_context *pbridge_context; |
311 | u32 mapped_addr = 0; | 310 | u32 mapped_addr = 0; |
@@ -581,6 +580,9 @@ func_cont: | |||
581 | if (strcmp((char *) | 580 | if (strcmp((char *) |
582 | pnode->dcd_props.obj_data.node_obj.ndb_props. | 581 | pnode->dcd_props.obj_data.node_obj.ndb_props. |
583 | stack_seg_name, STACKSEGLABEL) == 0) { | 582 | stack_seg_name, STACKSEGLABEL) == 0) { |
583 | void __iomem *stack_seg; | ||
584 | u32 stack_seg_pa; | ||
585 | |||
584 | status = | 586 | status = |
585 | hnode_mgr->nldr_fxns. | 587 | hnode_mgr->nldr_fxns. |
586 | get_fxn_addr(pnode->nldr_node_obj, "DYNEXT_BEG", | 588 | get_fxn_addr(pnode->nldr_node_obj, "DYNEXT_BEG", |
@@ -608,14 +610,21 @@ func_cont: | |||
608 | goto func_end; | 610 | goto func_end; |
609 | } | 611 | } |
610 | 612 | ||
611 | ul_gpp_mem_base = (u32) host_res->mem_base[1]; | ||
612 | off_set = pul_value - dynext_base; | 613 | off_set = pul_value - dynext_base; |
613 | ul_stack_seg_addr = ul_gpp_mem_base + off_set; | 614 | stack_seg_pa = host_res->mem_phys[1] + off_set; |
614 | ul_stack_seg_val = readl(ul_stack_seg_addr); | 615 | stack_seg = ioremap(stack_seg_pa, SZ_32); |
616 | if (!stack_seg) { | ||
617 | status = -ENOMEM; | ||
618 | goto func_end; | ||
619 | } | ||
620 | |||
621 | ul_stack_seg_val = readl(stack_seg); | ||
622 | |||
623 | iounmap(stack_seg); | ||
615 | 624 | ||
616 | dev_dbg(bridge, "%s: StackSegVal = 0x%x, StackSegAddr =" | 625 | dev_dbg(bridge, "%s: StackSegVal = 0x%x, StackSegAddr =" |
617 | " 0x%x\n", __func__, ul_stack_seg_val, | 626 | " 0x%x\n", __func__, ul_stack_seg_val, |
618 | ul_stack_seg_addr); | 627 | host_res->mem_base[1] + off_set); |
619 | 628 | ||
620 | pnode->create_args.asa.task_arg_obj.stack_seg = | 629 | pnode->create_args.asa.task_arg_obj.stack_seg = |
621 | ul_stack_seg_val; | 630 | ul_stack_seg_val; |