hc
2023-12-09 b22da3d8526a935aa31e086e63f60ff3246cb61c
kernel/drivers/uio/uio_fsl_elbc_gpcm.c
....@@ -68,14 +68,20 @@
6868 static ssize_t reg_store(struct device *dev, struct device_attribute *attr,
6969 const char *buf, size_t count);
7070
71
-DEVICE_ATTR(reg_br, S_IRUGO|S_IWUSR|S_IWGRP, reg_show, reg_store);
72
-DEVICE_ATTR(reg_or, S_IRUGO|S_IWUSR|S_IWGRP, reg_show, reg_store);
71
+static DEVICE_ATTR(reg_br, 0664, reg_show, reg_store);
72
+static DEVICE_ATTR(reg_or, 0664, reg_show, reg_store);
73
+
74
+static struct attribute *uio_fsl_elbc_gpcm_attrs[] = {
75
+ &dev_attr_reg_br.attr,
76
+ &dev_attr_reg_or.attr,
77
+ NULL,
78
+};
79
+ATTRIBUTE_GROUPS(uio_fsl_elbc_gpcm);
7380
7481 static ssize_t reg_show(struct device *dev, struct device_attribute *attr,
7582 char *buf)
7683 {
77
- struct platform_device *pdev = to_platform_device(dev);
78
- struct uio_info *info = platform_get_drvdata(pdev);
84
+ struct uio_info *info = dev_get_drvdata(dev);
7985 struct fsl_elbc_gpcm *priv = info->priv;
8086 struct fsl_lbc_bank *bank = &priv->lbc->bank[priv->bank];
8187
....@@ -94,8 +100,7 @@
94100 static ssize_t reg_store(struct device *dev, struct device_attribute *attr,
95101 const char *buf, size_t count)
96102 {
97
- struct platform_device *pdev = to_platform_device(dev);
98
- struct uio_info *info = platform_get_drvdata(pdev);
103
+ struct uio_info *info = dev_get_drvdata(dev);
99104 struct fsl_elbc_gpcm *priv = info->priv;
100105 struct fsl_lbc_bank *bank = &priv->lbc->bank[priv->bank];
101106 unsigned long val;
....@@ -382,8 +387,7 @@
382387 }
383388
384389 /* set all UIO data */
385
- if (node->name)
386
- info->mem[0].name = kstrdup(node->name, GFP_KERNEL);
390
+ info->mem[0].name = kasprintf(GFP_KERNEL, "%pOFn", node);
387391 info->mem[0].addr = res.start;
388392 info->mem[0].size = resource_size(&res);
389393 info->mem[0].memtype = UIO_MEM_PHYS;
....@@ -414,25 +418,12 @@
414418 /* store private data */
415419 platform_set_drvdata(pdev, info);
416420
417
- /* create sysfs files */
418
- ret = device_create_file(priv->dev, &dev_attr_reg_br);
419
- if (ret)
420
- goto out_err3;
421
- ret = device_create_file(priv->dev, &dev_attr_reg_or);
422
- if (ret)
423
- goto out_err4;
424
-
425421 dev_info(priv->dev,
426422 "eLBC/GPCM device (%s) at 0x%llx, bank %d, irq=%d\n",
427423 priv->name, (unsigned long long)res.start, priv->bank,
428424 irq != NO_IRQ ? irq : -1);
429425
430426 return 0;
431
-out_err4:
432
- device_remove_file(priv->dev, &dev_attr_reg_br);
433
-out_err3:
434
- platform_set_drvdata(pdev, NULL);
435
- uio_unregister_device(info);
436427 out_err2:
437428 if (priv->shutdown)
438429 priv->shutdown(info, true);
....@@ -451,8 +442,6 @@
451442 struct uio_info *info = platform_get_drvdata(pdev);
452443 struct fsl_elbc_gpcm *priv = info->priv;
453444
454
- device_remove_file(priv->dev, &dev_attr_reg_or);
455
- device_remove_file(priv->dev, &dev_attr_reg_br);
456445 platform_set_drvdata(pdev, NULL);
457446 uio_unregister_device(info);
458447 if (priv->shutdown)
....@@ -477,6 +466,7 @@
477466 .driver = {
478467 .name = "fsl,elbc-gpcm-uio",
479468 .of_match_table = uio_fsl_elbc_gpcm_match,
469
+ .dev_groups = uio_fsl_elbc_gpcm_groups,
480470 },
481471 .probe = uio_fsl_elbc_gpcm_probe,
482472 .remove = uio_fsl_elbc_gpcm_remove,