Merge "disp: msm: dp: Add support for USB3 GDSC vote from displayport driver"

This commit is contained in:
qctecmdr
2022-03-02 09:06:37 -08:00
committed by Gerrit - the friendly Code Review server
2 changed files with 30 additions and 0 deletions

View File

@@ -81,6 +81,23 @@ static void dp_power_regulator_deinit(struct dp_power_private *power)
}
}
static void dp_power_phy_gdsc(struct dp_power *dp_power, bool on)
{
int rc = 0;
if (IS_ERR_OR_NULL(dp_power->dp_phy_gdsc))
return;
if (on)
rc = regulator_enable(dp_power->dp_phy_gdsc);
else
rc = regulator_disable(dp_power->dp_phy_gdsc);
if (rc)
DP_ERR("Fail to %s dp_phy_gdsc regulator ret =%d\n",
on ? "enable" : "disable", rc);
}
static int dp_power_regulator_ctrl(struct dp_power_private *power, bool enable)
{
int rc = 0, i = 0, j = 0;
@@ -94,6 +111,8 @@ static int dp_power_regulator_ctrl(struct dp_power_private *power, bool enable)
* on the link configuration.
*/
if (i == DP_PLL_PM) {
/* DP GDSC vote is needed for new chipsets, define gdsc phandle if needed */
dp_power_phy_gdsc(&power->dp_power, enable);
DP_DEBUG("skipping: '%s' vregs for %s\n",
enable ? "enable" : "disable",
dp_parser_pm_name(i));
@@ -822,6 +841,7 @@ struct dp_power *dp_power_get(struct dp_parser *parser, struct dp_pll *pll)
int rc = 0;
struct dp_power_private *power;
struct dp_power *dp_power;
struct device *dev;
if (!parser || !pll) {
DP_ERR("invalid input\n");
@@ -840,6 +860,7 @@ struct dp_power *dp_power_get(struct dp_parser *parser, struct dp_pll *pll)
power->pdev = parser->pdev;
dp_power = &power->dp_power;
dev = &power->pdev->dev;
dp_power->init = dp_power_init;
dp_power->deinit = dp_power_deinit;
@@ -852,6 +873,12 @@ struct dp_power *dp_power_get(struct dp_parser *parser, struct dp_pll *pll)
dp_power->power_client_deinit = dp_power_client_deinit;
dp_power->power_mmrm_init = dp_power_mmrm_init;
dp_power->dp_phy_gdsc = devm_regulator_get(dev, "dp_phy_gdsc");
if (IS_ERR(dp_power->dp_phy_gdsc)) {
dp_power->dp_phy_gdsc = NULL;
DP_DEBUG("Optional GDSC regulator is missing\n");
}
return dp_power;
error:
return ERR_PTR(rc);

View File

@@ -1,5 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2021-2022, Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
*/
@@ -13,6 +14,7 @@
/**
* sruct dp_power - DisplayPort's power related data
*
* @dp_phy_gdsc: GDSC regulator
* @init: initializes the regulators/core clocks/GPIOs/pinctrl
* @deinit: turns off the regulators/core clocks/GPIOs/pinctrl
* @clk_enable: enable/disable the DP clocks
@@ -27,6 +29,7 @@
struct dp_power {
struct drm_device *drm_dev;
struct sde_power_handle *phandle;
struct regulator *dp_phy_gdsc;
int (*init)(struct dp_power *power, bool flip);
int (*deinit)(struct dp_power *power);
int (*clk_enable)(struct dp_power *power, enum dp_pm_type pm_type,