#include <linux/clk.h>
#include <linux/i2c.h>
#include <linux/gpio/consumer.h>
#include <linux/delay.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/platform_data/usb3503.h>
#include <linux/regmap.h>
#define USB3503_VIDL …
#define USB3503_VIDM …
#define USB3503_PIDL …
#define USB3503_PIDM …
#define USB3503_DIDL …
#define USB3503_DIDM …
#define USB3503_CFG1 …
#define USB3503_SELF_BUS_PWR …
#define USB3503_CFG2 …
#define USB3503_CFG3 …
#define USB3503_NRD …
#define USB3503_PDS …
#define USB3503_SP_ILOCK …
#define USB3503_SPILOCK_CONNECT …
#define USB3503_SPILOCK_CONFIG …
#define USB3503_CFGP …
#define USB3503_CLKSUSP …
#define USB3503_RESET …
struct usb3503 { … };
static int usb3503_connect(struct usb3503 *hub)
{ … }
static int usb3503_switch_mode(struct usb3503 *hub, enum usb3503_mode mode)
{ … }
static const struct regmap_config usb3503_regmap_config = …;
static int usb3503_probe(struct usb3503 *hub)
{ … }
static int usb3503_i2c_probe(struct i2c_client *i2c)
{ … }
static void usb3503_i2c_remove(struct i2c_client *i2c)
{ … }
static int usb3503_platform_probe(struct platform_device *pdev)
{ … }
static void usb3503_platform_remove(struct platform_device *pdev)
{ … }
static int __maybe_unused usb3503_suspend(struct usb3503 *hub)
{ … }
static int __maybe_unused usb3503_resume(struct usb3503 *hub)
{ … }
static int __maybe_unused usb3503_i2c_suspend(struct device *dev)
{ … }
static int __maybe_unused usb3503_i2c_resume(struct device *dev)
{ … }
static int __maybe_unused usb3503_platform_suspend(struct device *dev)
{ … }
static int __maybe_unused usb3503_platform_resume(struct device *dev)
{ … }
static SIMPLE_DEV_PM_OPS(usb3503_i2c_pm_ops, usb3503_i2c_suspend,
usb3503_i2c_resume);
static SIMPLE_DEV_PM_OPS(usb3503_platform_pm_ops, usb3503_platform_suspend,
usb3503_platform_resume);
static const struct i2c_device_id usb3503_id[] = …;
MODULE_DEVICE_TABLE(i2c, usb3503_id);
#ifdef CONFIG_OF
static const struct of_device_id usb3503_of_match[] = …;
MODULE_DEVICE_TABLE(of, usb3503_of_match);
#endif
static struct i2c_driver usb3503_i2c_driver = …;
static struct platform_driver usb3503_platform_driver = …;
static int __init usb3503_init(void)
{ … }
module_init(…) …;
static void __exit usb3503_exit(void)
{ … }
module_exit(usb3503_exit);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;