Commit 494fd07a authored by Stephen Rothwell's avatar Stephen Rothwell Committed by Benjamin Herrenschmidt

powerpc/ps3: Use dma_addr_t down through the stack

Push the dma_addr_t type usage all the way down to where the actual
values are manipulated.

Now that u64 is "unsigned long long", this removes warnings like:

arch/powerpc/platforms/ps3/system-bus.c:532: warning: passing argument 4 of 'ps3_dma_map' from incompatible pointer type
arch/powerpc/platforms/ps3/system-bus.c:649: warning: passing argument 4 of 'ps3_dma_map' from incompatible pointer type
Signed-off-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
Acked-by: default avatarGeoff Levand <geoffrey.levand@am.sony.com>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent c52fe6b6
...@@ -103,10 +103,10 @@ struct ps3_dma_region_ops { ...@@ -103,10 +103,10 @@ struct ps3_dma_region_ops {
int (*map)(struct ps3_dma_region *, int (*map)(struct ps3_dma_region *,
unsigned long virt_addr, unsigned long virt_addr,
unsigned long len, unsigned long len,
unsigned long *bus_addr, dma_addr_t *bus_addr,
u64 iopte_pp); u64 iopte_pp);
int (*unmap)(struct ps3_dma_region *, int (*unmap)(struct ps3_dma_region *,
unsigned long bus_addr, dma_addr_t bus_addr,
unsigned long len); unsigned long len);
}; };
/** /**
...@@ -124,9 +124,9 @@ int ps3_dma_region_init(struct ps3_system_bus_device *dev, ...@@ -124,9 +124,9 @@ int ps3_dma_region_init(struct ps3_system_bus_device *dev,
int ps3_dma_region_create(struct ps3_dma_region *r); int ps3_dma_region_create(struct ps3_dma_region *r);
int ps3_dma_region_free(struct ps3_dma_region *r); int ps3_dma_region_free(struct ps3_dma_region *r);
int ps3_dma_map(struct ps3_dma_region *r, unsigned long virt_addr, int ps3_dma_map(struct ps3_dma_region *r, unsigned long virt_addr,
unsigned long len, unsigned long *bus_addr, unsigned long len, dma_addr_t *bus_addr,
u64 iopte_pp); u64 iopte_pp);
int ps3_dma_unmap(struct ps3_dma_region *r, unsigned long bus_addr, int ps3_dma_unmap(struct ps3_dma_region *r, dma_addr_t bus_addr,
unsigned long len); unsigned long len);
/* mmio routines */ /* mmio routines */
......
...@@ -777,7 +777,7 @@ static int dma_ioc0_region_free(struct ps3_dma_region *r) ...@@ -777,7 +777,7 @@ static int dma_ioc0_region_free(struct ps3_dma_region *r)
*/ */
static int dma_sb_map_area(struct ps3_dma_region *r, unsigned long virt_addr, static int dma_sb_map_area(struct ps3_dma_region *r, unsigned long virt_addr,
unsigned long len, unsigned long *bus_addr, unsigned long len, dma_addr_t *bus_addr,
u64 iopte_flag) u64 iopte_flag)
{ {
int result; int result;
...@@ -800,7 +800,7 @@ static int dma_sb_map_area(struct ps3_dma_region *r, unsigned long virt_addr, ...@@ -800,7 +800,7 @@ static int dma_sb_map_area(struct ps3_dma_region *r, unsigned long virt_addr,
DBG("%s:%d lpar_addr %lxh\n", __func__, __LINE__, DBG("%s:%d lpar_addr %lxh\n", __func__, __LINE__,
lpar_addr); lpar_addr);
DBG("%s:%d len %lxh\n", __func__, __LINE__, len); DBG("%s:%d len %lxh\n", __func__, __LINE__, len);
DBG("%s:%d bus_addr %lxh (%lxh)\n", __func__, __LINE__, DBG("%s:%d bus_addr %llxh (%lxh)\n", __func__, __LINE__,
*bus_addr, len); *bus_addr, len);
} }
...@@ -832,7 +832,7 @@ static int dma_sb_map_area(struct ps3_dma_region *r, unsigned long virt_addr, ...@@ -832,7 +832,7 @@ static int dma_sb_map_area(struct ps3_dma_region *r, unsigned long virt_addr,
} }
static int dma_ioc0_map_area(struct ps3_dma_region *r, unsigned long virt_addr, static int dma_ioc0_map_area(struct ps3_dma_region *r, unsigned long virt_addr,
unsigned long len, unsigned long *bus_addr, unsigned long len, dma_addr_t *bus_addr,
u64 iopte_flag) u64 iopte_flag)
{ {
int result; int result;
...@@ -872,7 +872,7 @@ static int dma_ioc0_map_area(struct ps3_dma_region *r, unsigned long virt_addr, ...@@ -872,7 +872,7 @@ static int dma_ioc0_map_area(struct ps3_dma_region *r, unsigned long virt_addr,
return result; return result;
} }
*bus_addr = c->bus_addr + phys_addr - aligned_phys; *bus_addr = c->bus_addr + phys_addr - aligned_phys;
DBG("%s: va=%#lx pa=%#lx a_pa=%#lx bus=%#lx\n", __func__, DBG("%s: va=%#lx pa=%#lx a_pa=%#lx bus=%#llx\n", __func__,
virt_addr, phys_addr, aligned_phys, *bus_addr); virt_addr, phys_addr, aligned_phys, *bus_addr);
c->usage_count = 1; c->usage_count = 1;
...@@ -889,7 +889,7 @@ static int dma_ioc0_map_area(struct ps3_dma_region *r, unsigned long virt_addr, ...@@ -889,7 +889,7 @@ static int dma_ioc0_map_area(struct ps3_dma_region *r, unsigned long virt_addr,
* This is the common dma unmap routine. * This is the common dma unmap routine.
*/ */
static int dma_sb_unmap_area(struct ps3_dma_region *r, unsigned long bus_addr, static int dma_sb_unmap_area(struct ps3_dma_region *r, dma_addr_t bus_addr,
unsigned long len) unsigned long len)
{ {
unsigned long flags; unsigned long flags;
...@@ -903,7 +903,7 @@ static int dma_sb_unmap_area(struct ps3_dma_region *r, unsigned long bus_addr, ...@@ -903,7 +903,7 @@ static int dma_sb_unmap_area(struct ps3_dma_region *r, unsigned long bus_addr,
1 << r->page_size); 1 << r->page_size);
unsigned long aligned_len = _ALIGN_UP(len + bus_addr unsigned long aligned_len = _ALIGN_UP(len + bus_addr
- aligned_bus, 1 << r->page_size); - aligned_bus, 1 << r->page_size);
DBG("%s:%d: not found: bus_addr %lxh\n", DBG("%s:%d: not found: bus_addr %llxh\n",
__func__, __LINE__, bus_addr); __func__, __LINE__, bus_addr);
DBG("%s:%d: not found: len %lxh\n", DBG("%s:%d: not found: len %lxh\n",
__func__, __LINE__, len); __func__, __LINE__, len);
...@@ -926,12 +926,12 @@ static int dma_sb_unmap_area(struct ps3_dma_region *r, unsigned long bus_addr, ...@@ -926,12 +926,12 @@ static int dma_sb_unmap_area(struct ps3_dma_region *r, unsigned long bus_addr,
} }
static int dma_ioc0_unmap_area(struct ps3_dma_region *r, static int dma_ioc0_unmap_area(struct ps3_dma_region *r,
unsigned long bus_addr, unsigned long len) dma_addr_t bus_addr, unsigned long len)
{ {
unsigned long flags; unsigned long flags;
struct dma_chunk *c; struct dma_chunk *c;
DBG("%s: start a=%#lx l=%#lx\n", __func__, bus_addr, len); DBG("%s: start a=%#llx l=%#lx\n", __func__, bus_addr, len);
spin_lock_irqsave(&r->chunk_list.lock, flags); spin_lock_irqsave(&r->chunk_list.lock, flags);
c = dma_find_chunk(r, bus_addr, len); c = dma_find_chunk(r, bus_addr, len);
...@@ -941,7 +941,7 @@ static int dma_ioc0_unmap_area(struct ps3_dma_region *r, ...@@ -941,7 +941,7 @@ static int dma_ioc0_unmap_area(struct ps3_dma_region *r,
unsigned long aligned_len = _ALIGN_UP(len + bus_addr unsigned long aligned_len = _ALIGN_UP(len + bus_addr
- aligned_bus, - aligned_bus,
1 << r->page_size); 1 << r->page_size);
DBG("%s:%d: not found: bus_addr %lxh\n", DBG("%s:%d: not found: bus_addr %llxh\n",
__func__, __LINE__, bus_addr); __func__, __LINE__, bus_addr);
DBG("%s:%d: not found: len %lxh\n", DBG("%s:%d: not found: len %lxh\n",
__func__, __LINE__, len); __func__, __LINE__, len);
...@@ -975,7 +975,8 @@ static int dma_ioc0_unmap_area(struct ps3_dma_region *r, ...@@ -975,7 +975,8 @@ static int dma_ioc0_unmap_area(struct ps3_dma_region *r,
static int dma_sb_region_create_linear(struct ps3_dma_region *r) static int dma_sb_region_create_linear(struct ps3_dma_region *r)
{ {
int result; int result;
unsigned long virt_addr, len, tmp; unsigned long virt_addr, len;
dma_addr_t tmp;
if (r->len > 16*1024*1024) { /* FIXME: need proper fix */ if (r->len > 16*1024*1024) { /* FIXME: need proper fix */
/* force 16M dma pages for linear mapping */ /* force 16M dma pages for linear mapping */
...@@ -1027,7 +1028,8 @@ static int dma_sb_region_create_linear(struct ps3_dma_region *r) ...@@ -1027,7 +1028,8 @@ static int dma_sb_region_create_linear(struct ps3_dma_region *r)
static int dma_sb_region_free_linear(struct ps3_dma_region *r) static int dma_sb_region_free_linear(struct ps3_dma_region *r)
{ {
int result; int result;
unsigned long bus_addr, len, lpar_addr; dma_addr_t bus_addr;
unsigned long len, lpar_addr;
if (r->offset < map.rm.size) { if (r->offset < map.rm.size) {
/* Unmap (part of) 1st RAM chunk */ /* Unmap (part of) 1st RAM chunk */
...@@ -1072,7 +1074,7 @@ static int dma_sb_region_free_linear(struct ps3_dma_region *r) ...@@ -1072,7 +1074,7 @@ static int dma_sb_region_free_linear(struct ps3_dma_region *r)
*/ */
static int dma_sb_map_area_linear(struct ps3_dma_region *r, static int dma_sb_map_area_linear(struct ps3_dma_region *r,
unsigned long virt_addr, unsigned long len, unsigned long *bus_addr, unsigned long virt_addr, unsigned long len, dma_addr_t *bus_addr,
u64 iopte_flag) u64 iopte_flag)
{ {
unsigned long phys_addr = is_kernel_addr(virt_addr) ? __pa(virt_addr) unsigned long phys_addr = is_kernel_addr(virt_addr) ? __pa(virt_addr)
...@@ -1091,7 +1093,7 @@ static int dma_sb_map_area_linear(struct ps3_dma_region *r, ...@@ -1091,7 +1093,7 @@ static int dma_sb_map_area_linear(struct ps3_dma_region *r,
*/ */
static int dma_sb_unmap_area_linear(struct ps3_dma_region *r, static int dma_sb_unmap_area_linear(struct ps3_dma_region *r,
unsigned long bus_addr, unsigned long len) dma_addr_t bus_addr, unsigned long len)
{ {
return 0; return 0;
}; };
...@@ -1169,13 +1171,13 @@ int ps3_dma_region_free(struct ps3_dma_region *r) ...@@ -1169,13 +1171,13 @@ int ps3_dma_region_free(struct ps3_dma_region *r)
EXPORT_SYMBOL(ps3_dma_region_free); EXPORT_SYMBOL(ps3_dma_region_free);
int ps3_dma_map(struct ps3_dma_region *r, unsigned long virt_addr, int ps3_dma_map(struct ps3_dma_region *r, unsigned long virt_addr,
unsigned long len, unsigned long *bus_addr, unsigned long len, dma_addr_t *bus_addr,
u64 iopte_flag) u64 iopte_flag)
{ {
return r->region_ops->map(r, virt_addr, len, bus_addr, iopte_flag); return r->region_ops->map(r, virt_addr, len, bus_addr, iopte_flag);
} }
int ps3_dma_unmap(struct ps3_dma_region *r, unsigned long bus_addr, int ps3_dma_unmap(struct ps3_dma_region *r, dma_addr_t bus_addr,
unsigned long len) unsigned long len)
{ {
return r->region_ops->unmap(r, bus_addr, len); return r->region_ops->unmap(r, bus_addr, len);
......
...@@ -568,7 +568,7 @@ static dma_addr_t ps3_sb_map_page(struct device *_dev, struct page *page, ...@@ -568,7 +568,7 @@ static dma_addr_t ps3_sb_map_page(struct device *_dev, struct page *page,
{ {
struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev);
int result; int result;
unsigned long bus_addr; dma_addr_t bus_addr;
void *ptr = page_address(page) + offset; void *ptr = page_address(page) + offset;
result = ps3_dma_map(dev->d_region, (unsigned long)ptr, size, result = ps3_dma_map(dev->d_region, (unsigned long)ptr, size,
...@@ -590,7 +590,7 @@ static dma_addr_t ps3_ioc0_map_page(struct device *_dev, struct page *page, ...@@ -590,7 +590,7 @@ static dma_addr_t ps3_ioc0_map_page(struct device *_dev, struct page *page,
{ {
struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev); struct ps3_system_bus_device *dev = ps3_dev_to_system_bus_dev(_dev);
int result; int result;
unsigned long bus_addr; dma_addr_t bus_addr;
u64 iopte_flag; u64 iopte_flag;
void *ptr = page_address(page) + offset; void *ptr = page_address(page) + offset;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment