Commit 73faaa62 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Merge tag 'phy-for-5.7-rc' of...

Merge tag 'phy-for-5.7-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy

 into char-misc-linus

phy: for 5.7 -rc

*) Update MAINTAINER to include Vinod Koul as co-maintainer of PHY
*) Fix Kconfig dependencies in seen with PHY_TEGRA_XUSB
*) Re-add "qcom,sdm845-qusb2-phy" compatible in phy-qcom-qusb2.c to
   make it work with existing dtbs
*) Move clock enable from ->poweron() to ->init() in Qualcomm
   usb-hs-28nm driver to initialize HW in ->init()

Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>

* tag 'phy-for-5.7-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy:
  phy: qualcomm: usb-hs-28nm: Prepare clocks in init
  MAINTAINERS: Add Vinod Koul as Generic PHY co-maintainer
  phy: qcom-qusb2: Re add "qcom,sdm845-qusb2-phy" compat string
  phy: tegra: Select USB_COMMON for usb_get_maximum_speed()
parents 5409e0cc 820eeb9d
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -7119,9 +7119,10 @@ F: include/uapi/asm-generic/
GENERIC PHY FRAMEWORK
M:	Kishon Vijay Abraham I <kishon@ti.com>
M:	Vinod Koul <vkoul@kernel.org>
L:	linux-kernel@vger.kernel.org
S:	Supported
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/kishon/linux-phy.git
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy.git
F:	Documentation/devicetree/bindings/phy/
F:	drivers/phy/
F:	include/linux/phy/
+7 −0
Original line number Diff line number Diff line
@@ -815,6 +815,13 @@ static const struct of_device_id qusb2_phy_of_match_table[] = {
	}, {
		.compatible	= "qcom,msm8998-qusb2-phy",
		.data		= &msm8998_phy_cfg,
	}, {
		/*
		 * Deprecated. Only here to support legacy device
		 * trees that didn't include "qcom,qusb2-v2-phy"
		 */
		.compatible	= "qcom,sdm845-qusb2-phy",
		.data		= &qusb2_v2_phy_cfg,
	}, {
		.compatible	= "qcom,qusb2-v2-phy",
		.data		= &qusb2_v2_phy_cfg,
+21 −11
Original line number Diff line number Diff line
@@ -160,18 +160,11 @@ static int qcom_snps_hsphy_power_on(struct phy *phy)
	ret = regulator_bulk_enable(VREG_NUM, priv->vregs);
	if (ret)
		return ret;
	ret = clk_bulk_prepare_enable(priv->num_clks, priv->clks);
	if (ret)
		goto err_disable_regulator;

	qcom_snps_hsphy_disable_hv_interrupts(priv);
	qcom_snps_hsphy_exit_retention(priv);

	return 0;

err_disable_regulator:
	regulator_bulk_disable(VREG_NUM, priv->vregs);

	return ret;
}

static int qcom_snps_hsphy_power_off(struct phy *phy)
@@ -180,7 +173,6 @@ static int qcom_snps_hsphy_power_off(struct phy *phy)

	qcom_snps_hsphy_enter_retention(priv);
	qcom_snps_hsphy_enable_hv_interrupts(priv);
	clk_bulk_disable_unprepare(priv->num_clks, priv->clks);
	regulator_bulk_disable(VREG_NUM, priv->vregs);

	return 0;
@@ -266,21 +258,39 @@ static int qcom_snps_hsphy_init(struct phy *phy)
	struct hsphy_priv *priv = phy_get_drvdata(phy);
	int ret;

	ret = qcom_snps_hsphy_reset(priv);
	ret = clk_bulk_prepare_enable(priv->num_clks, priv->clks);
	if (ret)
		return ret;

	ret = qcom_snps_hsphy_reset(priv);
	if (ret)
		goto disable_clocks;

	qcom_snps_hsphy_init_sequence(priv);

	ret = qcom_snps_hsphy_por_reset(priv);
	if (ret)
		goto disable_clocks;

	return 0;

disable_clocks:
	clk_bulk_disable_unprepare(priv->num_clks, priv->clks);
	return ret;
}

static int qcom_snps_hsphy_exit(struct phy *phy)
{
	struct hsphy_priv *priv = phy_get_drvdata(phy);

	clk_bulk_disable_unprepare(priv->num_clks, priv->clks);

	return 0;
}

static const struct phy_ops qcom_snps_hsphy_ops = {
	.init = qcom_snps_hsphy_init,
	.exit = qcom_snps_hsphy_exit,
	.power_on = qcom_snps_hsphy_power_on,
	.power_off = qcom_snps_hsphy_power_off,
	.set_mode = qcom_snps_hsphy_set_mode,