1dddfadd7SLouis-Alexis Eyraud /* SPDX-License-Identifier: GPL-2.0+ */ 2dddfadd7SLouis-Alexis Eyraud /* 3dddfadd7SLouis-Alexis Eyraud * Copyright (C) 2026 Airoha Technology Corp. 4dddfadd7SLouis-Alexis Eyraud * Copyright (C) 2026 Collabora Ltd. 5dddfadd7SLouis-Alexis Eyraud * Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com> 6dddfadd7SLouis-Alexis Eyraud */ 7dddfadd7SLouis-Alexis Eyraud 8dddfadd7SLouis-Alexis Eyraud #ifndef __AIR_PHY_LIB_H 9dddfadd7SLouis-Alexis Eyraud #define __AIR_PHY_LIB_H 10dddfadd7SLouis-Alexis Eyraud 11dddfadd7SLouis-Alexis Eyraud #include <linux/phy.h> 12dddfadd7SLouis-Alexis Eyraud 13*d44646fcSJakub Kicinski #define AIR_EXT_PAGE_ACCESS 0x1f 14*d44646fcSJakub Kicinski 155226bb66SLouis-Alexis Eyraud #define AIR_PHY_PAGE_STANDARD 0x0000 165226bb66SLouis-Alexis Eyraud #define AIR_PHY_PAGE_EXTENDED_1 0x0001 175226bb66SLouis-Alexis Eyraud #define AIR_PHY_PAGE_EXTENDED_4 0x0004 185226bb66SLouis-Alexis Eyraud 195226bb66SLouis-Alexis Eyraud /* MII Registers Page 4*/ 205226bb66SLouis-Alexis Eyraud #define AIR_BPBUS_MODE 0x10 215226bb66SLouis-Alexis Eyraud #define AIR_BPBUS_MODE_ADDR_FIXED 0x0000 225226bb66SLouis-Alexis Eyraud #define AIR_BPBUS_MODE_ADDR_INCR BIT(15) 235226bb66SLouis-Alexis Eyraud #define AIR_BPBUS_WR_ADDR_HIGH 0x11 245226bb66SLouis-Alexis Eyraud #define AIR_BPBUS_WR_ADDR_LOW 0x12 255226bb66SLouis-Alexis Eyraud #define AIR_BPBUS_WR_DATA_HIGH 0x13 265226bb66SLouis-Alexis Eyraud #define AIR_BPBUS_WR_DATA_LOW 0x14 275226bb66SLouis-Alexis Eyraud #define AIR_BPBUS_RD_ADDR_HIGH 0x15 285226bb66SLouis-Alexis Eyraud #define AIR_BPBUS_RD_ADDR_LOW 0x16 295226bb66SLouis-Alexis Eyraud #define AIR_BPBUS_RD_DATA_HIGH 0x17 305226bb66SLouis-Alexis Eyraud #define AIR_BPBUS_RD_DATA_LOW 0x18 315226bb66SLouis-Alexis Eyraud 32e08f0ea6SLouis-Alexis Eyraud int air_phy_buckpbus_reg_modify(struct phy_device *phydev, u32 pbus_address, 335226bb66SLouis-Alexis Eyraud u32 mask, u32 set); 34e08f0ea6SLouis-Alexis Eyraud int air_phy_buckpbus_reg_read(struct phy_device *phydev, u32 pbus_address, 355226bb66SLouis-Alexis Eyraud u32 *pbus_data); 36e08f0ea6SLouis-Alexis Eyraud int air_phy_buckpbus_reg_write(struct phy_device *phydev, u32 pbus_address, 375226bb66SLouis-Alexis Eyraud u32 pbus_data); 38dddfadd7SLouis-Alexis Eyraud int air_phy_read_page(struct phy_device *phydev); 39dddfadd7SLouis-Alexis Eyraud int air_phy_write_page(struct phy_device *phydev, int page); 40dddfadd7SLouis-Alexis Eyraud 41dddfadd7SLouis-Alexis Eyraud #endif /* __AIR_PHY_LIB_H */ 42