#include <linux/io.h>
#include <linux/clk.h>
#include <linux/usb.h>
#include <linux/extcon-provider.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/usb/otg.h>
#include <linux/mfd/retu.h>
#include <linux/usb/gadget.h>
#include <linux/platform_device.h>
#define DRIVER_NAME …
#define TAHVO_REG_IDSR …
#define TAHVO_REG_USBR …
#define USBR_SLAVE_CONTROL …
#define USBR_VPPVIO_SW …
#define USBR_SPEED …
#define USBR_REGOUT …
#define USBR_MASTER_SW2 …
#define USBR_MASTER_SW1 …
#define USBR_SLAVE_SW …
#define USBR_NSUSPEND …
#define USBR_SEMODE …
#define TAHVO_MODE_HOST …
#define TAHVO_MODE_PERIPHERAL …
struct tahvo_usb { … };
static const unsigned int tahvo_cable[] = …;
static ssize_t vbus_show(struct device *device,
struct device_attribute *attr, char *buf)
{ … }
static DEVICE_ATTR_RO(vbus);
static void check_vbus_state(struct tahvo_usb *tu)
{ … }
static void tahvo_usb_become_host(struct tahvo_usb *tu)
{ … }
static void tahvo_usb_stop_host(struct tahvo_usb *tu)
{ … }
static void tahvo_usb_become_peripheral(struct tahvo_usb *tu)
{ … }
static void tahvo_usb_stop_peripheral(struct tahvo_usb *tu)
{ … }
static void tahvo_usb_power_off(struct tahvo_usb *tu)
{ … }
static int tahvo_usb_set_suspend(struct usb_phy *dev, int suspend)
{ … }
static int tahvo_usb_set_host(struct usb_otg *otg, struct usb_bus *host)
{ … }
static int tahvo_usb_set_peripheral(struct usb_otg *otg,
struct usb_gadget *gadget)
{ … }
static irqreturn_t tahvo_usb_vbus_interrupt(int irq, void *_tu)
{ … }
static ssize_t otg_mode_show(struct device *device,
struct device_attribute *attr, char *buf)
{ … }
static ssize_t otg_mode_store(struct device *device,
struct device_attribute *attr,
const char *buf, size_t count)
{ … }
static DEVICE_ATTR_RW(otg_mode);
static struct attribute *tahvo_attrs[] = …;
ATTRIBUTE_GROUPS(…);
static int tahvo_usb_probe(struct platform_device *pdev)
{ … }
static void tahvo_usb_remove(struct platform_device *pdev)
{ … }
static struct platform_driver tahvo_usb_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;