|
Mian Yousaf Kaukab |
242ace |
From: Thierry Reding <treding@nvidia.com>
|
|
Mian Yousaf Kaukab |
242ace |
Date: Fri, 6 Dec 2019 15:06:48 +0100
|
|
Mian Yousaf Kaukab |
242ace |
Subject: usb: host: xhci-tegra: Extract firmware enable helper
|
|
Mian Yousaf Kaukab |
242ace |
|
|
Mian Yousaf Kaukab |
242ace |
Git-commit: 96d8f628f0b35e1c1d93340cd4d2cde1ed3b8d9f
|
|
Mian Yousaf Kaukab |
242ace |
Patch-mainline: v5.6-rc1
|
|
Mian Yousaf Kaukab |
242ace |
References: bsc#1167765
|
|
Mian Yousaf Kaukab |
242ace |
|
|
Mian Yousaf Kaukab |
242ace |
Extract a helper that enables message generation from the firmware. This
|
|
Mian Yousaf Kaukab |
242ace |
removes clutter from tegra_xusb_probe() and will also come in useful for
|
|
Mian Yousaf Kaukab |
242ace |
subsequent patches that introduce suspend/resume support.
|
|
Mian Yousaf Kaukab |
242ace |
|
|
Mian Yousaf Kaukab |
242ace |
Based on work by JC Kuo <jckuo@nvidia.com>.
|
|
Mian Yousaf Kaukab |
242ace |
|
|
Mian Yousaf Kaukab |
242ace |
Signed-off-by: Thierry Reding <treding@nvidia.com>
|
|
Mian Yousaf Kaukab |
242ace |
Link: https://lore.kernel.org/r/20191206140653.2085561-6-thierry.reding@gmail.com
|
|
Mian Yousaf Kaukab |
242ace |
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
Mian Yousaf Kaukab |
242ace |
Signed-off-by: Mian Yousaf Kaukab <ykaukab@suse.de>
|
|
Mian Yousaf Kaukab |
242ace |
---
|
|
Mian Yousaf Kaukab |
242ace |
drivers/usb/host/xhci-tegra.c | 41 +++++++++++++++++++++++++++++------------
|
|
Mian Yousaf Kaukab |
242ace |
1 file changed, 29 insertions(+), 12 deletions(-)
|
|
Mian Yousaf Kaukab |
242ace |
|
|
Mian Yousaf Kaukab |
242ace |
diff --git a/drivers/usb/host/xhci-tegra.c b/drivers/usb/host/xhci-tegra.c
|
|
Mian Yousaf Kaukab |
242ace |
index eda5e1d50828..499104c05668 100644
|
|
Mian Yousaf Kaukab |
242ace |
--- a/drivers/usb/host/xhci-tegra.c
|
|
Mian Yousaf Kaukab |
242ace |
+++ b/drivers/usb/host/xhci-tegra.c
|
|
Mian Yousaf Kaukab |
242ace |
@@ -993,11 +993,37 @@ static int tegra_xusb_powerdomain_init(struct device *dev,
|
|
Mian Yousaf Kaukab |
242ace |
return 0;
|
|
Mian Yousaf Kaukab |
242ace |
}
|
|
Mian Yousaf Kaukab |
242ace |
|
|
Mian Yousaf Kaukab |
242ace |
-static int tegra_xusb_probe(struct platform_device *pdev)
|
|
Mian Yousaf Kaukab |
242ace |
+static int __tegra_xusb_enable_firmware_messages(struct tegra_xusb *tegra)
|
|
Mian Yousaf Kaukab |
242ace |
{
|
|
Mian Yousaf Kaukab |
242ace |
struct tegra_xusb_mbox_msg msg;
|
|
Mian Yousaf Kaukab |
242ace |
- struct resource *regs;
|
|
Mian Yousaf Kaukab |
242ace |
+ int err;
|
|
Mian Yousaf Kaukab |
242ace |
+
|
|
Mian Yousaf Kaukab |
242ace |
+ /* Enable firmware messages from controller. */
|
|
Mian Yousaf Kaukab |
242ace |
+ msg.cmd = MBOX_CMD_MSG_ENABLED;
|
|
Mian Yousaf Kaukab |
242ace |
+ msg.data = 0;
|
|
Mian Yousaf Kaukab |
242ace |
+
|
|
Mian Yousaf Kaukab |
242ace |
+ err = tegra_xusb_mbox_send(tegra, &msg;;
|
|
Mian Yousaf Kaukab |
242ace |
+ if (err < 0)
|
|
Mian Yousaf Kaukab |
242ace |
+ dev_err(tegra->dev, "failed to enable messages: %d\n", err);
|
|
Mian Yousaf Kaukab |
242ace |
+
|
|
Mian Yousaf Kaukab |
242ace |
+ return err;
|
|
Mian Yousaf Kaukab |
242ace |
+}
|
|
Mian Yousaf Kaukab |
242ace |
+
|
|
Mian Yousaf Kaukab |
242ace |
+static int tegra_xusb_enable_firmware_messages(struct tegra_xusb *tegra)
|
|
Mian Yousaf Kaukab |
242ace |
+{
|
|
Mian Yousaf Kaukab |
242ace |
+ int err;
|
|
Mian Yousaf Kaukab |
242ace |
+
|
|
Mian Yousaf Kaukab |
242ace |
+ mutex_lock(&tegra->lock);
|
|
Mian Yousaf Kaukab |
242ace |
+ err = __tegra_xusb_enable_firmware_messages(tegra);
|
|
Mian Yousaf Kaukab |
242ace |
+ mutex_unlock(&tegra->lock);
|
|
Mian Yousaf Kaukab |
242ace |
+
|
|
Mian Yousaf Kaukab |
242ace |
+ return err;
|
|
Mian Yousaf Kaukab |
242ace |
+}
|
|
Mian Yousaf Kaukab |
242ace |
+
|
|
Mian Yousaf Kaukab |
242ace |
+static int tegra_xusb_probe(struct platform_device *pdev)
|
|
Mian Yousaf Kaukab |
242ace |
+{
|
|
Mian Yousaf Kaukab |
242ace |
struct tegra_xusb *tegra;
|
|
Mian Yousaf Kaukab |
242ace |
+ struct resource *regs;
|
|
Mian Yousaf Kaukab |
242ace |
struct xhci_hcd *xhci;
|
|
Mian Yousaf Kaukab |
242ace |
unsigned int i, j, k;
|
|
Mian Yousaf Kaukab |
242ace |
struct phy *phy;
|
|
Mian Yousaf Kaukab |
242ace |
@@ -1277,21 +1303,12 @@ static int tegra_xusb_probe(struct platform_device *pdev)
|
|
Mian Yousaf Kaukab |
242ace |
goto put_usb3;
|
|
Mian Yousaf Kaukab |
242ace |
}
|
|
Mian Yousaf Kaukab |
242ace |
|
|
Mian Yousaf Kaukab |
242ace |
- mutex_lock(&tegra->lock);
|
|
Mian Yousaf Kaukab |
242ace |
-
|
|
Mian Yousaf Kaukab |
242ace |
- /* Enable firmware messages from controller. */
|
|
Mian Yousaf Kaukab |
242ace |
- msg.cmd = MBOX_CMD_MSG_ENABLED;
|
|
Mian Yousaf Kaukab |
242ace |
- msg.data = 0;
|
|
Mian Yousaf Kaukab |
242ace |
-
|
|
Mian Yousaf Kaukab |
242ace |
- err = tegra_xusb_mbox_send(tegra, &msg;;
|
|
Mian Yousaf Kaukab |
242ace |
+ err = tegra_xusb_enable_firmware_messages(tegra);
|
|
Mian Yousaf Kaukab |
242ace |
if (err < 0) {
|
|
Mian Yousaf Kaukab |
242ace |
dev_err(&pdev->dev, "failed to enable messages: %d\n", err);
|
|
Mian Yousaf Kaukab |
242ace |
- mutex_unlock(&tegra->lock);
|
|
Mian Yousaf Kaukab |
242ace |
goto remove_usb3;
|
|
Mian Yousaf Kaukab |
242ace |
}
|
|
Mian Yousaf Kaukab |
242ace |
|
|
Mian Yousaf Kaukab |
242ace |
- mutex_unlock(&tegra->lock);
|
|
Mian Yousaf Kaukab |
242ace |
-
|
|
Mian Yousaf Kaukab |
242ace |
err = devm_request_threaded_irq(&pdev->dev, tegra->mbox_irq,
|
|
Mian Yousaf Kaukab |
242ace |
tegra_xusb_mbox_irq,
|
|
Mian Yousaf Kaukab |
242ace |
tegra_xusb_mbox_thread, 0,
|
|
Mian Yousaf Kaukab |
242ace |
--
|
|
Mian Yousaf Kaukab |
242ace |
2.16.4
|
|
Mian Yousaf Kaukab |
242ace |
|