Lines Matching refs:lc
947 static bool gpio_v2_line_config_debounced(struct gpio_v2_line_config *lc, in gpio_v2_line_config_debounced() argument
953 for (i = 0; i < lc->num_attrs; i++) { in gpio_v2_line_config_debounced()
954 if ((lc->attrs[i].attr.id == GPIO_V2_LINE_ATTR_ID_DEBOUNCE) && in gpio_v2_line_config_debounced()
955 (lc->attrs[i].mask & mask)) in gpio_v2_line_config_debounced()
961 static u32 gpio_v2_line_config_debounce_period(struct gpio_v2_line_config *lc, in gpio_v2_line_config_debounce_period() argument
967 for (i = 0; i < lc->num_attrs; i++) { in gpio_v2_line_config_debounce_period()
968 if ((lc->attrs[i].attr.id == GPIO_V2_LINE_ATTR_ID_DEBOUNCE) && in gpio_v2_line_config_debounce_period()
969 (lc->attrs[i].mask & mask)) in gpio_v2_line_config_debounce_period()
970 return lc->attrs[i].attr.debounce_period_us; in gpio_v2_line_config_debounce_period()
1004 struct gpio_v2_line_config *lc, in edge_detector_setup() argument
1019 if (gpio_v2_line_config_debounced(lc, line_idx)) { in edge_detector_setup()
1020 debounce_period_us = gpio_v2_line_config_debounce_period(lc, line_idx); in edge_detector_setup()
1064 struct gpio_v2_line_config *lc, in edge_detector_update() argument
1069 gpio_v2_line_config_debounce_period(lc, line_idx); in edge_detector_update()
1094 return edge_detector_setup(line, lc, line_idx, edflags); in edge_detector_update()
1097 static u64 gpio_v2_line_config_flags(struct gpio_v2_line_config *lc, in gpio_v2_line_config_flags() argument
1103 for (i = 0; i < lc->num_attrs; i++) { in gpio_v2_line_config_flags()
1104 if ((lc->attrs[i].attr.id == GPIO_V2_LINE_ATTR_ID_FLAGS) && in gpio_v2_line_config_flags()
1105 (lc->attrs[i].mask & mask)) in gpio_v2_line_config_flags()
1106 return lc->attrs[i].attr.flags; in gpio_v2_line_config_flags()
1108 return lc->flags; in gpio_v2_line_config_flags()
1111 static int gpio_v2_line_config_output_value(struct gpio_v2_line_config *lc, in gpio_v2_line_config_output_value() argument
1117 for (i = 0; i < lc->num_attrs; i++) { in gpio_v2_line_config_output_value()
1118 if ((lc->attrs[i].attr.id == GPIO_V2_LINE_ATTR_ID_OUTPUT_VALUES) && in gpio_v2_line_config_output_value()
1119 (lc->attrs[i].mask & mask)) in gpio_v2_line_config_output_value()
1120 return !!(lc->attrs[i].attr.values & mask); in gpio_v2_line_config_output_value()
1184 static int gpio_v2_line_config_validate(struct gpio_v2_line_config *lc, in gpio_v2_line_config_validate() argument
1191 if (lc->num_attrs > GPIO_V2_LINE_NUM_ATTRS_MAX) in gpio_v2_line_config_validate()
1194 if (!mem_is_zero(lc->padding, sizeof(lc->padding))) in gpio_v2_line_config_validate()
1198 flags = gpio_v2_line_config_flags(lc, i); in gpio_v2_line_config_validate()
1204 if (gpio_v2_line_config_debounced(lc, i) && in gpio_v2_line_config_validate()
1378 struct gpio_v2_line_config lc; in linereq_set_config() local
1385 if (copy_from_user(&lc, ip, sizeof(lc))) in linereq_set_config()
1388 ret = gpio_v2_line_config_validate(&lc, lr->num_lines); in linereq_set_config()
1397 flags = gpio_v2_line_config_flags(&lc, i); in linereq_set_config()
1407 int val = gpio_v2_line_config_output_value(&lc, i); in linereq_set_config()
1418 ret = edge_detector_update(line, &lc, i, edflags); in linereq_set_config()
1592 struct gpio_v2_line_config *lc; in linereq_create() local
1608 lc = &ulr.config; in linereq_create()
1609 ret = gpio_v2_line_config_validate(lc, ulr.num_lines); in linereq_create()
1662 flags = gpio_v2_line_config_flags(lc, i); in linereq_create()
1675 int val = gpio_v2_line_config_output_value(lc, i); in linereq_create()
1685 ret = edge_detector_setup(&lr->lines[i], lc, i, in linereq_create()