Commit 96d8f628 authored by Thierry Reding's avatar Thierry Reding Committed by Greg Kroah-Hartman

usb: host: xhci-tegra: Extract firmware enable helper

Extract a helper that enables message generation from the firmware. This
removes clutter from tegra_xusb_probe() and will also come in useful for
subsequent patches that introduce suspend/resume support.

Based on work by JC Kuo <jckuo@nvidia.com>.
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
Link: https://lore.kernel.org/r/20191206140653.2085561-6-thierry.reding@gmail.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 482ba7a6
......@@ -993,11 +993,37 @@ static int tegra_xusb_powerdomain_init(struct device *dev,
return 0;
}
static int tegra_xusb_probe(struct platform_device *pdev)
static int __tegra_xusb_enable_firmware_messages(struct tegra_xusb *tegra)
{
struct tegra_xusb_mbox_msg msg;
struct resource *regs;
int err;
/* Enable firmware messages from controller. */
msg.cmd = MBOX_CMD_MSG_ENABLED;
msg.data = 0;
err = tegra_xusb_mbox_send(tegra, &msg);
if (err < 0)
dev_err(tegra->dev, "failed to enable messages: %d\n", err);
return err;
}
static int tegra_xusb_enable_firmware_messages(struct tegra_xusb *tegra)
{
int err;
mutex_lock(&tegra->lock);
err = __tegra_xusb_enable_firmware_messages(tegra);
mutex_unlock(&tegra->lock);
return err;
}
static int tegra_xusb_probe(struct platform_device *pdev)
{
struct tegra_xusb *tegra;
struct resource *regs;
struct xhci_hcd *xhci;
unsigned int i, j, k;
struct phy *phy;
......@@ -1277,21 +1303,12 @@ static int tegra_xusb_probe(struct platform_device *pdev)
goto put_usb3;
}
mutex_lock(&tegra->lock);
/* Enable firmware messages from controller. */
msg.cmd = MBOX_CMD_MSG_ENABLED;
msg.data = 0;
err = tegra_xusb_mbox_send(tegra, &msg);
err = tegra_xusb_enable_firmware_messages(tegra);
if (err < 0) {
dev_err(&pdev->dev, "failed to enable messages: %d\n", err);
mutex_unlock(&tegra->lock);
goto remove_usb3;
}
mutex_unlock(&tegra->lock);
err = devm_request_threaded_irq(&pdev->dev, tegra->mbox_irq,
tegra_xusb_mbox_irq,
tegra_xusb_mbox_thread, 0,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment