linux/drivers/phy/marvell/phy-mvebu-a3700-utmi.c

// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (C) 2018 Marvell
 *
 * Authors:
 *   Igal Liberman <[email protected]>
 *   Miquèl Raynal <[email protected]>
 *
 * Marvell A3700 UTMI PHY driver
 */

#include <linux/io.h>
#include <linux/iopoll.h>
#include <linux/mfd/syscon.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/phy/phy.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>

/* Armada 3700 UTMI PHY registers */
#define USB2_PHY_PLL_CTRL_REG0
#define PLL_REF_DIV_OFF
#define PLL_REF_DIV_MASK
#define PLL_REF_DIV_5
#define PLL_FB_DIV_OFF
#define PLL_FB_DIV_MASK
#define PLL_FB_DIV_96
#define PLL_SEL_LPFR_OFF
#define PLL_SEL_LPFR_MASK
#define PLL_READY
#define USB2_PHY_CAL_CTRL
#define PHY_PLLCAL_DONE
#define PHY_IMPCAL_DONE
#define USB2_RX_CHAN_CTRL1
#define USB2PHY_SQCAL_DONE
#define USB2_PHY_OTG_CTRL
#define PHY_PU_OTG
#define USB2_PHY_CHRGR_DETECT
#define PHY_CDP_EN
#define PHY_DCP_EN
#define PHY_PD_EN
#define PHY_PU_CHRG_DTC
#define PHY_CDP_DM_AUTO
#define PHY_ENSWITCH_DP
#define PHY_ENSWITCH_DM

/* Armada 3700 USB miscellaneous registers */
#define USB2_PHY_CTRL(usb32)
#define RB_USB2PHY_PU
#define USB2_DP_PULLDN_DEV_MODE
#define USB2_DM_PULLDN_DEV_MODE
#define RB_USB2PHY_SUSPM(usb32)

#define PLL_LOCK_DELAY_US
#define PLL_LOCK_TIMEOUT_US

/**
 * struct mvebu_a3700_utmi_caps - PHY capabilities
 *
 * @usb32: Flag indicating which PHY is in use (impacts the register map):
 *           - The UTMI PHY wired to the USB3/USB2 controller (otg)
 *           - The UTMI PHY wired to the USB2 controller (host only)
 * @ops: PHY operations
 */
struct mvebu_a3700_utmi_caps {};

/**
 * struct mvebu_a3700_utmi - PHY driver data
 *
 * @regs: PHY registers
 * @usb_misc: Regmap with USB miscellaneous registers including PHY ones
 * @caps: PHY capabilities
 * @phy: PHY handle
 */
struct mvebu_a3700_utmi {};

static int mvebu_a3700_utmi_phy_power_on(struct phy *phy)
{}

static int mvebu_a3700_utmi_phy_power_off(struct phy *phy)
{}

static const struct phy_ops mvebu_a3700_utmi_phy_ops =;

static const struct mvebu_a3700_utmi_caps mvebu_a3700_utmi_otg_phy_caps =;

static const struct mvebu_a3700_utmi_caps mvebu_a3700_utmi_host_phy_caps =;

static const struct of_device_id mvebu_a3700_utmi_of_match[] =;
MODULE_DEVICE_TABLE(of, mvebu_a3700_utmi_of_match);

static int mvebu_a3700_utmi_phy_probe(struct platform_device *pdev)
{}

static struct platform_driver mvebu_a3700_utmi_driver =;
module_platform_driver();

MODULE_AUTHOR();
MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();