[PATCH 04/11] ST SPEAr: Added basic header files for SPEAr platform

Viresh KUMAR viresh.kumar at st.com
Wed Mar 3 00:07:34 EST 2010


Signed-off-by: Viresh Kumar <viresh.kumar at st.com>
---
 arch/arm/plat-spear/include/plat/gpt.h |  108 ++++++++++++++++++++++++++++++++
 1 files changed, 108 insertions(+), 0 deletions(-)
 create mode 100644 arch/arm/plat-spear/include/plat/gpt.h

diff --git a/arch/arm/plat-spear/include/plat/gpt.h b/arch/arm/plat-spear/include/plat/gpt.h
new file mode 100644
index 0000000..1ac6cf0
--- /dev/null
+++ b/arch/arm/plat-spear/include/plat/gpt.h
@@ -0,0 +1,108 @@
+/*
+ * arch/arm/plat-spear/include/plat/gpt.h
+ *
+ * SPEAr General Purpose Timers header file
+ *
+ * Copyright (C) 2010 ST Microelectronics
+ * shiraz hashim <shiraz.hashim at st.com>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2. This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+#ifndef __ASM_PLAT_GPT_H
+#define __ASM_PLAT_GPT_H
+
+/* register offsets */
+#define GPT_CTRL_OFF		0x80 /* Control Register */
+#define GPT_INT_OFF		0x84 /* Interrupt Regiset */
+#define GPT_LOAD_OFF		0x88 /* Load Register */
+#define GPT_COUNT_OFF		0x8C /* Current Count Register */
+
+/* CTRL Reg Bit Values */
+#define GPT_CTRL_MATCH_INT	0x0100
+#define GPT_CTRL_ENABLE		0x0020
+#define GPT_CTRL_MODE_AR	0x0010
+
+#define GPT_CTRL_PRESCALER1	0x0
+#define GPT_CTRL_PRESCALER2	0x1
+#define GPT_CTRL_PRESCALER4	0x2
+#define GPT_CTRL_PRESCALER8	0x3
+#define GPT_CTRL_PRESCALER16	0x4
+#define GPT_CTRL_PRESCALER32	0x5
+#define GPT_CTRL_PRESCALER64	0x6
+#define GPT_CTRL_PRESCALER128	0x7
+#define GPT_CTRL_PRESCALER256	0x8
+
+/* INT Reg Bit Values */
+#define GPT_STATUS_MATCH	0x0001
+
+/* clock sources */
+#define SPEAR_TIMER_SRC_PLL3_CLK	0x00
+#define SPEAR_TIMER_SRC_SYS_CLK		0x01
+
+/**
+ * struct spear_timer - spear general purpose timer representation
+ * @id: timer identifier 0 onwards
+ * @phys_base: physical base address of timer
+ * @irq: irq to which this gpt is attached
+ * @prescaler: the prescaler for input freq at which timer is working
+ * @fclk: gpt functional clock
+ * @io_base: virtual base address of timer
+ * @reserved: indication that gpt is reserved now
+ * @enabled: indication that gpt is enabled
+ *
+ * The timer structure represent the timer channel available in SPEAr. Each
+ * timer unit in SPEAr contains two individual timer channels with different
+ * set of configuration registers * and irq. But the point to remember is
+ * this that the fclk is common for each channels withing a timer unit.
+ */
+
+struct spear_timer {
+	unsigned int id;
+	unsigned long phys_base;
+	int irq;
+	int prescaler;
+	struct clk *fclk;
+	void __iomem *io_base;
+	unsigned reserved:1;
+	unsigned enabled:1;
+};
+
+/*
+ * Following functions are exported by gpt.c which can be used by other
+ * kernel entities
+ */
+int spear_timer_init(struct spear_timer *, int);
+
+struct spear_timer *spear_timer_request(void);
+struct spear_timer *spear_timer_request_specific(int id);
+
+int spear_timer_free(struct spear_timer *timer);
+int spear_timer_enable(struct spear_timer *timer);
+int spear_timer_disable(struct spear_timer *timer);
+
+int spear_timer_get_irq(struct spear_timer *timer);
+
+struct clk *spear_timer_get_fclk(struct spear_timer *timer);
+
+int spear_timer_start(struct spear_timer *timer);
+int spear_timer_stop(struct spear_timer *timer);
+
+int spear_timer_set_source(struct spear_timer *timer, int source);
+int spear_timer_set_load(struct spear_timer *timer, int autoreload,
+		u16 value);
+int spear_timer_set_load_start(struct spear_timer *timer, int autoreload,
+		u16 value);
+int spear_timer_match_irq(struct spear_timer *timer, int enable);
+int spear_timer_set_prescaler(struct spear_timer *timer, int prescaler);
+
+int spear_timer_read_status(struct spear_timer *timer);
+int spear_timer_clear_status(struct spear_timer *timer, u16 value);
+
+int spear_timer_read_counter(struct spear_timer *timer);
+
+int spear_timer_active(struct spear_timer *);
+
+#endif /* __ASM_PLAT_GPT_H */
-- 
1.6.0.2




More information about the linux-arm-kernel mailing list