Add helper function phy_modify_paged_changed, behavios is the same as for phy_modify_changed.
Unified · Split
| @@ -783,24 +783,43 @@ int phy_write_paged(struct phy_device *phydev, int page, u32 regnum, u16 val) · 782 unmodified lines | ||
| 783 | 783 | EXPORT_SYMBOL(phy_write_paged); |
| 784 | 784 | |
| 785 | 785 | /** |
| 786 | − * phy_modify_paged() - Convenience function for modifying a paged register | |
| 786 | + * phy_modify_paged_changed() - Function for modifying a paged register | |
| 787 | 787 | * @phydev: a pointer to a &struct phy_device |
| 788 | 788 | * @page: the page for the phy |
| 789 | 789 | * @regnum: register number |
| 790 | 790 | * @mask: bit mask of bits to clear |
| 791 | 791 | * @set: bit mask of bits to set |
| 792 | 792 | * |
| 793 | − * Same rules as for phy_read() and phy_write(). | |
| 793 | + * Returns negative errno, 0 if there was no change, and 1 in case of change | |
| 794 | 794 | */ |
| 795 | −int phy_modify_paged(struct phy_device *phydev, int page, u32 regnum, | |
| 796 | − u16 mask, u16 set) | |
| 795 | +int phy_modify_paged_changed(struct phy_device *phydev, int page, u32 regnum, | |
| 796 | + u16 mask, u16 set) | |
| 797 | 797 | { |
| 798 | 798 | int ret = 0, oldpage; |
| 799 | 799 | |
| 800 | 800 | oldpage = phy_select_page(phydev, page); |
| 801 | 801 | if (oldpage >= 0) |
| 802 | − ret = __phy_modify(phydev, regnum, mask, set); | |
| 802 | + ret = __phy_modify_changed(phydev, regnum, mask, set); | |
| 803 | 803 | |
| 804 | 804 | return phy_restore_page(phydev, oldpage, ret); |
| 805 | 805 | } |
| 806 | +EXPORT_SYMBOL(phy_modify_paged_changed); | |
| 807 | + | |
| 808 | +/** | |
| 809 | + * phy_modify_paged() - Convenience function for modifying a paged register | |
| 810 | + * @phydev: a pointer to a &struct phy_device | |
| 811 | + * @page: the page for the phy | |
| 812 | + * @regnum: register number | |
| 813 | + * @mask: bit mask of bits to clear | |
| 814 | + * @set: bit mask of bits to set | |
| 815 | + * | |
| 816 | + * Same rules as for phy_read() and phy_write(). | |
| 817 | + */ | |
| 818 | +int phy_modify_paged(struct phy_device *phydev, int page, u32 regnum, | |
| 819 | + u16 mask, u16 set) | |
| 820 | +{ | |
| 821 | + int ret = phy_modify_paged_changed(phydev, page, regnum, mask, set); | |
| 822 | + | |
| 823 | + return ret < 0 ? ret : 0; | |
| 824 | +} | |
| 806 | 825 | EXPORT_SYMBOL(phy_modify_paged); |
| @@ -984,6 +984,8 @@ int phy_select_page(struct phy_device *phydev, int page); · 983 unmodified lines | ||
| 984 | 984 | int phy_restore_page(struct phy_device *phydev, int oldpage, int ret); |
| 985 | 985 | int phy_read_paged(struct phy_device *phydev, int page, u32 regnum); |
| 986 | 986 | int phy_write_paged(struct phy_device *phydev, int page, u32 regnum, u16 val); |
| 987 | +int phy_modify_paged_changed(struct phy_device *phydev, int page, u32 regnum, | |
| 988 | + u16 mask, u16 set); | |
| 987 | 989 | int phy_modify_paged(struct phy_device *phydev, int page, u32 regnum, |
| 988 | 990 | u16 mask, u16 set); |
| 989 | 991 | |