Lines Matching refs:descs

118 			return &gdev->descs[gpio - gdev->base];  in gpio_to_desc()
149 return &gdev->descs[hwnum]; in gpiochip_get_desc()
165 return desc->gdev->base + (desc - &desc->gdev->descs[0]); in desc_to_gpio()
316 struct gpio_desc *desc = &gdev->descs[i]; in gpio_name_to_desc()
359 gdev->descs[i].name = gc->names[i]; in gpiochip_set_desc_names()
426 gdev->descs[i].name = names[chip->offset + i]; in devprop_gpiochip_set_names()
504 kfree(gdev->descs); in gpiodevice_release()
643 gdev->descs = kcalloc(gc->ngpio, sizeof(gdev->descs[0]), GFP_KERNEL); in gpiochip_add_data_with_key()
644 if (!gdev->descs) { in gpiochip_add_data_with_key()
701 gdev->descs[i].gdev = gdev; in gpiochip_add_data_with_key()
731 struct gpio_desc *desc = &gdev->descs[i]; in gpiochip_add_data_with_key()
796 kfree(gdev->descs); in gpiochip_add_data_with_key()
3229 return test_bit(FLAG_USED_AS_IRQ, &gc->gpiodev->descs[offset].flags); in gpiochip_line_is_irq()
3262 return test_bit(FLAG_OPEN_DRAIN, &gc->gpiodev->descs[offset].flags); in gpiochip_line_is_open_drain()
3271 return test_bit(FLAG_OPEN_SOURCE, &gc->gpiodev->descs[offset].flags); in gpiochip_line_is_open_source()
3280 return !test_bit(FLAG_TRANSITORY, &gc->gpiodev->descs[offset].flags); in gpiochip_line_is_persistent()
4065 if (test_bit(FLAG_IS_HOGGED, &gc->gpiodev->descs[id].flags)) in gpiochip_free_hogs()
4066 gpiochip_free_own_desc(&gc->gpiodev->descs[id]); in gpiochip_free_hogs()
4087 struct gpio_descs *descs; in gpiod_get_array() local
4096 descs = kzalloc(struct_size(descs, desc, count), GFP_KERNEL); in gpiod_get_array()
4097 if (!descs) in gpiod_get_array()
4100 for (descs->ndescs = 0; descs->ndescs < count; ) { in gpiod_get_array()
4101 desc = gpiod_get_index(dev, con_id, descs->ndescs, flags); in gpiod_get_array()
4103 gpiod_put_array(descs); in gpiod_get_array()
4107 descs->desc[descs->ndescs] = desc; in gpiod_get_array()
4114 if (descs->ndescs == 0 && gpio_chip_hwgpio(desc) == 0) { in gpiod_get_array()
4120 array = kzalloc(struct_size(descs, desc, count) + in gpiod_get_array()
4124 gpiod_put_array(descs); in gpiod_get_array()
4128 memcpy(array, descs, in gpiod_get_array()
4129 struct_size(descs, desc, descs->ndescs + 1)); in gpiod_get_array()
4130 kfree(descs); in gpiod_get_array()
4132 descs = array; in gpiod_get_array()
4133 array_info = (void *)(descs->desc + count); in gpiod_get_array()
4139 array_info->desc = descs->desc; in gpiod_get_array()
4142 bitmap_set(array_info->get_mask, descs->ndescs, in gpiod_get_array()
4143 count - descs->ndescs); in gpiod_get_array()
4144 bitmap_set(array_info->set_mask, descs->ndescs, in gpiod_get_array()
4145 count - descs->ndescs); in gpiod_get_array()
4146 descs->info = array_info; in gpiod_get_array()
4150 __clear_bit(descs->ndescs, array_info->get_mask); in gpiod_get_array()
4151 __clear_bit(descs->ndescs, array_info->set_mask); in gpiod_get_array()
4158 gpio_chip_hwgpio(desc) != descs->ndescs) { in gpiod_get_array()
4164 if (bitmap_full(array_info->get_mask, descs->ndescs)) { in gpiod_get_array()
4167 __clear_bit(descs->ndescs, in gpiod_get_array()
4169 __clear_bit(descs->ndescs, in gpiod_get_array()
4174 if (gpiochip_line_is_open_drain(gc, descs->ndescs) || in gpiod_get_array()
4175 gpiochip_line_is_open_source(gc, descs->ndescs)) in gpiod_get_array()
4176 __clear_bit(descs->ndescs, in gpiod_get_array()
4180 __set_bit(descs->ndescs, in gpiod_get_array()
4184 descs->ndescs++; in gpiod_get_array()
4192 return descs; in gpiod_get_array()
4210 struct gpio_descs *descs; in gpiod_get_array_optional() local
4212 descs = gpiod_get_array(dev, con_id, flags); in gpiod_get_array_optional()
4213 if (gpiod_not_found(descs)) in gpiod_get_array_optional()
4216 return descs; in gpiod_get_array_optional()
4237 void gpiod_put_array(struct gpio_descs *descs) in gpiod_put_array() argument
4241 for (i = 0; i < descs->ndescs; i++) in gpiod_put_array()
4242 gpiod_put(descs->desc[i]); in gpiod_put_array()
4244 kfree(descs); in gpiod_put_array()
4329 struct gpio_desc *gdesc = &gdev->descs[0]; in gpiolib_dbg_show()