typedef struct ctrl_unit_state_s       ctrl_unit_state_t;
 
 typedef enum {
-       MIPI_FORMAT_RGB888 = 0,
-       MIPI_FORMAT_RGB555,
-       MIPI_FORMAT_RGB444,
-       MIPI_FORMAT_RGB565,
-       MIPI_FORMAT_RGB666,
-       MIPI_FORMAT_RAW8,               /* 5 */
-       MIPI_FORMAT_RAW10,
-       MIPI_FORMAT_RAW6,
-       MIPI_FORMAT_RAW7,
-       MIPI_FORMAT_RAW12,
-       MIPI_FORMAT_RAW14,              /* 10 */
-       MIPI_FORMAT_YUV420_8,
-       MIPI_FORMAT_YUV420_10,
-       MIPI_FORMAT_YUV422_8,
-       MIPI_FORMAT_YUV422_10,
-       MIPI_FORMAT_CUSTOM0,    /* 15 */
-       MIPI_FORMAT_YUV420_8_LEGACY,
-       MIPI_FORMAT_EMBEDDED,
-       MIPI_FORMAT_CUSTOM1,
-       MIPI_FORMAT_CUSTOM2,
-       MIPI_FORMAT_CUSTOM3,    /* 20 */
-       MIPI_FORMAT_CUSTOM4,
-       MIPI_FORMAT_CUSTOM5,
-       MIPI_FORMAT_CUSTOM6,
-       MIPI_FORMAT_CUSTOM7,
-       MIPI_FORMAT_YUV420_8_SHIFT,     /* 25 */
-       MIPI_FORMAT_YUV420_10_SHIFT,
-       MIPI_FORMAT_RAW16,
-       MIPI_FORMAT_RAW18,
-       N_MIPI_FORMAT,
-} mipi_format_t;
-
-#define MIPI_FORMAT_JPEG               MIPI_FORMAT_CUSTOM0
-#define MIPI_FORMAT_BINARY_8   MIPI_FORMAT_CUSTOM0
+       MIPI_FORMAT_2400_RGB888 = 0,
+       MIPI_FORMAT_2400_RGB555,
+       MIPI_FORMAT_2400_RGB444,
+       MIPI_FORMAT_2400_RGB565,
+       MIPI_FORMAT_2400_RGB666,
+       MIPI_FORMAT_2400_RAW8,          /* 5 */
+       MIPI_FORMAT_2400_RAW10,
+       MIPI_FORMAT_2400_RAW6,
+       MIPI_FORMAT_2400_RAW7,
+       MIPI_FORMAT_2400_RAW12,
+       MIPI_FORMAT_2400_RAW14,         /* 10 */
+       MIPI_FORMAT_2400_YUV420_8,
+       MIPI_FORMAT_2400_YUV420_10,
+       MIPI_FORMAT_2400_YUV422_8,
+       MIPI_FORMAT_2400_YUV422_10,
+       MIPI_FORMAT_2400_CUSTOM0,       /* 15 */
+       MIPI_FORMAT_2400_YUV420_8_LEGACY,
+       MIPI_FORMAT_2400_EMBEDDED,
+       MIPI_FORMAT_2400_CUSTOM1,
+       MIPI_FORMAT_2400_CUSTOM2,
+       MIPI_FORMAT_2400_CUSTOM3,       /* 20 */
+       MIPI_FORMAT_2400_CUSTOM4,
+       MIPI_FORMAT_2400_CUSTOM5,
+       MIPI_FORMAT_2400_CUSTOM6,
+       MIPI_FORMAT_2400_CUSTOM7,
+       MIPI_FORMAT_2400_YUV420_8_SHIFT,        /* 25 */
+       MIPI_FORMAT_2400_YUV420_10_SHIFT,
+       MIPI_FORMAT_2400_RAW16,
+       MIPI_FORMAT_2400_RAW18,
+       N_MIPI_FORMAT_2400,
+} mipi_format_2400_t;
+
+#define MIPI_FORMAT_JPEG       MIPI_FORMAT_2400_CUSTOM0
+#define MIPI_FORMAT_BINARY_8   MIPI_FORMAT_2400_CUSTOM0
 #define N_MIPI_FORMAT_CUSTOM   8
 
 /* The number of stores for compressed format types */
 
 #include "isys_irq.h"
 
 typedef enum {
-       MIPI_FORMAT_SHORT1 = 0x08,
-       MIPI_FORMAT_SHORT2,
-       MIPI_FORMAT_SHORT3,
-       MIPI_FORMAT_SHORT4,
-       MIPI_FORMAT_SHORT5,
-       MIPI_FORMAT_SHORT6,
-       MIPI_FORMAT_SHORT7,
-       MIPI_FORMAT_SHORT8,
-       MIPI_FORMAT_EMBEDDED = 0x12,
-       MIPI_FORMAT_YUV420_8 = 0x18,
-       MIPI_FORMAT_YUV420_10,
-       MIPI_FORMAT_YUV420_8_LEGACY,
-       MIPI_FORMAT_YUV420_8_SHIFT = 0x1C,
-       MIPI_FORMAT_YUV420_10_SHIFT,
-       MIPI_FORMAT_YUV422_8 = 0x1E,
-       MIPI_FORMAT_YUV422_10,
-       MIPI_FORMAT_RGB444 = 0x20,
-       MIPI_FORMAT_RGB555,
-       MIPI_FORMAT_RGB565,
-       MIPI_FORMAT_RGB666,
-       MIPI_FORMAT_RGB888,
-       MIPI_FORMAT_RAW6 = 0x28,
-       MIPI_FORMAT_RAW7,
-       MIPI_FORMAT_RAW8,
-       MIPI_FORMAT_RAW10,
-       MIPI_FORMAT_RAW12,
-       MIPI_FORMAT_RAW14,
-       MIPI_FORMAT_CUSTOM0 = 0x30,
-       MIPI_FORMAT_CUSTOM1,
-       MIPI_FORMAT_CUSTOM2,
-       MIPI_FORMAT_CUSTOM3,
-       MIPI_FORMAT_CUSTOM4,
-       MIPI_FORMAT_CUSTOM5,
-       MIPI_FORMAT_CUSTOM6,
-       MIPI_FORMAT_CUSTOM7,
+       MIPI_FORMAT_2401_SHORT1 = 0x08,
+       MIPI_FORMAT_2401_SHORT2,
+       MIPI_FORMAT_2401_SHORT3,
+       MIPI_FORMAT_2401_SHORT4,
+       MIPI_FORMAT_2401_SHORT5,
+       MIPI_FORMAT_2401_SHORT6,
+       MIPI_FORMAT_2401_SHORT7,
+       MIPI_FORMAT_2401_SHORT8,
+       MIPI_FORMAT_2401_EMBEDDED = 0x12,
+       MIPI_FORMAT_2401_YUV420_8 = 0x18,
+       MIPI_FORMAT_2401_YUV420_10,
+       MIPI_FORMAT_2401_YUV420_8_LEGACY,
+       MIPI_FORMAT_2401_YUV420_8_SHIFT = 0x1C,
+       MIPI_FORMAT_2401_YUV420_10_SHIFT,
+       MIPI_FORMAT_2401_YUV422_8 = 0x1E,
+       MIPI_FORMAT_2401_YUV422_10,
+       MIPI_FORMAT_2401_RGB444 = 0x20,
+       MIPI_FORMAT_2401_RGB555,
+       MIPI_FORMAT_2401_RGB565,
+       MIPI_FORMAT_2401_RGB666,
+       MIPI_FORMAT_2401_RGB888,
+       MIPI_FORMAT_2401_RAW6 = 0x28,
+       MIPI_FORMAT_2401_RAW7,
+       MIPI_FORMAT_2401_RAW8,
+       MIPI_FORMAT_2401_RAW10,
+       MIPI_FORMAT_2401_RAW12,
+       MIPI_FORMAT_2401_RAW14,
+       MIPI_FORMAT_2401_CUSTOM0 = 0x30,
+       MIPI_FORMAT_2401_CUSTOM1,
+       MIPI_FORMAT_2401_CUSTOM2,
+       MIPI_FORMAT_2401_CUSTOM3,
+       MIPI_FORMAT_2401_CUSTOM4,
+       MIPI_FORMAT_2401_CUSTOM5,
+       MIPI_FORMAT_2401_CUSTOM6,
+       MIPI_FORMAT_2401_CUSTOM7,
        //MIPI_FORMAT_RAW16, /*not supported by 2401*/
        //MIPI_FORMAT_RAW18,
-       N_MIPI_FORMAT
-} mipi_format_t;
+       N_MIPI_FORMAT_2401
+} mipi_format_2401_t;
 
 #define N_MIPI_FORMAT_CUSTOM   8
 
 
 }
 #endif /* #if !defined(ISP2401) */
 
-int ia_css_isys_convert_stream_format_to_mipi_format(
-    enum atomisp_input_format input_format,
-    mipi_predictor_t compression,
-    unsigned int *fmt_type)
+#if !defined(ISP2401)
+static int ia_css_isys_2400_set_fmt_type(enum atomisp_input_format input_format,
+                                        unsigned int *fmt_type)
 {
-       assert(fmt_type);
-       /*
-        * Custom (user defined) modes. Used for compressed
-        * MIPI transfers
-        *
-        * Checkpatch thinks the indent before "if" is suspect
-        * I think the only suspect part is the missing "else"
-        * because of the return.
-        */
-       if (compression != MIPI_PREDICTOR_NONE) {
-               switch (input_format) {
-               case ATOMISP_INPUT_FORMAT_RAW_6:
-                       *fmt_type = 6;
-                       break;
-               case ATOMISP_INPUT_FORMAT_RAW_7:
-                       *fmt_type = 7;
-                       break;
-               case ATOMISP_INPUT_FORMAT_RAW_8:
-                       *fmt_type = 8;
-                       break;
-               case ATOMISP_INPUT_FORMAT_RAW_10:
-                       *fmt_type = 10;
-                       break;
-               case ATOMISP_INPUT_FORMAT_RAW_12:
-                       *fmt_type = 12;
-                       break;
-               case ATOMISP_INPUT_FORMAT_RAW_14:
-                       *fmt_type = 14;
-                       break;
-               case ATOMISP_INPUT_FORMAT_RAW_16:
-                       *fmt_type = 16;
-                       break;
-               default:
-                       return -EINVAL;
-               }
-               return 0;
-       }
-       /*
-        * This mapping comes from the Arasan CSS function spec
-        * (CSS_func_spec1.08_ahb_sep29_08.pdf).
-        *
-        * MW: For some reason the mapping is not 1-to-1
-        */
        switch (input_format) {
        case ATOMISP_INPUT_FORMAT_RGB_888:
-               *fmt_type = MIPI_FORMAT_RGB888;
+               *fmt_type = MIPI_FORMAT_2400_RGB888;
                break;
        case ATOMISP_INPUT_FORMAT_RGB_555:
-               *fmt_type = MIPI_FORMAT_RGB555;
+               *fmt_type = MIPI_FORMAT_2400_RGB555;
                break;
        case ATOMISP_INPUT_FORMAT_RGB_444:
-               *fmt_type = MIPI_FORMAT_RGB444;
+               *fmt_type = MIPI_FORMAT_2400_RGB444;
                break;
        case ATOMISP_INPUT_FORMAT_RGB_565:
-               *fmt_type = MIPI_FORMAT_RGB565;
+               *fmt_type = MIPI_FORMAT_2400_RGB565;
                break;
        case ATOMISP_INPUT_FORMAT_RGB_666:
-               *fmt_type = MIPI_FORMAT_RGB666;
+               *fmt_type = MIPI_FORMAT_2400_RGB666;
                break;
        case ATOMISP_INPUT_FORMAT_RAW_8:
-               *fmt_type = MIPI_FORMAT_RAW8;
+               *fmt_type = MIPI_FORMAT_2400_RAW8;
                break;
        case ATOMISP_INPUT_FORMAT_RAW_10:
-               *fmt_type = MIPI_FORMAT_RAW10;
+               *fmt_type = MIPI_FORMAT_2400_RAW10;
                break;
        case ATOMISP_INPUT_FORMAT_RAW_6:
-               *fmt_type = MIPI_FORMAT_RAW6;
+               *fmt_type = MIPI_FORMAT_2400_RAW6;
                break;
        case ATOMISP_INPUT_FORMAT_RAW_7:
-               *fmt_type = MIPI_FORMAT_RAW7;
+               *fmt_type = MIPI_FORMAT_2400_RAW7;
                break;
        case ATOMISP_INPUT_FORMAT_RAW_12:
-               *fmt_type = MIPI_FORMAT_RAW12;
+               *fmt_type = MIPI_FORMAT_2400_RAW12;
                break;
        case ATOMISP_INPUT_FORMAT_RAW_14:
-               *fmt_type = MIPI_FORMAT_RAW14;
+               *fmt_type = MIPI_FORMAT_2400_RAW14;
                break;
        case ATOMISP_INPUT_FORMAT_YUV420_8:
-               *fmt_type = MIPI_FORMAT_YUV420_8;
+               *fmt_type = MIPI_FORMAT_2400_YUV420_8;
                break;
        case ATOMISP_INPUT_FORMAT_YUV420_10:
-               *fmt_type = MIPI_FORMAT_YUV420_10;
+               *fmt_type = MIPI_FORMAT_2400_YUV420_10;
                break;
        case ATOMISP_INPUT_FORMAT_YUV422_8:
-               *fmt_type = MIPI_FORMAT_YUV422_8;
+               *fmt_type = MIPI_FORMAT_2400_YUV422_8;
                break;
        case ATOMISP_INPUT_FORMAT_YUV422_10:
-               *fmt_type = MIPI_FORMAT_YUV422_10;
+               *fmt_type = MIPI_FORMAT_2400_YUV422_10;
                break;
        case ATOMISP_INPUT_FORMAT_YUV420_8_LEGACY:
-               *fmt_type = MIPI_FORMAT_YUV420_8_LEGACY;
+               *fmt_type = MIPI_FORMAT_2400_YUV420_8_LEGACY;
                break;
        case ATOMISP_INPUT_FORMAT_EMBEDDED:
-               *fmt_type = MIPI_FORMAT_EMBEDDED;
+               *fmt_type = MIPI_FORMAT_2400_EMBEDDED;
                break;
-#ifndef ISP2401
        case ATOMISP_INPUT_FORMAT_RAW_16:
                /* This is not specified by Arasan, so we use
                 * 17 for now.
                 */
-               *fmt_type = MIPI_FORMAT_RAW16;
+               *fmt_type = MIPI_FORMAT_2400_RAW16;
                break;
        case ATOMISP_INPUT_FORMAT_BINARY_8:
                *fmt_type = MIPI_FORMAT_BINARY_8;
                break;
-#else
+       case ATOMISP_INPUT_FORMAT_YUV420_16:
+       case ATOMISP_INPUT_FORMAT_YUV422_16:
+       default:
+               return -EINVAL;
+       }
+       return 0;
+}
+#endif /* #ifndef ISP2401 */
+
+#if defined(ISP2401)
+static int ia_css_isys_2401_set_fmt_type(enum atomisp_input_format input_format,
+                                        unsigned int *fmt_type)
+{
+       switch (input_format) {
+       case ATOMISP_INPUT_FORMAT_RGB_888:
+               *fmt_type = MIPI_FORMAT_2401_RGB888;
+               break;
+       case ATOMISP_INPUT_FORMAT_RGB_555:
+               *fmt_type = MIPI_FORMAT_2401_RGB555;
+               break;
+       case ATOMISP_INPUT_FORMAT_RGB_444:
+               *fmt_type = MIPI_FORMAT_2401_RGB444;
+               break;
+       case ATOMISP_INPUT_FORMAT_RGB_565:
+               *fmt_type = MIPI_FORMAT_2401_RGB565;
+               break;
+       case ATOMISP_INPUT_FORMAT_RGB_666:
+               *fmt_type = MIPI_FORMAT_2401_RGB666;
+               break;
+       case ATOMISP_INPUT_FORMAT_RAW_8:
+               *fmt_type = MIPI_FORMAT_2401_RAW8;
+               break;
+       case ATOMISP_INPUT_FORMAT_RAW_10:
+               *fmt_type = MIPI_FORMAT_2401_RAW10;
+               break;
+       case ATOMISP_INPUT_FORMAT_RAW_6:
+               *fmt_type = MIPI_FORMAT_2401_RAW6;
+               break;
+       case ATOMISP_INPUT_FORMAT_RAW_7:
+               *fmt_type = MIPI_FORMAT_2401_RAW7;
+               break;
+       case ATOMISP_INPUT_FORMAT_RAW_12:
+               *fmt_type = MIPI_FORMAT_2401_RAW12;
+               break;
+       case ATOMISP_INPUT_FORMAT_RAW_14:
+               *fmt_type = MIPI_FORMAT_2401_RAW14;
+               break;
+       case ATOMISP_INPUT_FORMAT_YUV420_8:
+               *fmt_type = MIPI_FORMAT_2401_YUV420_8;
+               break;
+       case ATOMISP_INPUT_FORMAT_YUV420_10:
+               *fmt_type = MIPI_FORMAT_2401_YUV420_10;
+               break;
+       case ATOMISP_INPUT_FORMAT_YUV422_8:
+               *fmt_type = MIPI_FORMAT_2401_YUV422_8;
+               break;
+       case ATOMISP_INPUT_FORMAT_YUV422_10:
+               *fmt_type = MIPI_FORMAT_2401_YUV422_10;
+               break;
+       case ATOMISP_INPUT_FORMAT_YUV420_8_LEGACY:
+               *fmt_type = MIPI_FORMAT_2401_YUV420_8_LEGACY;
+               break;
+       case ATOMISP_INPUT_FORMAT_EMBEDDED:
+               *fmt_type = MIPI_FORMAT_2401_EMBEDDED;
+               break;
        case ATOMISP_INPUT_FORMAT_USER_DEF1:
-               *fmt_type = MIPI_FORMAT_CUSTOM0;
+               *fmt_type = MIPI_FORMAT_2401_CUSTOM0;
                break;
        case ATOMISP_INPUT_FORMAT_USER_DEF2:
-               *fmt_type = MIPI_FORMAT_CUSTOM1;
+               *fmt_type = MIPI_FORMAT_2401_CUSTOM1;
                break;
        case ATOMISP_INPUT_FORMAT_USER_DEF3:
-               *fmt_type = MIPI_FORMAT_CUSTOM2;
+               *fmt_type = MIPI_FORMAT_2401_CUSTOM2;
                break;
        case ATOMISP_INPUT_FORMAT_USER_DEF4:
-               *fmt_type = MIPI_FORMAT_CUSTOM3;
+               *fmt_type = MIPI_FORMAT_2401_CUSTOM3;
                break;
        case ATOMISP_INPUT_FORMAT_USER_DEF5:
-               *fmt_type = MIPI_FORMAT_CUSTOM4;
+               *fmt_type = MIPI_FORMAT_2401_CUSTOM4;
                break;
        case ATOMISP_INPUT_FORMAT_USER_DEF6:
-               *fmt_type = MIPI_FORMAT_CUSTOM5;
+               *fmt_type = MIPI_FORMAT_2401_CUSTOM5;
                break;
        case ATOMISP_INPUT_FORMAT_USER_DEF7:
-               *fmt_type = MIPI_FORMAT_CUSTOM6;
+               *fmt_type = MIPI_FORMAT_2401_CUSTOM6;
                break;
        case ATOMISP_INPUT_FORMAT_USER_DEF8:
-               *fmt_type = MIPI_FORMAT_CUSTOM7;
+               *fmt_type = MIPI_FORMAT_2401_CUSTOM7;
                break;
-#endif
 
        case ATOMISP_INPUT_FORMAT_YUV420_16:
        case ATOMISP_INPUT_FORMAT_YUV422_16:
        }
        return 0;
 }
+#endif /* #ifdef ISP2401 */
+
+int ia_css_isys_convert_stream_format_to_mipi_format(
+    enum atomisp_input_format input_format,
+    mipi_predictor_t compression,
+    unsigned int *fmt_type)
+{
+       assert(fmt_type);
+       /*
+        * Custom (user defined) modes. Used for compressed
+        * MIPI transfers
+        *
+        * Checkpatch thinks the indent before "if" is suspect
+        * I think the only suspect part is the missing "else"
+        * because of the return.
+        */
+       if (compression != MIPI_PREDICTOR_NONE) {
+               switch (input_format) {
+               case ATOMISP_INPUT_FORMAT_RAW_6:
+                       *fmt_type = 6;
+                       break;
+               case ATOMISP_INPUT_FORMAT_RAW_7:
+                       *fmt_type = 7;
+                       break;
+               case ATOMISP_INPUT_FORMAT_RAW_8:
+                       *fmt_type = 8;
+                       break;
+               case ATOMISP_INPUT_FORMAT_RAW_10:
+                       *fmt_type = 10;
+                       break;
+               case ATOMISP_INPUT_FORMAT_RAW_12:
+                       *fmt_type = 12;
+                       break;
+               case ATOMISP_INPUT_FORMAT_RAW_14:
+                       *fmt_type = 14;
+                       break;
+               case ATOMISP_INPUT_FORMAT_RAW_16:
+                       *fmt_type = 16;
+                       break;
+               default:
+                       return -EINVAL;
+               }
+               return 0;
+       }
+       /*
+        * This mapping comes from the Arasan CSS function spec
+        * (CSS_func_spec1.08_ahb_sep29_08.pdf).
+        *
+        * MW: For some reason the mapping is not 1-to-1
+        */
+#if defined(ISP2401)
+       return ia_css_isys_2401_set_fmt_type(input_format, fmt_type);
+#else
+       return ia_css_isys_2400_set_fmt_type(input_format, fmt_type);
+#endif
+}
 
 #if defined(ISP2401)
 static mipi_predictor_t sh_css_csi2_compression_type_2_mipi_predictor(