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

// SPDX-License-Identifier: GPL-2.0+
/*
 * ehci-omap.c - driver for USBHOST on OMAP3/4 processors
 *
 * Bus Glue for the EHCI controllers in OMAP3/4
 * Tested on several OMAP3 boards, and OMAP4 Pandaboard
 *
 * Copyright (C) 2007-2013 Texas Instruments, Inc.
 *	Author: Vikram Pandita <vikram.pandita@ti.com>
 *	Author: Anand Gadiyar <gadiyar@ti.com>
 *	Author: Keshava Munegowda <keshava_mgowda@ti.com>
 *	Author: Roger Quadros <rogerq@ti.com>
 *
 * Copyright (C) 2009 Nokia Corporation
 *	Contact: Felipe Balbi <felipe.balbi@nokia.com>
 *
 * Based on "ehci-fsl.c" and "ehci-au1xxx.c" ehci glue layers
 */

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/io.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/usb/ulpi.h>
#include <linux/pm_runtime.h>
#include <linux/clk.h>
#include <linux/usb.h>
#include <linux/usb/hcd.h>
#include <linux/of.h>
#include <linux/dma-mapping.h>

#include "ehci.h"

#include <linux/platform_data/usb-omap.h>

/* EHCI Register Set */
#define EHCI_INSNREG04
#define EHCI_INSNREG04_DISABLE_UNSUSPEND
#define EHCI_INSNREG05_ULPI
#define EHCI_INSNREG05_ULPI_CONTROL_SHIFT
#define EHCI_INSNREG05_ULPI_PORTSEL_SHIFT
#define EHCI_INSNREG05_ULPI_OPSEL_SHIFT
#define EHCI_INSNREG05_ULPI_REGADD_SHIFT
#define EHCI_INSNREG05_ULPI_EXTREGADD_SHIFT
#define EHCI_INSNREG05_ULPI_WRDATA_SHIFT

#define DRIVER_DESC

static const char hcd_name[] =;

/*-------------------------------------------------------------------------*/

struct omap_hcd {};

static inline void ehci_write(void __iomem *base, u32 reg, u32 val)
{}

/* configure so an HC device and id are always provided */
/* always called with process context; sleeping is OK */

static struct hc_driver __read_mostly ehci_omap_hc_driver;

static const struct ehci_driver_overrides ehci_omap_overrides __initconst =;

/**
 * ehci_hcd_omap_probe - initialize TI-based HCDs
 * @pdev: Pointer to this platform device's information
 *
 * Allocates basic resources for this USB host controller, and
 * then invokes the start() method for the HCD associated with it
 * through the hotplug entry's driver_data.
 */
static int ehci_hcd_omap_probe(struct platform_device *pdev)
{}


/**
 * ehci_hcd_omap_remove - shutdown processing for EHCI HCDs
 * @pdev: USB Host Controller being removed
 *
 * Reverses the effect of usb_ehci_hcd_omap_probe(), first invoking
 * the HCD's stop() method.  It is always called from a thread
 * context, normally "rmmod", "apmd", or something similar.
 */
static void ehci_hcd_omap_remove(struct platform_device *pdev)
{}

static const struct of_device_id omap_ehci_dt_ids[] =;

MODULE_DEVICE_TABLE(of, omap_ehci_dt_ids);

static struct platform_driver ehci_hcd_omap_driver =;

/*-------------------------------------------------------------------------*/

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

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

MODULE_ALIAS();
MODULE_AUTHOR();
MODULE_AUTHOR();
MODULE_AUTHOR();

MODULE_DESCRIPTION();
MODULE_LICENSE();