stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Florian Fainelli <f.fainelli@gmail.com>,
	"David S . Miller" <davem@davemloft.net>,
	Sasha Levin <sashal@kernel.org>,
	netdev@vger.kernel.org, devicetree@vger.kernel.org
Subject: [PATCH AUTOSEL 4.14 043/109] net: phy: mdio-bcm-unimac: Allow configuring MDIO clock divider
Date: Sat,  9 Nov 2019 21:44:35 -0500	[thread overview]
Message-ID: <20191110024541.31567-43-sashal@kernel.org> (raw)
In-Reply-To: <20191110024541.31567-1-sashal@kernel.org>

From: Florian Fainelli <f.fainelli@gmail.com>

[ Upstream commit b78ac6ecd1b6b46f8767cbafa95a7b0b51b87ad8 ]

Allow the configuration of the MDIO clock divider when the Device Tree
contains 'clock-frequency' property (similar to I2C and SPI buses).
Because the hardware may have lost its state during suspend/resume,
re-apply the MDIO clock divider upon resumption.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 .../bindings/net/brcm,unimac-mdio.txt         |  3 +
 drivers/net/phy/mdio-bcm-unimac.c             | 83 ++++++++++++++++++-
 2 files changed, 84 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/net/brcm,unimac-mdio.txt b/Documentation/devicetree/bindings/net/brcm,unimac-mdio.txt
index 4648948f7c3b8..e15589f477876 100644
--- a/Documentation/devicetree/bindings/net/brcm,unimac-mdio.txt
+++ b/Documentation/devicetree/bindings/net/brcm,unimac-mdio.txt
@@ -19,6 +19,9 @@ Optional properties:
 - interrupt-names: must be "mdio_done_error" when there is a share interrupt fed
   to this hardware block, or must be "mdio_done" for the first interrupt and
   "mdio_error" for the second when there are separate interrupts
+- clocks: A reference to the clock supplying the MDIO bus controller
+- clock-frequency: the MDIO bus clock that must be output by the MDIO bus
+  hardware, if absent, the default hardware values are used
 
 Child nodes of this MDIO bus controller node are standard Ethernet PHY device
 nodes as described in Documentation/devicetree/bindings/net/phy.txt
diff --git a/drivers/net/phy/mdio-bcm-unimac.c b/drivers/net/phy/mdio-bcm-unimac.c
index 08e0647b85e23..f9d98a6e67bc4 100644
--- a/drivers/net/phy/mdio-bcm-unimac.c
+++ b/drivers/net/phy/mdio-bcm-unimac.c
@@ -16,6 +16,7 @@
 #include <linux/module.h>
 #include <linux/io.h>
 #include <linux/delay.h>
+#include <linux/clk.h>
 
 #include <linux/of.h>
 #include <linux/of_platform.h>
@@ -45,6 +46,8 @@ struct unimac_mdio_priv {
 	void __iomem		*base;
 	int (*wait_func)	(void *wait_func_data);
 	void			*wait_func_data;
+	struct clk		*clk;
+	u32			clk_freq;
 };
 
 static inline u32 unimac_mdio_readl(struct unimac_mdio_priv *priv, u32 offset)
@@ -189,6 +192,35 @@ static int unimac_mdio_reset(struct mii_bus *bus)
 	return 0;
 }
 
+static void unimac_mdio_clk_set(struct unimac_mdio_priv *priv)
+{
+	unsigned long rate;
+	u32 reg, div;
+
+	/* Keep the hardware default values */
+	if (!priv->clk_freq)
+		return;
+
+	if (!priv->clk)
+		rate = 250000000;
+	else
+		rate = clk_get_rate(priv->clk);
+
+	div = (rate / (2 * priv->clk_freq)) - 1;
+	if (div & ~MDIO_CLK_DIV_MASK) {
+		pr_warn("Incorrect MDIO clock frequency, ignoring\n");
+		return;
+	}
+
+	/* The MDIO clock is the reference clock (typicaly 250Mhz) divided by
+	 * 2 x (MDIO_CLK_DIV + 1)
+	 */
+	reg = unimac_mdio_readl(priv, MDIO_CFG);
+	reg &= ~(MDIO_CLK_DIV_MASK << MDIO_CLK_DIV_SHIFT);
+	reg |= div << MDIO_CLK_DIV_SHIFT;
+	unimac_mdio_writel(priv, reg, MDIO_CFG);
+}
+
 static int unimac_mdio_probe(struct platform_device *pdev)
 {
 	struct unimac_mdio_pdata *pdata = pdev->dev.platform_data;
@@ -215,9 +247,26 @@ static int unimac_mdio_probe(struct platform_device *pdev)
 		return -ENOMEM;
 	}
 
+	priv->clk = devm_clk_get(&pdev->dev, NULL);
+	if (PTR_ERR(priv->clk) == -EPROBE_DEFER)
+		return PTR_ERR(priv->clk);
+	else
+		priv->clk = NULL;
+
+	ret = clk_prepare_enable(priv->clk);
+	if (ret)
+		return ret;
+
+	if (of_property_read_u32(np, "clock-frequency", &priv->clk_freq))
+		priv->clk_freq = 0;
+
+	unimac_mdio_clk_set(priv);
+
 	priv->mii_bus = mdiobus_alloc();
-	if (!priv->mii_bus)
-		return -ENOMEM;
+	if (!priv->mii_bus) {
+		ret = -ENOMEM;
+		goto out_clk_disable;
+	}
 
 	bus = priv->mii_bus;
 	bus->priv = priv;
@@ -251,6 +300,8 @@ static int unimac_mdio_probe(struct platform_device *pdev)
 
 out_mdio_free:
 	mdiobus_free(bus);
+out_clk_disable:
+	clk_disable_unprepare(priv->clk);
 	return ret;
 }
 
@@ -260,10 +311,37 @@ static int unimac_mdio_remove(struct platform_device *pdev)
 
 	mdiobus_unregister(priv->mii_bus);
 	mdiobus_free(priv->mii_bus);
+	clk_disable_unprepare(priv->clk);
+
+	return 0;
+}
+
+static int unimac_mdio_suspend(struct device *d)
+{
+	struct unimac_mdio_priv *priv = dev_get_drvdata(d);
+
+	clk_disable_unprepare(priv->clk);
+
+	return 0;
+}
+
+static int unimac_mdio_resume(struct device *d)
+{
+	struct unimac_mdio_priv *priv = dev_get_drvdata(d);
+	int ret;
+
+	ret = clk_prepare_enable(priv->clk);
+	if (ret)
+		return ret;
+
+	unimac_mdio_clk_set(priv);
 
 	return 0;
 }
 
+static SIMPLE_DEV_PM_OPS(unimac_mdio_pm_ops,
+			 unimac_mdio_suspend, unimac_mdio_resume);
+
 static const struct of_device_id unimac_mdio_ids[] = {
 	{ .compatible = "brcm,genet-mdio-v5", },
 	{ .compatible = "brcm,genet-mdio-v4", },
@@ -279,6 +357,7 @@ static struct platform_driver unimac_mdio_driver = {
 	.driver = {
 		.name = UNIMAC_MDIO_DRV_NAME,
 		.of_match_table = unimac_mdio_ids,
+		.pm = &unimac_mdio_pm_ops,
 	},
 	.probe	= unimac_mdio_probe,
 	.remove	= unimac_mdio_remove,
-- 
2.20.1


  parent reply	other threads:[~2019-11-10  3:04 UTC|newest]

Thread overview: 109+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-10  2:43 [PATCH AUTOSEL 4.14 001/109] s390/qeth: invoke softirqs after napi_schedule() Sasha Levin
2019-11-10  2:43 ` [PATCH AUTOSEL 4.14 002/109] PCI/ACPI: Correct error message for ASPM disabling Sasha Levin
2019-11-10  2:43 ` [PATCH AUTOSEL 4.14 003/109] serial: uartps: Fix suspend functionality Sasha Levin
2019-11-10  2:43 ` [PATCH AUTOSEL 4.14 004/109] serial: samsung: Enable baud clock for UART reset procedure in resume Sasha Levin
2019-11-10  2:43 ` [PATCH AUTOSEL 4.14 005/109] serial: mxs-auart: Fix potential infinite loop Sasha Levin
2019-11-10  2:43 ` [PATCH AUTOSEL 4.14 006/109] samples/bpf: fix a compilation failure Sasha Levin
2019-11-10  2:43 ` [PATCH AUTOSEL 4.14 007/109] spi: mediatek: Don't modify spi_transfer when transfer Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 008/109] ipmi:dmi: Ignore IPMI SMBIOS entries with a zero base address Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 009/109] net: hns3: fix return type of ndo_start_xmit function Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 010/109] powerpc/iommu: Avoid derefence before pointer check Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 011/109] powerpc/64s/hash: Fix stab_rr off by one initialization Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 012/109] powerpc/pseries: Disable CPU hotplug across migrations Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 013/109] powerpc: Fix duplicate const clang warning in user access code Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 014/109] RDMA/i40iw: Fix incorrect iterator type Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 015/109] OPP: Protect dev_list with opp_table lock Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 016/109] libfdt: Ensure INT_MAX is defined in libfdt_env.h Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 017/109] power: supply: twl4030_charger: fix charging current out-of-bounds Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 018/109] power: supply: twl4030_charger: disable eoc interrupt on linear charge Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 019/109] net: toshiba: fix return type of ndo_start_xmit function Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 020/109] net: xilinx: " Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 021/109] net: broadcom: " Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 022/109] net: amd: " Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 023/109] net: sun: " Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 024/109] net: hns3: Fix for setting speed for phy failed problem Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 025/109] net: hns3: Fix parameter type for q_id in hclge_tm_q_to_qs_map_cfg() Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 026/109] nfp: provide a better warning when ring allocation fails Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 027/109] usb: chipidea: imx: enable OTG overcurrent in case USB subsystem is already started Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 028/109] usb: chipidea: Fix otg event handler Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 029/109] mlxsw: spectrum: Init shaper for TCs 8..15 Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 030/109] ARM: dts: am335x-evm: fix number of cpsw Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 031/109] f2fs: fix to recover inode's uid/gid during POR Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 032/109] ARM: dts: ux500: Correct SCU unit address Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 033/109] ARM: dts: ux500: Fix LCDA clock line muxing Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 034/109] ARM: dts: ste: Fix SPI controller node names Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 035/109] spi: pic32: Use proper enum in dmaengine_prep_slave_rg Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 036/109] cpufeature: avoid warning when compiling with clang Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 037/109] crypto: arm/crc32 - avoid warning when compiling with Clang Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 038/109] ARM: dts: marvell: Fix SPI and I2C bus warnings Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 039/109] x86/mce-inject: Reset injection struct after injection Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 040/109] ARM: dts: clearfog: fix sdhci supply property name Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 041/109] bnx2x: Ignore bandwidth attention in single function mode Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 042/109] samples/bpf: fix compilation failure Sasha Levin
2019-11-10  2:44 ` Sasha Levin [this message]
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 044/109] net: micrel: fix return type of ndo_start_xmit function Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 045/109] net: freescale: " Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 046/109] x86/CPU: Use correct macros for Cyrix calls Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 047/109] x86/CPU: Change query logic so CPUID is enabled before testing Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 048/109] MIPS: kexec: Relax memory restriction Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 049/109] arm64: dts: rockchip: Fix microSD in rk3399 sapphire board Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 050/109] media: pci: ivtv: Fix a sleep-in-atomic-context bug in ivtv_yuv_init() Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 051/109] media: au0828: Fix incorrect error messages Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 052/109] media: davinci: Fix implicit enum conversion warning Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 053/109] ARM: dts: rockchip: explicitly set vcc_sd0 pin to gpio on rk3188-radxarock Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 054/109] usb: gadget: uvc: configfs: Drop leaked references to config items Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 055/109] usb: gadget: uvc: configfs: Prevent format changes after linking header Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 056/109] i2c: aspeed: fix invalid clock parameters for very large divisors Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 057/109] phy: brcm-sata: allow PHY_BRCM_SATA driver to be built for DSL SoCs Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 058/109] phy: renesas: rcar-gen3-usb2: fix vbus_ctrl for role sysfs Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 059/109] phy: phy-twl4030-usb: fix denied runtime access Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 060/109] usb: gadget: uvc: Factor out video USB request queueing Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 061/109] usb: gadget: uvc: Only halt video streaming endpoint in bulk mode Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 062/109] coresight: Fix handling of sinks Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 063/109] coresight: perf: Fix per cpu path management Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 064/109] coresight: perf: Disable trace path upon source error Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 065/109] coresight: etm4x: Configure EL2 exception level when kernel is running in HYP Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 066/109] coresight: tmc: Fix byte-address alignment for RRP Sasha Levin
2019-11-10  2:44 ` [PATCH AUTOSEL 4.14 067/109] misc: kgdbts: Fix restrict error Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 068/109] misc: genwqe: should return proper error value Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 069/109] vfio/pci: Fix potential memory leak in vfio_msi_cap_len Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 070/109] vfio/pci: Mask buggy SR-IOV VF INTx support Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 071/109] scsi: libsas: always unregister the old device if going to discover new Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 072/109] phy: lantiq: Fix compile warning Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 073/109] ARM: dts: tegra30: fix xcvr-setup-use-fuses Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 074/109] ARM: tegra: apalis_t30: fix mmc1 cmd pull-up Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 075/109] ARM: dts: paz00: fix wakeup gpio keycode Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 076/109] net: smsc: fix return type of ndo_start_xmit function Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 077/109] net: faraday: " Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 078/109] f2fs: fix to recover inode's project id during POR Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 079/109] f2fs: mark inode dirty explicitly in recover_inode() Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 080/109] EDAC: Raise the maximum number of memory controllers Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 081/109] ARM: dts: realview: Fix SPI controller node names Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 082/109] firmware: dell_rbu: Make payload memory uncachable Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 083/109] Bluetooth: hci_serdev: clear HCI_UART_PROTO_READY to avoid closing proto races Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 084/109] Bluetooth: L2CAP: Detect if remote is not able to use the whole MPS Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 085/109] x86/hyperv: Suppress "PCI: Fatal: No config space access function found" Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 086/109] crypto: s5p-sss: Fix Fix argument list alignment Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 087/109] crypto: fix a memory leak in rsa-kcs1pad's encryption mode Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 088/109] iwlwifi: dbg: don't crash if the firmware crashes in the middle of a debug dump Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 089/109] iwlwifi: api: annotate compressed BA notif array sizes Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 090/109] iwlwifi: mvm: Allow TKIP for AP mode Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 091/109] scsi: NCR5380: Clear all unissued commands on host reset Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 092/109] scsi: NCR5380: Have NCR5380_select() return a bool Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 093/109] scsi: NCR5380: Withhold disconnect privilege for REQUEST SENSE Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 094/109] scsi: NCR5380: Use DRIVER_SENSE to indicate valid sense data Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 095/109] scsi: NCR5380: Check for invalid reselection target Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 096/109] scsi: NCR5380: Don't clear busy flag when abort fails Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 097/109] scsi: NCR5380: Don't call dsprintk() following reselection interrupt Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 098/109] scsi: NCR5380: Handle BUS FREE during reselection Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 099/109] scsi: NCR5380: Check for bus reset Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 100/109] arm64: dts: amd: Fix SPI bus warnings Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 101/109] arm64: dts: lg: Fix SPI controller node names Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 102/109] ARM: dts: lpc32xx: " Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 103/109] arm64: dts: rockchip: enable display nodes on rk3328-rock64 Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 104/109] rtc: armada38x: fix possible race condition Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 105/109] netfilter: masquerade: don't flush all conntracks if only one address deleted on device Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 106/109] usb: xhci-mtk: fix ISOC error when interval is zero Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 107/109] fuse: use READ_ONCE on congestion_threshold and max_background Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 108/109] IB/iser: Fix possible NULL deref at iser_inv_desc() Sasha Levin
2019-11-10  2:45 ` [PATCH AUTOSEL 4.14 109/109] net: phy: mdio-bcm-unimac: mark PM functions as __maybe_unused Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191110024541.31567-43-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=f.fainelli@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).