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