1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * Copyright (C) 2026 Airoha Technology Corp. 4 * Copyright (C) 2026 Collabora Ltd. 5 * Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com> 6 */ 7 8 #ifndef __AIR_PHY_LIB_H 9 #define __AIR_PHY_LIB_H 10 11 #include <linux/phy.h> 12 13 #define AIR_PHY_PAGE_STANDARD 0x0000 14 #define AIR_PHY_PAGE_EXTENDED_1 0x0001 15 #define AIR_PHY_PAGE_EXTENDED_4 0x0004 16 17 /* MII Registers Page 4*/ 18 #define AIR_BPBUS_MODE 0x10 19 #define AIR_BPBUS_MODE_ADDR_FIXED 0x0000 20 #define AIR_BPBUS_MODE_ADDR_INCR BIT(15) 21 #define AIR_BPBUS_WR_ADDR_HIGH 0x11 22 #define AIR_BPBUS_WR_ADDR_LOW 0x12 23 #define AIR_BPBUS_WR_DATA_HIGH 0x13 24 #define AIR_BPBUS_WR_DATA_LOW 0x14 25 #define AIR_BPBUS_RD_ADDR_HIGH 0x15 26 #define AIR_BPBUS_RD_ADDR_LOW 0x16 27 #define AIR_BPBUS_RD_DATA_HIGH 0x17 28 #define AIR_BPBUS_RD_DATA_LOW 0x18 29 30 int air_phy_buckpbus_reg_modify(struct phy_device *phydev, u32 pbus_address, 31 u32 mask, u32 set); 32 int air_phy_buckpbus_reg_read(struct phy_device *phydev, u32 pbus_address, 33 u32 *pbus_data); 34 int air_phy_buckpbus_reg_write(struct phy_device *phydev, u32 pbus_address, 35 u32 pbus_data); 36 int air_phy_read_page(struct phy_device *phydev); 37 int air_phy_write_page(struct phy_device *phydev, int page); 38 39 #endif /* __AIR_PHY_LIB_H */ 40