Kevin,

Few comments on the patch.

> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf
> Of Kevin Hilman
> Sent: Friday, January 30, 2009 4:32 AM
> To: [email protected]
> Subject: [PATCH 2/2] NET: davinci emac: convert to using ioremap()
>
> Cc: Chaithrika Subrahmanya <[email protected]>
> Signed-off-by: Kevin Hilman <[email protected]>
> ---
>  drivers/net/davinci_emac.c |   69 +++++++++++++++++++++++++++++++--------
> -----
>  1 files changed, 49 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/net/davinci_emac.c b/drivers/net/davinci_emac.c
> index 1f86256..7431479 100644
> --- a/drivers/net/davinci_emac.c
> +++ b/drivers/net/davinci_emac.c
> @@ -29,9 +29,8 @@
>   */
>
>  /** Pending Items in this driver:
> - * 1. use ioremap(), remove davinci_readl()/etc, minimize __force
> - * 2. Use Linux cache infrastcture for DMA'ed memory (dma_xxx functions)
> - * 3. Add DM646x support (gigabit included)
> + * 1. Use Linux cache infrastcture for DMA'ed memory (dma_xxx functions)
> + * 2. Add DM646x support (gigabit included)

The gigabit support has been added already.

>  */
>
>  #include <linux/module.h>
> @@ -66,6 +65,7 @@
>
>  #include <asm/irq.h>
>  #include <asm/page.h>
> +#include <asm/io.h>
>
>  #include <mach/memory.h>
>  #include <mach/cpu.h>
> @@ -485,8 +485,10 @@ struct emac_priv {
>       char mac_addr[6];
>       spinlock_t tx_lock;
>       spinlock_t rx_lock;
> -     u32 emac_base_regs;
> -     u32 emac_ctrl_regs;
> +     u32 emac_base_phys;
> +     void __iomem *emac_base;
> +     u32 emac_ctrl_phys;
> +     void __iomem *ctrl_base;
>       void __iomem *emac_ctrl_ram;
>       u32 ctrl_ram_size;
>       struct emac_txch *txch[EMAC_DEF_MAX_TX_CH];
> @@ -557,16 +559,15 @@ static char *emac_rxhost_errcodes[16] = {
>  #define EMAC_DEV (&(priv)->ndev->dev)
>
>  /* Helper macros */
> -#define emac_read(reg)               davinci_readl((priv->emac_base_regs +
> (reg)))
> -#define emac_write(reg, val) \
> -     davinci_writel(val, (priv->emac_base_regs + (reg)))
> +#define emac_read(reg)                 ioread32(priv->emac_base + (reg))
> +#define emac_write(reg, val)      iowrite32(val, priv->emac_base + (reg))
>
> -#define emac_ctrl_read(reg)  davinci_readl((priv->emac_ctrl_regs +
> (reg)))
> -#define emac_ctrl_write(reg, val) \
> -     davinci_writel(val, (priv->emac_ctrl_regs + (reg)))
> +#define emac_ctrl_read(reg)    ioread32((priv->ctrl_base + (reg)))
> +#define emac_ctrl_write(reg, val) iowrite32(val, (priv->ctrl_base +
> (reg)))
> +
> +#define emac_mdio_read(reg)    ioread32(bus->priv + (reg))
> +#define emac_mdio_write(reg, val) iowrite32(val, (bus->priv + (reg)))
>
> -#define emac_mdio_read(reg)  davinci_readl((bus->priv + (reg)))
> -#define emac_mdio_write(reg, val)    davinci_writel(val, (bus->priv +
> (reg)))
>  /**
>   * emac_dump_regs: Dump important EMAC registers to debug terminal
>   * @priv: The DaVinci EMAC private adapter structure
> @@ -2644,9 +2645,16 @@ static int __devinit davinci_emac_probe(struct
> platform_device *pdev)
>               rc = -ENOENT;
>               goto probe_quit;
>       }
> -     priv->emac_base_regs = res->start;
> -     ndev->base_addr = (unsigned long)IO_ADDRESS(res->start);
> -     if (!request_mem_region((u32)priv->emac_base_regs,
> +     priv->emac_base_phys = res->start;
> +     priv->emac_base = ioremap(res->start, res->end);

The 'end' members of the resource structure for EMAC has the ending address 
value of module,
therefore in ioremap calls, the size has to be passed in a manner similar to 
request_mem_region.

> +     if (!priv->emac_base) {
> +             dev_err(EMAC_DEV, "Unable to map IO\n");
> +             rc = -ENOMEM;
> +             goto probe_quit;
> +     }
> +     printk("EMAC bas @ 0x%p\n", priv->emac_base);
> +     ndev->base_addr = (unsigned long)priv->emac_base;
> +     if (!request_mem_region(priv->emac_base_phys,
>                               (res->end - res->start + 1),
>                               ndev->name)) {

Thanks,
Chaithrika_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to