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()
765 struct gpio_v2_line_config *lc, in edge_detector_setup() argument
780 if (gpio_v2_line_config_debounced(lc, line_idx)) { in edge_detector_setup()
781 debounce_period_us = gpio_v2_line_config_debounce_period(lc, line_idx); in edge_detector_setup()
815 struct gpio_v2_line_config *lc, in edge_detector_update() argument
820 gpio_v2_line_config_debounce_period(lc, line_idx); in edge_detector_update()
838 return edge_detector_setup(line, lc, line_idx, eflags); in edge_detector_update()
841 static u64 gpio_v2_line_config_flags(struct gpio_v2_line_config *lc, in gpio_v2_line_config_flags() argument
847 for (i = 0; i < lc->num_attrs; i++) { in gpio_v2_line_config_flags()
848 if ((lc->attrs[i].attr.id == GPIO_V2_LINE_ATTR_ID_FLAGS) && in gpio_v2_line_config_flags()
849 (lc->attrs[i].mask & mask)) in gpio_v2_line_config_flags()
850 return lc->attrs[i].attr.flags; in gpio_v2_line_config_flags()
852 return lc->flags; in gpio_v2_line_config_flags()
855 static int gpio_v2_line_config_output_value(struct gpio_v2_line_config *lc, in gpio_v2_line_config_output_value() argument
861 for (i = 0; i < lc->num_attrs; i++) { in gpio_v2_line_config_output_value()
862 if ((lc->attrs[i].attr.id == GPIO_V2_LINE_ATTR_ID_OUTPUT_VALUES) && in gpio_v2_line_config_output_value()
863 (lc->attrs[i].mask & mask)) in gpio_v2_line_config_output_value()
864 return !!(lc->attrs[i].attr.values & mask); in gpio_v2_line_config_output_value()
918 static int gpio_v2_line_config_validate(struct gpio_v2_line_config *lc, in gpio_v2_line_config_validate() argument
925 if (lc->num_attrs > GPIO_V2_LINE_NUM_ATTRS_MAX) in gpio_v2_line_config_validate()
928 if (memchr_inv(lc->padding, 0, sizeof(lc->padding))) in gpio_v2_line_config_validate()
932 flags = gpio_v2_line_config_flags(lc, i); in gpio_v2_line_config_validate()
938 if (gpio_v2_line_config_debounced(lc, i) && in gpio_v2_line_config_validate()
1095 struct gpio_v2_line_config *lc) in linereq_set_config_unlocked() argument
1105 flags = gpio_v2_line_config_flags(lc, i); in linereq_set_config_unlocked()
1116 int val = gpio_v2_line_config_output_value(lc, i); in linereq_set_config_unlocked()
1127 ret = edge_detector_update(&lr->lines[i], lc, i, in linereq_set_config_unlocked()
1143 struct gpio_v2_line_config lc; in linereq_set_config() local
1146 if (copy_from_user(&lc, ip, sizeof(lc))) in linereq_set_config()
1149 ret = gpio_v2_line_config_validate(&lc, lr->num_lines); in linereq_set_config()
1155 ret = linereq_set_config_unlocked(lr, &lc); in linereq_set_config()
1293 struct gpio_v2_line_config *lc; in linereq_create() local
1309 lc = &ulr.config; in linereq_create()
1310 ret = gpio_v2_line_config_validate(lc, ulr.num_lines); in linereq_create()
1363 flags = gpio_v2_line_config_flags(lc, i); in linereq_create()
1375 int val = gpio_v2_line_config_output_value(lc, i); in linereq_create()
1385 ret = edge_detector_setup(&lr->lines[i], lc, i, in linereq_create()