Updated series about drm bridge conversion of exynos dsi.
Patch 1: panel checker
Patch 2: panel_bridge API
Patch 3: Bridge conversion
Patch 4: pree_enable, post_disable
Patch 5: Atomic functions
Patch 6: atomic_set
Patch 7: DSI init in enable
[1] https://patchwork.kernel.org/project/dri-devel/cover/20211210191922.2367979-...
Any inputs? Jagan.
Jagan Teki (7): drm: exynos: dsi: Check panel for panel helpers drm: exynos: dsi: Use drm panel_bridge API drm: exynos: dsi: Convert to bridge driver drm: exynos: dsi: Separate pre_enable, post_disable code drm: exynos: dsi: Switch to atomic funcs drm: exynos: dsi: Get the mode from bridge drm: exynos: dsi: Move DSI init in bridge enable
drivers/gpu/drm/exynos/exynos_drm_dsi.c | 240 ++++++++---------------- 1 file changed, 75 insertions(+), 165 deletions(-)
Trigger the panel operation helpers only if host found the panel.
Add check.
Signed-off-by: Jagan Teki jagan@amarulasolutions.com --- Changes for v3: - none Changes for v2: - new patch
drivers/gpu/drm/exynos/exynos_drm_dsi.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index 8d137857818c..0bb44e476633 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -1439,7 +1439,8 @@ static void exynos_dsi_disable(struct drm_encoder *encoder)
dsi->state &= ~DSIM_STATE_VIDOUT_AVAILABLE;
- drm_panel_disable(dsi->panel); + if (dsi->panel) + drm_panel_disable(dsi->panel);
list_for_each_entry_reverse(iter, &dsi->bridge_chain, chain_node) { if (iter->funcs->disable) @@ -1447,7 +1448,8 @@ static void exynos_dsi_disable(struct drm_encoder *encoder) }
exynos_dsi_set_display_enable(dsi, false); - drm_panel_unprepare(dsi->panel); + if (dsi->panel) + drm_panel_unprepare(dsi->panel);
list_for_each_entry(iter, &dsi->bridge_chain, chain_node) { if (iter->funcs->post_disable)
Replace the manual panel handling code by a drm panel_bridge via devm_drm_of_get_bridge().
Adding panel_bridge handling,
- Drops drm_connector and related operations as drm_bridge_attach creates connector during attachment.
- Drops panel pointer and iterate the bridge, so-that it can operate the normal bridge and panel_bridge in constitutive callbacks.
This simplifies the driver and allows all components in the display pipeline to be treated as bridges.
Signed-off-by: Jagan Teki jagan@amarulasolutions.com --- Changes for v3: - fix port number - add print for attached device Changes for v2: - new patch
drivers/gpu/drm/exynos/exynos_drm_dsi.c | 165 ++++-------------------- 1 file changed, 26 insertions(+), 139 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index 0bb44e476633..d1039628b6f2 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -221,6 +221,11 @@ enum exynos_dsi_transfer_type { EXYNOS_DSI_RX, };
+enum { + DSI_PORT_IN, + DSI_PORT_OUT +}; + struct exynos_dsi_transfer { struct list_head list; struct completion completed; @@ -254,8 +259,6 @@ struct exynos_dsi_driver_data { struct exynos_dsi { struct drm_encoder encoder; struct mipi_dsi_host dsi_host; - struct drm_connector connector; - struct drm_panel *panel; struct list_head bridge_chain; struct drm_bridge *out_bridge; struct device *dev; @@ -285,7 +288,6 @@ struct exynos_dsi { };
#define host_to_dsi(host) container_of(host, struct exynos_dsi, dsi_host) -#define connector_to_dsi(c) container_of(c, struct exynos_dsi, connector)
static inline struct exynos_dsi *encoder_to_dsi(struct drm_encoder *e) { @@ -1391,42 +1393,21 @@ static void exynos_dsi_enable(struct drm_encoder *encoder)
dsi->state |= DSIM_STATE_ENABLED;
- if (dsi->panel) { - ret = drm_panel_prepare(dsi->panel); - if (ret < 0) - goto err_put_sync; - } else { - list_for_each_entry_reverse(iter, &dsi->bridge_chain, - chain_node) { - if (iter->funcs->pre_enable) - iter->funcs->pre_enable(iter); - } + list_for_each_entry_reverse(iter, &dsi->bridge_chain, chain_node) { + if (iter->funcs->pre_enable) + iter->funcs->pre_enable(iter); }
exynos_dsi_set_display_mode(dsi); exynos_dsi_set_display_enable(dsi, true);
- if (dsi->panel) { - ret = drm_panel_enable(dsi->panel); - if (ret < 0) - goto err_display_disable; - } else { - list_for_each_entry(iter, &dsi->bridge_chain, chain_node) { - if (iter->funcs->enable) - iter->funcs->enable(iter); - } + list_for_each_entry(iter, &dsi->bridge_chain, chain_node) { + if (iter->funcs->enable) + iter->funcs->enable(iter); }
dsi->state |= DSIM_STATE_VIDOUT_AVAILABLE; return; - -err_display_disable: - exynos_dsi_set_display_enable(dsi, false); - drm_panel_unprepare(dsi->panel); - -err_put_sync: - dsi->state &= ~DSIM_STATE_ENABLED; - pm_runtime_put(dsi->dev); }
static void exynos_dsi_disable(struct drm_encoder *encoder) @@ -1439,17 +1420,12 @@ static void exynos_dsi_disable(struct drm_encoder *encoder)
dsi->state &= ~DSIM_STATE_VIDOUT_AVAILABLE;
- if (dsi->panel) - drm_panel_disable(dsi->panel); - list_for_each_entry_reverse(iter, &dsi->bridge_chain, chain_node) { if (iter->funcs->disable) iter->funcs->disable(iter); }
exynos_dsi_set_display_enable(dsi, false); - if (dsi->panel) - drm_panel_unprepare(dsi->panel);
list_for_each_entry(iter, &dsi->bridge_chain, chain_node) { if (iter->funcs->post_disable) @@ -1460,70 +1436,6 @@ static void exynos_dsi_disable(struct drm_encoder *encoder) pm_runtime_put_sync(dsi->dev); }
-static enum drm_connector_status -exynos_dsi_detect(struct drm_connector *connector, bool force) -{ - return connector->status; -} - -static void exynos_dsi_connector_destroy(struct drm_connector *connector) -{ - drm_connector_unregister(connector); - drm_connector_cleanup(connector); - connector->dev = NULL; -} - -static const struct drm_connector_funcs exynos_dsi_connector_funcs = { - .detect = exynos_dsi_detect, - .fill_modes = drm_helper_probe_single_connector_modes, - .destroy = exynos_dsi_connector_destroy, - .reset = drm_atomic_helper_connector_reset, - .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state, - .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, -}; - -static int exynos_dsi_get_modes(struct drm_connector *connector) -{ - struct exynos_dsi *dsi = connector_to_dsi(connector); - - if (dsi->panel) - return drm_panel_get_modes(dsi->panel, connector); - - return 0; -} - -static const struct drm_connector_helper_funcs exynos_dsi_connector_helper_funcs = { - .get_modes = exynos_dsi_get_modes, -}; - -static int exynos_dsi_create_connector(struct drm_encoder *encoder) -{ - struct exynos_dsi *dsi = encoder_to_dsi(encoder); - struct drm_connector *connector = &dsi->connector; - struct drm_device *drm = encoder->dev; - int ret; - - connector->polled = DRM_CONNECTOR_POLL_HPD; - - ret = drm_connector_init(drm, connector, &exynos_dsi_connector_funcs, - DRM_MODE_CONNECTOR_DSI); - if (ret) { - DRM_DEV_ERROR(dsi->dev, - "Failed to initialize connector with drm\n"); - return ret; - } - - connector->status = connector_status_disconnected; - drm_connector_helper_add(connector, &exynos_dsi_connector_helper_funcs); - drm_connector_attach_encoder(connector, encoder); - if (!drm->registered) - return 0; - - connector->funcs->reset(connector); - drm_connector_register(connector); - return 0; -} - static const struct drm_encoder_helper_funcs exynos_dsi_encoder_helper_funcs = { .enable = exynos_dsi_enable, .disable = exynos_dsi_disable, @@ -1537,31 +1449,20 @@ static int exynos_dsi_host_attach(struct mipi_dsi_host *host, struct exynos_dsi *dsi = host_to_dsi(host); struct drm_encoder *encoder = &dsi->encoder; struct drm_device *drm = encoder->dev; - struct drm_bridge *out_bridge; - - out_bridge = of_drm_find_bridge(device->dev.of_node); - if (out_bridge) { - drm_bridge_attach(encoder, out_bridge, NULL, 0); - dsi->out_bridge = out_bridge; - list_splice_init(&encoder->bridge_chain, &dsi->bridge_chain); - } else { - int ret = exynos_dsi_create_connector(encoder); - - if (ret) { - DRM_DEV_ERROR(dsi->dev, - "failed to create connector ret = %d\n", - ret); - drm_encoder_cleanup(encoder); - return ret; - } + int ret;
- dsi->panel = of_drm_find_panel(device->dev.of_node); - if (IS_ERR(dsi->panel)) - dsi->panel = NULL; - else - dsi->connector.status = connector_status_connected; + dsi->out_bridge = devm_drm_of_get_bridge(dsi->dev, dsi->dev->of_node, DSI_PORT_OUT, 0); + if (IS_ERR(dsi->out_bridge)) { + ret = PTR_ERR(dsi->out_bridge); + DRM_DEV_ERROR(dsi->dev, "failed to find the bridge: %d\n", ret); + return ret; }
+ DRM_DEV_INFO(dsi->dev, "Attached %s device\n", device->name); + + drm_bridge_attach(encoder, dsi->out_bridge, NULL, 0); + list_splice_init(&encoder->bridge_chain, &dsi->bridge_chain); + /* * This is a temporary solution and should be made by more generic way. * @@ -1569,7 +1470,7 @@ static int exynos_dsi_host_attach(struct mipi_dsi_host *host, * TE interrupt handler. */ if (!(device->mode_flags & MIPI_DSI_MODE_VIDEO)) { - int ret = exynos_dsi_register_te_irq(dsi, &device->dev); + ret = exynos_dsi_register_te_irq(dsi, &device->dev); if (ret) return ret; } @@ -1596,18 +1497,9 @@ static int exynos_dsi_host_detach(struct mipi_dsi_host *host, struct exynos_dsi *dsi = host_to_dsi(host); struct drm_device *drm = dsi->encoder.dev;
- if (dsi->panel) { - mutex_lock(&drm->mode_config.mutex); - exynos_dsi_disable(&dsi->encoder); - dsi->panel = NULL; - dsi->connector.status = connector_status_disconnected; - mutex_unlock(&drm->mode_config.mutex); - } else { - if (dsi->out_bridge->funcs->detach) - dsi->out_bridge->funcs->detach(dsi->out_bridge); - dsi->out_bridge = NULL; - INIT_LIST_HEAD(&dsi->bridge_chain); - } + if (dsi->out_bridge->funcs->detach) + dsi->out_bridge->funcs->detach(dsi->out_bridge); + INIT_LIST_HEAD(&dsi->bridge_chain);
if (drm->mode_config.poll_enabled) drm_kms_helper_hotplug_event(drm); @@ -1663,11 +1555,6 @@ static int exynos_dsi_of_read_u32(const struct device_node *np, return ret; }
-enum { - DSI_PORT_IN, - DSI_PORT_OUT -}; - static int exynos_dsi_parse_dt(struct exynos_dsi *dsi) { struct device *dev = dsi->dev;
On 12.12.2021 19:14, Jagan Teki wrote:
Replace the manual panel handling code by a drm panel_bridge via devm_drm_of_get_bridge().
Adding panel_bridge handling,
Drops drm_connector and related operations as drm_bridge_attach creates connector during attachment.
Drops panel pointer and iterate the bridge, so-that it can operate the normal bridge and panel_bridge in constitutive callbacks.
This simplifies the driver and allows all components in the display pipeline to be treated as bridges.
Signed-off-by: Jagan Teki jagan@amarulasolutions.com
Changes for v3:
- fix port number
- add print for attached device
Changes for v2:
new patch
drivers/gpu/drm/exynos/exynos_drm_dsi.c | 165 ++++-------------------- 1 file changed, 26 insertions(+), 139 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index 0bb44e476633..d1039628b6f2 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -221,6 +221,11 @@ enum exynos_dsi_transfer_type { EXYNOS_DSI_RX, };
+enum {
- DSI_PORT_IN,
- DSI_PORT_OUT
+};
- struct exynos_dsi_transfer { struct list_head list; struct completion completed;
@@ -254,8 +259,6 @@ struct exynos_dsi_driver_data { struct exynos_dsi { struct drm_encoder encoder; struct mipi_dsi_host dsi_host;
- struct drm_connector connector;
- struct drm_panel *panel; struct list_head bridge_chain; struct drm_bridge *out_bridge; struct device *dev;
@@ -285,7 +288,6 @@ struct exynos_dsi { };
#define host_to_dsi(host) container_of(host, struct exynos_dsi, dsi_host) -#define connector_to_dsi(c) container_of(c, struct exynos_dsi, connector)
static inline struct exynos_dsi *encoder_to_dsi(struct drm_encoder *e) { @@ -1391,42 +1393,21 @@ static void exynos_dsi_enable(struct drm_encoder *encoder)
dsi->state |= DSIM_STATE_ENABLED;
- if (dsi->panel) {
ret = drm_panel_prepare(dsi->panel);
if (ret < 0)
goto err_put_sync;
- } else {
list_for_each_entry_reverse(iter, &dsi->bridge_chain,
chain_node) {
if (iter->funcs->pre_enable)
iter->funcs->pre_enable(iter);
}
list_for_each_entry_reverse(iter, &dsi->bridge_chain, chain_node) {
if (iter->funcs->pre_enable)
iter->funcs->pre_enable(iter);
}
exynos_dsi_set_display_mode(dsi); exynos_dsi_set_display_enable(dsi, true);
- if (dsi->panel) {
ret = drm_panel_enable(dsi->panel);
if (ret < 0)
goto err_display_disable;
- } else {
list_for_each_entry(iter, &dsi->bridge_chain, chain_node) {
if (iter->funcs->enable)
iter->funcs->enable(iter);
}
list_for_each_entry(iter, &dsi->bridge_chain, chain_node) {
if (iter->funcs->enable)
iter->funcs->enable(iter);
}
dsi->state |= DSIM_STATE_VIDOUT_AVAILABLE; return;
-err_display_disable:
- exynos_dsi_set_display_enable(dsi, false);
- drm_panel_unprepare(dsi->panel);
-err_put_sync:
dsi->state &= ~DSIM_STATE_ENABLED;
pm_runtime_put(dsi->dev); }
static void exynos_dsi_disable(struct drm_encoder *encoder)
@@ -1439,17 +1420,12 @@ static void exynos_dsi_disable(struct drm_encoder *encoder)
dsi->state &= ~DSIM_STATE_VIDOUT_AVAILABLE;
if (dsi->panel)
drm_panel_disable(dsi->panel);
list_for_each_entry_reverse(iter, &dsi->bridge_chain, chain_node) { if (iter->funcs->disable) iter->funcs->disable(iter); }
exynos_dsi_set_display_enable(dsi, false);
if (dsi->panel)
drm_panel_unprepare(dsi->panel);
list_for_each_entry(iter, &dsi->bridge_chain, chain_node) { if (iter->funcs->post_disable)
@@ -1460,70 +1436,6 @@ static void exynos_dsi_disable(struct drm_encoder *encoder) pm_runtime_put_sync(dsi->dev); }
-static enum drm_connector_status -exynos_dsi_detect(struct drm_connector *connector, bool force) -{
- return connector->status;
-}
-static void exynos_dsi_connector_destroy(struct drm_connector *connector) -{
- drm_connector_unregister(connector);
- drm_connector_cleanup(connector);
- connector->dev = NULL;
-}
-static const struct drm_connector_funcs exynos_dsi_connector_funcs = {
- .detect = exynos_dsi_detect,
- .fill_modes = drm_helper_probe_single_connector_modes,
- .destroy = exynos_dsi_connector_destroy,
- .reset = drm_atomic_helper_connector_reset,
- .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
- .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
-};
-static int exynos_dsi_get_modes(struct drm_connector *connector) -{
- struct exynos_dsi *dsi = connector_to_dsi(connector);
- if (dsi->panel)
return drm_panel_get_modes(dsi->panel, connector);
- return 0;
-}
-static const struct drm_connector_helper_funcs exynos_dsi_connector_helper_funcs = {
- .get_modes = exynos_dsi_get_modes,
-};
-static int exynos_dsi_create_connector(struct drm_encoder *encoder) -{
- struct exynos_dsi *dsi = encoder_to_dsi(encoder);
- struct drm_connector *connector = &dsi->connector;
- struct drm_device *drm = encoder->dev;
- int ret;
- connector->polled = DRM_CONNECTOR_POLL_HPD;
- ret = drm_connector_init(drm, connector, &exynos_dsi_connector_funcs,
DRM_MODE_CONNECTOR_DSI);
- if (ret) {
DRM_DEV_ERROR(dsi->dev,
"Failed to initialize connector with drm\n");
return ret;
- }
- connector->status = connector_status_disconnected;
- drm_connector_helper_add(connector, &exynos_dsi_connector_helper_funcs);
- drm_connector_attach_encoder(connector, encoder);
- if (!drm->registered)
return 0;
- connector->funcs->reset(connector);
- drm_connector_register(connector);
- return 0;
-}
- static const struct drm_encoder_helper_funcs exynos_dsi_encoder_helper_funcs = { .enable = exynos_dsi_enable, .disable = exynos_dsi_disable,
@@ -1537,31 +1449,20 @@ static int exynos_dsi_host_attach(struct mipi_dsi_host *host, struct exynos_dsi *dsi = host_to_dsi(host); struct drm_encoder *encoder = &dsi->encoder; struct drm_device *drm = encoder->dev;
- struct drm_bridge *out_bridge;
- out_bridge = of_drm_find_bridge(device->dev.of_node);
- if (out_bridge) {
drm_bridge_attach(encoder, out_bridge, NULL, 0);
dsi->out_bridge = out_bridge;
list_splice_init(&encoder->bridge_chain, &dsi->bridge_chain);
- } else {
int ret = exynos_dsi_create_connector(encoder);
if (ret) {
DRM_DEV_ERROR(dsi->dev,
"failed to create connector ret = %d\n",
ret);
drm_encoder_cleanup(encoder);
return ret;
}
- int ret;
dsi->panel = of_drm_find_panel(device->dev.of_node);
if (IS_ERR(dsi->panel))
dsi->panel = NULL;
else
dsi->connector.status = connector_status_connected;
dsi->out_bridge = devm_drm_of_get_bridge(dsi->dev, dsi->dev->of_node, DSI_PORT_OUT, 0);
if (IS_ERR(dsi->out_bridge)) {
ret = PTR_ERR(dsi->out_bridge);
DRM_DEV_ERROR(dsi->dev, "failed to find the bridge: %d\n", ret);
return ret;
}
DRM_DEV_INFO(dsi->dev, "Attached %s device\n", device->name);
drm_bridge_attach(encoder, dsi->out_bridge, NULL, 0);
list_splice_init(&encoder->bridge_chain, &dsi->bridge_chain);
/*
- This is a temporary solution and should be made by more generic way.
@@ -1569,7 +1470,7 @@ static int exynos_dsi_host_attach(struct mipi_dsi_host *host, * TE interrupt handler. */ if (!(device->mode_flags & MIPI_DSI_MODE_VIDEO)) {
int ret = exynos_dsi_register_te_irq(dsi, &device->dev);
if (ret) return ret; }ret = exynos_dsi_register_te_irq(dsi, &device->dev);
@@ -1596,18 +1497,9 @@ static int exynos_dsi_host_detach(struct mipi_dsi_host *host, struct exynos_dsi *dsi = host_to_dsi(host); struct drm_device *drm = dsi->encoder.dev;
- if (dsi->panel) {
mutex_lock(&drm->mode_config.mutex);
exynos_dsi_disable(&dsi->encoder);
dsi->panel = NULL;
dsi->connector.status = connector_status_disconnected;
mutex_unlock(&drm->mode_config.mutex);
- } else {
if (dsi->out_bridge->funcs->detach)
dsi->out_bridge->funcs->detach(dsi->out_bridge);
dsi->out_bridge = NULL;
INIT_LIST_HEAD(&dsi->bridge_chain);
- }
- if (dsi->out_bridge->funcs->detach)
dsi->out_bridge->funcs->detach(dsi->out_bridge);
- INIT_LIST_HEAD(&dsi->bridge_chain);
This is fishy. Currently the only bridge used with exynos_dsi (tc358764) on detach callback unregisters/puts the connector it has created.
With this code panel_bridge on detach will call drm_connector_cleanup, which will WARN about unregistered connector - ie it assumes detach should be called at least AFTER unregistration of exynos_drm device (???).
Since panel/bridge unbind in general case is not handled properly maybe it is not an issue :)
Regards
Andrzej
if (drm->mode_config.poll_enabled) drm_kms_helper_hotplug_event(drm); @@ -1663,11 +1555,6 @@ static int exynos_dsi_of_read_u32(const struct device_node *np, return ret; }
-enum {
- DSI_PORT_IN,
- DSI_PORT_OUT
-};
- static int exynos_dsi_parse_dt(struct exynos_dsi *dsi) { struct device *dev = dsi->dev;
Hi Andrzej,
On Mon, Dec 13, 2021 at 2:39 PM Andrzej Hajda andrzej.hajda@intel.com wrote:
On 12.12.2021 19:14, Jagan Teki wrote:
Replace the manual panel handling code by a drm panel_bridge via devm_drm_of_get_bridge().
Adding panel_bridge handling,
Drops drm_connector and related operations as drm_bridge_attach creates connector during attachment.
Drops panel pointer and iterate the bridge, so-that it can operate the normal bridge and panel_bridge in constitutive callbacks.
This simplifies the driver and allows all components in the display pipeline to be treated as bridges.
Signed-off-by: Jagan Teki jagan@amarulasolutions.com
Changes for v3:
- fix port number
- add print for attached device
Changes for v2:
new patch
drivers/gpu/drm/exynos/exynos_drm_dsi.c | 165 ++++-------------------- 1 file changed, 26 insertions(+), 139 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index 0bb44e476633..d1039628b6f2 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -221,6 +221,11 @@ enum exynos_dsi_transfer_type { EXYNOS_DSI_RX, };
+enum {
DSI_PORT_IN,
DSI_PORT_OUT
+};
- struct exynos_dsi_transfer { struct list_head list; struct completion completed;
@@ -254,8 +259,6 @@ struct exynos_dsi_driver_data { struct exynos_dsi { struct drm_encoder encoder; struct mipi_dsi_host dsi_host;
struct drm_connector connector;
struct drm_panel *panel; struct list_head bridge_chain; struct drm_bridge *out_bridge; struct device *dev;
@@ -285,7 +288,6 @@ struct exynos_dsi { };
#define host_to_dsi(host) container_of(host, struct exynos_dsi, dsi_host) -#define connector_to_dsi(c) container_of(c, struct exynos_dsi, connector)
static inline struct exynos_dsi *encoder_to_dsi(struct drm_encoder *e) { @@ -1391,42 +1393,21 @@ static void exynos_dsi_enable(struct drm_encoder *encoder)
dsi->state |= DSIM_STATE_ENABLED;
if (dsi->panel) {
ret = drm_panel_prepare(dsi->panel);
if (ret < 0)
goto err_put_sync;
} else {
list_for_each_entry_reverse(iter, &dsi->bridge_chain,
chain_node) {
if (iter->funcs->pre_enable)
iter->funcs->pre_enable(iter);
}
list_for_each_entry_reverse(iter, &dsi->bridge_chain, chain_node) {
if (iter->funcs->pre_enable)
iter->funcs->pre_enable(iter); } exynos_dsi_set_display_mode(dsi); exynos_dsi_set_display_enable(dsi, true);
if (dsi->panel) {
ret = drm_panel_enable(dsi->panel);
if (ret < 0)
goto err_display_disable;
} else {
list_for_each_entry(iter, &dsi->bridge_chain, chain_node) {
if (iter->funcs->enable)
iter->funcs->enable(iter);
}
list_for_each_entry(iter, &dsi->bridge_chain, chain_node) {
if (iter->funcs->enable)
iter->funcs->enable(iter); } dsi->state |= DSIM_STATE_VIDOUT_AVAILABLE; return;
-err_display_disable:
exynos_dsi_set_display_enable(dsi, false);
drm_panel_unprepare(dsi->panel);
-err_put_sync:
dsi->state &= ~DSIM_STATE_ENABLED;
pm_runtime_put(dsi->dev);
}
static void exynos_dsi_disable(struct drm_encoder *encoder)
@@ -1439,17 +1420,12 @@ static void exynos_dsi_disable(struct drm_encoder *encoder)
dsi->state &= ~DSIM_STATE_VIDOUT_AVAILABLE;
if (dsi->panel)
drm_panel_disable(dsi->panel);
list_for_each_entry_reverse(iter, &dsi->bridge_chain, chain_node) { if (iter->funcs->disable) iter->funcs->disable(iter); } exynos_dsi_set_display_enable(dsi, false);
if (dsi->panel)
drm_panel_unprepare(dsi->panel); list_for_each_entry(iter, &dsi->bridge_chain, chain_node) { if (iter->funcs->post_disable)
@@ -1460,70 +1436,6 @@ static void exynos_dsi_disable(struct drm_encoder *encoder) pm_runtime_put_sync(dsi->dev); }
-static enum drm_connector_status -exynos_dsi_detect(struct drm_connector *connector, bool force) -{
return connector->status;
-}
-static void exynos_dsi_connector_destroy(struct drm_connector *connector) -{
drm_connector_unregister(connector);
drm_connector_cleanup(connector);
connector->dev = NULL;
-}
-static const struct drm_connector_funcs exynos_dsi_connector_funcs = {
.detect = exynos_dsi_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = exynos_dsi_connector_destroy,
.reset = drm_atomic_helper_connector_reset,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
-};
-static int exynos_dsi_get_modes(struct drm_connector *connector) -{
struct exynos_dsi *dsi = connector_to_dsi(connector);
if (dsi->panel)
return drm_panel_get_modes(dsi->panel, connector);
return 0;
-}
-static const struct drm_connector_helper_funcs exynos_dsi_connector_helper_funcs = {
.get_modes = exynos_dsi_get_modes,
-};
-static int exynos_dsi_create_connector(struct drm_encoder *encoder) -{
struct exynos_dsi *dsi = encoder_to_dsi(encoder);
struct drm_connector *connector = &dsi->connector;
struct drm_device *drm = encoder->dev;
int ret;
connector->polled = DRM_CONNECTOR_POLL_HPD;
ret = drm_connector_init(drm, connector, &exynos_dsi_connector_funcs,
DRM_MODE_CONNECTOR_DSI);
if (ret) {
DRM_DEV_ERROR(dsi->dev,
"Failed to initialize connector with drm\n");
return ret;
}
connector->status = connector_status_disconnected;
drm_connector_helper_add(connector, &exynos_dsi_connector_helper_funcs);
drm_connector_attach_encoder(connector, encoder);
if (!drm->registered)
return 0;
connector->funcs->reset(connector);
drm_connector_register(connector);
return 0;
-}
- static const struct drm_encoder_helper_funcs exynos_dsi_encoder_helper_funcs = { .enable = exynos_dsi_enable, .disable = exynos_dsi_disable,
@@ -1537,31 +1449,20 @@ static int exynos_dsi_host_attach(struct mipi_dsi_host *host, struct exynos_dsi *dsi = host_to_dsi(host); struct drm_encoder *encoder = &dsi->encoder; struct drm_device *drm = encoder->dev;
struct drm_bridge *out_bridge;
out_bridge = of_drm_find_bridge(device->dev.of_node);
if (out_bridge) {
drm_bridge_attach(encoder, out_bridge, NULL, 0);
dsi->out_bridge = out_bridge;
list_splice_init(&encoder->bridge_chain, &dsi->bridge_chain);
} else {
int ret = exynos_dsi_create_connector(encoder);
if (ret) {
DRM_DEV_ERROR(dsi->dev,
"failed to create connector ret = %d\n",
ret);
drm_encoder_cleanup(encoder);
return ret;
}
int ret;
dsi->panel = of_drm_find_panel(device->dev.of_node);
if (IS_ERR(dsi->panel))
dsi->panel = NULL;
else
dsi->connector.status = connector_status_connected;
dsi->out_bridge = devm_drm_of_get_bridge(dsi->dev, dsi->dev->of_node, DSI_PORT_OUT, 0);
if (IS_ERR(dsi->out_bridge)) {
ret = PTR_ERR(dsi->out_bridge);
DRM_DEV_ERROR(dsi->dev, "failed to find the bridge: %d\n", ret);
return ret; }
DRM_DEV_INFO(dsi->dev, "Attached %s device\n", device->name);
drm_bridge_attach(encoder, dsi->out_bridge, NULL, 0);
list_splice_init(&encoder->bridge_chain, &dsi->bridge_chain);
/* * This is a temporary solution and should be made by more generic way. *
@@ -1569,7 +1470,7 @@ static int exynos_dsi_host_attach(struct mipi_dsi_host *host, * TE interrupt handler. */ if (!(device->mode_flags & MIPI_DSI_MODE_VIDEO)) {
int ret = exynos_dsi_register_te_irq(dsi, &device->dev);
ret = exynos_dsi_register_te_irq(dsi, &device->dev); if (ret) return ret; }
@@ -1596,18 +1497,9 @@ static int exynos_dsi_host_detach(struct mipi_dsi_host *host, struct exynos_dsi *dsi = host_to_dsi(host); struct drm_device *drm = dsi->encoder.dev;
if (dsi->panel) {
mutex_lock(&drm->mode_config.mutex);
exynos_dsi_disable(&dsi->encoder);
dsi->panel = NULL;
dsi->connector.status = connector_status_disconnected;
mutex_unlock(&drm->mode_config.mutex);
} else {
if (dsi->out_bridge->funcs->detach)
dsi->out_bridge->funcs->detach(dsi->out_bridge);
dsi->out_bridge = NULL;
INIT_LIST_HEAD(&dsi->bridge_chain);
}
if (dsi->out_bridge->funcs->detach)
dsi->out_bridge->funcs->detach(dsi->out_bridge);
INIT_LIST_HEAD(&dsi->bridge_chain);
This is fishy. Currently the only bridge used with exynos_dsi (tc358764) on detach callback unregisters/puts the connector it has created.
I have a patch to drop the existing connector and add panel_bridge for tc358764. I believe this solve the connector stuff.
With this code panel_bridge on detach will call drm_connector_cleanup, which will WARN about unregistered connector - ie it assumes detach should be called at least AFTER unregistration of exynos_drm device (???).
Same will sort out if downstream bridge has panel_bridge conversation i think.
Since panel/bridge unbind in general case is not handled properly maybe it is not an issue :)
i.e what I belive.
Jagan.
Convert the encoders to bridge drivers in order to standardize on a single API with built-in dumb encoder support for compatibility with existing component drivers.
Driver bridge conversion will help to reuse the same bridge on different platforms as exynos dsi driver can be used as a Samsung DSIM and use it for i.MX8MM platform.
Bridge conversion,
- Drops drm_encoder_helper_funcs, bridge_chain.
- Adds drm_bridge_funcs and register a drm bridge.
Convert it.
Signed-off-by: Jagan Teki jagan@amarulasolutions.com --- Changes for v3: - move bridge add in host_attach - move bridge remove in host_detach - use flags, bridge in drm_bridge_attach in attch Changes for v2: - drop bridge_chain
drivers/gpu/drm/exynos/exynos_drm_dsi.c | 82 +++++++++++++------------ 1 file changed, 43 insertions(+), 39 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index d1039628b6f2..1450187c1edc 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -259,7 +259,7 @@ struct exynos_dsi_driver_data { struct exynos_dsi { struct drm_encoder encoder; struct mipi_dsi_host dsi_host; - struct list_head bridge_chain; + struct drm_bridge bridge; struct drm_bridge *out_bridge; struct device *dev;
@@ -289,9 +289,9 @@ struct exynos_dsi {
#define host_to_dsi(host) container_of(host, struct exynos_dsi, dsi_host)
-static inline struct exynos_dsi *encoder_to_dsi(struct drm_encoder *e) +static inline struct exynos_dsi *bridge_to_dsi(struct drm_bridge *b) { - return container_of(e, struct exynos_dsi, encoder); + return container_of(b, struct exynos_dsi, bridge); }
enum reg_idx { @@ -882,9 +882,10 @@ static int exynos_dsi_init_link(struct exynos_dsi *dsi) return 0; }
-static void exynos_dsi_set_display_mode(struct exynos_dsi *dsi) +static void exynos_dsi_set_display_mode(struct drm_bridge *bridge) { - struct drm_display_mode *m = &dsi->encoder.crtc->state->adjusted_mode; + struct exynos_dsi *dsi = bridge_to_dsi(bridge); + struct drm_display_mode *m = &bridge->encoder->crtc->state->adjusted_mode; unsigned int num_bits_resol = dsi->driver_data->num_bits_resol; u32 reg;
@@ -1376,10 +1377,10 @@ static void exynos_dsi_unregister_te_irq(struct exynos_dsi *dsi) } }
-static void exynos_dsi_enable(struct drm_encoder *encoder) +static void exynos_dsi_enable(struct drm_bridge *bridge) { - struct exynos_dsi *dsi = encoder_to_dsi(encoder); - struct drm_bridge *iter; + struct exynos_dsi *dsi = bridge_to_dsi(bridge); + const struct drm_bridge_funcs *funcs = dsi->out_bridge->funcs; int ret;
if (dsi->state & DSIM_STATE_ENABLED) @@ -1393,52 +1394,53 @@ static void exynos_dsi_enable(struct drm_encoder *encoder)
dsi->state |= DSIM_STATE_ENABLED;
- list_for_each_entry_reverse(iter, &dsi->bridge_chain, chain_node) { - if (iter->funcs->pre_enable) - iter->funcs->pre_enable(iter); - } + if (dsi->out_bridge) + funcs->pre_enable(dsi->out_bridge);
- exynos_dsi_set_display_mode(dsi); + exynos_dsi_set_display_mode(bridge); exynos_dsi_set_display_enable(dsi, true);
- list_for_each_entry(iter, &dsi->bridge_chain, chain_node) { - if (iter->funcs->enable) - iter->funcs->enable(iter); - } + if (dsi->out_bridge) + funcs->enable(dsi->out_bridge);
dsi->state |= DSIM_STATE_VIDOUT_AVAILABLE; return; }
-static void exynos_dsi_disable(struct drm_encoder *encoder) +static void exynos_dsi_disable(struct drm_bridge *bridge) { - struct exynos_dsi *dsi = encoder_to_dsi(encoder); - struct drm_bridge *iter; + struct exynos_dsi *dsi = bridge_to_dsi(bridge); + const struct drm_bridge_funcs *funcs = dsi->out_bridge->funcs;
if (!(dsi->state & DSIM_STATE_ENABLED)) return;
dsi->state &= ~DSIM_STATE_VIDOUT_AVAILABLE;
- list_for_each_entry_reverse(iter, &dsi->bridge_chain, chain_node) { - if (iter->funcs->disable) - iter->funcs->disable(iter); - } + if (dsi->out_bridge) + funcs->disable(dsi->out_bridge);
exynos_dsi_set_display_enable(dsi, false);
- list_for_each_entry(iter, &dsi->bridge_chain, chain_node) { - if (iter->funcs->post_disable) - iter->funcs->post_disable(iter); - } + if (dsi->out_bridge) + funcs->post_disable(dsi->out_bridge);
dsi->state &= ~DSIM_STATE_ENABLED; pm_runtime_put_sync(dsi->dev); }
-static const struct drm_encoder_helper_funcs exynos_dsi_encoder_helper_funcs = { - .enable = exynos_dsi_enable, - .disable = exynos_dsi_disable, +static int exynos_dsi_attach(struct drm_bridge *bridge, + enum drm_bridge_attach_flags flags) +{ + struct exynos_dsi *dsi = bridge_to_dsi(bridge); + + return drm_bridge_attach(bridge->encoder, dsi->out_bridge, bridge, flags); +} + +static const struct drm_bridge_funcs exynos_dsi_bridge_funcs = { + .enable = exynos_dsi_enable, + .disable = exynos_dsi_disable, + .attach = exynos_dsi_attach, };
MODULE_DEVICE_TABLE(of, exynos_dsi_of_match); @@ -1460,8 +1462,9 @@ static int exynos_dsi_host_attach(struct mipi_dsi_host *host,
DRM_DEV_INFO(dsi->dev, "Attached %s device\n", device->name);
- drm_bridge_attach(encoder, dsi->out_bridge, NULL, 0); - list_splice_init(&encoder->bridge_chain, &dsi->bridge_chain); + drm_bridge_add(&dsi->bridge); + + drm_bridge_attach(encoder, &dsi->bridge, NULL, 0);
/* * This is a temporary solution and should be made by more generic way. @@ -1499,13 +1502,14 @@ static int exynos_dsi_host_detach(struct mipi_dsi_host *host,
if (dsi->out_bridge->funcs->detach) dsi->out_bridge->funcs->detach(dsi->out_bridge); - INIT_LIST_HEAD(&dsi->bridge_chain);
if (drm->mode_config.poll_enabled) drm_kms_helper_hotplug_event(drm);
exynos_dsi_unregister_te_irq(dsi);
+ drm_bridge_remove(&dsi->bridge); + return 0; }
@@ -1591,8 +1595,6 @@ static int exynos_dsi_bind(struct device *dev, struct device *master,
drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_TMDS);
- drm_encoder_helper_add(encoder, &exynos_dsi_encoder_helper_funcs); - ret = exynos_drm_set_possible_crtcs(encoder, EXYNOS_DISPLAY_TYPE_LCD); if (ret < 0) return ret; @@ -1612,9 +1614,8 @@ static void exynos_dsi_unbind(struct device *dev, struct device *master, void *data) { struct exynos_dsi *dsi = dev_get_drvdata(dev); - struct drm_encoder *encoder = &dsi->encoder;
- exynos_dsi_disable(encoder); + exynos_dsi_disable(&dsi->bridge);
mipi_dsi_host_unregister(&dsi->dsi_host); } @@ -1640,7 +1641,6 @@ static int exynos_dsi_probe(struct platform_device *pdev) init_completion(&dsi->completed); spin_lock_init(&dsi->transfer_lock); INIT_LIST_HEAD(&dsi->transfer_list); - INIT_LIST_HEAD(&dsi->bridge_chain);
dsi->dsi_host.ops = &exynos_dsi_ops; dsi->dsi_host.dev = dev; @@ -1708,6 +1708,10 @@ static int exynos_dsi_probe(struct platform_device *pdev)
pm_runtime_enable(dev);
+ dsi->bridge.funcs = &exynos_dsi_bridge_funcs; + dsi->bridge.of_node = dev->of_node; + dsi->bridge.type = DRM_MODE_CONNECTOR_DSI; + ret = component_add(dev, &exynos_dsi_component_ops); if (ret) goto err_disable_runtime;
On 12.12.2021 19:14, Jagan Teki wrote:
Convert the encoders to bridge drivers in order to standardize on a single API with built-in dumb encoder support for compatibility with existing component drivers.
Driver bridge conversion will help to reuse the same bridge on different platforms as exynos dsi driver can be used as a Samsung DSIM and use it for i.MX8MM platform.
Bridge conversion,
- Drops drm_encoder_helper_funcs,
bridge_chain.
I wonder how it will behave on setup with two bridges after exynos_dsi.
- Adds drm_bridge_funcs and register a drm bridge.
Convert it.
Signed-off-by: Jagan Teki jagan@amarulasolutions.com
Changes for v3:
- move bridge add in host_attach
- move bridge remove in host_detach
- use flags, bridge in drm_bridge_attach in attch
Changes for v2:
drop bridge_chain
drivers/gpu/drm/exynos/exynos_drm_dsi.c | 82 +++++++++++++------------ 1 file changed, 43 insertions(+), 39 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index d1039628b6f2..1450187c1edc 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -259,7 +259,7 @@ struct exynos_dsi_driver_data { struct exynos_dsi { struct drm_encoder encoder; struct mipi_dsi_host dsi_host;
- struct list_head bridge_chain;
- struct drm_bridge bridge; struct drm_bridge *out_bridge; struct device *dev;
@@ -289,9 +289,9 @@ struct exynos_dsi {
#define host_to_dsi(host) container_of(host, struct exynos_dsi, dsi_host)
-static inline struct exynos_dsi *encoder_to_dsi(struct drm_encoder *e) +static inline struct exynos_dsi *bridge_to_dsi(struct drm_bridge *b) {
- return container_of(e, struct exynos_dsi, encoder);
return container_of(b, struct exynos_dsi, bridge); }
enum reg_idx {
@@ -882,9 +882,10 @@ static int exynos_dsi_init_link(struct exynos_dsi *dsi) return 0; }
-static void exynos_dsi_set_display_mode(struct exynos_dsi *dsi) +static void exynos_dsi_set_display_mode(struct drm_bridge *bridge) {
- struct drm_display_mode *m = &dsi->encoder.crtc->state->adjusted_mode;
- struct exynos_dsi *dsi = bridge_to_dsi(bridge);
- struct drm_display_mode *m = &bridge->encoder->crtc->state->adjusted_mode; unsigned int num_bits_resol = dsi->driver_data->num_bits_resol; u32 reg;
@@ -1376,10 +1377,10 @@ static void exynos_dsi_unregister_te_irq(struct exynos_dsi *dsi) } }
-static void exynos_dsi_enable(struct drm_encoder *encoder) +static void exynos_dsi_enable(struct drm_bridge *bridge) {
- struct exynos_dsi *dsi = encoder_to_dsi(encoder);
- struct drm_bridge *iter;
- struct exynos_dsi *dsi = bridge_to_dsi(bridge);
- const struct drm_bridge_funcs *funcs = dsi->out_bridge->funcs;
It will blow up in case there is no dsi->out_bridge, the same case in code below.
Beside this the conversion looks quite well, I hope tests will pass well :)
Regards
Andrzej
int ret;
if (dsi->state & DSIM_STATE_ENABLED) @@ -1393,52 +1394,53 @@ static void exynos_dsi_enable(struct drm_encoder *encoder)
dsi->state |= DSIM_STATE_ENABLED;
- list_for_each_entry_reverse(iter, &dsi->bridge_chain, chain_node) {
if (iter->funcs->pre_enable)
iter->funcs->pre_enable(iter);
- }
- if (dsi->out_bridge)
funcs->pre_enable(dsi->out_bridge);
- exynos_dsi_set_display_mode(dsi);
- exynos_dsi_set_display_mode(bridge); exynos_dsi_set_display_enable(dsi, true);
- list_for_each_entry(iter, &dsi->bridge_chain, chain_node) {
if (iter->funcs->enable)
iter->funcs->enable(iter);
- }
if (dsi->out_bridge)
funcs->enable(dsi->out_bridge);
dsi->state |= DSIM_STATE_VIDOUT_AVAILABLE; return; }
-static void exynos_dsi_disable(struct drm_encoder *encoder) +static void exynos_dsi_disable(struct drm_bridge *bridge) {
- struct exynos_dsi *dsi = encoder_to_dsi(encoder);
- struct drm_bridge *iter;
struct exynos_dsi *dsi = bridge_to_dsi(bridge);
const struct drm_bridge_funcs *funcs = dsi->out_bridge->funcs;
if (!(dsi->state & DSIM_STATE_ENABLED)) return;
dsi->state &= ~DSIM_STATE_VIDOUT_AVAILABLE;
- list_for_each_entry_reverse(iter, &dsi->bridge_chain, chain_node) {
if (iter->funcs->disable)
iter->funcs->disable(iter);
- }
if (dsi->out_bridge)
funcs->disable(dsi->out_bridge);
exynos_dsi_set_display_enable(dsi, false);
- list_for_each_entry(iter, &dsi->bridge_chain, chain_node) {
if (iter->funcs->post_disable)
iter->funcs->post_disable(iter);
- }
if (dsi->out_bridge)
funcs->post_disable(dsi->out_bridge);
dsi->state &= ~DSIM_STATE_ENABLED; pm_runtime_put_sync(dsi->dev); }
-static const struct drm_encoder_helper_funcs exynos_dsi_encoder_helper_funcs = {
- .enable = exynos_dsi_enable,
- .disable = exynos_dsi_disable,
+static int exynos_dsi_attach(struct drm_bridge *bridge,
enum drm_bridge_attach_flags flags)
+{
- struct exynos_dsi *dsi = bridge_to_dsi(bridge);
- return drm_bridge_attach(bridge->encoder, dsi->out_bridge, bridge, flags);
+}
+static const struct drm_bridge_funcs exynos_dsi_bridge_funcs = {
.enable = exynos_dsi_enable,
.disable = exynos_dsi_disable,
.attach = exynos_dsi_attach, };
MODULE_DEVICE_TABLE(of, exynos_dsi_of_match);
@@ -1460,8 +1462,9 @@ static int exynos_dsi_host_attach(struct mipi_dsi_host *host,
DRM_DEV_INFO(dsi->dev, "Attached %s device\n", device->name);
- drm_bridge_attach(encoder, dsi->out_bridge, NULL, 0);
- list_splice_init(&encoder->bridge_chain, &dsi->bridge_chain);
drm_bridge_add(&dsi->bridge);
drm_bridge_attach(encoder, &dsi->bridge, NULL, 0);
/*
- This is a temporary solution and should be made by more generic way.
@@ -1499,13 +1502,14 @@ static int exynos_dsi_host_detach(struct mipi_dsi_host *host,
if (dsi->out_bridge->funcs->detach) dsi->out_bridge->funcs->detach(dsi->out_bridge);
INIT_LIST_HEAD(&dsi->bridge_chain);
if (drm->mode_config.poll_enabled) drm_kms_helper_hotplug_event(drm);
exynos_dsi_unregister_te_irq(dsi);
- drm_bridge_remove(&dsi->bridge);
- return 0; }
@@ -1591,8 +1595,6 @@ static int exynos_dsi_bind(struct device *dev, struct device *master,
drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_TMDS);
- drm_encoder_helper_add(encoder, &exynos_dsi_encoder_helper_funcs);
- ret = exynos_drm_set_possible_crtcs(encoder, EXYNOS_DISPLAY_TYPE_LCD); if (ret < 0) return ret;
@@ -1612,9 +1614,8 @@ static void exynos_dsi_unbind(struct device *dev, struct device *master, void *data) { struct exynos_dsi *dsi = dev_get_drvdata(dev);
struct drm_encoder *encoder = &dsi->encoder;
exynos_dsi_disable(encoder);
exynos_dsi_disable(&dsi->bridge);
mipi_dsi_host_unregister(&dsi->dsi_host); }
@@ -1640,7 +1641,6 @@ static int exynos_dsi_probe(struct platform_device *pdev) init_completion(&dsi->completed); spin_lock_init(&dsi->transfer_lock); INIT_LIST_HEAD(&dsi->transfer_list);
INIT_LIST_HEAD(&dsi->bridge_chain);
dsi->dsi_host.ops = &exynos_dsi_ops; dsi->dsi_host.dev = dev;
@@ -1708,6 +1708,10 @@ static int exynos_dsi_probe(struct platform_device *pdev)
pm_runtime_enable(dev);
- dsi->bridge.funcs = &exynos_dsi_bridge_funcs;
- dsi->bridge.of_node = dev->of_node;
- dsi->bridge.type = DRM_MODE_CONNECTOR_DSI;
- ret = component_add(dev, &exynos_dsi_component_ops); if (ret) goto err_disable_runtime;
Existing driver is calling manual bridge pre_enable, enable, disable and post_disable helpers with their enable and disable functions.
Separate the enable code with pre_enable and enable helpers like enable the DSI in pre_enable and set the display in enable.
Separate the disable code with disable and post_disable helpers like disable the DSI in disable and reset the display in post_disable.
This way the bridge functions are compatible with respective downstream bridge and panel_bridge drivers.
Example of enable bridge function calls with panel_bridge is,
[ 2.079030] panel_bridge_pre_enable: start [ 2.079043] panel_bridge_pre_enable: end! [ 2.079045] exynos_dsi_atomic_pre_enable: start [ 2.079723] exynos_dsi_atomic_pre_enable: end! [ 2.079728] exynos_dsi_atomic_enable: start [ 2.102500] exynos_dsi_atomic_enable: end [ 2.146505] panel_bridge_enable: start [ 2.148547] panel_bridge_enable: enable
Signed-off-by: Jagan Teki jagan@amarulasolutions.com --- Changes for v3: - new patch
drivers/gpu/drm/exynos/exynos_drm_dsi.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index 1450187c1edc..07083a545948 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -1377,10 +1377,9 @@ static void exynos_dsi_unregister_te_irq(struct exynos_dsi *dsi) } }
-static void exynos_dsi_enable(struct drm_bridge *bridge) +static void exynos_dsi_pre_enable(struct drm_bridge *bridge) { struct exynos_dsi *dsi = bridge_to_dsi(bridge); - const struct drm_bridge_funcs *funcs = dsi->out_bridge->funcs; int ret;
if (dsi->state & DSIM_STATE_ENABLED) @@ -1393,38 +1392,36 @@ static void exynos_dsi_enable(struct drm_bridge *bridge) }
dsi->state |= DSIM_STATE_ENABLED; +}
- if (dsi->out_bridge) - funcs->pre_enable(dsi->out_bridge); +static void exynos_dsi_enable(struct drm_bridge *bridge) +{ + struct exynos_dsi *dsi = bridge_to_dsi(bridge);
exynos_dsi_set_display_mode(bridge); exynos_dsi_set_display_enable(dsi, true);
- if (dsi->out_bridge) - funcs->enable(dsi->out_bridge); - dsi->state |= DSIM_STATE_VIDOUT_AVAILABLE; + return; }
static void exynos_dsi_disable(struct drm_bridge *bridge) { struct exynos_dsi *dsi = bridge_to_dsi(bridge); - const struct drm_bridge_funcs *funcs = dsi->out_bridge->funcs;
if (!(dsi->state & DSIM_STATE_ENABLED)) return;
dsi->state &= ~DSIM_STATE_VIDOUT_AVAILABLE; +}
- if (dsi->out_bridge) - funcs->disable(dsi->out_bridge); +static void exynos_dsi_post_disable(struct drm_bridge *bridge) +{ + struct exynos_dsi *dsi = bridge_to_dsi(bridge);
exynos_dsi_set_display_enable(dsi, false);
- if (dsi->out_bridge) - funcs->post_disable(dsi->out_bridge); - dsi->state &= ~DSIM_STATE_ENABLED; pm_runtime_put_sync(dsi->dev); } @@ -1438,8 +1435,10 @@ static int exynos_dsi_attach(struct drm_bridge *bridge, }
static const struct drm_bridge_funcs exynos_dsi_bridge_funcs = { + .pre_enable = exynos_dsi_pre_enable, .enable = exynos_dsi_enable, .disable = exynos_dsi_disable, + .post_disable = exynos_dsi_post_disable, .attach = exynos_dsi_attach, };
On 12.12.2021 19:14, Jagan Teki wrote:
Existing driver is calling manual bridge pre_enable, enable, disable and post_disable helpers with their enable and disable functions.
Separate the enable code with pre_enable and enable helpers like enable the DSI in pre_enable and set the display in enable.
Separate the disable code with disable and post_disable helpers like disable the DSI in disable and reset the display in post_disable.
This way the bridge functions are compatible with respective downstream bridge and panel_bridge drivers.
Example of enable bridge function calls with panel_bridge is,
[ 2.079030] panel_bridge_pre_enable: start [ 2.079043] panel_bridge_pre_enable: end! [ 2.079045] exynos_dsi_atomic_pre_enable: start [ 2.079723] exynos_dsi_atomic_pre_enable: end! [ 2.079728] exynos_dsi_atomic_enable: start [ 2.102500] exynos_dsi_atomic_enable: end [ 2.146505] panel_bridge_enable: start [ 2.148547] panel_bridge_enable: enable Signed-off-by: Jagan Teki jagan@amarulasolutions.com
Changes for v3:
new patch
drivers/gpu/drm/exynos/exynos_drm_dsi.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index 1450187c1edc..07083a545948 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -1377,10 +1377,9 @@ static void exynos_dsi_unregister_te_irq(struct exynos_dsi *dsi) } }
-static void exynos_dsi_enable(struct drm_bridge *bridge) +static void exynos_dsi_pre_enable(struct drm_bridge *bridge) { struct exynos_dsi *dsi = bridge_to_dsi(bridge);
const struct drm_bridge_funcs *funcs = dsi->out_bridge->funcs; int ret;
if (dsi->state & DSIM_STATE_ENABLED)
@@ -1393,38 +1392,36 @@ static void exynos_dsi_enable(struct drm_bridge *bridge) }
dsi->state |= DSIM_STATE_ENABLED; +}
- if (dsi->out_bridge)
funcs->pre_enable(dsi->out_bridge);
+static void exynos_dsi_enable(struct drm_bridge *bridge) +{
struct exynos_dsi *dsi = bridge_to_dsi(bridge);
exynos_dsi_set_display_mode(bridge); exynos_dsi_set_display_enable(dsi, true);
- if (dsi->out_bridge)
funcs->enable(dsi->out_bridge);
Ok, apparently I haven't catch that in previous patch you have left out bridge attached to encoder->bridge_chain, before the previous patch out bridge was detached from bridge_chain, which assured exynos_dsi has full control about callbacks.
Does it mean that after prev patch all bridge calls were called twice, I think it is incorrect.
Regards
Andrzej
dsi->state |= DSIM_STATE_VIDOUT_AVAILABLE;
return; }
static void exynos_dsi_disable(struct drm_bridge *bridge) { struct exynos_dsi *dsi = bridge_to_dsi(bridge);
const struct drm_bridge_funcs *funcs = dsi->out_bridge->funcs;
if (!(dsi->state & DSIM_STATE_ENABLED)) return;
dsi->state &= ~DSIM_STATE_VIDOUT_AVAILABLE;
+}
- if (dsi->out_bridge)
funcs->disable(dsi->out_bridge);
+static void exynos_dsi_post_disable(struct drm_bridge *bridge) +{
struct exynos_dsi *dsi = bridge_to_dsi(bridge);
exynos_dsi_set_display_enable(dsi, false);
- if (dsi->out_bridge)
funcs->post_disable(dsi->out_bridge);
- dsi->state &= ~DSIM_STATE_ENABLED; pm_runtime_put_sync(dsi->dev); }
@@ -1438,8 +1435,10 @@ static int exynos_dsi_attach(struct drm_bridge *bridge, }
static const struct drm_bridge_funcs exynos_dsi_bridge_funcs = {
- .pre_enable = exynos_dsi_pre_enable, .enable = exynos_dsi_enable, .disable = exynos_dsi_disable,
- .post_disable = exynos_dsi_post_disable, .attach = exynos_dsi_attach, };
On Mon, Dec 13, 2021 at 3:27 PM Andrzej Hajda andrzej.hajda@intel.com wrote:
On 12.12.2021 19:14, Jagan Teki wrote:
Existing driver is calling manual bridge pre_enable, enable, disable and post_disable helpers with their enable and disable functions.
Separate the enable code with pre_enable and enable helpers like enable the DSI in pre_enable and set the display in enable.
Separate the disable code with disable and post_disable helpers like disable the DSI in disable and reset the display in post_disable.
This way the bridge functions are compatible with respective downstream bridge and panel_bridge drivers.
Example of enable bridge function calls with panel_bridge is,
[ 2.079030] panel_bridge_pre_enable: start [ 2.079043] panel_bridge_pre_enable: end! [ 2.079045] exynos_dsi_atomic_pre_enable: start [ 2.079723] exynos_dsi_atomic_pre_enable: end! [ 2.079728] exynos_dsi_atomic_enable: start [ 2.102500] exynos_dsi_atomic_enable: end [ 2.146505] panel_bridge_enable: start [ 2.148547] panel_bridge_enable: enable Signed-off-by: Jagan Teki jagan@amarulasolutions.com
Changes for v3:
new patch
drivers/gpu/drm/exynos/exynos_drm_dsi.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index 1450187c1edc..07083a545948 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -1377,10 +1377,9 @@ static void exynos_dsi_unregister_te_irq(struct exynos_dsi *dsi) } }
-static void exynos_dsi_enable(struct drm_bridge *bridge) +static void exynos_dsi_pre_enable(struct drm_bridge *bridge) { struct exynos_dsi *dsi = bridge_to_dsi(bridge);
const struct drm_bridge_funcs *funcs = dsi->out_bridge->funcs; int ret; if (dsi->state & DSIM_STATE_ENABLED)
@@ -1393,38 +1392,36 @@ static void exynos_dsi_enable(struct drm_bridge *bridge) }
dsi->state |= DSIM_STATE_ENABLED;
+}
if (dsi->out_bridge)
funcs->pre_enable(dsi->out_bridge);
+static void exynos_dsi_enable(struct drm_bridge *bridge) +{
struct exynos_dsi *dsi = bridge_to_dsi(bridge); exynos_dsi_set_display_mode(bridge); exynos_dsi_set_display_enable(dsi, true);
if (dsi->out_bridge)
funcs->enable(dsi->out_bridge);
Ok, apparently I haven't catch that in previous patch you have left out bridge attached to encoder->bridge_chain, before the previous patch out bridge was detached from bridge_chain, which assured exynos_dsi has full control about callbacks.
Does it mean that after prev patch all bridge calls were called twice, I think it is incorrect.
I think squash this to previous patch make sense. let me know if you are fine with it?
Thanks, Jagan.
The new support drm bridges are moving towards atomic functions.
Replace atomic version of functions to continue the transition to the atomic API.
Signed-off-by: Jagan Teki jagan@amarulasolutions.com --- Changes for v3: - none
drivers/gpu/drm/exynos/exynos_drm_dsi.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index 07083a545948..feb36a5dc646 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -1377,7 +1377,8 @@ static void exynos_dsi_unregister_te_irq(struct exynos_dsi *dsi) } }
-static void exynos_dsi_pre_enable(struct drm_bridge *bridge) +static void exynos_dsi_atomic_pre_enable(struct drm_bridge *bridge, + struct drm_bridge_state *old_bridge_state) { struct exynos_dsi *dsi = bridge_to_dsi(bridge); int ret; @@ -1394,7 +1395,8 @@ static void exynos_dsi_pre_enable(struct drm_bridge *bridge) dsi->state |= DSIM_STATE_ENABLED; }
-static void exynos_dsi_enable(struct drm_bridge *bridge) +static void exynos_dsi_atomic_enable(struct drm_bridge *bridge, + struct drm_bridge_state *old_bridge_state) { struct exynos_dsi *dsi = bridge_to_dsi(bridge);
@@ -1406,7 +1408,8 @@ static void exynos_dsi_enable(struct drm_bridge *bridge) return; }
-static void exynos_dsi_disable(struct drm_bridge *bridge) +static void exynos_dsi_atomic_disable(struct drm_bridge *bridge, + struct drm_bridge_state *old_bridge_state) { struct exynos_dsi *dsi = bridge_to_dsi(bridge);
@@ -1416,7 +1419,8 @@ static void exynos_dsi_disable(struct drm_bridge *bridge) dsi->state &= ~DSIM_STATE_VIDOUT_AVAILABLE; }
-static void exynos_dsi_post_disable(struct drm_bridge *bridge) +static void exynos_dsi_atomic_post_disable(struct drm_bridge *bridge, + struct drm_bridge_state *old_bridge_state) { struct exynos_dsi *dsi = bridge_to_dsi(bridge);
@@ -1435,10 +1439,13 @@ static int exynos_dsi_attach(struct drm_bridge *bridge, }
static const struct drm_bridge_funcs exynos_dsi_bridge_funcs = { - .pre_enable = exynos_dsi_pre_enable, - .enable = exynos_dsi_enable, - .disable = exynos_dsi_disable, - .post_disable = exynos_dsi_post_disable, + .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state, + .atomic_destroy_state = drm_atomic_helper_bridge_destroy_state, + .atomic_reset = drm_atomic_helper_bridge_reset, + .atomic_pre_enable = exynos_dsi_atomic_pre_enable, + .atomic_enable = exynos_dsi_atomic_enable, + .atomic_disable = exynos_dsi_atomic_disable, + .atomic_post_disable = exynos_dsi_atomic_post_disable, .attach = exynos_dsi_attach, };
@@ -1614,7 +1621,7 @@ static void exynos_dsi_unbind(struct device *dev, struct device *master, { struct exynos_dsi *dsi = dev_get_drvdata(dev);
- exynos_dsi_disable(&dsi->bridge); + exynos_dsi_atomic_disable(&dsi->bridge, NULL);
mipi_dsi_host_unregister(&dsi->dsi_host); }
Now the exynos dsi driver is fully aware of bridge handling, so get the display mode from bridge, mode_set API instead of legacy encoder crtc.
This makes bridge usage more efficient instead of relying on encoder stack.
Add mode_set in drm_bridge_funcs.
Signed-off-by: Jagan Teki jagan@amarulasolutions.com --- Changes for v3: - new patch
drivers/gpu/drm/exynos/exynos_drm_dsi.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index feb36a5dc646..a2eb82bbb30f 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -278,6 +278,7 @@ struct exynos_dsi { u32 format;
int state; + struct drm_display_mode mode; struct drm_property *brightness; struct completion completed;
@@ -882,10 +883,9 @@ static int exynos_dsi_init_link(struct exynos_dsi *dsi) return 0; }
-static void exynos_dsi_set_display_mode(struct drm_bridge *bridge) +static void exynos_dsi_set_display_mode(struct exynos_dsi *dsi) { - struct exynos_dsi *dsi = bridge_to_dsi(bridge); - struct drm_display_mode *m = &bridge->encoder->crtc->state->adjusted_mode; + struct drm_display_mode *m = &dsi->mode; unsigned int num_bits_resol = dsi->driver_data->num_bits_resol; u32 reg;
@@ -1400,7 +1400,7 @@ static void exynos_dsi_atomic_enable(struct drm_bridge *bridge, { struct exynos_dsi *dsi = bridge_to_dsi(bridge);
- exynos_dsi_set_display_mode(bridge); + exynos_dsi_set_display_mode(dsi); exynos_dsi_set_display_enable(dsi, true);
dsi->state |= DSIM_STATE_VIDOUT_AVAILABLE; @@ -1430,6 +1430,15 @@ static void exynos_dsi_atomic_post_disable(struct drm_bridge *bridge, pm_runtime_put_sync(dsi->dev); }
+static void exynos_dsi_mode_set(struct drm_bridge *bridge, + const struct drm_display_mode *mode, + const struct drm_display_mode *adjusted_mode) +{ + struct exynos_dsi *dsi = bridge_to_dsi(bridge); + + drm_mode_copy(&dsi->mode, adjusted_mode); +} + static int exynos_dsi_attach(struct drm_bridge *bridge, enum drm_bridge_attach_flags flags) { @@ -1446,6 +1455,7 @@ static const struct drm_bridge_funcs exynos_dsi_bridge_funcs = { .atomic_enable = exynos_dsi_atomic_enable, .atomic_disable = exynos_dsi_atomic_disable, .atomic_post_disable = exynos_dsi_atomic_post_disable, + .mode_set = exynos_dsi_mode_set, .attach = exynos_dsi_attach, };
Host transfer in DSI master will invoke only when the DSI commands sent from DSI devices like DSI Panel or DSI bridges and this host transfer wouldn't invoke I2C based DSI bridge drivers.
Handling DSI host initialization in transfer calls might miss the controller setup for I2C configured DSI bridges.
So, move the DSI initialization from transfer to bridge enable as the bridge enable API as it is common across all classes of DSI device drivers.
Signed-off-by: Jagan Teki jagan@amarulasolutions.com --- Changes for v3: - new patch
drivers/gpu/drm/exynos/exynos_drm_dsi.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index a2eb82bbb30f..29d4eaaff5e8 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -1399,6 +1399,14 @@ static void exynos_dsi_atomic_enable(struct drm_bridge *bridge, struct drm_bridge_state *old_bridge_state) { struct exynos_dsi *dsi = bridge_to_dsi(bridge); + int ret; + + if (!(dsi->state & DSIM_STATE_INITIALIZED)) { + ret = exynos_dsi_init(dsi); + if (ret) + return; + dsi->state |= DSIM_STATE_INITIALIZED; + }
exynos_dsi_set_display_mode(dsi); exynos_dsi_set_display_enable(dsi, true); @@ -1539,13 +1547,6 @@ static ssize_t exynos_dsi_host_transfer(struct mipi_dsi_host *host, if (!(dsi->state & DSIM_STATE_ENABLED)) return -EINVAL;
- if (!(dsi->state & DSIM_STATE_INITIALIZED)) { - ret = exynos_dsi_init(dsi); - if (ret) - return ret; - dsi->state |= DSIM_STATE_INITIALIZED; - } - ret = mipi_dsi_create_packet(&xfer.packet, msg); if (ret < 0) return ret;
Dear Jagan,
On 12.12.2021 19:14, Jagan Teki wrote:
Updated series about drm bridge conversion of exynos dsi.
Patch 1: panel checker
Patch 2: panel_bridge API
Patch 3: Bridge conversion
Patch 4: pree_enable, post_disable
Patch 5: Atomic functions
Patch 6: atomic_set
Patch 7: DSI init in enable
[1] https://patchwork.kernel.org/project/dri-devel/cover/20211210191922.2367979-...
Any inputs?
I've checked this patchset on Exynos based Trats2 board (the one with simplest display pipeline: Exynos FIMD -> Exynos DSI -> s6e8aa0 DSI panel). DRM stops working after the 2nd patch ("[PATCH v3 2/7] drm: exynos: dsi: Use drm panel_bridge API"):
# dmesg | grep drm [ 2.511893] [drm] Exynos DRM: using 11c00000.fimd device for DMA mapping operations [ 2.518653] exynos-drm exynos-drm: bound 11c00000.fimd (ops fimd_component_ops) [ 2.535699] exynos-drm exynos-drm: bound 11c80000.dsi (ops exynos_dsi_component_ops) [ 2.543912] exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes [ 2.556107] [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on minor 0 [ 2.573212] exynos-dsi 11c80000.dsi: [drm:exynos_dsi_host_attach] *ERROR* failed to find the bridge: -19 [ 2.653553] [drm] Initialized lima 1.1.0 20191231 for 13000000.gpu on minor 1
# ./modetest -c -Mexynos Connectors: id encoder status name size (mm) modes encoders
Applying the whole patchset doesn't fix anything.
Jagan.
Jagan Teki (7): drm: exynos: dsi: Check panel for panel helpers drm: exynos: dsi: Use drm panel_bridge API drm: exynos: dsi: Convert to bridge driver drm: exynos: dsi: Separate pre_enable, post_disable code drm: exynos: dsi: Switch to atomic funcs drm: exynos: dsi: Get the mode from bridge drm: exynos: dsi: Move DSI init in bridge enable
drivers/gpu/drm/exynos/exynos_drm_dsi.c | 240 ++++++++---------------- 1 file changed, 75 insertions(+), 165 deletions(-)
Best regards
Hi Marek,
On Mon, Dec 13, 2021 at 5:34 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
Dear Jagan,
On 12.12.2021 19:14, Jagan Teki wrote:
Updated series about drm bridge conversion of exynos dsi.
Patch 1: panel checker
Patch 2: panel_bridge API
Patch 3: Bridge conversion
Patch 4: pree_enable, post_disable
Patch 5: Atomic functions
Patch 6: atomic_set
Patch 7: DSI init in enable
[1] https://patchwork.kernel.org/project/dri-devel/cover/20211210191922.2367979-...
Any inputs?
I've checked this patchset on Exynos based Trats2 board (the one with simplest display pipeline: Exynos FIMD -> Exynos DSI -> s6e8aa0 DSI panel). DRM stops working after the 2nd patch ("[PATCH v3 2/7] drm: exynos: dsi: Use drm panel_bridge API"):
# dmesg | grep drm [ 2.511893] [drm] Exynos DRM: using 11c00000.fimd device for DMA mapping operations [ 2.518653] exynos-drm exynos-drm: bound 11c00000.fimd (ops fimd_component_ops) [ 2.535699] exynos-drm exynos-drm: bound 11c80000.dsi (ops exynos_dsi_component_ops) [ 2.543912] exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes [ 2.556107] [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on minor 0 [ 2.573212] exynos-dsi 11c80000.dsi: [drm:exynos_dsi_host_attach] *ERROR* failed to find the bridge: -19
Look like you have missed to apply the Child lookup patch. is it so?
Let me send it, I will CC you as well. And I will also send tc358764 panel_bridge conversion.
Thanks, Jagan.
Hi Jagan,
On 13.12.2021 13:08, Jagan Teki wrote:
On Mon, Dec 13, 2021 at 5:34 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
On 12.12.2021 19:14, Jagan Teki wrote:
Updated series about drm bridge conversion of exynos dsi.
Patch 1: panel checker
Patch 2: panel_bridge API
Patch 3: Bridge conversion
Patch 4: pree_enable, post_disable
Patch 5: Atomic functions
Patch 6: atomic_set
Patch 7: DSI init in enable
[1] https://patchwork.kernel.org/project/dri-devel/cover/20211210191922.2367979-...
Any inputs?
I've checked this patchset on Exynos based Trats2 board (the one with simplest display pipeline: Exynos FIMD -> Exynos DSI -> s6e8aa0 DSI panel). DRM stops working after the 2nd patch ("[PATCH v3 2/7] drm: exynos: dsi: Use drm panel_bridge API"):
# dmesg | grep drm [ 2.511893] [drm] Exynos DRM: using 11c00000.fimd device for DMA mapping operations [ 2.518653] exynos-drm exynos-drm: bound 11c00000.fimd (ops fimd_component_ops) [ 2.535699] exynos-drm exynos-drm: bound 11c80000.dsi (ops exynos_dsi_component_ops) [ 2.543912] exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes [ 2.556107] [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on minor 0 [ 2.573212] exynos-dsi 11c80000.dsi: [drm:exynos_dsi_host_attach] *ERROR* failed to find the bridge: -19
Look like you have missed to apply the Child lookup patch. is it so?
Let me send it, I will CC you as well. And I will also send tc358764 panel_bridge conversion.
The above log is from Trats2 board, which uses only the s6e8aa0 DSI panel. I've also checked the Arndale board, which has tc358764 bridge and it also doesn't work. Which patches I have to apply for the tests?
Best regards
Hi Marek,
On Mon, Dec 13, 2021 at 5:42 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
Hi Jagan,
On 13.12.2021 13:08, Jagan Teki wrote:
On Mon, Dec 13, 2021 at 5:34 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
On 12.12.2021 19:14, Jagan Teki wrote:
Updated series about drm bridge conversion of exynos dsi.
Patch 1: panel checker
Patch 2: panel_bridge API
Patch 3: Bridge conversion
Patch 4: pree_enable, post_disable
Patch 5: Atomic functions
Patch 6: atomic_set
Patch 7: DSI init in enable
[1] https://patchwork.kernel.org/project/dri-devel/cover/20211210191922.2367979-...
Any inputs?
I've checked this patchset on Exynos based Trats2 board (the one with simplest display pipeline: Exynos FIMD -> Exynos DSI -> s6e8aa0 DSI panel). DRM stops working after the 2nd patch ("[PATCH v3 2/7] drm: exynos: dsi: Use drm panel_bridge API"):
# dmesg | grep drm [ 2.511893] [drm] Exynos DRM: using 11c00000.fimd device for DMA mapping operations [ 2.518653] exynos-drm exynos-drm: bound 11c00000.fimd (ops fimd_component_ops) [ 2.535699] exynos-drm exynos-drm: bound 11c80000.dsi (ops exynos_dsi_component_ops) [ 2.543912] exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes [ 2.556107] [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on minor 0 [ 2.573212] exynos-dsi 11c80000.dsi: [drm:exynos_dsi_host_attach] *ERROR* failed to find the bridge: -19
Look like you have missed to apply the Child lookup patch. is it so?
Let me send it, I will CC you as well. And I will also send tc358764 panel_bridge conversion.
The above log is from Trats2 board, which uses only the s6e8aa0 DSI panel. I've also checked the Arndale board, which has tc358764 bridge and it also doesn't work. Which patches I have to apply for the tests?
[PATCH v2] drm: of: Lookup if child node has panel or bridge [PATCH] drm: bridge: tc358764: Use drm panel_bridge API
Thanks, Jagan.
Hi Jagan,
On 13.12.2021 13:31, Jagan Teki wrote:
On Mon, Dec 13, 2021 at 5:42 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
On 13.12.2021 13:08, Jagan Teki wrote:
On Mon, Dec 13, 2021 at 5:34 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
On 12.12.2021 19:14, Jagan Teki wrote:
Updated series about drm bridge conversion of exynos dsi.
Patch 1: panel checker
Patch 2: panel_bridge API
Patch 3: Bridge conversion
Patch 4: pree_enable, post_disable
Patch 5: Atomic functions
Patch 6: atomic_set
Patch 7: DSI init in enable
[1] https://patchwork.kernel.org/project/dri-devel/cover/20211210191922.2367979-...
Any inputs?
I've checked this patchset on Exynos based Trats2 board (the one with simplest display pipeline: Exynos FIMD -> Exynos DSI -> s6e8aa0 DSI panel). DRM stops working after the 2nd patch ("[PATCH v3 2/7] drm: exynos: dsi: Use drm panel_bridge API"):
# dmesg | grep drm [ 2.511893] [drm] Exynos DRM: using 11c00000.fimd device for DMA mapping operations [ 2.518653] exynos-drm exynos-drm: bound 11c00000.fimd (ops fimd_component_ops) [ 2.535699] exynos-drm exynos-drm: bound 11c80000.dsi (ops exynos_dsi_component_ops) [ 2.543912] exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes [ 2.556107] [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on minor 0 [ 2.573212] exynos-dsi 11c80000.dsi: [drm:exynos_dsi_host_attach] *ERROR* failed to find the bridge: -19
Look like you have missed to apply the Child lookup patch. is it so?
Let me send it, I will CC you as well. And I will also send tc358764 panel_bridge conversion.
The above log is from Trats2 board, which uses only the s6e8aa0 DSI panel. I've also checked the Arndale board, which has tc358764 bridge and it also doesn't work. Which patches I have to apply for the tests?
[PATCH v2] drm: of: Lookup if child node has panel or bridge [PATCH] drm: bridge: tc358764: Use drm panel_bridge API
Ok, I've applied both. Still no success on Trats:
[ 2.451632] exynos4-fb 11c00000.fimd: Adding to iommu group 0 [ 2.458137] OF: graph: no port node found in /soc/fimd@11c00000 [ 2.476903] [drm] Exynos DRM: using 11c00000.fimd device for DMA mapping operations [ 2.483905] exynos-drm exynos-drm: bound 11c00000.fimd (ops fimd_component_ops) [ 2.490858] OF: graph: no port node found in /soc/dsi@11c80000 [ 2.500283] exynos-drm exynos-drm: bound 11c80000.dsi (ops exynos_dsi_component_ops) [ 2.508490] exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes [ 2.520121] [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on minor 0 [ 2.537231] exynos-dsi 11c80000.dsi: [drm:exynos_dsi_host_attach] Attached s6e8aa0 device [ 2.566358] ------------[ cut here ]------------ [ 2.569894] WARNING: CPU: 1 PID: 29 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 2.586123] Modules linked in: [ 2.586171] CPU: 1 PID: 29 Comm: kworker/1:2 Not tainted 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 2.586190] Hardware name: Samsung Exynos (Flattened Device Tree) [ 2.586203] Workqueue: events output_poll_execute [ 2.586235] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 2.586267] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 2.586299] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 2.586324] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 2.586346] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 2.586371] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 2.586398] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 2.586421] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 2.586453] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 2.586479] [<c067e800>] (drm_client_modeset_commit_locked) from [<c067e98c>] (drm_client_modeset_commit+0x24/0x40) [ 2.586505] [<c067e98c>] (drm_client_modeset_commit) from [<c06509c0>] (drm_fb_helper_set_par+0xb8/0xf8) [ 2.586535] [<c06509c0>] (drm_fb_helper_set_par) from [<c0650aa8>] (drm_fb_helper_hotplug_event.part.0+0xa8/0xc0) [ 2.586560] [<c0650aa8>] (drm_fb_helper_hotplug_event.part.0) from [<c063ab40>] (output_poll_execute+0xac/0x21c) [ 2.586585] [<c063ab40>] (output_poll_execute) from [<c01470ec>] (process_one_work+0x288/0x7a4) [ 2.586611] [<c01470ec>] (process_one_work) from [<c014764c>] (worker_thread+0x44/0x534) [ 2.586633] [<c014764c>] (worker_thread) from [<c01500ac>] (kthread+0x158/0x190) [ 2.586655] [<c01500ac>] (kthread) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 2.586675] Exception stack(0xc1f6ffb0 to 0xc1f6fff8) [ 2.586690] ffa0: 00000000 00000000 00000000 00000000 [ 2.586705] ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 2.586720] ffe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 2.586734] irq event stamp: 449 [ 2.586749] hardirqs last enabled at (455): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 2.586780] hardirqs last disabled at (460): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 2.586804] softirqs last enabled at (430): [<c0101578>] __do_softirq+0x348/0x610 [ 2.586829] softirqs last disabled at (425): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 2.586902] ---[ end trace e6002ef7c126805b ]--- [ 2.587418] ------------[ cut here ]------------ [ 2.587452] WARNING: CPU: 1 PID: 1 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 2.587485] Modules linked in: [ 2.587518] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G W 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 2.587535] Hardware name: Samsung Exynos (Flattened Device Tree) [ 2.587548] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 2.587576] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 2.587605] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 2.587628] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 2.587650] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 2.587676] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 2.587700] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 2.587724] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 2.587751] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 2.587778] [<c067e800>] (drm_client_modeset_commit_locked) from [<c067e98c>] (drm_client_modeset_commit+0x24/0x40) [ 2.587804] [<c067e98c>] (drm_client_modeset_commit) from [<c06509c0>] (drm_fb_helper_set_par+0xb8/0xf8) [ 2.587831] [<c06509c0>] (drm_fb_helper_set_par) from [<c05b86d0>] (fbcon_init+0x2c0/0x518) [ 2.587858] [<c05b86d0>] (fbcon_init) from [<c060636c>] (visual_init+0xc0/0x108) [ 2.587888] [<c060636c>] (visual_init) from [<c06085e4>] (do_bind_con_driver+0x1b8/0x3a4) [ 2.587915] [<c06085e4>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 2.587942] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 2.587968] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 2.588001] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 2.588028] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 2.588053] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 2.588088] [<c068f668>] (exynos_dsi_host_attach) from [<c0699354>] (s6e8aa0_probe+0x1b4/0x218) [ 2.588117] [<c0699354>] (s6e8aa0_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 2.588147] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 2.588172] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 2.588197] [<c06b79f8>] (driver_probe_device) from [<c06b819c>] (__driver_attach+0xf0/0x1d4) [ 2.588222] [<c06b819c>] (__driver_attach) from [<c06b5164>] (bus_for_each_dev+0x70/0xb0) [ 2.588246] [<c06b5164>] (bus_for_each_dev) from [<c06b65ec>] (bus_add_driver+0x170/0x20c) [ 2.588270] [<c06b65ec>] (bus_add_driver) from [<c06b8c08>] (driver_register+0x88/0x118) [ 2.588294] [<c06b8c08>] (driver_register) from [<c01021e8>] (do_one_initcall+0x64/0x380) [ 2.588320] [<c01021e8>] (do_one_initcall) from [<c110123c>] (kernel_init_freeable+0x1c0/0x224) [ 2.588353] [<c110123c>] (kernel_init_freeable) from [<c0b6ba54>] (kernel_init+0x18/0x12c) [ 2.588380] [<c0b6ba54>] (kernel_init) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 2.588401] Exception stack(0xc1cb5fb0 to 0xc1cb5ff8) [ 2.588416] 5fa0: 00000000 00000000 00000000 00000000 [ 2.588432] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 2.588446] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 2.588460] irq event stamp: 175387 [ 2.588477] hardirqs last enabled at (175393): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 2.588506] hardirqs last disabled at (175398): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 2.588531] softirqs last enabled at (171796): [<c0101578>] __do_softirq+0x348/0x610 [ 2.588555] softirqs last disabled at (171781): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 2.588581] ---[ end trace e6002ef7c126805c ]--- [ 2.588971] ------------[ cut here ]------------ [ 2.588989] WARNING: CPU: 1 PID: 1 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 2.589022] Modules linked in: [ 2.589053] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G W 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 2.589072] Hardware name: Samsung Exynos (Flattened Device Tree) [ 2.589085] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 2.589113] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 2.589140] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 2.589165] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 2.589187] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 2.589212] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 2.589237] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 2.589260] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 2.589288] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 2.589314] [<c067e800>] (drm_client_modeset_commit_locked) from [<c064fe38>] (drm_fb_helper_pan_display+0x98/0x1c0) [ 2.589342] [<c064fe38>] (drm_fb_helper_pan_display) from [<c05b024c>] (fb_pan_display+0x9c/0x114) [ 2.589372] [<c05b024c>] (fb_pan_display) from [<c05bac24>] (bit_update_start+0x14/0x30) [ 2.589398] [<c05bac24>] (bit_update_start) from [<c05b9e58>] (fbcon_switch+0x2ec/0x454) [ 2.589422] [<c05b9e58>] (fbcon_switch) from [<c0606fe0>] (redraw_screen+0xdc/0x230) [ 2.589448] [<c0606fe0>] (redraw_screen) from [<c05b795c>] (fbcon_prepare_logo+0x38c/0x450) [ 2.589472] [<c05b795c>] (fbcon_prepare_logo) from [<c05b883c>] (fbcon_init+0x42c/0x518) [ 2.589495] [<c05b883c>] (fbcon_init) from [<c060636c>] (visual_init+0xc0/0x108) [ 2.589518] [<c060636c>] (visual_init) from [<c06085e4>] (do_bind_con_driver+0x1b8/0x3a4) [ 2.589544] [<c06085e4>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 2.589571] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 2.589596] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 2.589622] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 2.589649] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 2.589675] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 2.589704] [<c068f668>] (exynos_dsi_host_attach) from [<c0699354>] (s6e8aa0_probe+0x1b4/0x218) [ 2.589731] [<c0699354>] (s6e8aa0_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 2.589758] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 2.589783] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 2.589808] [<c06b79f8>] (driver_probe_device) from [<c06b819c>] (__driver_attach+0xf0/0x1d4) [ 2.589832] [<c06b819c>] (__driver_attach) from [<c06b5164>] (bus_for_each_dev+0x70/0xb0) [ 2.589856] [<c06b5164>] (bus_for_each_dev) from [<c06b65ec>] (bus_add_driver+0x170/0x20c) [ 2.589879] [<c06b65ec>] (bus_add_driver) from [<c06b8c08>] (driver_register+0x88/0x118) [ 2.589904] [<c06b8c08>] (driver_register) from [<c01021e8>] (do_one_initcall+0x64/0x380) [ 2.589929] [<c01021e8>] (do_one_initcall) from [<c110123c>] (kernel_init_freeable+0x1c0/0x224) [ 2.589956] [<c110123c>] (kernel_init_freeable) from [<c0b6ba54>] (kernel_init+0x18/0x12c) [ 2.589982] [<c0b6ba54>] (kernel_init) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 2.590002] Exception stack(0xc1cb5fb0 to 0xc1cb5ff8) [ 2.590017] 5fa0: 00000000 00000000 00000000 00000000 [ 2.590033] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 2.590047] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 2.590061] irq event stamp: 175453 [ 2.590079] hardirqs last enabled at (175459): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 2.590107] hardirqs last disabled at (175464): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 2.590132] softirqs last enabled at (171796): [<c0101578>] __do_softirq+0x348/0x610 [ 2.590156] softirqs last disabled at (171781): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 2.590183] ---[ end trace e6002ef7c126805d ]--- [ 2.609799] Console: switching to colour frame buffer device 102x91 [ 2.610039] ------------[ cut here ]------------ [ 2.610057] WARNING: CPU: 1 PID: 1 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 2.610090] Modules linked in: [ 2.610122] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G W 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 2.610140] Hardware name: Samsung Exynos (Flattened Device Tree) [ 2.610153] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 2.610180] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 2.610208] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 2.610231] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 2.610254] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 2.610279] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 2.610305] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 2.610327] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 2.610355] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 2.610382] [<c067e800>] (drm_client_modeset_commit_locked) from [<c064fe38>] (drm_fb_helper_pan_display+0x98/0x1c0) [ 2.610410] [<c064fe38>] (drm_fb_helper_pan_display) from [<c05b024c>] (fb_pan_display+0x9c/0x114) [ 2.610439] [<c05b024c>] (fb_pan_display) from [<c05bac24>] (bit_update_start+0x14/0x30) [ 2.610465] [<c05bac24>] (bit_update_start) from [<c05b9e58>] (fbcon_switch+0x2ec/0x454) [ 2.610489] [<c05b9e58>] (fbcon_switch) from [<c0606fe0>] (redraw_screen+0xdc/0x230) [ 2.610515] [<c0606fe0>] (redraw_screen) from [<c0608708>] (do_bind_con_driver+0x2dc/0x3a4) [ 2.610543] [<c0608708>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 2.610570] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 2.610595] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 2.610621] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 2.610649] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 2.610674] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 2.610703] [<c068f668>] (exynos_dsi_host_attach) from [<c0699354>] (s6e8aa0_probe+0x1b4/0x218) [ 2.610730] [<c0699354>] (s6e8aa0_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 2.610756] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 2.610782] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 2.610807] [<c06b79f8>] (driver_probe_device) from [<c06b819c>] (__driver_attach+0xf0/0x1d4) [ 2.610832] [<c06b819c>] (__driver_attach) from [<c06b5164>] (bus_for_each_dev+0x70/0xb0) [ 2.610856] [<c06b5164>] (bus_for_each_dev) from [<c06b65ec>] (bus_add_driver+0x170/0x20c) [ 2.610880] [<c06b65ec>] (bus_add_driver) from [<c06b8c08>] (driver_register+0x88/0x118) [ 2.610904] [<c06b8c08>] (driver_register) from [<c01021e8>] (do_one_initcall+0x64/0x380) [ 2.610929] [<c01021e8>] (do_one_initcall) from [<c110123c>] (kernel_init_freeable+0x1c0/0x224) [ 2.610956] [<c110123c>] (kernel_init_freeable) from [<c0b6ba54>] (kernel_init+0x18/0x12c) [ 2.610982] [<c0b6ba54>] (kernel_init) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 2.611002] Exception stack(0xc1cb5fb0 to 0xc1cb5ff8) [ 2.611017] 5fa0: 00000000 00000000 00000000 00000000 [ 2.611033] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 2.611047] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 2.611062] irq event stamp: 175539 [ 2.611079] hardirqs last enabled at (175545): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 2.611108] hardirqs last disabled at (175550): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 2.611134] softirqs last enabled at (171796): [<c0101578>] __do_softirq+0x348/0x610 [ 2.611158] softirqs last disabled at (171781): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 2.611185] ---[ end trace e6002ef7c126805e ]--- [ 6.173152] exynos-drm exynos-drm: [drm] fb0: exynos frame buffer device
After the 2nd patch ("[PATCH v3 2/7] drm: exynos: dsi: Use drm panel_bridge API") the display stops working.
Here is the log from Arndale board (which also doesn't work after the 2nd path):
[ 3.739197] OF: graph: no port node found in /soc/hdmi@14530000 [ 3.747930] [drm] Exynos DRM: using 14400000.fimd device for DMA mapping operations [ 3.754385] exynos-drm exynos-drm: bound 14400000.fimd (ops fimd_component_ops) [ 3.762985] exynos-drm exynos-drm: bound 14450000.mixer (ops mixer_component_ops) [ 3.769332] OF: graph: no port node found in /soc/dsi@14500000 [ 3.779055] exynos-drm exynos-drm: bound 14500000.dsi (ops exynos_dsi_component_ops) [ 3.785997] exynos-drm exynos-drm: bound 14530000.hdmi (ops hdmi_component_ops) [ 3.795431] exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes [ 3.801975] exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes [ 3.811501] [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on minor 0 [ 3.818349] usb 1-3: New USB device found, idVendor=0424, idProduct=3503, bcdDevice=a1.a0 [ 3.825602] usb 1-3: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 3.833782] panfrost 11800000.gpu: clock rate = 533000000 [ 3.835556] hub 1-3:1.0: USB hub found [ 3.842054] hub 1-3:1.0: 3 ports detected [ 3.861628] panfrost 11800000.gpu: mali-t600 id 0x600 major 0x0 minor 0x0 status 0x1 [ 3.868077] panfrost 11800000.gpu: features: 00000000,10206000, issues: 00000000,31b4dfff [ 3.876202] panfrost 11800000.gpu: Features: L2:0x07110206 Shader:0x00000000 Tiler:0x00000809 Mem:0x1 MMU:0x00002830 AS:0xf JS:0x7 [ 3.887853] panfrost 11800000.gpu: shader_present=0xf l2_present=0x1 [ 3.897532] [drm] Initialized panfrost 1.2.0 20180908 for 11800000.gpu on minor 1 [ 3.919339] wm8994 3-001a: WM1811 revision D CUST_ID 00 [ 3.933753] wm8994 3-001a: No interrupt specified, no interrupts [ 4.111656] exynos-dsi 14500000.dsi: [drm:exynos_dsi_host_attach] Attached tc358764 device [ 4.125346] ------------[ cut here ]------------ [ 4.125392] WARNING: CPU: 1 PID: 7 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 4.125412] Modules linked in: [ 4.125428] CPU: 1 PID: 7 Comm: kworker/u4:0 Not tainted 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 4.125438] Hardware name: Samsung Exynos (Flattened Device Tree) [ 4.125444] Workqueue: events_unbound deferred_probe_work_func [ 4.125461] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 4.125477] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 4.125492] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 4.125505] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 4.125515] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 4.125527] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 4.125538] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 4.125549] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 4.125562] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 4.125575] [<c067e800>] (drm_client_modeset_commit_locked) from [<c067e98c>] (drm_client_modeset_commit+0x24/0x40) [ 4.125588] [<c067e98c>] (drm_client_modeset_commit) from [<c06509c0>] (drm_fb_helper_set_par+0xb8/0xf8) [ 4.125603] [<c06509c0>] (drm_fb_helper_set_par) from [<c05b86d0>] (fbcon_init+0x2c0/0x518) [ 4.125615] [<c05b86d0>] (fbcon_init) from [<c060636c>] (visual_init+0xc0/0x108) [ 4.125628] [<c060636c>] (visual_init) from [<c06085e4>] (do_bind_con_driver+0x1b8/0x3a4) [ 4.125641] [<c06085e4>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 4.125654] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 4.125666] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 4.125682] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 4.125695] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 4.125708] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 4.125722] [<c068f668>] (exynos_dsi_host_attach) from [<c069cef8>] (tc358764_probe+0xe8/0x15c) [ 4.125736] [<c069cef8>] (tc358764_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 4.125747] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 4.125759] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 4.125771] [<c06b79f8>] (driver_probe_device) from [<c06b8034>] (__device_attach_driver+0xa4/0x11c) [ 4.125784] [<c06b8034>] (__device_attach_driver) from [<c06b5220>] (bus_for_each_drv+0x7c/0xc0) [ 4.125796] [<c06b5220>] (bus_for_each_drv) from [<c06b7cd8>] (__device_attach+0xc8/0x1d0) [ 4.125807] [<c06b7cd8>] (__device_attach) from [<c06b6338>] (bus_probe_device+0x88/0x90) [ 4.125818] [<c06b6338>] (bus_probe_device) from [<c06b6834>] (deferred_probe_work_func+0x98/0xe0) [ 4.125830] [<c06b6834>] (deferred_probe_work_func) from [<c01470ec>] (process_one_work+0x288/0x7a4) [ 4.125843] [<c01470ec>] (process_one_work) from [<c014764c>] (worker_thread+0x44/0x534) [ 4.125853] [<c014764c>] (worker_thread) from [<c01500ac>] (kthread+0x158/0x190) [ 4.125863] [<c01500ac>] (kthread) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 4.125872] Exception stack(0xc1cc1fb0 to 0xc1cc1ff8) [ 4.125879] 1fa0: 00000000 00000000 00000000 00000000 [ 4.125886] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 4.125893] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 4.125900] irq event stamp: 18917 [ 4.125908] hardirqs last enabled at (18923): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 4.125922] hardirqs last disabled at (18928): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 4.125934] softirqs last enabled at (18882): [<c0101578>] __do_softirq+0x348/0x610 [ 4.125945] softirqs last disabled at (18877): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 4.125957] ---[ end trace ab5bb577f0c45837 ]--- [ 4.126167] ------------[ cut here ]------------ [ 4.126175] WARNING: CPU: 1 PID: 7 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 4.126190] Modules linked in: [ 4.126205] CPU: 1 PID: 7 Comm: kworker/u4:0 Tainted: G W 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 4.126213] Hardware name: Samsung Exynos (Flattened Device Tree) [ 4.126219] Workqueue: events_unbound deferred_probe_work_func [ 4.126232] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 4.126245] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 4.126258] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 4.126269] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 4.126279] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 4.126290] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 4.126301] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 4.126310] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 4.126323] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 4.126336] [<c067e800>] (drm_client_modeset_commit_locked) from [<c064fe38>] (drm_fb_helper_pan_display+0x98/0x1c0) [ 4.126349] [<c064fe38>] (drm_fb_helper_pan_display) from [<c05b024c>] (fb_pan_display+0x9c/0x114) [ 4.126362] [<c05b024c>] (fb_pan_display) from [<c05bac24>] (bit_update_start+0x14/0x30) [ 4.126375] [<c05bac24>] (bit_update_start) from [<c05b9e58>] (fbcon_switch+0x2ec/0x454) [ 4.126385] [<c05b9e58>] (fbcon_switch) from [<c0606fe0>] (redraw_screen+0xdc/0x230) [ 4.126397] [<c0606fe0>] (redraw_screen) from [<c05b795c>] (fbcon_prepare_logo+0x38c/0x450) [ 4.126408] [<c05b795c>] (fbcon_prepare_logo) from [<c05b883c>] (fbcon_init+0x42c/0x518) [ 4.126419] [<c05b883c>] (fbcon_init) from [<c060636c>] (visual_init+0xc0/0x108) [ 4.126430] [<c060636c>] (visual_init) from [<c06085e4>] (do_bind_con_driver+0x1b8/0x3a4) [ 4.126442] [<c06085e4>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 4.126455] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 4.126466] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 4.126478] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 4.126491] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 4.126503] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 4.126516] [<c068f668>] (exynos_dsi_host_attach) from [<c069cef8>] (tc358764_probe+0xe8/0x15c) [ 4.126528] [<c069cef8>] (tc358764_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 4.126540] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 4.126552] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 4.126564] [<c06b79f8>] (driver_probe_device) from [<c06b8034>] (__device_attach_driver+0xa4/0x11c) [ 4.126577] [<c06b8034>] (__device_attach_driver) from [<c06b5220>] (bus_for_each_drv+0x7c/0xc0) [ 4.126589] [<c06b5220>] (bus_for_each_drv) from [<c06b7cd8>] (__device_attach+0xc8/0x1d0) [ 4.126600] [<c06b7cd8>] (__device_attach) from [<c06b6338>] (bus_probe_device+0x88/0x90) [ 4.126611] [<c06b6338>] (bus_probe_device) from [<c06b6834>] (deferred_probe_work_func+0x98/0xe0) [ 4.126623] [<c06b6834>] (deferred_probe_work_func) from [<c01470ec>] (process_one_work+0x288/0x7a4) [ 4.126634] [<c01470ec>] (process_one_work) from [<c014764c>] (worker_thread+0x44/0x534) [ 4.126644] [<c014764c>] (worker_thread) from [<c01500ac>] (kthread+0x158/0x190) [ 4.126654] [<c01500ac>] (kthread) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 4.126663] Exception stack(0xc1cc1fb0 to 0xc1cc1ff8) [ 4.126670] 1fa0: 00000000 00000000 00000000 00000000 [ 4.126676] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 4.126683] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 4.126689] irq event stamp: 19009 [ 4.126697] hardirqs last enabled at (19015): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 4.126709] hardirqs last disabled at (19020): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 4.126721] softirqs last enabled at (18882): [<c0101578>] __do_softirq+0x348/0x610 [ 4.126731] softirqs last disabled at (18877): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 4.126743] ---[ end trace ab5bb577f0c45838 ]--- [ 4.129425] Console: switching to colour frame buffer device 146x42 [ 4.129562] ------------[ cut here ]------------ [ 4.129570] WARNING: CPU: 1 PID: 7 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 4.129585] Modules linked in: [ 4.129599] CPU: 1 PID: 7 Comm: kworker/u4:0 Tainted: G W 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 4.129607] Hardware name: Samsung Exynos (Flattened Device Tree) [ 4.129613] Workqueue: events_unbound deferred_probe_work_func [ 4.129626] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 4.129639] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 4.129651] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 4.129663] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 4.129673] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 4.129684] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 4.129695] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 4.129704] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 4.129716] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 4.129729] [<c067e800>] (drm_client_modeset_commit_locked) from [<c064fe38>] (drm_fb_helper_pan_display+0x98/0x1c0) [ 4.129742] [<c064fe38>] (drm_fb_helper_pan_display) from [<c05b024c>] (fb_pan_display+0x9c/0x114) [ 4.129755] [<c05b024c>] (fb_pan_display) from [<c05bac24>] (bit_update_start+0x14/0x30) [ 4.129767] [<c05bac24>] (bit_update_start) from [<c05b9e58>] (fbcon_switch+0x2ec/0x454) [ 4.129778] [<c05b9e58>] (fbcon_switch) from [<c0606fe0>] (redraw_screen+0xdc/0x230) [ 4.129790] [<c0606fe0>] (redraw_screen) from [<c0608708>] (do_bind_con_driver+0x2dc/0x3a4) [ 4.129802] [<c0608708>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 4.129815] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 4.129827] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 4.129839] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 4.129852] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 4.129863] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 4.129876] [<c068f668>] (exynos_dsi_host_attach) from [<c069cef8>] (tc358764_probe+0xe8/0x15c) [ 4.129888] [<c069cef8>] (tc358764_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 4.129900] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 4.129912] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 4.129924] [<c06b79f8>] (driver_probe_device) from [<c06b8034>] (__device_attach_driver+0xa4/0x11c) [ 4.129936] [<c06b8034>] (__device_attach_driver) from [<c06b5220>] (bus_for_each_drv+0x7c/0xc0) [ 4.129948] [<c06b5220>] (bus_for_each_drv) from [<c06b7cd8>] (__device_attach+0xc8/0x1d0) [ 4.129960] [<c06b7cd8>] (__device_attach) from [<c06b6338>] (bus_probe_device+0x88/0x90) [ 4.129971] [<c06b6338>] (bus_probe_device) from [<c06b6834>] (deferred_probe_work_func+0x98/0xe0) [ 4.129983] [<c06b6834>] (deferred_probe_work_func) from [<c01470ec>] (process_one_work+0x288/0x7a4) [ 4.129995] [<c01470ec>] (process_one_work) from [<c014764c>] (worker_thread+0x44/0x534) [ 4.130005] [<c014764c>] (worker_thread) from [<c01500ac>] (kthread+0x158/0x190) [ 4.130014] [<c01500ac>] (kthread) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 4.130023] Exception stack(0xc1cc1fb0 to 0xc1cc1ff8) [ 4.130030] 1fa0: 00000000 00000000 00000000 00000000 [ 4.130037] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 4.130043] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 4.130049] irq event stamp: 19103 [ 4.130057] hardirqs last enabled at (19109): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 4.130069] hardirqs last disabled at (19114): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 4.130081] softirqs last enabled at (18882): [<c0101578>] __do_softirq+0x348/0x610 [ 4.130091] softirqs last disabled at (18877): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 4.130103] ---[ end trace ab5bb577f0c45839 ]--- [ 4.175229] usb 1-3.2: new high-speed USB device number 3 using exynos-ehci [ 4.179270] exynos-drm exynos-drm: [drm] fb0: exynos frame buffer device
There is something seriously broken with connector setup (Arndale board):
# ./modetest -C -Mexynos [ 37.803987] ------------[ cut here ]------------ [ 37.807883] WARNING: CPU: 1 PID: 1296 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 37.819952] Modules linked in: s5p_mfc exynos_gsc v4l2_mem2mem videobuf2_dma_contig videobuf2_memops videobuf2_v4l2 videobuf2_common videodev mc [ 37.832906] CPU: 1 PID: 1296 Comm: modetest Tainted: G W 5.16.0-rc1-00004-gd0885f6a52ee #11059 [ 37.842588] Hardware name: Samsung Exynos (Flattened Device Tree) [ 37.848667] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 37.856390] [<c010c618>] (show_stack) from [<c0b658a4>] (dump_stack_lvl+0x58/0x70) [ 37.863942] [<c0b658a4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 37.871233] [<c01261dc>] (__warn) from [<c0b5f6f8>] (warn_slowpath_fmt+0x5c/0xb4) [ 37.878697] [<c0b5f6f8>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 37.889374] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 37.901265] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 37.912115] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 37.923139] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 37.934248] [<c067e800>] (drm_client_modeset_commit_locked) from [<c067e98c>] (drm_client_modeset_commit+0x24/0x40) [ 37.944665] [<c067e98c>] (drm_client_modeset_commit) from [<c0650c00>] (drm_fb_helper_lastclose+0x4c/0x84) [ 37.954300] [<c0650c00>] (drm_fb_helper_lastclose) from [<c0652b7c>] (drm_release+0x114/0x14c) [ 37.962893] [<c0652b7c>] (drm_release) from [<c02dc400>] (__fput+0x88/0x258) [ 37.969924] [<c02dc400>] (__fput) from [<c014cd44>] (task_work_run+0x8c/0xc8) [ 37.977041] [<c014cd44>] (task_work_run) from [<c010c08c>] (do_work_pending+0x4a4/0x598) [ 37.985114] [<c010c08c>] (do_work_pending) from [<c0100088>] (slow_work_pending+0xc/0x20) [ 37.993272] Exception stack(0xc3577fb0 to 0xc3577ff8) [ 37.998309] 7fa0: 00000000 0000001f 85024200 00000000 [ 38.006469] 7fc0: 00000001 00000003 00000000 00000006 00022188 00000000 b6f6c000 00000000 [ 38.014628] 7fe0: b6e6daa0 bec90a98 0000e7c4 b6e6dac0 60000010 00000003 [ 38.021474] irq event stamp: 3541 [ 38.024718] hardirqs last enabled at (3553): [<c01598ec>] finish_task_switch+0x110/0x368 [ 38.032840] hardirqs last disabled at (3564): [<c0b6cc7c>] __schedule+0x4e4/0xa6c [ 38.040321] softirqs last enabled at (3580): [<c0101578>] __do_softirq+0x348/0x610 [ 38.048072] softirqs last disabled at (3573): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 38.055797] ---[ end trace cfeb2d6c6e65009a ]--- could not get connector 62: N[ 38.062741] ------------[ cut here ]------------ [ 38.067551] WARNING: CPU: 0 PID: 1296 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 38.080014] Modules linked in: s5p_mfc exynos_gsc v4l2_mem2mem videobuf2_dma_contig videobuf2_memops videobuf2_v4l2 videobuf2_common videodev mc [ 38.092947] CPU: 0 PID: 1296 Comm: modetest Tainted: G W 5.16.0-rc1-00004-gd0885f6a52ee #11059 [ 38.102727] Hardware name: Samsung Exynos (Flattened Device Tree) [ 38.108806] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 38.116529] [<c010c618>] (show_stack) from [<c0b658a4>] (dump_stack_lvl+0x58/0x70) [ 38.124081] [<c0b658a4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 38.131373] [<c01261dc>] (__warn) from [<c0b5f6f8>] (warn_slowpath_fmt+0x5c/0xb4) [ 38.138837] [<c0b5f6f8>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 38.149514] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 38.161405] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 38.172255] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 38.183279] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 38.194388] [<c067e800>] (drm_client_modeset_commit_locked) from [<c067e98c>] (drm_client_modeset_commit+0x24/0x40) [ 38.204804] [<c067e98c>] (drm_client_modeset_commit) from [<c0650c00>] (drm_fb_helper_lastclose+0x4c/0x84) [ 38.214439] [<c0650c00>] (drm_fb_helper_lastclose) from [<c0652b7c>] (drm_release+0x114/0x14c) [ 38.223032] [<c0652b7c>] (drm_release) from [<c02dc400>] (__fput+0x88/0x258) [ 38.230063] [<c02dc400>] (__fput) from [<c014cd44>] (task_work_run+0x8c/0xc8) [ 38.234727] dwmmc_exynos 12200000.mmc: Unexpected interrupt latency [ 38.237178] [<c014cd44>] (task_work_run) from [<c012b5ac>] (do_exit+0x390/0xaf0) [ 38.250809] [<c012b5ac>] (do_exit) from [<c012d040>] (do_group_exit+0x2c/0xa0) [ 38.258013] [<c012d040>] (do_group_exit) from [<c013b8f4>] (get_signal+0x140/0xab8) [ 38.265651] [<c013b8f4>] (get_signal) from [<c010bd0c>] (do_work_pending+0x124/0x598) [ 38.273463] [<c010bd0c>] (do_work_pending) from [<c0100088>] (slow_work_pending+0xc/0x20) [ 38.281622] Exception stack(0xc3577fb0 to 0xc3577ff8) [ 38.286659] 7fa0: 00000008 0000005f 00000002 00023388 [ 38.294819] 7fc0: 00000001 000232a8 00000000 00023398 0000003e 00000000 00023360 00000000 [ 38.302978] 7fe0: 00023590 bec90ae8 00009ec0 00009e9c 80000010 ffffffff [ 38.310025] irq event stamp: 4059 [ 38.312910] hardirqs last enabled at (4069): [<c019d7f4>] __up_console_sem+0x50/0x60 [ 38.320780] hardirqs last disabled at (4078): [<c019d7e0>] __up_console_sem+0x3c/0x60 [ 38.328617] softirqs last enabled at (4054): [<c0101578>] __do_softirq+0x348/0x610 [ 38.336222] softirqs last disabled at (4013): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 38.343942] ---[ end trace cfeb2d6c6e65009b ]--- o such file or directory Segmentation fault
Best regards
Hi Marek,
On Mon, Dec 13, 2021 at 6:51 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
Hi Jagan,
On 13.12.2021 13:31, Jagan Teki wrote:
On Mon, Dec 13, 2021 at 5:42 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
On 13.12.2021 13:08, Jagan Teki wrote:
On Mon, Dec 13, 2021 at 5:34 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
On 12.12.2021 19:14, Jagan Teki wrote:
Updated series about drm bridge conversion of exynos dsi.
Patch 1: panel checker
Patch 2: panel_bridge API
Patch 3: Bridge conversion
Patch 4: pree_enable, post_disable
Patch 5: Atomic functions
Patch 6: atomic_set
Patch 7: DSI init in enable
[1] https://patchwork.kernel.org/project/dri-devel/cover/20211210191922.2367979-...
Any inputs?
I've checked this patchset on Exynos based Trats2 board (the one with simplest display pipeline: Exynos FIMD -> Exynos DSI -> s6e8aa0 DSI panel). DRM stops working after the 2nd patch ("[PATCH v3 2/7] drm: exynos: dsi: Use drm panel_bridge API"):
# dmesg | grep drm [ 2.511893] [drm] Exynos DRM: using 11c00000.fimd device for DMA mapping operations [ 2.518653] exynos-drm exynos-drm: bound 11c00000.fimd (ops fimd_component_ops) [ 2.535699] exynos-drm exynos-drm: bound 11c80000.dsi (ops exynos_dsi_component_ops) [ 2.543912] exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes [ 2.556107] [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on minor 0 [ 2.573212] exynos-dsi 11c80000.dsi: [drm:exynos_dsi_host_attach] *ERROR* failed to find the bridge: -19
Look like you have missed to apply the Child lookup patch. is it so?
Let me send it, I will CC you as well. And I will also send tc358764 panel_bridge conversion.
The above log is from Trats2 board, which uses only the s6e8aa0 DSI panel. I've also checked the Arndale board, which has tc358764 bridge and it also doesn't work. Which patches I have to apply for the tests?
[PATCH v2] drm: of: Lookup if child node has panel or bridge [PATCH] drm: bridge: tc358764: Use drm panel_bridge API
Ok, I've applied both. Still no success on Trats:
[ 2.451632] exynos4-fb 11c00000.fimd: Adding to iommu group 0 [ 2.458137] OF: graph: no port node found in /soc/fimd@11c00000 [ 2.476903] [drm] Exynos DRM: using 11c00000.fimd device for DMA mapping operations [ 2.483905] exynos-drm exynos-drm: bound 11c00000.fimd (ops fimd_component_ops) [ 2.490858] OF: graph: no port node found in /soc/dsi@11c80000 [ 2.500283] exynos-drm exynos-drm: bound 11c80000.dsi (ops exynos_dsi_component_ops) [ 2.508490] exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes [ 2.520121] [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on minor 0 [ 2.537231] exynos-dsi 11c80000.dsi: [drm:exynos_dsi_host_attach] Attached s6e8aa0 device [ 2.566358] ------------[ cut here ]------------ [ 2.569894] WARNING: CPU: 1 PID: 29 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 2.586123] Modules linked in: [ 2.586171] CPU: 1 PID: 29 Comm: kworker/1:2 Not tainted 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 2.586190] Hardware name: Samsung Exynos (Flattened Device Tree) [ 2.586203] Workqueue: events output_poll_execute [ 2.586235] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 2.586267] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 2.586299] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 2.586324] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 2.586346] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 2.586371] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 2.586398] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 2.586421] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 2.586453] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 2.586479] [<c067e800>] (drm_client_modeset_commit_locked) from [<c067e98c>] (drm_client_modeset_commit+0x24/0x40) [ 2.586505] [<c067e98c>] (drm_client_modeset_commit) from [<c06509c0>] (drm_fb_helper_set_par+0xb8/0xf8) [ 2.586535] [<c06509c0>] (drm_fb_helper_set_par) from [<c0650aa8>] (drm_fb_helper_hotplug_event.part.0+0xa8/0xc0) [ 2.586560] [<c0650aa8>] (drm_fb_helper_hotplug_event.part.0) from [<c063ab40>] (output_poll_execute+0xac/0x21c) [ 2.586585] [<c063ab40>] (output_poll_execute) from [<c01470ec>] (process_one_work+0x288/0x7a4) [ 2.586611] [<c01470ec>] (process_one_work) from [<c014764c>] (worker_thread+0x44/0x534) [ 2.586633] [<c014764c>] (worker_thread) from [<c01500ac>] (kthread+0x158/0x190) [ 2.586655] [<c01500ac>] (kthread) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 2.586675] Exception stack(0xc1f6ffb0 to 0xc1f6fff8) [ 2.586690] ffa0: 00000000 00000000 00000000 00000000 [ 2.586705] ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 2.586720] ffe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 2.586734] irq event stamp: 449 [ 2.586749] hardirqs last enabled at (455): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 2.586780] hardirqs last disabled at (460): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 2.586804] softirqs last enabled at (430): [<c0101578>] __do_softirq+0x348/0x610 [ 2.586829] softirqs last disabled at (425): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 2.586902] ---[ end trace e6002ef7c126805b ]--- [ 2.587418] ------------[ cut here ]------------ [ 2.587452] WARNING: CPU: 1 PID: 1 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 2.587485] Modules linked in: [ 2.587518] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G W 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 2.587535] Hardware name: Samsung Exynos (Flattened Device Tree) [ 2.587548] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 2.587576] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 2.587605] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 2.587628] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 2.587650] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 2.587676] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 2.587700] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 2.587724] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 2.587751] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 2.587778] [<c067e800>] (drm_client_modeset_commit_locked) from [<c067e98c>] (drm_client_modeset_commit+0x24/0x40) [ 2.587804] [<c067e98c>] (drm_client_modeset_commit) from [<c06509c0>] (drm_fb_helper_set_par+0xb8/0xf8) [ 2.587831] [<c06509c0>] (drm_fb_helper_set_par) from [<c05b86d0>] (fbcon_init+0x2c0/0x518) [ 2.587858] [<c05b86d0>] (fbcon_init) from [<c060636c>] (visual_init+0xc0/0x108) [ 2.587888] [<c060636c>] (visual_init) from [<c06085e4>] (do_bind_con_driver+0x1b8/0x3a4) [ 2.587915] [<c06085e4>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 2.587942] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 2.587968] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 2.588001] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 2.588028] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 2.588053] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 2.588088] [<c068f668>] (exynos_dsi_host_attach) from [<c0699354>] (s6e8aa0_probe+0x1b4/0x218) [ 2.588117] [<c0699354>] (s6e8aa0_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 2.588147] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 2.588172] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 2.588197] [<c06b79f8>] (driver_probe_device) from [<c06b819c>] (__driver_attach+0xf0/0x1d4) [ 2.588222] [<c06b819c>] (__driver_attach) from [<c06b5164>] (bus_for_each_dev+0x70/0xb0) [ 2.588246] [<c06b5164>] (bus_for_each_dev) from [<c06b65ec>] (bus_add_driver+0x170/0x20c) [ 2.588270] [<c06b65ec>] (bus_add_driver) from [<c06b8c08>] (driver_register+0x88/0x118) [ 2.588294] [<c06b8c08>] (driver_register) from [<c01021e8>] (do_one_initcall+0x64/0x380) [ 2.588320] [<c01021e8>] (do_one_initcall) from [<c110123c>] (kernel_init_freeable+0x1c0/0x224) [ 2.588353] [<c110123c>] (kernel_init_freeable) from [<c0b6ba54>] (kernel_init+0x18/0x12c) [ 2.588380] [<c0b6ba54>] (kernel_init) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 2.588401] Exception stack(0xc1cb5fb0 to 0xc1cb5ff8) [ 2.588416] 5fa0: 00000000 00000000 00000000 00000000 [ 2.588432] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 2.588446] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 2.588460] irq event stamp: 175387 [ 2.588477] hardirqs last enabled at (175393): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 2.588506] hardirqs last disabled at (175398): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 2.588531] softirqs last enabled at (171796): [<c0101578>] __do_softirq+0x348/0x610 [ 2.588555] softirqs last disabled at (171781): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 2.588581] ---[ end trace e6002ef7c126805c ]--- [ 2.588971] ------------[ cut here ]------------ [ 2.588989] WARNING: CPU: 1 PID: 1 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 2.589022] Modules linked in: [ 2.589053] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G W 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 2.589072] Hardware name: Samsung Exynos (Flattened Device Tree) [ 2.589085] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 2.589113] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 2.589140] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 2.589165] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 2.589187] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 2.589212] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 2.589237] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 2.589260] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 2.589288] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 2.589314] [<c067e800>] (drm_client_modeset_commit_locked) from [<c064fe38>] (drm_fb_helper_pan_display+0x98/0x1c0) [ 2.589342] [<c064fe38>] (drm_fb_helper_pan_display) from [<c05b024c>] (fb_pan_display+0x9c/0x114) [ 2.589372] [<c05b024c>] (fb_pan_display) from [<c05bac24>] (bit_update_start+0x14/0x30) [ 2.589398] [<c05bac24>] (bit_update_start) from [<c05b9e58>] (fbcon_switch+0x2ec/0x454) [ 2.589422] [<c05b9e58>] (fbcon_switch) from [<c0606fe0>] (redraw_screen+0xdc/0x230) [ 2.589448] [<c0606fe0>] (redraw_screen) from [<c05b795c>] (fbcon_prepare_logo+0x38c/0x450) [ 2.589472] [<c05b795c>] (fbcon_prepare_logo) from [<c05b883c>] (fbcon_init+0x42c/0x518) [ 2.589495] [<c05b883c>] (fbcon_init) from [<c060636c>] (visual_init+0xc0/0x108) [ 2.589518] [<c060636c>] (visual_init) from [<c06085e4>] (do_bind_con_driver+0x1b8/0x3a4) [ 2.589544] [<c06085e4>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 2.589571] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 2.589596] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 2.589622] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 2.589649] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 2.589675] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 2.589704] [<c068f668>] (exynos_dsi_host_attach) from [<c0699354>] (s6e8aa0_probe+0x1b4/0x218) [ 2.589731] [<c0699354>] (s6e8aa0_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 2.589758] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 2.589783] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 2.589808] [<c06b79f8>] (driver_probe_device) from [<c06b819c>] (__driver_attach+0xf0/0x1d4) [ 2.589832] [<c06b819c>] (__driver_attach) from [<c06b5164>] (bus_for_each_dev+0x70/0xb0) [ 2.589856] [<c06b5164>] (bus_for_each_dev) from [<c06b65ec>] (bus_add_driver+0x170/0x20c) [ 2.589879] [<c06b65ec>] (bus_add_driver) from [<c06b8c08>] (driver_register+0x88/0x118) [ 2.589904] [<c06b8c08>] (driver_register) from [<c01021e8>] (do_one_initcall+0x64/0x380) [ 2.589929] [<c01021e8>] (do_one_initcall) from [<c110123c>] (kernel_init_freeable+0x1c0/0x224) [ 2.589956] [<c110123c>] (kernel_init_freeable) from [<c0b6ba54>] (kernel_init+0x18/0x12c) [ 2.589982] [<c0b6ba54>] (kernel_init) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 2.590002] Exception stack(0xc1cb5fb0 to 0xc1cb5ff8) [ 2.590017] 5fa0: 00000000 00000000 00000000 00000000 [ 2.590033] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 2.590047] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 2.590061] irq event stamp: 175453 [ 2.590079] hardirqs last enabled at (175459): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 2.590107] hardirqs last disabled at (175464): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 2.590132] softirqs last enabled at (171796): [<c0101578>] __do_softirq+0x348/0x610 [ 2.590156] softirqs last disabled at (171781): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 2.590183] ---[ end trace e6002ef7c126805d ]--- [ 2.609799] Console: switching to colour frame buffer device 102x91 [ 2.610039] ------------[ cut here ]------------ [ 2.610057] WARNING: CPU: 1 PID: 1 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 2.610090] Modules linked in: [ 2.610122] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G W 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 2.610140] Hardware name: Samsung Exynos (Flattened Device Tree) [ 2.610153] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 2.610180] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 2.610208] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 2.610231] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 2.610254] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 2.610279] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 2.610305] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 2.610327] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 2.610355] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 2.610382] [<c067e800>] (drm_client_modeset_commit_locked) from [<c064fe38>] (drm_fb_helper_pan_display+0x98/0x1c0) [ 2.610410] [<c064fe38>] (drm_fb_helper_pan_display) from [<c05b024c>] (fb_pan_display+0x9c/0x114) [ 2.610439] [<c05b024c>] (fb_pan_display) from [<c05bac24>] (bit_update_start+0x14/0x30) [ 2.610465] [<c05bac24>] (bit_update_start) from [<c05b9e58>] (fbcon_switch+0x2ec/0x454) [ 2.610489] [<c05b9e58>] (fbcon_switch) from [<c0606fe0>] (redraw_screen+0xdc/0x230) [ 2.610515] [<c0606fe0>] (redraw_screen) from [<c0608708>] (do_bind_con_driver+0x2dc/0x3a4) [ 2.610543] [<c0608708>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 2.610570] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 2.610595] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 2.610621] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 2.610649] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 2.610674] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 2.610703] [<c068f668>] (exynos_dsi_host_attach) from [<c0699354>] (s6e8aa0_probe+0x1b4/0x218) [ 2.610730] [<c0699354>] (s6e8aa0_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 2.610756] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 2.610782] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 2.610807] [<c06b79f8>] (driver_probe_device) from [<c06b819c>] (__driver_attach+0xf0/0x1d4) [ 2.610832] [<c06b819c>] (__driver_attach) from [<c06b5164>] (bus_for_each_dev+0x70/0xb0) [ 2.610856] [<c06b5164>] (bus_for_each_dev) from [<c06b65ec>] (bus_add_driver+0x170/0x20c) [ 2.610880] [<c06b65ec>] (bus_add_driver) from [<c06b8c08>] (driver_register+0x88/0x118) [ 2.610904] [<c06b8c08>] (driver_register) from [<c01021e8>] (do_one_initcall+0x64/0x380) [ 2.610929] [<c01021e8>] (do_one_initcall) from [<c110123c>] (kernel_init_freeable+0x1c0/0x224) [ 2.610956] [<c110123c>] (kernel_init_freeable) from [<c0b6ba54>] (kernel_init+0x18/0x12c) [ 2.610982] [<c0b6ba54>] (kernel_init) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 2.611002] Exception stack(0xc1cb5fb0 to 0xc1cb5ff8) [ 2.611017] 5fa0: 00000000 00000000 00000000 00000000 [ 2.611033] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 2.611047] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 2.611062] irq event stamp: 175539 [ 2.611079] hardirqs last enabled at (175545): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 2.611108] hardirqs last disabled at (175550): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 2.611134] softirqs last enabled at (171796): [<c0101578>] __do_softirq+0x348/0x610 [ 2.611158] softirqs last disabled at (171781): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 2.611185] ---[ end trace e6002ef7c126805e ]--- [ 6.173152] exynos-drm exynos-drm: [drm] fb0: exynos frame buffer device
After the 2nd patch ("[PATCH v3 2/7] drm: exynos: dsi: Use drm panel_bridge API") the display stops working.
Here is the log from Arndale board (which also doesn't work after the 2nd path):
[ 3.739197] OF: graph: no port node found in /soc/hdmi@14530000 [ 3.747930] [drm] Exynos DRM: using 14400000.fimd device for DMA mapping operations [ 3.754385] exynos-drm exynos-drm: bound 14400000.fimd (ops fimd_component_ops) [ 3.762985] exynos-drm exynos-drm: bound 14450000.mixer (ops mixer_component_ops) [ 3.769332] OF: graph: no port node found in /soc/dsi@14500000 [ 3.779055] exynos-drm exynos-drm: bound 14500000.dsi (ops exynos_dsi_component_ops) [ 3.785997] exynos-drm exynos-drm: bound 14530000.hdmi (ops hdmi_component_ops) [ 3.795431] exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes [ 3.801975] exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes [ 3.811501] [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on minor 0 [ 3.818349] usb 1-3: New USB device found, idVendor=0424, idProduct=3503, bcdDevice=a1.a0 [ 3.825602] usb 1-3: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 3.833782] panfrost 11800000.gpu: clock rate = 533000000 [ 3.835556] hub 1-3:1.0: USB hub found [ 3.842054] hub 1-3:1.0: 3 ports detected [ 3.861628] panfrost 11800000.gpu: mali-t600 id 0x600 major 0x0 minor 0x0 status 0x1 [ 3.868077] panfrost 11800000.gpu: features: 00000000,10206000, issues: 00000000,31b4dfff [ 3.876202] panfrost 11800000.gpu: Features: L2:0x07110206 Shader:0x00000000 Tiler:0x00000809 Mem:0x1 MMU:0x00002830 AS:0xf JS:0x7 [ 3.887853] panfrost 11800000.gpu: shader_present=0xf l2_present=0x1 [ 3.897532] [drm] Initialized panfrost 1.2.0 20180908 for 11800000.gpu on minor 1 [ 3.919339] wm8994 3-001a: WM1811 revision D CUST_ID 00 [ 3.933753] wm8994 3-001a: No interrupt specified, no interrupts [ 4.111656] exynos-dsi 14500000.dsi: [drm:exynos_dsi_host_attach] Attached tc358764 device [ 4.125346] ------------[ cut here ]------------ [ 4.125392] WARNING: CPU: 1 PID: 7 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 4.125412] Modules linked in: [ 4.125428] CPU: 1 PID: 7 Comm: kworker/u4:0 Not tainted 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 4.125438] Hardware name: Samsung Exynos (Flattened Device Tree) [ 4.125444] Workqueue: events_unbound deferred_probe_work_func [ 4.125461] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 4.125477] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 4.125492] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 4.125505] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 4.125515] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 4.125527] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 4.125538] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 4.125549] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 4.125562] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 4.125575] [<c067e800>] (drm_client_modeset_commit_locked) from [<c067e98c>] (drm_client_modeset_commit+0x24/0x40) [ 4.125588] [<c067e98c>] (drm_client_modeset_commit) from [<c06509c0>] (drm_fb_helper_set_par+0xb8/0xf8) [ 4.125603] [<c06509c0>] (drm_fb_helper_set_par) from [<c05b86d0>] (fbcon_init+0x2c0/0x518) [ 4.125615] [<c05b86d0>] (fbcon_init) from [<c060636c>] (visual_init+0xc0/0x108) [ 4.125628] [<c060636c>] (visual_init) from [<c06085e4>] (do_bind_con_driver+0x1b8/0x3a4) [ 4.125641] [<c06085e4>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 4.125654] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 4.125666] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 4.125682] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 4.125695] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 4.125708] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 4.125722] [<c068f668>] (exynos_dsi_host_attach) from [<c069cef8>] (tc358764_probe+0xe8/0x15c) [ 4.125736] [<c069cef8>] (tc358764_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 4.125747] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 4.125759] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 4.125771] [<c06b79f8>] (driver_probe_device) from [<c06b8034>] (__device_attach_driver+0xa4/0x11c) [ 4.125784] [<c06b8034>] (__device_attach_driver) from [<c06b5220>] (bus_for_each_drv+0x7c/0xc0) [ 4.125796] [<c06b5220>] (bus_for_each_drv) from [<c06b7cd8>] (__device_attach+0xc8/0x1d0) [ 4.125807] [<c06b7cd8>] (__device_attach) from [<c06b6338>] (bus_probe_device+0x88/0x90) [ 4.125818] [<c06b6338>] (bus_probe_device) from [<c06b6834>] (deferred_probe_work_func+0x98/0xe0) [ 4.125830] [<c06b6834>] (deferred_probe_work_func) from [<c01470ec>] (process_one_work+0x288/0x7a4) [ 4.125843] [<c01470ec>] (process_one_work) from [<c014764c>] (worker_thread+0x44/0x534) [ 4.125853] [<c014764c>] (worker_thread) from [<c01500ac>] (kthread+0x158/0x190) [ 4.125863] [<c01500ac>] (kthread) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 4.125872] Exception stack(0xc1cc1fb0 to 0xc1cc1ff8) [ 4.125879] 1fa0: 00000000 00000000 00000000 00000000 [ 4.125886] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 4.125893] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 4.125900] irq event stamp: 18917 [ 4.125908] hardirqs last enabled at (18923): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 4.125922] hardirqs last disabled at (18928): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 4.125934] softirqs last enabled at (18882): [<c0101578>] __do_softirq+0x348/0x610 [ 4.125945] softirqs last disabled at (18877): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 4.125957] ---[ end trace ab5bb577f0c45837 ]--- [ 4.126167] ------------[ cut here ]------------ [ 4.126175] WARNING: CPU: 1 PID: 7 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 4.126190] Modules linked in: [ 4.126205] CPU: 1 PID: 7 Comm: kworker/u4:0 Tainted: G W 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 4.126213] Hardware name: Samsung Exynos (Flattened Device Tree) [ 4.126219] Workqueue: events_unbound deferred_probe_work_func [ 4.126232] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 4.126245] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 4.126258] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 4.126269] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 4.126279] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 4.126290] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 4.126301] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 4.126310] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 4.126323] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 4.126336] [<c067e800>] (drm_client_modeset_commit_locked) from [<c064fe38>] (drm_fb_helper_pan_display+0x98/0x1c0) [ 4.126349] [<c064fe38>] (drm_fb_helper_pan_display) from [<c05b024c>] (fb_pan_display+0x9c/0x114) [ 4.126362] [<c05b024c>] (fb_pan_display) from [<c05bac24>] (bit_update_start+0x14/0x30) [ 4.126375] [<c05bac24>] (bit_update_start) from [<c05b9e58>] (fbcon_switch+0x2ec/0x454) [ 4.126385] [<c05b9e58>] (fbcon_switch) from [<c0606fe0>] (redraw_screen+0xdc/0x230) [ 4.126397] [<c0606fe0>] (redraw_screen) from [<c05b795c>] (fbcon_prepare_logo+0x38c/0x450) [ 4.126408] [<c05b795c>] (fbcon_prepare_logo) from [<c05b883c>] (fbcon_init+0x42c/0x518) [ 4.126419] [<c05b883c>] (fbcon_init) from [<c060636c>] (visual_init+0xc0/0x108) [ 4.126430] [<c060636c>] (visual_init) from [<c06085e4>] (do_bind_con_driver+0x1b8/0x3a4) [ 4.126442] [<c06085e4>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 4.126455] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 4.126466] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 4.126478] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 4.126491] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 4.126503] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 4.126516] [<c068f668>] (exynos_dsi_host_attach) from [<c069cef8>] (tc358764_probe+0xe8/0x15c) [ 4.126528] [<c069cef8>] (tc358764_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 4.126540] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 4.126552] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 4.126564] [<c06b79f8>] (driver_probe_device) from [<c06b8034>] (__device_attach_driver+0xa4/0x11c) [ 4.126577] [<c06b8034>] (__device_attach_driver) from [<c06b5220>] (bus_for_each_drv+0x7c/0xc0) [ 4.126589] [<c06b5220>] (bus_for_each_drv) from [<c06b7cd8>] (__device_attach+0xc8/0x1d0) [ 4.126600] [<c06b7cd8>] (__device_attach) from [<c06b6338>] (bus_probe_device+0x88/0x90) [ 4.126611] [<c06b6338>] (bus_probe_device) from [<c06b6834>] (deferred_probe_work_func+0x98/0xe0) [ 4.126623] [<c06b6834>] (deferred_probe_work_func) from [<c01470ec>] (process_one_work+0x288/0x7a4) [ 4.126634] [<c01470ec>] (process_one_work) from [<c014764c>] (worker_thread+0x44/0x534) [ 4.126644] [<c014764c>] (worker_thread) from [<c01500ac>] (kthread+0x158/0x190) [ 4.126654] [<c01500ac>] (kthread) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 4.126663] Exception stack(0xc1cc1fb0 to 0xc1cc1ff8) [ 4.126670] 1fa0: 00000000 00000000 00000000 00000000 [ 4.126676] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 4.126683] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 4.126689] irq event stamp: 19009 [ 4.126697] hardirqs last enabled at (19015): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 4.126709] hardirqs last disabled at (19020): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 4.126721] softirqs last enabled at (18882): [<c0101578>] __do_softirq+0x348/0x610 [ 4.126731] softirqs last disabled at (18877): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 4.126743] ---[ end trace ab5bb577f0c45838 ]--- [ 4.129425] Console: switching to colour frame buffer device 146x42 [ 4.129562] ------------[ cut here ]------------ [ 4.129570] WARNING: CPU: 1 PID: 7 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 4.129585] Modules linked in: [ 4.129599] CPU: 1 PID: 7 Comm: kworker/u4:0 Tainted: G W 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 4.129607] Hardware name: Samsung Exynos (Flattened Device Tree) [ 4.129613] Workqueue: events_unbound deferred_probe_work_func [ 4.129626] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 4.129639] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 4.129651] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 4.129663] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 4.129673] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 4.129684] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 4.129695] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 4.129704] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 4.129716] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 4.129729] [<c067e800>] (drm_client_modeset_commit_locked) from [<c064fe38>] (drm_fb_helper_pan_display+0x98/0x1c0) [ 4.129742] [<c064fe38>] (drm_fb_helper_pan_display) from [<c05b024c>] (fb_pan_display+0x9c/0x114) [ 4.129755] [<c05b024c>] (fb_pan_display) from [<c05bac24>] (bit_update_start+0x14/0x30) [ 4.129767] [<c05bac24>] (bit_update_start) from [<c05b9e58>] (fbcon_switch+0x2ec/0x454) [ 4.129778] [<c05b9e58>] (fbcon_switch) from [<c0606fe0>] (redraw_screen+0xdc/0x230) [ 4.129790] [<c0606fe0>] (redraw_screen) from [<c0608708>] (do_bind_con_driver+0x2dc/0x3a4) [ 4.129802] [<c0608708>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 4.129815] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 4.129827] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 4.129839] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 4.129852] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 4.129863] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 4.129876] [<c068f668>] (exynos_dsi_host_attach) from [<c069cef8>] (tc358764_probe+0xe8/0x15c) [ 4.129888] [<c069cef8>] (tc358764_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 4.129900] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 4.129912] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 4.129924] [<c06b79f8>] (driver_probe_device) from [<c06b8034>] (__device_attach_driver+0xa4/0x11c) [ 4.129936] [<c06b8034>] (__device_attach_driver) from [<c06b5220>] (bus_for_each_drv+0x7c/0xc0) [ 4.129948] [<c06b5220>] (bus_for_each_drv) from [<c06b7cd8>] (__device_attach+0xc8/0x1d0) [ 4.129960] [<c06b7cd8>] (__device_attach) from [<c06b6338>] (bus_probe_device+0x88/0x90) [ 4.129971] [<c06b6338>] (bus_probe_device) from [<c06b6834>] (deferred_probe_work_func+0x98/0xe0) [ 4.129983] [<c06b6834>] (deferred_probe_work_func) from [<c01470ec>] (process_one_work+0x288/0x7a4) [ 4.129995] [<c01470ec>] (process_one_work) from [<c014764c>] (worker_thread+0x44/0x534) [ 4.130005] [<c014764c>] (worker_thread) from [<c01500ac>] (kthread+0x158/0x190) [ 4.130014] [<c01500ac>] (kthread) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 4.130023] Exception stack(0xc1cc1fb0 to 0xc1cc1ff8) [ 4.130030] 1fa0: 00000000 00000000 00000000 00000000 [ 4.130037] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 4.130043] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 4.130049] irq event stamp: 19103 [ 4.130057] hardirqs last enabled at (19109): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 4.130069] hardirqs last disabled at (19114): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 4.130081] softirqs last enabled at (18882): [<c0101578>] __do_softirq+0x348/0x610 [ 4.130091] softirqs last disabled at (18877): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 4.130103] ---[ end trace ab5bb577f0c45839 ]--- [ 4.175229] usb 1-3.2: new high-speed USB device number 3 using exynos-ehci [ 4.179270] exynos-drm exynos-drm: [drm] fb0: exynos frame buffer device
There is something seriously broken with connector setup (Arndale board):
# ./modetest -C -Mexynos [ 37.803987] ------------[ cut here ]------------ [ 37.807883] WARNING: CPU: 1 PID: 1296 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 37.819952] Modules linked in: s5p_mfc exynos_gsc v4l2_mem2mem videobuf2_dma_contig videobuf2_memops videobuf2_v4l2 videobuf2_common videodev mc [ 37.832906] CPU: 1 PID: 1296 Comm: modetest Tainted: G W 5.16.0-rc1-00004-gd0885f6a52ee #11059 [ 37.842588] Hardware name: Samsung Exynos (Flattened Device Tree) [ 37.848667] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 37.856390] [<c010c618>] (show_stack) from [<c0b658a4>] (dump_stack_lvl+0x58/0x70) [ 37.863942] [<c0b658a4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 37.871233] [<c01261dc>] (__warn) from [<c0b5f6f8>] (warn_slowpath_fmt+0x5c/0xb4) [ 37.878697] [<c0b5f6f8>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 37.889374] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 37.901265] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 37.912115] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 37.923139] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 37.934248] [<c067e800>] (drm_client_modeset_commit_locked) from [<c067e98c>] (drm_client_modeset_commit+0x24/0x40) [ 37.944665] [<c067e98c>] (drm_client_modeset_commit) from [<c0650c00>] (drm_fb_helper_lastclose+0x4c/0x84) [ 37.954300] [<c0650c00>] (drm_fb_helper_lastclose) from [<c0652b7c>] (drm_release+0x114/0x14c) [ 37.962893] [<c0652b7c>] (drm_release) from [<c02dc400>] (__fput+0x88/0x258) [ 37.969924] [<c02dc400>] (__fput) from [<c014cd44>] (task_work_run+0x8c/0xc8) [ 37.977041] [<c014cd44>] (task_work_run) from [<c010c08c>] (do_work_pending+0x4a4/0x598) [ 37.985114] [<c010c08c>] (do_work_pending) from [<c0100088>] (slow_work_pending+0xc/0x20) [ 37.993272] Exception stack(0xc3577fb0 to 0xc3577ff8) [ 37.998309] 7fa0: 00000000 0000001f 85024200 00000000 [ 38.006469] 7fc0: 00000001 00000003 00000000 00000006 00022188 00000000 b6f6c000 00000000 [ 38.014628] 7fe0: b6e6daa0 bec90a98 0000e7c4 b6e6dac0 60000010 00000003 [ 38.021474] irq event stamp: 3541 [ 38.024718] hardirqs last enabled at (3553): [<c01598ec>] finish_task_switch+0x110/0x368 [ 38.032840] hardirqs last disabled at (3564): [<c0b6cc7c>] __schedule+0x4e4/0xa6c [ 38.040321] softirqs last enabled at (3580): [<c0101578>] __do_softirq+0x348/0x610 [ 38.048072] softirqs last disabled at (3573): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 38.055797] ---[ end trace cfeb2d6c6e65009a ]--- could not get connector 62: N[ 38.062741] ------------[ cut here ]------------ [ 38.067551] WARNING: CPU: 0 PID: 1296 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 38.080014] Modules linked in: s5p_mfc exynos_gsc v4l2_mem2mem videobuf2_dma_contig videobuf2_memops videobuf2_v4l2 videobuf2_common videodev mc [ 38.092947] CPU: 0 PID: 1296 Comm: modetest Tainted: G W 5.16.0-rc1-00004-gd0885f6a52ee #11059 [ 38.102727] Hardware name: Samsung Exynos (Flattened Device Tree) [ 38.108806] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 38.116529] [<c010c618>] (show_stack) from [<c0b658a4>] (dump_stack_lvl+0x58/0x70) [ 38.124081] [<c0b658a4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 38.131373] [<c01261dc>] (__warn) from [<c0b5f6f8>] (warn_slowpath_fmt+0x5c/0xb4) [ 38.138837] [<c0b5f6f8>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 38.149514] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 38.161405] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 38.172255] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 38.183279] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 38.194388] [<c067e800>] (drm_client_modeset_commit_locked) from [<c067e98c>] (drm_client_modeset_commit+0x24/0x40) [ 38.204804] [<c067e98c>] (drm_client_modeset_commit) from [<c0650c00>] (drm_fb_helper_lastclose+0x4c/0x84) [ 38.214439] [<c0650c00>] (drm_fb_helper_lastclose) from [<c0652b7c>] (drm_release+0x114/0x14c) [ 38.223032] [<c0652b7c>] (drm_release) from [<c02dc400>] (__fput+0x88/0x258) [ 38.230063] [<c02dc400>] (__fput) from [<c014cd44>] (task_work_run+0x8c/0xc8) [ 38.234727] dwmmc_exynos 12200000.mmc: Unexpected interrupt latency [ 38.237178] [<c014cd44>] (task_work_run) from [<c012b5ac>] (do_exit+0x390/0xaf0) [ 38.250809] [<c012b5ac>] (do_exit) from [<c012d040>] (do_group_exit+0x2c/0xa0) [ 38.258013] [<c012d040>] (do_group_exit) from [<c013b8f4>] (get_signal+0x140/0xab8) [ 38.265651] [<c013b8f4>] (get_signal) from [<c010bd0c>] (do_work_pending+0x124/0x598) [ 38.273463] [<c010bd0c>] (do_work_pending) from [<c0100088>] (slow_work_pending+0xc/0x20) [ 38.281622] Exception stack(0xc3577fb0 to 0xc3577ff8) [ 38.286659] 7fa0: 00000008 0000005f 00000002 00023388 [ 38.294819] 7fc0: 00000001 000232a8 00000000 00023398 0000003e 00000000 00023360 00000000 [ 38.302978] 7fe0: 00023590 bec90ae8 00009ec0 00009e9c 80000010 ffffffff [ 38.310025] irq event stamp: 4059 [ 38.312910] hardirqs last enabled at (4069): [<c019d7f4>] __up_console_sem+0x50/0x60 [ 38.320780] hardirqs last disabled at (4078): [<c019d7e0>] __up_console_sem+0x3c/0x60 [ 38.328617] softirqs last enabled at (4054): [<c0101578>] __do_softirq+0x348/0x610 [ 38.336222] softirqs last disabled at (4013): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 38.343942] ---[ end trace cfeb2d6c6e65009b ]--- o such file or directory Segmentation fault
Thanks for testing it.
Can you test it on the downstream bridge, tc358764 and post the result?
Jagan,
Hi Jagan,
On 13.12.2021 14:56, Jagan Teki wrote:
On Mon, Dec 13, 2021 at 6:51 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
On 13.12.2021 13:31, Jagan Teki wrote:
On Mon, Dec 13, 2021 at 5:42 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
On 13.12.2021 13:08, Jagan Teki wrote:
On Mon, Dec 13, 2021 at 5:34 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
On 12.12.2021 19:14, Jagan Teki wrote: > Updated series about drm bridge conversion of exynos dsi. > > Patch 1: panel checker > > Patch 2: panel_bridge API > > Patch 3: Bridge conversion > > Patch 4: pree_enable, post_disable > > Patch 5: Atomic functions > > Patch 6: atomic_set > > Patch 7: DSI init in enable > > [1] https://patchwork.kernel.org/project/dri-devel/cover/20211210191922.2367979-... > > Any inputs? I've checked this patchset on Exynos based Trats2 board (the one with simplest display pipeline: Exynos FIMD -> Exynos DSI -> s6e8aa0 DSI panel). DRM stops working after the 2nd patch ("[PATCH v3 2/7] drm: exynos: dsi: Use drm panel_bridge API"):
# dmesg | grep drm [ 2.511893] [drm] Exynos DRM: using 11c00000.fimd device for DMA mapping operations [ 2.518653] exynos-drm exynos-drm: bound 11c00000.fimd (ops fimd_component_ops) [ 2.535699] exynos-drm exynos-drm: bound 11c80000.dsi (ops exynos_dsi_component_ops) [ 2.543912] exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes [ 2.556107] [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on minor 0 [ 2.573212] exynos-dsi 11c80000.dsi: [drm:exynos_dsi_host_attach] *ERROR* failed to find the bridge: -19
Look like you have missed to apply the Child lookup patch. is it so?
Let me send it, I will CC you as well. And I will also send tc358764 panel_bridge conversion.
The above log is from Trats2 board, which uses only the s6e8aa0 DSI panel. I've also checked the Arndale board, which has tc358764 bridge and it also doesn't work. Which patches I have to apply for the tests?
[PATCH v2] drm: of: Lookup if child node has panel or bridge [PATCH] drm: bridge: tc358764: Use drm panel_bridge API
Ok, I've applied both. Still no success on Trats:
[ 2.451632] exynos4-fb 11c00000.fimd: Adding to iommu group 0 [ 2.458137] OF: graph: no port node found in /soc/fimd@11c00000 [ 2.476903] [drm] Exynos DRM: using 11c00000.fimd device for DMA mapping operations [ 2.483905] exynos-drm exynos-drm: bound 11c00000.fimd (ops fimd_component_ops) [ 2.490858] OF: graph: no port node found in /soc/dsi@11c80000 [ 2.500283] exynos-drm exynos-drm: bound 11c80000.dsi (ops exynos_dsi_component_ops) [ 2.508490] exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes [ 2.520121] [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on minor 0 [ 2.537231] exynos-dsi 11c80000.dsi: [drm:exynos_dsi_host_attach] Attached s6e8aa0 device [ 2.566358] ------------[ cut here ]------------ [ 2.569894] WARNING: CPU: 1 PID: 29 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 2.586123] Modules linked in: [ 2.586171] CPU: 1 PID: 29 Comm: kworker/1:2 Not tainted 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 2.586190] Hardware name: Samsung Exynos (Flattened Device Tree) [ 2.586203] Workqueue: events output_poll_execute [ 2.586235] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 2.586267] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 2.586299] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 2.586324] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 2.586346] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 2.586371] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 2.586398] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 2.586421] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 2.586453] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 2.586479] [<c067e800>] (drm_client_modeset_commit_locked) from [<c067e98c>] (drm_client_modeset_commit+0x24/0x40) [ 2.586505] [<c067e98c>] (drm_client_modeset_commit) from [<c06509c0>] (drm_fb_helper_set_par+0xb8/0xf8) [ 2.586535] [<c06509c0>] (drm_fb_helper_set_par) from [<c0650aa8>] (drm_fb_helper_hotplug_event.part.0+0xa8/0xc0) [ 2.586560] [<c0650aa8>] (drm_fb_helper_hotplug_event.part.0) from [<c063ab40>] (output_poll_execute+0xac/0x21c) [ 2.586585] [<c063ab40>] (output_poll_execute) from [<c01470ec>] (process_one_work+0x288/0x7a4) [ 2.586611] [<c01470ec>] (process_one_work) from [<c014764c>] (worker_thread+0x44/0x534) [ 2.586633] [<c014764c>] (worker_thread) from [<c01500ac>] (kthread+0x158/0x190) [ 2.586655] [<c01500ac>] (kthread) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 2.586675] Exception stack(0xc1f6ffb0 to 0xc1f6fff8) [ 2.586690] ffa0: 00000000 00000000 00000000 00000000 [ 2.586705] ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 2.586720] ffe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 2.586734] irq event stamp: 449 [ 2.586749] hardirqs last enabled at (455): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 2.586780] hardirqs last disabled at (460): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 2.586804] softirqs last enabled at (430): [<c0101578>] __do_softirq+0x348/0x610 [ 2.586829] softirqs last disabled at (425): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 2.586902] ---[ end trace e6002ef7c126805b ]--- [ 2.587418] ------------[ cut here ]------------ [ 2.587452] WARNING: CPU: 1 PID: 1 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 2.587485] Modules linked in: [ 2.587518] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G W 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 2.587535] Hardware name: Samsung Exynos (Flattened Device Tree) [ 2.587548] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 2.587576] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 2.587605] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 2.587628] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 2.587650] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 2.587676] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 2.587700] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 2.587724] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 2.587751] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 2.587778] [<c067e800>] (drm_client_modeset_commit_locked) from [<c067e98c>] (drm_client_modeset_commit+0x24/0x40) [ 2.587804] [<c067e98c>] (drm_client_modeset_commit) from [<c06509c0>] (drm_fb_helper_set_par+0xb8/0xf8) [ 2.587831] [<c06509c0>] (drm_fb_helper_set_par) from [<c05b86d0>] (fbcon_init+0x2c0/0x518) [ 2.587858] [<c05b86d0>] (fbcon_init) from [<c060636c>] (visual_init+0xc0/0x108) [ 2.587888] [<c060636c>] (visual_init) from [<c06085e4>] (do_bind_con_driver+0x1b8/0x3a4) [ 2.587915] [<c06085e4>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 2.587942] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 2.587968] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 2.588001] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 2.588028] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 2.588053] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 2.588088] [<c068f668>] (exynos_dsi_host_attach) from [<c0699354>] (s6e8aa0_probe+0x1b4/0x218) [ 2.588117] [<c0699354>] (s6e8aa0_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 2.588147] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 2.588172] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 2.588197] [<c06b79f8>] (driver_probe_device) from [<c06b819c>] (__driver_attach+0xf0/0x1d4) [ 2.588222] [<c06b819c>] (__driver_attach) from [<c06b5164>] (bus_for_each_dev+0x70/0xb0) [ 2.588246] [<c06b5164>] (bus_for_each_dev) from [<c06b65ec>] (bus_add_driver+0x170/0x20c) [ 2.588270] [<c06b65ec>] (bus_add_driver) from [<c06b8c08>] (driver_register+0x88/0x118) [ 2.588294] [<c06b8c08>] (driver_register) from [<c01021e8>] (do_one_initcall+0x64/0x380) [ 2.588320] [<c01021e8>] (do_one_initcall) from [<c110123c>] (kernel_init_freeable+0x1c0/0x224) [ 2.588353] [<c110123c>] (kernel_init_freeable) from [<c0b6ba54>] (kernel_init+0x18/0x12c) [ 2.588380] [<c0b6ba54>] (kernel_init) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 2.588401] Exception stack(0xc1cb5fb0 to 0xc1cb5ff8) [ 2.588416] 5fa0: 00000000 00000000 00000000 00000000 [ 2.588432] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 2.588446] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 2.588460] irq event stamp: 175387 [ 2.588477] hardirqs last enabled at (175393): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 2.588506] hardirqs last disabled at (175398): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 2.588531] softirqs last enabled at (171796): [<c0101578>] __do_softirq+0x348/0x610 [ 2.588555] softirqs last disabled at (171781): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 2.588581] ---[ end trace e6002ef7c126805c ]--- [ 2.588971] ------------[ cut here ]------------ [ 2.588989] WARNING: CPU: 1 PID: 1 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 2.589022] Modules linked in: [ 2.589053] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G W 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 2.589072] Hardware name: Samsung Exynos (Flattened Device Tree) [ 2.589085] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 2.589113] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 2.589140] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 2.589165] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 2.589187] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 2.589212] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 2.589237] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 2.589260] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 2.589288] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 2.589314] [<c067e800>] (drm_client_modeset_commit_locked) from [<c064fe38>] (drm_fb_helper_pan_display+0x98/0x1c0) [ 2.589342] [<c064fe38>] (drm_fb_helper_pan_display) from [<c05b024c>] (fb_pan_display+0x9c/0x114) [ 2.589372] [<c05b024c>] (fb_pan_display) from [<c05bac24>] (bit_update_start+0x14/0x30) [ 2.589398] [<c05bac24>] (bit_update_start) from [<c05b9e58>] (fbcon_switch+0x2ec/0x454) [ 2.589422] [<c05b9e58>] (fbcon_switch) from [<c0606fe0>] (redraw_screen+0xdc/0x230) [ 2.589448] [<c0606fe0>] (redraw_screen) from [<c05b795c>] (fbcon_prepare_logo+0x38c/0x450) [ 2.589472] [<c05b795c>] (fbcon_prepare_logo) from [<c05b883c>] (fbcon_init+0x42c/0x518) [ 2.589495] [<c05b883c>] (fbcon_init) from [<c060636c>] (visual_init+0xc0/0x108) [ 2.589518] [<c060636c>] (visual_init) from [<c06085e4>] (do_bind_con_driver+0x1b8/0x3a4) [ 2.589544] [<c06085e4>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 2.589571] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 2.589596] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 2.589622] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 2.589649] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 2.589675] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 2.589704] [<c068f668>] (exynos_dsi_host_attach) from [<c0699354>] (s6e8aa0_probe+0x1b4/0x218) [ 2.589731] [<c0699354>] (s6e8aa0_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 2.589758] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 2.589783] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 2.589808] [<c06b79f8>] (driver_probe_device) from [<c06b819c>] (__driver_attach+0xf0/0x1d4) [ 2.589832] [<c06b819c>] (__driver_attach) from [<c06b5164>] (bus_for_each_dev+0x70/0xb0) [ 2.589856] [<c06b5164>] (bus_for_each_dev) from [<c06b65ec>] (bus_add_driver+0x170/0x20c) [ 2.589879] [<c06b65ec>] (bus_add_driver) from [<c06b8c08>] (driver_register+0x88/0x118) [ 2.589904] [<c06b8c08>] (driver_register) from [<c01021e8>] (do_one_initcall+0x64/0x380) [ 2.589929] [<c01021e8>] (do_one_initcall) from [<c110123c>] (kernel_init_freeable+0x1c0/0x224) [ 2.589956] [<c110123c>] (kernel_init_freeable) from [<c0b6ba54>] (kernel_init+0x18/0x12c) [ 2.589982] [<c0b6ba54>] (kernel_init) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 2.590002] Exception stack(0xc1cb5fb0 to 0xc1cb5ff8) [ 2.590017] 5fa0: 00000000 00000000 00000000 00000000 [ 2.590033] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 2.590047] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 2.590061] irq event stamp: 175453 [ 2.590079] hardirqs last enabled at (175459): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 2.590107] hardirqs last disabled at (175464): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 2.590132] softirqs last enabled at (171796): [<c0101578>] __do_softirq+0x348/0x610 [ 2.590156] softirqs last disabled at (171781): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 2.590183] ---[ end trace e6002ef7c126805d ]--- [ 2.609799] Console: switching to colour frame buffer device 102x91 [ 2.610039] ------------[ cut here ]------------ [ 2.610057] WARNING: CPU: 1 PID: 1 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 2.610090] Modules linked in: [ 2.610122] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G W 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 2.610140] Hardware name: Samsung Exynos (Flattened Device Tree) [ 2.610153] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 2.610180] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 2.610208] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 2.610231] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 2.610254] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 2.610279] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 2.610305] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 2.610327] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 2.610355] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 2.610382] [<c067e800>] (drm_client_modeset_commit_locked) from [<c064fe38>] (drm_fb_helper_pan_display+0x98/0x1c0) [ 2.610410] [<c064fe38>] (drm_fb_helper_pan_display) from [<c05b024c>] (fb_pan_display+0x9c/0x114) [ 2.610439] [<c05b024c>] (fb_pan_display) from [<c05bac24>] (bit_update_start+0x14/0x30) [ 2.610465] [<c05bac24>] (bit_update_start) from [<c05b9e58>] (fbcon_switch+0x2ec/0x454) [ 2.610489] [<c05b9e58>] (fbcon_switch) from [<c0606fe0>] (redraw_screen+0xdc/0x230) [ 2.610515] [<c0606fe0>] (redraw_screen) from [<c0608708>] (do_bind_con_driver+0x2dc/0x3a4) [ 2.610543] [<c0608708>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 2.610570] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 2.610595] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 2.610621] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 2.610649] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 2.610674] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 2.610703] [<c068f668>] (exynos_dsi_host_attach) from [<c0699354>] (s6e8aa0_probe+0x1b4/0x218) [ 2.610730] [<c0699354>] (s6e8aa0_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 2.610756] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 2.610782] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 2.610807] [<c06b79f8>] (driver_probe_device) from [<c06b819c>] (__driver_attach+0xf0/0x1d4) [ 2.610832] [<c06b819c>] (__driver_attach) from [<c06b5164>] (bus_for_each_dev+0x70/0xb0) [ 2.610856] [<c06b5164>] (bus_for_each_dev) from [<c06b65ec>] (bus_add_driver+0x170/0x20c) [ 2.610880] [<c06b65ec>] (bus_add_driver) from [<c06b8c08>] (driver_register+0x88/0x118) [ 2.610904] [<c06b8c08>] (driver_register) from [<c01021e8>] (do_one_initcall+0x64/0x380) [ 2.610929] [<c01021e8>] (do_one_initcall) from [<c110123c>] (kernel_init_freeable+0x1c0/0x224) [ 2.610956] [<c110123c>] (kernel_init_freeable) from [<c0b6ba54>] (kernel_init+0x18/0x12c) [ 2.610982] [<c0b6ba54>] (kernel_init) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 2.611002] Exception stack(0xc1cb5fb0 to 0xc1cb5ff8) [ 2.611017] 5fa0: 00000000 00000000 00000000 00000000 [ 2.611033] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 2.611047] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 2.611062] irq event stamp: 175539 [ 2.611079] hardirqs last enabled at (175545): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 2.611108] hardirqs last disabled at (175550): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 2.611134] softirqs last enabled at (171796): [<c0101578>] __do_softirq+0x348/0x610 [ 2.611158] softirqs last disabled at (171781): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 2.611185] ---[ end trace e6002ef7c126805e ]--- [ 6.173152] exynos-drm exynos-drm: [drm] fb0: exynos frame buffer device
After the 2nd patch ("[PATCH v3 2/7] drm: exynos: dsi: Use drm panel_bridge API") the display stops working.
Here is the log from Arndale board (which also doesn't work after the 2nd path):
[ 3.739197] OF: graph: no port node found in /soc/hdmi@14530000 [ 3.747930] [drm] Exynos DRM: using 14400000.fimd device for DMA mapping operations [ 3.754385] exynos-drm exynos-drm: bound 14400000.fimd (ops fimd_component_ops) [ 3.762985] exynos-drm exynos-drm: bound 14450000.mixer (ops mixer_component_ops) [ 3.769332] OF: graph: no port node found in /soc/dsi@14500000 [ 3.779055] exynos-drm exynos-drm: bound 14500000.dsi (ops exynos_dsi_component_ops) [ 3.785997] exynos-drm exynos-drm: bound 14530000.hdmi (ops hdmi_component_ops) [ 3.795431] exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes [ 3.801975] exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes [ 3.811501] [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on minor 0 [ 3.818349] usb 1-3: New USB device found, idVendor=0424, idProduct=3503, bcdDevice=a1.a0 [ 3.825602] usb 1-3: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 3.833782] panfrost 11800000.gpu: clock rate = 533000000 [ 3.835556] hub 1-3:1.0: USB hub found [ 3.842054] hub 1-3:1.0: 3 ports detected [ 3.861628] panfrost 11800000.gpu: mali-t600 id 0x600 major 0x0 minor 0x0 status 0x1 [ 3.868077] panfrost 11800000.gpu: features: 00000000,10206000, issues: 00000000,31b4dfff [ 3.876202] panfrost 11800000.gpu: Features: L2:0x07110206 Shader:0x00000000 Tiler:0x00000809 Mem:0x1 MMU:0x00002830 AS:0xf JS:0x7 [ 3.887853] panfrost 11800000.gpu: shader_present=0xf l2_present=0x1 [ 3.897532] [drm] Initialized panfrost 1.2.0 20180908 for 11800000.gpu on minor 1 [ 3.919339] wm8994 3-001a: WM1811 revision D CUST_ID 00 [ 3.933753] wm8994 3-001a: No interrupt specified, no interrupts [ 4.111656] exynos-dsi 14500000.dsi: [drm:exynos_dsi_host_attach] Attached tc358764 device [ 4.125346] ------------[ cut here ]------------ [ 4.125392] WARNING: CPU: 1 PID: 7 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 4.125412] Modules linked in: [ 4.125428] CPU: 1 PID: 7 Comm: kworker/u4:0 Not tainted 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 4.125438] Hardware name: Samsung Exynos (Flattened Device Tree) [ 4.125444] Workqueue: events_unbound deferred_probe_work_func [ 4.125461] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 4.125477] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 4.125492] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 4.125505] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 4.125515] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 4.125527] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 4.125538] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 4.125549] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 4.125562] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 4.125575] [<c067e800>] (drm_client_modeset_commit_locked) from [<c067e98c>] (drm_client_modeset_commit+0x24/0x40) [ 4.125588] [<c067e98c>] (drm_client_modeset_commit) from [<c06509c0>] (drm_fb_helper_set_par+0xb8/0xf8) [ 4.125603] [<c06509c0>] (drm_fb_helper_set_par) from [<c05b86d0>] (fbcon_init+0x2c0/0x518) [ 4.125615] [<c05b86d0>] (fbcon_init) from [<c060636c>] (visual_init+0xc0/0x108) [ 4.125628] [<c060636c>] (visual_init) from [<c06085e4>] (do_bind_con_driver+0x1b8/0x3a4) [ 4.125641] [<c06085e4>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 4.125654] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 4.125666] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 4.125682] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 4.125695] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 4.125708] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 4.125722] [<c068f668>] (exynos_dsi_host_attach) from [<c069cef8>] (tc358764_probe+0xe8/0x15c) [ 4.125736] [<c069cef8>] (tc358764_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 4.125747] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 4.125759] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 4.125771] [<c06b79f8>] (driver_probe_device) from [<c06b8034>] (__device_attach_driver+0xa4/0x11c) [ 4.125784] [<c06b8034>] (__device_attach_driver) from [<c06b5220>] (bus_for_each_drv+0x7c/0xc0) [ 4.125796] [<c06b5220>] (bus_for_each_drv) from [<c06b7cd8>] (__device_attach+0xc8/0x1d0) [ 4.125807] [<c06b7cd8>] (__device_attach) from [<c06b6338>] (bus_probe_device+0x88/0x90) [ 4.125818] [<c06b6338>] (bus_probe_device) from [<c06b6834>] (deferred_probe_work_func+0x98/0xe0) [ 4.125830] [<c06b6834>] (deferred_probe_work_func) from [<c01470ec>] (process_one_work+0x288/0x7a4) [ 4.125843] [<c01470ec>] (process_one_work) from [<c014764c>] (worker_thread+0x44/0x534) [ 4.125853] [<c014764c>] (worker_thread) from [<c01500ac>] (kthread+0x158/0x190) [ 4.125863] [<c01500ac>] (kthread) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 4.125872] Exception stack(0xc1cc1fb0 to 0xc1cc1ff8) [ 4.125879] 1fa0: 00000000 00000000 00000000 00000000 [ 4.125886] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 4.125893] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 4.125900] irq event stamp: 18917 [ 4.125908] hardirqs last enabled at (18923): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 4.125922] hardirqs last disabled at (18928): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 4.125934] softirqs last enabled at (18882): [<c0101578>] __do_softirq+0x348/0x610 [ 4.125945] softirqs last disabled at (18877): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 4.125957] ---[ end trace ab5bb577f0c45837 ]--- [ 4.126167] ------------[ cut here ]------------ [ 4.126175] WARNING: CPU: 1 PID: 7 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 4.126190] Modules linked in: [ 4.126205] CPU: 1 PID: 7 Comm: kworker/u4:0 Tainted: G W 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 4.126213] Hardware name: Samsung Exynos (Flattened Device Tree) [ 4.126219] Workqueue: events_unbound deferred_probe_work_func [ 4.126232] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 4.126245] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 4.126258] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 4.126269] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 4.126279] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 4.126290] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 4.126301] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 4.126310] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 4.126323] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 4.126336] [<c067e800>] (drm_client_modeset_commit_locked) from [<c064fe38>] (drm_fb_helper_pan_display+0x98/0x1c0) [ 4.126349] [<c064fe38>] (drm_fb_helper_pan_display) from [<c05b024c>] (fb_pan_display+0x9c/0x114) [ 4.126362] [<c05b024c>] (fb_pan_display) from [<c05bac24>] (bit_update_start+0x14/0x30) [ 4.126375] [<c05bac24>] (bit_update_start) from [<c05b9e58>] (fbcon_switch+0x2ec/0x454) [ 4.126385] [<c05b9e58>] (fbcon_switch) from [<c0606fe0>] (redraw_screen+0xdc/0x230) [ 4.126397] [<c0606fe0>] (redraw_screen) from [<c05b795c>] (fbcon_prepare_logo+0x38c/0x450) [ 4.126408] [<c05b795c>] (fbcon_prepare_logo) from [<c05b883c>] (fbcon_init+0x42c/0x518) [ 4.126419] [<c05b883c>] (fbcon_init) from [<c060636c>] (visual_init+0xc0/0x108) [ 4.126430] [<c060636c>] (visual_init) from [<c06085e4>] (do_bind_con_driver+0x1b8/0x3a4) [ 4.126442] [<c06085e4>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 4.126455] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 4.126466] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 4.126478] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 4.126491] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 4.126503] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 4.126516] [<c068f668>] (exynos_dsi_host_attach) from [<c069cef8>] (tc358764_probe+0xe8/0x15c) [ 4.126528] [<c069cef8>] (tc358764_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 4.126540] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 4.126552] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 4.126564] [<c06b79f8>] (driver_probe_device) from [<c06b8034>] (__device_attach_driver+0xa4/0x11c) [ 4.126577] [<c06b8034>] (__device_attach_driver) from [<c06b5220>] (bus_for_each_drv+0x7c/0xc0) [ 4.126589] [<c06b5220>] (bus_for_each_drv) from [<c06b7cd8>] (__device_attach+0xc8/0x1d0) [ 4.126600] [<c06b7cd8>] (__device_attach) from [<c06b6338>] (bus_probe_device+0x88/0x90) [ 4.126611] [<c06b6338>] (bus_probe_device) from [<c06b6834>] (deferred_probe_work_func+0x98/0xe0) [ 4.126623] [<c06b6834>] (deferred_probe_work_func) from [<c01470ec>] (process_one_work+0x288/0x7a4) [ 4.126634] [<c01470ec>] (process_one_work) from [<c014764c>] (worker_thread+0x44/0x534) [ 4.126644] [<c014764c>] (worker_thread) from [<c01500ac>] (kthread+0x158/0x190) [ 4.126654] [<c01500ac>] (kthread) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 4.126663] Exception stack(0xc1cc1fb0 to 0xc1cc1ff8) [ 4.126670] 1fa0: 00000000 00000000 00000000 00000000 [ 4.126676] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 4.126683] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 4.126689] irq event stamp: 19009 [ 4.126697] hardirqs last enabled at (19015): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 4.126709] hardirqs last disabled at (19020): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 4.126721] softirqs last enabled at (18882): [<c0101578>] __do_softirq+0x348/0x610 [ 4.126731] softirqs last disabled at (18877): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 4.126743] ---[ end trace ab5bb577f0c45838 ]--- [ 4.129425] Console: switching to colour frame buffer device 146x42 [ 4.129562] ------------[ cut here ]------------ [ 4.129570] WARNING: CPU: 1 PID: 7 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 4.129585] Modules linked in: [ 4.129599] CPU: 1 PID: 7 Comm: kworker/u4:0 Tainted: G W 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 4.129607] Hardware name: Samsung Exynos (Flattened Device Tree) [ 4.129613] Workqueue: events_unbound deferred_probe_work_func [ 4.129626] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 4.129639] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 4.129651] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 4.129663] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 4.129673] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 4.129684] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 4.129695] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 4.129704] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 4.129716] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 4.129729] [<c067e800>] (drm_client_modeset_commit_locked) from [<c064fe38>] (drm_fb_helper_pan_display+0x98/0x1c0) [ 4.129742] [<c064fe38>] (drm_fb_helper_pan_display) from [<c05b024c>] (fb_pan_display+0x9c/0x114) [ 4.129755] [<c05b024c>] (fb_pan_display) from [<c05bac24>] (bit_update_start+0x14/0x30) [ 4.129767] [<c05bac24>] (bit_update_start) from [<c05b9e58>] (fbcon_switch+0x2ec/0x454) [ 4.129778] [<c05b9e58>] (fbcon_switch) from [<c0606fe0>] (redraw_screen+0xdc/0x230) [ 4.129790] [<c0606fe0>] (redraw_screen) from [<c0608708>] (do_bind_con_driver+0x2dc/0x3a4) [ 4.129802] [<c0608708>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 4.129815] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 4.129827] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 4.129839] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 4.129852] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 4.129863] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 4.129876] [<c068f668>] (exynos_dsi_host_attach) from [<c069cef8>] (tc358764_probe+0xe8/0x15c) [ 4.129888] [<c069cef8>] (tc358764_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 4.129900] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 4.129912] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 4.129924] [<c06b79f8>] (driver_probe_device) from [<c06b8034>] (__device_attach_driver+0xa4/0x11c) [ 4.129936] [<c06b8034>] (__device_attach_driver) from [<c06b5220>] (bus_for_each_drv+0x7c/0xc0) [ 4.129948] [<c06b5220>] (bus_for_each_drv) from [<c06b7cd8>] (__device_attach+0xc8/0x1d0) [ 4.129960] [<c06b7cd8>] (__device_attach) from [<c06b6338>] (bus_probe_device+0x88/0x90) [ 4.129971] [<c06b6338>] (bus_probe_device) from [<c06b6834>] (deferred_probe_work_func+0x98/0xe0) [ 4.129983] [<c06b6834>] (deferred_probe_work_func) from [<c01470ec>] (process_one_work+0x288/0x7a4) [ 4.129995] [<c01470ec>] (process_one_work) from [<c014764c>] (worker_thread+0x44/0x534) [ 4.130005] [<c014764c>] (worker_thread) from [<c01500ac>] (kthread+0x158/0x190) [ 4.130014] [<c01500ac>] (kthread) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 4.130023] Exception stack(0xc1cc1fb0 to 0xc1cc1ff8) [ 4.130030] 1fa0: 00000000 00000000 00000000 00000000 [ 4.130037] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 4.130043] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 4.130049] irq event stamp: 19103 [ 4.130057] hardirqs last enabled at (19109): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 4.130069] hardirqs last disabled at (19114): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 4.130081] softirqs last enabled at (18882): [<c0101578>] __do_softirq+0x348/0x610 [ 4.130091] softirqs last disabled at (18877): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 4.130103] ---[ end trace ab5bb577f0c45839 ]--- [ 4.175229] usb 1-3.2: new high-speed USB device number 3 using exynos-ehci [ 4.179270] exynos-drm exynos-drm: [drm] fb0: exynos frame buffer device
There is something seriously broken with connector setup (Arndale board):
# ./modetest -C -Mexynos [ 37.803987] ------------[ cut here ]------------ [ 37.807883] WARNING: CPU: 1 PID: 1296 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 37.819952] Modules linked in: s5p_mfc exynos_gsc v4l2_mem2mem videobuf2_dma_contig videobuf2_memops videobuf2_v4l2 videobuf2_common videodev mc [ 37.832906] CPU: 1 PID: 1296 Comm: modetest Tainted: G W 5.16.0-rc1-00004-gd0885f6a52ee #11059 [ 37.842588] Hardware name: Samsung Exynos (Flattened Device Tree) [ 37.848667] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 37.856390] [<c010c618>] (show_stack) from [<c0b658a4>] (dump_stack_lvl+0x58/0x70) [ 37.863942] [<c0b658a4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 37.871233] [<c01261dc>] (__warn) from [<c0b5f6f8>] (warn_slowpath_fmt+0x5c/0xb4) [ 37.878697] [<c0b5f6f8>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 37.889374] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 37.901265] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 37.912115] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 37.923139] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 37.934248] [<c067e800>] (drm_client_modeset_commit_locked) from [<c067e98c>] (drm_client_modeset_commit+0x24/0x40) [ 37.944665] [<c067e98c>] (drm_client_modeset_commit) from [<c0650c00>] (drm_fb_helper_lastclose+0x4c/0x84) [ 37.954300] [<c0650c00>] (drm_fb_helper_lastclose) from [<c0652b7c>] (drm_release+0x114/0x14c) [ 37.962893] [<c0652b7c>] (drm_release) from [<c02dc400>] (__fput+0x88/0x258) [ 37.969924] [<c02dc400>] (__fput) from [<c014cd44>] (task_work_run+0x8c/0xc8) [ 37.977041] [<c014cd44>] (task_work_run) from [<c010c08c>] (do_work_pending+0x4a4/0x598) [ 37.985114] [<c010c08c>] (do_work_pending) from [<c0100088>] (slow_work_pending+0xc/0x20) [ 37.993272] Exception stack(0xc3577fb0 to 0xc3577ff8) [ 37.998309] 7fa0: 00000000 0000001f 85024200 00000000 [ 38.006469] 7fc0: 00000001 00000003 00000000 00000006 00022188 00000000 b6f6c000 00000000 [ 38.014628] 7fe0: b6e6daa0 bec90a98 0000e7c4 b6e6dac0 60000010 00000003 [ 38.021474] irq event stamp: 3541 [ 38.024718] hardirqs last enabled at (3553): [<c01598ec>] finish_task_switch+0x110/0x368 [ 38.032840] hardirqs last disabled at (3564): [<c0b6cc7c>] __schedule+0x4e4/0xa6c [ 38.040321] softirqs last enabled at (3580): [<c0101578>] __do_softirq+0x348/0x610 [ 38.048072] softirqs last disabled at (3573): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 38.055797] ---[ end trace cfeb2d6c6e65009a ]--- could not get connector 62: N[ 38.062741] ------------[ cut here ]------------ [ 38.067551] WARNING: CPU: 0 PID: 1296 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 38.080014] Modules linked in: s5p_mfc exynos_gsc v4l2_mem2mem videobuf2_dma_contig videobuf2_memops videobuf2_v4l2 videobuf2_common videodev mc [ 38.092947] CPU: 0 PID: 1296 Comm: modetest Tainted: G W 5.16.0-rc1-00004-gd0885f6a52ee #11059 [ 38.102727] Hardware name: Samsung Exynos (Flattened Device Tree) [ 38.108806] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 38.116529] [<c010c618>] (show_stack) from [<c0b658a4>] (dump_stack_lvl+0x58/0x70) [ 38.124081] [<c0b658a4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 38.131373] [<c01261dc>] (__warn) from [<c0b5f6f8>] (warn_slowpath_fmt+0x5c/0xb4) [ 38.138837] [<c0b5f6f8>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 38.149514] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 38.161405] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 38.172255] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 38.183279] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 38.194388] [<c067e800>] (drm_client_modeset_commit_locked) from [<c067e98c>] (drm_client_modeset_commit+0x24/0x40) [ 38.204804] [<c067e98c>] (drm_client_modeset_commit) from [<c0650c00>] (drm_fb_helper_lastclose+0x4c/0x84) [ 38.214439] [<c0650c00>] (drm_fb_helper_lastclose) from [<c0652b7c>] (drm_release+0x114/0x14c) [ 38.223032] [<c0652b7c>] (drm_release) from [<c02dc400>] (__fput+0x88/0x258) [ 38.230063] [<c02dc400>] (__fput) from [<c014cd44>] (task_work_run+0x8c/0xc8) [ 38.234727] dwmmc_exynos 12200000.mmc: Unexpected interrupt latency [ 38.237178] [<c014cd44>] (task_work_run) from [<c012b5ac>] (do_exit+0x390/0xaf0) [ 38.250809] [<c012b5ac>] (do_exit) from [<c012d040>] (do_group_exit+0x2c/0xa0) [ 38.258013] [<c012d040>] (do_group_exit) from [<c013b8f4>] (get_signal+0x140/0xab8) [ 38.265651] [<c013b8f4>] (get_signal) from [<c010bd0c>] (do_work_pending+0x124/0x598) [ 38.273463] [<c010bd0c>] (do_work_pending) from [<c0100088>] (slow_work_pending+0xc/0x20) [ 38.281622] Exception stack(0xc3577fb0 to 0xc3577ff8) [ 38.286659] 7fa0: 00000008 0000005f 00000002 00023388 [ 38.294819] 7fc0: 00000001 000232a8 00000000 00023398 0000003e 00000000 00023360 00000000 [ 38.302978] 7fe0: 00023590 bec90ae8 00009ec0 00009e9c 80000010 ffffffff [ 38.310025] irq event stamp: 4059 [ 38.312910] hardirqs last enabled at (4069): [<c019d7f4>] __up_console_sem+0x50/0x60 [ 38.320780] hardirqs last disabled at (4078): [<c019d7e0>] __up_console_sem+0x3c/0x60 [ 38.328617] softirqs last enabled at (4054): [<c0101578>] __do_softirq+0x348/0x610 [ 38.336222] softirqs last disabled at (4013): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 38.343942] ---[ end trace cfeb2d6c6e65009b ]--- o such file or directory Segmentation fault
Thanks for testing it.
Can you test it on the downstream bridge, tc358764 and post the result?
There were 2 logs in my reply. One from trats2 board (just dsi panel) and one from arndale (tc bridge + simple panel).
Best regards
Hi Marek,
On Mon, Dec 13, 2021 at 7:42 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
Hi Jagan,
On 13.12.2021 14:56, Jagan Teki wrote:
On Mon, Dec 13, 2021 at 6:51 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
On 13.12.2021 13:31, Jagan Teki wrote:
On Mon, Dec 13, 2021 at 5:42 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
On 13.12.2021 13:08, Jagan Teki wrote:
On Mon, Dec 13, 2021 at 5:34 PM Marek Szyprowski m.szyprowski@samsung.com wrote: > On 12.12.2021 19:14, Jagan Teki wrote: >> Updated series about drm bridge conversion of exynos dsi. >> >> Patch 1: panel checker >> >> Patch 2: panel_bridge API >> >> Patch 3: Bridge conversion >> >> Patch 4: pree_enable, post_disable >> >> Patch 5: Atomic functions >> >> Patch 6: atomic_set >> >> Patch 7: DSI init in enable >> >> [1] https://patchwork.kernel.org/project/dri-devel/cover/20211210191922.2367979-... >> >> Any inputs? > I've checked this patchset on Exynos based Trats2 board (the one with > simplest display pipeline: Exynos FIMD -> Exynos DSI -> s6e8aa0 DSI > panel). DRM stops working after the 2nd patch ("[PATCH v3 2/7] drm: > exynos: dsi: Use drm panel_bridge API"): > > # dmesg | grep drm > [ 2.511893] [drm] Exynos DRM: using 11c00000.fimd device for DMA > mapping operations > [ 2.518653] exynos-drm exynos-drm: bound 11c00000.fimd (ops > fimd_component_ops) > [ 2.535699] exynos-drm exynos-drm: bound 11c80000.dsi (ops > exynos_dsi_component_ops) > [ 2.543912] exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes > [ 2.556107] [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on > minor 0 > [ 2.573212] exynos-dsi 11c80000.dsi: [drm:exynos_dsi_host_attach] > *ERROR* failed to find the bridge: -19 Look like you have missed to apply the Child lookup patch. is it so?
Let me send it, I will CC you as well. And I will also send tc358764 panel_bridge conversion.
The above log is from Trats2 board, which uses only the s6e8aa0 DSI panel. I've also checked the Arndale board, which has tc358764 bridge and it also doesn't work. Which patches I have to apply for the tests?
[PATCH v2] drm: of: Lookup if child node has panel or bridge [PATCH] drm: bridge: tc358764: Use drm panel_bridge API
Ok, I've applied both. Still no success on Trats:
[ 2.451632] exynos4-fb 11c00000.fimd: Adding to iommu group 0 [ 2.458137] OF: graph: no port node found in /soc/fimd@11c00000 [ 2.476903] [drm] Exynos DRM: using 11c00000.fimd device for DMA mapping operations [ 2.483905] exynos-drm exynos-drm: bound 11c00000.fimd (ops fimd_component_ops) [ 2.490858] OF: graph: no port node found in /soc/dsi@11c80000 [ 2.500283] exynos-drm exynos-drm: bound 11c80000.dsi (ops exynos_dsi_component_ops) [ 2.508490] exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes [ 2.520121] [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on minor 0 [ 2.537231] exynos-dsi 11c80000.dsi: [drm:exynos_dsi_host_attach] Attached s6e8aa0 device [ 2.566358] ------------[ cut here ]------------ [ 2.569894] WARNING: CPU: 1 PID: 29 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 2.586123] Modules linked in: [ 2.586171] CPU: 1 PID: 29 Comm: kworker/1:2 Not tainted 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 2.586190] Hardware name: Samsung Exynos (Flattened Device Tree) [ 2.586203] Workqueue: events output_poll_execute [ 2.586235] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 2.586267] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 2.586299] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 2.586324] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 2.586346] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 2.586371] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 2.586398] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 2.586421] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 2.586453] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 2.586479] [<c067e800>] (drm_client_modeset_commit_locked) from [<c067e98c>] (drm_client_modeset_commit+0x24/0x40) [ 2.586505] [<c067e98c>] (drm_client_modeset_commit) from [<c06509c0>] (drm_fb_helper_set_par+0xb8/0xf8) [ 2.586535] [<c06509c0>] (drm_fb_helper_set_par) from [<c0650aa8>] (drm_fb_helper_hotplug_event.part.0+0xa8/0xc0) [ 2.586560] [<c0650aa8>] (drm_fb_helper_hotplug_event.part.0) from [<c063ab40>] (output_poll_execute+0xac/0x21c) [ 2.586585] [<c063ab40>] (output_poll_execute) from [<c01470ec>] (process_one_work+0x288/0x7a4) [ 2.586611] [<c01470ec>] (process_one_work) from [<c014764c>] (worker_thread+0x44/0x534) [ 2.586633] [<c014764c>] (worker_thread) from [<c01500ac>] (kthread+0x158/0x190) [ 2.586655] [<c01500ac>] (kthread) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 2.586675] Exception stack(0xc1f6ffb0 to 0xc1f6fff8) [ 2.586690] ffa0: 00000000 00000000 00000000 00000000 [ 2.586705] ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 2.586720] ffe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 2.586734] irq event stamp: 449 [ 2.586749] hardirqs last enabled at (455): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 2.586780] hardirqs last disabled at (460): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 2.586804] softirqs last enabled at (430): [<c0101578>] __do_softirq+0x348/0x610 [ 2.586829] softirqs last disabled at (425): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 2.586902] ---[ end trace e6002ef7c126805b ]--- [ 2.587418] ------------[ cut here ]------------ [ 2.587452] WARNING: CPU: 1 PID: 1 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 2.587485] Modules linked in: [ 2.587518] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G W 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 2.587535] Hardware name: Samsung Exynos (Flattened Device Tree) [ 2.587548] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 2.587576] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 2.587605] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 2.587628] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 2.587650] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 2.587676] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 2.587700] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 2.587724] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 2.587751] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 2.587778] [<c067e800>] (drm_client_modeset_commit_locked) from [<c067e98c>] (drm_client_modeset_commit+0x24/0x40) [ 2.587804] [<c067e98c>] (drm_client_modeset_commit) from [<c06509c0>] (drm_fb_helper_set_par+0xb8/0xf8) [ 2.587831] [<c06509c0>] (drm_fb_helper_set_par) from [<c05b86d0>] (fbcon_init+0x2c0/0x518) [ 2.587858] [<c05b86d0>] (fbcon_init) from [<c060636c>] (visual_init+0xc0/0x108) [ 2.587888] [<c060636c>] (visual_init) from [<c06085e4>] (do_bind_con_driver+0x1b8/0x3a4) [ 2.587915] [<c06085e4>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 2.587942] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 2.587968] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 2.588001] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 2.588028] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 2.588053] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 2.588088] [<c068f668>] (exynos_dsi_host_attach) from [<c0699354>] (s6e8aa0_probe+0x1b4/0x218) [ 2.588117] [<c0699354>] (s6e8aa0_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 2.588147] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 2.588172] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 2.588197] [<c06b79f8>] (driver_probe_device) from [<c06b819c>] (__driver_attach+0xf0/0x1d4) [ 2.588222] [<c06b819c>] (__driver_attach) from [<c06b5164>] (bus_for_each_dev+0x70/0xb0) [ 2.588246] [<c06b5164>] (bus_for_each_dev) from [<c06b65ec>] (bus_add_driver+0x170/0x20c) [ 2.588270] [<c06b65ec>] (bus_add_driver) from [<c06b8c08>] (driver_register+0x88/0x118) [ 2.588294] [<c06b8c08>] (driver_register) from [<c01021e8>] (do_one_initcall+0x64/0x380) [ 2.588320] [<c01021e8>] (do_one_initcall) from [<c110123c>] (kernel_init_freeable+0x1c0/0x224) [ 2.588353] [<c110123c>] (kernel_init_freeable) from [<c0b6ba54>] (kernel_init+0x18/0x12c) [ 2.588380] [<c0b6ba54>] (kernel_init) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 2.588401] Exception stack(0xc1cb5fb0 to 0xc1cb5ff8) [ 2.588416] 5fa0: 00000000 00000000 00000000 00000000 [ 2.588432] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 2.588446] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 2.588460] irq event stamp: 175387 [ 2.588477] hardirqs last enabled at (175393): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 2.588506] hardirqs last disabled at (175398): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 2.588531] softirqs last enabled at (171796): [<c0101578>] __do_softirq+0x348/0x610 [ 2.588555] softirqs last disabled at (171781): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 2.588581] ---[ end trace e6002ef7c126805c ]--- [ 2.588971] ------------[ cut here ]------------ [ 2.588989] WARNING: CPU: 1 PID: 1 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 2.589022] Modules linked in: [ 2.589053] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G W 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 2.589072] Hardware name: Samsung Exynos (Flattened Device Tree) [ 2.589085] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 2.589113] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 2.589140] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 2.589165] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 2.589187] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 2.589212] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 2.589237] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 2.589260] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 2.589288] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 2.589314] [<c067e800>] (drm_client_modeset_commit_locked) from [<c064fe38>] (drm_fb_helper_pan_display+0x98/0x1c0) [ 2.589342] [<c064fe38>] (drm_fb_helper_pan_display) from [<c05b024c>] (fb_pan_display+0x9c/0x114) [ 2.589372] [<c05b024c>] (fb_pan_display) from [<c05bac24>] (bit_update_start+0x14/0x30) [ 2.589398] [<c05bac24>] (bit_update_start) from [<c05b9e58>] (fbcon_switch+0x2ec/0x454) [ 2.589422] [<c05b9e58>] (fbcon_switch) from [<c0606fe0>] (redraw_screen+0xdc/0x230) [ 2.589448] [<c0606fe0>] (redraw_screen) from [<c05b795c>] (fbcon_prepare_logo+0x38c/0x450) [ 2.589472] [<c05b795c>] (fbcon_prepare_logo) from [<c05b883c>] (fbcon_init+0x42c/0x518) [ 2.589495] [<c05b883c>] (fbcon_init) from [<c060636c>] (visual_init+0xc0/0x108) [ 2.589518] [<c060636c>] (visual_init) from [<c06085e4>] (do_bind_con_driver+0x1b8/0x3a4) [ 2.589544] [<c06085e4>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 2.589571] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 2.589596] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 2.589622] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 2.589649] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 2.589675] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 2.589704] [<c068f668>] (exynos_dsi_host_attach) from [<c0699354>] (s6e8aa0_probe+0x1b4/0x218) [ 2.589731] [<c0699354>] (s6e8aa0_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 2.589758] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 2.589783] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 2.589808] [<c06b79f8>] (driver_probe_device) from [<c06b819c>] (__driver_attach+0xf0/0x1d4) [ 2.589832] [<c06b819c>] (__driver_attach) from [<c06b5164>] (bus_for_each_dev+0x70/0xb0) [ 2.589856] [<c06b5164>] (bus_for_each_dev) from [<c06b65ec>] (bus_add_driver+0x170/0x20c) [ 2.589879] [<c06b65ec>] (bus_add_driver) from [<c06b8c08>] (driver_register+0x88/0x118) [ 2.589904] [<c06b8c08>] (driver_register) from [<c01021e8>] (do_one_initcall+0x64/0x380) [ 2.589929] [<c01021e8>] (do_one_initcall) from [<c110123c>] (kernel_init_freeable+0x1c0/0x224) [ 2.589956] [<c110123c>] (kernel_init_freeable) from [<c0b6ba54>] (kernel_init+0x18/0x12c) [ 2.589982] [<c0b6ba54>] (kernel_init) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 2.590002] Exception stack(0xc1cb5fb0 to 0xc1cb5ff8) [ 2.590017] 5fa0: 00000000 00000000 00000000 00000000 [ 2.590033] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 2.590047] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 2.590061] irq event stamp: 175453 [ 2.590079] hardirqs last enabled at (175459): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 2.590107] hardirqs last disabled at (175464): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 2.590132] softirqs last enabled at (171796): [<c0101578>] __do_softirq+0x348/0x610 [ 2.590156] softirqs last disabled at (171781): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 2.590183] ---[ end trace e6002ef7c126805d ]--- [ 2.609799] Console: switching to colour frame buffer device 102x91 [ 2.610039] ------------[ cut here ]------------ [ 2.610057] WARNING: CPU: 1 PID: 1 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 2.610090] Modules linked in: [ 2.610122] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G W 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 2.610140] Hardware name: Samsung Exynos (Flattened Device Tree) [ 2.610153] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 2.610180] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 2.610208] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 2.610231] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 2.610254] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 2.610279] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 2.610305] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 2.610327] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 2.610355] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 2.610382] [<c067e800>] (drm_client_modeset_commit_locked) from [<c064fe38>] (drm_fb_helper_pan_display+0x98/0x1c0) [ 2.610410] [<c064fe38>] (drm_fb_helper_pan_display) from [<c05b024c>] (fb_pan_display+0x9c/0x114) [ 2.610439] [<c05b024c>] (fb_pan_display) from [<c05bac24>] (bit_update_start+0x14/0x30) [ 2.610465] [<c05bac24>] (bit_update_start) from [<c05b9e58>] (fbcon_switch+0x2ec/0x454) [ 2.610489] [<c05b9e58>] (fbcon_switch) from [<c0606fe0>] (redraw_screen+0xdc/0x230) [ 2.610515] [<c0606fe0>] (redraw_screen) from [<c0608708>] (do_bind_con_driver+0x2dc/0x3a4) [ 2.610543] [<c0608708>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 2.610570] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 2.610595] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 2.610621] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 2.610649] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 2.610674] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 2.610703] [<c068f668>] (exynos_dsi_host_attach) from [<c0699354>] (s6e8aa0_probe+0x1b4/0x218) [ 2.610730] [<c0699354>] (s6e8aa0_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 2.610756] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 2.610782] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 2.610807] [<c06b79f8>] (driver_probe_device) from [<c06b819c>] (__driver_attach+0xf0/0x1d4) [ 2.610832] [<c06b819c>] (__driver_attach) from [<c06b5164>] (bus_for_each_dev+0x70/0xb0) [ 2.610856] [<c06b5164>] (bus_for_each_dev) from [<c06b65ec>] (bus_add_driver+0x170/0x20c) [ 2.610880] [<c06b65ec>] (bus_add_driver) from [<c06b8c08>] (driver_register+0x88/0x118) [ 2.610904] [<c06b8c08>] (driver_register) from [<c01021e8>] (do_one_initcall+0x64/0x380) [ 2.610929] [<c01021e8>] (do_one_initcall) from [<c110123c>] (kernel_init_freeable+0x1c0/0x224) [ 2.610956] [<c110123c>] (kernel_init_freeable) from [<c0b6ba54>] (kernel_init+0x18/0x12c) [ 2.610982] [<c0b6ba54>] (kernel_init) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 2.611002] Exception stack(0xc1cb5fb0 to 0xc1cb5ff8) [ 2.611017] 5fa0: 00000000 00000000 00000000 00000000 [ 2.611033] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 2.611047] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 2.611062] irq event stamp: 175539 [ 2.611079] hardirqs last enabled at (175545): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 2.611108] hardirqs last disabled at (175550): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 2.611134] softirqs last enabled at (171796): [<c0101578>] __do_softirq+0x348/0x610 [ 2.611158] softirqs last disabled at (171781): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 2.611185] ---[ end trace e6002ef7c126805e ]--- [ 6.173152] exynos-drm exynos-drm: [drm] fb0: exynos frame buffer device
After the 2nd patch ("[PATCH v3 2/7] drm: exynos: dsi: Use drm panel_bridge API") the display stops working.
Here is the log from Arndale board (which also doesn't work after the 2nd path):
[ 3.739197] OF: graph: no port node found in /soc/hdmi@14530000 [ 3.747930] [drm] Exynos DRM: using 14400000.fimd device for DMA mapping operations [ 3.754385] exynos-drm exynos-drm: bound 14400000.fimd (ops fimd_component_ops) [ 3.762985] exynos-drm exynos-drm: bound 14450000.mixer (ops mixer_component_ops) [ 3.769332] OF: graph: no port node found in /soc/dsi@14500000 [ 3.779055] exynos-drm exynos-drm: bound 14500000.dsi (ops exynos_dsi_component_ops) [ 3.785997] exynos-drm exynos-drm: bound 14530000.hdmi (ops hdmi_component_ops) [ 3.795431] exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes [ 3.801975] exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes [ 3.811501] [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on minor 0 [ 3.818349] usb 1-3: New USB device found, idVendor=0424, idProduct=3503, bcdDevice=a1.a0 [ 3.825602] usb 1-3: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 3.833782] panfrost 11800000.gpu: clock rate = 533000000 [ 3.835556] hub 1-3:1.0: USB hub found [ 3.842054] hub 1-3:1.0: 3 ports detected [ 3.861628] panfrost 11800000.gpu: mali-t600 id 0x600 major 0x0 minor 0x0 status 0x1 [ 3.868077] panfrost 11800000.gpu: features: 00000000,10206000, issues: 00000000,31b4dfff [ 3.876202] panfrost 11800000.gpu: Features: L2:0x07110206 Shader:0x00000000 Tiler:0x00000809 Mem:0x1 MMU:0x00002830 AS:0xf JS:0x7 [ 3.887853] panfrost 11800000.gpu: shader_present=0xf l2_present=0x1 [ 3.897532] [drm] Initialized panfrost 1.2.0 20180908 for 11800000.gpu on minor 1 [ 3.919339] wm8994 3-001a: WM1811 revision D CUST_ID 00 [ 3.933753] wm8994 3-001a: No interrupt specified, no interrupts [ 4.111656] exynos-dsi 14500000.dsi: [drm:exynos_dsi_host_attach] Attached tc358764 device [ 4.125346] ------------[ cut here ]------------ [ 4.125392] WARNING: CPU: 1 PID: 7 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 4.125412] Modules linked in: [ 4.125428] CPU: 1 PID: 7 Comm: kworker/u4:0 Not tainted 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 4.125438] Hardware name: Samsung Exynos (Flattened Device Tree) [ 4.125444] Workqueue: events_unbound deferred_probe_work_func [ 4.125461] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 4.125477] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 4.125492] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 4.125505] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 4.125515] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 4.125527] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 4.125538] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 4.125549] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 4.125562] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 4.125575] [<c067e800>] (drm_client_modeset_commit_locked) from [<c067e98c>] (drm_client_modeset_commit+0x24/0x40) [ 4.125588] [<c067e98c>] (drm_client_modeset_commit) from [<c06509c0>] (drm_fb_helper_set_par+0xb8/0xf8) [ 4.125603] [<c06509c0>] (drm_fb_helper_set_par) from [<c05b86d0>] (fbcon_init+0x2c0/0x518) [ 4.125615] [<c05b86d0>] (fbcon_init) from [<c060636c>] (visual_init+0xc0/0x108) [ 4.125628] [<c060636c>] (visual_init) from [<c06085e4>] (do_bind_con_driver+0x1b8/0x3a4) [ 4.125641] [<c06085e4>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 4.125654] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 4.125666] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 4.125682] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 4.125695] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 4.125708] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 4.125722] [<c068f668>] (exynos_dsi_host_attach) from [<c069cef8>] (tc358764_probe+0xe8/0x15c) [ 4.125736] [<c069cef8>] (tc358764_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 4.125747] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 4.125759] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 4.125771] [<c06b79f8>] (driver_probe_device) from [<c06b8034>] (__device_attach_driver+0xa4/0x11c) [ 4.125784] [<c06b8034>] (__device_attach_driver) from [<c06b5220>] (bus_for_each_drv+0x7c/0xc0) [ 4.125796] [<c06b5220>] (bus_for_each_drv) from [<c06b7cd8>] (__device_attach+0xc8/0x1d0) [ 4.125807] [<c06b7cd8>] (__device_attach) from [<c06b6338>] (bus_probe_device+0x88/0x90) [ 4.125818] [<c06b6338>] (bus_probe_device) from [<c06b6834>] (deferred_probe_work_func+0x98/0xe0) [ 4.125830] [<c06b6834>] (deferred_probe_work_func) from [<c01470ec>] (process_one_work+0x288/0x7a4) [ 4.125843] [<c01470ec>] (process_one_work) from [<c014764c>] (worker_thread+0x44/0x534) [ 4.125853] [<c014764c>] (worker_thread) from [<c01500ac>] (kthread+0x158/0x190) [ 4.125863] [<c01500ac>] (kthread) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 4.125872] Exception stack(0xc1cc1fb0 to 0xc1cc1ff8) [ 4.125879] 1fa0: 00000000 00000000 00000000 00000000 [ 4.125886] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 4.125893] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 4.125900] irq event stamp: 18917 [ 4.125908] hardirqs last enabled at (18923): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 4.125922] hardirqs last disabled at (18928): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 4.125934] softirqs last enabled at (18882): [<c0101578>] __do_softirq+0x348/0x610 [ 4.125945] softirqs last disabled at (18877): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 4.125957] ---[ end trace ab5bb577f0c45837 ]--- [ 4.126167] ------------[ cut here ]------------ [ 4.126175] WARNING: CPU: 1 PID: 7 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 4.126190] Modules linked in: [ 4.126205] CPU: 1 PID: 7 Comm: kworker/u4:0 Tainted: G W 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 4.126213] Hardware name: Samsung Exynos (Flattened Device Tree) [ 4.126219] Workqueue: events_unbound deferred_probe_work_func [ 4.126232] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 4.126245] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 4.126258] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 4.126269] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 4.126279] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 4.126290] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 4.126301] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 4.126310] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 4.126323] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 4.126336] [<c067e800>] (drm_client_modeset_commit_locked) from [<c064fe38>] (drm_fb_helper_pan_display+0x98/0x1c0) [ 4.126349] [<c064fe38>] (drm_fb_helper_pan_display) from [<c05b024c>] (fb_pan_display+0x9c/0x114) [ 4.126362] [<c05b024c>] (fb_pan_display) from [<c05bac24>] (bit_update_start+0x14/0x30) [ 4.126375] [<c05bac24>] (bit_update_start) from [<c05b9e58>] (fbcon_switch+0x2ec/0x454) [ 4.126385] [<c05b9e58>] (fbcon_switch) from [<c0606fe0>] (redraw_screen+0xdc/0x230) [ 4.126397] [<c0606fe0>] (redraw_screen) from [<c05b795c>] (fbcon_prepare_logo+0x38c/0x450) [ 4.126408] [<c05b795c>] (fbcon_prepare_logo) from [<c05b883c>] (fbcon_init+0x42c/0x518) [ 4.126419] [<c05b883c>] (fbcon_init) from [<c060636c>] (visual_init+0xc0/0x108) [ 4.126430] [<c060636c>] (visual_init) from [<c06085e4>] (do_bind_con_driver+0x1b8/0x3a4) [ 4.126442] [<c06085e4>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 4.126455] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 4.126466] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 4.126478] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 4.126491] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 4.126503] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 4.126516] [<c068f668>] (exynos_dsi_host_attach) from [<c069cef8>] (tc358764_probe+0xe8/0x15c) [ 4.126528] [<c069cef8>] (tc358764_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 4.126540] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 4.126552] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 4.126564] [<c06b79f8>] (driver_probe_device) from [<c06b8034>] (__device_attach_driver+0xa4/0x11c) [ 4.126577] [<c06b8034>] (__device_attach_driver) from [<c06b5220>] (bus_for_each_drv+0x7c/0xc0) [ 4.126589] [<c06b5220>] (bus_for_each_drv) from [<c06b7cd8>] (__device_attach+0xc8/0x1d0) [ 4.126600] [<c06b7cd8>] (__device_attach) from [<c06b6338>] (bus_probe_device+0x88/0x90) [ 4.126611] [<c06b6338>] (bus_probe_device) from [<c06b6834>] (deferred_probe_work_func+0x98/0xe0) [ 4.126623] [<c06b6834>] (deferred_probe_work_func) from [<c01470ec>] (process_one_work+0x288/0x7a4) [ 4.126634] [<c01470ec>] (process_one_work) from [<c014764c>] (worker_thread+0x44/0x534) [ 4.126644] [<c014764c>] (worker_thread) from [<c01500ac>] (kthread+0x158/0x190) [ 4.126654] [<c01500ac>] (kthread) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 4.126663] Exception stack(0xc1cc1fb0 to 0xc1cc1ff8) [ 4.126670] 1fa0: 00000000 00000000 00000000 00000000 [ 4.126676] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 4.126683] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 4.126689] irq event stamp: 19009 [ 4.126697] hardirqs last enabled at (19015): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 4.126709] hardirqs last disabled at (19020): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 4.126721] softirqs last enabled at (18882): [<c0101578>] __do_softirq+0x348/0x610 [ 4.126731] softirqs last disabled at (18877): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 4.126743] ---[ end trace ab5bb577f0c45838 ]--- [ 4.129425] Console: switching to colour frame buffer device 146x42 [ 4.129562] ------------[ cut here ]------------ [ 4.129570] WARNING: CPU: 1 PID: 7 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 4.129585] Modules linked in: [ 4.129599] CPU: 1 PID: 7 Comm: kworker/u4:0 Tainted: G W 5.16.0-rc1-00009-g704b1dbfa4c2 #11058 [ 4.129607] Hardware name: Samsung Exynos (Flattened Device Tree) [ 4.129613] Workqueue: events_unbound deferred_probe_work_func [ 4.129626] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 4.129639] [<c010c618>] (show_stack) from [<c0b657d4>] (dump_stack_lvl+0x58/0x70) [ 4.129651] [<c0b657d4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 4.129663] [<c01261dc>] (__warn) from [<c0b5f628>] (warn_slowpath_fmt+0x5c/0xb4) [ 4.129673] [<c0b5f628>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 4.129684] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 4.129695] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 4.129704] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 4.129716] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 4.129729] [<c067e800>] (drm_client_modeset_commit_locked) from [<c064fe38>] (drm_fb_helper_pan_display+0x98/0x1c0) [ 4.129742] [<c064fe38>] (drm_fb_helper_pan_display) from [<c05b024c>] (fb_pan_display+0x9c/0x114) [ 4.129755] [<c05b024c>] (fb_pan_display) from [<c05bac24>] (bit_update_start+0x14/0x30) [ 4.129767] [<c05bac24>] (bit_update_start) from [<c05b9e58>] (fbcon_switch+0x2ec/0x454) [ 4.129778] [<c05b9e58>] (fbcon_switch) from [<c0606fe0>] (redraw_screen+0xdc/0x230) [ 4.129790] [<c0606fe0>] (redraw_screen) from [<c0608708>] (do_bind_con_driver+0x2dc/0x3a4) [ 4.129802] [<c0608708>] (do_bind_con_driver) from [<c0608b40>] (do_take_over_console+0x13c/0x1e8) [ 4.129815] [<c0608b40>] (do_take_over_console) from [<c05b6854>] (do_fbcon_takeover+0x78/0xd8) [ 4.129827] [<c05b6854>] (do_fbcon_takeover) from [<c05b1154>] (register_framebuffer+0x208/0x2e0) [ 4.129839] [<c05b1154>] (register_framebuffer) from [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock+0x400/0x63c) [ 4.129852] [<c064ead0>] (__drm_fb_helper_initial_config_and_unlock) from [<c063a718>] (drm_kms_helper_hotplug_event+0x24/0x30) [ 4.129863] [<c063a718>] (drm_kms_helper_hotplug_event) from [<c068f668>] (exynos_dsi_host_attach+0x174/0x1fc) [ 4.129876] [<c068f668>] (exynos_dsi_host_attach) from [<c069cef8>] (tc358764_probe+0xe8/0x15c) [ 4.129888] [<c069cef8>] (tc358764_probe) from [<c06b7414>] (really_probe+0xd8/0x484) [ 4.129900] [<c06b7414>] (really_probe) from [<c06b7860>] (__driver_probe_device+0xa0/0x204) [ 4.129912] [<c06b7860>] (__driver_probe_device) from [<c06b79f8>] (driver_probe_device+0x34/0xc4) [ 4.129924] [<c06b79f8>] (driver_probe_device) from [<c06b8034>] (__device_attach_driver+0xa4/0x11c) [ 4.129936] [<c06b8034>] (__device_attach_driver) from [<c06b5220>] (bus_for_each_drv+0x7c/0xc0) [ 4.129948] [<c06b5220>] (bus_for_each_drv) from [<c06b7cd8>] (__device_attach+0xc8/0x1d0) [ 4.129960] [<c06b7cd8>] (__device_attach) from [<c06b6338>] (bus_probe_device+0x88/0x90) [ 4.129971] [<c06b6338>] (bus_probe_device) from [<c06b6834>] (deferred_probe_work_func+0x98/0xe0) [ 4.129983] [<c06b6834>] (deferred_probe_work_func) from [<c01470ec>] (process_one_work+0x288/0x7a4) [ 4.129995] [<c01470ec>] (process_one_work) from [<c014764c>] (worker_thread+0x44/0x534) [ 4.130005] [<c014764c>] (worker_thread) from [<c01500ac>] (kthread+0x158/0x190) [ 4.130014] [<c01500ac>] (kthread) from [<c0100108>] (ret_from_fork+0x14/0x2c) [ 4.130023] Exception stack(0xc1cc1fb0 to 0xc1cc1ff8) [ 4.130030] 1fa0: 00000000 00000000 00000000 00000000 [ 4.130037] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 4.130043] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 4.130049] irq event stamp: 19103 [ 4.130057] hardirqs last enabled at (19109): [<c01a0acc>] vprintk_emit+0x2ac/0x2d0 [ 4.130069] hardirqs last disabled at (19114): [<c01a0a88>] vprintk_emit+0x268/0x2d0 [ 4.130081] softirqs last enabled at (18882): [<c0101578>] __do_softirq+0x348/0x610 [ 4.130091] softirqs last disabled at (18877): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 4.130103] ---[ end trace ab5bb577f0c45839 ]--- [ 4.175229] usb 1-3.2: new high-speed USB device number 3 using exynos-ehci [ 4.179270] exynos-drm exynos-drm: [drm] fb0: exynos frame buffer device
There is something seriously broken with connector setup (Arndale board):
# ./modetest -C -Mexynos [ 37.803987] ------------[ cut here ]------------ [ 37.807883] WARNING: CPU: 1 PID: 1296 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 37.819952] Modules linked in: s5p_mfc exynos_gsc v4l2_mem2mem videobuf2_dma_contig videobuf2_memops videobuf2_v4l2 videobuf2_common videodev mc [ 37.832906] CPU: 1 PID: 1296 Comm: modetest Tainted: G W 5.16.0-rc1-00004-gd0885f6a52ee #11059 [ 37.842588] Hardware name: Samsung Exynos (Flattened Device Tree) [ 37.848667] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 37.856390] [<c010c618>] (show_stack) from [<c0b658a4>] (dump_stack_lvl+0x58/0x70) [ 37.863942] [<c0b658a4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 37.871233] [<c01261dc>] (__warn) from [<c0b5f6f8>] (warn_slowpath_fmt+0x5c/0xb4) [ 37.878697] [<c0b5f6f8>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 37.889374] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 37.901265] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 37.912115] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 37.923139] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 37.934248] [<c067e800>] (drm_client_modeset_commit_locked) from [<c067e98c>] (drm_client_modeset_commit+0x24/0x40) [ 37.944665] [<c067e98c>] (drm_client_modeset_commit) from [<c0650c00>] (drm_fb_helper_lastclose+0x4c/0x84) [ 37.954300] [<c0650c00>] (drm_fb_helper_lastclose) from [<c0652b7c>] (drm_release+0x114/0x14c) [ 37.962893] [<c0652b7c>] (drm_release) from [<c02dc400>] (__fput+0x88/0x258) [ 37.969924] [<c02dc400>] (__fput) from [<c014cd44>] (task_work_run+0x8c/0xc8) [ 37.977041] [<c014cd44>] (task_work_run) from [<c010c08c>] (do_work_pending+0x4a4/0x598) [ 37.985114] [<c010c08c>] (do_work_pending) from [<c0100088>] (slow_work_pending+0xc/0x20) [ 37.993272] Exception stack(0xc3577fb0 to 0xc3577ff8) [ 37.998309] 7fa0: 00000000 0000001f 85024200 00000000 [ 38.006469] 7fc0: 00000001 00000003 00000000 00000006 00022188 00000000 b6f6c000 00000000 [ 38.014628] 7fe0: b6e6daa0 bec90a98 0000e7c4 b6e6dac0 60000010 00000003 [ 38.021474] irq event stamp: 3541 [ 38.024718] hardirqs last enabled at (3553): [<c01598ec>] finish_task_switch+0x110/0x368 [ 38.032840] hardirqs last disabled at (3564): [<c0b6cc7c>] __schedule+0x4e4/0xa6c [ 38.040321] softirqs last enabled at (3580): [<c0101578>] __do_softirq+0x348/0x610 [ 38.048072] softirqs last disabled at (3573): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 38.055797] ---[ end trace cfeb2d6c6e65009a ]--- could not get connector 62: N[ 38.062741] ------------[ cut here ]------------ [ 38.067551] WARNING: CPU: 0 PID: 1296 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x94/0x9c [ 38.080014] Modules linked in: s5p_mfc exynos_gsc v4l2_mem2mem videobuf2_dma_contig videobuf2_memops videobuf2_v4l2 videobuf2_common videodev mc [ 38.092947] CPU: 0 PID: 1296 Comm: modetest Tainted: G W 5.16.0-rc1-00004-gd0885f6a52ee #11059 [ 38.102727] Hardware name: Samsung Exynos (Flattened Device Tree) [ 38.108806] [<c0110b30>] (unwind_backtrace) from [<c010c618>] (show_stack+0x10/0x14) [ 38.116529] [<c010c618>] (show_stack) from [<c0b658a4>] (dump_stack_lvl+0x58/0x70) [ 38.124081] [<c0b658a4>] (dump_stack_lvl) from [<c01261dc>] (__warn+0xd0/0x134) [ 38.131373] [<c01261dc>] (__warn) from [<c0b5f6f8>] (warn_slowpath_fmt+0x5c/0xb4) [ 38.138837] [<c0b5f6f8>] (warn_slowpath_fmt) from [<c064bce4>] (drm_atomic_helper_connector_duplicate_state+0x94/0x9c) [ 38.149514] [<c064bce4>] (drm_atomic_helper_connector_duplicate_state) from [<c0666b64>] (drm_atomic_get_connector_state+0xd4/0x190) [ 38.161405] [<c0666b64>] (drm_atomic_get_connector_state) from [<c0667928>] (__drm_atomic_helper_set_config+0x314/0x368) [ 38.172255] [<c0667928>] (__drm_atomic_helper_set_config) from [<c067e628>] (drm_client_modeset_commit_atomic+0x170/0x278) [ 38.183279] [<c067e628>] (drm_client_modeset_commit_atomic) from [<c067e800>] (drm_client_modeset_commit_locked+0x60/0x1c8) [ 38.194388] [<c067e800>] (drm_client_modeset_commit_locked) from [<c067e98c>] (drm_client_modeset_commit+0x24/0x40) [ 38.204804] [<c067e98c>] (drm_client_modeset_commit) from [<c0650c00>] (drm_fb_helper_lastclose+0x4c/0x84) [ 38.214439] [<c0650c00>] (drm_fb_helper_lastclose) from [<c0652b7c>] (drm_release+0x114/0x14c) [ 38.223032] [<c0652b7c>] (drm_release) from [<c02dc400>] (__fput+0x88/0x258) [ 38.230063] [<c02dc400>] (__fput) from [<c014cd44>] (task_work_run+0x8c/0xc8) [ 38.234727] dwmmc_exynos 12200000.mmc: Unexpected interrupt latency [ 38.237178] [<c014cd44>] (task_work_run) from [<c012b5ac>] (do_exit+0x390/0xaf0) [ 38.250809] [<c012b5ac>] (do_exit) from [<c012d040>] (do_group_exit+0x2c/0xa0) [ 38.258013] [<c012d040>] (do_group_exit) from [<c013b8f4>] (get_signal+0x140/0xab8) [ 38.265651] [<c013b8f4>] (get_signal) from [<c010bd0c>] (do_work_pending+0x124/0x598) [ 38.273463] [<c010bd0c>] (do_work_pending) from [<c0100088>] (slow_work_pending+0xc/0x20) [ 38.281622] Exception stack(0xc3577fb0 to 0xc3577ff8) [ 38.286659] 7fa0: 00000008 0000005f 00000002 00023388 [ 38.294819] 7fc0: 00000001 000232a8 00000000 00023398 0000003e 00000000 00023360 00000000 [ 38.302978] 7fe0: 00023590 bec90ae8 00009ec0 00009e9c 80000010 ffffffff [ 38.310025] irq event stamp: 4059 [ 38.312910] hardirqs last enabled at (4069): [<c019d7f4>] __up_console_sem+0x50/0x60 [ 38.320780] hardirqs last disabled at (4078): [<c019d7e0>] __up_console_sem+0x3c/0x60 [ 38.328617] softirqs last enabled at (4054): [<c0101578>] __do_softirq+0x348/0x610 [ 38.336222] softirqs last disabled at (4013): [<c012e7a4>] __irq_exit_rcu+0x144/0x1ec [ 38.343942] ---[ end trace cfeb2d6c6e65009b ]--- o such file or directory Segmentation fault
Thanks for testing it.
Can you test it on the downstream bridge, tc358764 and post the result?
There were 2 logs in my reply. One from trats2 board (just dsi panel) and one from arndale (tc bridge + simple panel).
Okay. Got it.
Can you test this tc358764 panel_bridge patch on linux-next? don't apply this series, apply only below patch and test.
https://patchwork.amarulasolutions.com/patch/1824/
Thanks, Jagan.
Hi Jagan,
On 14.12.2021 11:47, Jagan Teki wrote:
On Mon, Dec 13, 2021 at 7:42 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
On 13.12.2021 14:56, Jagan Teki wrote:
On Mon, Dec 13, 2021 at 6:51 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
On 13.12.2021 13:31, Jagan Teki wrote:
On Mon, Dec 13, 2021 at 5:42 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
On 13.12.2021 13:08, Jagan Teki wrote: > On Mon, Dec 13, 2021 at 5:34 PM Marek Szyprowski > m.szyprowski@samsung.com wrote: >> On 12.12.2021 19:14, Jagan Teki wrote: >>> Updated series about drm bridge conversion of exynos dsi. >>> >>> Patch 1: panel checker >>> >>> Patch 2: panel_bridge API >>> >>> Patch 3: Bridge conversion >>> >>> Patch 4: pree_enable, post_disable >>> >>> Patch 5: Atomic functions >>> >>> Patch 6: atomic_set >>> >>> Patch 7: DSI init in enable >>> >>> [1] https://patchwork.kernel.org/project/dri-devel/cover/20211210191922.2367979-... >>> >>> Any inputs? >> I've checked this patchset on Exynos based Trats2 board (the one with >> simplest display pipeline: Exynos FIMD -> Exynos DSI -> s6e8aa0 DSI >> panel). DRM stops working after the 2nd patch ("[PATCH v3 2/7] drm: >> exynos: dsi: Use drm panel_bridge API"): >> >> > [...]
Thanks for testing it.
Can you test it on the downstream bridge, tc358764 and post the result?
There were 2 logs in my reply. One from trats2 board (just dsi panel) and one from arndale (tc bridge + simple panel).
Okay. Got it.
Can you test this tc358764 panel_bridge patch on linux-next? don't apply this series, apply only below patch and test.
Yes, sure. Sadly, it also breaks display operation:
OF: graph: no port node found in /soc/hdmi@14530000 [drm] Exynos DRM: using 14400000.fimd device for DMA mapping operations exynos-drm exynos-drm: bound 14400000.fimd (ops fimd_component_ops) exynos-drm exynos-drm: bound 14450000.mixer (ops mixer_component_ops) OF: graph: no port node found in /soc/dsi@14500000 exynos-drm exynos-drm: bound 14500000.dsi (ops exynos_dsi_component_ops) exynos-drm exynos-drm: bound 14530000.hdmi (ops hdmi_component_ops) exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on minor 0 panfrost 11800000.gpu: clock rate = 533000000 panfrost 11800000.gpu: mali-t600 id 0x600 major 0x0 minor 0x0 status 0x1 panfrost 11800000.gpu: features: 00000000,10206000, issues: 00000000,31b4dfff panfrost 11800000.gpu: Features: L2:0x07110206 Shader:0x00000000 Tiler:0x00000809 Mem:0x1 MMU:0x00002830 AS:0xf JS:0x7 panfrost 11800000.gpu: shader_present=0xf l2_present=0x1 [drm] Initialized panfrost 1.2.0 20180908 for 11800000.gpu on minor 1 ------------[ cut here ]------------ WARNING: CPU: 1 PID: 23 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x60/0x68 Modules linked in: CPU: 1 PID: 23 Comm: kworker/1:1 Not tainted 5.16.0-rc5-next-20211213-00001-gac4117943791 #11072 Hardware name: Samsung Exynos (Flattened Device Tree) Workqueue: events output_poll_execute [<c01110d0>] (unwind_backtrace) from [<c010cab0>] (show_stack+0x10/0x14) [<c010cab0>] (show_stack) from [<c0b71b58>] (dump_stack_lvl+0x58/0x70) [<c0b71b58>] (dump_stack_lvl) from [<c0126c9c>] (__warn+0x228/0x22c) [<c0126c9c>] (__warn) from [<c0126d4c>] (warn_slowpath_fmt+0xac/0xb4) [<c0126d4c>] (warn_slowpath_fmt) from [<c064e844>] (drm_atomic_helper_connector_duplicate_state+0x60/0x68) [<c064e844>] (drm_atomic_helper_connector_duplicate_state) from [<c06685f4>] (drm_atomic_get_connector_state+0xd8/0x190) [<c06685f4>] (drm_atomic_get_connector_state) from [<c066960c>] (__drm_atomic_helper_set_config+0x2a0/0x368) [<c066960c>] (__drm_atomic_helper_set_config) from [<c0680a20>] (drm_client_modeset_commit_atomic+0x178/0x27c) [<c0680a20>] (drm_client_modeset_commit_atomic) from [<c0680be0>] (drm_client_modeset_commit_locked+0x48/0x1d0) [<c0680be0>] (drm_client_modeset_commit_locked) from [<c0680d8c>] (drm_client_modeset_commit+0x24/0x40) [<c0680d8c>] (drm_client_modeset_commit) from [<c0652a94>] (__drm_fb_helper_restore_fbdev_mode_unlocked+0x64/0xc8) [<c0652a94>] (__drm_fb_helper_restore_fbdev_mode_unlocked) from [<c0652b60>] (drm_fb_helper_set_par+0x38/0x64) [<c0652b60>] (drm_fb_helper_set_par) from [<c0652c34>] (drm_fb_helper_hotplug_event.part.5+0xa8/0xc0) [<c0652c34>] (drm_fb_helper_hotplug_event.part.5) from [<c063dfbc>] (drm_kms_helper_hotplug_event+0x24/0x30) [<c063dfbc>] (drm_kms_helper_hotplug_event) from [<c063e210>] (output_poll_execute+0x1ec/0x204) [<c063e210>] (output_poll_execute) from [<c0148990>] (process_one_work+0x2c8/0x7ec) [<c0148990>] (process_one_work) from [<c0148f04>] (worker_thread+0x50/0x584) [<c0148f04>] (worker_thread) from [<c0151300>] (kthread+0x13c/0x19c) [<c0151300>] (kthread) from [<c0100108>] (ret_from_fork+0x14/0x2c) Exception stack(0xc1d35fb0 to 0xc1d35ff8) 5fa0: 00000000 00000000 00000000 00000000 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000 irq event stamp: 1287 hardirqs last enabled at (1293): [<c01a3b94>] vprintk_emit+0x270/0x2b4 hardirqs last disabled at (1298): [<c01a3b50>] vprintk_emit+0x22c/0x2b4 softirqs last enabled at (1260): [<c01016fc>] __do_softirq+0x4cc/0x5ec softirqs last disabled at (1255): [<c01301c8>] irq_exit+0x1cc/0x200 ---[ end trace 0fa33551718d667f ]--- ------------[ cut here ]------------ WARNING: CPU: 0 PID: 7 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x60/0x68 Modules linked in: CPU: 0 PID: 7 Comm: kworker/u4:0 Tainted: G W 5.16.0-rc5-next-20211213-00001-gac4117943791 #11072 Hardware name: Samsung Exynos (Flattened Device Tree) Workqueue: events_unbound deferred_probe_work_func [<c01110d0>] (unwind_backtrace) from [<c010cab0>] (show_stack+0x10/0x14) [<c010cab0>] (show_stack) from [<c0b71b58>] (dump_stack_lvl+0x58/0x70) [<c0b71b58>] (dump_stack_lvl) from [<c0126c9c>] (__warn+0x228/0x22c) [<c0126c9c>] (__warn) from [<c0126d4c>] (warn_slowpath_fmt+0xac/0xb4) [<c0126d4c>] (warn_slowpath_fmt) from [<c064e844>] (drm_atomic_helper_connector_duplicate_state+0x60/0x68) [<c064e844>] (drm_atomic_helper_connector_duplicate_state) from [<c06685f4>] (drm_atomic_get_connector_state+0xd8/0x190) [<c06685f4>] (drm_atomic_get_connector_state) from [<c066960c>] (__drm_atomic_helper_set_config+0x2a0/0x368) [<c066960c>] (__drm_atomic_helper_set_config) from [<c0680a20>] (drm_client_modeset_commit_atomic+0x178/0x27c) [<c0680a20>] (drm_client_modeset_commit_atomic) from [<c0680be0>] (drm_client_modeset_commit_locked+0x48/0x1d0) [<c0680be0>] (drm_client_modeset_commit_locked) from [<c0680d8c>] (drm_client_modeset_commit+0x24/0x40) [<c0680d8c>] (drm_client_modeset_commit) from [<c0652a94>] (__drm_fb_helper_restore_fbdev_mode_unlocked+0x64/0xc8) [<c0652a94>] (__drm_fb_helper_restore_fbdev_mode_unlocked) from [<c0652b60>] (drm_fb_helper_set_par+0x38/0x64) [<c0652b60>] (drm_fb_helper_set_par) from [<c05bbf28>] (fbcon_init+0x48c/0x510) [<c05bbf28>] (fbcon_init) from [<c0608b50>] (visual_init+0xc0/0x108) [<c0608b50>] (visual_init) from [<c0609d78>] (do_bind_con_driver+0x1ac/0x388) [<c0609d78>] (do_bind_con_driver) from [<c060a2b0>] (do_take_over_console+0x13c/0x1c8) [<c060a2b0>] (do_take_over_console) from [<c05b90e0>] (do_fbcon_takeover+0x74/0xcc) [<c05b90e0>] (do_fbcon_takeover) from [<c05b38f0>] (register_framebuffer+0x1c8/0x2d8) [<c05b38f0>] (register_framebuffer) from [<c06524a4>] (__drm_fb_helper_initial_config_and_unlock+0x440/0x65c) [<c06524a4>] (__drm_fb_helper_initial_config_and_unlock) from [<c063dfbc>] (drm_kms_helper_hotplug_event+0x24/0x30) [<c063dfbc>] (drm_kms_helper_hotplug_event) from [<c0690fb8>] (exynos_dsi_host_attach+0x170/0x2a4) [<c0690fb8>] (exynos_dsi_host_attach) from [<c069d064>] (tc358764_probe+0xe8/0x160) [<c069d064>] (tc358764_probe) from [<c06b6fb0>] (really_probe+0x190/0x450) [<c06b6fb0>] (really_probe) from [<c06b7314>] (__driver_probe_device+0xa4/0x204) [<c06b7314>] (__driver_probe_device) from [<c06b74a8>] (driver_probe_device+0x34/0xd4) [<c06b74a8>] (driver_probe_device) from [<c06b7884>] (__device_attach_driver+0xb0/0x11c) [<c06b7884>] (__device_attach_driver) from [<c06b5094>] (bus_for_each_drv+0x70/0xb4) [<c06b5094>] (bus_for_each_drv) from [<c06b6d80>] (__device_attach+0xe0/0x178) [<c06b6d80>] (__device_attach) from [<c06b5e0c>] (bus_probe_device+0x88/0x90) [<c06b5e0c>] (bus_probe_device) from [<c06b632c>] (deferred_probe_work_func+0x4c/0xe8) [<c06b632c>] (deferred_probe_work_func) from [<c0148990>] (process_one_work+0x2c8/0x7ec) [<c0148990>] (process_one_work) from [<c0148f04>] (worker_thread+0x50/0x584) [<c0148f04>] (worker_thread) from [<c0151300>] (kthread+0x13c/0x19c) [<c0151300>] (kthread) from [<c0100108>] (ret_from_fork+0x14/0x2c) Exception stack(0xc1cc1fb0 to 0xc1cc1ff8) 1fa0: 00000000 00000000 00000000 00000000 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 irq event stamp: 24321 hardirqs last enabled at (24327): [<c01a3b94>] vprintk_emit+0x270/0x2b4 hardirqs last disabled at (24332): [<c01a3b50>] vprintk_emit+0x22c/0x2b4 softirqs last enabled at (21880): [<c01016fc>] __do_softirq+0x4cc/0x5ec softirqs last disabled at (21875): [<c01301c8>] irq_exit+0x1cc/0x200 ---[ end trace 0fa33551718d6680 ]--- ------------[ cut here ]------------ WARNING: CPU: 0 PID: 7 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x60/0x68 Modules linked in: CPU: 0 PID: 7 Comm: kworker/u4:0 Tainted: G W 5.16.0-rc5-next-20211213-00001-gac4117943791 #11072 Hardware name: Samsung Exynos (Flattened Device Tree) Workqueue: events_unbound deferred_probe_work_func [<c01110d0>] (unwind_backtrace) from [<c010cab0>] (show_stack+0x10/0x14) [<c010cab0>] (show_stack) from [<c0b71b58>] (dump_stack_lvl+0x58/0x70) [<c0b71b58>] (dump_stack_lvl) from [<c0126c9c>] (__warn+0x228/0x22c) [<c0126c9c>] (__warn) from [<c0126d4c>] (warn_slowpath_fmt+0xac/0xb4) [<c0126d4c>] (warn_slowpath_fmt) from [<c064e844>] (drm_atomic_helper_connector_duplicate_state+0x60/0x68) [<c064e844>] (drm_atomic_helper_connector_duplicate_state) from [<c06685f4>] (drm_atomic_get_connector_state+0xd8/0x190) [<c06685f4>] (drm_atomic_get_connector_state) from [<c066960c>] (__drm_atomic_helper_set_config+0x2a0/0x368) [<c066960c>] (__drm_atomic_helper_set_config) from [<c0680a20>] (drm_client_modeset_commit_atomic+0x178/0x27c) [<c0680a20>] (drm_client_modeset_commit_atomic) from [<c0680be0>] (drm_client_modeset_commit_locked+0x48/0x1d0) [<c0680be0>] (drm_client_modeset_commit_locked) from [<c0651c60>] (drm_fb_helper_pan_display+0x90/0x1c4) [<c0651c60>] (drm_fb_helper_pan_display) from [<c05b2ab0>] (fb_pan_display+0xcc/0x138) [<c05b2ab0>] (fb_pan_display) from [<c05bd024>] (bit_update_start+0x14/0x30) [<c05bd024>] (bit_update_start) from [<c05bac30>] (fbcon_switch+0x2d0/0x3e4) [<c05bac30>] (fbcon_switch) from [<c0609afc>] (redraw_screen+0x15c/0x22c) [<c0609afc>] (redraw_screen) from [<c05ba7e4>] (fbcon_prepare_logo+0x2d4/0x450) [<c05ba7e4>] (fbcon_prepare_logo) from [<c05bbe50>] (fbcon_init+0x3b4/0x510) [<c05bbe50>] (fbcon_init) from [<c0608b50>] (visual_init+0xc0/0x108) [<c0608b50>] (visual_init) from [<c0609d78>] (do_bind_con_driver+0x1ac/0x388) [<c0609d78>] (do_bind_con_driver) from [<c060a2b0>] (do_take_over_console+0x13c/0x1c8) [<c060a2b0>] (do_take_over_console) from [<c05b90e0>] (do_fbcon_takeover+0x74/0xcc) [<c05b90e0>] (do_fbcon_takeover) from [<c05b38f0>] (register_framebuffer+0x1c8/0x2d8) [<c05b38f0>] (register_framebuffer) from [<c06524a4>] (__drm_fb_helper_initial_config_and_unlock+0x440/0x65c) [<c06524a4>] (__drm_fb_helper_initial_config_and_unlock) from [<c063dfbc>] (drm_kms_helper_hotplug_event+0x24/0x30) [<c063dfbc>] (drm_kms_helper_hotplug_event) from [<c0690fb8>] (exynos_dsi_host_attach+0x170/0x2a4) [<c0690fb8>] (exynos_dsi_host_attach) from [<c069d064>] (tc358764_probe+0xe8/0x160) [<c069d064>] (tc358764_probe) from [<c06b6fb0>] (really_probe+0x190/0x450) [<c06b6fb0>] (really_probe) from [<c06b7314>] (__driver_probe_device+0xa4/0x204) [<c06b7314>] (__driver_probe_device) from [<c06b74a8>] (driver_probe_device+0x34/0xd4) [<c06b74a8>] (driver_probe_device) from [<c06b7884>] (__device_attach_driver+0xb0/0x11c) [<c06b7884>] (__device_attach_driver) from [<c06b5094>] (bus_for_each_drv+0x70/0xb4) [<c06b5094>] (bus_for_each_drv) from [<c06b6d80>] (__device_attach+0xe0/0x178) [<c06b6d80>] (__device_attach) from [<c06b5e0c>] (bus_probe_device+0x88/0x90) [<c06b5e0c>] (bus_probe_device) from [<c06b632c>] (deferred_probe_work_func+0x4c/0xe8) [<c06b632c>] (deferred_probe_work_func) from [<c0148990>] (process_one_work+0x2c8/0x7ec) [<c0148990>] (process_one_work) from [<c0148f04>] (worker_thread+0x50/0x584) [<c0148f04>] (worker_thread) from [<c0151300>] (kthread+0x13c/0x19c) [<c0151300>] (kthread) from [<c0100108>] (ret_from_fork+0x14/0x2c) Exception stack(0xc1cc1fb0 to 0xc1cc1ff8) 1fa0: 00000000 00000000 00000000 00000000 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 irq event stamp: 24393 hardirqs last enabled at (24399): [<c01a3b94>] vprintk_emit+0x270/0x2b4 hardirqs last disabled at (24404): [<c01a3b50>] vprintk_emit+0x22c/0x2b4 softirqs last enabled at (21880): [<c01016fc>] __do_softirq+0x4cc/0x5ec softirqs last disabled at (21875): [<c01301c8>] irq_exit+0x1cc/0x200 ---[ end trace 0fa33551718d6681 ]--- Console: switching to colour frame buffer device 146x42 ------------[ cut here ]------------ WARNING: CPU: 0 PID: 7 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x60/0x68 Modules linked in: CPU: 0 PID: 7 Comm: kworker/u4:0 Tainted: G W 5.16.0-rc5-next-20211213-00001-gac4117943791 #11072 Hardware name: Samsung Exynos (Flattened Device Tree) Workqueue: events_unbound deferred_probe_work_func [<c01110d0>] (unwind_backtrace) from [<c010cab0>] (show_stack+0x10/0x14) [<c010cab0>] (show_stack) from [<c0b71b58>] (dump_stack_lvl+0x58/0x70) [<c0b71b58>] (dump_stack_lvl) from [<c0126c9c>] (__warn+0x228/0x22c) [<c0126c9c>] (__warn) from [<c0126d4c>] (warn_slowpath_fmt+0xac/0xb4) [<c0126d4c>] (warn_slowpath_fmt) from [<c064e844>] (drm_atomic_helper_connector_duplicate_state+0x60/0x68) [<c064e844>] (drm_atomic_helper_connector_duplicate_state) from [<c06685f4>] (drm_atomic_get_connector_state+0xd8/0x190) [<c06685f4>] (drm_atomic_get_connector_state) from [<c066960c>] (__drm_atomic_helper_set_config+0x2a0/0x368) [<c066960c>] (__drm_atomic_helper_set_config) from [<c0680a20>] (drm_client_modeset_commit_atomic+0x178/0x27c) [<c0680a20>] (drm_client_modeset_commit_atomic) from [<c0680be0>] (drm_client_modeset_commit_locked+0x48/0x1d0) [<c0680be0>] (drm_client_modeset_commit_locked) from [<c0651c60>] (drm_fb_helper_pan_display+0x90/0x1c4) [<c0651c60>] (drm_fb_helper_pan_display) from [<c05b2ab0>] (fb_pan_display+0xcc/0x138) [<c05b2ab0>] (fb_pan_display) from [<c05bd024>] (bit_update_start+0x14/0x30) [<c05bd024>] (bit_update_start) from [<c05bac30>] (fbcon_switch+0x2d0/0x3e4) [<c05bac30>] (fbcon_switch) from [<c0609afc>] (redraw_screen+0x15c/0x22c) [<c0609afc>] (redraw_screen) from [<c0609e84>] (do_bind_con_driver+0x2b8/0x388) [<c0609e84>] (do_bind_con_driver) from [<c060a2b0>] (do_take_over_console+0x13c/0x1c8) [<c060a2b0>] (do_take_over_console) from [<c05b90e0>] (do_fbcon_takeover+0x74/0xcc) [<c05b90e0>] (do_fbcon_takeover) from [<c05b38f0>] (register_framebuffer+0x1c8/0x2d8) [<c05b38f0>] (register_framebuffer) from [<c06524a4>] (__drm_fb_helper_initial_config_and_unlock+0x440/0x65c) [<c06524a4>] (__drm_fb_helper_initial_config_and_unlock) from [<c063dfbc>] (drm_kms_helper_hotplug_event+0x24/0x30) [<c063dfbc>] (drm_kms_helper_hotplug_event) from [<c0690fb8>] (exynos_dsi_host_attach+0x170/0x2a4) [<c0690fb8>] (exynos_dsi_host_attach) from [<c069d064>] (tc358764_probe+0xe8/0x160) [<c069d064>] (tc358764_probe) from [<c06b6fb0>] (really_probe+0x190/0x450) [<c06b6fb0>] (really_probe) from [<c06b7314>] (__driver_probe_device+0xa4/0x204) [<c06b7314>] (__driver_probe_device) from [<c06b74a8>] (driver_probe_device+0x34/0xd4) [<c06b74a8>] (driver_probe_device) from [<c06b7884>] (__device_attach_driver+0xb0/0x11c) [<c06b7884>] (__device_attach_driver) from [<c06b5094>] (bus_for_each_drv+0x70/0xb4) [<c06b5094>] (bus_for_each_drv) from [<c06b6d80>] (__device_attach+0xe0/0x178) [<c06b6d80>] (__device_attach) from [<c06b5e0c>] (bus_probe_device+0x88/0x90) [<c06b5e0c>] (bus_probe_device) from [<c06b632c>] (deferred_probe_work_func+0x4c/0xe8) [<c06b632c>] (deferred_probe_work_func) from [<c0148990>] (process_one_work+0x2c8/0x7ec) [<c0148990>] (process_one_work) from [<c0148f04>] (worker_thread+0x50/0x584) [<c0148f04>] (worker_thread) from [<c0151300>] (kthread+0x13c/0x19c) [<c0151300>] (kthread) from [<c0100108>] (ret_from_fork+0x14/0x2c) Exception stack(0xc1cc1fb0 to 0xc1cc1ff8) 1fa0: 00000000 00000000 00000000 00000000 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 irq event stamp: 24477 hardirqs last enabled at (24483): [<c01a3b94>] vprintk_emit+0x270/0x2b4 hardirqs last disabled at (24488): [<c01a3b50>] vprintk_emit+0x22c/0x2b4 softirqs last enabled at (21880): [<c01016fc>] __do_softirq+0x4cc/0x5ec softirqs last disabled at (21875): [<c01301c8>] irq_exit+0x1cc/0x200 ---[ end trace 0fa33551718d6682 ]---
Again, there is something wrong with connector registration:
# ./modetest -C -Mexynos [ 69.085387] ------------[ cut here ]------------ [ 69.088593] WARNING: CPU: 1 PID: 1299 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x60/0x68 [ 69.101211] Modules linked in: s5p_mfc exynos_gsc v4l2_mem2mem videobuf2_dma_contig videobuf2_memops videobuf2_v4l2 videobuf2_common videodev mc [ 69.114158] CPU: 1 PID: 1299 Comm: modetest Tainted: G W 5.16.0-rc5-next-20211213-00002-ga010c46089fa #11073 [ 69.125201] Hardware name: Samsung Exynos (Flattened Device Tree) [ 69.131279] [<c01110d0>] (unwind_backtrace) from [<c010cab0>] (show_stack+0x10/0x14) [ 69.139002] [<c010cab0>] (show_stack) from [<c0b71c00>] (dump_stack_lvl+0x58/0x70) [ 69.146554] [<c0b71c00>] (dump_stack_lvl) from [<c0126c9c>] (__warn+0x228/0x22c) [ 69.153932] [<c0126c9c>] (__warn) from [<c0126d4c>] (warn_slowpath_fmt+0xac/0xb4) [ 69.161396] [<c0126d4c>] (warn_slowpath_fmt) from [<c064e844>] (drm_atomic_helper_connector_duplicate_state+0x60/0x68) [ 69.172074] [<c064e844>] (drm_atomic_helper_connector_duplicate_state) from [<c06685f4>] (drm_atomic_get_connector_state+0xd8/0x190) [ 69.183966] [<c06685f4>] (drm_atomic_get_connector_state) from [<c066960c>] (__drm_atomic_helper_set_config+0x2a0/0x368) [ 69.194814] [<c066960c>] (__drm_atomic_helper_set_config) from [<c0680a20>] (drm_client_modeset_commit_atomic+0x178/0x27c) [ 69.205839] [<c0680a20>] (drm_client_modeset_commit_atomic) from [<c0680be0>] (drm_client_modeset_commit_locked+0x48/0x1d0) [ 69.216949] [<c0680be0>] (drm_client_modeset_commit_locked) from [<c0680d8c>] (drm_client_modeset_commit+0x24/0x40) [ 69.227364] [<c0680d8c>] (drm_client_modeset_commit) from [<c0652a94>] (__drm_fb_helper_restore_fbdev_mode_unlocked+0x64/0xc8) [ 69.238735] [<c0652a94>] (__drm_fb_helper_restore_fbdev_mode_unlocked) from [<c0655ec8>] (drm_lastclose+0x30/0x4c) [ 69.249065] [<c0655ec8>] (drm_lastclose) from [<c0655ff4>] (drm_release+0x110/0x114) [ 69.256789] [<c0655ff4>] (drm_release) from [<c02e6058>] (__fput+0x88/0x258) [ 69.263821] [<c02e6058>] (__fput) from [<c014df0c>] (task_work_run+0x8c/0xc8) [ 69.270939] [<c014df0c>] (task_work_run) from [<c010c30c>] (do_work_pending+0x534/0x63c) [ 69.279010] [<c010c30c>] (do_work_pending) from [<c0100088>] (slow_work_pending+0xc/0x20) [ 69.287169] Exception stack(0xc3e4bfb0 to 0xc3e4bff8) [ 69.292205] bfa0: 00000000 0000001f e4a15400 00000000 [ 69.300364] bfc0: 00000001 00000003 00000000 00000006 00022188 00000000 b6f2c000 00000000 [ 69.308523] bfe0: b6e2daa0 bee27a98 0000e7c4 b6e2dac0 60000010 00000003 [ 69.315292] irq event stamp: 3229 [ 69.318419] hardirqs last enabled at (3237): [<c01a0cfc>] __up_console_sem+0x50/0x60 [ 69.326275] hardirqs last disabled at (3252): [<c01a0ce8>] __up_console_sem+0x3c/0x60 [ 69.334076] softirqs last enabled at (3250): [<c01016fc>] __do_softirq+0x4cc/0x5ec [ 69.341680] softirqs last disabled at (3245): [<c01301c8>] irq_exit+0x1cc/0x200 [ 69.349066] ---[ end trace ab79782cf462efca ]--- could not get [ 69.355098] ------------[ cut here ]------------ [ 69.359389] WARNING: CPU: 1 PID: 1299 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x60/0x68 [ 69.372111] Modules linked in: s5p_mfc exynos_gsc v4l2_mem2mem videobuf2_dma_contig videobuf2_memops videobuf2_v4l2 videobuf2_common videodev mc [ 69.384964] CPU: 1 PID: 1299 Comm: modetest Tainted: G W 5.16.0-rc5-next-20211213-00002-ga010c46089fa #11073 [ 69.396017] Hardware name: Samsung Exynos (Flattened Device Tree) [ 69.402094] [<c01110d0>] (unwind_backtrace) from [<c010cab0>] (show_stack+0x10/0x14) [ 69.409818] [<c010cab0>] (show_stack) from [<c0b71c00>] (dump_stack_lvl+0x58/0x70) [ 69.417370] [<c0b71c00>] (dump_stack_lvl) from [<c0126c9c>] (__warn+0x228/0x22c) [ 69.424748] [<c0126c9c>] (__warn) from [<c0126d4c>] (warn_slowpath_fmt+0xac/0xb4) [ 69.432213] [<c0126d4c>] (warn_slowpath_fmt) from [<c064e844>] (drm_atomic_helper_connector_duplicate_state+0x60/0x68) [ 69.442889] [<c064e844>] (drm_atomic_helper_connector_duplicate_state) from [<c06685f4>] (drm_atomic_get_connector_state+0xd8/0x190) [ 69.454781] [<c06685f4>] (drm_atomic_get_connector_state) from [<c066960c>] (__drm_atomic_helper_set_config+0x2a0/0x368) [ 69.465630] [<c066960c>] (__drm_atomic_helper_set_config) from [<c0680a20>] (drm_client_modeset_commit_atomic+0x178/0x27c) [ 69.476654] [<c0680a20>] (drm_client_modeset_commit_atomic) from [<c0680be0>] (drm_client_modeset_commit_locked+0x48/0x1d0) [ 69.487764] [<c0680be0>] (drm_client_modeset_commit_locked) from [<c0680d8c>] (drm_client_modeset_commit+0x24/0x40) [ 69.498181] [<c0680d8c>] (drm_client_modeset_commit) from [<c0652a94>] (__drm_fb_helper_restore_fbdev_mode_unlocked+0x64/0xc8) [ 69.509551] [<c0652a94>] (__drm_fb_helper_restore_fbdev_mode_unlocked) from [<c0655ec8>] (drm_lastclose+0x30/0x4c) [ 69.519881] [<c0655ec8>] (drm_lastclose) from [<c0655ff4>] (drm_release+0x110/0x114) [ 69.527605] [<c0655ff4>] (drm_release) from [<c02e6058>] (__fput+0x88/0x258) [ 69.534636] [<c02e6058>] (__fput) from [<c014df0c>] (task_work_run+0x8c/0xc8) [ 69.541754] [<c014df0c>] (task_work_run) from [<c012cb20>] (do_exit+0x3f8/0xc1c) [ 69.549133] [<c012cb20>] (do_exit) from [<c012e6b8>] (do_group_exit+0x2c/0xa0) [ 69.556337] [<c012e6b8>] (do_group_exit) from [<c013d09c>] (get_signal+0x1d0/0xe6c) [ 69.563976] [<c013d09c>] (get_signal) from [<c010bef4>] (do_work_pending+0x11c/0x63c) [ 69.571786] [<c010bef4>] (do_work_pending) from [<c0100088>] (slow_work_pending+0xc/0x20) [ 69.579945] Exception stack(0xc3e4bfb0 to 0xc3e4bff8) [ 69.584982] bfa0: 00000008 0000005f 00000002 00023388 [ 69.593140] bfc0: 00000001 000232a8 00000000 00023398 0000003e 00000000 00023360 00000000 [ 69.601299] bfe0: 00023590 bee27ae8 00009ec0 00009e9c 80000010 ffffffff [ 69.608150] irq event stamp: 3691 [ 69.611237] hardirqs last enabled at (3703): [<c015a6b0>] finish_task_switch+0xc4/0x264 [ 69.619337] hardirqs last disabled at (3724): [<c01a0ce8>] __up_console_sem+0x3c/0x60 [ 69.627123] softirqs last enabled at (3722): [<c01016fc>] __do_softirq+0x4cc/0x5ec [ 69.634818] softirqs last disabled at (3711): [<c01301c8>] irq_exit+0x1cc/0x200 [ 69.642009] ---[ end trace ab79782cf462efcb ]--- connector 62: No such file or directory Segmentation fault
This reminds me a discussion from last year:
https://lore.kernel.org/all/f22146de-1660-035c-c476-f7b3354de7cb@samsung.com...
Best regards
On Wed, Dec 15, 2021 at 11:39 AM Marek Szyprowski m.szyprowski@samsung.com wrote:
Hi Jagan,
On 14.12.2021 11:47, Jagan Teki wrote:
On Mon, Dec 13, 2021 at 7:42 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
On 13.12.2021 14:56, Jagan Teki wrote:
On Mon, Dec 13, 2021 at 6:51 PM Marek Szyprowski m.szyprowski@samsung.com wrote:
On 13.12.2021 13:31, Jagan Teki wrote:
On Mon, Dec 13, 2021 at 5:42 PM Marek Szyprowski m.szyprowski@samsung.com wrote: > On 13.12.2021 13:08, Jagan Teki wrote: >> On Mon, Dec 13, 2021 at 5:34 PM Marek Szyprowski >> m.szyprowski@samsung.com wrote: >>> On 12.12.2021 19:14, Jagan Teki wrote: >>>> Updated series about drm bridge conversion of exynos dsi. >>>> >>>> Patch 1: panel checker >>>> >>>> Patch 2: panel_bridge API >>>> >>>> Patch 3: Bridge conversion >>>> >>>> Patch 4: pree_enable, post_disable >>>> >>>> Patch 5: Atomic functions >>>> >>>> Patch 6: atomic_set >>>> >>>> Patch 7: DSI init in enable >>>> >>>> [1] https://patchwork.kernel.org/project/dri-devel/cover/20211210191922.2367979-... >>>> >>>> Any inputs? >>> I've checked this patchset on Exynos based Trats2 board (the one with >>> simplest display pipeline: Exynos FIMD -> Exynos DSI -> s6e8aa0 DSI >>> panel). DRM stops working after the 2nd patch ("[PATCH v3 2/7] drm: >>> exynos: dsi: Use drm panel_bridge API"): >>> >>> > [...]
Thanks for testing it.
Can you test it on the downstream bridge, tc358764 and post the result?
There were 2 logs in my reply. One from trats2 board (just dsi panel) and one from arndale (tc bridge + simple panel).
Okay. Got it.
Can you test this tc358764 panel_bridge patch on linux-next? don't apply this series, apply only below patch and test.
Yes, sure. Sadly, it also breaks display operation:
OF: graph: no port node found in /soc/hdmi@14530000 [drm] Exynos DRM: using 14400000.fimd device for DMA mapping operations exynos-drm exynos-drm: bound 14400000.fimd (ops fimd_component_ops) exynos-drm exynos-drm: bound 14450000.mixer (ops mixer_component_ops) OF: graph: no port node found in /soc/dsi@14500000 exynos-drm exynos-drm: bound 14500000.dsi (ops exynos_dsi_component_ops) exynos-drm exynos-drm: bound 14530000.hdmi (ops hdmi_component_ops) exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes exynos-drm exynos-drm: [drm] Cannot find any crtc or sizes [drm] Initialized exynos 1.1.0 20180330 for exynos-drm on minor 0 panfrost 11800000.gpu: clock rate = 533000000 panfrost 11800000.gpu: mali-t600 id 0x600 major 0x0 minor 0x0 status 0x1 panfrost 11800000.gpu: features: 00000000,10206000, issues: 00000000,31b4dfff panfrost 11800000.gpu: Features: L2:0x07110206 Shader:0x00000000 Tiler:0x00000809 Mem:0x1 MMU:0x00002830 AS:0xf JS:0x7 panfrost 11800000.gpu: shader_present=0xf l2_present=0x1 [drm] Initialized panfrost 1.2.0 20180908 for 11800000.gpu on minor 1 ------------[ cut here ]------------ WARNING: CPU: 1 PID: 23 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x60/0x68 Modules linked in: CPU: 1 PID: 23 Comm: kworker/1:1 Not tainted 5.16.0-rc5-next-20211213-00001-gac4117943791 #11072 Hardware name: Samsung Exynos (Flattened Device Tree) Workqueue: events output_poll_execute [<c01110d0>] (unwind_backtrace) from [<c010cab0>] (show_stack+0x10/0x14) [<c010cab0>] (show_stack) from [<c0b71b58>] (dump_stack_lvl+0x58/0x70) [<c0b71b58>] (dump_stack_lvl) from [<c0126c9c>] (__warn+0x228/0x22c) [<c0126c9c>] (__warn) from [<c0126d4c>] (warn_slowpath_fmt+0xac/0xb4) [<c0126d4c>] (warn_slowpath_fmt) from [<c064e844>] (drm_atomic_helper_connector_duplicate_state+0x60/0x68) [<c064e844>] (drm_atomic_helper_connector_duplicate_state) from [<c06685f4>] (drm_atomic_get_connector_state+0xd8/0x190) [<c06685f4>] (drm_atomic_get_connector_state) from [<c066960c>] (__drm_atomic_helper_set_config+0x2a0/0x368) [<c066960c>] (__drm_atomic_helper_set_config) from [<c0680a20>] (drm_client_modeset_commit_atomic+0x178/0x27c) [<c0680a20>] (drm_client_modeset_commit_atomic) from [<c0680be0>] (drm_client_modeset_commit_locked+0x48/0x1d0) [<c0680be0>] (drm_client_modeset_commit_locked) from [<c0680d8c>] (drm_client_modeset_commit+0x24/0x40) [<c0680d8c>] (drm_client_modeset_commit) from [<c0652a94>] (__drm_fb_helper_restore_fbdev_mode_unlocked+0x64/0xc8) [<c0652a94>] (__drm_fb_helper_restore_fbdev_mode_unlocked) from [<c0652b60>] (drm_fb_helper_set_par+0x38/0x64) [<c0652b60>] (drm_fb_helper_set_par) from [<c0652c34>] (drm_fb_helper_hotplug_event.part.5+0xa8/0xc0) [<c0652c34>] (drm_fb_helper_hotplug_event.part.5) from [<c063dfbc>] (drm_kms_helper_hotplug_event+0x24/0x30) [<c063dfbc>] (drm_kms_helper_hotplug_event) from [<c063e210>] (output_poll_execute+0x1ec/0x204) [<c063e210>] (output_poll_execute) from [<c0148990>] (process_one_work+0x2c8/0x7ec) [<c0148990>] (process_one_work) from [<c0148f04>] (worker_thread+0x50/0x584) [<c0148f04>] (worker_thread) from [<c0151300>] (kthread+0x13c/0x19c) [<c0151300>] (kthread) from [<c0100108>] (ret_from_fork+0x14/0x2c) Exception stack(0xc1d35fb0 to 0xc1d35ff8) 5fa0: 00000000 00000000 00000000 00000000 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000 irq event stamp: 1287 hardirqs last enabled at (1293): [<c01a3b94>] vprintk_emit+0x270/0x2b4 hardirqs last disabled at (1298): [<c01a3b50>] vprintk_emit+0x22c/0x2b4 softirqs last enabled at (1260): [<c01016fc>] __do_softirq+0x4cc/0x5ec softirqs last disabled at (1255): [<c01301c8>] irq_exit+0x1cc/0x200 ---[ end trace 0fa33551718d667f ]--- ------------[ cut here ]------------ WARNING: CPU: 0 PID: 7 at drivers/gpu/drm/drm_atomic_state_helper.c:494 drm_atomic_helper_connector_duplicate_state+0x60/0x68 Modules linked in: CPU: 0 PID: 7 Comm: kworker/u4:0 Tainted: G W 5.16.0-rc5-next-20211213-00001-gac4117943791 #11072 Hardware name: Samsung Exynos (Flattened Device Tree) Workqueue: events_unbound deferred_probe_work_func [<c01110d0>] (unwind_backtrace) from [<c010cab0>] (show_stack+0x10/0x14) [<c010cab0>] (show_stack) from [<c0b71b58>] (dump_stack_lvl+0x58/0x70) [<c0b71b58>] (dump_stack_lvl) from [<c0126c9c>] (__warn+0x228/0x22c) [<c0126c9c>] (__warn) from [<c0126d4c>] (warn_slowpath_fmt+0xac/0xb4) [<c0126d4c>] (warn_slowpath_fmt) from [<c064e844>] (drm_atomic_helper_connector_duplicate_state+0x60/0x68) [<c064e844>] (drm_atomic_helper_connector_duplicate_state) from [<c06685f4>] (drm_atomic_get_connector_state+0xd8/0x190) [<c06685f4>] (drm_atomic_get_connector_state) from [<c066960c>] (__drm_atomic_helper_set_config+0x2a0/0x368) [<c066960c>] (__drm_atomic_helper_set_config) from [<c0680a20>] (drm_client_modeset_commit_atomic+0x178/0x27c) [<c0680a20>] (drm_client_modeset_commit_atomic) from [<c0680be0>] (drm_client_modeset_commit_locked+0x48/0x1d0) [<c0680be0>] (drm_client_modeset_commit_locked) from [<c0680d8c>] (drm_client_modeset_commit+0x24/0x40) [<c0680d8c>] (drm_client_modeset_commit) from [<c0652a94>] (__drm_fb_helper_restore_fbdev_mode_unlocked+0x64/0xc8) [<c0652a94>] (__drm_fb_helper_restore_fbdev_mode_unlocked) from [<c0652b60>] (drm_fb_helper_set_par+0x38/0x64) [<c0652b60>] (drm_fb_helper_set_par) from [<c05bbf28>] (fbcon_init+0x48c/0x510) [<c05bbf28>] (fbcon_init) from [<c0608b50>] (visual_init+0xc0/0x108) [<c0608b50>] (visual_init) from [<c0609d78>] (do_bind_con_driver+0x1ac/0x388) [<c0609d78>] (do_bind_con_driver) from [<c060a2b0>] (do_take_over_console+0x13c/0x1c8) [<c060a2b0>] (do_take_over_console) from [<c05b90e0>] (do_fbcon_takeover+0x74/0xcc) [<c05b90e0>] (do_fbcon_takeover) from [<c05b38f0>] (register_framebuffer+0x1c8/0x2d8) [<c05b38f0>] (register_framebuffer) from [<c06524a4>] (__drm_fb_helper_initial_config_and_unlock+0x440/0x65c) [<c06524a4>] (__drm_fb_helper_initial_config_and_unlock) from [<c063dfbc>] (drm_kms_helper_hotplug_event+0x24/0x30) [<c063dfbc>] (drm_kms_helper_hotplug_event) from [<c0690fb8>] (exynos_dsi_host_attach+0x170/0x2a4)
I think I understand the issue. Please wait for next version patches.
Thanks, Jagan.
dri-devel@lists.freedesktop.org