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

Inki Dae inki.dae at samsung.com
Mon May 18 05:03:04 UTC 2020


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 at samsung.com>
> Cc: Joonyoung Shim <jy0922.shim at samsung.com>
> Cc: Seung-Woo Kim <sw0312.kim at samsung.com>
> Cc: Kyungmin Park <kyungmin.park at samsung.com>
> Cc: dri-devel at lists.freedesktop.org
> Signed-off-by: Emil Velikov <emil.l.velikov at 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 at 89:1920x1080 -s 77 at 54:1440x2560
setting mode 1920x1080-60Hz at XR24 on connectors 91, crtc 89
setting mode 1440x2560-60Hz at 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,
>  	},
>  };
> 


More information about the dri-devel mailing list