English
Language : 

UM0851 Datasheet, PDF (27/245 Pages) STMicroelectronics – SPEAr is a family of highly customizable ARM-based embedded
UM0851
Figure 3. GPT software architecture
5SERSPACE
$ATE SLEEP
Platform section
5SERAPPLICATIONS
+ERNEL
SPACE
4IMEMANAGEMENT
4IMEOFDAYKEEPING
#LOCKSOURCE
#LOCKEVENT
'04ROUTINES
(ARDWARE
'ENERALPURPOSETIMER
5SERMODULES
In the Linux source tree, the GPT layer is present in arch/arm/plat-spear/gpt.c
GPT layer interface
The GPT layer represents the timer as a structure with the following fields.
struct spear_timer {
unsigned long phys_base;
int irq;
struct clk *iclk; /* interface clk */
struct clk *fclk; /* functional clk */
void __iomem *io_base;
unsigned reserved:1;
unsigned enabled:1;
};
The SPEAr LSP defines an array (of struct spear_timer) for the available timers on each
respective platform. The GPT layer provides a set of APIs which operate on this structure to
manage the set of available timers.
Allocating a timer
There are two ways of allocating a GPT. You can either ask for a free timer, in this case an
available timer on the list will be allocated to you, or, ask for a specific timer, so if it is
available, it will be allocated to you. Both the APIs return one of the available timers (or
NULL), which you can subsequently use to program and control the timer.
/* request for a free timer */
struct spear_timer *spear_timer_request(void);
/* request for a specific timer greater than or equal to 1 */
struct spear_timer *spear_timer_request_specific(int timer);
Doc ID 16604 Rev 2
27/245