mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 18:41:58 +09:00
drm/bridge: attach dsi in probe according to dsi driver
Type: Fix
Redmine ID: N/A
Associated modifications:
commit d420d65bec ("drm/rockchip: dsi2: optimize drive probe process")
Change-Id: Ic8782e9902a6133990fca728ab12e530e50b6d68
Test: N/A
Signed-off-by: Zhibin Huang <zhibin.huang@rock-chips.com>
Change-Id: Ia5e8d905e6eb683d78174bb06724261c6301d6e0
This commit is contained in:
@@ -2183,8 +2183,6 @@ static int it6161_bridge_attach(struct drm_bridge *bridge,
|
||||
goto cleanup_connector;
|
||||
}
|
||||
|
||||
DRM_INFO("%s, ret:%d", __func__, it6161_attach_dsi(it6161));
|
||||
|
||||
err = drm_connector_register(&it6161->connector);
|
||||
if (err < 0) {
|
||||
DRM_DEV_ERROR(dev, "Failed to register connector: %d", err);
|
||||
@@ -4030,7 +4028,7 @@ static void hdmi_tx_enable_hdcp(struct it6161 *it6161)
|
||||
}
|
||||
#endif
|
||||
|
||||
static bool getHDMITX_LinkStatus()
|
||||
static bool getHDMITX_LinkStatus(void)
|
||||
{
|
||||
it6161_debug("%s reg0E:0x%02x reg0x61:0x%02x", __func__, it6161_hdmi_tx_read(it6161, REG_TX_SYS_STATUS), it6161_hdmi_tx_read(it6161, REG_TX_AFE_DRV_CTRL));//allen
|
||||
if(B_TX_RXSENDETECT & it6161_hdmi_tx_read(it6161, REG_TX_SYS_STATUS)) {
|
||||
@@ -4669,7 +4667,7 @@ static void setHDMITX_HBRAudio(u8 bAudInterface /*I2S/SPDIF/TDM*/)
|
||||
// it6161_hdmi_tx_write(it6161, REG_TX_SW_RST, rst );
|
||||
}
|
||||
|
||||
static void setHDMITX_DSDAudio()
|
||||
static void setHDMITX_DSDAudio(void)
|
||||
{
|
||||
// to be continue
|
||||
// u8 rst;
|
||||
@@ -6812,6 +6810,12 @@ static int it6161_i2c_probe(struct i2c_client *i2c_mipi_rx,
|
||||
it6161->bridge.funcs = &it6161_bridge_funcs;
|
||||
drm_bridge_add(&it6161->bridge);
|
||||
|
||||
err = it6161_attach_dsi(it6161);
|
||||
if (err) {
|
||||
DRM_DEV_ERROR(dev, "failed to attach dsi, ret: %d", err);
|
||||
goto err_cec;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err_cec:
|
||||
|
||||
@@ -179,21 +179,17 @@ static int max96755f_bridge_attach(struct drm_bridge *bridge,
|
||||
|
||||
drm_connector_attach_encoder(connector, bridge->encoder);
|
||||
|
||||
ser->dsi = max96755f_attach_dsi(ser, ser->dsi_node);
|
||||
if (IS_ERR(ser->dsi))
|
||||
return PTR_ERR(ser->dsi);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void max96755f_bridge_detach(struct drm_bridge *bridge)
|
||||
{
|
||||
struct max96755f_bridge *ser = to_max96755f_bridge(bridge);
|
||||
}
|
||||
|
||||
if (ser->dsi) {
|
||||
mipi_dsi_detach(ser->dsi);
|
||||
mipi_dsi_device_unregister(ser->dsi);
|
||||
}
|
||||
static void max96755f_detach_dsi(struct max96755f_bridge *ser)
|
||||
{
|
||||
mipi_dsi_detach(ser->dsi);
|
||||
mipi_dsi_device_unregister(ser->dsi);
|
||||
}
|
||||
|
||||
static void max96755f_mipi_dsi_rx_config(struct max96755f_bridge *ser)
|
||||
@@ -548,13 +544,27 @@ static int max96755f_bridge_probe(struct platform_device *pdev)
|
||||
|
||||
drm_bridge_add(&ser->bridge);
|
||||
|
||||
ser->dsi = max96755f_attach_dsi(ser, ser->dsi_node);
|
||||
if (IS_ERR(ser->dsi)) {
|
||||
dev_err(ser->dev, "failed to attach dsi\n");
|
||||
ret = PTR_ERR(ser->dsi);
|
||||
goto err_remove_bridge;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err_remove_bridge:
|
||||
drm_bridge_remove(&ser->bridge);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int max96755f_bridge_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct max96755f_bridge *ser = platform_get_drvdata(pdev);
|
||||
|
||||
if (ser->dsi)
|
||||
max96755f_detach_dsi(ser);
|
||||
|
||||
drm_bridge_remove(&ser->bridge);
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -169,13 +169,6 @@ static int bu18tl82_bridge_attach(struct drm_bridge *bridge,
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (bu18tl82->sel_mipi) {
|
||||
/* Attach primary DSI */
|
||||
bu18tl82->dsi = bu18tl82_attach_dsi(bu18tl82, bu18tl82->dsi_node);
|
||||
if (IS_ERR(bu18tl82->dsi))
|
||||
return PTR_ERR(bu18tl82->dsi);
|
||||
}
|
||||
|
||||
ret = drm_bridge_attach(bridge->encoder, bu18tl82->bridge,
|
||||
bridge, flags);
|
||||
if (ret) {
|
||||
@@ -191,12 +184,12 @@ static int bu18tl82_bridge_attach(struct drm_bridge *bridge,
|
||||
|
||||
static void bu18tl82_bridge_detach(struct drm_bridge *bridge)
|
||||
{
|
||||
struct bu18tl82 *bu18tl82 = bridge_to_bu18tl82(bridge);
|
||||
}
|
||||
|
||||
if (bu18tl82->sel_mipi) {
|
||||
mipi_dsi_detach(bu18tl82->dsi);
|
||||
mipi_dsi_device_unregister(bu18tl82->dsi);
|
||||
}
|
||||
static void bu18tl82_detach_dsi(struct bu18tl82 *bu18tl82)
|
||||
{
|
||||
mipi_dsi_detach(bu18tl82->dsi);
|
||||
mipi_dsi_device_unregister(bu18tl82->dsi);
|
||||
}
|
||||
|
||||
static void bu18tl82_bridge_enable(struct drm_bridge *bridge)
|
||||
@@ -301,13 +294,30 @@ static int bu18tl82_i2c_probe(struct i2c_client *client,
|
||||
|
||||
drm_bridge_add(&bu18tl82->base);
|
||||
|
||||
if (bu18tl82->sel_mipi) {
|
||||
/* Attach primary DSI */
|
||||
bu18tl82->dsi = bu18tl82_attach_dsi(bu18tl82, bu18tl82->dsi_node);
|
||||
if (IS_ERR(bu18tl82->dsi)) {
|
||||
dev_err(bu18tl82->dev, "failed to attach dsi\n");
|
||||
ret = PTR_ERR(bu18tl82->dsi);
|
||||
goto err_remove_bridge;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err_remove_bridge:
|
||||
drm_bridge_remove(&bu18tl82->base);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void bu18tl82_i2c_remove(struct i2c_client *client)
|
||||
{
|
||||
struct bu18tl82 *bu18tl82 = i2c_get_clientdata(client);
|
||||
|
||||
if (bu18tl82->sel_mipi)
|
||||
bu18tl82_detach_dsi(bu18tl82);
|
||||
|
||||
drm_bridge_remove(&bu18tl82->base);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user