Lines Matching refs:cur
154 struct bsr_dev *cur, *n;
156 list_for_each_entry_safe(cur, n, &bsr_devs, bsr_list) {
157 if (cur->bsr_device) {
158 cdev_del(&cur->bsr_cdev);
159 device_del(cur->bsr_device);
161 list_del(&cur->bsr_list);
162 kfree(cur);
186 struct bsr_dev *cur = kzalloc(sizeof(struct bsr_dev),
191 if (!cur) {
200 kfree(cur);
204 cur->bsr_minor = i + total_bsr_devs;
205 cur->bsr_addr = res.start;
206 cur->bsr_len = resource_size(&res);
207 cur->bsr_bytes = bsr_bytes[i];
208 cur->bsr_stride = bsr_stride[i];
209 cur->bsr_dev = MKDEV(bsr_major, i + total_bsr_devs);
213 if (cur->bsr_len > 4096 && cur->bsr_len < PAGE_SIZE)
214 cur->bsr_len = 4096;
216 switch(cur->bsr_bytes) {
218 cur->bsr_type = BSR_8;
221 cur->bsr_type = BSR_16;
224 cur->bsr_type = BSR_64;
227 cur->bsr_type = BSR_128;
230 cur->bsr_type = BSR_4096;
233 cur->bsr_type = BSR_UNKNOWN;
236 cur->bsr_num = bsr_types[cur->bsr_type];
237 snprintf(cur->bsr_name, 32, "bsr%d_%d",
238 cur->bsr_bytes, cur->bsr_num);
240 cdev_init(&cur->bsr_cdev, &bsr_fops);
241 result = cdev_add(&cur->bsr_cdev, cur->bsr_dev, 1);
243 kfree(cur);
247 cur->bsr_device = device_create(bsr_class, NULL, cur->bsr_dev,
248 cur, "%s", cur->bsr_name);
249 if (IS_ERR(cur->bsr_device)) {
251 cur->bsr_name);
252 cdev_del(&cur->bsr_cdev);
253 kfree(cur);
257 bsr_types[cur->bsr_type] = cur->bsr_num + 1;
258 list_add_tail(&cur->bsr_list, &bsr_devs);