Lines Matching refs:lh
156 static long linehandle_set_config(struct linehandle_state *lh,
172 for (i = 0; i < lh->num_descs; i++) {
173 desc = lh->descs[i];
200 struct linehandle_state *lh = file->private_data;
207 guard(srcu)(&lh->gdev->srcu);
209 if (!rcu_access_pointer(lh->gdev->chip))
216 lh->num_descs, lh->descs,
222 for (i = 0; i < lh->num_descs; i++)
234 if (!test_bit(FLAG_IS_OUT, &lh->descs[0]->flags))
241 for (i = 0; i < lh->num_descs; i++)
247 lh->num_descs,
248 lh->descs,
252 return linehandle_set_config(lh, ip);
266 static void linehandle_free(struct linehandle_state *lh)
270 for (i = 0; i < lh->num_descs; i++)
271 if (lh->descs[i])
272 gpiod_free(lh->descs[i]);
273 kfree(lh->label);
274 gpio_device_put(lh->gdev);
275 kfree(lh);
297 struct linehandle_state *lh;
313 lh = kzalloc(sizeof(*lh), GFP_KERNEL);
314 if (!lh)
316 lh->gdev = gpio_device_get(gdev);
320 lh->label = kstrndup(handlereq.consumer_label,
323 if (!lh->label) {
329 lh->num_descs = handlereq.lines;
341 ret = gpiod_request_user(desc, lh->label);
344 lh->descs[i] = desc;
381 lh,
402 lh->num_descs);
409 linehandle_free(lh);