drm/rockchp: dw-dp: move aux_register to bind
Signed-off-by: Sandy Huang <hjc@rock-chips.com> Change-Id: I1906419841eb69958da780382e424008e7422490
This commit is contained in:
parent
0004c2dd16
commit
36b0a9a80e
1 changed files with 16 additions and 20 deletions
|
|
@ -3854,13 +3854,6 @@ static void dw_dp_unregister_audio_driver(void *data)
|
|||
}
|
||||
}
|
||||
|
||||
static void dw_dp_aux_unregister(void *data)
|
||||
{
|
||||
struct dw_dp *dp = data;
|
||||
|
||||
drm_dp_aux_unregister(&dp->aux);
|
||||
}
|
||||
|
||||
static int dw_dp_bind(struct device *dev, struct device *master, void *data)
|
||||
{
|
||||
struct dw_dp *dp = dev_get_drvdata(dev);
|
||||
|
|
@ -3869,6 +3862,14 @@ static int dw_dp_bind(struct device *dev, struct device *master, void *data)
|
|||
struct drm_bridge *bridge = &dp->bridge;
|
||||
int ret;
|
||||
|
||||
dp->aux.dev = dev;
|
||||
dp->aux.drm_dev = drm_dev;
|
||||
dp->aux.name = dev_name(dev);
|
||||
dp->aux.transfer = dw_dp_aux_transfer;
|
||||
ret = drm_dp_aux_register(&dp->aux);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (!dp->left) {
|
||||
drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_TMDS);
|
||||
drm_encoder_helper_add(encoder, &dw_dp_encoder_helper_funcs);
|
||||
|
|
@ -3879,7 +3880,7 @@ static int dw_dp_bind(struct device *dev, struct device *master, void *data)
|
|||
ret = drm_bridge_attach(encoder, bridge, NULL, 0);
|
||||
if (ret) {
|
||||
dev_err(dev, "failed to attach bridge: %d\n", ret);
|
||||
return ret;
|
||||
goto error_unregister_aux;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -3892,7 +3893,7 @@ static int dw_dp_bind(struct device *dev, struct device *master, void *data)
|
|||
ret = drm_bridge_attach(encoder, &secondary->bridge, last_bridge,
|
||||
DRM_BRIDGE_ATTACH_NO_CONNECTOR);
|
||||
if (ret)
|
||||
return ret;
|
||||
goto error_unregister_aux;
|
||||
}
|
||||
|
||||
pm_runtime_enable(dp->dev);
|
||||
|
|
@ -3903,12 +3904,18 @@ static int dw_dp_bind(struct device *dev, struct device *master, void *data)
|
|||
enable_irq(dp->hpd_irq);
|
||||
|
||||
return 0;
|
||||
|
||||
error_unregister_aux:
|
||||
drm_dp_aux_unregister(&dp->aux);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void dw_dp_unbind(struct device *dev, struct device *master, void *data)
|
||||
{
|
||||
struct dw_dp *dp = dev_get_drvdata(dev);
|
||||
|
||||
drm_dp_aux_unregister(&dp->aux);
|
||||
|
||||
if (dp->hpd_gpio)
|
||||
disable_irq(dp->hpd_irq);
|
||||
disable_irq(dp->irq);
|
||||
|
|
@ -4127,17 +4134,6 @@ static int dw_dp_probe(struct platform_device *pdev)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
dp->aux.dev = dev;
|
||||
dp->aux.name = dev_name(dev);
|
||||
dp->aux.transfer = dw_dp_aux_transfer;
|
||||
ret = drm_dp_aux_register(&dp->aux);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = devm_add_action_or_reset(dev, dw_dp_aux_unregister, dp);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
dp->bridge.of_node = dev->of_node;
|
||||
dp->bridge.funcs = &dw_dp_bridge_funcs;
|
||||
dp->bridge.ops = DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue