Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1614444 > unrolled thread
| Started by | Jeffy Chen <jeffy.chen@rock-chips.com> |
|---|---|
| First post | 2017-04-01 12:50 +0200 |
| Last post | 2017-04-01 12:50 +0200 |
| Articles | 7 — 1 participant |
Back to article view | Back to linux.kernel
[PATCH 0/9] drm: rockchip: Fix rockchip drm unbind crash error Jeffy Chen <jeffy.chen@rock-chips.com> - 2017-04-01 12:50 +0200
[PATCH 8/9] drm/rockchip: gem: Don't alloc/free gem buf before drm dev registered Jeffy Chen <jeffy.chen@rock-chips.com> - 2017-04-01 12:50 +0200
[PATCH 1/9] drm: bridge: analogix: Detach panel when unbinding analogix dp Jeffy Chen <jeffy.chen@rock-chips.com> - 2017-04-01 12:50 +0200
[PATCH 7/9] drm/rockchip: Force disable all crtc when unload Jeffy Chen <jeffy.chen@rock-chips.com> - 2017-04-01 12:50 +0200
[PATCH 9/9] drm/rockchip: cdn-dp: Don't unregister audio dev when unbinding Jeffy Chen <jeffy.chen@rock-chips.com> - 2017-04-01 12:50 +0200
[PATCH 4/9] drm/rockchip: cdn-dp: Don't try to release firmware when not loaded Jeffy Chen <jeffy.chen@rock-chips.com> - 2017-04-01 12:50 +0200
[PATCH 6/9] drm/rockchip: Reoder unload sequence Jeffy Chen <jeffy.chen@rock-chips.com> - 2017-04-01 12:50 +0200
| From | Jeffy Chen <jeffy.chen@rock-chips.com> |
|---|---|
| Date | 2017-04-01 12:50 +0200 |
| Subject | [PATCH 0/9] drm: rockchip: Fix rockchip drm unbind crash error |
| Message-ID | <troLv-1qN-9@gated-at.bofh.it> |
Verified on rk3399 chromebook kevin: 1/ stop ui && pkill -9 frecon 2/ unbind/bind drm Jeffy Chen (9): drm: bridge: analogix: Detach panel when unbinding analogix dp drm: bridge: analogix: Unregister dp aux when unbinding drm: bridge: analogix: Destroy connector when unbinding drm/rockchip: cdn-dp: Don't try to release firmware when not loaded drm/rockchip: vop: Enable pm domain when resetting vop drm/rockchip: Reoder unload sequence drm/rockchip: Force disable all crtc when unload drm/rockchip: gem: Don't alloc/free gem buf before drm dev registered drm/rockchip: cdn-dp: Don't unregister audio dev when unbinding drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 4 +++ drivers/gpu/drm/rockchip/cdn-dp-core.c | 10 ++++--- drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 7 +++-- drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 8 ++++++ drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 31 +++++++++++++++------- 5 files changed, 44 insertions(+), 16 deletions(-) -- 2.1.4
[toc] | [next] | [standalone]
| From | Jeffy Chen <jeffy.chen@rock-chips.com> |
|---|---|
| Date | 2017-04-01 12:50 +0200 |
| Subject | [PATCH 8/9] drm/rockchip: gem: Don't alloc/free gem buf before drm dev registered |
| Message-ID | <troLw-1qN-25@gated-at.bofh.it> |
| In reply to | #1614444 |
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
---
drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
index df9e570..19679b2 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
@@ -184,6 +184,9 @@ static int rockchip_gem_alloc_buf(struct rockchip_gem_object *rk_obj,
struct drm_device *drm = obj->dev;
struct rockchip_drm_private *private = drm->dev_private;
+ if (!drm->registered)
+ return;
+
if (private->domain)
return rockchip_gem_alloc_iommu(rk_obj, alloc_kmap);
else
@@ -208,6 +211,11 @@ static void rockchip_gem_free_dma(struct rockchip_gem_object *rk_obj)
static void rockchip_gem_free_buf(struct rockchip_gem_object *rk_obj)
{
+ struct drm_device *drm = rk_obj->base.dev;
+
+ if (!drm->registered)
+ return;
+
if (rk_obj->pages)
rockchip_gem_free_iommu(rk_obj);
else
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Jeffy Chen <jeffy.chen@rock-chips.com> |
|---|---|
| Date | 2017-04-01 12:50 +0200 |
| Subject | [PATCH 1/9] drm: bridge: analogix: Detach panel when unbinding analogix dp |
| Message-ID | <troLv-1qN-15@gated-at.bofh.it> |
| In reply to | #1614444 |
The panel is attached when binding analogix dp.
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
---
drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
index e7cd105..a3db290 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
@@ -1443,6 +1443,8 @@ void analogix_dp_unbind(struct device *dev, struct device *master,
if (dp->plat_data->panel) {
if (drm_panel_unprepare(dp->plat_data->panel))
DRM_ERROR("failed to turnoff the panel\n");
+ if (drm_panel_detach(dp->plat_data->panel))
+ DRM_ERROR("failed to detach the panel\n");
}
pm_runtime_disable(dev);
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Jeffy Chen <jeffy.chen@rock-chips.com> |
|---|---|
| Date | 2017-04-01 12:50 +0200 |
| Subject | [PATCH 7/9] drm/rockchip: Force disable all crtc when unload |
| Message-ID | <troLv-1qN-17@gated-at.bofh.it> |
| In reply to | #1614444 |
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> --- drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c index a5d83cb..5dbf011 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c @@ -246,6 +246,7 @@ static void rockchip_drm_unbind(struct device *dev) rockchip_drm_fbdev_fini(drm_dev); drm_kms_helper_poll_fini(drm_dev); + drm_crtc_force_disable_all(drm_dev); drm_vblank_cleanup(drm_dev); component_unbind_all(dev, drm_dev); drm_mode_config_cleanup(drm_dev); -- 2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Jeffy Chen <jeffy.chen@rock-chips.com> |
|---|---|
| Date | 2017-04-01 12:50 +0200 |
| Subject | [PATCH 9/9] drm/rockchip: cdn-dp: Don't unregister audio dev when unbinding |
| Message-ID | <troLw-1qN-29@gated-at.bofh.it> |
| In reply to | #1614444 |
In current sound framework, there's no way to unbind dai link after
unregister codec.
So don't unregister the codec when unbinding for now.
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
---
drivers/gpu/drm/rockchip/cdn-dp-core.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.c b/drivers/gpu/drm/rockchip/cdn-dp-core.c
index a97f3f4..1deab9f 100644
--- a/drivers/gpu/drm/rockchip/cdn-dp-core.c
+++ b/drivers/gpu/drm/rockchip/cdn-dp-core.c
@@ -1091,8 +1091,6 @@ static int cdn_dp_bind(struct device *dev, struct device *master, void *data)
goto err_free_connector;
}
- cdn_dp_audio_codec_init(dp, dev);
-
for (i = 0; i < dp->ports; i++) {
port = dp->port[i];
@@ -1127,7 +1125,6 @@ static void cdn_dp_unbind(struct device *dev, struct device *master, void *data)
struct drm_connector *connector = &dp->connector;
cancel_work_sync(&dp->event_work);
- platform_device_unregister(dp->audio_pdev);
cdn_dp_encoder_disable(encoder);
encoder->funcs->destroy(encoder);
connector->funcs->destroy(connector);
@@ -1220,6 +1217,8 @@ static int cdn_dp_probe(struct platform_device *pdev)
mutex_init(&dp->lock);
dev_set_drvdata(dev, dp);
+ cdn_dp_audio_codec_init(dp, dev);
+
return component_add(dev, &cdn_dp_component_ops);
}
@@ -1227,6 +1226,7 @@ static int cdn_dp_remove(struct platform_device *pdev)
{
struct cdn_dp_device *dp = platform_get_drvdata(pdev);
+ platform_device_unregister(dp->audio_pdev);
cdn_dp_suspend(dp->dev);
component_del(&pdev->dev, &cdn_dp_component_ops);
--
2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Jeffy Chen <jeffy.chen@rock-chips.com> |
|---|---|
| Date | 2017-04-01 12:50 +0200 |
| Subject | [PATCH 4/9] drm/rockchip: cdn-dp: Don't try to release firmware when not loaded |
| Message-ID | <troLw-1qN-23@gated-at.bofh.it> |
| In reply to | #1614444 |
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> --- drivers/gpu/drm/rockchip/cdn-dp-core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.c b/drivers/gpu/drm/rockchip/cdn-dp-core.c index fd79a70..a97f3f4 100644 --- a/drivers/gpu/drm/rockchip/cdn-dp-core.c +++ b/drivers/gpu/drm/rockchip/cdn-dp-core.c @@ -1052,6 +1052,7 @@ static int cdn_dp_bind(struct device *dev, struct device *master, void *data) dp->connected = false; dp->active = false; dp->active_port = -1; + dp->fw_loaded = false; INIT_WORK(&dp->event_work, cdn_dp_pd_event_work); @@ -1132,7 +1133,8 @@ static void cdn_dp_unbind(struct device *dev, struct device *master, void *data) connector->funcs->destroy(connector); pm_runtime_disable(dev); - release_firmware(dp->fw); + if (dp->fw_loaded) + release_firmware(dp->fw); kfree(dp->edid); dp->edid = NULL; } -- 2.1.4
[toc] | [prev] | [next] | [standalone]
| From | Jeffy Chen <jeffy.chen@rock-chips.com> |
|---|---|
| Date | 2017-04-01 12:50 +0200 |
| Subject | [PATCH 6/9] drm/rockchip: Reoder unload sequence |
| Message-ID | <troLw-1qN-31@gated-at.bofh.it> |
| In reply to | #1614444 |
We should don't cleanup iommu before cleanup other resources. Reorder unload sequence, follow exynos drm. Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> --- drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c index b360e62..a5d83cb 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c @@ -244,11 +244,13 @@ static void rockchip_drm_unbind(struct device *dev) struct drm_device *drm_dev = dev_get_drvdata(dev); rockchip_drm_fbdev_fini(drm_dev); - drm_vblank_cleanup(drm_dev); drm_kms_helper_poll_fini(drm_dev); + + drm_vblank_cleanup(drm_dev); component_unbind_all(dev, drm_dev); - rockchip_iommu_cleanup(drm_dev); drm_mode_config_cleanup(drm_dev); + rockchip_iommu_cleanup(drm_dev); + drm_dev->dev_private = NULL; drm_dev_unregister(drm_dev); drm_dev_unref(drm_dev); -- 2.1.4
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web