| /* SPDX-License-Identifier: GPL-2.0+ */ |
| /* |
| * Copyright (C) 2026 Airoha Technology Corp. |
| * Copyright (C) 2026 Collabora Ltd. |
| * Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com> |
| */ |
| |
| #ifndef __AIR_PHY_LIB_H |
| #define __AIR_PHY_LIB_H |
| |
| #include <linux/phy.h> |
| |
| #define AIR_EXT_PAGE_ACCESS 0x1f |
| |
| #define AIR_PHY_PAGE_STANDARD 0x0000 |
| #define AIR_PHY_PAGE_EXTENDED_1 0x0001 |
| #define AIR_PHY_PAGE_EXTENDED_4 0x0004 |
| |
| /* MII Registers Page 4*/ |
| #define AIR_BPBUS_MODE 0x10 |
| #define AIR_BPBUS_MODE_ADDR_FIXED 0x0000 |
| #define AIR_BPBUS_MODE_ADDR_INCR BIT(15) |
| #define AIR_BPBUS_WR_ADDR_HIGH 0x11 |
| #define AIR_BPBUS_WR_ADDR_LOW 0x12 |
| #define AIR_BPBUS_WR_DATA_HIGH 0x13 |
| #define AIR_BPBUS_WR_DATA_LOW 0x14 |
| #define AIR_BPBUS_RD_ADDR_HIGH 0x15 |
| #define AIR_BPBUS_RD_ADDR_LOW 0x16 |
| #define AIR_BPBUS_RD_DATA_HIGH 0x17 |
| #define AIR_BPBUS_RD_DATA_LOW 0x18 |
| |
| int air_phy_buckpbus_reg_modify(struct phy_device *phydev, u32 pbus_address, |
| u32 mask, u32 set); |
| int air_phy_buckpbus_reg_read(struct phy_device *phydev, u32 pbus_address, |
| u32 *pbus_data); |
| int air_phy_buckpbus_reg_write(struct phy_device *phydev, u32 pbus_address, |
| u32 pbus_data); |
| int air_phy_read_page(struct phy_device *phydev); |
| int air_phy_write_page(struct phy_device *phydev, int page); |
| |
| #endif /* __AIR_PHY_LIB_H */ |