Skip to content

Commit

Permalink
phy: qcom-qmp-usb: clean up probe initialisation
Browse files Browse the repository at this point in the history
Stop abusing the driver data pointer and instead pass the driver state
structure directly to the initialisation helpers during probe.

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Link: https://lore.kernel.org/r/20221028160435.26948-8-johan+linaro@kernel.org
Signed-off-by: Vinod Koul <vkoul@kernel.org>
  • Loading branch information
Johan Hovold authored and Vinod Koul committed Nov 5, 2022
1 parent 8ec02ba commit 413db06
Showing 1 changed file with 22 additions and 24 deletions.
46 changes: 22 additions & 24 deletions drivers/phy/qualcomm/phy-qcom-qmp-usb.c
Original file line number Diff line number Diff line change
Expand Up @@ -2250,9 +2250,10 @@ static const struct dev_pm_ops qmp_usb_pm_ops = {
qmp_usb_runtime_resume, NULL)
};

static int qmp_usb_vreg_init(struct device *dev, const struct qmp_phy_cfg *cfg)
static int qmp_usb_vreg_init(struct qmp_usb *qmp)
{
struct qmp_usb *qmp = dev_get_drvdata(dev);
const struct qmp_phy_cfg *cfg = qmp->cfg;
struct device *dev = qmp->dev;
int num = cfg->num_vregs;
int i;

Expand All @@ -2266,9 +2267,10 @@ static int qmp_usb_vreg_init(struct device *dev, const struct qmp_phy_cfg *cfg)
return devm_regulator_bulk_get(dev, num, qmp->vregs);
}

static int qmp_usb_reset_init(struct device *dev, const struct qmp_phy_cfg *cfg)
static int qmp_usb_reset_init(struct qmp_usb *qmp)
{
struct qmp_usb *qmp = dev_get_drvdata(dev);
const struct qmp_phy_cfg *cfg = qmp->cfg;
struct device *dev = qmp->dev;
int i;
int ret;

Expand All @@ -2287,9 +2289,10 @@ static int qmp_usb_reset_init(struct device *dev, const struct qmp_phy_cfg *cfg)
return 0;
}

static int qmp_usb_clk_init(struct device *dev, const struct qmp_phy_cfg *cfg)
static int qmp_usb_clk_init(struct qmp_usb *qmp)
{
struct qmp_usb *qmp = dev_get_drvdata(dev);
const struct qmp_phy_cfg *cfg = qmp->cfg;
struct device *dev = qmp->dev;
int num = cfg->num_clks;
int i;

Expand Down Expand Up @@ -2385,10 +2388,10 @@ static void __iomem *qmp_usb_iomap(struct device *dev, struct device_node *np,
return devm_of_iomap(dev, np, index, NULL);
}

static int qmp_usb_create(struct device *dev, struct device_node *np,
void __iomem *serdes, const struct qmp_phy_cfg *cfg)
static int qmp_usb_create(struct qmp_usb *qmp, struct device_node *np)
{
struct qmp_usb *qmp = dev_get_drvdata(dev);
const struct qmp_phy_cfg *cfg = qmp->cfg;
struct device *dev = qmp->dev;
struct phy *generic_phy;
bool exclusive = true;
int ret;
Expand All @@ -2402,8 +2405,6 @@ static int qmp_usb_create(struct device *dev, struct device_node *np,
if (of_device_is_compatible(dev->of_node, "qcom,sm8350-qmp-usb3-uni-phy"))
exclusive = false;

qmp->cfg = cfg;
qmp->serdes = serdes;
/*
* Get memory resources for the PHY:
* Resources are indexed as: tx -> 0; rx -> 1; pcs -> 2.
Expand Down Expand Up @@ -2468,8 +2469,6 @@ static int qmp_usb_probe(struct platform_device *pdev)
struct device *dev = &pdev->dev;
struct device_node *child;
struct phy_provider *phy_provider;
void __iomem *serdes;
const struct qmp_phy_cfg *cfg = NULL;
struct qmp_usb *qmp;
int ret;

Expand All @@ -2478,31 +2477,30 @@ static int qmp_usb_probe(struct platform_device *pdev)
return -ENOMEM;

qmp->dev = dev;
dev_set_drvdata(dev, qmp);

cfg = of_device_get_match_data(dev);
if (!cfg)
qmp->cfg = of_device_get_match_data(dev);
if (!qmp->cfg)
return -EINVAL;

serdes = devm_platform_ioremap_resource(pdev, 0);
if (IS_ERR(serdes))
return PTR_ERR(serdes);
qmp->serdes = devm_platform_ioremap_resource(pdev, 0);
if (IS_ERR(qmp->serdes))
return PTR_ERR(qmp->serdes);

if (cfg->has_phy_dp_com_ctrl) {
if (qmp->cfg->has_phy_dp_com_ctrl) {
qmp->dp_com = devm_platform_ioremap_resource(pdev, 1);
if (IS_ERR(qmp->dp_com))
return PTR_ERR(qmp->dp_com);
}

ret = qmp_usb_clk_init(dev, cfg);
ret = qmp_usb_clk_init(qmp);
if (ret)
return ret;

ret = qmp_usb_reset_init(dev, cfg);
ret = qmp_usb_reset_init(qmp);
if (ret)
return ret;

ret = qmp_usb_vreg_init(dev, cfg);
ret = qmp_usb_vreg_init(qmp);
if (ret)
return ret;

Expand All @@ -2520,7 +2518,7 @@ static int qmp_usb_probe(struct platform_device *pdev)
*/
pm_runtime_forbid(dev);

ret = qmp_usb_create(dev, child, serdes, cfg);
ret = qmp_usb_create(qmp, child);
if (ret)
goto err_node_put;

Expand Down

0 comments on commit 413db06

Please sign in to comment.