[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v5 3/7] hw/mdio: Generalize phy initialization r
From: |
Alistair Francis |
Subject: |
Re: [Qemu-devel] [PATCH v5 3/7] hw/mdio: Generalize phy initialization routine |
Date: |
Tue, 27 Feb 2018 14:33:17 -0800 |
On Fri, Sep 22, 2017 at 10:13 AM, Philippe Mathieu-Daudé
<address@hidden> wrote:
> From: Grant Likely <address@hidden>
>
> There really isn't anything tdk-specific about tdk_init() other than the
> phy id registers. The function should instead be generalized for any
> phy, at least as far as the ID registers are concerned. For the most
> part the read/write behaviour should be very similar across PHYs.
>
> This patch renames tdk_{read,write,init}() to mdio_phy_*() so it can be
> used for any PHY.
>
> More work definitely needs to be done here to make it easy to override
> the default behaviour for specific PHYs, but this at least is a
> reasonable start.
>
> Signed-off-by: Grant Likely <address@hidden>
> Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
> [PMD: just rebased]
> ---
> include/hw/net/mdio.h | 2 +-
> hw/net/etraxfs_eth.c | 2 +-
> hw/net/mdio.c | 14 +++++++-------
> hw/net/xilinx_axienet.c | 2 +-
> 4 files changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/include/hw/net/mdio.h b/include/hw/net/mdio.h
> index 7ffa4389b9..b3b4f497c0 100644
> --- a/include/hw/net/mdio.h
> +++ b/include/hw/net/mdio.h
> @@ -86,7 +86,7 @@ struct qemu_mdio {
> struct qemu_phy *devs[32];
> };
>
> -void tdk_init(struct qemu_phy *phy);
> +void mdio_phy_init(struct qemu_phy *phy, uint16_t id1, uint16_t id2);
> void mdio_attach(struct qemu_mdio *bus, struct qemu_phy *phy,
> unsigned int addr);
> uint16_t mdio_read_req(struct qemu_mdio *bus, uint8_t addr, uint8_t req);
> diff --git a/hw/net/etraxfs_eth.c b/hw/net/etraxfs_eth.c
> index f8d8f8441d..4c5415771f 100644
> --- a/hw/net/etraxfs_eth.c
> +++ b/hw/net/etraxfs_eth.c
> @@ -333,7 +333,7 @@ static int fs_eth_init(SysBusDevice *sbd)
> qemu_format_nic_info_str(qemu_get_queue(s->nic), s->conf.macaddr.a);
>
>
> - tdk_init(&s->phy);
> + mdio_phy_init(&s->phy, 0x0300, 0xe400);
> mdio_attach(&s->mdio_bus, &s->phy, s->phyaddr);
> return 0;
> }
> diff --git a/hw/net/mdio.c b/hw/net/mdio.c
> index 3d70d99077..33bfbb4623 100644
> --- a/hw/net/mdio.c
> +++ b/hw/net/mdio.c
> @@ -43,7 +43,7 @@
> * linux driver (PHYID and Diagnostics reg).
> * TODO: Add friendly names for the register nums.
> */
> -static unsigned int tdk_read(struct qemu_phy *phy, unsigned int req)
> +static unsigned int mdio_phy_read(struct qemu_phy *phy, unsigned int req)
> {
> int regnum;
> unsigned r = 0;
> @@ -107,7 +107,7 @@ static unsigned int tdk_read(struct qemu_phy *phy,
> unsigned int req)
> return r;
> }
>
> -static void tdk_write(struct qemu_phy *phy, unsigned int req, unsigned int
> data)
> +static void mdio_phy_write(struct qemu_phy *phy, unsigned int req, unsigned
> int data)
> {
> int regnum;
>
> @@ -120,18 +120,18 @@ static void tdk_write(struct qemu_phy *phy, unsigned
> int req, unsigned int data)
> }
> }
>
> -void tdk_init(struct qemu_phy *phy)
> +void mdio_phy_init(struct qemu_phy *phy, uint16_t id1, uint16_t id2)
> {
> phy->regs[PHY_CTRL] = 0x3100;
> /* PHY Id. */
> - phy->regs[PHY_ID1] = 0x0300;
> - phy->regs[PHY_ID2] = 0xe400;
> + phy->regs[PHY_ID1] = id1;
> + phy->regs[PHY_ID2] = id2;
These should be set by QEMU properties instead of values to the init() function.
Alistair
> /* Autonegotiation advertisement reg. */
> phy->regs[PHY_AUTONEG_ADV] = 0x01e1;
> phy->link = 1;
>
> - phy->read = tdk_read;
> - phy->write = tdk_write;
> + phy->read = mdio_phy_read;
> + phy->write = mdio_phy_write;
> }
>
> void mdio_attach(struct qemu_mdio *bus, struct qemu_phy *phy, unsigned int
> addr)
> diff --git a/hw/net/xilinx_axienet.c b/hw/net/xilinx_axienet.c
> index 1e859fdaae..408cd6e675 100644
> --- a/hw/net/xilinx_axienet.c
> +++ b/hw/net/xilinx_axienet.c
> @@ -791,7 +791,7 @@ static void xilinx_enet_realize(DeviceState *dev, Error
> **errp)
> object_get_typename(OBJECT(dev)), dev->id, s);
> qemu_format_nic_info_str(qemu_get_queue(s->nic), s->conf.macaddr.a);
>
> - tdk_init(&s->TEMAC.phy);
> + mdio_phy_init(&s->TEMAC.phy, 0x0300, 0xe400);
> mdio_attach(&s->TEMAC.mdio_bus, &s->TEMAC.phy, s->c_phyaddr);
>
> s->TEMAC.parent = s;
> --
> 2.14.1
>
>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [PATCH v5 3/7] hw/mdio: Generalize phy initialization routine,
Alistair Francis <=