All of 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 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.