Re: [PATCH 03/14] drm/atmel-hlcdc: Convert to Linux IRQ interfaces

2021-07-28 Thread Dan.Sneddon
On 7/28/21 7:00 AM, Sam Ravnborg wrote:
> [You don't often get email from s...@ravnborg.org. Learn why this is 
> important at http://aka.ms/LearnAboutSenderIdentification.]
> 
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the 
> content is safe
> 
> Hi Dan,
> 
> I hope you can fine to test this patch from Thomas.
> If this works then we can forget about my attempt to do the same.

I'll test this as soon as I can and let you know.

Thanks,
Dan
> 
> Hi Thomas,
> 
> IRQ_NOTCONNECTED check seems redundant, as mentioned in another patch
> already.
> 
> With that considered:
> Reviewed-by: Sam Ravnborg 
> 
> We shall wait for testing from Dan before you apply it as I had made a
> similar patch that failed to work. I assume my patch was buggy but I
> prefer to be sure.
> 
>  Sam
> 
> On Tue, Jul 27, 2021 at 08:27:10PM +0200, Thomas Zimmermann wrote:
>> Drop the DRM IRQ midlayer in favor of Linux IRQ interfaces. DRM's
>> IRQ helpers are mostly useful for UMS drivers. Modern KMS drivers
>> don't benefit from using it. DRM IRQ callbacks are now being called
>> directly or inlined.
>>
>> Signed-off-by: Thomas Zimmermann 
>> ---
>>   drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 85 
>>   1 file changed, 52 insertions(+), 33 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c 
>> b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
>> index f09b6dd8754c..cfa8c2c9c8aa 100644
>> --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
>> +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
>> @@ -22,7 +22,6 @@
>>   #include 
>>   #include 
>>   #include 
>> -#include 
>>   #include 
>>   #include 
>>
>> @@ -557,6 +556,56 @@ static irqreturn_t atmel_hlcdc_dc_irq_handler(int irq, 
>> void *data)
>>return IRQ_HANDLED;
>>   }
>>
>> +static void atmel_hlcdc_dc_irq_postinstall(struct drm_device *dev)
>> +{
>> + struct atmel_hlcdc_dc *dc = dev->dev_private;
>> + unsigned int cfg = 0;
>> + int i;
>> +
>> + /* Enable interrupts on activated layers */
>> + for (i = 0; i < ATMEL_HLCDC_MAX_LAYERS; i++) {
>> + if (dc->layers[i])
>> + cfg |= ATMEL_HLCDC_LAYER_STATUS(i);
>> + }
>> +
>> + regmap_write(dc->hlcdc->regmap, ATMEL_HLCDC_IER, cfg);
>> +}
>> +
>> +static void atmel_hlcdc_dc_irq_disable(struct drm_device *dev)
>> +{
>> + struct atmel_hlcdc_dc *dc = dev->dev_private;
>> + unsigned int isr;
>> +
>> + regmap_write(dc->hlcdc->regmap, ATMEL_HLCDC_IDR, 0x);
>> + regmap_read(dc->hlcdc->regmap, ATMEL_HLCDC_ISR, &isr);
>> +}
>> +
>> +static int atmel_hlcdc_dc_irq_install(struct drm_device *dev, unsigned int 
>> irq)
>> +{
>> + int ret;
>> +
>> + if (irq == IRQ_NOTCONNECTED)
>> + return -ENOTCONN;
>> +
>> + atmel_hlcdc_dc_irq_disable(dev);
>> +
>> + ret = request_irq(irq, atmel_hlcdc_dc_irq_handler, 0, 
>> dev->driver->name, dev);
>> + if (ret)
>> + return ret;
>> +
>> + atmel_hlcdc_dc_irq_postinstall(dev);
>> +
>> + return 0;
>> +}
>> +
>> +static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
>> +{
>> + struct atmel_hlcdc_dc *dc = dev->dev_private;
>> +
>> + atmel_hlcdc_dc_irq_disable(dev);
>> + free_irq(dc->hlcdc->irq, dev);
>> +}
>> +
>>   static const struct drm_mode_config_funcs mode_config_funcs = {
>>.fb_create = drm_gem_fb_create,
>>.atomic_check = drm_atomic_helper_check,
>> @@ -647,7 +696,7 @@ static int atmel_hlcdc_dc_load(struct drm_device *dev)
>>drm_mode_config_reset(dev);
>>
>>pm_runtime_get_sync(dev->dev);
>> - ret = drm_irq_install(dev, dc->hlcdc->irq);
>> + ret = atmel_hlcdc_dc_irq_install(dev, dc->hlcdc->irq);
>>pm_runtime_put_sync(dev->dev);
>>if (ret < 0) {
>>dev_err(dev->dev, "failed to install IRQ handler\n");
>> @@ -676,7 +725,7 @@ static void atmel_hlcdc_dc_unload(struct drm_device *dev)
>>drm_mode_config_cleanup(dev);
>>
>>pm_runtime_get_sync(dev->dev);
>> - drm_irq_uninstall(dev);
>> + atmel_hlcdc_dc_irq_uninstall(dev);
>>pm_runtime_put_sync(dev->dev);
>>
>>dev->dev_private = NULL;
>> @@ -685,40 +734,10 @@ static void atmel_hlcdc_dc_unload(struct drm_device 
>> *dev)
>>clk_disable_unprepare(dc->hlcdc->periph_clk);
>>   }
>>
>> -static int atmel_hlcdc_dc_irq_postinstall(struct drm_device *dev)
>> -{
>> - struct atmel_hlcdc_dc *dc = dev->dev_private;
>> - unsigned int cfg = 0;
>> - int i;
>> -
>> - /* Enable interrupts on activated layers */
>> - for (i = 0; i < ATMEL_HLCDC_MAX_LAYERS; i++) {
>> - if (dc->layers[i])
>> - cfg |= ATMEL_HLCDC_LAYER_STATUS(i);
>> - }
>> -
>> - regmap_write(dc->hlcdc->regmap, ATMEL_HLCDC_IER, cfg);
>> -
>> - return 0;
>> -}
>> -
>> -static void atmel_hlcdc_dc_irq_uninstall(struct drm_device *dev)
>> -{
>> - struct atmel_hlcdc_dc *dc = dev->dev_private;
>> - unsigne

Re: [PATCH 03/14] drm/atmel-hlcdc: Convert to Linux IRQ interfaces

2021-07-28 Thread Dan.Sneddon
On 7/28/21 8:44 AM, Sam Ravnborg wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the 
> content is safe
> 
> Hi Dan,
> 
> On Wed, Jul 28, 2021 at 03:11:08PM +, dan.sned...@microchip.com wrote:
>> On 7/28/21 7:00 AM, Sam Ravnborg wrote:
>>> [You don't often get email from s...@ravnborg.org. Learn why this is 
>>> important at http://aka.ms/LearnAboutSenderIdentification.]
>>>
>>> EXTERNAL EMAIL: Do not click links or open attachments unless you know the 
>>> content is safe
>>>
>>> Hi Dan,
>>>
>>> I hope you can fine to test this patch from Thomas.
>>> If this works then we can forget about my attempt to do the same.
>>
>> I'll test this as soon as I can and let you know.
> 
> Thanks, crossing my fingers... (which explains the funny spelling from
> time to time)
> 
>  Sam
> So I ran the test on an A5D27 XULT board with a PDA5 display.  Our 
graphics demos that come with our linux4sam releases seem to run just 
fine.  modetest -v seems to run just fine.  However, vbltest returns 
"drmWaitVBlank (relative) failed ret: -1".  I don't understand why 
modetest -v is working and vbltest isn't, but that's what I'm seeing.

Thanks,
Dan


Re: [PATCH 03/14] drm/atmel-hlcdc: Convert to Linux IRQ interfaces

2021-07-28 Thread Dan.Sneddon
On 7/28/21 11:11 AM, Sam Ravnborg wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the 
> content is safe
> 
> Hi Dan,
> 
> thanks for the quick feedback!
> 
> On Wed, Jul 28, 2021 at 05:50:34PM +, dan.sned...@microchip.com wrote:
>> On 7/28/21 8:44 AM, Sam Ravnborg wrote:
>>> EXTERNAL EMAIL: Do not click links or open attachments unless you know the 
>>> content is safe
>>>
>>> Hi Dan,
>>>
>>> On Wed, Jul 28, 2021 at 03:11:08PM +, dan.sned...@microchip.com wrote:
 On 7/28/21 7:00 AM, Sam Ravnborg wrote:
> [You don't often get email from s...@ravnborg.org. Learn why this is 
> important at http://aka.ms/LearnAboutSenderIdentification.]
>
> EXTERNAL EMAIL: Do not click links or open attachments unless you know 
> the content is safe
>
> Hi Dan,
>
> I hope you can fine to test this patch from Thomas.
> If this works then we can forget about my attempt to do the same.

 I'll test this as soon as I can and let you know.
>>>
>>> Thanks, crossing my fingers... (which explains the funny spelling from
>>> time to time)
>>>
>>>   Sam
>>> So I ran the test on an A5D27 XULT board with a PDA5 display.  Our
>> graphics demos that come with our linux4sam releases seem to run just
>> fine.  modetest -v seems to run just fine.  However, vbltest returns
>> "drmWaitVBlank (relative) failed ret: -1".  I don't understand why
>> modetest -v is working and vbltest isn't, but that's what I'm seeing.
> 
> Strange indeed.
> 
> 
> Just to be sure...
> Can you confirm that vbltest is working OK *before* this patch?
> 
>  Sam
> 
I'm afraid vbltest works without the patch, but not with it.

Dan


Re: Re: [PATCH 03/14] drm/atmel-hlcdc: Convert to Linux IRQ interfaces

2021-07-28 Thread Dan.Sneddon
Hi Thomas,

On 7/28/21 11:17 AM, Thomas Zimmermann wrote:
> Hi
> 
> Am 28.07.21 um 20:11 schrieb Sam Ravnborg:
>> Hi Dan,
>>
>> thanks for the quick feedback!
>>
>> On Wed, Jul 28, 2021 at 05:50:34PM +, dan.sned...@microchip.com 
>> wrote:
>>> On 7/28/21 8:44 AM, Sam Ravnborg wrote:
 EXTERNAL EMAIL: Do not click links or open attachments unless you 
 know the content is safe

 Hi Dan,

 On Wed, Jul 28, 2021 at 03:11:08PM +, dan.sned...@microchip.com 
 wrote:
> On 7/28/21 7:00 AM, Sam Ravnborg wrote:
>> [You don't often get email from s...@ravnborg.org. Learn why this 
>> is important at http://aka.ms/LearnAboutSenderIdentification.]
>>
>> EXTERNAL EMAIL: Do not click links or open attachments unless you 
>> know the content is safe
>>
>> Hi Dan,
>>
>> I hope you can fine to test this patch from Thomas.
>> If this works then we can forget about my attempt to do the same.
>
> I'll test this as soon as I can and let you know.

 Thanks, crossing my fingers... (which explains the funny spelling from
 time to time)

   Sam
 So I ran the test on an A5D27 XULT board with a PDA5 display.  Our
>>> graphics demos that come with our linux4sam releases seem to run just
>>> fine.  modetest -v seems to run just fine.  However, vbltest returns
>>> "drmWaitVBlank (relative) failed ret: -1".  I don't understand why
>>> modetest -v is working and vbltest isn't, but that's what I'm seeing.
> 
> Thanks for testing.
> 
>>
>> Strange indeed.
>>
>>
>> Just to be sure...
>> Can you confirm that vbltest is working OK *before* this patch?
> 
> Yes, can you please verify that it regressed. If so, this would mean 
> that the driver misses vblank interrupts with the patch applied.

Yes, unfortunately the vbltest works before this patch, but fails after 
this patch is applied.

Best Regards,
Dan

> 
> Best regards
> Thomas
> 
>>
>> Sam
>>
> 



Re: [PATCH 03/14] drm/atmel-hlcdc: Convert to Linux IRQ interfaces

2021-07-28 Thread Dan.Sneddon
Hi Sam,
On 7/28/21 12:08 PM, Sam Ravnborg wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the 
> content is safe
> 
> Hi Dan,
> 

 Just to be sure...
 Can you confirm that vbltest is working OK *before* this patch?
>>>
>>> Yes, can you please verify that it regressed. If so, this would mean
>>> that the driver misses vblank interrupts with the patch applied.
>>
>> Yes, unfortunately the vbltest works before this patch, but fails after
>> this patch is applied.
> 
> I think I got it - we need to set irq_enabled to true.
> The documentation says so:
> "
>   * @irq_enabled:
>   *
>   * Indicates that interrupt handling is enabled, specifically vblank
>   * handling. Drivers which don't use drm_irq_install() need to set 
> this
>   * to true manually.
> "
> 
> Can you try to add the following line:
> 
> 
> +static int atmel_hlcdc_dc_irq_install(struct drm_device *dev, unsigned int 
> irq)
> +{
> +   int ret;
> +
> +   if (irq == IRQ_NOTCONNECTED)
> +   return -ENOTCONN;
> +
> 
>  dev->irq_enabled = true;<= THIS LINE
> 
> 
> +   atmel_hlcdc_dc_irq_disable(dev);
> +
> +   ret = request_irq(irq, atmel_hlcdc_dc_irq_handler, 0, 
> dev->driver->name, dev);
> +   if (ret)
> +   return ret;
> 
> I hope this fixes it.

It does!  With the irq_enabled line added everything is looking good.

Best Regards,
Dan

> 
>  Sam
> 



Re: Re: [PATCH 03/14] drm/atmel-hlcdc: Convert to Linux IRQ interfaces

2021-07-29 Thread Dan.Sneddon
Hi Thomas,

On 7/29/21 12:18 PM, Thomas Zimmermann wrote:
> Hi
> 
> Am 28.07.21 um 22:11 schrieb Sam Ravnborg:
>> Hi Dan,
>>

 I think I got it - we need to set irq_enabled to true.
 The documentation says so:
 "
    * @irq_enabled:
    *
    * Indicates that interrupt handling is enabled, 
 specifically vblank
    * handling. Drivers which don't use drm_irq_install() 
 need to set this
    * to true manually.
 "

 Can you try to add the following line:


 +static int atmel_hlcdc_dc_irq_install(struct drm_device *dev, 
 unsigned int irq)
 +{
 +   int ret;
 +
 +   if (irq == IRQ_NOTCONNECTED)
 +   return -ENOTCONN;
 +

   dev->irq_enabled = true;    <= THIS LINE


 +   atmel_hlcdc_dc_irq_disable(dev);
 +
 +   ret = request_irq(irq, atmel_hlcdc_dc_irq_handler, 0, 
 dev->driver->name, dev);
 +   if (ret)
 +   return ret;

 I hope this fixes it.
>>>
>>> It does!  With the irq_enabled line added everything is looking good.
> 
> Are you sure, you're testing with the latest drm-misc-next or drm-tip? 
> Because using irq_enabled is deprecated and the flag was recently 
> replaced by commit 1e4cd78ed493 ("drm: Don't test for IRQ support in 
> VBLANK ioctls").
> 
> Best regards
> Thomas
> 

I was testing with 5.14-rc3.  I can test with drm-tip or drm-misc-next. 
There a preferred branch to test from?

Thanks and regards,
Dan

>>
>> Great, thanks for testing.
>>
>> Thomas - I assume you will do a re-spin and there is likely some fixes
>> for the applied IRQ conversions too.
>>
>> Note - irq_enabled must be cleared if request_irq fails. I did not
>> include this in the testing here.
>>
>> Sam
>>
> 



Re: [PATCH 03/14] drm/atmel-hlcdc: Convert to Linux IRQ interfaces

2021-07-29 Thread Dan.Sneddon
Hi Thomas and Sam,
On 7/29/21 12:48 PM, Sam Ravnborg wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the 
> content is safe
> 
> Hi Thomas,
> 
>>
>> Are you sure, you're testing with the latest drm-misc-next or drm-tip?
>> Because using irq_enabled is deprecated and the flag was recently replaced
>> by commit 1e4cd78ed493 ("drm: Don't test for IRQ support in VBLANK ioctls").

Ok, My fault for testing on the wrong branch.  When I test this patch on 
drm-misc-next it works great.  Sorry for the confusion!

> 
> I was looking at drm-misc-fixes which did not have this commit :-(
> Just my silly excuse why I was convinced this was the issue.
> 
>  Sam
> 

Best regards,
Dan


Re: Re: [PATCH 03/14] drm/atmel-hlcdc: Convert to Linux IRQ interfaces

2021-07-30 Thread Dan.Sneddon
On 7/30/21 1:31 AM, Thomas Zimmermann wrote:
> Hi Dan and Sam
> 
> Am 29.07.21 um 21:55 schrieb dan.sned...@microchip.com:
>> Hi Thomas and Sam,
>> On 7/29/21 12:48 PM, Sam Ravnborg wrote:
>>> EXTERNAL EMAIL: Do not click links or open attachments unless you 
>>> know the content is safe
>>>
>>> Hi Thomas,
>>>

 Are you sure, you're testing with the latest drm-misc-next or drm-tip?
 Because using irq_enabled is deprecated and the flag was recently 
 replaced
 by commit 1e4cd78ed493 ("drm: Don't test for IRQ support in VBLANK 
 ioctls").
>>
>> Ok, My fault for testing on the wrong branch.  When I test this patch on
>> drm-misc-next it works great.  Sorry for the confusion!
>>
>>>
>>> I was looking at drm-misc-fixes which did not have this commit :-(
>>> Just my silly excuse why I was convinced this was the issue.
> 
> Don't worry.
> 
> I'll add Sam's R-b and a Tested-by from Dan to the patch. Is that ok?

The tested-by works for me!  Thanks!
> 
> Best regards
> Thomas
> 
> 
>>>
>>>   Sam
>>>
>>
>> Best regards,
>> Dan
>>
> 



Re: [PATCH v1 0/2] drm/atmel-hlcdc: drop use of drm_irq mid-layer

2021-07-15 Thread Dan.Sneddon
I tested this patch set on the 9x60ek board and unfortunately it causes 
errors.  The vbltest returns -1 and I also see the display get out of 
sync while testing with a gui application.


Regards,

Dan