diff --git a/kernels_j7/hwa/display_m2m/vx_display_m2m_target.c b/kernels_j7/hwa/display_m2m/vx_display_m2m_target.c
index 56e712c..00726f6 100755
--- a/kernels_j7/hwa/display_m2m/vx_display_m2m_target.c
+++ b/kernels_j7/hwa/display_m2m/vx_display_m2m_target.c
@@ -177,7 +177,7 @@ static vx_status VX_CALLBACK tivxDisplayM2MControl(
 static vx_status tivxDisplayM2MSetCreateParams(
                            tivxDisplayM2MParams *prms,
                            const tivx_obj_desc_user_data_object_t *obj_desc,
-                           const tivx_obj_desc_image_t *obj_desc_imageIn,
+                           tivx_obj_desc_image_t *obj_desc_imageIn[],
                            const tivx_obj_desc_image_t *obj_desc_imageOut);
 
 static vx_status tivxDisplayM2MDrvStructsInit(tivxDisplayM2MDrvObj *drvObj);
@@ -203,7 +203,7 @@ static vx_status VX_CALLBACK tivxDisplayM2MProcess(
     vx_status status = (vx_status)VX_SUCCESS;
     tivxDisplayM2MParams *prms = NULL;
     tivxDisplayM2MDrvObj *drvObj;
-    tivx_obj_desc_image_t *input_desc;
+    tivx_obj_desc_image_t *input0_desc, *input1_desc;
     tivx_obj_desc_image_t *output_desc;
     void *input_target_ptr, *input_target_ptr2 = NULL;
     void *output_target_ptr, *output_target_ptr2 = NULL;
@@ -213,7 +213,7 @@ static vx_status VX_CALLBACK tivxDisplayM2MProcess(
 
     if ( (num_params != TIVX_KERNEL_DISPLAY_M2M_MAX_PARAMS)
         || (NULL == obj_desc[TIVX_KERNEL_DISPLAY_M2M_CONFIGURATION_IDX])
-        || (NULL == obj_desc[TIVX_KERNEL_DISPLAY_M2M_INPUT_IDX])
+        || (NULL == obj_desc[TIVX_KERNEL_DISPLAY_M2M_INPUT0_IDX])
         || (NULL == obj_desc[TIVX_KERNEL_DISPLAY_M2M_OUTPUT_IDX])
     )
     {
@@ -223,7 +223,8 @@ static vx_status VX_CALLBACK tivxDisplayM2MProcess(
     if((vx_status)VX_SUCCESS == status)
     {
         uint32_t size;
-        input_desc = (tivx_obj_desc_image_t *)obj_desc[TIVX_KERNEL_DISPLAY_M2M_INPUT_IDX];
+        input0_desc = (tivx_obj_desc_image_t *)obj_desc[TIVX_KERNEL_DISPLAY_M2M_INPUT0_IDX];
+        input1_desc = (tivx_obj_desc_image_t *)obj_desc[TIVX_KERNEL_DISPLAY_M2M_INPUT1_IDX];
         output_desc = (tivx_obj_desc_image_t *)obj_desc[TIVX_KERNEL_DISPLAY_M2M_OUTPUT_IDX];
 
         status = tivxGetTargetKernelInstanceContext(kernel,
@@ -240,10 +241,10 @@ static vx_status VX_CALLBACK tivxDisplayM2MProcess(
     {
         /* Update 'input_desc' to array from only single image input to
            support blending i.e. more than 1 number of pipes. */
-        input_target_ptr = tivxMemShared2TargetPtr(&input_desc->mem_ptr[0]);
-        if((vx_df_image)VX_DF_IMAGE_NV12 == input_desc->format)
+        input_target_ptr = tivxMemShared2TargetPtr(&input0_desc->mem_ptr[0]);
+        if((vx_df_image)VX_DF_IMAGE_NV12 == input0_desc->format)
         {
-            input_target_ptr2 = tivxMemShared2TargetPtr(&input_desc->mem_ptr[1]);
+            input_target_ptr2 = tivxMemShared2TargetPtr(&input0_desc->mem_ptr[1]);
         }
 
         output_target_ptr = tivxMemShared2TargetPtr(&output_desc->mem_ptr[0]);
@@ -257,11 +258,25 @@ static vx_status VX_CALLBACK tivxDisplayM2MProcess(
 
         drvObj = &prms->drvObj;
         /* Assign input buffer addresses */
-        for (pipeIdx = 0U ; pipeIdx < drvObj->numPipe ; pipeIdx++)
+        frm = &drvObj->inFrm[0u];
+        frm->addr[0U] = (uint64_t)input_target_ptr;
+        if((vx_df_image)VX_DF_IMAGE_NV12 == input0_desc->format)
+        {
+            frm->addr[1U] = (uint64_t)input_target_ptr2;
+        }
+
+        if (NULL != input1_desc)
         {
-            frm = &drvObj->inFrm[pipeIdx];
+            input_target_ptr = tivxMemShared2TargetPtr(&input1_desc->mem_ptr[0]);
+            if((vx_df_image)VX_DF_IMAGE_NV12 == input1_desc->format)
+            {
+                input_target_ptr2 = tivxMemShared2TargetPtr(&input1_desc->mem_ptr[1]);
+            }
+
+            /* Assign input buffer addresses */
+            frm = &drvObj->inFrm[1u];
             frm->addr[0U] = (uint64_t)input_target_ptr;
-            if((vx_df_image)VX_DF_IMAGE_NV12 == input_desc->format)
+            if((vx_df_image)VX_DF_IMAGE_NV12 == input1_desc->format)
             {
                 frm->addr[1U] = (uint64_t)input_target_ptr2;
             }
@@ -314,11 +329,12 @@ static vx_status VX_CALLBACK tivxDisplayM2MCreate(
     vx_status status = (vx_status)VX_SUCCESS;
     tivxDisplayM2MParams *prms = NULL;
     tivx_obj_desc_user_data_object_t *configuration_desc;
-    tivx_obj_desc_image_t *obj_desc_imageIn, *obj_desc_imageOut;
+    tivx_obj_desc_image_t *obj_desc_imageIn[TIVX_DISPLAY_M2M_MAX_PIPE];
+    tivx_obj_desc_image_t *obj_desc_imageOut;
 
     if ( (num_params != TIVX_KERNEL_DISPLAY_M2M_MAX_PARAMS)
         || (NULL == obj_desc[TIVX_KERNEL_DISPLAY_M2M_CONFIGURATION_IDX])
-        || (NULL == obj_desc[TIVX_KERNEL_DISPLAY_M2M_INPUT_IDX])
+        || (NULL == obj_desc[TIVX_KERNEL_DISPLAY_M2M_INPUT0_IDX])
         || (NULL == obj_desc[TIVX_KERNEL_DISPLAY_M2M_OUTPUT_IDX])
     )
     {
@@ -328,7 +344,8 @@ static vx_status VX_CALLBACK tivxDisplayM2MCreate(
     {
 
         configuration_desc = (tivx_obj_desc_user_data_object_t *)obj_desc[TIVX_KERNEL_DISPLAY_M2M_CONFIGURATION_IDX];
-        obj_desc_imageIn  = (tivx_obj_desc_image_t *)obj_desc[TIVX_KERNEL_DISPLAY_M2M_INPUT_IDX];
+        obj_desc_imageIn[0U]  = (tivx_obj_desc_image_t *)obj_desc[TIVX_KERNEL_DISPLAY_M2M_INPUT0_IDX];
+        obj_desc_imageIn[1U]  = (tivx_obj_desc_image_t *)obj_desc[TIVX_KERNEL_DISPLAY_M2M_INPUT1_IDX];
         obj_desc_imageOut = (tivx_obj_desc_image_t *)obj_desc[TIVX_KERNEL_DISPLAY_M2M_OUTPUT_IDX];
 
         if (configuration_desc->mem_size != sizeof(tivx_display_m2m_params_t))
@@ -395,7 +412,7 @@ static vx_status VX_CALLBACK tivxDisplayM2MDelete(
 
     if ( (num_params != TIVX_KERNEL_DISPLAY_M2M_MAX_PARAMS)
         || (NULL == obj_desc[TIVX_KERNEL_DISPLAY_M2M_CONFIGURATION_IDX])
-        || (NULL == obj_desc[TIVX_KERNEL_DISPLAY_M2M_INPUT_IDX])
+        || (NULL == obj_desc[TIVX_KERNEL_DISPLAY_M2M_INPUT0_IDX])
         || (NULL == obj_desc[TIVX_KERNEL_DISPLAY_M2M_OUTPUT_IDX])
     )
     {
@@ -701,7 +718,7 @@ void tivxRemoveTargetKernelDisplayM2M(void)
 static vx_status tivxDisplayM2MSetCreateParams(
                        tivxDisplayM2MParams *prms,
                        const tivx_obj_desc_user_data_object_t *obj_desc,
-                       const tivx_obj_desc_image_t *obj_desc_imageIn,
+                       tivx_obj_desc_image_t *obj_desc_imageIn[],
                        const tivx_obj_desc_image_t *obj_desc_imageOut)
 {
     vx_status status = (vx_status)VX_SUCCESS;
@@ -729,9 +746,11 @@ static vx_status tivxDisplayM2MSetCreateParams(
         drvObj->instId    = createParams->instId;
         drvObj->numPipe   = createParams->numPipe;
         drvObj->overlayId = createParams->overlayId;
-        memcpy(&drvObj->pipeId[0U],
-               &createParams->pipeId[0U],
-               sizeof(createParams->pipeId));
+
+        for (pipeIdx = 0u; pipeIdx < createParams->numPipe; pipeIdx ++)
+        {
+            drvObj->pipeId[pipeIdx] = createParams->pipeId[pipeIdx];
+        }
     }
     /* Initialize driver object */
     if (status == (vx_status)VX_SUCCESS)
@@ -761,8 +780,9 @@ static vx_status tivxDisplayM2MSetCreateParams(
             dispParams->pipeCfg.scEnable          = FALSE;
             dispParams->alphaCfg.globalAlpha      = 0xFFU;
             dispParams->alphaCfg.preMultiplyAlpha = FALSE;
+
             status = tivxDisplayExtractFvid2Format(
-                        obj_desc_imageIn,
+                        obj_desc_imageIn[pipeIdx],
                         &dispParams->pipeCfg.inFmt);
             if (status == (vx_status)VX_SUCCESS)
             {
@@ -824,10 +844,13 @@ static vx_status tivxDisplayM2MSetCreateParams(
                 layerParams->pipeLayerNum[layerIdx] = CSL_DSS_OVERLAY_LAYER_INVALID;
             }
 
-            /* Currently blending is not supported so only one layer is used.
-               This code needs to updated when blending is supported. */
-            layerParams->pipeLayerNum[drvObj->createParams.pipeId[0U]] =
-                                                CSL_DSS_OVERLAY_LAYER_NUM_0;
+            for (pipeIdx = 0U ; pipeIdx < drvObj->numPipe ; pipeIdx++)
+            {
+                /* Currently blending is not supported so only one layer is used.
+                   This code needs to updated when blending is supported. */
+                layerParams->pipeLayerNum[drvObj->createParams.pipeId[pipeIdx]] =
+                                                CSL_DSS_OVERLAY_LAYER_NUM_0 + pipeIdx;
+            }
         }
 
         /* Update frame-lists */
diff --git a/kernels_j7/hwa/host/tivx_hwa_node_api.c b/kernels_j7/hwa/host/tivx_hwa_node_api.c
index 39037bb..f2bae12 100755
--- a/kernels_j7/hwa/host/tivx_hwa_node_api.c
+++ b/kernels_j7/hwa/host/tivx_hwa_node_api.c
@@ -307,12 +307,14 @@ VX_API_ENTRY vx_node VX_API_CALL tivxDisplayNode(
 
 VX_API_ENTRY vx_node VX_API_CALL tivxDisplayM2MNode(vx_graph graph,
                                       vx_user_data_object  configuration,
-                                      vx_image             input,
+                                      vx_image             input0,
+                                      vx_image             input1,
                                       vx_image             output)
 {
     vx_reference prms[] = {
             (vx_reference)configuration,
-            (vx_reference)input,
+            (vx_reference)input0,
+            (vx_reference)input1,
             (vx_reference)output
     };
     vx_node node = tivxCreateNodeByKernelName(graph,
diff --git a/kernels_j7/hwa/host/vx_display_m2m_host.c b/kernels_j7/hwa/host/vx_display_m2m_host.c
index 2397798..4ca5e66 100755
--- a/kernels_j7/hwa/host/vx_display_m2m_host.c
+++ b/kernels_j7/hwa/host/vx_display_m2m_host.c
@@ -91,10 +91,15 @@ static vx_status VX_CALLBACK tivxAddKernelDisplayM2MValidate(vx_node node,
     vx_size configuration_size;
     tivx_display_m2m_params_t params;
 
-    vx_image input = NULL;
-    vx_uint32 input_w;
-    vx_uint32 input_h;
-    vx_df_image input_fmt;
+    vx_image input0 = NULL;
+    vx_uint32 input0_w;
+    vx_uint32 input0_h;
+    vx_df_image input0_fmt;
+
+    vx_image input1 = NULL;
+    vx_uint32 input1_w;
+    vx_uint32 input1_h;
+    vx_df_image input1_fmt;
 
     vx_image output = NULL;
     vx_uint32 output_w;
@@ -103,7 +108,7 @@ static vx_status VX_CALLBACK tivxAddKernelDisplayM2MValidate(vx_node node,
 
     if ( (num != TIVX_KERNEL_DISPLAY_M2M_MAX_PARAMS)
         || (NULL == parameters[TIVX_KERNEL_DISPLAY_M2M_CONFIGURATION_IDX])
-        || (NULL == parameters[TIVX_KERNEL_DISPLAY_M2M_INPUT_IDX])
+        || (NULL == parameters[TIVX_KERNEL_DISPLAY_M2M_INPUT0_IDX])
         || (NULL == parameters[TIVX_KERNEL_DISPLAY_M2M_OUTPUT_IDX])
     )
     {
@@ -114,7 +119,7 @@ static vx_status VX_CALLBACK tivxAddKernelDisplayM2MValidate(vx_node node,
     if ((vx_status)VX_SUCCESS == status)
     {
         configuration = (vx_user_data_object)parameters[TIVX_KERNEL_DISPLAY_M2M_CONFIGURATION_IDX];
-        input = (vx_image)parameters[TIVX_KERNEL_DISPLAY_M2M_INPUT_IDX];
+        input0 = (vx_image)parameters[TIVX_KERNEL_DISPLAY_M2M_INPUT0_IDX];
         output = (vx_image)parameters[TIVX_KERNEL_DISPLAY_M2M_OUTPUT_IDX];
     }
 
@@ -126,15 +131,35 @@ static vx_status VX_CALLBACK tivxAddKernelDisplayM2MValidate(vx_node node,
         tivxCheckStatus(&status, vxQueryUserDataObject(configuration, (vx_enum)VX_USER_DATA_OBJECT_NAME, &configuration_name, sizeof(configuration_name)));
         tivxCheckStatus(&status, vxQueryUserDataObject(configuration, (vx_enum)VX_USER_DATA_OBJECT_SIZE, &configuration_size, sizeof(configuration_size)));
 
-        tivxCheckStatus(&status, vxQueryImage(input, (vx_enum)VX_IMAGE_WIDTH, &input_w, sizeof(input_w)));
-        tivxCheckStatus(&status, vxQueryImage(input, (vx_enum)VX_IMAGE_HEIGHT, &input_h, sizeof(input_h)));
-        tivxCheckStatus(&status, vxQueryImage(input, (vx_enum)VX_IMAGE_FORMAT, &input_fmt, sizeof(input_fmt)));
+        tivxCheckStatus(&status, vxQueryImage(input0, (vx_enum)VX_IMAGE_WIDTH, &input0_w, sizeof(input0_w)));
+        tivxCheckStatus(&status, vxQueryImage(input0, (vx_enum)VX_IMAGE_HEIGHT, &input0_h, sizeof(input0_h)));
+        tivxCheckStatus(&status, vxQueryImage(input0, (vx_enum)VX_IMAGE_FORMAT, &input0_fmt, sizeof(input0_fmt)));
 
         tivxCheckStatus(&status, vxQueryImage(output, (vx_enum)VX_IMAGE_WIDTH, &output_w, sizeof(output_w)));
         tivxCheckStatus(&status, vxQueryImage(output, (vx_enum)VX_IMAGE_HEIGHT, &output_h, sizeof(output_h)));
         tivxCheckStatus(&status, vxQueryImage(output, (vx_enum)VX_IMAGE_FORMAT, &output_fmt, sizeof(output_fmt)));
     }
 
+    if (NULL != parameters[TIVX_KERNEL_DISPLAY_M2M_INPUT1_IDX])
+    {
+        input1 = (vx_image)parameters[TIVX_KERNEL_DISPLAY_M2M_INPUT1_IDX];
+
+        tivxCheckStatus(&status, vxQueryImage(input1, (vx_enum)VX_IMAGE_WIDTH, &input1_w, sizeof(input1_w)));
+        tivxCheckStatus(&status, vxQueryImage(input1, (vx_enum)VX_IMAGE_HEIGHT, &input1_h, sizeof(input1_h)));
+        tivxCheckStatus(&status, vxQueryImage(input1, (vx_enum)VX_IMAGE_FORMAT, &input1_fmt, sizeof(input1_fmt)));
+
+        if( ((vx_df_image)VX_DF_IMAGE_RGB != input1_fmt) &&
+            ((vx_df_image)VX_DF_IMAGE_RGBX != input1_fmt) &&
+            ((vx_df_image)VX_DF_IMAGE_UYVY != input1_fmt) &&
+            ((vx_df_image)VX_DF_IMAGE_YUYV != input1_fmt) &&
+            ((vx_df_image)VX_DF_IMAGE_NV12 != input1_fmt))
+        {
+            status = (vx_status)VX_ERROR_INVALID_PARAMETERS;
+            VX_PRINT(VX_ZONE_ERROR, "'input1' should be an image of type:\n VX_DF_IMAGE_RGB or VX_DF_IMAGE_RGBX or VX_DF_IMAGE_UYVY or VX_DF_IMAGE_NV12 \n");
+        }
+
+    }
+
     /* PARAMETER CHECKING */
 
     if ((vx_status)VX_SUCCESS == status)
@@ -159,11 +184,11 @@ static vx_status VX_CALLBACK tivxAddKernelDisplayM2MValidate(vx_node node,
             }
         }
 
-        if( ((vx_df_image)VX_DF_IMAGE_RGB != input_fmt) &&
-            ((vx_df_image)VX_DF_IMAGE_RGBX != input_fmt) &&
-            ((vx_df_image)VX_DF_IMAGE_UYVY != input_fmt) &&
-            ((vx_df_image)VX_DF_IMAGE_YUYV != input_fmt) &&
-            ((vx_df_image)VX_DF_IMAGE_NV12 != input_fmt))
+        if( ((vx_df_image)VX_DF_IMAGE_RGB != input0_fmt) &&
+            ((vx_df_image)VX_DF_IMAGE_RGBX != input0_fmt) &&
+            ((vx_df_image)VX_DF_IMAGE_UYVY != input0_fmt) &&
+            ((vx_df_image)VX_DF_IMAGE_YUYV != input0_fmt) &&
+            ((vx_df_image)VX_DF_IMAGE_NV12 != input0_fmt))
         {
             status = (vx_status)VX_ERROR_INVALID_PARAMETERS;
             VX_PRINT(VX_ZONE_ERROR, "'input' should be an image of type:\n VX_DF_IMAGE_RGB or VX_DF_IMAGE_RGBX or VX_DF_IMAGE_UYVY or VX_DF_IMAGE_NV12 \n");
@@ -192,7 +217,7 @@ static vx_status VX_CALLBACK tivxAddKernelDisplayM2MInitialize(vx_node node,
 
     if ( (num_params != TIVX_KERNEL_DISPLAY_M2M_MAX_PARAMS)
         || (NULL == parameters[TIVX_KERNEL_DISPLAY_M2M_CONFIGURATION_IDX])
-        || (NULL == parameters[TIVX_KERNEL_DISPLAY_M2M_INPUT_IDX])
+        || (NULL == parameters[TIVX_KERNEL_DISPLAY_M2M_INPUT0_IDX])
         || (NULL == parameters[TIVX_KERNEL_DISPLAY_M2M_OUTPUT_IDX])
     )
     {
@@ -203,10 +228,18 @@ static vx_status VX_CALLBACK tivxAddKernelDisplayM2MInitialize(vx_node node,
     {
         tivxKernelValidRectParams_init(&prms);
 
-        prms.in_img[0U] = (vx_image)parameters[TIVX_KERNEL_DISPLAY_M2M_INPUT_IDX];
+        prms.in_img[0U] = (vx_image)parameters[TIVX_KERNEL_DISPLAY_M2M_INPUT0_IDX];
         prms.out_img[0U] = (vx_image)parameters[TIVX_KERNEL_DISPLAY_M2M_OUTPUT_IDX];
 
-        prms.num_input_images = 1;
+        if (NULL != parameters[TIVX_KERNEL_DISPLAY_M2M_INPUT1_IDX])
+        {
+            prms.in_img[1U] = (vx_image)parameters[TIVX_KERNEL_DISPLAY_M2M_INPUT1_IDX];
+            prms.num_input_images = 2;
+        }
+        else
+        {
+            prms.num_input_images = 1;
+        }
         prms.num_output_images = 1;
 
         prms.top_pad = 0;
@@ -272,6 +305,16 @@ vx_status tivxAddKernelDisplayM2M(vx_context context)
             index++;
         }
         if (status == (vx_status)VX_SUCCESS)
+        {
+            status = vxAddParameterToKernel(kernel,
+                        index,
+                        (vx_enum)VX_INPUT,
+                        (vx_enum)VX_TYPE_IMAGE,
+                        (vx_enum)VX_PARAMETER_STATE_OPTIONAL
+            );
+            index++;
+        }
+        if (status == (vx_status)VX_SUCCESS)
         {
             status = vxAddParameterToKernel(kernel,
                         index,
@@ -327,8 +370,8 @@ void tivx_display_m2m_params_init(tivx_display_m2m_params_t *prms)
     prms->numPipe = 1U;
     for (loopCnt = 0U ; loopCnt < TIVX_DISPLAY_M2M_MAX_PIPE ; loopCnt++)
     {
-        prms->pipeId[loopCnt] = 1U;
+        prms->pipeId[loopCnt] = 1U + loopCnt;
     }
     prms->overlayId = 0U;
 }
-#endif /* BUILD_DISPLAY */
\ No newline at end of file
+#endif /* BUILD_DISPLAY */
diff --git a/kernels_j7/hwa/include/tivx_kernel_display_m2m.h b/kernels_j7/hwa/include/tivx_kernel_display_m2m.h
old mode 100644
new mode 100755
index 7739e19..a1d42f6
--- a/kernels_j7/hwa/include/tivx_kernel_display_m2m.h
+++ b/kernels_j7/hwa/include/tivx_kernel_display_m2m.h
@@ -69,10 +69,11 @@ extern "C" {
 
 
 #define TIVX_KERNEL_DISPLAY_M2M_CONFIGURATION_IDX     (0U)
-#define TIVX_KERNEL_DISPLAY_M2M_INPUT_IDX             (1U)
-#define TIVX_KERNEL_DISPLAY_M2M_OUTPUT_IDX            (2U)
+#define TIVX_KERNEL_DISPLAY_M2M_INPUT0_IDX            (1U)
+#define TIVX_KERNEL_DISPLAY_M2M_INPUT1_IDX            (2U)
+#define TIVX_KERNEL_DISPLAY_M2M_OUTPUT_IDX            (3U)
 
-#define TIVX_KERNEL_DISPLAY_M2M_MAX_PARAMS            (3U)
+#define TIVX_KERNEL_DISPLAY_M2M_MAX_PARAMS            (4U)
 
 #define TIVX_DISPLAY_M2M_MAX_NUM_IN_BUFS              (4U)
 #define TIVX_DISPLAY_M2M_MAX_NUM_OUT_BUFS             (4U)
diff --git a/kernels_j7/hwa/test/test_display_m2m.c b/kernels_j7/hwa/test/test_display_m2m.c
index dac75fc..ea5f00b 100755
--- a/kernels_j7/hwa/test/test_display_m2m.c
+++ b/kernels_j7/hwa/test/test_display_m2m.c
@@ -277,7 +277,7 @@ static void VX_CALLBACK tivxTask_m2m(void *app_var)
                                         &local_m2m_config),
                                         (enum vx_type_e)VX_TYPE_USER_DATA_OBJECT);
 
-    ASSERT_VX_OBJECT(m2m_node = tivxDisplayM2MNode(m2m_graph, m2m_config, in_image, out_image), VX_TYPE_NODE);
+    ASSERT_VX_OBJECT(m2m_node = tivxDisplayM2MNode(m2m_graph, m2m_config, in_image, NULL, out_image), VX_TYPE_NODE);
 
     VX_CALL(vxSetNodeTarget(m2m_node, VX_TARGET_STRING, &testParams->nodeName[0U]));
 
@@ -447,4 +447,4 @@ TEST_WITH_ARG(tivxHwaDisplayM2M, tivxHwaDisplayM2Mtest, Arg, PARAMETERS)
 TESTCASE_TESTS(tivxHwaDisplayM2M,
                tivxHwaDisplayM2Mtest)
 
-#endif /* BUILD_DISPLAY */
\ No newline at end of file
+#endif /* BUILD_DISPLAY */
diff --git a/kernels_j7/include/TI/j7_display_m2m.h b/kernels_j7/include/TI/j7_display_m2m.h
index 44ee2cc..7791242 100755
--- a/kernels_j7/include/TI/j7_display_m2m.h
+++ b/kernels_j7/include/TI/j7_display_m2m.h
@@ -1,198 +1,200 @@
-/*
- *
- * Copyright (c) 2021 Texas Instruments Incorporated
- *
- * All rights reserved not granted herein.
- *
- * Limited License.
- *
- * Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
- * license under copyrights and patents it now or hereafter owns or controls to make,
- * have made, use, import, offer to sell and sell ("Utilize") this software subject to the
- * terms herein.  With respect to the foregoing patent license, such license is granted
- * solely to the extent that any such patent is necessary to Utilize the software alone.
- * The patent license shall not apply to any combinations which include this software,
- * other than combinations with devices manufactured by or for TI ("TI Devices").
- * No hardware patent is licensed hereunder.
- *
- * Redistributions must preserve existing copyright notices and reproduce this license
- * (including the above copyright notice and the disclaimer and (if applicable) source
- * code license limitations below) in the documentation and/or other materials provided
- * with the distribution
- *
- * Redistribution and use in binary form, without modification, are permitted provided
- * that the following conditions are met:
- *
- * *       No reverse engineering, decompilation, or disassembly of this software is
- * permitted with respect to any software provided in binary form.
- *
- * *       any redistribution and use are licensed by TI for use only with TI Devices.
- *
- * *       Nothing shall obligate TI to provide you with source code for the software
- * licensed and provided to you in object code.
- *
- * If software source code is provided to you, modification and redistribution of the
- * source code are permitted provided that the following conditions are met:
- *
- * *       any redistribution and use of the source code, including any resulting derivative
- * works, are licensed by TI for use only with TI Devices.
- *
- * *       any redistribution and use of any object code compiled from the source code
- * and any resulting derivative works, are licensed by TI for use only with TI Devices.
- *
- * Neither the name of Texas Instruments Incorporated nor the names of its suppliers
- *
- * may be used to endorse or promote products derived from this software without
- * specific prior written permission.
- *
- * DISCLAIMER.
- *
- * THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS
- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#ifndef J7_DISPLAY_M2M_H_
-#define J7_DISPLAY_M2M_H_
-
-#include <VX/vx.h>
-#include <VX/vx_kernels.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*!
- * \file
- * \brief The Display M2M kernels in this kernel extension.
- */
-
-/*! \brief Display M2M kernel name
- *  \ingroup group_vision_function_display_m2m
- */
-#define TIVX_KERNEL_DISPLAY_M2M_NAME          "com.ti.hwa.displaym2m"
-
-/*********************************
- *      Display M2M Control Commands
- *********************************/
-/*! \brief Control Command to return Display M2M statistics to application
- *
- *  \ingroup group_vision_function_display_m2m
- *  This control command returns the status of the Display M2M node.
- *  Please refer to #tivx_display_m2m_statistics_t structure.
- */
-#define TIVX_DISPLAY_M2M_GET_STATISTICS                      (0x40000001u)
-
-/*********************************
- *      Display M2M Defines
- *********************************/
-/*! \brief Maximum number of display pipe-line supported in the DSS M2M node.
- *         Multiple number of pipe-lines are needed to support blending.
- *
- *  \ingroup group_vision_function_display_m2m
- */
-#define TIVX_DISPLAY_M2M_MAX_PIPE                     (1U)
-
-/*********************************
- *      Display M2M STRUCTURES
- *********************************/
-/*!
- * \brief The configuration data structure used by the TIVX_KERNEL_DISPLAY_M2M kernel.
- *
- * \ingroup group_vision_function_display_m2m
- */
-typedef struct {
-    /*! Write-back pipeline to use. IDs=> 0: Write-back pipe-line1 */
-    uint32_t instId;
-    /*! Number of pipe-lines to be used,
-        should be set to '1' as blending is not supported currently */
-    uint32_t numPipe;
-    /*! IDs of pipe-lines to be used,
-        IDs=> 0:VID1, 1:VIDL1, 2:VID2 */
-    uint32_t pipeId[TIVX_DISPLAY_M2M_MAX_PIPE];
-    /*! Overlay to be used. IDs=> 0:Overlay1 1:Overlay2 2:Overlay3 3:Overlay4 */
-    uint32_t overlayId;
-} tivx_display_m2m_params_t;
-
-/*!
- * \brief Display M2M status structure used to get the current status.
- *
- * \ingroup group_vision_function_display_m2m
- */
-typedef struct
-{
-    /*! Counter to keep track of how many requests are queued to the
-        driver.
-        Note: This counter will be reset at the time of driver init. */
-    uint32_t queueCount;
-    /*! Counter to keep track of how many requests are dequeued from the
-        driver.
-        Note: This counter will be reset at the time of driver init. */
-    uint32_t dequeueCount;
-    /*! Counter to keep track of how many requests are wrote back by the
-        driver.
-        Note: This counter will be reset at the time of driver init. */
-    uint32_t wbFrmCount;
-    /*! Counter to keep track of the occurrence of underflow error.
-        Note: This counter will be reset at the time of driver create and
-        during driver start. */
-    uint32_t underflowCount;
-} tivx_display_m2m_statistics_t;
-
-/*********************************
- *      Function Prototypes
- *********************************/
-
-/*!
- * \brief Function to register HWA Kernels on the display_m2m Target
- * \ingroup group_tivx_ext
- */
-void tivxRegisterHwaTargetDisplayM2MKernels(void);
-
-/*!
- * \brief Function to un-register HWA Kernels on the display_m2m Target
- * \ingroup group_tivx_ext
- */
-void tivxUnRegisterHwaTargetDisplayM2MKernels(void);
-
-/*! \brief [Graph] Creates a DISPLAY_M2M Node.
- * This node can be used to do color space conversion like YUV422 to YUV420 OR
- * RGB888 to YUV420 and vice versa. This node operates in Memory to Memory mode.
- * \param [in] graph The reference to the graph.
- * \param [in] configuration
- * \param [in] input
- * \param [out] output
- * \see <tt>TIVX_KERNEL_DISPLAY_M2M_NAME</tt>
- * \ingroup group_vision_function_display_m2m
- * \return <tt>\ref vx_node</tt>.
- * \retval vx_node A node reference. Any possible errors preventing a successful creation should be checked using <tt>\ref vxGetStatus</tt>
- */
-VX_API_ENTRY vx_node VX_API_CALL tivxDisplayM2MNode(vx_graph graph,
-                                      vx_user_data_object  configuration,
-                                      vx_image             input,
-                                      vx_image             output);
-
-/*!
- * \brief Function to initialize Display M2M Parameters
- *
- * \param prms  [in] Pointer to display M2M params configuration structure
- *
- * \ingroup group_vision_function_display_m2m
- */
-void tivx_display_m2m_params_init(tivx_display_m2m_params_t *prms);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* J7_DISPLAY_M2M_H_ */
-
+/*
+ *
+ * Copyright (c) 2021 Texas Instruments Incorporated
+ *
+ * All rights reserved not granted herein.
+ *
+ * Limited License.
+ *
+ * Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
+ * license under copyrights and patents it now or hereafter owns or controls to make,
+ * have made, use, import, offer to sell and sell ("Utilize") this software subject to the
+ * terms herein.  With respect to the foregoing patent license, such license is granted
+ * solely to the extent that any such patent is necessary to Utilize the software alone.
+ * The patent license shall not apply to any combinations which include this software,
+ * other than combinations with devices manufactured by or for TI ("TI Devices").
+ * No hardware patent is licensed hereunder.
+ *
+ * Redistributions must preserve existing copyright notices and reproduce this license
+ * (including the above copyright notice and the disclaimer and (if applicable) source
+ * code license limitations below) in the documentation and/or other materials provided
+ * with the distribution
+ *
+ * Redistribution and use in binary form, without modification, are permitted provided
+ * that the following conditions are met:
+ *
+ * *       No reverse engineering, decompilation, or disassembly of this software is
+ * permitted with respect to any software provided in binary form.
+ *
+ * *       any redistribution and use are licensed by TI for use only with TI Devices.
+ *
+ * *       Nothing shall obligate TI to provide you with source code for the software
+ * licensed and provided to you in object code.
+ *
+ * If software source code is provided to you, modification and redistribution of the
+ * source code are permitted provided that the following conditions are met:
+ *
+ * *       any redistribution and use of the source code, including any resulting derivative
+ * works, are licensed by TI for use only with TI Devices.
+ *
+ * *       any redistribution and use of any object code compiled from the source code
+ * and any resulting derivative works, are licensed by TI for use only with TI Devices.
+ *
+ * Neither the name of Texas Instruments Incorporated nor the names of its suppliers
+ *
+ * may be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * DISCLAIMER.
+ *
+ * THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef J7_DISPLAY_M2M_H_
+#define J7_DISPLAY_M2M_H_
+
+#include <VX/vx.h>
+#include <VX/vx_kernels.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*!
+ * \file
+ * \brief The Display M2M kernels in this kernel extension.
+ */
+
+/*! \brief Display M2M kernel name
+ *  \ingroup group_vision_function_display_m2m
+ */
+#define TIVX_KERNEL_DISPLAY_M2M_NAME          "com.ti.hwa.displaym2m"
+
+/*********************************
+ *      Display M2M Control Commands
+ *********************************/
+/*! \brief Control Command to return Display M2M statistics to application
+ *
+ *  \ingroup group_vision_function_display_m2m
+ *  This control command returns the status of the Display M2M node.
+ *  Please refer to #tivx_display_m2m_statistics_t structure.
+ */
+#define TIVX_DISPLAY_M2M_GET_STATISTICS                      (0x40000001u)
+
+/*********************************
+ *      Display M2M Defines
+ *********************************/
+/*! \brief Maximum number of display pipe-line supported in the DSS M2M node.
+ *         Multiple number of pipe-lines are needed to support blending.
+ *
+ *  \ingroup group_vision_function_display_m2m
+ */
+#define TIVX_DISPLAY_M2M_MAX_PIPE                           (2U)
+
+/*********************************
+ *      Display M2M STRUCTURES
+ *********************************/
+/*!
+ * \brief The configuration data structure used by the TIVX_KERNEL_DISPLAY_M2M kernel.
+ *
+ * \ingroup group_vision_function_display_m2m
+ */
+typedef struct {
+    /*! Write-back pipeline to use. IDs=> 0: Write-back pipe-line1 */
+    uint32_t instId;
+    /*! Number of pipe-lines to be used,
+        should be set to '1' as blending is not supported currently */
+    uint32_t numPipe;
+    /*! IDs of pipe-lines to be used,
+        IDs=> 0:VID1, 1:VIDL1, 2:VID2 */
+    uint32_t pipeId[TIVX_DISPLAY_M2M_MAX_PIPE];
+    /*! Overlay to be used. IDs=> 0:Overlay1 1:Overlay2 2:Overlay3 3:Overlay4 */
+    uint32_t overlayId;
+} tivx_display_m2m_params_t;
+
+/*!
+ * \brief Display M2M status structure used to get the current status.
+ *
+ * \ingroup group_vision_function_display_m2m
+ */
+typedef struct
+{
+    /*! Counter to keep track of how many requests are queued to the
+        driver.
+        Note: This counter will be reset at the time of driver init. */
+    uint32_t queueCount;
+    /*! Counter to keep track of how many requests are dequeued from the
+        driver.
+        Note: This counter will be reset at the time of driver init. */
+    uint32_t dequeueCount;
+    /*! Counter to keep track of how many requests are wrote back by the
+        driver.
+        Note: This counter will be reset at the time of driver init. */
+    uint32_t wbFrmCount;
+    /*! Counter to keep track of the occurrence of underflow error.
+        Note: This counter will be reset at the time of driver create and
+        during driver start. */
+    uint32_t underflowCount;
+} tivx_display_m2m_statistics_t;
+
+/*********************************
+ *      Function Prototypes
+ *********************************/
+
+/*!
+ * \brief Function to register HWA Kernels on the display_m2m Target
+ * \ingroup group_tivx_ext
+ */
+void tivxRegisterHwaTargetDisplayM2MKernels(void);
+
+/*!
+ * \brief Function to un-register HWA Kernels on the display_m2m Target
+ * \ingroup group_tivx_ext
+ */
+void tivxUnRegisterHwaTargetDisplayM2MKernels(void);
+
+/*! \brief [Graph] Creates a DISPLAY_M2M Node.
+ * This node can be used to do color space conversion like YUV422 to YUV420 OR
+ * RGB888 to YUV420 and vice versa. This node operates in Memory to Memory mode.
+ * \param [in] graph The reference to the graph.
+ * \param [in] configuration
+ * \param [in] input0
+ * \param [in] input1
+ * \param [out] output
+ * \see <tt>TIVX_KERNEL_DISPLAY_M2M_NAME</tt>
+ * \ingroup group_vision_function_display_m2m
+ * \return <tt>\ref vx_node</tt>.
+ * \retval vx_node A node reference. Any possible errors preventing a successful creation should be checked using <tt>\ref vxGetStatus</tt>
+ */
+VX_API_ENTRY vx_node VX_API_CALL tivxDisplayM2MNode(vx_graph graph,
+                                      vx_user_data_object  configuration,
+                                      vx_image             input0,
+                                      vx_image             input1,
+                                      vx_image             output);
+
+/*!
+ * \brief Function to initialize Display M2M Parameters
+ *
+ * \param prms  [in] Pointer to display M2M params configuration structure
+ *
+ * \ingroup group_vision_function_display_m2m
+ */
+void tivx_display_m2m_params_init(tivx_display_m2m_params_t *prms);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* J7_DISPLAY_M2M_H_ */
+
