2005-09-29 19:51:03

by Deepak Saxena

[permalink] [raw]
Subject: [PATCH] Fix IXP4xx MTD driver no cast warning


Fix following warning:

drivers/mtd/maps/ixp4xx.c: In function 'ixp4xx_flash_probe':
drivers/mtd/maps/ixp4xx.c:199: warning: assignment makes integer from
pointer without a cast

Signed-off-by: Deepak Saxena <[email protected]>

diff --git a/drivers/mtd/maps/ixp4xx.c b/drivers/mtd/maps/ixp4xx.c
--- a/drivers/mtd/maps/ixp4xx.c
+++ b/drivers/mtd/maps/ixp4xx.c
@@ -196,7 +196,7 @@ static int ixp4xx_flash_probe(struct dev
goto Error;
}

- info->map.map_priv_1 = ioremap(dev->resource->start,
+ info->map.map_priv_1 = (unsigned long)ioremap(dev->resource->start,
dev->resource->end - dev->resource->start + 1);
if (!info->map.map_priv_1) {
printk(KERN_ERR "IXP4XXFlash: Failed to ioremap region\n");

--
Deepak Saxena - [email protected] - http://www.plexity.net

Even a stopped clock gives the right time twice a day.


2005-09-29 20:01:30

by Linus Torvalds

[permalink] [raw]
Subject: Re: [PATCH] Fix IXP4xx MTD driver no cast warning



On Thu, 29 Sep 2005, Deepak Saxena wrote:
>
> drivers/mtd/maps/ixp4xx.c: In function 'ixp4xx_flash_probe':
> drivers/mtd/maps/ixp4xx.c:199: warning: assignment makes integer from
> pointer without a cast

Please don't. The warning is entirely warranted, as far as I can tell.

Shutting up warnings just because they are warnings is bad practice.
Either fix them, or leave them be.

If you do an "ioremap()", then the result is a "(void __iomem *)". If you
assign it to something that is "unsigned long", you _should_ get a
warning.

Linus

2005-09-29 20:52:58

by Russell King

[permalink] [raw]
Subject: Re: [PATCH] Fix IXP4xx MTD driver no cast warning

On Thu, Sep 29, 2005 at 12:52:05PM -0700, Deepak Saxena wrote:
> Fix following warning:
>
> drivers/mtd/maps/ixp4xx.c: In function 'ixp4xx_flash_probe':
> drivers/mtd/maps/ixp4xx.c:199: warning: assignment makes integer from
> pointer without a cast
>
> Signed-off-by: Deepak Saxena <[email protected]>
>
> diff --git a/drivers/mtd/maps/ixp4xx.c b/drivers/mtd/maps/ixp4xx.c
> --- a/drivers/mtd/maps/ixp4xx.c
> +++ b/drivers/mtd/maps/ixp4xx.c
> @@ -196,7 +196,7 @@ static int ixp4xx_flash_probe(struct dev
> goto Error;
> }
>
> - info->map.map_priv_1 = ioremap(dev->resource->start,
> + info->map.map_priv_1 = (unsigned long)ioremap(dev->resource->start,

Shouldn't this be using info->map.virt instead of the old map.map_priv_1 ?

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 Serial core

2005-09-29 21:19:47

by Deepak Saxena

[permalink] [raw]
Subject: Re: [PATCH] Fix IXP4xx MTD driver no cast warning

On Sep 29 2005, at 21:52, Russell King was caught saying:
> On Thu, Sep 29, 2005 at 12:52:05PM -0700, Deepak Saxena wrote:
> > Fix following warning:
> >
> > drivers/mtd/maps/ixp4xx.c: In function 'ixp4xx_flash_probe':
> > drivers/mtd/maps/ixp4xx.c:199: warning: assignment makes integer from
> > pointer without a cast
> >
> > Signed-off-by: Deepak Saxena <[email protected]>
> >
> > diff --git a/drivers/mtd/maps/ixp4xx.c b/drivers/mtd/maps/ixp4xx.c
> > --- a/drivers/mtd/maps/ixp4xx.c
> > +++ b/drivers/mtd/maps/ixp4xx.c
> > @@ -196,7 +196,7 @@ static int ixp4xx_flash_probe(struct dev
> > goto Error;
> > }
> >
> > - info->map.map_priv_1 = ioremap(dev->resource->start,
> > + info->map.map_priv_1 = (unsigned long)ioremap(dev->resource->start,
>
> Shouldn't this be using info->map.virt instead of the old map.map_priv_1 ?

I think when I wrote this, having a !0 value in map->virt would cause the mtd
core to assume that the map driver supported point()ing and direct copy
of data. Looking at the mtd code it looks like this assumption might
have gone away...will change code.

~Deepak

--
Deepak Saxena - [email protected] - http://www.plexity.net

Even a stopped clock gives the right time twice a day.

2005-09-29 23:02:21

by Jörn Engel

[permalink] [raw]
Subject: Re: [PATCH] Fix IXP4xx MTD driver no cast warning

On Thu, 29 September 2005 13:00:18 -0700, Linus Torvalds wrote:
> On Thu, 29 Sep 2005, Deepak Saxena wrote:
> >
> > drivers/mtd/maps/ixp4xx.c: In function 'ixp4xx_flash_probe':
> > drivers/mtd/maps/ixp4xx.c:199: warning: assignment makes integer from
> > pointer without a cast
>
> Please don't. The warning is entirely warranted, as far as I can tell.
>
> Shutting up warnings just because they are warnings is bad practice.
> Either fix them, or leave them be.
>
> If you do an "ioremap()", then the result is a "(void __iomem *)". If you
> assign it to something that is "unsigned long", you _should_ get a
> warning.

Code is correct, as far as this specific mapping driver is concerned.
But it would make some sense to convert one of the map_priv_[12] in
struct map_info to (void __iomem *).

J?rn

--
It does not matter how slowly you go, so long as you do not stop.
-- Confucius

2005-09-29 23:18:03

by Jörn Engel

[permalink] [raw]
Subject: Re: [PATCH] Fix IXP4xx MTD driver no cast warning

On Thu, 29 September 2005 14:20:55 -0700, Deepak Saxena wrote:
> On Sep 29 2005, at 21:52, Russell King was caught saying:
> > On Thu, Sep 29, 2005 at 12:52:05PM -0700, Deepak Saxena wrote:
> > > Fix following warning:
> > >
> > > drivers/mtd/maps/ixp4xx.c: In function 'ixp4xx_flash_probe':
> > > drivers/mtd/maps/ixp4xx.c:199: warning: assignment makes integer from
> > > pointer without a cast
> > >
> > > Signed-off-by: Deepak Saxena <[email protected]>
> > >
> > > diff --git a/drivers/mtd/maps/ixp4xx.c b/drivers/mtd/maps/ixp4xx.c
> > > --- a/drivers/mtd/maps/ixp4xx.c
> > > +++ b/drivers/mtd/maps/ixp4xx.c
> > > @@ -196,7 +196,7 @@ static int ixp4xx_flash_probe(struct dev
> > > goto Error;
> > > }
> > >
> > > - info->map.map_priv_1 = ioremap(dev->resource->start,
> > > + info->map.map_priv_1 = (unsigned long)ioremap(dev->resource->start,
> >
> > Shouldn't this be using info->map.virt instead of the old map.map_priv_1 ?
>
> I think when I wrote this, having a !0 value in map->virt would cause the mtd
> core to assume that the map driver supported point()ing and direct copy
> of data. Looking at the mtd code it looks like this assumption might
> have gone away...will change code.

A check on this field is still used in cfi_intelext_point(), but you
can disable the point stuff by setting map->phys to NO_XIP - as you
already do.

J?rn

--
All art is but imitation of nature.
-- Lucius Annaeus Seneca