Lines Matching refs:lc

741 static bool gpio_v2_line_config_debounced(struct gpio_v2_line_config *lc,  in gpio_v2_line_config_debounced()  argument
747 for (i = 0; i < lc->num_attrs; i++) { in gpio_v2_line_config_debounced()
748 if ((lc->attrs[i].attr.id == GPIO_V2_LINE_ATTR_ID_DEBOUNCE) && in gpio_v2_line_config_debounced()
749 (lc->attrs[i].mask & mask)) in gpio_v2_line_config_debounced()
755 static u32 gpio_v2_line_config_debounce_period(struct gpio_v2_line_config *lc, in gpio_v2_line_config_debounce_period() argument
761 for (i = 0; i < lc->num_attrs; i++) { in gpio_v2_line_config_debounce_period()
762 if ((lc->attrs[i].attr.id == GPIO_V2_LINE_ATTR_ID_DEBOUNCE) && in gpio_v2_line_config_debounce_period()
763 (lc->attrs[i].mask & mask)) in gpio_v2_line_config_debounce_period()
764 return lc->attrs[i].attr.debounce_period_us; in gpio_v2_line_config_debounce_period()
785 struct gpio_v2_line_config *lc, in edge_detector_setup() argument
800 if (gpio_v2_line_config_debounced(lc, line_idx)) { in edge_detector_setup()
801 debounce_period_us = gpio_v2_line_config_debounce_period(lc, line_idx); in edge_detector_setup()
835 struct gpio_v2_line_config *lc, in edge_detector_update() argument
840 gpio_v2_line_config_debounce_period(lc, line_idx); in edge_detector_update()
858 return edge_detector_setup(line, lc, line_idx, eflags); in edge_detector_update()
861 static u64 gpio_v2_line_config_flags(struct gpio_v2_line_config *lc, in gpio_v2_line_config_flags() argument
867 for (i = 0; i < lc->num_attrs; i++) { in gpio_v2_line_config_flags()
868 if ((lc->attrs[i].attr.id == GPIO_V2_LINE_ATTR_ID_FLAGS) && in gpio_v2_line_config_flags()
869 (lc->attrs[i].mask & mask)) in gpio_v2_line_config_flags()
870 return lc->attrs[i].attr.flags; in gpio_v2_line_config_flags()
872 return lc->flags; in gpio_v2_line_config_flags()
875 static int gpio_v2_line_config_output_value(struct gpio_v2_line_config *lc, in gpio_v2_line_config_output_value() argument
881 for (i = 0; i < lc->num_attrs; i++) { in gpio_v2_line_config_output_value()
882 if ((lc->attrs[i].attr.id == GPIO_V2_LINE_ATTR_ID_OUTPUT_VALUES) && in gpio_v2_line_config_output_value()
883 (lc->attrs[i].mask & mask)) in gpio_v2_line_config_output_value()
884 return !!(lc->attrs[i].attr.values & mask); in gpio_v2_line_config_output_value()
938 static int gpio_v2_line_config_validate(struct gpio_v2_line_config *lc, in gpio_v2_line_config_validate() argument
945 if (lc->num_attrs > GPIO_V2_LINE_NUM_ATTRS_MAX) in gpio_v2_line_config_validate()
948 if (memchr_inv(lc->padding, 0, sizeof(lc->padding))) in gpio_v2_line_config_validate()
952 flags = gpio_v2_line_config_flags(lc, i); in gpio_v2_line_config_validate()
958 if (gpio_v2_line_config_debounced(lc, i) && in gpio_v2_line_config_validate()
1118 struct gpio_v2_line_config *lc) in linereq_set_config_unlocked() argument
1128 flags = gpio_v2_line_config_flags(lc, i); in linereq_set_config_unlocked()
1139 int val = gpio_v2_line_config_output_value(lc, i); in linereq_set_config_unlocked()
1150 ret = edge_detector_update(&lr->lines[i], lc, i, in linereq_set_config_unlocked()
1166 struct gpio_v2_line_config lc; in linereq_set_config() local
1169 if (copy_from_user(&lc, ip, sizeof(lc))) in linereq_set_config()
1172 ret = gpio_v2_line_config_validate(&lc, lr->num_lines); in linereq_set_config()
1178 ret = linereq_set_config_unlocked(lr, &lc); in linereq_set_config()
1316 struct gpio_v2_line_config *lc; in linereq_create() local
1332 lc = &ulr.config; in linereq_create()
1333 ret = gpio_v2_line_config_validate(lc, ulr.num_lines); in linereq_create()
1386 flags = gpio_v2_line_config_flags(lc, i); in linereq_create()
1398 int val = gpio_v2_line_config_output_value(lc, i); in linereq_create()
1408 ret = edge_detector_setup(&lr->lines[i], lc, i, in linereq_create()