[PATCH] board: gateworks venice: add support for GPY111 phy
Peng Fan
peng.fan at nxp.com
Wed Mar 9 02:10:11 CET 2022
> Subject: [PATCH] board: gateworks venice: add support for GPY111 phy
>
> The TI DP83867 phy has been replaced with the MaxLinear GPY111 phy due
> to part availability.
>
> Add support for it by adding LED config and dt-prop based internal delay config
> tx-delay/rx-delay per PHY ID.
>
> Signed-off-by: Tim Harvey <tharvey at gateworks.com>
Acked-by: Peng Fan <peng.fan at nxp.com>
> ---
> board/gateworks/venice/venice.c | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/board/gateworks/venice/venice.c
> b/board/gateworks/venice/venice.c index 5334500ef6a7..425c69056da5
> 100644
> --- a/board/gateworks/venice/venice.c
> +++ b/board/gateworks/venice/venice.c
> @@ -63,6 +63,7 @@ static int setup_fec(void) int board_phy_config(struct
> phy_device *phydev) {
> unsigned short val;
> + ofnode node;
>
> switch (phydev->phy_id) {
> case 0x2000a231: /* TI DP83867 GbE PHY */ @@ -73,6 +74,21 @@ int
> board_phy_config(struct phy_device *phydev)
> val |= 0xb << 8; /* LED2(Green;Link/Act): blink for TX/RX act */
> phy_write(phydev, MDIO_DEVAD_NONE, 24, val);
> break;
> + case 0xd565a401: /* MaxLinear GPY111 */
> + puts("GPY111 ");
> + node = phy_get_ofnode(phydev);
> + if (ofnode_valid(node)) {
> + u32 rx_delay, tx_delay;
> +
> + rx_delay = ofnode_read_u32_default(node,
> "rx-internal-delay-ps", 2000);
> + tx_delay = ofnode_read_u32_default(node,
> "tx-internal-delay-ps", 2000);
> + val = phy_read(phydev, MDIO_DEVAD_NONE, 0x17);
> + val &= ~((0x7 << 12) | (0x7 << 8));
> + val |= (rx_delay / 500) << 12;
> + val |= (tx_delay / 500) << 8;
> + phy_write(phydev, MDIO_DEVAD_NONE, 0x17, val);
> + }
> + break;
> }
>
> if (phydev->drv->config)
> --
> 2.17.1
More information about the U-Boot
mailing list