2008-11-13 09:25:07

by Yuri Tikhonov

[permalink] [raw]
Subject: [PATCH] xsysace: use resource_size_t instead of unsigned long

Hello,

This patch adds using resource_size_t for physical address of SystemACE
chip. This makes the driver workable on 32 bit systems with 64-bit resources
(e.g. PPC440SPe).

Signed-off-by: Yuri Tikhonov <[email protected]>
Signed-off-by: Ilya Yanok <[email protected]>
---
drivers/block/xsysace.c | 18 +++++++++---------
1 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/block/xsysace.c b/drivers/block/xsysace.c
index ecab9e6..f847305 100644
--- a/drivers/block/xsysace.c
+++ b/drivers/block/xsysace.c
@@ -194,7 +194,7 @@ struct ace_device {
int in_irq;

/* Details of hardware device */
- unsigned long physaddr;
+ resource_size_t physaddr;
void __iomem *baseaddr;
int irq;
int bus_width; /* 0 := 8 bit; 1 := 16 bit */
@@ -935,7 +935,7 @@ static int __devinit ace_setup(struct ace_device *ace)
int rc;

dev_dbg(ace->dev, "ace_setup(ace=0x%p)\n", ace);
- dev_dbg(ace->dev, "physaddr=0x%lx irq=%i\n", ace->physaddr, ace->irq);
+ dev_dbg(ace->dev, "physaddr=0x%llx irq=%i\n", (u64)ace->physaddr, ace->irq);

spin_lock_init(&ace->lock);
init_completion(&ace->id_completion);
@@ -1017,8 +1017,8 @@ static int __devinit ace_setup(struct ace_device *ace)
/* Print the identification */
dev_info(ace->dev, "Xilinx SystemACE revision %i.%i.%i\n",
(version >> 12) & 0xf, (version >> 8) & 0x0f, version & 0xff);
- dev_dbg(ace->dev, "physaddr 0x%lx, mapped to 0x%p, irq=%i\n",
- ace->physaddr, ace->baseaddr, ace->irq);
+ dev_dbg(ace->dev, "physaddr 0x%llx, mapped to 0x%p, irq=%i\n",
+ (u64)ace->physaddr, ace->baseaddr, ace->irq);

ace->media_change = 1;
ace_revalidate_disk(ace->gd);
@@ -1035,8 +1035,8 @@ err_alloc_disk:
err_blk_initq:
iounmap(ace->baseaddr);
err_ioremap:
- dev_info(ace->dev, "xsysace: error initializing device at 0x%lx\n",
- ace->physaddr);
+ dev_info(ace->dev, "xsysace: error initializing device at 0x%llx\n",
+ (u64)ace->physaddr);
return -ENOMEM;
}

@@ -1059,7 +1059,7 @@ static void __devexit ace_teardown(struct ace_device *ace)
}

static int __devinit
-ace_alloc(struct device *dev, int id, unsigned long physaddr,
+ace_alloc(struct device *dev, int id, resource_size_t physaddr,
int irq, int bus_width)
{
struct ace_device *ace;
@@ -1119,7 +1119,7 @@ static void __devexit ace_free(struct device *dev)

static int __devinit ace_probe(struct platform_device *dev)
{
- unsigned long physaddr = 0;
+ resource_size_t physaddr = 0;
int bus_width = ACE_BUS_WIDTH_16; /* FIXME: should not be hard coded */
int id = dev->id;
int irq = NO_IRQ;
@@ -1165,7 +1165,7 @@ static int __devinit
ace_of_probe(struct of_device *op, const struct of_device_id *match)
{
struct resource res;
- unsigned long physaddr;
+ resource_size_t physaddr;
const u32 *id;
int irq, bus_width, rc;

--
1.5.6.1

--
Yuri Tikhonov, Senior Software Engineer
Emcraft Systems, http://www.emcraft.com


2008-11-13 10:21:48

by Stephen Rothwell

[permalink] [raw]
Subject: Re: [PATCH] xsysace: use resource_size_t instead of unsigned long

Hi Yuri,

On Thu, 13 Nov 2008 11:43:17 +0300 Yuri Tikhonov <[email protected]> wrote:
>
> - dev_dbg(ace->dev, "physaddr=0x%lx irq=%i\n", ace->physaddr, ace->irq);
> + dev_dbg(ace->dev, "physaddr=0x%llx irq=%i\n", (u64)ace->physaddr, ace->irq);

You should cast the physaddr to "unsigned long long" as "u64" is
"unsigned long" on some architectures. The same is needed in other
places as well.

--
Cheers,
Stephen Rothwell [email protected]
http://www.canb.auug.org.au/~sfr/


Attachments:
(No filename) (496.00 B)
(No filename) (197.00 B)
Download all attachments

2008-11-14 04:57:39

by Yuri Tikhonov

[permalink] [raw]
Subject: Re[2]: [PATCH] xsysace: use resource_size_t instead of unsigned long


Hello Stephen,

On Thursday, November 13, 2008 you wrote:

> Hi Yuri,

> On Thu, 13 Nov 2008 11:43:17 +0300 Yuri Tikhonov <[email protected]> wrote:
>>
>> - dev_dbg(ace->dev, "physaddr=0x%lx irq=%i\n", ace->physaddr, ace->irq);
>> + dev_dbg(ace->dev, "physaddr=0x%llx irq=%i\n", (u64)ace->physaddr, ace->irq);

> You should cast the physaddr to "unsigned long long" as "u64" is
> "unsigned long" on some architectures. The same is needed in other
> places as well.

Thanks for your comment. We'll fix this.

Regards, Yuri

--
Yuri Tikhonov, Senior Software Engineer
Emcraft Systems, http://www.emcraft.com