mirror of
https://github.com/torvalds/linux.git
synced 2025-04-12 16:47:42 +00:00
counter: microchip-tcb-capture: Add support for RC Compare
In Capture mode, the RC register serves as a compare register for the Timer Counter Channel. When a the Counter Value reaches the RC value, a RC Compare event occurs (COUNTER_EVENT_THRESHOLD). This patch exposes the RC register to userspace as the 'compare' Count extension, thus allowing users to configure the threshold condition for these events. Acked-by: Bence Csókás <csokas.bence@prolan.hu> Link: https://lore.kernel.org/r/20250306-introduce-compare-component-v1-2-93993b3dca9c@kernel.org Signed-off-by: William Breathitt Gray <wbg@kernel.org>
This commit is contained in:
parent
b519820193
commit
ba27a0247b
@ -302,11 +302,39 @@ static int mchp_tc_count_cap_write(struct counter_device *counter,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int mchp_tc_count_compare_read(struct counter_device *counter, struct counter_count *count,
|
||||
u64 *val)
|
||||
{
|
||||
struct mchp_tc_data *const priv = counter_priv(counter);
|
||||
u32 cnt;
|
||||
int ret;
|
||||
|
||||
ret = regmap_read(priv->regmap, ATMEL_TC_REG(priv->channel[0], RC), &cnt);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
*val = cnt;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mchp_tc_count_compare_write(struct counter_device *counter, struct counter_count *count,
|
||||
u64 val)
|
||||
{
|
||||
struct mchp_tc_data *const priv = counter_priv(counter);
|
||||
|
||||
if (val > U32_MAX)
|
||||
return -ERANGE;
|
||||
|
||||
return regmap_write(priv->regmap, ATMEL_TC_REG(priv->channel[0], RC), val);
|
||||
}
|
||||
|
||||
static DEFINE_COUNTER_ARRAY_CAPTURE(mchp_tc_cnt_cap_array, 2);
|
||||
|
||||
static struct counter_comp mchp_tc_count_ext[] = {
|
||||
COUNTER_COMP_ARRAY_CAPTURE(mchp_tc_count_cap_read, mchp_tc_count_cap_write,
|
||||
mchp_tc_cnt_cap_array),
|
||||
COUNTER_COMP_COMPARE(mchp_tc_count_compare_read, mchp_tc_count_compare_write),
|
||||
};
|
||||
|
||||
static struct counter_count mchp_tc_counts[] = {
|
||||
|
Loading…
x
Reference in New Issue
Block a user