diff --git a/include/odp_timer.h b/include/odp_timer.h
new file mode 100644
index 0000000..ff54b8e
--- /dev/null
+++ b/include/odp_timer.h
@@ -0,0 +1,139 @@
+/* Copyright (c) 2013, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:     BSD-3-Clause
+ */
+
+
+/**
+ * @file
+ *
+ * ODP timer
+ */
+
+#ifndef ODP_TIMER_H_
+#define ODP_TIMER_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <odp_std_types.h>
+#include <odp_buffer.h>
+#include <odp_buffer_pool.h>
+#include <odp_queue.h>
+
+
+/**
+* ODP timer handle
+*/
+typedef uint32_t odp_timer_t;
+
+#define ODP_TIMER_INVALID 0
+
+
+/**
+* ODP timeout handle
+*/
+typedef uint32_t odp_timer_tmo_t;
+
+#define ODP_TIMER_TMO_INVALID 0
+
+
+/**
+ * Create a timer
+ *
+ * Creates a new timer with requested properties.
+ *
+ * @param name       Name
+ * @param pool       Buffer pool for allocating timeout notifications
+ * @param resolution Timeout resolution in nanoseconds
+ * @param min_tmo    Minimum timeout duration in nanoseconds
+ * @param max_tmo    Maximum timeout duration in nanoseconds
+ *
+ * @return Timer handle if successful, otherwise ODP_TIMER_INVALID
+ */
+odp_timer_t odp_timer_create(const char *name, odp_buffer_pool_t pool,
+			     uint64_t resolution, uint64_t min_tmo,
+			     uint64_t max_tmo);
+
+/**
+ * Convert timer ticks to nanoseconds
+ *
+ * @param timer Timer
+ * @param ticks Timer ticks
+ *
+ * @return Nanoseconds
+ */
+uint64_t odp_timer_tick_to_ns(odp_timer_t timer, uint64_t ticks);
+
+/**
+ * Convert nanoseconds to timer ticks
+ *
+ * @param timer Timer
+ * @param ns    Nanoseconds
+ *
+ * @return Timer ticks
+ */
+uint64_t odp_timer_ns_to_tick(odp_timer_t timer, uint64_t ns);
+
+/**
+ * Timer resolution in nanoseconds
+ *
+ * @param timer Timer
+ *
+ * @return Resolution in nanoseconds
+ */
+uint64_t odp_timer_resolution(odp_timer_t timer);
+
+/**
+ * Maximum timeout in timer ticks
+ *
+ * @param timer Timer
+ *
+ * @return Maximum timeout in timer ticks
+ */
+uint64_t odp_timer_maximum_tmo(odp_timer_t timer);
+
+/**
+ * Current timer tick
+ *
+ * @param timer Timer
+ *
+ * @return Current time in timer ticks
+ */
+uint64_t odp_timer_current_tick(odp_timer_t timer);
+
+/**
+ * Request timeout with an absolute timer tick
+ *
+ * When tick reaches tmo_tick, the timer enqueues the timeout notification into
+ * the destination queue.
+ *
+ * @param timer    Timer
+ * @param tmo_tick Absolute timer tick value which triggers the timeout
+ * @param queue    Destination queue for the timeout notification
+ * @param buf      User defined timeout notification buffer. When
+ *                 ODP_BUFFER_INVALID, default timeout notification is used.
+ *
+ * @return Timeout handle if successful, otherwise ODP_TIMER_TMO_INVALID
+ */
+odp_timer_tmo_t odp_timer_absolute_tmo(odp_timer_t timer, uint64_t tmo_tick,
+				       odp_queue_t queue, odp_buffer_t buf);
+
+/**
+ * Cancel a timeout
+ *
+ * @param timer Timer
+ * @param tmo   Timeout to cancel
+ *
+ * @return 0 if successful
+ */
+int odp_timer_cancel_tmo(odp_timer_t timer, odp_timer_tmo_t tmo);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/platform/linux-generic/Makefile b/platform/linux-generic/Makefile
index c35eb07..9f3e3db 100644
--- a/platform/linux-generic/Makefile
+++ b/platform/linux-generic/Makefile
@@ -65,6 +65,7 @@ OBJS    += $(OBJ_DIR)/odp_system_info.o
 OBJS    += $(OBJ_DIR)/odp_thread.o
 OBJS    += $(OBJ_DIR)/odp_ticketlock.o
 OBJS    += $(OBJ_DIR)/odp_time.o
+OBJS    += $(OBJ_DIR)/odp_timer.o
 OBJS    += $(OBJ_DIR)/odp_ring.o
 OBJS    += $(OBJ_DIR)/odp_rwlock.o
 ifeq ($(ODP_HAVE_NETMAP),yes)
diff --git a/platform/linux-generic/include/odp_internal.h b/platform/linux-generic/include/odp_internal.h
index 1f42d2a..ff34b5e 100644
--- a/platform/linux-generic/include/odp_internal.h
+++ b/platform/linux-generic/include/odp_internal.h
@@ -43,6 +43,9 @@ int odp_schedule_init_global(void);
 int odp_schedule_init_local(void);
 
 
+int odp_timer_init_global(void);
+
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/platform/linux-generic/source/odp_init.c b/platform/linux-generic/source/odp_init.c
index 1d9cccd..d4c2eb8 100644
--- a/platform/linux-generic/source/odp_init.c
+++ b/platform/linux-generic/source/odp_init.c
@@ -40,6 +40,11 @@ int odp_init_global(void)
 		return -1;
 	}
 
+	if (odp_timer_init_global()) {
+		ODP_ERR("ODP timer init failed.\n");
+		return -1;
+	}
+
 	return 0;
 }
 
diff --git a/platform/linux-generic/source/odp_timer.c b/platform/linux-generic/source/odp_timer.c
new file mode 100644
index 0000000..b090257
--- /dev/null
+++ b/platform/linux-generic/source/odp_timer.c
@@ -0,0 +1,14 @@
+/* Copyright (c) 2013, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:     BSD-3-Clause
+ */
+
+#include <odp_timer.h>
+#include <odp_internal.h>
+
+
+int odp_timer_init_global(void)
+{
+	return 0;
+}
