[PATCH] [MTD] physmap: Add support for 64 bit resources on PPC44x

Stefan Roese ml at stefan-roese.de
Thu Jan 18 12:46:03 EST 2007


Hi Sergei,

On Thursday 18 January 2007 18:24, Sergei Shtylyov wrote:
> > This patch adds support for 64 bit resources and can be used on
> > PPC440 platforms to pass the complete 64 bit address from the
> > platform file to the physmap driver. This is first used on the
> > AMCC Taishan 440GX evaluation board.
>
>     Is this board support in arch/ppc/ or arch/powerpc/?

Not yet in the kernel.org repository. It's right now in the denx repository 
but I plan to sent the board support patches to the lists, even if I know, 
that it most likely won't get included right now, because of the ppc->powerpc 
merge.

And yes, it's still an "arch->ppc" port.

> > Signed-off-by: Stefan Roese <sr at denx.de>
> >
> > ---
> > commit 428858620a600f991662969be6d6b3e3720da1ac
> > tree cf3c861fbdddd841401a1e66f441623f0b3fb83c
> > parent d637c5644df789f15dfe06550fab1dddb87083ca
> > author Stefan Roese <sr at denx.de> Thu, 18 Jan 2007 14:40:53 +0100
> > committer Stefan Roese <sr at denx.de> Thu, 18 Jan 2007 14:40:53 +0100
> >
> >  drivers/mtd/maps/physmap.c |    7 +++++++
> >  1 files changed, 7 insertions(+), 0 deletions(-)
> >
> > diff --git a/drivers/mtd/maps/physmap.c b/drivers/mtd/maps/physmap.c
> > index d171776..23072e3 100644
> > --- a/drivers/mtd/maps/physmap.c
> > +++ b/drivers/mtd/maps/physmap.c
> > @@ -116,7 +116,14 @@ static int physmap_flash_probe(struct
> > platform_device *dev)
>
>     And what do you assign to info->map.phys, a meaninglessly truncated
> 64-bit address?
>     I think that 'phys' field's type should be changed to a more
> appropriate one, like resource_size_t, instead...

Yes, this makes sense.

> >  	info->map.bankwidth = physmap_data->width;
> >  	info->map.set_vpp = physmap_data->set_vpp;
> >
> > +#ifdef CONFIG_44x
>
>     Don't think we need this #ifdef at all.
>
> > +	if (sizeof(dev->resource->start) == 4)
> > +		info->map.virt = ioremap(info->map.phys, info->map.size);
>
>     This line is meaningless duplication of the existing one (below #else).
>
> > +	else
> > +		info->map.virt = ioremap64(dev->resource->start, info->map.size);
>
>     I see -- this is arch/ppc/... :-)
>     Wait, ioremap() takes phys_addr_t which should be 64-bit in your case.
> Is there the need to call ioremap64()?

Yes, but ioremap() first call fixup_bigphys_addr() and this unfortunately 
corrupts my addresses.

I know this patch is far from perfect, so any suggestions are very welcome.

Thanks.

Best regards,
Stefan




More information about the linux-mtd mailing list