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 |
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 --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, }, };
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(-)