#ifndef LIP_PHY_MDIO_REGS_EXPAGE_H
#define LIP_PHY_MDIO_REGS_EXPAGE_H

#include "lip_phy_mdio_reg_types.h"

/* Некоторые PHY имеют механизм доступа к extended регистрам, появившийся до MMD
 * и не описанный в стандарте. Для него запись адреса страницы идет в регистр 31
 * после чего идет уже запись по адресу регистра */
#define LIP_PHY_REGADDR_TYPE_EXPAGE                 3UL
#define LIP_PHY_REGADDR_EXPAGE(page, addr)          LIP_PHY_REGADDR_TYPE(LIP_PHY_REGADDR_TYPE_EXPAGE, (addr) | ((page) << 8))
#define LIP_PHY_REGADDR_IS_EXPAGE(addr)             (LIP_PHY_REGADDR_GET_TYPE(reg) == LIP_PHY_REGADDR_TYPE_EXPAGE)
#define LIP_PHY_REGADDR_GET_EXPAGE_REGADDR(reg)     ((reg) & 0xFF)
#define LIP_PHY_REGADDR_GET_EXPAGE_PAGENUM(reg)     (((reg) >> 8) & 0x0FFF)

#define LIP_PHY_REGADDR_EXPAGE_SELECT               0x1F /* Extended Page Selection Register */

#endif // LIP_PHY_MDIO_REGS_EXPAGE_H
