* [PATCH v2 0/7] drm/exynos: more cleanup with super device support
@ 2014-04-01 12:37 Inki Dae
2014-04-03 7:43 ` Andrzej Hajda
0 siblings, 1 reply; 4+ messages in thread
From: Inki Dae @ 2014-04-01 12:37 UTC (permalink / raw)
To: airlied, dri-devel; +Cc: a.hajda, kyungmin.park
This patch series cleans up exynos drm framework and kms sub drivers
using the component framework[1].
And this patch series had been posted for RFC[2].
Thanks,
Inki Dae
[1] http://lists.freedesktop.org/archives/dri-devel/2014-January/051249.html
[2] http://comments.gmane.org/gmane.comp.video.dri.devel/101200
Inki Dae (7):
drm/exynos: add super device support
drm/exynos: dpi: fix hotplug fail issue
drm/exynos: register platform driver at each kms sub drivers
ARM: dts: exynos4210-universal: add super device node for exynos drm
ARM: dts: exynos4210-trats: add super device node for exynos drm
ARM: dts: exynos4412-trats2: add super device node for exynos drm
exynos/drm: add DT bindings
.../bindings/drm/exynos/samsung-exynos-drm.txt | 32 +++
arch/arm/boot/dts/exynos4210-trats.dts | 5 +
arch/arm/boot/dts/exynos4210-universal_c210.dts | 5 +
arch/arm/boot/dts/exynos4412-trats2.dts | 5 +
drivers/gpu/drm/exynos/exynos_dp_core.c | 46 ++--
drivers/gpu/drm/exynos/exynos_drm_core.c | 216 +++--------------
drivers/gpu/drm/exynos/exynos_drm_crtc.c | 17 ++
drivers/gpu/drm/exynos/exynos_drm_crtc.h | 4 +
drivers/gpu/drm/exynos/exynos_drm_dpi.c | 21 +-
drivers/gpu/drm/exynos/exynos_drm_drv.c | 256 ++++++++------------
drivers/gpu/drm/exynos/exynos_drm_drv.h | 79 +++---
drivers/gpu/drm/exynos/exynos_drm_dsi.c | 39 ++-
drivers/gpu/drm/exynos/exynos_drm_fimd.c | 77 ++++--
drivers/gpu/drm/exynos/exynos_drm_vidi.c | 61 +++--
drivers/gpu/drm/exynos/exynos_hdmi.c | 46 ++--
drivers/gpu/drm/exynos/exynos_mixer.c | 55 ++++-
16 files changed, 490 insertions(+), 474 deletions(-)
create mode 100644 Documentation/devicetree/bindings/drm/exynos/samsung-exynos-drm.txt
--
1.7.9.5
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2 0/7] drm/exynos: more cleanup with super device support
2014-04-01 12:37 Inki Dae
@ 2014-04-03 7:43 ` Andrzej Hajda
0 siblings, 0 replies; 4+ messages in thread
From: Andrzej Hajda @ 2014-04-03 7:43 UTC (permalink / raw)
To: Inki Dae, airlied, dri-devel; +Cc: kyungmin.park
Hi Inki,
On 04/01/2014 02:37 PM, Inki Dae wrote:
> This patch series cleans up exynos drm framework and kms sub drivers
> using the component framework[1].
I have tested it on trats platform (fimd + dsi), it works.
However it seems to be suboptimal.
In case of deferred probing of any of components (due to lack of some
resources, ex. clock, regulator, phy), all components
which were already bound are unbound and re-bound later when another
driver is added, this causes multiple unnecessary free/re-allocate cycles.
Maybe I miss something, but I guess registration list(s) + DT super-node
should perform better.
Here is sample log from trats with mipi-phy driver delayed probe:
binding 11c00000.fimd (ops fimd_component_ops)
bound 11c00000.fimd (ops fimd_component_ops)
binding 11c80000.dsi (ops exynos_dsi_component_ops)
failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -517
unbinding 11c00000.fimd (ops fimd_component_ops)
master bind failed: -517
binding 11c00000.fimd (ops fimd_component_ops)
bound 11c00000.fimd (ops fimd_component_ops)
binding 11c80000.dsi (ops exynos_dsi_component_ops)
failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -517
unbinding 11c00000.fimd (ops fimd_component_ops)
master bind failed: -517
binding 11c00000.fimd (ops fimd_component_ops)
bound 11c00000.fimd (ops fimd_component_ops)
binding 11c80000.dsi (ops exynos_dsi_component_ops)
failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -517
unbinding 11c00000.fimd (ops fimd_component_ops)
master bind failed: -517
binding 11c00000.fimd (ops fimd_component_ops)
bound 11c00000.fimd (ops fimd_component_ops)
binding 11c80000.dsi (ops exynos_dsi_component_ops)
failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -517
unbinding 11c00000.fimd (ops fimd_component_ops)
master bind failed: -517
binding 11c00000.fimd (ops fimd_component_ops)
bound 11c00000.fimd (ops fimd_component_ops)
binding 11c80000.dsi (ops exynos_dsi_component_ops)
bound 11c80000.dsi (ops exynos_dsi_component_ops)
This log will grow with number of devices probed in-between.
Regards
Andrzej
>
> And this patch series had been posted for RFC[2].
>
> Thanks,
> Inki Dae
>
> [1] http://lists.freedesktop.org/archives/dri-devel/2014-January/051249.html
> [2] http://comments.gmane.org/gmane.comp.video.dri.devel/101200
>
>
> Inki Dae (7):
> drm/exynos: add super device support
> drm/exynos: dpi: fix hotplug fail issue
> drm/exynos: register platform driver at each kms sub drivers
> ARM: dts: exynos4210-universal: add super device node for exynos drm
> ARM: dts: exynos4210-trats: add super device node for exynos drm
> ARM: dts: exynos4412-trats2: add super device node for exynos drm
> exynos/drm: add DT bindings
>
> .../bindings/drm/exynos/samsung-exynos-drm.txt | 32 +++
> arch/arm/boot/dts/exynos4210-trats.dts | 5 +
> arch/arm/boot/dts/exynos4210-universal_c210.dts | 5 +
> arch/arm/boot/dts/exynos4412-trats2.dts | 5 +
> drivers/gpu/drm/exynos/exynos_dp_core.c | 46 ++--
> drivers/gpu/drm/exynos/exynos_drm_core.c | 216 +++--------------
> drivers/gpu/drm/exynos/exynos_drm_crtc.c | 17 ++
> drivers/gpu/drm/exynos/exynos_drm_crtc.h | 4 +
> drivers/gpu/drm/exynos/exynos_drm_dpi.c | 21 +-
> drivers/gpu/drm/exynos/exynos_drm_drv.c | 256 ++++++++------------
> drivers/gpu/drm/exynos/exynos_drm_drv.h | 79 +++---
> drivers/gpu/drm/exynos/exynos_drm_dsi.c | 39 ++-
> drivers/gpu/drm/exynos/exynos_drm_fimd.c | 77 ++++--
> drivers/gpu/drm/exynos/exynos_drm_vidi.c | 61 +++--
> drivers/gpu/drm/exynos/exynos_hdmi.c | 46 ++--
> drivers/gpu/drm/exynos/exynos_mixer.c | 55 ++++-
> 16 files changed, 490 insertions(+), 474 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/drm/exynos/samsung-exynos-drm.txt
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Re: [PATCH v2 0/7] drm/exynos: more cleanup with super device support
@ 2014-04-03 9:05 대인기
2014-04-03 9:39 ` Andrzej Hajda
0 siblings, 1 reply; 4+ messages in thread
From: 대인기 @ 2014-04-03 9:05 UTC (permalink / raw)
To: Andrzej Hajda, airlied@linux.ie, dri-devel@lists.freedesktop.org
Cc: 박경민
Hi Andrzej,
> Hi Inki,
>
> On 04/01/2014 02:37 PM, Inki Dae wrote:
>> This patch series cleans up exynos drm framework and kms sub drivers
>> using the component framework[1].
>
> I have tested it on trats platform (fimd + dsi), it works.
> However it seems to be suboptimal.
> In case of deferred probing of any of components (due to lack of some
> resources, ex. clock, regulator, phy), all components
> which were already bound are unbound and re-bound later when another
> driver is added, this causes multiple unnecessary free/re-allocate cycles.
The components bound and then unbound wouldn't be bound again because the components unbound are removed component_list like below,
ret = try_to_bring_up_masters(component);
if (ret < 0) {
list_del(&component->node);
kfree(component);
}
And I cannot see that components are freed and re-allocated repeatedly. See the below log,
[ 1.425000] [drm] Initialized drm 1.1.0 20060810
[ 1.430000] exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
[ 1.435000] exynos4-fb 11c00000.fimd: adding component (ops fimd_component_ops)
[ 1.445000] exynos-dsi 11c80000.dsi: adding component (ops exynos_dsi_component_ops)
[ 1.450000] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 1.455000] [drm] No driver support for vblank timestamp query.
[ 1.465000] exynos-drm display-subsystem.8: binding 11c00000.fimd (ops fimd_component_ops)
[ 1.470000] exynos-drm display-subsystem.8: bound 11c00000.fimd (ops fimd_component_ops)
[ 1.480000] exynos-drm display-subsystem.8: binding 11c80000.dsi (ops exynos_dsi_component_ops)
[ 1.490000] exynos-drm display-subsystem.8: failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -12
[ 1.500000] exynos-drm display-subsystem.8: master bind failed: -12
[ 1.505000] exynos-dsi: probe of 11c80000.dsi failed with error -12
I have tested it on universal, trats, trats2 boards. And they all work fine.
But there was one thing I missed. That is that dpi probe and remove shoudn't be called if fimd node has no port node. For this, I posted it again.
Did you check it again? It seems your missing something. And Can you tell me more details how did you test it? If there is no any problem, I'm going to have pull request today or tomorrow.
Thanks,
Inki Dae
> Maybe I miss something, but I guess registration list(s) + DT super-node
> should perform better.
>
> Here is sample log from trats with mipi-phy driver delayed probe:
>
> binding 11c00000.fimd (ops fimd_component_ops)
> bound 11c00000.fimd (ops fimd_component_ops)
> binding 11c80000.dsi (ops exynos_dsi_component_ops)
> failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -517
> unbinding 11c00000.fimd (ops fimd_component_ops)
> master bind failed: -517
> binding 11c00000.fimd (ops fimd_component_ops)
> bound 11c00000.fimd (ops fimd_component_ops)
> binding 11c80000.dsi (ops exynos_dsi_component_ops)
> failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -517
> unbinding 11c00000.fimd (ops fimd_component_ops)
> master bind failed: -517
> binding 11c00000.fimd (ops fimd_component_ops)
> bound 11c00000.fimd (ops fimd_component_ops)
> binding 11c80000.dsi (ops exynos_dsi_component_ops)
> failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -517
> unbinding 11c00000.fimd (ops fimd_component_ops)
> master bind failed: -517
> binding 11c00000.fimd (ops fimd_component_ops)
> bound 11c00000.fimd (ops fimd_component_ops)
> binding 11c80000.dsi (ops exynos_dsi_component_ops)
> failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -517
> unbinding 11c00000.fimd (ops fimd_component_ops)
> master bind failed: -517
> binding 11c00000.fimd (ops fimd_component_ops)
> bound 11c00000.fimd (ops fimd_component_ops)
> binding 11c80000.dsi (ops exynos_dsi_component_ops)
> bound 11c80000.dsi (ops exynos_dsi_component_ops)
>
> This log will grow with number of devices probed in-between.
>
> Regards
> Andrzej
>
> >
> > And this patch series had been posted for RFC[2].
> >
> > Thanks,
> > Inki Dae
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2 0/7] drm/exynos: more cleanup with super device support
2014-04-03 9:05 Re: [PATCH v2 0/7] drm/exynos: more cleanup with super device support 대인기
@ 2014-04-03 9:39 ` Andrzej Hajda
0 siblings, 0 replies; 4+ messages in thread
From: Andrzej Hajda @ 2014-04-03 9:39 UTC (permalink / raw)
To: inki.dae, airlied@linux.ie, dri-devel@lists.freedesktop.org
Cc: 박경민
On 04/03/2014 11:05 AM, 대인기 wrote:
> Hi Andrzej,
>
>> Hi Inki,
>>
>> On 04/01/2014 02:37 PM, Inki Dae wrote:
>>> This patch series cleans up exynos drm framework and kms sub drivers
>>> using the component framework[1].
>> I have tested it on trats platform (fimd + dsi), it works.
>> However it seems to be suboptimal.
>> In case of deferred probing of any of components (due to lack of some
>> resources, ex. clock, regulator, phy), all components
>> which were already bound are unbound and re-bound later when another
>> driver is added, this causes multiple unnecessary free/re-allocate cycles.
> The components bound and then unbound wouldn't be bound again because the components unbound are removed component_list like below,
>
> ret = try_to_bring_up_masters(component);
> if (ret < 0) {
> list_del(&component->node);
> kfree(component);
> }
>
> And I cannot see that components are freed and re-allocated repeatedly. See the below log,
>
> [ 1.425000] [drm] Initialized drm 1.1.0 20060810
> [ 1.430000] exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
> [ 1.435000] exynos4-fb 11c00000.fimd: adding component (ops fimd_component_ops)
> [ 1.445000] exynos-dsi 11c80000.dsi: adding component (ops exynos_dsi_component_ops)
> [ 1.450000] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
> [ 1.455000] [drm] No driver support for vblank timestamp query.
> [ 1.465000] exynos-drm display-subsystem.8: binding 11c00000.fimd (ops fimd_component_ops)
> [ 1.470000] exynos-drm display-subsystem.8: bound 11c00000.fimd (ops fimd_component_ops)
> [ 1.480000] exynos-drm display-subsystem.8: binding 11c80000.dsi (ops exynos_dsi_component_ops)
> [ 1.490000] exynos-drm display-subsystem.8: failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -12
> [ 1.500000] exynos-drm display-subsystem.8: master bind failed: -12
> [ 1.505000] exynos-dsi: probe of 11c80000.dsi failed with error -12
Here you have error -12 - ENOMEM, so everything just fails, and this is
OK. The problem is in case of deferred probe.
Good way to simulate it is to make mipi-phy driver as module and insmod
it from userspace.
Regards
Andrzej
>
> I have tested it on universal, trats, trats2 boards. And they all work fine.
> But there was one thing I missed. That is that dpi probe and remove shoudn't be called if fimd node has no port node. For this, I posted it again.
>
> Did you check it again? It seems your missing something. And Can you tell me more details how did you test it? If there is no any problem, I'm going to have pull request today or tomorrow.
The problem I have described has nothing to do with dpi, in fact dpi
driver was disabled in this test.
Anyway I will test DPI separately.
>
> Thanks,
> Inki Dae
>
>> Maybe I miss something, but I guess registration list(s) + DT super-node
>> should perform better.
>>
>> Here is sample log from trats with mipi-phy driver delayed probe:
>>
>> binding 11c00000.fimd (ops fimd_component_ops)
>> bound 11c00000.fimd (ops fimd_component_ops)
>> binding 11c80000.dsi (ops exynos_dsi_component_ops)
>> failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -517
>> unbinding 11c00000.fimd (ops fimd_component_ops)
>> master bind failed: -517
>> binding 11c00000.fimd (ops fimd_component_ops)
>> bound 11c00000.fimd (ops fimd_component_ops)
>> binding 11c80000.dsi (ops exynos_dsi_component_ops)
>> failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -517
>> unbinding 11c00000.fimd (ops fimd_component_ops)
>> master bind failed: -517
>> binding 11c00000.fimd (ops fimd_component_ops)
>> bound 11c00000.fimd (ops fimd_component_ops)
>> binding 11c80000.dsi (ops exynos_dsi_component_ops)
>> failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -517
>> unbinding 11c00000.fimd (ops fimd_component_ops)
>> master bind failed: -517
>> binding 11c00000.fimd (ops fimd_component_ops)
>> bound 11c00000.fimd (ops fimd_component_ops)
>> binding 11c80000.dsi (ops exynos_dsi_component_ops)
>> failed to bind 11c80000.dsi (ops exynos_dsi_component_ops): -517
>> unbinding 11c00000.fimd (ops fimd_component_ops)
>> master bind failed: -517
>> binding 11c00000.fimd (ops fimd_component_ops)
>> bound 11c00000.fimd (ops fimd_component_ops)
>> binding 11c80000.dsi (ops exynos_dsi_component_ops)
>> bound 11c80000.dsi (ops exynos_dsi_component_ops)
>>
>> This log will grow with number of devices probed in-between.
>>
>> Regards
>> Andrzej
>>
>>> And this patch series had been posted for RFC[2].
>>>
>>> Thanks,
>>> Inki Dae
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-04-03 9:39 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-04-03 9:05 Re: [PATCH v2 0/7] drm/exynos: more cleanup with super device support 대인기
2014-04-03 9:39 ` Andrzej Hajda
-- strict thread matches above, loose matches on Subject: below --
2014-04-01 12:37 Inki Dae
2014-04-03 7:43 ` Andrzej Hajda
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.