1 /* SPDX-License-Identifier: GPL-2.0+ */
3 * Copyright (C) 2021 Sean Anderson <sean.anderson@seco.com>
9 #include <linux/compiler.h>
18 #define TCSR_MDT BIT(0)
19 #define TCSR_UDT BIT(1)
20 #define TCSR_GENT BIT(2)
21 #define TCSR_CAPT BIT(3)
22 #define TCSR_ARHT BIT(4)
23 #define TCSR_LOAD BIT(5)
24 #define TCSR_ENIT BIT(6)
25 #define TCSR_ENT BIT(7)
26 #define TCSR_TINT BIT(8)
27 #define TCSR_PWMA BIT(9)
28 #define TCSR_ENALL BIT(10)
29 #define TCSR_CASC BIT(11)
36 * struct xilinx_timer_priv - Private data for Xilinx AXI timer drivers
37 * @map: Regmap of the device, possibly with an offset
39 * @max: Maximum value of the counters
41 struct xilinx_timer_priv {
48 * xilinx_timer_tlr_cycles() - Calculate the TLR for a period specified
50 * @priv: The timer's private data
51 * @tcsr: The value of the TCSR register for this counter
52 * @cycles: The number of cycles in this period
54 * Callers of this function MUST ensure that @cycles is representable as
57 * Return: The calculated value for TLR
59 u32 xilinx_timer_tlr_cycles(struct xilinx_timer_priv *priv, u32 tcsr,
63 * xilinx_timer_get_period() - Get the current period of a counter
64 * @priv: The timer's private data
65 * @tlr: The value of TLR for this counter
66 * @tcsr: The value of TCSR for this counter
68 * Return: The period, in ns
70 unsigned int xilinx_timer_get_period(struct xilinx_timer_priv *priv,
73 #endif /* XILINX_TIMER_H */