netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Grant Likely <grant.likely@secretlab.ca>
To: akpm@linux-foundation.org
Cc: davem@davemloft.net, netdev@vger.kernel.org, jtyner@cs.ucr.edu,
	afleming@freescale.com, John Linn <John.Linn@xilinx.com>
Subject: Re: [patch 3/5] LL TEMAC driver: add non-Virtex 5 support
Date: Thu, 11 Mar 2010 15:10:45 -0700	[thread overview]
Message-ID: <fa686aa41003111410v41e5fe23x3685bf71339d5209@mail.gmail.com> (raw)
In-Reply-To: <201003112207.o2BM7qhv013492@imap1.linux-foundation.org>

On Thu, Mar 11, 2010 at 3:07 PM,  <akpm@linux-foundation.org> wrote:
> From: John Tyner <jtyner@cs.ucr.edu>
>
> Add support for using the LL TEMAC Ethernet driver on non-Virtex 5
> platforms by adding support for accessing the Soft DMA registers as if
> they were memory mapped instead of solely through the DCR's (available on
> the Virtex 5).

Thanks Andrew.  Changes were requested on this one, but IIRC John
Tyner doesn't have any bandwidth to work on it.  John Linn from Xilinx
has adopted the patch and is fixing it up.

g.

>
> Signed-off-by: John Tyner <jtyner@cs.ucr.edu>
> Cc: Andy Fleming <afleming@freescale.com>
> Cc: Grant Likely <grant.likely@secretlab.ca>
> Cc: David S. Miller <davem@davemloft.net>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
> ---
>
>  drivers/net/ll_temac.h      |    1 +
>  drivers/net/ll_temac_main.c |   31 ++++++++++++++++++++-----------
>  2 files changed, 21 insertions(+), 11 deletions(-)
>
> diff -puN drivers/net/ll_temac.h~ll-temac-driver-add-non-virtex-5-support drivers/net/ll_temac.h
> --- a/drivers/net/ll_temac.h~ll-temac-driver-add-non-virtex-5-support
> +++ a/drivers/net/ll_temac.h
> @@ -338,6 +338,7 @@ struct temac_local {
>        /* IO registers and IRQs */
>        void __iomem *regs;
>        dcr_host_t sdma_dcrs;
> +       u32 __iomem *sdma_regs;
>        int tx_irq;
>        int rx_irq;
>        int emac_num;
> diff -puN drivers/net/ll_temac_main.c~ll-temac-driver-add-non-virtex-5-support drivers/net/ll_temac_main.c
> --- a/drivers/net/ll_temac_main.c~ll-temac-driver-add-non-virtex-5-support
> +++ a/drivers/net/ll_temac_main.c
> @@ -20,9 +20,6 @@
>  *   or rx, so this should be okay.
>  *
>  * TODO:
> - * - Fix driver to work on more than just Virtex5.  Right now the driver
> - *   assumes that the locallink DMA registers are accessed via DCR
> - *   instructions.
>  * - Factor out locallink DMA code into separate driver
>  * - Fix multicast assignment.
>  * - Fix support for hardware checksumming.
> @@ -117,12 +114,20 @@ void temac_indirect_out32(struct temac_l
>
>  static u32 temac_dma_in32(struct temac_local *lp, int reg)
>  {
> -       return dcr_read(lp->sdma_dcrs, reg);
> +       if (lp->sdma_regs) {
> +               return __raw_readl(lp->sdma_regs + reg);
> +       } else {
> +               return dcr_read(lp->sdma_dcrs, reg);
> +       }
>  }
>
>  static void temac_dma_out32(struct temac_local *lp, int reg, u32 value)
>  {
> -       dcr_write(lp->sdma_dcrs, reg, value);
> +       if (lp->sdma_regs) {
> +               __raw_writel(value, lp->sdma_regs + reg);
> +       } else {
> +               dcr_write(lp->sdma_dcrs, reg, value);
> +       }
>  }
>
>  /**
> @@ -870,13 +875,17 @@ temac_of_probe(struct of_device *op, con
>                goto nodev;
>        }
>
> -       dcrs = dcr_resource_start(np, 0);
> -       if (dcrs == 0) {
> -               dev_err(&op->dev, "could not get DMA register address\n");
> +       lp->sdma_regs = NULL;
> +
> +       if ((dcrs = dcr_resource_start(np, 0)) != 0) {
> +               lp->sdma_dcrs = dcr_map(np, dcrs, dcr_resource_len(np, 0));
> +               dev_dbg(&op->dev, "DCR base: %x\n", dcrs);
> +       } else if ((lp->sdma_regs = of_iomap(np, 0))) {
> +               dev_dbg(&op->dev, "MEM base: %p\n", lp->sdma_regs);
> +       } else {
> +               dev_err(&op->dev, "unable to map DMA registers\n");
>                goto nodev;
>        }
> -       lp->sdma_dcrs = dcr_map(np, dcrs, dcr_resource_len(np, 0));
> -       dev_dbg(&op->dev, "DCR base: %x\n", dcrs);
>
>        lp->rx_irq = irq_of_parse_and_map(np, 0);
>        lp->tx_irq = irq_of_parse_and_map(np, 1);
> @@ -903,7 +912,7 @@ temac_of_probe(struct of_device *op, con
>
>        lp->phy_node = of_parse_phandle(op->node, "phy-handle", 0);
>        if (lp->phy_node)
> -               dev_dbg(lp->dev, "using PHY node %s (%p)\n", np->full_name, np);
> +               dev_dbg(lp->dev, "using PHY node %s (%p)\n", lp->phy_node->full_name, lp->phy_node);
>
>        /* Add the device attributes */
>        rc = sysfs_create_group(&lp->dev->kobj, &temac_attr_group);
> _
>



-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.

  reply	other threads:[~2010-03-11 22:11 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-11 22:07 [patch 3/5] LL TEMAC driver: add non-Virtex 5 support akpm
2010-03-11 22:10 ` Grant Likely [this message]
2010-03-15 23:05 ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fa686aa41003111410v41e5fe23x3685bf71339d5209@mail.gmail.com \
    --to=grant.likely@secretlab.ca \
    --cc=John.Linn@xilinx.com \
    --cc=afleming@freescale.com \
    --cc=akpm@linux-foundation.org \
    --cc=davem@davemloft.net \
    --cc=jtyner@cs.ucr.edu \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).