mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-14 06:35:12 +00:00
drm: xlnx: zynqmp_dpsub: Move DP bridge init to zynqmp_dp_probe()
There's no need to delay bridge initialization, move it to zynqmp_dp_probe() and drop the zynqmp_dp_drm_init() function. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
2dfd045c84
commit
5889ee5903
3 changed files with 13 additions and 24 deletions
|
@ -1610,27 +1610,10 @@ static irqreturn_t zynqmp_dp_irq_handler(int irq, void *data)
|
|||
* Initialization & Cleanup
|
||||
*/
|
||||
|
||||
int zynqmp_dp_drm_init(struct zynqmp_dpsub *dpsub)
|
||||
{
|
||||
struct zynqmp_dp *dp = dpsub->dp;
|
||||
struct drm_bridge *bridge = &dp->bridge;
|
||||
|
||||
dp->config.misc0 &= ~ZYNQMP_DP_MAIN_STREAM_MISC0_SYNC_LOCK;
|
||||
zynqmp_dp_set_format(dp, NULL, ZYNQMP_DPSUB_FORMAT_RGB, 8);
|
||||
|
||||
/* Initialize the bridge. */
|
||||
bridge->funcs = &zynqmp_dp_bridge_funcs;
|
||||
bridge->ops = DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID
|
||||
| DRM_BRIDGE_OP_HPD;
|
||||
bridge->type = DRM_MODE_CONNECTOR_DisplayPort;
|
||||
dpsub->bridge = bridge;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int zynqmp_dp_probe(struct zynqmp_dpsub *dpsub, struct drm_device *drm)
|
||||
{
|
||||
struct platform_device *pdev = to_platform_device(dpsub->dev);
|
||||
struct drm_bridge *bridge;
|
||||
struct zynqmp_dp *dp;
|
||||
struct resource *res;
|
||||
int ret;
|
||||
|
@ -1673,6 +1656,14 @@ int zynqmp_dp_probe(struct zynqmp_dpsub *dpsub, struct drm_device *drm)
|
|||
if (ret)
|
||||
goto err_reset;
|
||||
|
||||
/* Initialize the bridge. */
|
||||
bridge = &dp->bridge;
|
||||
bridge->funcs = &zynqmp_dp_bridge_funcs;
|
||||
bridge->ops = DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID
|
||||
| DRM_BRIDGE_OP_HPD;
|
||||
bridge->type = DRM_MODE_CONNECTOR_DisplayPort;
|
||||
dpsub->bridge = bridge;
|
||||
|
||||
/*
|
||||
* Acquire the next bridge in the chain. Ignore errors caused by port@5
|
||||
* not being connected for backward-compatibility with older DTs.
|
||||
|
@ -1683,6 +1674,9 @@ int zynqmp_dp_probe(struct zynqmp_dpsub *dpsub, struct drm_device *drm)
|
|||
goto err_reset;
|
||||
|
||||
/* Initialize the hardware. */
|
||||
dp->config.misc0 &= ~ZYNQMP_DP_MAIN_STREAM_MISC0_SYNC_LOCK;
|
||||
zynqmp_dp_set_format(dp, NULL, ZYNQMP_DPSUB_FORMAT_RGB, 8);
|
||||
|
||||
zynqmp_dp_write(dp, ZYNQMP_DP_TX_PHY_POWER_DOWN,
|
||||
ZYNQMP_DP_TX_PHY_POWER_DOWN_ALL);
|
||||
zynqmp_dp_set(dp, ZYNQMP_DP_PHY_RESET, ZYNQMP_DP_PHY_RESET_ALL_RESET);
|
||||
|
|
|
@ -20,7 +20,6 @@ struct zynqmp_dpsub;
|
|||
void zynqmp_dp_enable_vblank(struct zynqmp_dp *dp);
|
||||
void zynqmp_dp_disable_vblank(struct zynqmp_dp *dp);
|
||||
|
||||
int zynqmp_dp_drm_init(struct zynqmp_dpsub *dpsub);
|
||||
int zynqmp_dp_probe(struct zynqmp_dpsub *dpsub, struct drm_device *drm);
|
||||
void zynqmp_dp_remove(struct zynqmp_dpsub *dpsub);
|
||||
|
||||
|
|
|
@ -348,7 +348,7 @@ int zynqmp_dpsub_kms_init(struct zynqmp_dpsub *dpsub)
|
|||
struct drm_connector *connector;
|
||||
int ret;
|
||||
|
||||
/* Create the planes and the CRTC, and initialize the DP encoder. */
|
||||
/* Create the planes and the CRTC. */
|
||||
ret = zynqmp_dpsub_create_planes(dpsub);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
@ -359,10 +359,6 @@ int zynqmp_dpsub_kms_init(struct zynqmp_dpsub *dpsub)
|
|||
|
||||
zynqmp_dpsub_map_crtc_to_plane(dpsub);
|
||||
|
||||
ret = zynqmp_dp_drm_init(dpsub);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* Create the encoder and attach the bridge. */
|
||||
encoder->possible_crtcs |= drm_crtc_mask(&dpsub->crtc);
|
||||
drm_simple_encoder_init(&dpsub->drm, encoder, DRM_MODE_ENCODER_NONE);
|
||||
|
|
Loading…
Reference in a new issue