dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] A few fixes for 4.7
@ 2016-05-09  2:32 Xinliang Liu
  2016-05-09  2:32 ` [PATCH 1/3] drm/hisilicon: Use drm_connector_register_all Xinliang Liu
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Xinliang Liu @ 2016-05-09  2:32 UTC (permalink / raw)
  To: dri-devel; +Cc: daniel.vetter, juha_efku, daniel.vetter

These fixes are found and fixed recently when hisilicon pull request
for 4.7 is merged into drm-next.
Thanks to Daniel Vetter and Juha Leppänen, who point out the things to
be fixed.

Xinliang Liu (3):
  drm/hisilicon: Use drm_connector_register_all
  drm/hisilicon: Make kirin_drm_unbind sufficient
  drm/hisilicon: Fix no DRM_INFO is printed issue

 drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c    |  3 +-
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 38 +++++--------------------
 2 files changed, 9 insertions(+), 32 deletions(-)

-- 
2.8.2

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/3] drm/hisilicon: Use drm_connector_register_all
  2016-05-09  2:32 [PATCH 0/3] A few fixes for 4.7 Xinliang Liu
@ 2016-05-09  2:32 ` Xinliang Liu
  2016-05-09  6:43   ` Daniel Vetter
  2016-05-09  2:32 ` [PATCH 2/3] drm/hisilicon: Make kirin_drm_unbind sufficient Xinliang Liu
  2016-05-09  2:32 ` [PATCH 3/3] drm/hisilicon: Fix no DRM_INFO is printed issue Xinliang Liu
  2 siblings, 1 reply; 8+ messages in thread
From: Xinliang Liu @ 2016-05-09  2:32 UTC (permalink / raw)
  To: dri-devel; +Cc: daniel.vetter, juha_efku, daniel.vetter

Use drm_connector_register_all helper to register connectors.
Thanks to Daniel Vetter, this patch is raised by him.

Signed-off-by: Xinliang Liu <xinliang.liu@linaro.org>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 31 +------------------------
 1 file changed, 1 insertion(+), 30 deletions(-)

diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
index e102c9e1e7b2..bc410ee584b7 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
@@ -201,35 +201,6 @@ static int compare_of(struct device *dev, void *data)
 	return dev->of_node == data;
 }
 
-static int kirin_drm_connectors_register(struct drm_device *dev)
-{
-	struct drm_connector *connector;
-	struct drm_connector *failed_connector;
-	int ret;
-
-	mutex_lock(&dev->mode_config.mutex);
-	drm_for_each_connector(connector, dev) {
-		ret = drm_connector_register(connector);
-		if (ret) {
-			failed_connector = connector;
-			goto err;
-		}
-	}
-	mutex_unlock(&dev->mode_config.mutex);
-
-	return 0;
-
-err:
-	drm_for_each_connector(connector, dev) {
-		if (failed_connector == connector)
-			break;
-		drm_connector_unregister(connector);
-	}
-	mutex_unlock(&dev->mode_config.mutex);
-
-	return ret;
-}
-
 static int kirin_drm_bind(struct device *dev)
 {
 	struct drm_driver *driver = &kirin_drm_driver;
@@ -251,7 +222,7 @@ static int kirin_drm_bind(struct device *dev)
 		goto err_kms_cleanup;
 
 	/* connectors should be registered after drm device register */
-	ret = kirin_drm_connectors_register(drm_dev);
+	ret = drm_connector_register_all(drm_dev);
 	if (ret)
 		goto err_drm_dev_unregister;
 
-- 
2.8.2

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/3] drm/hisilicon: Make kirin_drm_unbind sufficient
  2016-05-09  2:32 [PATCH 0/3] A few fixes for 4.7 Xinliang Liu
  2016-05-09  2:32 ` [PATCH 1/3] drm/hisilicon: Use drm_connector_register_all Xinliang Liu
@ 2016-05-09  2:32 ` Xinliang Liu
  2016-05-09  6:44   ` Daniel Vetter
  2016-05-09  2:32 ` [PATCH 3/3] drm/hisilicon: Fix no DRM_INFO is printed issue Xinliang Liu
  2 siblings, 1 reply; 8+ messages in thread
From: Xinliang Liu @ 2016-05-09  2:32 UTC (permalink / raw)
  To: dri-devel; +Cc: daniel.vetter, juha_efku, daniel.vetter

Remove deprecated drm_put_dev.
Clean up everything needed in unbind.
Thanks to Daniel Vetter, this issue is reported by him.

Signed-off-by: Xinliang Liu <xinliang.liu@linaro.org>
Reported-by: Daniel Vetter <daniel.vetter@intel.com>
---
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
index bc410ee584b7..3f94785fbcca 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
@@ -244,7 +244,12 @@ err_drm_dev_unref:
 
 static void kirin_drm_unbind(struct device *dev)
 {
-	drm_put_dev(dev_get_drvdata(dev));
+	struct drm_device *drm_dev = dev_get_drvdata(dev);
+
+	drm_connector_unregister_all(drm_dev);
+	drm_dev_unregister(drm_dev);
+	kirin_drm_kms_cleanup(drm_dev);
+	drm_dev_unref(drm_dev);
 }
 
 static const struct component_master_ops kirin_drm_ops = {
-- 
2.8.2

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/3] drm/hisilicon: Fix no DRM_INFO is printed issue
  2016-05-09  2:32 [PATCH 0/3] A few fixes for 4.7 Xinliang Liu
  2016-05-09  2:32 ` [PATCH 1/3] drm/hisilicon: Use drm_connector_register_all Xinliang Liu
  2016-05-09  2:32 ` [PATCH 2/3] drm/hisilicon: Make kirin_drm_unbind sufficient Xinliang Liu
@ 2016-05-09  2:32 ` Xinliang Liu
  2 siblings, 0 replies; 8+ messages in thread
From: Xinliang Liu @ 2016-05-09  2:32 UTC (permalink / raw)
  To: dri-devel; +Cc: daniel.vetter, juha_efku, daniel.vetter

This patch fixed the bellow no DRM_INFO is printed issue:

if (!delay_count)
	DRM_INFO("phylock and phystopstateclklane is not ready.\n");

The above info will not printed, under certain circumstances:
If ((BIT(0) | BIT(2)) & val) is never true, break will not happen and
delay_count will be max u32 value (?), and no DRM_INFO is printed.

Also if ((BIT(0) | BIT(2)) & val) is true at the last possible
loop round, break happens, but now delay_count is already zero
( because of earlier delay_count-- ) and DRM_INFO is erroneously
printed.

Thanks to Juha Leppänen, he reports to me this issue.

Signed-off-by: Xinliang Liu <xinliang.liu@linaro.org>
Reported-by: Juha Leppänen <juha_efku@dnainternet.net>
---
 drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c b/drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c
index bfbc2159250d..998452ad0fcb 100644
--- a/drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c
+++ b/drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c
@@ -430,12 +430,13 @@ static void dsi_set_mipi_phy(void __iomem *base,
 	 * wait for phy's clock ready
 	 */
 	delay_count = 100;
-	while (delay_count--) {
+	while (delay_count) {
 		val = readl(base +  PHY_STATUS);
 		if ((BIT(0) | BIT(2)) & val)
 			break;
 
 		udelay(1);
+		delay_count--;
 	}
 
 	if (!delay_count)
-- 
2.8.2

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] drm/hisilicon: Use drm_connector_register_all
  2016-05-09  2:32 ` [PATCH 1/3] drm/hisilicon: Use drm_connector_register_all Xinliang Liu
@ 2016-05-09  6:43   ` Daniel Vetter
  2016-05-09 13:54     ` Xinliang Liu
  0 siblings, 1 reply; 8+ messages in thread
From: Daniel Vetter @ 2016-05-09  6:43 UTC (permalink / raw)
  To: Xinliang Liu; +Cc: daniel.vetter, juha_efku, dri-devel, daniel.vetter

On Mon, May 09, 2016 at 10:32:06AM +0800, Xinliang Liu wrote:
> Use drm_connector_register_all helper to register connectors.
> Thanks to Daniel Vetter, this patch is raised by him.
> 
> Signed-off-by: Xinliang Liu <xinliang.liu@linaro.org>
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>

Seems like exactly my patch, except you've taken over authorship. Please
merge mine instead (except when there's a bug).
-Daniel

> ---
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 31 +------------------------
>  1 file changed, 1 insertion(+), 30 deletions(-)
> 
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
> index e102c9e1e7b2..bc410ee584b7 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
> @@ -201,35 +201,6 @@ static int compare_of(struct device *dev, void *data)
>  	return dev->of_node == data;
>  }
>  
> -static int kirin_drm_connectors_register(struct drm_device *dev)
> -{
> -	struct drm_connector *connector;
> -	struct drm_connector *failed_connector;
> -	int ret;
> -
> -	mutex_lock(&dev->mode_config.mutex);
> -	drm_for_each_connector(connector, dev) {
> -		ret = drm_connector_register(connector);
> -		if (ret) {
> -			failed_connector = connector;
> -			goto err;
> -		}
> -	}
> -	mutex_unlock(&dev->mode_config.mutex);
> -
> -	return 0;
> -
> -err:
> -	drm_for_each_connector(connector, dev) {
> -		if (failed_connector == connector)
> -			break;
> -		drm_connector_unregister(connector);
> -	}
> -	mutex_unlock(&dev->mode_config.mutex);
> -
> -	return ret;
> -}
> -
>  static int kirin_drm_bind(struct device *dev)
>  {
>  	struct drm_driver *driver = &kirin_drm_driver;
> @@ -251,7 +222,7 @@ static int kirin_drm_bind(struct device *dev)
>  		goto err_kms_cleanup;
>  
>  	/* connectors should be registered after drm device register */
> -	ret = kirin_drm_connectors_register(drm_dev);
> +	ret = drm_connector_register_all(drm_dev);
>  	if (ret)
>  		goto err_drm_dev_unregister;
>  
> -- 
> 2.8.2
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/3] drm/hisilicon: Make kirin_drm_unbind sufficient
  2016-05-09  2:32 ` [PATCH 2/3] drm/hisilicon: Make kirin_drm_unbind sufficient Xinliang Liu
@ 2016-05-09  6:44   ` Daniel Vetter
  2016-05-10  2:24     ` Xinliang Liu
  0 siblings, 1 reply; 8+ messages in thread
From: Daniel Vetter @ 2016-05-09  6:44 UTC (permalink / raw)
  To: Xinliang Liu; +Cc: daniel.vetter, juha_efku, dri-devel, daniel.vetter

On Mon, May 09, 2016 at 10:32:07AM +0800, Xinliang Liu wrote:
> Remove deprecated drm_put_dev.
> Clean up everything needed in unbind.
> Thanks to Daniel Vetter, this issue is reported by him.
> 
> Signed-off-by: Xinliang Liu <xinliang.liu@linaro.org>
> Reported-by: Daniel Vetter <daniel.vetter@intel.com>

Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
> index bc410ee584b7..3f94785fbcca 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
> @@ -244,7 +244,12 @@ err_drm_dev_unref:
>  
>  static void kirin_drm_unbind(struct device *dev)
>  {
> -	drm_put_dev(dev_get_drvdata(dev));
> +	struct drm_device *drm_dev = dev_get_drvdata(dev);
> +
> +	drm_connector_unregister_all(drm_dev);
> +	drm_dev_unregister(drm_dev);
> +	kirin_drm_kms_cleanup(drm_dev);
> +	drm_dev_unref(drm_dev);
>  }
>  
>  static const struct component_master_ops kirin_drm_ops = {
> -- 
> 2.8.2
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] drm/hisilicon: Use drm_connector_register_all
  2016-05-09  6:43   ` Daniel Vetter
@ 2016-05-09 13:54     ` Xinliang Liu
  0 siblings, 0 replies; 8+ messages in thread
From: Xinliang Liu @ 2016-05-09 13:54 UTC (permalink / raw)
  To: Daniel Vetter; +Cc: Daniel Vetter, Juha Leppänen, dri-devel, Daniel Vetter

On 9 May 2016 at 14:43, Daniel Vetter <daniel@ffwll.ch> wrote:
> On Mon, May 09, 2016 at 10:32:06AM +0800, Xinliang Liu wrote:
>> Use drm_connector_register_all helper to register connectors.
>> Thanks to Daniel Vetter, this patch is raised by him.
>>
>> Signed-off-by: Xinliang Liu <xinliang.liu@linaro.org>
>> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
>
> Seems like exactly my patch, except you've taken over authorship. Please
> merge mine instead (except when there's a bug).

OK, I will merge yours instead.

Thanks,
-xinliang

> -Daniel
>
>> ---
>>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 31 +------------------------
>>  1 file changed, 1 insertion(+), 30 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
>> index e102c9e1e7b2..bc410ee584b7 100644
>> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
>> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
>> @@ -201,35 +201,6 @@ static int compare_of(struct device *dev, void *data)
>>       return dev->of_node == data;
>>  }
>>
>> -static int kirin_drm_connectors_register(struct drm_device *dev)
>> -{
>> -     struct drm_connector *connector;
>> -     struct drm_connector *failed_connector;
>> -     int ret;
>> -
>> -     mutex_lock(&dev->mode_config.mutex);
>> -     drm_for_each_connector(connector, dev) {
>> -             ret = drm_connector_register(connector);
>> -             if (ret) {
>> -                     failed_connector = connector;
>> -                     goto err;
>> -             }
>> -     }
>> -     mutex_unlock(&dev->mode_config.mutex);
>> -
>> -     return 0;
>> -
>> -err:
>> -     drm_for_each_connector(connector, dev) {
>> -             if (failed_connector == connector)
>> -                     break;
>> -             drm_connector_unregister(connector);
>> -     }
>> -     mutex_unlock(&dev->mode_config.mutex);
>> -
>> -     return ret;
>> -}
>> -
>>  static int kirin_drm_bind(struct device *dev)
>>  {
>>       struct drm_driver *driver = &kirin_drm_driver;
>> @@ -251,7 +222,7 @@ static int kirin_drm_bind(struct device *dev)
>>               goto err_kms_cleanup;
>>
>>       /* connectors should be registered after drm device register */
>> -     ret = kirin_drm_connectors_register(drm_dev);
>> +     ret = drm_connector_register_all(drm_dev);
>>       if (ret)
>>               goto err_drm_dev_unregister;
>>
>> --
>> 2.8.2
>>
>
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/3] drm/hisilicon: Make kirin_drm_unbind sufficient
  2016-05-09  6:44   ` Daniel Vetter
@ 2016-05-10  2:24     ` Xinliang Liu
  0 siblings, 0 replies; 8+ messages in thread
From: Xinliang Liu @ 2016-05-10  2:24 UTC (permalink / raw)
  To: Daniel Vetter; +Cc: Daniel Vetter, Juha Leppänen, dri-devel, Daniel Vetter

On 9 May 2016 at 14:44, Daniel Vetter <daniel@ffwll.ch> wrote:
> On Mon, May 09, 2016 at 10:32:07AM +0800, Xinliang Liu wrote:
>> Remove deprecated drm_put_dev.
>> Clean up everything needed in unbind.
>> Thanks to Daniel Vetter, this issue is reported by him.
>>
>> Signed-off-by: Xinliang Liu <xinliang.liu@linaro.org>
>> Reported-by: Daniel Vetter <daniel.vetter@intel.com>
>
> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Thanks, Daniel.
-xinliang

>> ---
>>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 7 ++++++-
>>  1 file changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
>> index bc410ee584b7..3f94785fbcca 100644
>> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
>> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c
>> @@ -244,7 +244,12 @@ err_drm_dev_unref:
>>
>>  static void kirin_drm_unbind(struct device *dev)
>>  {
>> -     drm_put_dev(dev_get_drvdata(dev));
>> +     struct drm_device *drm_dev = dev_get_drvdata(dev);
>> +
>> +     drm_connector_unregister_all(drm_dev);
>> +     drm_dev_unregister(drm_dev);
>> +     kirin_drm_kms_cleanup(drm_dev);
>> +     drm_dev_unref(drm_dev);
>>  }
>>
>>  static const struct component_master_ops kirin_drm_ops = {
>> --
>> 2.8.2
>>
>
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-05-10  2:25 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-09  2:32 [PATCH 0/3] A few fixes for 4.7 Xinliang Liu
2016-05-09  2:32 ` [PATCH 1/3] drm/hisilicon: Use drm_connector_register_all Xinliang Liu
2016-05-09  6:43   ` Daniel Vetter
2016-05-09 13:54     ` Xinliang Liu
2016-05-09  2:32 ` [PATCH 2/3] drm/hisilicon: Make kirin_drm_unbind sufficient Xinliang Liu
2016-05-09  6:44   ` Daniel Vetter
2016-05-10  2:24     ` Xinliang Liu
2016-05-09  2:32 ` [PATCH 3/3] drm/hisilicon: Fix no DRM_INFO is printed issue Xinliang Liu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox