* [PATCH v2] drm/fsl-dcu: Fix endian issue when using clk_register_divider
@ 2016-08-26 9:53 Meng Yi
2016-08-30 2:33 ` Meng Yi
0 siblings, 1 reply; 5+ messages in thread
From: Meng Yi @ 2016-08-26 9:53 UTC (permalink / raw)
To: stefan, airlied; +Cc: dri-devel, Meng Yi
While clk_register_divider will write register as little endian,
Modified the param "shift" from 0 to 24 since DCU is big endian.
Or reg "DCU_DIV_RATIO" will be seted as a incorrect value which
will cause vblank timing issue etc.
Signed-off-by: Meng Yi <meng.yi@nxp.com>
---
Changes in V2:
-check the soc name to decide the "shift" value
since vf610's divider reg is little endian while
ls1021a's divider reg is big endian
---
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
index 7882387..a590ce8 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
@@ -386,7 +386,8 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
snprintf(pix_clk_name, sizeof(pix_clk_name), "%s_pix", pix_clk_in_name);
fsl_dev->pix_clk = clk_register_divider(dev, pix_clk_name,
pix_clk_in_name, 0, base + DCU_DIV_RATIO,
- 0, 8, CLK_DIVIDER_ROUND_CLOSEST, NULL);
+ !strcmp(fsl_dev->soc->name, "ls1021a")?24:0, 8,
+ CLK_DIVIDER_ROUND_CLOSEST, NULL);
if (IS_ERR(fsl_dev->pix_clk)) {
dev_err(dev, "failed to register pix clk\n");
ret = PTR_ERR(fsl_dev->pix_clk);
--
2.1.0.27.g96db324
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 5+ messages in thread
* RE: [PATCH v2] drm/fsl-dcu: Fix endian issue when using clk_register_divider
2016-08-26 9:53 [PATCH v2] drm/fsl-dcu: Fix endian issue when using clk_register_divider Meng Yi
@ 2016-08-30 2:33 ` Meng Yi
2016-08-30 2:35 ` Meng Yi
2016-09-01 6:42 ` Meng Yi
0 siblings, 2 replies; 5+ messages in thread
From: Meng Yi @ 2016-08-30 2:33 UTC (permalink / raw)
To: Meng Yi, stefan@agner.ch, airlied@linux.ie
Cc: dri-devel@lists.freedesktop.org
> drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-
> dcu/fsl_dcu_drm_drv.c
> index 7882387..a590ce8 100644
> --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> @@ -386,7 +386,8 @@ static int fsl_dcu_drm_probe(struct platform_device
> *pdev)
> snprintf(pix_clk_name, sizeof(pix_clk_name), "%s_pix",
> pix_clk_in_name);
> fsl_dev->pix_clk = clk_register_divider(dev, pix_clk_name,
> pix_clk_in_name, 0, base + DCU_DIV_RATIO,
> - 0, 8, CLK_DIVIDER_ROUND_CLOSEST, NULL);
> + !strcmp(fsl_dev->soc->name, "ls1021a")?24:0, 8,
> + CLK_DIVIDER_ROUND_CLOSEST, NULL);
Tested-by: Meng Yi <meng.yi@nxp.com>
> if (IS_ERR(fsl_dev->pix_clk)) {
> dev_err(dev, "failed to register pix clk\n");
> ret = PTR_ERR(fsl_dev->pix_clk);
> --
> 2.1.0.27.g96db324
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [PATCH v2] drm/fsl-dcu: Fix endian issue when using clk_register_divider
2016-08-30 2:33 ` Meng Yi
@ 2016-08-30 2:35 ` Meng Yi
2016-09-01 6:42 ` Meng Yi
1 sibling, 0 replies; 5+ messages in thread
From: Meng Yi @ 2016-08-30 2:35 UTC (permalink / raw)
To: stefan@agner.ch, airlied@linux.ie; +Cc: dri-devel@lists.freedesktop.org
> > drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > b/drivers/gpu/drm/fsl- dcu/fsl_dcu_drm_drv.c index 7882387..a590ce8
> > 100644
> > --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > @@ -386,7 +386,8 @@ static int fsl_dcu_drm_probe(struct
> > platform_device
> > *pdev)
> > snprintf(pix_clk_name, sizeof(pix_clk_name), "%s_pix",
> > pix_clk_in_name);
> > fsl_dev->pix_clk = clk_register_divider(dev, pix_clk_name,
> > pix_clk_in_name, 0, base + DCU_DIV_RATIO,
> > - 0, 8, CLK_DIVIDER_ROUND_CLOSEST, NULL);
> > + !strcmp(fsl_dev->soc->name, "ls1021a")?24:0, 8,
> > + CLK_DIVIDER_ROUND_CLOSEST, NULL);
>
> Tested-by: Meng Yi <meng.yi@nxp.com>
On LS1021A-TWR board.
>
> > if (IS_ERR(fsl_dev->pix_clk)) {
> > dev_err(dev, "failed to register pix clk\n");
> > ret = PTR_ERR(fsl_dev->pix_clk);
> > --
> > 2.1.0.27.g96db324
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [PATCH v2] drm/fsl-dcu: Fix endian issue when using clk_register_divider
2016-08-30 2:33 ` Meng Yi
2016-08-30 2:35 ` Meng Yi
@ 2016-09-01 6:42 ` Meng Yi
2016-09-02 17:56 ` Stefan Agner
1 sibling, 1 reply; 5+ messages in thread
From: Meng Yi @ 2016-09-01 6:42 UTC (permalink / raw)
To: stefan@agner.ch, airlied@linux.ie; +Cc: dri-devel@lists.freedesktop.org
Hi Stefan,
Could you test this patch on vf610, I think it will woks fine.
When could you merge this path? And how about the patches for gamma correction and multi-layer support by the way?
Best Regards,
Meng
> > > diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > > b/drivers/gpu/drm/fsl- dcu/fsl_dcu_drm_drv.c index 7882387..a590ce8
> > > 100644
> > > --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > > +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> > > @@ -386,7 +386,8 @@ static int fsl_dcu_drm_probe(struct
> > > platform_device
> > > *pdev)
> > > snprintf(pix_clk_name, sizeof(pix_clk_name), "%s_pix",
> > > pix_clk_in_name);
> > > fsl_dev->pix_clk = clk_register_divider(dev, pix_clk_name,
> > > pix_clk_in_name, 0, base + DCU_DIV_RATIO,
> > > - 0, 8, CLK_DIVIDER_ROUND_CLOSEST, NULL);
> > > + !strcmp(fsl_dev->soc->name, "ls1021a")?24:0, 8,
> > > + CLK_DIVIDER_ROUND_CLOSEST, NULL);
> >
> > Tested-by: Meng Yi <meng.yi@nxp.com>
>
> On LS1021A-TWR board.
> >
> > > if (IS_ERR(fsl_dev->pix_clk)) {
> > > dev_err(dev, "failed to register pix clk\n");
> > > ret = PTR_ERR(fsl_dev->pix_clk);
> > > --
> > > 2.1.0.27.g96db324
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [PATCH v2] drm/fsl-dcu: Fix endian issue when using clk_register_divider
2016-09-01 6:42 ` Meng Yi
@ 2016-09-02 17:56 ` Stefan Agner
0 siblings, 0 replies; 5+ messages in thread
From: Stefan Agner @ 2016-09-02 17:56 UTC (permalink / raw)
To: Meng Yi; +Cc: dri-devel
On 2016-08-31 23:42, Meng Yi wrote:
> Hi Stefan,
>
> Could you test this patch on vf610, I think it will woks fine.
See comment below.
>
> When could you merge this path? And how about the patches for gamma
> correction and multi-layer support by the way?
Still need to look in those patches. I also have multi-layer patches in
our 4.4 tree:
http://git.toradex.com/cgit/linux-toradex.git/log/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c?h=toradex_vf_4.4-next
This changes also use one plane as cursor plane which probably makes
sense given that we have that many planes. I try to send out an
updated/rebased patchset soon.
>
> Best Regards,
> Meng
>
>> > > diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
>> > > b/drivers/gpu/drm/fsl- dcu/fsl_dcu_drm_drv.c index 7882387..a590ce8
>> > > 100644
>> > > --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
>> > > +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
>> > > @@ -386,7 +386,8 @@ static int fsl_dcu_drm_probe(struct
>> > > platform_device
>> > > *pdev)
>> > > snprintf(pix_clk_name, sizeof(pix_clk_name), "%s_pix",
>> > > pix_clk_in_name);
>> > > fsl_dev->pix_clk = clk_register_divider(dev, pix_clk_name,
>> > > pix_clk_in_name, 0, base + DCU_DIV_RATIO,
>> > > - 0, 8, CLK_DIVIDER_ROUND_CLOSEST, NULL);
>> > > + !strcmp(fsl_dev->soc->name, "ls1021a")?24:0, 8,
>> > > + CLK_DIVIDER_ROUND_CLOSEST, NULL);
I don't like to sprinkle SoC detection all over the code, it makes it
harder when new SoC's with DCU appear. I will send out a patch making
use of struct fsl_dcu_soc_data or the like.
--
Stefan
>> >
>> > Tested-by: Meng Yi <meng.yi@nxp.com>
>>
>> On LS1021A-TWR board.
>> >
>> > > if (IS_ERR(fsl_dev->pix_clk)) {
>> > > dev_err(dev, "failed to register pix clk\n");
>> > > ret = PTR_ERR(fsl_dev->pix_clk);
>> > > --
>> > > 2.1.0.27.g96db324
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-09-02 18:01 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-26 9:53 [PATCH v2] drm/fsl-dcu: Fix endian issue when using clk_register_divider Meng Yi
2016-08-30 2:33 ` Meng Yi
2016-08-30 2:35 ` Meng Yi
2016-09-01 6:42 ` Meng Yi
2016-09-02 17:56 ` Stefan Agner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).