From: Sascha Hauer <s.hauer@pengutronix.de>
To: Lucas Stach <l.stach@pengutronix.de>
Cc: barebox@lists.infradead.org
Subject: Re: [PATCH v2 1/2] net/phy: add driver for atheros PHYs
Date: Tue, 3 Dec 2013 11:36:29 +0100 [thread overview]
Message-ID: <20131203103629.GJ24559@pengutronix.de> (raw)
In-Reply-To: <1386008480-10368-1-git-send-email-l.stach@pengutronix.de>
On Mon, Dec 02, 2013 at 07:21:19PM +0100, Lucas Stach wrote:
> Based on Linux kernel 3.12 driver.
>
> Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Fixed some whitespaces and applied both
Sascha
> ---
> drivers/net/phy/Kconfig | 5 ++
> drivers/net/phy/Makefile | 1 +
> drivers/net/phy/at803x.c | 121 +++++++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 127 insertions(+)
> create mode 100644 drivers/net/phy/at803x.c
>
> diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
> index b6ac9ee75076..83966f997f27 100644
> --- a/drivers/net/phy/Kconfig
> +++ b/drivers/net/phy/Kconfig
> @@ -8,6 +8,11 @@ if PHYLIB
>
> comment "MII PHY device drivers"
>
> +config AT803X_PHY
> + bool "Driver for Atheros AT803X PHYs"
> + ---help---
> + Currently supports the AT8030, AT8031 and AT8035 PHYs.
> +
> config MICREL_PHY
> bool "Driver for Micrel PHYs"
> ---help---
> diff --git a/drivers/net/phy/Makefile b/drivers/net/phy/Makefile
> index 5f8191d8a7f5..47e2b423319f 100644
> --- a/drivers/net/phy/Makefile
> +++ b/drivers/net/phy/Makefile
> @@ -1,3 +1,4 @@
> obj-y += phy.o mdio_bus.o
> +obj-$(CONFIG_AT803X_PHY) += at803x.o
> obj-$(CONFIG_MICREL_PHY) += micrel.o
> obj-$(CONFIG_SMSC_PHY) += smsc.o
> diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
> new file mode 100644
> index 000000000000..a244c87cbafa
> --- /dev/null
> +++ b/drivers/net/phy/at803x.c
> @@ -0,0 +1,121 @@
> +/*
> + * drivers/net/phy/at803x.c
> + *
> + * Driver for Atheros 803x PHY
> + *
> + * Author: Matus Ujhelyi <ujhelyi.m@gmail.com>
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License as published by the
> + * Free Software Foundation; either version 2 of the License, or (at your
> + * option) any later version.
> + */
> +
> +#include <common.h>
> +#include <init.h>
> +#include <linux/phy.h>
> +#include <linux/string.h>
> +
> +#define AT803X_INTR_ENABLE 0x12
> +#define AT803X_INTR_STATUS 0x13
> +#define AT803X_WOL_ENABLE 0x01
> +#define AT803X_DEVICE_ADDR 0x03
> +#define AT803X_LOC_MAC_ADDR_0_15_OFFSET 0x804C
> +#define AT803X_LOC_MAC_ADDR_16_31_OFFSET 0x804B
> +#define AT803X_LOC_MAC_ADDR_32_47_OFFSET 0x804A
> +#define AT803X_MMD_ACCESS_CONTROL 0x0D
> +#define AT803X_MMD_ACCESS_CONTROL_DATA 0x0E
> +#define AT803X_FUNC_DATA 0x4003
> +#define AT803X_DEBUG_ADDR 0x1D
> +#define AT803X_DEBUG_DATA 0x1E
> +#define AT803X_DEBUG_SYSTEM_MODE_CTRL 0x05
> +#define AT803X_DEBUG_RGMII_TX_CLK_DLY (1 << 8)
> +
> +static int at803x_config_init(struct phy_device *phydev)
> +{
> + int val;
> + int ret;
> + u32 features;
> +
> + features = SUPPORTED_TP | SUPPORTED_MII | SUPPORTED_AUI |
> + SUPPORTED_FIBRE | SUPPORTED_BNC;
> +
> + val = phy_read(phydev, MII_BMSR);
> + if (val < 0)
> + return val;
> +
> + if (val & BMSR_ANEGCAPABLE)
> + features |= SUPPORTED_Autoneg;
> + if (val & BMSR_100FULL)
> + features |= SUPPORTED_100baseT_Full;
> + if (val & BMSR_100HALF)
> + features |= SUPPORTED_100baseT_Half;
> + if (val & BMSR_10FULL)
> + features |= SUPPORTED_10baseT_Full;
> + if (val & BMSR_10HALF)
> + features |= SUPPORTED_10baseT_Half;
> +
> + if (val & BMSR_ESTATEN) {
> + val = phy_read(phydev, MII_ESTATUS);
> + if (val < 0)
> + return val;
> +
> + if (val & ESTATUS_1000_TFULL)
> + features |= SUPPORTED_1000baseT_Full;
> + if (val & ESTATUS_1000_THALF)
> + features |= SUPPORTED_1000baseT_Half;
> + }
> +
> + phydev->supported = features;
> + phydev->advertising = features;
> +
> + if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) {
> + ret = phy_write(phydev, AT803X_DEBUG_ADDR,
> + AT803X_DEBUG_SYSTEM_MODE_CTRL);
> + if (ret)
> + return ret;
> + ret = phy_write(phydev, AT803X_DEBUG_DATA,
> + AT803X_DEBUG_RGMII_TX_CLK_DLY);
> + if (ret)
> + return ret;
> + }
> +
> + return 0;
> +}
> +
> +static struct phy_driver at803x_driver[] = {
> +{
> + /* ATHEROS 8035 */
> + .phy_id = 0x004dd072,
> + .phy_id_mask = 0xffffffef,
> + .drv.name = "Atheros 8035 ethernet",
> + .config_init = at803x_config_init,
> + .features = PHY_GBIT_FEATURES,
> + .config_aneg = &genphy_config_aneg,
> + .read_status = &genphy_read_status,
> +}, {
> + /* ATHEROS 8030 */
> + .phy_id = 0x004dd076,
> + .phy_id_mask = 0xffffffef,
> + .drv.name = "Atheros 8030 ethernet",
> + .config_init = at803x_config_init,
> + .features = PHY_GBIT_FEATURES,
> + .config_aneg = &genphy_config_aneg,
> + .read_status = &genphy_read_status,
> +}, {
> + /* ATHEROS 8031 */
> + .phy_id = 0x004dd074,
> + .phy_id_mask = 0xffffffef,
> + .drv.name = "Atheros 8031 ethernet",
> + .config_init = at803x_config_init,
> + .features = PHY_GBIT_FEATURES,
> + .config_aneg = &genphy_config_aneg,
> + .read_status = &genphy_read_status,
> +} };
> +
> +static int atheros_phy_init(void)
> +{
> + return phy_drivers_register(at803x_driver,
> + ARRAY_SIZE(at803x_driver));
> +}
> +fs_initcall(atheros_phy_init);
> --
> 1.8.4.3
>
>
> _______________________________________________
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
>
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
prev parent reply other threads:[~2013-12-03 10:36 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-02 18:21 Lucas Stach
2013-12-02 18:21 ` [PATCH v2 2/2] ARM: i.MX6: add initial support for SolidRun Cubox-i Carrier-1 Lucas Stach
2013-12-03 10:36 ` Sascha Hauer [this message]
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=20131203103629.GJ24559@pengutronix.de \
--to=s.hauer@pengutronix.de \
--cc=barebox@lists.infradead.org \
--cc=l.stach@pengutronix.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox