Something went wrong. Try again.
(I'm so sorry!) Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Something went wrong. Try again.
1.8 kB · 73 lines
C
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374/* SPDX-License-Identifier: GPL-2.0+ *//* * Copyright (C) 2021 Sean Anderson <sean.anderson@seco.com> */
#ifndef XILINX_TIMER_H#define XILINX_TIMER_H
#include <linux/compiler.h>
#define TCSR0 0x00#define TLR0 0x04#define TCR0 0x08#define TCSR1 0x10#define TLR1 0x14#define TCR1 0x18
#define TCSR_MDT BIT(0)#define TCSR_UDT BIT(1)#define TCSR_GENT BIT(2)#define TCSR_CAPT BIT(3)#define TCSR_ARHT BIT(4)#define TCSR_LOAD BIT(5)#define TCSR_ENIT BIT(6)#define TCSR_ENT BIT(7)#define TCSR_TINT BIT(8)#define TCSR_PWMA BIT(9)#define TCSR_ENALL BIT(10)#define TCSR_CASC BIT(11)
struct clk;struct device_node;struct regmap;
/** * struct xilinx_timer_priv - Private data for Xilinx AXI timer drivers * @map: Regmap of the device, possibly with an offset * @clk: Parent clock * @max: Maximum value of the counters */struct xilinx_timer_priv { struct regmap *map; struct clk *clk; u64 max;};
/** * xilinx_timer_tlr_cycles() - Calculate the TLR for a period specified * in clock cycles * @priv: The timer's private data * @tcsr: The value of the TCSR register for this counter * @cycles: The number of cycles in this period * * Callers of this function MUST ensure that @cycles is representable as * a TLR. * * Return: The calculated value for TLR */u32 xilinx_timer_tlr_cycles(struct xilinx_timer_priv *priv, u32 tcsr, u64 cycles);
/** * xilinx_timer_get_period() - Get the current period of a counter * @priv: The timer's private data * @tlr: The value of TLR for this counter * @tcsr: The value of TCSR for this counter * * Return: The period, in ns */unsigned int xilinx_timer_get_period(struct xilinx_timer_priv *priv, u32 tlr, u32 tcsr);
#endif /* XILINX_TIMER_H */