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

Sergei Shtylyov sshtylyov at ru.mvista.com
Thu Jan 18 12:24:17 EST 2007


Hello.

Stefan Roese wrote:
> [PATCH] [MTD] physmap: Add support for 64 bit resources on PPC44x

> 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/?

> 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...

>  	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()?

> +#else
>  	info->map.virt = ioremap(info->map.phys, info->map.size);
> +#endif
>  	if (info->map.virt == NULL) {
>  		dev_err(&dev->dev, "Failed to ioremap flash region\n");
>  		err = EIO;

WBR, Sergei




More information about the linux-mtd mailing list