diff options
author | Luis R. Rodriguez <mcgrof@kernel.org> | 2017-01-23 11:11:06 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-01-25 05:52:34 -0500 |
commit | 083a93b0c1f2eff2561305d0b95ac238fbfd100b (patch) | |
tree | be2872f006fb1558ee4a416ec1c34ae83141fe8b /lib/test_firmware.c | |
parent | 67fd553ce0e55a468ee24f61ddf6b40ba610bbb5 (diff) |
test_firmware: use device attribute groups
This simplifies init and exit.
Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'lib/test_firmware.c')
-rw-r--r-- | lib/test_firmware.c | 35 |
1 files changed, 11 insertions, 24 deletions
diff --git a/lib/test_firmware.c b/lib/test_firmware.c index 1cb9bf9eb41f..38cc188c4d3c 100644 --- a/lib/test_firmware.c +++ b/lib/test_firmware.c | |||
@@ -126,10 +126,21 @@ out: | |||
126 | } | 126 | } |
127 | static DEVICE_ATTR_WO(trigger_async_request); | 127 | static DEVICE_ATTR_WO(trigger_async_request); |
128 | 128 | ||
129 | #define TEST_FW_DEV_ATTR(name) &dev_attr_##name.attr | ||
130 | |||
131 | static struct attribute *test_dev_attrs[] = { | ||
132 | TEST_FW_DEV_ATTR(trigger_request), | ||
133 | TEST_FW_DEV_ATTR(trigger_async_request), | ||
134 | NULL, | ||
135 | }; | ||
136 | |||
137 | ATTRIBUTE_GROUPS(test_dev); | ||
138 | |||
129 | static struct miscdevice test_fw_misc_device = { | 139 | static struct miscdevice test_fw_misc_device = { |
130 | .minor = MISC_DYNAMIC_MINOR, | 140 | .minor = MISC_DYNAMIC_MINOR, |
131 | .name = "test_firmware", | 141 | .name = "test_firmware", |
132 | .fops = &test_fw_fops, | 142 | .fops = &test_fw_fops, |
143 | .groups = test_dev_groups, | ||
133 | }; | 144 | }; |
134 | 145 | ||
135 | static int __init test_firmware_init(void) | 146 | static int __init test_firmware_init(void) |
@@ -141,30 +152,10 @@ static int __init test_firmware_init(void) | |||
141 | pr_err("could not register misc device: %d\n", rc); | 152 | pr_err("could not register misc device: %d\n", rc); |
142 | return rc; | 153 | return rc; |
143 | } | 154 | } |
144 | rc = device_create_file(test_fw_misc_device.this_device, | ||
145 | &dev_attr_trigger_request); | ||
146 | if (rc) { | ||
147 | pr_err("could not create sysfs interface: %d\n", rc); | ||
148 | goto dereg; | ||
149 | } | ||
150 | |||
151 | rc = device_create_file(test_fw_misc_device.this_device, | ||
152 | &dev_attr_trigger_async_request); | ||
153 | if (rc) { | ||
154 | pr_err("could not create async sysfs interface: %d\n", rc); | ||
155 | goto remove_file; | ||
156 | } | ||
157 | 155 | ||
158 | pr_warn("interface ready\n"); | 156 | pr_warn("interface ready\n"); |
159 | 157 | ||
160 | return 0; | 158 | return 0; |
161 | |||
162 | remove_file: | ||
163 | device_remove_file(test_fw_misc_device.this_device, | ||
164 | &dev_attr_trigger_async_request); | ||
165 | dereg: | ||
166 | misc_deregister(&test_fw_misc_device); | ||
167 | return rc; | ||
168 | } | 159 | } |
169 | 160 | ||
170 | module_init(test_firmware_init); | 161 | module_init(test_firmware_init); |
@@ -172,10 +163,6 @@ module_init(test_firmware_init); | |||
172 | static void __exit test_firmware_exit(void) | 163 | static void __exit test_firmware_exit(void) |
173 | { | 164 | { |
174 | release_firmware(test_firmware); | 165 | release_firmware(test_firmware); |
175 | device_remove_file(test_fw_misc_device.this_device, | ||
176 | &dev_attr_trigger_async_request); | ||
177 | device_remove_file(test_fw_misc_device.this_device, | ||
178 | &dev_attr_trigger_request); | ||
179 | misc_deregister(&test_fw_misc_device); | 166 | misc_deregister(&test_fw_misc_device); |
180 | pr_warn("removed interface\n"); | 167 | pr_warn("removed interface\n"); |
181 | } | 168 | } |