Skip to content

Commit 6b34ec6

Browse files
Sam Protsenkovinodkoul
authored andcommitted
phy: exynos5-usbdrd: Make it possible to pass custom phy ops
Provide a way to use different PHY ops for different chips. Right now all chips are using exynos5_usbdrd_phy_ops, but it won't always be the case. For example, Exynos850 has very different USB PHY block, so there will be another PHY ops implementation for that chip. No functional change. Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Link: https://lore.kernel.org/r/20230819031731.22618-5-semen.protsenko@linaro.org Signed-off-by: Vinod Koul <vkoul@kernel.org>
1 parent 0b76bdc commit 6b34ec6

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

drivers/phy/samsung/phy-exynos5-usbdrd.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ struct exynos5_usbdrd_phy_config {
165165

166166
struct exynos5_usbdrd_phy_drvdata {
167167
const struct exynos5_usbdrd_phy_config *phy_cfg;
168+
const struct phy_ops *phy_ops;
168169
u32 pmu_offset_usbdrd0_phy;
169170
u32 pmu_offset_usbdrd1_phy;
170171
bool has_common_clk_gate;
@@ -779,26 +780,30 @@ static const struct exynos5_usbdrd_phy_config phy_cfg_exynos5[] = {
779780

780781
static const struct exynos5_usbdrd_phy_drvdata exynos5420_usbdrd_phy = {
781782
.phy_cfg = phy_cfg_exynos5,
783+
.phy_ops = &exynos5_usbdrd_phy_ops,
782784
.pmu_offset_usbdrd0_phy = EXYNOS5_USBDRD_PHY_CONTROL,
783785
.pmu_offset_usbdrd1_phy = EXYNOS5420_USBDRD1_PHY_CONTROL,
784786
.has_common_clk_gate = true,
785787
};
786788

787789
static const struct exynos5_usbdrd_phy_drvdata exynos5250_usbdrd_phy = {
788790
.phy_cfg = phy_cfg_exynos5,
791+
.phy_ops = &exynos5_usbdrd_phy_ops,
789792
.pmu_offset_usbdrd0_phy = EXYNOS5_USBDRD_PHY_CONTROL,
790793
.has_common_clk_gate = true,
791794
};
792795

793796
static const struct exynos5_usbdrd_phy_drvdata exynos5433_usbdrd_phy = {
794797
.phy_cfg = phy_cfg_exynos5,
798+
.phy_ops = &exynos5_usbdrd_phy_ops,
795799
.pmu_offset_usbdrd0_phy = EXYNOS5_USBDRD_PHY_CONTROL,
796800
.pmu_offset_usbdrd1_phy = EXYNOS5433_USBHOST30_PHY_CONTROL,
797801
.has_common_clk_gate = false,
798802
};
799803

800804
static const struct exynos5_usbdrd_phy_drvdata exynos7_usbdrd_phy = {
801805
.phy_cfg = phy_cfg_exynos5,
806+
.phy_ops = &exynos5_usbdrd_phy_ops,
802807
.pmu_offset_usbdrd0_phy = EXYNOS5_USBDRD_PHY_CONTROL,
803808
.has_common_clk_gate = false,
804809
};
@@ -906,8 +911,8 @@ static int exynos5_usbdrd_phy_probe(struct platform_device *pdev)
906911
dev_vdbg(dev, "Creating usbdrd_phy phy\n");
907912

908913
for (i = 0; i < EXYNOS5_DRDPHYS_NUM; i++) {
909-
struct phy *phy = devm_phy_create(dev, NULL,
910-
&exynos5_usbdrd_phy_ops);
914+
struct phy *phy = devm_phy_create(dev, NULL, drv_data->phy_ops);
915+
911916
if (IS_ERR(phy)) {
912917
dev_err(dev, "Failed to create usbdrd_phy phy\n");
913918
return PTR_ERR(phy);

0 commit comments

Comments
 (0)