Lines Matching defs:fwd
309 struct gpiochip_fwd *fwd = gpiochip_get_data(chip);
311 return gpiod_get_direction(fwd->descs[offset]);
316 struct gpiochip_fwd *fwd = gpiochip_get_data(chip);
318 return gpiod_direction_input(fwd->descs[offset]);
324 struct gpiochip_fwd *fwd = gpiochip_get_data(chip);
326 return gpiod_direction_output(fwd->descs[offset], value);
331 struct gpiochip_fwd *fwd = gpiochip_get_data(chip);
333 return chip->can_sleep ? gpiod_get_value_cansleep(fwd->descs[offset])
334 : gpiod_get_value(fwd->descs[offset]);
337 static int gpio_fwd_get_multiple(struct gpiochip_fwd *fwd, unsigned long *mask,
346 values = &fwd->tmp[0];
347 descs = (void *)&fwd->tmp[BITS_TO_LONGS(fwd->chip.ngpio)];
349 bitmap_clear(values, 0, fwd->chip.ngpio);
350 for_each_set_bit(i, mask, fwd->chip.ngpio)
351 descs[j++] = fwd->descs[i];
353 if (fwd->chip.can_sleep)
361 for_each_set_bit(i, mask, fwd->chip.ngpio)
370 struct gpiochip_fwd *fwd = gpiochip_get_data(chip);
375 mutex_lock(&fwd->mlock);
376 error = gpio_fwd_get_multiple(fwd, mask, bits);
377 mutex_unlock(&fwd->mlock);
379 spin_lock_irqsave(&fwd->slock, flags);
380 error = gpio_fwd_get_multiple(fwd, mask, bits);
381 spin_unlock_irqrestore(&fwd->slock, flags);
389 struct gpiochip_fwd *fwd = gpiochip_get_data(chip);
392 gpiod_set_value_cansleep(fwd->descs[offset], value);
394 gpiod_set_value(fwd->descs[offset], value);
397 static void gpio_fwd_set_multiple(struct gpiochip_fwd *fwd, unsigned long *mask,
405 values = &fwd->tmp[0];
406 descs = (void *)&fwd->tmp[BITS_TO_LONGS(fwd->chip.ngpio)];
408 for_each_set_bit(i, mask, fwd->chip.ngpio) {
410 descs[j++] = fwd->descs[i];
413 if (fwd->chip.can_sleep)
422 struct gpiochip_fwd *fwd = gpiochip_get_data(chip);
426 mutex_lock(&fwd->mlock);
427 gpio_fwd_set_multiple(fwd, mask, bits);
428 mutex_unlock(&fwd->mlock);
430 spin_lock_irqsave(&fwd->slock, flags);
431 gpio_fwd_set_multiple(fwd, mask, bits);
432 spin_unlock_irqrestore(&fwd->slock, flags);
439 struct gpiochip_fwd *fwd = gpiochip_get_data(chip);
441 return gpiod_set_config(fwd->descs[offset], config);
463 struct gpiochip_fwd *fwd;
468 fwd = devm_kzalloc(dev, struct_size(fwd, tmp,
470 if (!fwd)
473 chip = &fwd->chip;
504 fwd->descs = descs;
507 mutex_init(&fwd->mlock);
509 spin_lock_init(&fwd->slock);
511 error = devm_gpiochip_add_data(dev, chip, fwd);
515 return fwd;
527 struct gpiochip_fwd *fwd;
544 fwd = gpiochip_fwd_create(dev, n, descs);
545 if (IS_ERR(fwd))
546 return PTR_ERR(fwd);
548 platform_set_drvdata(pdev, fwd);