#include <linux/gpio/consumer.h>
#include <linux/kernel.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/notifier.h>
#include <linux/platform_device.h>
#include <linux/property.h>
#include <linux/regulator/consumer.h>
#include <linux/slab.h>
#include <linux/usb/role.h>
#define DEVICE_DRIVER_NAME …
#define HUB_VBUS_POWER_ON …
#define HUB_VBUS_POWER_OFF …
#define USB_SWITCH_TO_HUB …
#define USB_SWITCH_TO_TYPEC …
#define TYPEC_VBUS_POWER_ON …
#define TYPEC_VBUS_POWER_OFF …
struct hisi_hikey_usb { … };
static void hub_power_ctrl(struct hisi_hikey_usb *hisi_hikey_usb, int value)
{ … }
static void usb_switch_ctrl(struct hisi_hikey_usb *hisi_hikey_usb,
int switch_to)
{ … }
static void usb_typec_power_ctrl(struct hisi_hikey_usb *hisi_hikey_usb,
int value)
{ … }
static void relay_set_role_switch(struct work_struct *work)
{ … }
static int hub_usb_role_switch_set(struct usb_role_switch *sw, enum usb_role role)
{ … }
static int hisi_hikey_usb_of_role_switch(struct platform_device *pdev,
struct hisi_hikey_usb *hisi_hikey_usb)
{ … }
static int hisi_hikey_usb_probe(struct platform_device *pdev)
{ … }
static void hisi_hikey_usb_remove(struct platform_device *pdev)
{ … }
static const struct of_device_id id_table_hisi_hikey_usb[] = …;
MODULE_DEVICE_TABLE(of, id_table_hisi_hikey_usb);
static struct platform_driver hisi_hikey_usb_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;