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

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

+3 -43
+1 -1
drivers/phy/qualcomm/Kconfig
··· 63 63 depends on DRM || DRM=n 64 64 select GENERIC_PHY 65 65 select MFD_SYSCON 66 - select DRM_PANEL_BRIDGE if DRM 66 + select DRM_AUX_BRIDGE if DRM_BRIDGE 67 67 help 68 68 Enable this to support the QMP Combo PHY transceiver that is used 69 69 with USB3 and DisplayPort controllers on Qualcomm chips.
+2 -42
drivers/phy/qualcomm/phy-qcom-qmp-combo.c
··· 21 21 #include <linux/usb/typec.h> 22 22 #include <linux/usb/typec_mux.h> 23 23 24 - #include <drm/drm_bridge.h> 24 + #include <drm/bridge/aux-bridge.h> 25 25 26 26 #include <dt-bindings/phy/phy-qcom-qmp.h> 27 27 ··· 1418 1418 struct clk_fixed_rate pipe_clk_fixed; 1419 1419 struct clk_hw dp_link_hw; 1420 1420 struct clk_hw dp_pixel_hw; 1421 - 1422 - struct drm_bridge bridge; 1423 1421 1424 1422 struct typec_switch_dev *sw; 1425 1423 enum typec_orientation orientation; ··· 3189 3191 } 3190 3192 #endif 3191 3193 3192 - #if IS_ENABLED(CONFIG_DRM) 3193 - static int qmp_combo_bridge_attach(struct drm_bridge *bridge, 3194 - enum drm_bridge_attach_flags flags) 3195 - { 3196 - struct qmp_combo *qmp = container_of(bridge, struct qmp_combo, bridge); 3197 - struct drm_bridge *next_bridge; 3198 - 3199 - if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) 3200 - return -EINVAL; 3201 - 3202 - next_bridge = devm_drm_of_get_bridge(qmp->dev, qmp->dev->of_node, 0, 0); 3203 - if (IS_ERR(next_bridge)) { 3204 - dev_err(qmp->dev, "failed to acquire drm_bridge: %pe\n", next_bridge); 3205 - return PTR_ERR(next_bridge); 3206 - } 3207 - 3208 - return drm_bridge_attach(bridge->encoder, next_bridge, bridge, 3209 - DRM_BRIDGE_ATTACH_NO_CONNECTOR); 3210 - } 3211 - 3212 - static const struct drm_bridge_funcs qmp_combo_bridge_funcs = { 3213 - .attach = qmp_combo_bridge_attach, 3214 - }; 3215 - 3216 - static int qmp_combo_dp_register_bridge(struct qmp_combo *qmp) 3217 - { 3218 - qmp->bridge.funcs = &qmp_combo_bridge_funcs; 3219 - qmp->bridge.of_node = qmp->dev->of_node; 3220 - 3221 - return devm_drm_bridge_add(qmp->dev, &qmp->bridge); 3222 - } 3223 - #else 3224 - static int qmp_combo_dp_register_bridge(struct qmp_combo *qmp) 3225 - { 3226 - return 0; 3227 - } 3228 - #endif 3229 - 3230 3194 static int qmp_combo_parse_dt_lecacy_dp(struct qmp_combo *qmp, struct device_node *np) 3231 3195 { 3232 3196 struct device *dev = qmp->dev; ··· 3400 3440 if (ret) 3401 3441 return ret; 3402 3442 3403 - ret = qmp_combo_dp_register_bridge(qmp); 3443 + ret = drm_aux_bridge_register(dev); 3404 3444 if (ret) 3405 3445 return ret; 3406 3446