};
 
 /* Worker thread to service arbiter mappings */
-static const u32 thrd_to_arb_map[ADF_4XXX_MAX_ACCELENGINES] = {
+static const u32 thrd_to_arb_map_cy[ADF_4XXX_MAX_ACCELENGINES] = {
        0x5555555, 0x5555555, 0x5555555, 0x5555555,
        0xAAAAAAA, 0xAAAAAAA, 0xAAAAAAA, 0xAAAAAAA,
        0x0
 };
 
+static const u32 thrd_to_arb_map_dc[ADF_4XXX_MAX_ACCELENGINES] = {
+       0x000000FF, 0x000000FF, 0x000000FF, 0x000000FF,
+       0x000000FF, 0x000000FF, 0x000000FF, 0x000000FF,
+       0x0
+};
+
 static struct adf_hw_device_class adf_4xxx_class = {
        .name = ADF_4XXX_DEVICE_NAME,
        .type = DEV_4XXX,
        return DEV_SKU_1;
 }
 
-static const u32 *adf_get_arbiter_mapping(void)
+static const u32 *adf_get_arbiter_mapping(struct adf_accel_dev *accel_dev)
 {
-       return thrd_to_arb_map;
+       switch (get_service_enabled(accel_dev)) {
+       case SVC_CY:
+               return thrd_to_arb_map_cy;
+       case SVC_DC:
+               return thrd_to_arb_map_dc;
+       }
+
+       return NULL;
 }
 
 static void get_arb_info(struct arb_info *arb_info)
 
        int (*send_admin_init)(struct adf_accel_dev *accel_dev);
        int (*init_arb)(struct adf_accel_dev *accel_dev);
        void (*exit_arb)(struct adf_accel_dev *accel_dev);
-       const u32 *(*get_arb_mapping)(void);
+       const u32 *(*get_arb_mapping)(struct adf_accel_dev *accel_dev);
        int (*init_device)(struct adf_accel_dev *accel_dev);
        int (*enable_pm)(struct adf_accel_dev *accel_dev);
        bool (*handle_pm_interrupt)(struct adf_accel_dev *accel_dev);
 
                WRITE_CSR_ARB_SARCONFIG(csr, arb_off, arb, arb_cfg);
 
        /* Map worker threads to service arbiters */
-       thd_2_arb_cfg = hw_data->get_arb_mapping();
+       thd_2_arb_cfg = hw_data->get_arb_mapping(accel_dev);
 
        for_each_set_bit(i, &ae_mask, hw_data->num_engines)
                WRITE_CSR_ARB_WT2SAM(csr, arb_off, wt_off, i, thd_2_arb_cfg[i]);