Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

phy: qcom-qmp-pcie-msm8996: use bulk reset_control API

Switch qcom-qmp-pcie-msm8996 driver to use reset_control_bulk_assert /
_deassert functions rather than hardcoding the loops in the driver
itself.

Acked-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Tested-by: Bjorn Andersson <bjorn.andersson@linaro.org> # UFS, PCIe and USB on SC8180X
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20220607213203.2819885-30-dmitry.baryshkov@linaro.org
Signed-off-by: Vinod Koul <vkoul@kernel.org>

authored by

Dmitry Baryshkov and committed by
Vinod Koul
ccac0847 189ac6b8

+18 -31
+18 -31
drivers/phy/qualcomm/phy-qcom-qmp-pcie-msm8996.c
··· 340 340 struct device *dev; 341 341 342 342 struct clk_bulk_data *clks; 343 - struct reset_control **resets; 343 + struct reset_control_bulk_data *resets; 344 344 struct regulator_bulk_data *vregs; 345 345 346 346 struct qmp_phy **phys; ··· 489 489 struct qcom_qmp *qmp = qphy->qmp; 490 490 const struct qmp_phy_cfg *cfg = qphy->cfg; 491 491 void __iomem *serdes = qphy->serdes; 492 - int ret, i; 492 + int ret; 493 493 494 494 mutex_lock(&qmp->phy_mutex); 495 495 if (qmp->init_count++) { ··· 504 504 goto err_unlock; 505 505 } 506 506 507 - for (i = 0; i < cfg->num_resets; i++) { 508 - ret = reset_control_assert(qmp->resets[i]); 509 - if (ret) { 510 - dev_err(qmp->dev, "%s reset assert failed\n", 511 - cfg->reset_list[i]); 512 - goto err_disable_regulators; 513 - } 507 + ret = reset_control_bulk_assert(cfg->num_resets, qmp->resets); 508 + if (ret) { 509 + dev_err(qmp->dev, "reset assert failed\n"); 510 + goto err_disable_regulators; 514 511 } 515 512 516 - for (i = cfg->num_resets - 1; i >= 0; i--) { 517 - ret = reset_control_deassert(qmp->resets[i]); 518 - if (ret) { 519 - dev_err(qmp->dev, "%s reset deassert failed\n", 520 - qphy->cfg->reset_list[i]); 521 - goto err_assert_reset; 522 - } 513 + ret = reset_control_bulk_deassert(cfg->num_resets, qmp->resets); 514 + if (ret) { 515 + dev_err(qmp->dev, "reset deassert failed\n"); 516 + goto err_disable_regulators; 523 517 } 524 518 525 519 ret = clk_bulk_prepare_enable(cfg->num_clks, qmp->clks); ··· 528 534 return 0; 529 535 530 536 err_assert_reset: 531 - while (++i < cfg->num_resets) 532 - reset_control_assert(qmp->resets[i]); 537 + reset_control_bulk_assert(cfg->num_resets, qmp->resets); 533 538 err_disable_regulators: 534 539 regulator_bulk_disable(cfg->num_vregs, qmp->vregs); 535 540 err_unlock: ··· 542 549 struct qcom_qmp *qmp = qphy->qmp; 543 550 const struct qmp_phy_cfg *cfg = qphy->cfg; 544 551 void __iomem *serdes = qphy->serdes; 545 - int i = cfg->num_resets; 546 552 547 553 mutex_lock(&qmp->phy_mutex); 548 554 if (--qmp->init_count) { ··· 556 564 qphy_setbits(serdes, cfg->regs[QPHY_COM_POWER_DOWN_CONTROL], 557 565 SW_PWRDN); 558 566 559 - while (--i >= 0) 560 - reset_control_assert(qmp->resets[i]); 567 + reset_control_bulk_assert(cfg->num_resets, qmp->resets); 561 568 562 569 clk_bulk_disable_unprepare(cfg->num_clks, qmp->clks); 563 570 ··· 760 769 { 761 770 struct qcom_qmp *qmp = dev_get_drvdata(dev); 762 771 int i; 772 + int ret; 763 773 764 774 qmp->resets = devm_kcalloc(dev, cfg->num_resets, 765 775 sizeof(*qmp->resets), GFP_KERNEL); 766 776 if (!qmp->resets) 767 777 return -ENOMEM; 768 778 769 - for (i = 0; i < cfg->num_resets; i++) { 770 - struct reset_control *rst; 771 - const char *name = cfg->reset_list[i]; 779 + for (i = 0; i < cfg->num_resets; i++) 780 + qmp->resets[i].id = cfg->reset_list[i]; 772 781 773 - rst = devm_reset_control_get_exclusive(dev, name); 774 - if (IS_ERR(rst)) { 775 - dev_err(dev, "failed to get %s reset\n", name); 776 - return PTR_ERR(rst); 777 - } 778 - qmp->resets[i] = rst; 779 - } 782 + ret = devm_reset_control_bulk_get_exclusive(dev, cfg->num_resets, qmp->resets); 783 + if (ret) 784 + return dev_err_probe(dev, ret, "failed to get resets\n"); 780 785 781 786 return 0; 782 787 }