linux/drivers/usb/host/ehci-platform.c

// SPDX-License-Identifier: GPL-2.0
/*
 * Generic platform ehci driver
 *
 * Copyright 2007 Steven Brown <[email protected]>
 * Copyright 2010-2012 Hauke Mehrtens <[email protected]>
 * Copyright 2014 Hans de Goede <[email protected]>
 *
 * Derived from the ohci-ssb driver
 * Copyright 2007 Michael Buesch <[email protected]>
 *
 * Derived from the EHCI-PCI driver
 * Copyright (c) 2000-2004 by David Brownell
 *
 * Derived from the ohci-pci driver
 * Copyright 1999 Roman Weissgaerber
 * Copyright 2000-2002 David Brownell
 * Copyright 1999 Linus Torvalds
 * Copyright 1999 Gregory P. Smith
 */
#include <linux/acpi.h>
#include <linux/clk.h>
#include <linux/dma-mapping.h>
#include <linux/err.h>
#include <linux/kernel.h>
#include <linux/hrtimer.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/reset.h>
#include <linux/sys_soc.h>
#include <linux/timer.h>
#include <linux/usb.h>
#include <linux/usb/hcd.h>
#include <linux/usb/ehci_pdriver.h>
#include <linux/usb/of.h>

#include "ehci.h"

#define DRIVER_DESC
#define EHCI_MAX_CLKS
#define hcd_to_ehci_priv(h)

#define BCM_USB_FIFO_THRESHOLD

struct ehci_platform_priv {};

static int ehci_platform_reset(struct usb_hcd *hcd)
{}

static int ehci_platform_power_on(struct platform_device *dev)
{}

static void ehci_platform_power_off(struct platform_device *dev)
{}

static struct hc_driver __read_mostly ehci_platform_hc_driver;

static const struct ehci_driver_overrides platform_overrides __initconst =;

static struct usb_ehci_pdata ehci_platform_defaults =;

/**
 * quirk_poll_check_port_status - Poll port_status if the device sticks
 * @ehci: the ehci hcd pointer
 *
 * Since EHCI/OHCI controllers on R-Car Gen3 SoCs are possible to be getting
 * stuck very rarely after a full/low usb device was disconnected. To
 * detect such a situation, the controllers require a special way which poll
 * the EHCI PORTSC register.
 *
 * Return: true if the controller's port_status indicated getting stuck
 */
static bool quirk_poll_check_port_status(struct ehci_hcd *ehci)
{}

/**
 * quirk_poll_rebind_companion - rebind comanion device to recover
 * @ehci: the ehci hcd pointer
 *
 * Since EHCI/OHCI controllers on R-Car Gen3 SoCs are possible to be getting
 * stuck very rarely after a full/low usb device was disconnected. To
 * recover from such a situation, the controllers require changing the OHCI
 * functional state.
 */
static void quirk_poll_rebind_companion(struct ehci_hcd *ehci)
{}

static void quirk_poll_work(struct work_struct *work)
{}

static void quirk_poll_timer(struct timer_list *t)
{}

static void quirk_poll_init(struct ehci_platform_priv *priv)
{}

static void quirk_poll_end(struct ehci_platform_priv *priv)
{}

static const struct soc_device_attribute quirk_poll_match[] =;

static int ehci_platform_probe(struct platform_device *dev)
{}

static void ehci_platform_remove(struct platform_device *dev)
{}

static int __maybe_unused ehci_platform_suspend(struct device *dev)
{}

static int __maybe_unused ehci_platform_resume(struct device *dev)
{}

static const struct of_device_id vt8500_ehci_ids[] =;
MODULE_DEVICE_TABLE(of, vt8500_ehci_ids);

#ifdef CONFIG_ACPI
static const struct acpi_device_id ehci_acpi_match[] =;
MODULE_DEVICE_TABLE(acpi, ehci_acpi_match);
#endif

static const struct platform_device_id ehci_platform_table[] =;
MODULE_DEVICE_TABLE(platform, ehci_platform_table);

static SIMPLE_DEV_PM_OPS(ehci_platform_pm_ops, ehci_platform_suspend,
	ehci_platform_resume);

static struct platform_driver ehci_platform_driver =;

static int __init ehci_platform_init(void)
{}
module_init();

static void __exit ehci_platform_cleanup(void)
{}
module_exit(ehci_platform_cleanup);

MODULE_DESCRIPTION();
MODULE_AUTHOR();
MODULE_AUTHOR();
MODULE_LICENSE();