diff options
author | Álvaro Fernández Rojas <noltari@gmail.com> | 2019-08-02 18:55:55 +0200 |
---|---|---|
committer | Álvaro Fernández Rojas <noltari@gmail.com> | 2019-08-02 18:55:55 +0200 |
commit | 00813d4dd976cc823fa089840ff2f4a10dd6cd0c (patch) | |
tree | 8f2c74a928c9ea0eceb64809d9039db824ae6663 /target/linux/brcm2708/patches-4.14/950-0295-net-phy-add-paged-phy-register-accessors.patch | |
parent | 19226502bf6393706defe7f049c587b32c9b4f33 (diff) | |
download | upstream-00813d4dd976cc823fa089840ff2f4a10dd6cd0c.tar.gz upstream-00813d4dd976cc823fa089840ff2f4a10dd6cd0c.tar.bz2 upstream-00813d4dd976cc823fa089840ff2f4a10dd6cd0c.zip |
brcm2708: remove linux 4.14 support
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Diffstat (limited to 'target/linux/brcm2708/patches-4.14/950-0295-net-phy-add-paged-phy-register-accessors.patch')
-rw-r--r-- | target/linux/brcm2708/patches-4.14/950-0295-net-phy-add-paged-phy-register-accessors.patch | 208 |
1 files changed, 0 insertions, 208 deletions
diff --git a/target/linux/brcm2708/patches-4.14/950-0295-net-phy-add-paged-phy-register-accessors.patch b/target/linux/brcm2708/patches-4.14/950-0295-net-phy-add-paged-phy-register-accessors.patch deleted file mode 100644 index 51866b4485..0000000000 --- a/target/linux/brcm2708/patches-4.14/950-0295-net-phy-add-paged-phy-register-accessors.patch +++ /dev/null @@ -1,208 +0,0 @@ -From 8a74a77e9df9565c247da3df37657d6eabb314c6 Mon Sep 17 00:00:00 2001 -From: Russell King <rmk+kernel@armlinux.org.uk> -Date: Tue, 2 Jan 2018 10:58:43 +0000 -Subject: [PATCH 295/454] net: phy: add paged phy register accessors - -commit 78ffc4acceff48522b92d8fbf8f4a0ffe78838b2 upstream. - -Add a set of paged phy register accessors which are inherently safe in -their design against other accesses interfering with the paged access. - -Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> -Reviewed-by: Andrew Lunn <andrew@lunn.ch> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - drivers/net/phy/phy-core.c | 157 +++++++++++++++++++++++++++++++++++++ - include/linux/phy.h | 11 +++ - 2 files changed, 168 insertions(+) - ---- a/drivers/net/phy/phy-core.c -+++ b/drivers/net/phy/phy-core.c -@@ -305,3 +305,160 @@ int __phy_modify(struct phy_device *phyd - return ret; - } - EXPORT_SYMBOL_GPL(__phy_modify); -+ -+static int __phy_read_page(struct phy_device *phydev) -+{ -+ return phydev->drv->read_page(phydev); -+} -+ -+static int __phy_write_page(struct phy_device *phydev, int page) -+{ -+ return phydev->drv->write_page(phydev, page); -+} -+ -+/** -+ * phy_save_page() - take the bus lock and save the current page -+ * @phydev: a pointer to a &struct phy_device -+ * -+ * Take the MDIO bus lock, and return the current page number. On error, -+ * returns a negative errno. phy_restore_page() must always be called -+ * after this, irrespective of success or failure of this call. -+ */ -+int phy_save_page(struct phy_device *phydev) -+{ -+ mutex_lock(&phydev->mdio.bus->mdio_lock); -+ return __phy_read_page(phydev); -+} -+EXPORT_SYMBOL_GPL(phy_save_page); -+ -+/** -+ * phy_select_page() - take the bus lock, save the current page, and set a page -+ * @phydev: a pointer to a &struct phy_device -+ * @page: desired page -+ * -+ * Take the MDIO bus lock to protect against concurrent access, save the -+ * current PHY page, and set the current page. On error, returns a -+ * negative errno, otherwise returns the previous page number. -+ * phy_restore_page() must always be called after this, irrespective -+ * of success or failure of this call. -+ */ -+int phy_select_page(struct phy_device *phydev, int page) -+{ -+ int ret, oldpage; -+ -+ oldpage = ret = phy_save_page(phydev); -+ if (ret < 0) -+ return ret; -+ -+ if (oldpage != page) { -+ ret = __phy_write_page(phydev, page); -+ if (ret < 0) -+ return ret; -+ } -+ -+ return oldpage; -+} -+EXPORT_SYMBOL_GPL(phy_select_page); -+ -+/** -+ * phy_restore_page() - restore the page register and release the bus lock -+ * @phydev: a pointer to a &struct phy_device -+ * @oldpage: the old page, return value from phy_save_page() or phy_select_page() -+ * @ret: operation's return code -+ * -+ * Release the MDIO bus lock, restoring @oldpage if it is a valid page. -+ * This function propagates the earliest error code from the group of -+ * operations. -+ * -+ * Returns: -+ * @oldpage if it was a negative value, otherwise -+ * @ret if it was a negative errno value, otherwise -+ * phy_write_page()'s negative value if it were in error, otherwise -+ * @ret. -+ */ -+int phy_restore_page(struct phy_device *phydev, int oldpage, int ret) -+{ -+ int r; -+ -+ if (oldpage >= 0) { -+ r = __phy_write_page(phydev, oldpage); -+ -+ /* Propagate the operation return code if the page write -+ * was successful. -+ */ -+ if (ret >= 0 && r < 0) -+ ret = r; -+ } else { -+ /* Propagate the phy page selection error code */ -+ ret = oldpage; -+ } -+ -+ mutex_unlock(&phydev->mdio.bus->mdio_lock); -+ -+ return ret; -+} -+EXPORT_SYMBOL_GPL(phy_restore_page); -+ -+/** -+ * phy_read_paged() - Convenience function for reading a paged register -+ * @phydev: a pointer to a &struct phy_device -+ * @page: the page for the phy -+ * @regnum: register number -+ * -+ * Same rules as for phy_read(). -+ */ -+int phy_read_paged(struct phy_device *phydev, int page, u32 regnum) -+{ -+ int ret = 0, oldpage; -+ -+ oldpage = phy_select_page(phydev, page); -+ if (oldpage >= 0) -+ ret = __phy_read(phydev, regnum); -+ -+ return phy_restore_page(phydev, oldpage, ret); -+} -+EXPORT_SYMBOL(phy_read_paged); -+ -+/** -+ * phy_write_paged() - Convenience function for writing a paged register -+ * @phydev: a pointer to a &struct phy_device -+ * @page: the page for the phy -+ * @regnum: register number -+ * @val: value to write -+ * -+ * Same rules as for phy_write(). -+ */ -+int phy_write_paged(struct phy_device *phydev, int page, u32 regnum, u16 val) -+{ -+ int ret = 0, oldpage; -+ -+ oldpage = phy_select_page(phydev, page); -+ if (oldpage >= 0) -+ ret = __phy_write(phydev, regnum, val); -+ -+ return phy_restore_page(phydev, oldpage, ret); -+} -+EXPORT_SYMBOL(phy_write_paged); -+ -+/** -+ * phy_modify_paged() - Convenience function for modifying a paged register -+ * @phydev: a pointer to a &struct phy_device -+ * @page: the page for the phy -+ * @regnum: register number -+ * @mask: bit mask of bits to clear -+ * @set: bit mask of bits to set -+ * -+ * Same rules as for phy_read() and phy_write(). -+ */ -+int phy_modify_paged(struct phy_device *phydev, int page, u32 regnum, -+ u16 mask, u16 set) -+{ -+ int ret = 0, oldpage; -+ -+ oldpage = phy_select_page(phydev, page); -+ if (oldpage >= 0) -+ ret = __phy_modify(phydev, regnum, mask, set); -+ -+ return phy_restore_page(phydev, oldpage, ret); -+} -+EXPORT_SYMBOL(phy_modify_paged); ---- a/include/linux/phy.h -+++ b/include/linux/phy.h -@@ -644,6 +644,9 @@ struct phy_driver { - int (*write_mmd)(struct phy_device *dev, int devnum, u16 regnum, - u16 val); - -+ int (*read_page)(struct phy_device *dev); -+ int (*write_page)(struct phy_device *dev, int page); -+ - /* Get the size and type of the eeprom contained within a plug-in - * module */ - int (*module_info)(struct phy_device *dev, -@@ -832,6 +835,14 @@ static inline bool phy_is_pseudo_fixed_l - */ - int phy_write_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val); - -+int phy_save_page(struct phy_device *phydev); -+int phy_select_page(struct phy_device *phydev, int page); -+int phy_restore_page(struct phy_device *phydev, int oldpage, int ret); -+int phy_read_paged(struct phy_device *phydev, int page, u32 regnum); -+int phy_write_paged(struct phy_device *phydev, int page, u32 regnum, u16 val); -+int phy_modify_paged(struct phy_device *phydev, int page, u32 regnum, -+ u16 mask, u16 set); -+ - struct phy_device *phy_device_create(struct mii_bus *bus, int addr, int phy_id, - bool is_c45, - struct phy_c45_device_ids *c45_ids); |