From: Marek Vasut <marex@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] net: Add ag7xxx driver for Atheros MIPS
Date: Sun, 08 May 2016 17:22:09 +0200 [thread overview]
Message-ID: <572F59A1.4030108@denx.de> (raw)
In-Reply-To: <572F37DE.1060403@gmail.com>
On 05/08/2016 02:58 PM, Daniel Schwierzeck wrote:
Hi!
> Am 05.05.2016 um 21:34 schrieb Marek Vasut:
>> Add ethernet driver for the AR933x and AR934x Atheros MIPS machines.
>> The driver could be easily extended to other WiSoCs.
>>
>> Signed-off-by: Marek Vasut <marex@denx.de>
>> Cc: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
>> Cc: Joe Hershberger <joe.hershberger@ni.com>
>> Cc: Wills Wang <wills.wang@live.com>
>> ---
>> drivers/net/Kconfig | 9 +
>> drivers/net/Makefile | 1 +
>> drivers/net/ag7xxx.c | 982 +++++++++++++++++++++++++++++++++++++++++++++++++++
>> 3 files changed, 992 insertions(+)
>> create mode 100644 drivers/net/ag7xxx.c
>
> Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
>
> nits below
[...]
>> +static void ag7xxx_hw_setup(struct udevice *dev)
>> +{
>> + struct ar7xxx_eth_priv *priv = dev_get_priv(dev);
>> + u32 speed;
>> +
>> + setbits_be32(priv->regs + AG7XXX_ETH_CFG1,
>> + AG7XXX_ETH_CFG1_RX_RST | AG7XXX_ETH_CFG1_TX_RST |
>> + AG7XXX_ETH_CFG1_SOFT_RST);
>
> explicitely using the BE variant is inconsistent because everywhere else
> your are using writel/readl.
This is a BE platform, so I have to use setbits_be*() . I was under the
impression that writel()/readl() are endianness agnostic now, so it's OK
to use those, no ?
> You can also use setbits_32() etc. to avoid
> forcing the endianess. Though it doesn't matter for the generated code
> unless you enable CONFIG_SWAP_IO_SPACE.
Ha, I didn't know we now have endianness-agnostic setbits_*(), nice.
>> +
>> + mdelay(10);
>> +
>> + writel(AG7XXX_ETH_CFG1_RX_EN | AG7XXX_ETH_CFG1_TX_EN,
>> + priv->regs + AG7XXX_ETH_CFG1);
>> +
>> + if (priv->interface == PHY_INTERFACE_MODE_RMII)
>> + speed = AG7XXX_ETH_CFG2_IF_10_100;
>> + else
>> + speed = AG7XXX_ETH_CFG2_IF_1000;
>> +
>> + clrsetbits_be32(priv->regs + AG7XXX_ETH_CFG2,
>> + AG7XXX_ETH_CFG2_IF_SPEED_MASK,
>> + speed | AG7XXX_ETH_CFG2_PAD_CRC_EN |
>> + AG7XXX_ETH_CFG2_LEN_CHECK);
>> +
>> + writel(0xfff0000, priv->regs + AG7XXX_ETH_FIFO_CFG_1);
>> + writel(0x1fff, priv->regs + AG7XXX_ETH_FIFO_CFG_2);
>> +
>> + writel(0x1f00, priv->regs + AG7XXX_ETH_FIFO_CFG_0);
>> + setbits_be32(priv->regs + AG7XXX_ETH_FIFO_CFG_4, 0x3ffff);
>> + writel(0x10ffff, priv->regs + AG7XXX_ETH_FIFO_CFG_1);
>> + writel(0xaaa0555, priv->regs + AG7XXX_ETH_FIFO_CFG_2);
>> + writel(0x7eccf, priv->regs + AG7XXX_ETH_FIFO_CFG_5);
>> + writel(0x1f00140, priv->regs + AG7XXX_ETH_FIFO_CFG_3);
>> +}
[...]
>> +static int ag7xxx_mdio_probe(struct udevice *dev)
>> +{
>> + struct ar7xxx_eth_priv *priv = dev_get_priv(dev);
>> + struct mii_dev *bus = mdio_alloc();
>> +
>> + if (!bus) {
>> + printf("Failed to allocate MDIO bus\n");
>
> isn't debug() better?
I think I will remove the printf() altogether, we ran out of memory, so
we're doomed anyway.
>> + return -ENOMEM;
>> + }
>> +
>> + bus->read = ag7xxx_mdio_read;
>> + bus->write = ag7xxx_mdio_write;
>> + snprintf(bus->name, sizeof(bus->name), dev->name);
>> +
>> + bus->priv = (void *)priv;
>> +
>> + return mdio_register(bus);
>> +}
[...]
Best regards,
Marek Vasut
next prev parent reply other threads:[~2016-05-08 15:22 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-05 19:34 [U-Boot] [PATCH] net: Add ag7xxx driver for Atheros MIPS Marek Vasut
2016-05-08 12:58 ` Daniel Schwierzeck
2016-05-08 15:22 ` Marek Vasut [this message]
2016-05-20 4:18 ` Wills Wang
2016-05-20 11:59 ` Marek Vasut
2016-05-20 16:43 ` Wills Wang
2016-05-20 17:08 ` Marek Vasut
2016-05-21 3:25 ` Wills Wang
2016-05-21 9:29 ` Marek Vasut
2016-05-24 15:15 ` Joe Hershberger
2016-05-24 15:17 ` Marek Vasut
2016-05-24 15:22 ` Marek Vasut
2016-05-21 11:03 ` Wills Wang
2016-05-21 11:37 ` Marek Vasut
2016-05-08 21:25 ` Amit Tomer
2016-05-08 22:09 ` Marek Vasut
-- strict thread matches above, loose matches on Subject: below --
2016-05-24 21:29 Marek Vasut
2016-05-30 10:05 ` Daniel Schwierzeck
2017-06-08 15:04 ` Joe Hershberger
2017-06-09 9:02 ` Marek Vasut
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=572F59A1.4030108@denx.de \
--to=marex@denx.de \
--cc=u-boot@lists.denx.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.