mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-04 04:04:19 +00:00
counter: Introduce the Signal polarity component
The Signal polarity component represents the active level of a respective Signal. There are two possible states: positive (rising edge) and negative (falling edge); enum counter_signal_polarity represents these states. A convenience macro COUNTER_COMP_POLARITY() is provided for driver authors to declare a Signal polarity component. Cc: Julien Panis <jpanis@baylibre.com> Link: https://lore.kernel.org/r/8f47d6e1db71a11bb1e2666f8e2a6e9d256d4131.1664204990.git.william.gray@linaro.org/ Signed-off-by: William Breathitt Gray <william.gray@linaro.org> Link: https://lore.kernel.org/r/b6e53438badcb6318997d13dd2fc052f97d808ac.1664318353.git.william.gray@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
7bbf842cdc
commit
650ae67bbf
@ -217,6 +217,7 @@ What: /sys/bus/counter/devices/counterX/signalY/cable_fault_component_id
|
||||
What: /sys/bus/counter/devices/counterX/signalY/cable_fault_enable_component_id
|
||||
What: /sys/bus/counter/devices/counterX/signalY/filter_clock_prescaler_component_id
|
||||
What: /sys/bus/counter/devices/counterX/signalY/index_polarity_component_id
|
||||
What: /sys/bus/counter/devices/counterX/signalY/polarity_component_id
|
||||
What: /sys/bus/counter/devices/counterX/signalY/synchronous_mode_component_id
|
||||
KernelVersion: 5.16
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
@ -303,6 +304,19 @@ Description:
|
||||
Discrete set of available values for the respective Signal Y
|
||||
configuration are listed in this file.
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/signalY/polarity
|
||||
KernelVersion: 6.1
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
Active level of Signal Y. The following polarity values are
|
||||
available:
|
||||
|
||||
positive:
|
||||
Signal high state considered active level (rising edge).
|
||||
|
||||
negative:
|
||||
Signal low state considered active level (falling edge).
|
||||
|
||||
What: /sys/bus/counter/devices/counterX/signalY/name
|
||||
KernelVersion: 5.2
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
|
@ -487,6 +487,7 @@ static int counter_get_data(struct counter_device *const counter,
|
||||
case COUNTER_COMP_ENUM:
|
||||
case COUNTER_COMP_COUNT_DIRECTION:
|
||||
case COUNTER_COMP_COUNT_MODE:
|
||||
case COUNTER_COMP_SIGNAL_POLARITY:
|
||||
switch (comp_node->component.scope) {
|
||||
case COUNTER_SCOPE_DEVICE:
|
||||
ret = comp->device_u32_read(counter, &value_u32);
|
||||
|
@ -91,6 +91,11 @@ static const char *const counter_count_mode_str[] = {
|
||||
[COUNTER_COUNT_MODE_MODULO_N] = "modulo-n"
|
||||
};
|
||||
|
||||
static const char *const counter_signal_polarity_str[] = {
|
||||
[COUNTER_SIGNAL_POLARITY_POSITIVE] = "positive",
|
||||
[COUNTER_SIGNAL_POLARITY_NEGATIVE] = "negative"
|
||||
};
|
||||
|
||||
static ssize_t counter_comp_u8_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
@ -201,6 +206,8 @@ static ssize_t counter_comp_u32_show(struct device *dev,
|
||||
return sysfs_emit(buf, "%s\n", counter_count_direction_str[data]);
|
||||
case COUNTER_COMP_COUNT_MODE:
|
||||
return sysfs_emit(buf, "%s\n", counter_count_mode_str[data]);
|
||||
case COUNTER_COMP_SIGNAL_POLARITY:
|
||||
return sysfs_emit(buf, "%s\n", counter_signal_polarity_str[data]);
|
||||
default:
|
||||
return sysfs_emit(buf, "%u\n", (unsigned int)data);
|
||||
}
|
||||
@ -252,6 +259,10 @@ static ssize_t counter_comp_u32_store(struct device *dev,
|
||||
err = counter_find_enum(&data, avail->enums, avail->num_items,
|
||||
buf, counter_count_mode_str);
|
||||
break;
|
||||
case COUNTER_COMP_SIGNAL_POLARITY:
|
||||
err = counter_find_enum(&data, avail->enums, avail->num_items,
|
||||
buf, counter_signal_polarity_str);
|
||||
break;
|
||||
default:
|
||||
err = kstrtou32(buf, 0, &data);
|
||||
break;
|
||||
@ -469,6 +480,7 @@ static int counter_attr_create(struct device *const dev,
|
||||
case COUNTER_COMP_ENUM:
|
||||
case COUNTER_COMP_COUNT_DIRECTION:
|
||||
case COUNTER_COMP_COUNT_MODE:
|
||||
case COUNTER_COMP_SIGNAL_POLARITY:
|
||||
if (comp->device_u32_read) {
|
||||
dev_attr->attr.mode |= 0444;
|
||||
dev_attr->show = counter_comp_u32_show;
|
||||
|
@ -31,6 +31,7 @@ enum counter_comp_type {
|
||||
COUNTER_COMP_ENUM,
|
||||
COUNTER_COMP_COUNT_DIRECTION,
|
||||
COUNTER_COMP_COUNT_MODE,
|
||||
COUNTER_COMP_SIGNAL_POLARITY,
|
||||
};
|
||||
|
||||
/**
|
||||
@ -477,6 +478,15 @@ struct counter_available {
|
||||
#define COUNTER_COMP_FLOOR(_read, _write) \
|
||||
COUNTER_COMP_COUNT_U64("floor", _read, _write)
|
||||
|
||||
#define COUNTER_COMP_POLARITY(_read, _write, _available) \
|
||||
{ \
|
||||
.type = COUNTER_COMP_SIGNAL_POLARITY, \
|
||||
.name = "polarity", \
|
||||
.signal_u32_read = (_read), \
|
||||
.signal_u32_write = (_write), \
|
||||
.priv = &(_available), \
|
||||
}
|
||||
|
||||
#define COUNTER_COMP_PRESET(_read, _write) \
|
||||
COUNTER_COMP_COUNT_U64("preset", _read, _write)
|
||||
|
||||
|
@ -153,4 +153,10 @@ enum counter_synapse_action {
|
||||
COUNTER_SYNAPSE_ACTION_BOTH_EDGES,
|
||||
};
|
||||
|
||||
/* Signal polarity values */
|
||||
enum counter_signal_polarity {
|
||||
COUNTER_SIGNAL_POLARITY_POSITIVE,
|
||||
COUNTER_SIGNAL_POLARITY_NEGATIVE,
|
||||
};
|
||||
|
||||
#endif /* _UAPI_COUNTER_H_ */
|
||||
|
Loading…
Reference in New Issue
Block a user