diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-01-08 16:18:31 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-01-08 16:18:31 -0800 |
commit | 5a62a61cd5f0ebd29a85f4751c6856ca07e6d713 (patch) | |
tree | d10aa6fc57c3c3dd49c457aa15f51e7c7e10360f | |
parent | f58c83d498373bee45ce0a0b45fce7b841ad8bc6 (diff) | |
download | ltsi-kernel-5a62a61cd5f0ebd29a85f4751c6856ca07e6d713.tar.gz |
add 2 renesas bugfixesv3.14.28-ltsi
-rw-r--r-- | patches.renesas/micrel-fix-masking-off-led-bits.patch | 38 | ||||
-rw-r--r-- | patches.renesas/phy-micrel-add-of-configuration-for-led-mode.patch | 143 | ||||
-rw-r--r-- | series | 2 |
3 files changed, 183 insertions, 0 deletions
diff --git a/patches.renesas/micrel-fix-masking-off-led-bits.patch b/patches.renesas/micrel-fix-masking-off-led-bits.patch new file mode 100644 index 0000000000000..fa8f48e538340 --- /dev/null +++ b/patches.renesas/micrel-fix-masking-off-led-bits.patch @@ -0,0 +1,38 @@ +From horms@vergenet.net Wed Dec 10 18:29:26 2014 +From: Simon Horman <horms+renesas@verge.net.au> +Date: Thu, 11 Dec 2014 11:29:12 +0900 +Subject: [PATCH ltsi-3.14 2/2] micrel: fix masking off LED bits +To: ltsi-dev@lists.linuxfoundation.org +Cc: Greg KH <gregkh@linuxfoundation.org>, Magnus Damm <magnus.damm@gmail.com>, yoshihiro shimoda <yoshihiro.shimoda.uh@renesas.com> +Message-ID: <1418264952-27886-3-git-send-email-horms+renesas@verge.net.au> + + +From: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> + +Commit 20d8435a1cff (phy: micrel: add of configuration for LED mode) made the +obvious mistake when masking off the LED mode bits: forgot to do a logical NOT +to the mask with which it ANDs the register value, so that unrelated bits are +cleared instead. + +Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> +Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> +Acked-by: Ben Dooks <ben.dooks@codethink.co.uk> +Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> +Signed-off-by: David S. Miller <davem@davemloft.net> +(cherry picked from commit 28bdc499d647124fa5844453d35e6f5d1b3810dc) +Signed-off-by: Simon Horman <horms+renesas@verge.net.au> +--- + drivers/net/phy/micrel.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/net/phy/micrel.c ++++ b/drivers/net/phy/micrel.c +@@ -167,7 +167,7 @@ static int kszphy_setup_led(struct phy_d + if (temp < 0) + return temp; + +- temp &= 3 << shift; ++ temp &= ~(3 << shift); + temp |= val << shift; + rc = phy_write(phydev, reg, temp); + diff --git a/patches.renesas/phy-micrel-add-of-configuration-for-led-mode.patch b/patches.renesas/phy-micrel-add-of-configuration-for-led-mode.patch new file mode 100644 index 0000000000000..5bb6f83ef90d1 --- /dev/null +++ b/patches.renesas/phy-micrel-add-of-configuration-for-led-mode.patch @@ -0,0 +1,143 @@ +From horms@vergenet.net Wed Dec 10 18:29:25 2014 +From: Simon Horman <horms+renesas@verge.net.au> +Date: Thu, 11 Dec 2014 11:29:11 +0900 +Subject: [PATCH ltsi-3.14 1/2] phy: micrel: add of configuration for LED mode +To: ltsi-dev@lists.linuxfoundation.org +Cc: Greg KH <gregkh@linuxfoundation.org>, Magnus Damm <magnus.damm@gmail.com>, yoshihiro shimoda <yoshihiro.shimoda.uh@renesas.com> +Message-ID: <1418264952-27886-2-git-send-email-horms+renesas@verge.net.au> + + +From: Ben Dooks <ben.dooks@codethink.co.uk> + +Add support for the led-mode property for the following PHYs +which have a single LED mode configuration value. + +KSZ8001 and KSZ8041 which both use register 0x1e bits 15,14 and +KSZ8021, KSZ8031 and KSZ8051 which use register 0x1f bits 5,4 +to control the LED configuration. + +Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> +Signed-off-by: David S. Miller <davem@davemloft.net> +(cherry picked from commit 20d8435a1cffa04992f1db6b199a5f0ccec2ff06) +Signed-off-by: Simon Horman <horms+renesas@verge.net.au> +--- + Documentation/devicetree/bindings/net/micrel.txt | 18 ++++++++ + drivers/net/phy/micrel.c | 49 +++++++++++++++++++++-- + 2 files changed, 63 insertions(+), 4 deletions(-) + create mode 100644 Documentation/devicetree/bindings/net/micrel.txt + +--- /dev/null ++++ b/Documentation/devicetree/bindings/net/micrel.txt +@@ -0,0 +1,18 @@ ++Micrel PHY properties. ++ ++These properties cover the base properties Micrel PHYs. ++ ++Optional properties: ++ ++ - micrel,led-mode : LED mode value to set for PHYs with configurable LEDs. ++ ++ Configure the LED mode with single value. The list of PHYs and ++ the bits that are currently supported: ++ ++ KSZ8001: register 0x1e, bits 15..14 ++ KSZ8041: register 0x1e, bits 15..14 ++ KSZ8021: register 0x1f, bits 5..4 ++ KSZ8031: register 0x1f, bits 5..4 ++ KSZ8051: register 0x1f, bits 5..4 ++ ++ See the respective PHY datasheet for the mode values. +--- a/drivers/net/phy/micrel.c ++++ b/drivers/net/phy/micrel.c +@@ -148,15 +148,52 @@ static int ks8737_config_intr(struct phy + return rc < 0 ? rc : 0; + } + ++static int kszphy_setup_led(struct phy_device *phydev, ++ unsigned int reg, unsigned int shift) ++{ ++ ++ struct device *dev = &phydev->dev; ++ struct device_node *of_node = dev->of_node; ++ int rc, temp; ++ u32 val; ++ ++ if (!of_node && dev->parent->of_node) ++ of_node = dev->parent->of_node; ++ ++ if (of_property_read_u32(of_node, "micrel,led-mode", &val)) ++ return 0; ++ ++ temp = phy_read(phydev, reg); ++ if (temp < 0) ++ return temp; ++ ++ temp &= 3 << shift; ++ temp |= val << shift; ++ rc = phy_write(phydev, reg, temp); ++ ++ return rc < 0 ? rc : 0; ++} ++ + static int kszphy_config_init(struct phy_device *phydev) + { + return 0; + } + ++static int kszphy_config_init_led8041(struct phy_device *phydev) ++{ ++ /* single led control, register 0x1e bits 15..14 */ ++ return kszphy_setup_led(phydev, 0x1e, 14); ++} ++ + static int ksz8021_config_init(struct phy_device *phydev) + { +- int rc; + const u16 val = KSZPHY_OMSO_B_CAST_OFF | KSZPHY_OMSO_RMII_OVERRIDE; ++ int rc; ++ ++ rc = kszphy_setup_led(phydev, 0x1f, 4); ++ if (rc) ++ dev_err(&phydev->dev, "failed to set led mode\n"); ++ + phy_write(phydev, MII_KSZPHY_OMSO, val); + rc = ksz_config_flags(phydev); + return rc < 0 ? rc : 0; +@@ -166,6 +203,10 @@ static int ks8051_config_init(struct phy + { + int rc; + ++ rc = kszphy_setup_led(phydev, 0x1f, 4); ++ if (rc) ++ dev_err(&phydev->dev, "failed to set led mode\n"); ++ + rc = ksz_config_flags(phydev); + return rc < 0 ? rc : 0; + } +@@ -327,7 +368,7 @@ static struct phy_driver ksphy_driver[] + .features = (PHY_BASIC_FEATURES | SUPPORTED_Pause + | SUPPORTED_Asym_Pause), + .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT, +- .config_init = kszphy_config_init, ++ .config_init = kszphy_config_init_led8041, + .config_aneg = genphy_config_aneg, + .read_status = genphy_read_status, + .ack_interrupt = kszphy_ack_interrupt, +@@ -342,7 +383,7 @@ static struct phy_driver ksphy_driver[] + .features = PHY_BASIC_FEATURES | + SUPPORTED_Pause | SUPPORTED_Asym_Pause, + .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT, +- .config_init = kszphy_config_init, ++ .config_init = kszphy_config_init_led8041, + .config_aneg = genphy_config_aneg, + .read_status = genphy_read_status, + .ack_interrupt = kszphy_ack_interrupt, +@@ -371,7 +412,7 @@ static struct phy_driver ksphy_driver[] + .phy_id_mask = 0x00ffffff, + .features = (PHY_BASIC_FEATURES | SUPPORTED_Pause), + .flags = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT, +- .config_init = kszphy_config_init, ++ .config_init = kszphy_config_init_led8041, + .config_aneg = genphy_config_aneg, + .read_status = genphy_read_status, + .ack_interrupt = kszphy_ack_interrupt, @@ -1003,6 +1003,8 @@ patches.renesas/0972-usb-renesas_usbhs-fix-the-usb_pkt_pop.patch patches.renesas/0973-i2c-rcar-fix-RCAR_IRQ_ACK_-RECV-SEND.patch patches.renesas/0001-clk-add-clock-indices-support.patch patches.renesas/0002-of-fdt-update-of_get_flat_dt_prop-in-prep-for-libfdt.patch +patches.renesas/phy-micrel-add-of-configuration-for-led-mode.patch +patches.renesas/micrel-fix-masking-off-led-bits.patch ############################################################################# |