diff --git a/include/fsl-mc/fsl_dpmng.h b/include/fsl-mc/fsl_dpmng.h
index c2e1ddd..986e7c8 100644
--- a/include/fsl-mc/fsl_dpmng.h
+++ b/include/fsl-mc/fsl_dpmng.h
@@ -1,121 +1,44 @@
-/* Copyright 2014 Freescale Semiconductor Inc.
+/* Copyright 2013-2015 Freescale Semiconductor Inc.
  *
  * SPDX-License-Identifier:	GPL-2.0+
  */
-/*!
- *  @file    fsl_dpmng.h
- *  @brief   Management Complex General API
- */
-
 #ifndef __FSL_DPMNG_H
 #define __FSL_DPMNG_H
 
-/*!
- * @Group grp_dpmng	Management Complex General API
- *
- * @brief	Contains general API for the Management Complex firmware
- * @{
+/* Management Complex General API
+ * Contains general API for the Management Complex firmware
  */
 
 struct fsl_mc_io;
 
 /**
- * @brief	Management Complex firmware version information
+ * Management Complex firmware version information
  */
-#define MC_VER_MAJOR 4
+#define MC_VER_MAJOR 6
 #define MC_VER_MINOR 0
 
+/**
+ * struct mc_versoin
+ * @major: Major version number: incremented on API compatibility changes
+ * @minor: Minor version number: incremented on API additions (that are
+ *		backward compatible); reset when major version is incremented
+ * @revision: Internal revision number: incremented on implementation changes
+ *		and/or bug fixes that have no impact on API
+ */
 struct mc_version {
 	uint32_t major;
-	/*!< Major version number: incremented on API compatibility changes */
 	uint32_t minor;
-	/*!< Minor version number: incremented on API additions (that are
-	 * backward compatible); reset when major version is incremented
-	 */
 	uint32_t revision;
-	/*!< Internal revision number: incremented on implementation changes
-	 * and/or bug fixes that have no impact on API
-	 */
 };
 
 /**
- * @brief	Retrieves the Management Complex firmware version information
- *
- * @param[in]	mc_io		Pointer to opaque I/O object
- * @param[out]	mc_ver_info	Pointer to version information structure
+ * mc_get_version() - Retrieves the Management Complex firmware
+ *			version information
+ * @mc_io:		Pointer to opaque I/O object
+ * @mc_ver_info:	Returned version information structure
  *
- * @returns	'0' on Success; Error code otherwise.
+ * Return:	'0' on Success; Error code otherwise.
  */
 int mc_get_version(struct fsl_mc_io *mc_io, struct mc_version *mc_ver_info);
 
-/**
- * @brief	Resets an AIOP tile
- *
- * @param[in]	mc_io		Pointer to opaque I/O object
- * @param[in]	container_id	AIOP container ID
- * @param[in]	aiop_tile_id	AIOP tile ID to reset
- *
- * @returns	'0' on Success; Error code otherwise.
- */
-int dpmng_reset_aiop(struct fsl_mc_io	*mc_io,
-		     int		container_id,
-		     int		aiop_tile_id);
-
-/**
- * @brief	Loads an image to AIOP tile
- *
- * @param[in]	mc_io		Pointer to opaque I/O object
- * @param[in]	container_id	AIOP container ID
- * @param[in]	aiop_tile_id	AIOP tile ID to reset
- * @param[in]	img_iova	I/O virtual address of AIOP ELF image
- * @param[in]	img_size	Size of AIOP ELF image in memory (in bytes)
- *
- * @returns	'0' on Success; Error code otherwise.
- */
-int dpmng_load_aiop(struct fsl_mc_io	*mc_io,
-		    int			container_id,
-		    int			aiop_tile_id,
-		    uint64_t		img_iova,
-		    uint32_t		img_size);
-
-/**
- * @brief	AIOP run configuration
- */
-struct dpmng_aiop_run_cfg {
-	uint32_t cores_mask;
-	/*!< Mask of AIOP cores to run (core 0 in most significant bit) */
-	uint64_t options;
-	/*!< Execution options (currently none defined) */
-};
-
-/**
- * @brief	Starts AIOP tile execution
- *
- * @param[in]	mc_io		Pointer to MC portal's I/O object
- * @param[in]	container_id	AIOP container ID
- * @param[in]	aiop_tile_id	AIOP tile ID to reset
- * @param[in]	cfg		AIOP run configuration
- *
- * @returns	'0' on Success; Error code otherwise.
- */
-int dpmng_run_aiop(struct fsl_mc_io			*mc_io,
-		   int					container_id,
-		   int					aiop_tile_id,
-		   const struct dpmng_aiop_run_cfg	*cfg);
-
-/**
- * @brief	Resets MC portal
- *
- * This function closes all object handles (tokens) that are currently
- * open in the MC portal on which the command is submitted. This allows
- * cleanup of stale handles that belong to non-functional user processes.
- *
- * @param[in]	mc_io	Pointer to MC portal's I/O object
- *
- * @returns	'0' on Success; Error code otherwise.
- */
-int dpmng_reset_mc_portal(struct fsl_mc_io *mc_io);
-
-/** @} */
-
 #endif /* __FSL_DPMNG_H */
