diff --git a/platform/linux-generic/include/api/odp_align.h b/platform/linux-generic/include/api/odp_align.h
index a93dd24..d972bdb 100644
--- a/platform/linux-generic/include/api/odp_align.h
+++ b/platform/linux-generic/include/api/odp_align.h
@@ -18,6 +18,9 @@
 extern "C" {
 #endif
 
+/** @defgroup odp_align ODP ALIGN
+ *  @{
+ */
 
 #ifdef __GNUC__
 
@@ -174,6 +177,9 @@ extern "C" {
 #define ODP_VAL_IS_POWER_2(x) ((((x)-1) & (x)) == 0)
 
 
+/**
+ * @}
+ */
 
 #ifdef __cplusplus
 }
diff --git a/platform/linux-generic/include/api/odp_atomic.h b/platform/linux-generic/include/api/odp_atomic.h
index 0cc4cf4..1ef26d1 100644
--- a/platform/linux-generic/include/api/odp_atomic.h
+++ b/platform/linux-generic/include/api/odp_atomic.h
@@ -21,6 +21,9 @@ extern "C" {
 
 #include <odp_std_types.h>
 
+/** @defgroup odp_atomic ODP ATOMIC
+ *  @{
+ */
 
 /**
  * Atomic integer
@@ -463,6 +466,10 @@ odp_atomic_cmpset_u64(odp_atomic_u64_t *dst, uint64_t exp, uint64_t src)
 	return __sync_bool_compare_and_swap(dst, exp, src);
 }
 
+/**
+ * @}
+ */
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/platform/linux-generic/include/api/odp_barrier.h b/platform/linux-generic/include/api/odp_barrier.h
index a7b3215..dc28116 100644
--- a/platform/linux-generic/include/api/odp_barrier.h
+++ b/platform/linux-generic/include/api/odp_barrier.h
@@ -22,6 +22,9 @@ extern "C" {
 #include <odp_std_types.h>
 #include <odp_atomic.h>
 
+/** @defgroup odp_barrier ODP BARRIER
+ *  @{
+ */
 
 /**
  * ODP execution barrier
@@ -48,6 +51,9 @@ void odp_barrier_init_count(odp_barrier_t *barrier, int count);
  */
 void odp_barrier_sync(odp_barrier_t *barrier);
 
+/**
+ * @}
+ */
 
 #ifdef __cplusplus
 }
diff --git a/platform/linux-generic/include/api/odp_buffer.h b/platform/linux-generic/include/api/odp_buffer.h
index d8577fd..a5f7b0f 100644
--- a/platform/linux-generic/include/api/odp_buffer.h
+++ b/platform/linux-generic/include/api/odp_buffer.h
@@ -22,6 +22,9 @@ extern "C" {
 #include <odp_std_types.h>
 
 
+/** @defgroup odp_buffer ODP BUFFER
+ *  @{
+ */
 
 /**
  * ODP buffer
@@ -83,6 +86,9 @@ int odp_buffer_is_valid(odp_buffer_t buf);
  */
 void odp_buffer_print(odp_buffer_t buf);
 
+/**
+ * @}
+ */
 
 #ifdef __cplusplus
 }
diff --git a/platform/linux-generic/include/api/odp_buffer_pool.h b/platform/linux-generic/include/api/odp_buffer_pool.h
index fe88898..7e6bfe0 100644
--- a/platform/linux-generic/include/api/odp_buffer_pool.h
+++ b/platform/linux-generic/include/api/odp_buffer_pool.h
@@ -23,6 +23,10 @@ extern "C" {
 #include <odp_std_types.h>
 #include <odp_buffer.h>
 
+/** @defgroup odp_buffer_pool ODP BUFFER POOL
+ *  @{
+ */
+
 /** Maximum queue name lenght in chars */
 #define ODP_BUFFER_POOL_NAME_LEN  32
 
@@ -99,6 +103,9 @@ void odp_buffer_free(odp_buffer_t buf);
  */
 odp_buffer_pool_t odp_buffer_pool(odp_buffer_t buf);
 
+/**
+ * @}
+ */
 
 #ifdef __cplusplus
 }
diff --git a/platform/linux-generic/include/api/odp_byteorder.h b/platform/linux-generic/include/api/odp_byteorder.h
index e0f7a17..350ddbd 100644
--- a/platform/linux-generic/include/api/odp_byteorder.h
+++ b/platform/linux-generic/include/api/odp_byteorder.h
@@ -22,6 +22,10 @@ extern "C" {
 #include <odp_std_types.h>
 #include <odp_compiler.h>
 
+/** @defgroup odp_byteorder ODP BYTEORDER
+ *  @{
+ */
+
 #ifndef __BYTE_ORDER
 #error __BYTE_ORDER not defined!
 #endif
@@ -260,6 +264,9 @@ static inline uint64le_t odp_cpu_to_le_64(uint64_t cpu64)
 #endif
 }
 
+/**
+ * @}
+ */
 
 #ifdef __cplusplus
 }
diff --git a/platform/linux-generic/include/api/odp_compiler.h b/platform/linux-generic/include/api/odp_compiler.h
index a4e6e78..f79cbf7 100644
--- a/platform/linux-generic/include/api/odp_compiler.h
+++ b/platform/linux-generic/include/api/odp_compiler.h
@@ -18,6 +18,10 @@
 extern "C" {
 #endif
 
+/** @defgroup odp_compiler ODP COMPILER
+ *  @{
+ */
+
 /** @internal GNU compiler version */
 #define GCC_VERSION (__GNUC__ * 10000 \
 			+ __GNUC_MINOR__ * 100 \
@@ -35,6 +39,10 @@ extern "C" {
 #define __odp_builtin_bswap16(u16) __builtin_bswap16(u16)
 #endif
 
+/**
+ * @}
+ */
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/platform/linux-generic/include/api/odp_config.h b/platform/linux-generic/include/api/odp_config.h
index 7a15ff9..3d2cf0a 100644
--- a/platform/linux-generic/include/api/odp_config.h
+++ b/platform/linux-generic/include/api/odp_config.h
@@ -18,6 +18,9 @@
 extern "C" {
 #endif
 
+/** @defgroup odp_config ODP CONFIG
+ *  @{
+ */
 
 /**
  * Maximum number of threads
@@ -44,6 +47,10 @@ extern "C" {
  */
 #define ODP_CONFIG_PKTIO_ENTRIES 64
 
+/**
+ * @}
+ */
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/platform/linux-generic/include/api/odp_coremask.h b/platform/linux-generic/include/api/odp_coremask.h
index 141cb6a..1fa764c 100644
--- a/platform/linux-generic/include/api/odp_coremask.h
+++ b/platform/linux-generic/include/api/odp_coremask.h
@@ -22,6 +22,10 @@ extern "C" {
 
 #include <odp_std_types.h>
 
+/** @defgroup odp_coremask ODP COREMASK
+ *  @{
+ */
+
 /** @internal */
 #define ODP_COREMASK_SIZE_U64  1
 
@@ -170,6 +174,10 @@ static inline int odp_coremask_equal(odp_coremask_t *mask1,
 	return (mask1->_u64[0] == mask2->_u64[0]);
 }
 
+/**
+ * @}
+ */
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/platform/linux-generic/include/api/odp_crypto.h b/platform/linux-generic/include/api/odp_crypto.h
index 9220fb5..7242608 100644
--- a/platform/linux-generic/include/api/odp_crypto.h
+++ b/platform/linux-generic/include/api/odp_crypto.h
@@ -24,6 +24,10 @@ extern "C" {
 #include <odp_queue.h>
 #include <odp_packet.h>
 
+/** @defgroup odp_crypto ODP CRYPTO
+ *  @{
+ */
+
 /** Invalid session handle */
 #define ODP_CRYPTO_SESSION_INVALID (0xffffffffffffffffULL)
 
@@ -349,6 +353,10 @@ odp_crypto_get_operation_compl_ctx(odp_buffer_t completion_event);
 int
 odp_hw_random_get(uint8_t *buf, size_t *len, bool use_entropy);
 
+/**
+ * @}
+ */
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/platform/linux-generic/include/api/odp_debug.h b/platform/linux-generic/include/api/odp_debug.h
index 344b0a9..e876553 100644
--- a/platform/linux-generic/include/api/odp_debug.h
+++ b/platform/linux-generic/include/api/odp_debug.h
@@ -19,6 +19,10 @@
 extern "C" {
 #endif
 
+/** @defgroup odp_debug ODP DEBUG
+ *  @{
+ */
+
 #ifdef __GNUC__
 
 /**
@@ -91,6 +95,10 @@ do { fprintf(stderr, "%s:%d:%s(): " fmt, __FILE__, \
 	abort(); \
 } while (0)
 
+/**
+ * @}
+ */
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/platform/linux-generic/include/api/odp_hints.h b/platform/linux-generic/include/api/odp_hints.h
index e1cd1d0..aa04db8 100644
--- a/platform/linux-generic/include/api/odp_hints.h
+++ b/platform/linux-generic/include/api/odp_hints.h
@@ -18,6 +18,9 @@
 extern "C" {
 #endif
 
+/** @defgroup odp_hints ODP HINTS
+ *  @{
+ */
 
 #ifdef __GNUC__
 
@@ -74,6 +77,9 @@ extern "C" {
 #endif
 
 
+/**
+ * @}
+ */
 
 #ifdef __cplusplus
 }
diff --git a/platform/linux-generic/include/api/odp_init.h b/platform/linux-generic/include/api/odp_init.h
index 13c8e44..77e12ff 100644
--- a/platform/linux-generic/include/api/odp_init.h
+++ b/platform/linux-generic/include/api/odp_init.h
@@ -24,6 +24,9 @@ extern "C" {
 
 
 
+/** @defgroup odp_init ODP INIT
+ *  @{
+ */
 
 /**
  * Perform global ODP initalisation.
@@ -47,6 +50,9 @@ int odp_init_global(void);
 int odp_init_local(void);
 
 
+/**
+ * @}
+ */
 
 #ifdef __cplusplus
 }
diff --git a/platform/linux-generic/include/api/odp_packet.h b/platform/linux-generic/include/api/odp_packet.h
index 316279b..1bfe39d 100644
--- a/platform/linux-generic/include/api/odp_packet.h
+++ b/platform/linux-generic/include/api/odp_packet.h
@@ -20,6 +20,9 @@ extern "C" {
 
 #include <odp_buffer.h>
 
+/** @defgroup odp_packet ODP PACKET
+ *  @{
+ */
 
 /**
  * ODP packet descriptor
@@ -442,6 +445,9 @@ int odp_packet_seg_push_tail(odp_packet_t pkt, odp_packet_seg_t seg,
 int odp_packet_seg_pull_tail(odp_packet_t pkt, odp_packet_seg_t seg,
 			     size_t len);
 
+/**
+ * @}
+ */
 
 #ifdef __cplusplus
 }
diff --git a/platform/linux-generic/include/api/odp_packet_flags.h b/platform/linux-generic/include/api/odp_packet_flags.h
index 2c19440..7707373 100644
--- a/platform/linux-generic/include/api/odp_packet_flags.h
+++ b/platform/linux-generic/include/api/odp_packet_flags.h
@@ -21,6 +21,10 @@ extern "C" {
 #include <odp_std_types.h>
 #include <odp_packet.h>
 
+/** @defgroup odp_packet_flags ODP PACKET FLAGS
+ *  @{
+ */
+
 /**
  * Check for packet errors
  *
@@ -318,6 +322,10 @@ void odp_packet_set_inflag_sctp(odp_packet_t pkt, int val);
  */
 void odp_packet_set_inflag_icmp(odp_packet_t pkt, int val);
 
+/**
+ * @}
+ */
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/platform/linux-generic/include/api/odp_packet_io.h b/platform/linux-generic/include/api/odp_packet_io.h
index 29fd105..934f154 100644
--- a/platform/linux-generic/include/api/odp_packet_io.h
+++ b/platform/linux-generic/include/api/odp_packet_io.h
@@ -23,6 +23,10 @@ extern "C" {
 #include <odp_packet.h>
 #include <odp_queue.h>
 
+/** @defgroup odp_packet_io ODP PACKET IO
+ *  @{
+ */
+
 /** ODP packet IO handle */
 typedef uint32_t odp_pktio_t;
 
@@ -125,6 +129,10 @@ void odp_pktio_set_input(odp_packet_t pkt, odp_pktio_t id);
  */
 odp_pktio_t odp_pktio_get_input(odp_packet_t pkt);
 
+/**
+ * @}
+ */
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/platform/linux-generic/include/api/odp_queue.h b/platform/linux-generic/include/api/odp_queue.h
index 5e083f1..4872572 100644
--- a/platform/linux-generic/include/api/odp_queue.h
+++ b/platform/linux-generic/include/api/odp_queue.h
@@ -22,6 +22,9 @@ extern "C" {
 #include <odp_std_types.h>
 #include <odp_buffer.h>
 
+/** @defgroup odp_queue ODP QUEUE
+ *  @{
+ */
 
 /**
  * ODP queue
@@ -212,6 +215,9 @@ odp_queue_type_t odp_queue_type(odp_queue_t queue);
  */
 odp_schedule_sync_t odp_queue_sched_type(odp_queue_t queue);
 
+/**
+ * @}
+ */
 
 #ifdef __cplusplus
 }
diff --git a/platform/linux-generic/include/api/odp_rwlock.h b/platform/linux-generic/include/api/odp_rwlock.h
index 252ebb2..79e38d8 100644
--- a/platform/linux-generic/include/api/odp_rwlock.h
+++ b/platform/linux-generic/include/api/odp_rwlock.h
@@ -17,6 +17,10 @@
 extern "C" {
 #endif
 
+/** @defgroup odp_rwlock ODP RWLOCK
+ *  @{
+ */
+
 /**
  * The odp_rwlock_t type.
  * write lock count is -1,
@@ -63,6 +67,10 @@ void odp_rwlock_write_lock(odp_rwlock_t *rwlock);
  */
 void odp_rwlock_write_unlock(odp_rwlock_t *rwlock);
 
+/**
+ * @}
+ */
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/platform/linux-generic/include/api/odp_schedule.h b/platform/linux-generic/include/api/odp_schedule.h
index 8087021..6a405c4 100644
--- a/platform/linux-generic/include/api/odp_schedule.h
+++ b/platform/linux-generic/include/api/odp_schedule.h
@@ -23,6 +23,9 @@ extern "C" {
 #include <odp_buffer.h>
 #include <odp_queue.h>
 
+/** @defgroup odp_schedule ODP SCHEDULE
+ *  @{
+ */
 
 #define ODP_SCHED_WAIT     0  /**< Wait infinitely */
 #define ODP_SCHED_NO_WAIT  1  /**< Do not wait */
@@ -136,6 +139,9 @@ void odp_schedule_release_atomic(void);
  */
 int odp_schedule_num_prio(void);
 
+/**
+ * @}
+ */
 
 #ifdef __cplusplus
 }
diff --git a/platform/linux-generic/include/api/odp_shared_memory.h b/platform/linux-generic/include/api/odp_shared_memory.h
index 7ad29c3..b5f3f9d 100644
--- a/platform/linux-generic/include/api/odp_shared_memory.h
+++ b/platform/linux-generic/include/api/odp_shared_memory.h
@@ -21,6 +21,10 @@ extern "C" {
 
 #include <odp_std_types.h>
 
+/** @defgroup odp_shared_memory ODP SHARED MEMORY
+ *  @{
+ */
+
 /** Maximum shared memory block name length in chars */
 #define ODP_SHM_NAME_LEN 32
 
@@ -102,6 +106,9 @@ int odp_shm_info(odp_shm_t shm, odp_shm_info_t *info);
  */
 void odp_shm_print_all(void);
 
+/**
+ * @}
+ */
 
 #ifdef __cplusplus
 }
diff --git a/platform/linux-generic/include/api/odp_spinlock.h b/platform/linux-generic/include/api/odp_spinlock.h
index 52b7a71..189be33 100644
--- a/platform/linux-generic/include/api/odp_spinlock.h
+++ b/platform/linux-generic/include/api/odp_spinlock.h
@@ -21,6 +21,9 @@ extern "C" {
 
 #include <odp_std_types.h>
 
+/** @defgroup odp_spinlock ODP SPINLOCK
+ *  @{
+ */
 
 /**
  * ODP spinlock
@@ -75,6 +78,9 @@ int odp_spinlock_is_locked(odp_spinlock_t *spinlock);
 
 
 
+/**
+ * @}
+ */
 
 #ifdef __cplusplus
 }
diff --git a/platform/linux-generic/include/api/odp_sync.h b/platform/linux-generic/include/api/odp_sync.h
index fbf9abd..1f95053 100644
--- a/platform/linux-generic/include/api/odp_sync.h
+++ b/platform/linux-generic/include/api/odp_sync.h
@@ -18,6 +18,9 @@
 extern "C" {
 #endif
 
+/** @defgroup odp_sync ODP SYNC
+ *  @{
+ */
 
 /**
  * Synchronise stores
@@ -52,6 +55,10 @@ static inline void odp_sync_stores(void)
 }
 
 
+/**
+ * @}
+ */
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/platform/linux-generic/include/api/odp_system_info.h b/platform/linux-generic/include/api/odp_system_info.h
index 7a02df7..4e9cd9b 100644
--- a/platform/linux-generic/include/api/odp_system_info.h
+++ b/platform/linux-generic/include/api/odp_system_info.h
@@ -21,6 +21,9 @@ extern "C" {
 
 #include <odp_std_types.h>
 
+/** @defgroup odp_system_info ODP SYSTEM INFO
+ *  @{
+ */
 
 /**
  * CPU frequency in Hz
@@ -64,6 +67,9 @@ int odp_sys_cache_line_size(void);
  */
 int odp_sys_core_count(void);
 
+/**
+ * @}
+ */
 
 #ifdef __cplusplus
 }
diff --git a/platform/linux-generic/include/api/odp_thread.h b/platform/linux-generic/include/api/odp_thread.h
index 5567748..2b7177d 100644
--- a/platform/linux-generic/include/api/odp_thread.h
+++ b/platform/linux-generic/include/api/odp_thread.h
@@ -18,6 +18,9 @@
 extern "C" {
 #endif
 
+/** @defgroup odp_thread ODP THREAD
+ *  @{
+ */
 
 /**
  * Get thread id
@@ -34,6 +37,9 @@ int odp_thread_id(void);
  */
 int odp_thread_core(void);
 
+/**
+ * @}
+ */
 
 #ifdef __cplusplus
 }
diff --git a/platform/linux-generic/include/api/odp_ticketlock.h b/platform/linux-generic/include/api/odp_ticketlock.h
index 6277a18..69dd9c1 100644
--- a/platform/linux-generic/include/api/odp_ticketlock.h
+++ b/platform/linux-generic/include/api/odp_ticketlock.h
@@ -22,6 +22,9 @@ extern "C" {
 #include <odp_std_types.h>
 #include <odp_atomic.h>
 
+/** @defgroup odp_ticketlock ODP TICKETLOCK
+ *  @{
+ */
 
 /**
  * ODP ticketlock
@@ -75,6 +78,9 @@ void odp_ticketlock_unlock(odp_ticketlock_t *ticketlock);
  */
 int odp_ticketlock_is_locked(odp_ticketlock_t *ticketlock);
 
+/**
+ * @}
+ */
 
 #ifdef __cplusplus
 }
diff --git a/platform/linux-generic/include/api/odp_time.h b/platform/linux-generic/include/api/odp_time.h
index ecddb54..cef141c 100644
--- a/platform/linux-generic/include/api/odp_time.h
+++ b/platform/linux-generic/include/api/odp_time.h
@@ -21,6 +21,10 @@ extern "C" {
 
 #include <odp_std_types.h>
 
+/** @defgroup odp_time ODP TIME
+ *  @{
+ */
+
 /* Time in nanoseconds */
 #define ODP_TIME_USEC 1000UL       /**< Microsecond in nsec */
 #define ODP_TIME_MSEC 1000000UL    /**< Millisecond in nsec */
@@ -65,6 +69,10 @@ uint64_t odp_time_cycles_to_ns(uint64_t cycles);
  */
 uint64_t odp_time_ns_to_cycles(uint64_t ns);
 
+/**
+ * @}
+ */
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/platform/linux-generic/include/api/odp_timer.h b/platform/linux-generic/include/api/odp_timer.h
index 01db839..6cca27c 100644
--- a/platform/linux-generic/include/api/odp_timer.h
+++ b/platform/linux-generic/include/api/odp_timer.h
@@ -23,6 +23,9 @@ extern "C" {
 #include <odp_buffer_pool.h>
 #include <odp_queue.h>
 
+/** @defgroup odp_timer ODP TIMER
+ *  @{
+ */
 
 /**
  * ODP timer handle
@@ -157,6 +160,10 @@ odp_timeout_t odp_timeout_from_buffer(odp_buffer_t buf);
  */
 uint64_t odp_timeout_tick(odp_timeout_t tmo);
 
+/**
+ * @}
+ */
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/platform/linux-generic/include/api/odp_version.h b/platform/linux-generic/include/api/odp_version.h
index c823e2d..19717c3 100644
--- a/platform/linux-generic/include/api/odp_version.h
+++ b/platform/linux-generic/include/api/odp_version.h
@@ -18,6 +18,9 @@
 extern "C" {
 #endif
 
+/** @defgroup odp_version ODP VERSION
+ *  @{
+ */
 
 /**
  * ODP API main version
@@ -68,6 +71,9 @@ static inline const char *odp_version_api_str(void)
 
 
 
+/**
+ * @}
+ */
 
 #ifdef __cplusplus
 }
