Lines Matching refs:lc

721 static bool gpio_v2_line_config_debounced(struct gpio_v2_line_config *lc,  in gpio_v2_line_config_debounced()  argument
727 for (i = 0; i < lc->num_attrs; i++) { in gpio_v2_line_config_debounced()
728 if ((lc->attrs[i].attr.id == GPIO_V2_LINE_ATTR_ID_DEBOUNCE) && in gpio_v2_line_config_debounced()
729 (lc->attrs[i].mask & mask)) in gpio_v2_line_config_debounced()
735 static u32 gpio_v2_line_config_debounce_period(struct gpio_v2_line_config *lc, in gpio_v2_line_config_debounce_period() argument
741 for (i = 0; i < lc->num_attrs; i++) { in gpio_v2_line_config_debounce_period()
742 if ((lc->attrs[i].attr.id == GPIO_V2_LINE_ATTR_ID_DEBOUNCE) && in gpio_v2_line_config_debounce_period()
743 (lc->attrs[i].mask & mask)) in gpio_v2_line_config_debounce_period()
744 return lc->attrs[i].attr.debounce_period_us; in gpio_v2_line_config_debounce_period()
763 struct gpio_v2_line_config *lc, in edge_detector_setup() argument
778 if (gpio_v2_line_config_debounced(lc, line_idx)) { in edge_detector_setup()
779 debounce_period_us = gpio_v2_line_config_debounce_period(lc, line_idx); in edge_detector_setup()
813 struct gpio_v2_line_config *lc, in edge_detector_update() argument
818 gpio_v2_line_config_debounce_period(lc, line_idx); in edge_detector_update()
836 return edge_detector_setup(line, lc, line_idx, eflags); in edge_detector_update()
839 static u64 gpio_v2_line_config_flags(struct gpio_v2_line_config *lc, in gpio_v2_line_config_flags() argument
845 for (i = 0; i < lc->num_attrs; i++) { in gpio_v2_line_config_flags()
846 if ((lc->attrs[i].attr.id == GPIO_V2_LINE_ATTR_ID_FLAGS) && in gpio_v2_line_config_flags()
847 (lc->attrs[i].mask & mask)) in gpio_v2_line_config_flags()
848 return lc->attrs[i].attr.flags; in gpio_v2_line_config_flags()
850 return lc->flags; in gpio_v2_line_config_flags()
853 static int gpio_v2_line_config_output_value(struct gpio_v2_line_config *lc, in gpio_v2_line_config_output_value() argument
859 for (i = 0; i < lc->num_attrs; i++) { in gpio_v2_line_config_output_value()
860 if ((lc->attrs[i].attr.id == GPIO_V2_LINE_ATTR_ID_OUTPUT_VALUES) && in gpio_v2_line_config_output_value()
861 (lc->attrs[i].mask & mask)) in gpio_v2_line_config_output_value()
862 return !!(lc->attrs[i].attr.values & mask); in gpio_v2_line_config_output_value()
916 static int gpio_v2_line_config_validate(struct gpio_v2_line_config *lc, in gpio_v2_line_config_validate() argument
923 if (lc->num_attrs > GPIO_V2_LINE_NUM_ATTRS_MAX) in gpio_v2_line_config_validate()
926 if (memchr_inv(lc->padding, 0, sizeof(lc->padding))) in gpio_v2_line_config_validate()
930 flags = gpio_v2_line_config_flags(lc, i); in gpio_v2_line_config_validate()
936 if (gpio_v2_line_config_debounced(lc, i) && in gpio_v2_line_config_validate()
1093 struct gpio_v2_line_config *lc) in linereq_set_config_unlocked() argument
1103 flags = gpio_v2_line_config_flags(lc, i); in linereq_set_config_unlocked()
1114 int val = gpio_v2_line_config_output_value(lc, i); in linereq_set_config_unlocked()
1125 ret = edge_detector_update(&lr->lines[i], lc, i, in linereq_set_config_unlocked()
1141 struct gpio_v2_line_config lc; in linereq_set_config() local
1144 if (copy_from_user(&lc, ip, sizeof(lc))) in linereq_set_config()
1147 ret = gpio_v2_line_config_validate(&lc, lr->num_lines); in linereq_set_config()
1153 ret = linereq_set_config_unlocked(lr, &lc); in linereq_set_config()
1291 struct gpio_v2_line_config *lc; in linereq_create() local
1307 lc = &ulr.config; in linereq_create()
1308 ret = gpio_v2_line_config_validate(lc, ulr.num_lines); in linereq_create()
1361 flags = gpio_v2_line_config_flags(lc, i); in linereq_create()
1373 int val = gpio_v2_line_config_output_value(lc, i); in linereq_create()
1383 ret = edge_detector_setup(&lr->lines[i], lc, i, in linereq_create()