#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/err.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/phy/phy.h>
#include <linux/platform_device.h>
#include <linux/interrupt.h>
#include <linux/soc/brcmstb/brcmstb.h>
#include <dt-bindings/phy/phy.h>
#include <linux/mfd/syscon.h>
#include <linux/suspend.h>
#include "phy-brcm-usb-init.h"
static DEFINE_MUTEX(sysfs_lock);
enum brcm_usb_phy_id { … };
struct value_to_name_map { … };
struct match_chip_info { … };
static const struct value_to_name_map brcm_dr_mode_to_name[] = …;
static const struct value_to_name_map brcm_dual_mode_to_name[] = …;
struct brcm_usb_phy { … };
struct brcm_usb_phy_data { … };
static s8 *node_reg_names[BRCM_REGS_MAX] = …;
static int brcm_pm_notifier(struct notifier_block *notifier,
unsigned long pm_event,
void *unused)
{ … }
static irqreturn_t brcm_usb_phy_wake_isr(int irq, void *dev_id)
{ … }
static int brcm_usb_phy_init(struct phy *gphy)
{ … }
static int brcm_usb_phy_exit(struct phy *gphy)
{ … }
static const struct phy_ops brcm_usb_phy_ops = …;
static struct phy *brcm_usb_phy_xlate(struct device *dev,
const struct of_phandle_args *args)
{ … }
static int name_to_value(const struct value_to_name_map *table, int count,
const char *name, int *value)
{ … }
static const char *value_to_name(const struct value_to_name_map *table, int count,
int value)
{ … }
static ssize_t dr_mode_show(struct device *dev,
struct device_attribute *attr,
char *buf)
{ … }
static DEVICE_ATTR_RO(dr_mode);
static ssize_t dual_select_store(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t len)
{ … }
static ssize_t dual_select_show(struct device *dev,
struct device_attribute *attr,
char *buf)
{ … }
static DEVICE_ATTR_RW(dual_select);
static struct attribute *brcm_usb_phy_attrs[] = …;
static const struct attribute_group brcm_usb_phy_group = …;
static const struct match_chip_info chip_info_4908 = …;
static const struct match_chip_info chip_info_7216 = …;
static const struct match_chip_info chip_info_7211b0 = …;
static const struct match_chip_info chip_info_7445 = …;
static const struct of_device_id brcm_usb_dt_ids[] = …;
static int brcm_usb_get_regs(struct platform_device *pdev,
enum brcmusb_reg_sel regs,
struct brcm_usb_init_params *ini,
bool optional)
{ … }
static int brcm_usb_phy_dvr_init(struct platform_device *pdev,
struct brcm_usb_phy_data *priv,
struct device_node *dn)
{ … }
static int brcm_usb_phy_probe(struct platform_device *pdev)
{ … }
static void brcm_usb_phy_remove(struct platform_device *pdev)
{ … }
#ifdef CONFIG_PM_SLEEP
static int brcm_usb_phy_suspend(struct device *dev)
{ … }
static int brcm_usb_phy_resume(struct device *dev)
{ … }
#endif
static const struct dev_pm_ops brcm_usb_phy_pm_ops = …;
MODULE_DEVICE_TABLE(of, brcm_usb_dt_ids);
static struct platform_driver brcm_usb_driver = …;
module_platform_driver(…) …;
MODULE_ALIAS(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;