diff mbox series

[3/3] drm/exynos-vidi: convert platform driver to use dev_groups

Message ID 20200517193655.3895087-3-emil.l.velikov@gmail.com (mailing list archive)
State New, archived
Headers show
Series [1/3] drm/arm: Kconfig annotate drivers as COMPILE_TEST | expand

Commit Message

Emil Velikov May 17, 2020, 7:36 p.m. UTC
Platform drivers now have the option to have the platform core create
and remove any needed sysfs attribute files.  So take advantage of that
and do not register "by hand" a sysfs file.

Cc: Inki Dae <inki.dae@samsung.com>
Cc: Joonyoung Shim <jy0922.shim@samsung.com>
Cc: Seung-Woo Kim <sw0312.kim@samsung.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: dri-devel@lists.freedesktop.org
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
---
Compile tested only. Please test locally and merge through your tree.
---
 drivers/gpu/drm/exynos/exynos_drm_vidi.c | 26 ++++++++----------------
 1 file changed, 8 insertions(+), 18 deletions(-)

Comments

Inki Dae May 18, 2020, 5:03 a.m. UTC | #1
Hi Email,

20. 5. 18. 오전 4:36에 Emil Velikov 이(가) 쓴 글:
> Platform drivers now have the option to have the platform core create
> and remove any needed sysfs attribute files.  So take advantage of that
> and do not register "by hand" a sysfs file.
> 
> Cc: Inki Dae <inki.dae@samsung.com>
> Cc: Joonyoung Shim <jy0922.shim@samsung.com>
> Cc: Seung-Woo Kim <sw0312.kim@samsung.com>
> Cc: Kyungmin Park <kyungmin.park@samsung.com>
> Cc: dri-devel@lists.freedesktop.org
> Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
> ---
> Compile tested only. Please test locally and merge through your tree.

Thanks for taking care of this. Tested and worked well like below,
# echo 1 > /sys/devices/platform/exynos-drm-vidi/connection
# modetest -M exynos -v -s 91@89:1920x1080 -s 77@54:1440x2560
setting mode 1920x1080-60Hz@XR24 on connectors 91, crtc 89
setting mode 1440x2560-60Hz@XR24 on connectors 77, crtc 54
freq: 60.22Hz
freq: 50.44Hz
freq: 59.78Hz
freq: 50.00Hz
freq: 59.77Hz
freq: 50.00Hz

Ps. 91 is connector ID of exynos-drm-vidi


Merged.

Thanks,
Inki Dae

> ---
>  drivers/gpu/drm/exynos/exynos_drm_vidi.c | 26 ++++++++----------------
>  1 file changed, 8 insertions(+), 18 deletions(-)
> 
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_vidi.c b/drivers/gpu/drm/exynos/exynos_drm_vidi.c
> index 282467121699..e5662bdcbbde 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_vidi.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_vidi.c
> @@ -214,6 +214,12 @@ static ssize_t vidi_store_connection(struct device *dev,
>  static DEVICE_ATTR(connection, 0644, vidi_show_connection,
>  			vidi_store_connection);
>  
> +static struct attribute *vidi_attrs[] = {
> +	&dev_attr_connection.attr,
> +	NULL,
> +};
> +ATTRIBUTE_GROUPS(vidi);
> +
>  int vidi_connection_ioctl(struct drm_device *drm_dev, void *data,
>  				struct drm_file *file_priv)
>  {
> @@ -439,7 +445,6 @@ static int vidi_probe(struct platform_device *pdev)
>  {
>  	struct vidi_context *ctx;
>  	struct device *dev = &pdev->dev;
> -	int ret;
>  
>  	ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL);
>  	if (!ctx)
> @@ -453,23 +458,7 @@ static int vidi_probe(struct platform_device *pdev)
>  
>  	platform_set_drvdata(pdev, ctx);
>  
> -	ret = device_create_file(dev, &dev_attr_connection);
> -	if (ret < 0) {
> -		DRM_DEV_ERROR(dev,
> -			      "failed to create connection sysfs.\n");
> -		return ret;
> -	}
> -
> -	ret = component_add(dev, &vidi_component_ops);
> -	if (ret)
> -		goto err_remove_file;
> -
> -	return ret;
> -
> -err_remove_file:
> -	device_remove_file(dev, &dev_attr_connection);
> -
> -	return ret;
> +	return component_add(dev, &vidi_component_ops);
>  }
>  
>  static int vidi_remove(struct platform_device *pdev)
> @@ -494,5 +483,6 @@ struct platform_driver vidi_driver = {
>  	.driver		= {
>  		.name	= "exynos-drm-vidi",
>  		.owner	= THIS_MODULE,
> +		.dev_groups = vidi_groups,
>  	},
>  };
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/exynos/exynos_drm_vidi.c b/drivers/gpu/drm/exynos/exynos_drm_vidi.c
index 282467121699..e5662bdcbbde 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_vidi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_vidi.c
@@ -214,6 +214,12 @@  static ssize_t vidi_store_connection(struct device *dev,
 static DEVICE_ATTR(connection, 0644, vidi_show_connection,
 			vidi_store_connection);
 
+static struct attribute *vidi_attrs[] = {
+	&dev_attr_connection.attr,
+	NULL,
+};
+ATTRIBUTE_GROUPS(vidi);
+
 int vidi_connection_ioctl(struct drm_device *drm_dev, void *data,
 				struct drm_file *file_priv)
 {
@@ -439,7 +445,6 @@  static int vidi_probe(struct platform_device *pdev)
 {
 	struct vidi_context *ctx;
 	struct device *dev = &pdev->dev;
-	int ret;
 
 	ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL);
 	if (!ctx)
@@ -453,23 +458,7 @@  static int vidi_probe(struct platform_device *pdev)
 
 	platform_set_drvdata(pdev, ctx);
 
-	ret = device_create_file(dev, &dev_attr_connection);
-	if (ret < 0) {
-		DRM_DEV_ERROR(dev,
-			      "failed to create connection sysfs.\n");
-		return ret;
-	}
-
-	ret = component_add(dev, &vidi_component_ops);
-	if (ret)
-		goto err_remove_file;
-
-	return ret;
-
-err_remove_file:
-	device_remove_file(dev, &dev_attr_connection);
-
-	return ret;
+	return component_add(dev, &vidi_component_ops);
 }
 
 static int vidi_remove(struct platform_device *pdev)
@@ -494,5 +483,6 @@  struct platform_driver vidi_driver = {
 	.driver		= {
 		.name	= "exynos-drm-vidi",
 		.owner	= THIS_MODULE,
+		.dev_groups = vidi_groups,
 	},
 };