forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-11 04dd17822334871b23ea2862f7798fb0e0007777
kernel/drivers/usb/misc/trancevibrator.c
....@@ -46,7 +46,9 @@
4646 struct trancevibrator *tv = usb_get_intfdata(intf);
4747 int temp, retval, old;
4848
49
- temp = simple_strtoul(buf, NULL, 10);
49
+ retval = kstrtoint(buf, 10, &temp);
50
+ if (retval)
51
+ return retval;
5052 if (temp > 255)
5153 temp = 255;
5254 else if (temp < 0)
....@@ -69,8 +71,13 @@
6971 }
7072 return count;
7173 }
72
-
7374 static DEVICE_ATTR_RW(speed);
75
+
76
+static struct attribute *tv_attrs[] = {
77
+ &dev_attr_speed.attr,
78
+ NULL,
79
+};
80
+ATTRIBUTE_GROUPS(tv);
7481
7582 static int tv_probe(struct usb_interface *interface,
7683 const struct usb_device_id *id)
....@@ -87,15 +94,9 @@
8794
8895 dev->udev = usb_get_dev(udev);
8996 usb_set_intfdata(interface, dev);
90
- retval = device_create_file(&interface->dev, &dev_attr_speed);
91
- if (retval)
92
- goto error_create_file;
9397
9498 return 0;
9599
96
-error_create_file:
97
- usb_put_dev(udev);
98
- usb_set_intfdata(interface, NULL);
99100 error:
100101 kfree(dev);
101102 return retval;
....@@ -106,7 +107,6 @@
106107 struct trancevibrator *dev;
107108
108109 dev = usb_get_intfdata (interface);
109
- device_remove_file(&interface->dev, &dev_attr_speed);
110110 usb_set_intfdata(interface, NULL);
111111 usb_put_dev(dev->udev);
112112 kfree(dev);
....@@ -118,6 +118,7 @@
118118 .probe = tv_probe,
119119 .disconnect = tv_disconnect,
120120 .id_table = id_table,
121
+ .dev_groups = tv_groups,
121122 };
122123
123124 module_usb_driver(tv_driver);