#include <linux/bcma/bcma.h>
#include <linux/delay.h>
#include <linux/err.h>
#include <linux/iopoll.h>
#include <linux/mdio.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/platform_device.h>
#include <linux/phy/phy.h>
#include <linux/property.h>
#include <linux/slab.h>
#define BCM_NS_USB3_PHY_BASE_ADDR_REG …
#define BCM_NS_USB3_PHY_PLL30_BLOCK …
#define BCM_NS_USB3_PHY_TX_PMD_BLOCK …
#define BCM_NS_USB3_PHY_PIPE_BLOCK …
#define BCM_NS_USB3_PLL_CONTROL …
#define BCM_NS_USB3_PLLA_CONTROL0 …
#define BCM_NS_USB3_PLLA_CONTROL1 …
#define BCM_NS_USB3_TX_PMD_CONTROL1 …
#define BCM_NS_USB3_LFPS_CMP …
#define BCM_NS_USB3_LFPS_DEGLITCH …
enum bcm_ns_family { … };
struct bcm_ns_usb3 { … };
static const struct of_device_id bcm_ns_usb3_id_table[] = …;
static int bcm_ns_usb3_mdio_phy_write(struct bcm_ns_usb3 *usb3, u16 reg,
u16 value);
static int bcm_ns_usb3_phy_init_ns_bx(struct bcm_ns_usb3 *usb3)
{ … }
static int bcm_ns_usb3_phy_init_ns_ax(struct bcm_ns_usb3 *usb3)
{ … }
static int bcm_ns_usb3_phy_init(struct phy *phy)
{ … }
static const struct phy_ops ops = …;
static int bcm_ns_usb3_mdio_phy_write(struct bcm_ns_usb3 *usb3, u16 reg,
u16 value)
{ … }
static int bcm_ns_usb3_mdio_probe(struct mdio_device *mdiodev)
{ … }
static struct mdio_driver bcm_ns_usb3_mdio_driver = …;
mdio_module_driver(bcm_ns_usb3_mdio_driver);
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_DEVICE_TABLE(of, bcm_ns_usb3_id_table);