1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00

phy: qcom: qmp-combo: switch to DRM_AUX_BRIDGE

Switch to using the new DRM_AUX_BRIDGE helper to create the
transparent DRM bridge device instead of handcoding corresponding
functionality.

Acked-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20231203114333.1305826-3-dmitry.baryshkov@linaro.org
This commit is contained in:
Dmitry Baryshkov 2023-12-03 14:43:29 +03:00
parent 2a04739139
commit 35921910bb
2 changed files with 3 additions and 43 deletions

View file

@ -63,7 +63,7 @@ config PHY_QCOM_QMP_COMBO
depends on DRM || DRM=n depends on DRM || DRM=n
select GENERIC_PHY select GENERIC_PHY
select MFD_SYSCON select MFD_SYSCON
select DRM_PANEL_BRIDGE if DRM select DRM_AUX_BRIDGE if DRM_BRIDGE
help help
Enable this to support the QMP Combo PHY transceiver that is used Enable this to support the QMP Combo PHY transceiver that is used
with USB3 and DisplayPort controllers on Qualcomm chips. with USB3 and DisplayPort controllers on Qualcomm chips.

View file

@ -21,7 +21,7 @@
#include <linux/usb/typec.h> #include <linux/usb/typec.h>
#include <linux/usb/typec_mux.h> #include <linux/usb/typec_mux.h>
#include <drm/drm_bridge.h> #include <drm/bridge/aux-bridge.h>
#include <dt-bindings/phy/phy-qcom-qmp.h> #include <dt-bindings/phy/phy-qcom-qmp.h>
@ -1419,8 +1419,6 @@ struct qmp_combo {
struct clk_hw dp_link_hw; struct clk_hw dp_link_hw;
struct clk_hw dp_pixel_hw; struct clk_hw dp_pixel_hw;
struct drm_bridge bridge;
struct typec_switch_dev *sw; struct typec_switch_dev *sw;
enum typec_orientation orientation; enum typec_orientation orientation;
}; };
@ -3191,44 +3189,6 @@ static int qmp_combo_typec_switch_register(struct qmp_combo *qmp)
} }
#endif #endif
#if IS_ENABLED(CONFIG_DRM)
static int qmp_combo_bridge_attach(struct drm_bridge *bridge,
enum drm_bridge_attach_flags flags)
{
struct qmp_combo *qmp = container_of(bridge, struct qmp_combo, bridge);
struct drm_bridge *next_bridge;
if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR))
return -EINVAL;
next_bridge = devm_drm_of_get_bridge(qmp->dev, qmp->dev->of_node, 0, 0);
if (IS_ERR(next_bridge)) {
dev_err(qmp->dev, "failed to acquire drm_bridge: %pe\n", next_bridge);
return PTR_ERR(next_bridge);
}
return drm_bridge_attach(bridge->encoder, next_bridge, bridge,
DRM_BRIDGE_ATTACH_NO_CONNECTOR);
}
static const struct drm_bridge_funcs qmp_combo_bridge_funcs = {
.attach = qmp_combo_bridge_attach,
};
static int qmp_combo_dp_register_bridge(struct qmp_combo *qmp)
{
qmp->bridge.funcs = &qmp_combo_bridge_funcs;
qmp->bridge.of_node = qmp->dev->of_node;
return devm_drm_bridge_add(qmp->dev, &qmp->bridge);
}
#else
static int qmp_combo_dp_register_bridge(struct qmp_combo *qmp)
{
return 0;
}
#endif
static int qmp_combo_parse_dt_lecacy_dp(struct qmp_combo *qmp, struct device_node *np) static int qmp_combo_parse_dt_lecacy_dp(struct qmp_combo *qmp, struct device_node *np)
{ {
struct device *dev = qmp->dev; struct device *dev = qmp->dev;
@ -3440,7 +3400,7 @@ static int qmp_combo_probe(struct platform_device *pdev)
if (ret) if (ret)
return ret; return ret;
ret = qmp_combo_dp_register_bridge(qmp); ret = drm_aux_bridge_register(dev);
if (ret) if (ret)
return ret; return ret;