Lines Matching refs:lh
163 static long linehandle_set_config(struct linehandle_state *lh, in linehandle_set_config() argument
183 for (i = 0; i < lh->num_descs; i++) { in linehandle_set_config()
184 desc = lh->descs[i]; in linehandle_set_config()
207 struct linehandle_state *lh = file->private_data; in linehandle_ioctl() local
214 guard(srcu)(&lh->gdev->srcu); in linehandle_ioctl()
216 if (!rcu_access_pointer(lh->gdev->chip)) in linehandle_ioctl()
223 lh->num_descs, lh->descs, in linehandle_ioctl()
229 for (i = 0; i < lh->num_descs; i++) in linehandle_ioctl()
241 if (!test_bit(FLAG_IS_OUT, &lh->descs[0]->flags)) in linehandle_ioctl()
248 for (i = 0; i < lh->num_descs; i++) in linehandle_ioctl()
254 lh->num_descs, in linehandle_ioctl()
255 lh->descs, in linehandle_ioctl()
259 return linehandle_set_config(lh, ip); in linehandle_ioctl()
273 static void linehandle_free(struct linehandle_state *lh) in linehandle_free() argument
277 for (i = 0; i < lh->num_descs; i++) in linehandle_free()
278 if (lh->descs[i]) in linehandle_free()
279 gpiod_free(lh->descs[i]); in linehandle_free()
280 kfree(lh->label); in linehandle_free()
281 gpio_device_put(lh->gdev); in linehandle_free()
282 kfree(lh); in linehandle_free()
304 struct linehandle_state *lh; in linehandle_create() local
320 lh = kzalloc(sizeof(*lh), GFP_KERNEL); in linehandle_create()
321 if (!lh) in linehandle_create()
323 lh->gdev = gpio_device_get(gdev); in linehandle_create()
327 lh->label = kstrndup(handlereq.consumer_label, in linehandle_create()
330 if (!lh->label) { in linehandle_create()
336 lh->num_descs = handlereq.lines; in linehandle_create()
348 ret = gpiod_request_user(desc, lh->label); in linehandle_create()
351 lh->descs[i] = desc; in linehandle_create()
388 lh, in linehandle_create()
409 lh->num_descs); in linehandle_create()
416 linehandle_free(lh); in linehandle_create()