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: Thierry Reding <treding@nvidia.com> Link: https://lore.kernel.org/r/20191206140653.2085561-6-thierry.reding@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
482ba7a6b4
commit
96d8f628f0
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue