diff options
author | Felix Fietkau <nbd@nbd.name> | 2018-04-09 09:49:44 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2018-04-19 14:38:36 +0200 |
commit | 57a7595a289e80a34f166e66f3cf9191ef772eb3 (patch) | |
tree | dbf5a762cfab0cf7429b9104274fba7ef2646176 /target/linux/mvebu/patches-4.4/121-phy-convert-swphy-register-generation-to-tabular-for.patch | |
parent | a656ea0bdb5d3d4a4948457942e84faa5a4f5cfe (diff) | |
download | upstream-57a7595a289e80a34f166e66f3cf9191ef772eb3.tar.gz upstream-57a7595a289e80a34f166e66f3cf9191ef772eb3.tar.bz2 upstream-57a7595a289e80a34f166e66f3cf9191ef772eb3.zip |
mvebu: drop linux 4.4 and 4.9 support
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'target/linux/mvebu/patches-4.4/121-phy-convert-swphy-register-generation-to-tabular-for.patch')
-rw-r--r-- | target/linux/mvebu/patches-4.4/121-phy-convert-swphy-register-generation-to-tabular-for.patch | 203 |
1 files changed, 0 insertions, 203 deletions
diff --git a/target/linux/mvebu/patches-4.4/121-phy-convert-swphy-register-generation-to-tabular-for.patch b/target/linux/mvebu/patches-4.4/121-phy-convert-swphy-register-generation-to-tabular-for.patch deleted file mode 100644 index 0d689f39a3..0000000000 --- a/target/linux/mvebu/patches-4.4/121-phy-convert-swphy-register-generation-to-tabular-for.patch +++ /dev/null @@ -1,203 +0,0 @@ -From cd834fe430f030a63bfa9277bba194e8eef4dbd0 Mon Sep 17 00:00:00 2001 -From: Russell King <rmk+kernel@arm.linux.org.uk> -Date: Sun, 20 Sep 2015 10:18:59 +0100 -Subject: [PATCH 710/744] phy: convert swphy register generation to tabular - form - -Convert the swphy register generation to tabular form which allows us -to eliminate multiple switch() statements. This results in a smaller -object code size, more efficient, and easier to add support for faster -speeds. - -Before: - -Idx Name Size VMA LMA File off Algn - 0 .text 00000164 00000000 00000000 00000034 2**2 - - text data bss dec hex filename - 388 0 0 388 184 swphy.o - -After: - -Idx Name Size VMA LMA File off Algn - 0 .text 000000fc 00000000 00000000 00000034 2**2 - 5 .rodata 00000028 00000000 00000000 00000138 2**2 - - text data bss dec hex filename - 324 0 0 324 144 swphy.o - -Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> -Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> ---- - drivers/net/phy/swphy.c | 143 ++++++++++++++++++++++++++---------------------- - 1 file changed, 78 insertions(+), 65 deletions(-) - ---- a/drivers/net/phy/swphy.c -+++ b/drivers/net/phy/swphy.c -@@ -20,6 +20,72 @@ - - #include "swphy.h" - -+struct swmii_regs { -+ u16 bmcr; -+ u16 bmsr; -+ u16 lpa; -+ u16 lpagb; -+}; -+ -+enum { -+ SWMII_SPEED_10 = 0, -+ SWMII_SPEED_100, -+ SWMII_SPEED_1000, -+ SWMII_DUPLEX_HALF = 0, -+ SWMII_DUPLEX_FULL, -+}; -+ -+/* -+ * These two tables get bitwise-anded together to produce the final result. -+ * This means the speed table must contain both duplex settings, and the -+ * duplex table must contain all speed settings. -+ */ -+static const struct swmii_regs speed[] = { -+ [SWMII_SPEED_10] = { -+ .bmcr = BMCR_FULLDPLX, -+ .lpa = LPA_10FULL | LPA_10HALF, -+ }, -+ [SWMII_SPEED_100] = { -+ .bmcr = BMCR_FULLDPLX | BMCR_SPEED100, -+ .bmsr = BMSR_100FULL | BMSR_100HALF, -+ .lpa = LPA_100FULL | LPA_100HALF, -+ }, -+ [SWMII_SPEED_1000] = { -+ .bmcr = BMCR_FULLDPLX | BMCR_SPEED1000, -+ .bmsr = BMSR_ESTATEN, -+ .lpagb = LPA_1000FULL | LPA_1000HALF, -+ }, -+}; -+ -+static const struct swmii_regs duplex[] = { -+ [SWMII_DUPLEX_HALF] = { -+ .bmcr = ~BMCR_FULLDPLX, -+ .bmsr = BMSR_ESTATEN | BMSR_100HALF, -+ .lpa = LPA_10HALF | LPA_100HALF, -+ .lpagb = LPA_1000HALF, -+ }, -+ [SWMII_DUPLEX_FULL] = { -+ .bmcr = ~0, -+ .bmsr = BMSR_ESTATEN | BMSR_100FULL, -+ .lpa = LPA_10FULL | LPA_100FULL, -+ .lpagb = LPA_1000FULL, -+ }, -+}; -+ -+static int swphy_decode_speed(int speed) -+{ -+ switch (speed) { -+ case 1000: -+ return SWMII_SPEED_1000; -+ case 100: -+ return SWMII_SPEED_100; -+ case 10: -+ return SWMII_SPEED_10; -+ default: -+ return -EINVAL; -+ } -+} -+ - /** - * swphy_update_regs - update MII register array with fixed phy state - * @regs: array of 32 registers to update -@@ -30,81 +96,28 @@ - */ - int swphy_update_regs(u16 *regs, const struct fixed_phy_status *state) - { -+ int speed_index, duplex_index; - u16 bmsr = BMSR_ANEGCAPABLE; - u16 bmcr = 0; - u16 lpagb = 0; - u16 lpa = 0; - -- if (state->duplex) { -- switch (state->speed) { -- case 1000: -- bmsr |= BMSR_ESTATEN; -- break; -- case 100: -- bmsr |= BMSR_100FULL; -- break; -- case 10: -- bmsr |= BMSR_10FULL; -- break; -- default: -- break; -- } -- } else { -- switch (state->speed) { -- case 1000: -- bmsr |= BMSR_ESTATEN; -- break; -- case 100: -- bmsr |= BMSR_100HALF; -- break; -- case 10: -- bmsr |= BMSR_10HALF; -- break; -- default: -- break; -- } -+ speed_index = swphy_decode_speed(state->speed); -+ if (speed_index < 0) { -+ pr_warn("swphy: unknown speed\n"); -+ return -EINVAL; - } - -+ duplex_index = state->duplex ? SWMII_DUPLEX_FULL : SWMII_DUPLEX_HALF; -+ -+ bmsr |= speed[speed_index].bmsr & duplex[duplex_index].bmsr; -+ - if (state->link) { - bmsr |= BMSR_LSTATUS | BMSR_ANEGCOMPLETE; - -- if (state->duplex) { -- bmcr |= BMCR_FULLDPLX; -- -- switch (state->speed) { -- case 1000: -- bmcr |= BMCR_SPEED1000; -- lpagb |= LPA_1000FULL; -- break; -- case 100: -- bmcr |= BMCR_SPEED100; -- lpa |= LPA_100FULL; -- break; -- case 10: -- lpa |= LPA_10FULL; -- break; -- default: -- pr_warn("swphy: unknown speed\n"); -- return -EINVAL; -- } -- } else { -- switch (state->speed) { -- case 1000: -- bmcr |= BMCR_SPEED1000; -- lpagb |= LPA_1000HALF; -- break; -- case 100: -- bmcr |= BMCR_SPEED100; -- lpa |= LPA_100HALF; -- break; -- case 10: -- lpa |= LPA_10HALF; -- break; -- default: -- pr_warn("swphy: unknown speed\n"); -- return -EINVAL; -- } -- } -+ bmcr |= speed[speed_index].bmcr & duplex[duplex_index].bmcr; -+ lpa |= speed[speed_index].lpa & duplex[duplex_index].lpa; -+ lpagb |= speed[speed_index].lpagb & duplex[duplex_index].lpagb; - - if (state->pause) - lpa |= LPA_PAUSE_CAP; |