brintos

brintos / linux-shallow public Read only

0
0
Text · 1.7 KiB · d116f18 Raw
74 lines · c
1/* SPDX-License-Identifier: GPL-2.0+ */2/*3 * Copyright (C) 2021 Sean Anderson <sean.anderson@seco.com>4 */5 6#ifndef XILINX_TIMER_H7#define XILINX_TIMER_H8 9#include <linux/compiler.h>10 11#define TCSR0	0x0012#define TLR0	0x0413#define TCR0	0x0814#define TCSR1	0x1015#define TLR1	0x1416#define TCR1	0x1817 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)30 31struct clk;32struct device_node;33struct regmap;34 35/**36 * struct xilinx_timer_priv - Private data for Xilinx AXI timer drivers37 * @map: Regmap of the device, possibly with an offset38 * @clk: Parent clock39 * @max: Maximum value of the counters40 */41struct xilinx_timer_priv {42	struct regmap *map;43	struct clk *clk;44	u64 max;45};46 47/**48 * xilinx_timer_tlr_cycles() - Calculate the TLR for a period specified49 *                             in clock cycles50 * @priv: The timer's private data51 * @tcsr: The value of the TCSR register for this counter52 * @cycles: The number of cycles in this period53 *54 * Callers of this function MUST ensure that @cycles is representable as55 * a TLR.56 *57 * Return: The calculated value for TLR58 */59u32 xilinx_timer_tlr_cycles(struct xilinx_timer_priv *priv, u32 tcsr,60			    u64 cycles);61 62/**63 * xilinx_timer_get_period() - Get the current period of a counter64 * @priv: The timer's private data65 * @tlr: The value of TLR for this counter66 * @tcsr: The value of TCSR for this counter67 *68 * Return: The period, in ns69 */70unsigned int xilinx_timer_get_period(struct xilinx_timer_priv *priv,71				     u32 tlr, u32 tcsr);72 73#endif /* XILINX_TIMER_H */74