diff --git a/DRM/cc54/inc/drm_common_api.h b/DRM/cc54/inc/drm_common_api.h
old mode 100644
new mode 100755
diff --git a/DRM/cc54/inc/drm_error.h b/DRM/cc54/inc/drm_error.h
old mode 100644
new mode 100755
index 5ee3a67..92b3097
--- a/DRM/cc54/inc/drm_error.h
+++ b/DRM/cc54/inc/drm_error.h
@@ -53,6 +53,10 @@
     DRM_FAIL_NO_PREV_PARTIAL_BLOCK,
     DRM_FAIL_WRITE_KEYBOX,
     DRM_FAIL_INSUFFICENT_RESOURCES,
+    DRM_FAIL_INVALID_KEYBOX_POLICY,
+    DRM_FAIL_KEYBOX_NOT_PROVISIONED,
+    DRM_FAIL_KEYBOX_NOT_ERASED,         // 0x50000020
+
 
     /*! Middleware specific errors */
     DRM_FAIL_GENERATE_RANDOM_NUMBER_FAILURE = 0x50001000,
diff --git a/DRM/cc54/inc/pr_drm_api.h b/DRM/cc54/inc/pr_drm_api.h
old mode 100644
new mode 100755
index 1d90885..ea5b000
--- a/DRM/cc54/inc/pr_drm_api.h
+++ b/DRM/cc54/inc/pr_drm_api.h
@@ -1,23 +1,18 @@
-/*
- * Copyright (C) 2014 Intel Corporation. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+/**********************************************************************
+* Copyright (C) 2014 Intel Corporation. All rights reserved.
 
-/**
- * @file drm_pr_api.h
- * @brief Header file for Playready DRM API
- */
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+
+* http://www.apache.org/licenses/LICENSE-2.0
+
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+**********************************************************************/
 
 #ifndef __DRM_PR_API_H__
 #define __DRM_PR_API_H__
@@ -25,38 +20,8 @@
 /*!
  * Defines
  */
-#define PR_CLEAR_CONTENT_FLAG           (1)
-
 #define DRM_SECURE_CLOCK_FLAG_RESET     (1)
 
-/*!
- * Structs
- */
-
-/*
- * This structure is used to provide necessary information for PlayReady video
- * ciphertext decryption.
- *
- * The members are:
- *
- *   iv                     - AES initialization vector.
- *   input_ciphertext_size  - Input ciphertext data size in bytes.
- *   p_input_ciphertext     - Pointer to the input ciphertext data.
- */
-struct pr_drm_video_cipher
-{
-   uint32_t key_index;
-   uint32_t key_type;
-   uint64_t iv;
-   uint64_t byte_offset;
-   uint32_t input_ciphertext_size;
-   uint8_t  *p_input_ciphertext;
-   uint8_t  flags;
-   uint8_t  *p_output_enc_ciphertext;
-   uint32_t output_ciphertext_size;
-};
-
-
 struct drm_nalu_headers
 {
    uint32_t frame_size;
@@ -66,202 +31,6 @@
    uint8_t  *p_hdrs_buf;
 };
 
-struct pr_av_secure_input_data_buffer
-{
-    uint32_t  session_id;
-    uint32_t  size;
-    uint8_t   *data;
-    uint32_t  clear;
-};
-
-
-/*
- *  Map to Oem_Hal_AllocateRegister
- */
-uint32_t drm_pr_allocate_register(uint32_t key_type,
-                                  uint32_t *key_reg_index);
-
-/*
- *  Map to Oem_Hal_FreeRegister
- */
-uint32_t drm_pr_free_register(uint32_t key_type,
-                              uint32_t key_reg_index);
-
-/*
- * Map to Oem_Hal_RegisterCount
- */
-uint32_t drm_pr_register_count(uint32_t key_type,
-                               uint32_t *total_regs,
-                               uint32_t *allocated_regs);
-
-/*
- * Map to Oem_Hal_GetPreloadedIndex
- */
-uint32_t drm_pr_get_preloaded_index(uint32_t key_type,
-                                    uint8_t *key_id,
-                                    uint32_t key_id_len,
-                                    uint32_t *key_index);
-/*
- * Map to Oem_Hal_Initialize
- */
-uint32_t drm_pr_initialize(void);
-
-/*
- * Map to Oem_Hal_Deinitialize
- */
-uint32_t drm_pr_deinitialize(void);
-
-/*
- * Map to Oem_Hal_VerifyMessageSignature
- */
-uint32_t drm_pr_verify_message_signature(uint8_t *msg,
-                                         uint32_t msg_len,
-                                         const uint8_t *signature,
-                                         uint32_t signature_len,
-                                         uint32_t hash_type,
-                                         uint32_t signature_scheme,
-                                         uint32_t integrity_key_index);
-
-/*
- * Map to Oem_Hal_CreateMessageSignature
- */
-uint32_t drm_pr_create_message_signature(uint8_t *msg,
-                                         uint32_t msg_len,
-                                         uint8_t *signature,
-                                         uint32_t *signature_len,
-                                         uint32_t hash_type,
-                                         uint32_t signature_scheme,
-                                         uint32_t key_type,
-                                         uint32_t integrity_key_index);
-/*
- * Map to Oem_Hal_VerifyOMAC1Signature
- */
- uint32_t drm_pr_verify_omac1_signature(uint8_t *msg,
-                                        uint32_t msg_len,
-                                        uint8_t *signature,
-                                        uint32_t signature_len,
-                                        uint32_t key_type,
-                                        uint32_t index_key);
-
- /*
-  * Map to Oem_Hal_CreateOMAC1Signature
-  */
-uint32_t drm_pr_create_omac1_signature(uint8_t *msg,
-                                       uint32_t msg_len,
-                                       uint8_t *signature,
-                                       uint32_t *signature_len,
-                                       uint32_t key_type,
-                                       uint32_t index_key);
-
-/*
- * Map to Oem_Hal_UnwrapKey
- */
-uint32_t drm_pr_unwrap_get_keydata_type(uint32_t key_type,
-                                        uint32_t key_index,
-                                        uint32_t wrapping_key_type,
-                                        uint32_t wrapping_key_index,
-                                        uint32_t *key_data_type);
-
-uint32_t drm_pr_unwrap_encrypted_key(uint32_t key_type,
-                                     uint32_t key_index,
-                                     uint32_t wrapping_key_type,
-                                     uint32_t wrapping_key_index,
-                                     uint8_t *encryption_key_info,
-                                     uint32_t key_info_size,
-                                     uint8_t *encrypted_key_data,
-                                     uint32_t key_data_size);
-
-uint32_t drm_pr_unwrap_xmr_license(uint32_t key_type,
-                                   uint32_t key_index,
-                                   uint32_t wrapping_key_type,
-                                   uint32_t wrapping_key_index,
-                                   uint8_t *xmr_license,
-                                   uint32_t xmr_license_size,
-                                   uint8_t xmr_ignore_cksum,
-                                   uint8_t bb_ignore_cksum,
-                                   uint8_t *bb_cksum_data,
-                                   uint32_t bb_cksum_data_size,
-                                   uint8_t *bb_kid,
-                                   uint8_t bb_kid_size,
-                                   uint8_t *bb_v1_kid,
-                                   uint32_t bb_v1_kid_size);
-
-uint32_t drm_pr_unwrap_key(uint32_t unwrap_key_type,
-                           uint32_t unwrap_key_reg_index,
-                           uint32_t wrapping_key_type,
-                           uint32_t wrapping_key_index,
-                           uint8_t *wrapped_key_data,
-                           uint32_t wrapped_key_data_len,
-                           const uint8_t *param_data,
-                           uint32_t param_data_len);
-
-/*
- * Map to Oem_Hal_WrapKey
- */
-uint32_t drm_pr_wrap_get_encryption_type(uint32_t key_type,
-                                         uint32_t key_index,
-                                         uint32_t wrapping_key_type,
-                                         uint32_t wrapping_key_index,
-                                         uint32_t *encryption_type);
-
-uint32_t drm_pr_wrap_encrypted_key(uint32_t key_type,
-                                   uint32_t key_index,
-                                   uint32_t wrapping_key_type,
-                                   uint32_t wrapping_key_index,
-                                   uint8_t *encryption_key_info,
-                                   uint32_t key_info_size,
-                                   uint8_t *encrypted_key_data,
-                                   uint32_t encrypted_key_data_size);
-
-uint32_t drm_pr_wrap_key(uint32_t wrap_key_type,
-                         uint32_t wrap_key_reg_index,
-                         uint32_t wrapping_key_type,
-                         uint32_t wrapping_key_reg_index,
-                         uint8_t *wrapped_key,
-                         uint32_t *wrapped_key_len);
-
-/*
- * Map to Oem_Hal_GenerateKey
- */
-uint32_t drm_pr_generate_key(uint32_t key_type,
-                             uint32_t key_reg_index,
-                             uint32_t security_level);
-/*
- * Map to Oem_Hal_LoadPlayReadyRevocationInfo
- */
-uint32_t drm_pr_load_revoc_info(uint8_t *revoc_info,
-                                uint32_t revoc_info_len,
-                                uint32_t sign_key_reg_index);
-/*
- * Map to Oem_Hal_LoadPlayReadyCrl
- */
-uint32_t drm_pr_load_crl(uint8_t *crl,
-                         uint32_t crl_len,
-                         uint32_t sign_key_reg_index);
-/*
- * Map to Oem_Hal_DecryptContentOpaque
- */
-uint32_t drm_pr_decrypt_content_opaque(void *in_buffer,
-                                       void *out_buffer,
-                                       uint32_t data_len,
-                                       uint32_t key_type,
-                                       uint32_t key_index,
-                                       uint64_t iv,
-                                       uint64_t byte_offset);
-
-uint32_t drm_pr_decrypt_content(uint8_t *out_buffer,
-                                uint32_t data_len,
-                                uint32_t key_type,
-                                uint32_t key_index,
-                                uint64_t iv,
-                                uint64_t byte_offset);
-
-/*!
- *@brief Create a PlayReady session
- *
- */
-uint32_t drm_pr_create_session(uint32_t *session_id);
-
 /*!
  *@brief Returns NALU header
  *
diff --git a/DRM/cc54/inc/sepdrm.h b/DRM/cc54/inc/sepdrm.h
old mode 100644
new mode 100755
diff --git a/DRM/cc54/inc/wv_fkp.h b/DRM/cc54/inc/wv_fkp.h
old mode 100644
new mode 100755
diff --git a/DRM/cc54/inc/wv_mod_drm_api.h b/DRM/cc54/inc/wv_mod_drm_api.h
old mode 100644
new mode 100755
index dcd1320..4e5cab0
--- a/DRM/cc54/inc/wv_mod_drm_api.h
+++ b/DRM/cc54/inc/wv_mod_drm_api.h
@@ -331,4 +331,23 @@
                                       uint8_t *key_control_block,
                                       uint32_t *key_control_block_length);
 
+/*! Version 11 specific APIs */
+uint32_t drm_wv_mod_security_patch_level(uint32_t *security_patch_level);
+
+uint32_t drm_wv_mod_api_version(uint32_t *api_version);
+
+uint32_t drm_wv_mod_decrypt_cenc(uint32_t session_id,
+                                 const uint8_t *inp_data_buffer,
+                                 uint32_t inp_data_size,
+                                 uint8_t *out_data_buffer,
+                                 uint32_t out_data_size,
+                                 const uint8_t *iv,
+                                 uint8_t flags);
+
+uint32_t drm_wv_mod_glue_block(uint32_t       session_id,
+                               uint8_t        *encrypted,
+                               const uint8_t  *cleartext,
+                               uint32_t       cleartext_length,
+                               const uint8_t  *iv);
+
 #endif /* __WV_MOD_DRM_API_H_ */
diff --git a/DRM/cc54/inc/wv_mod_drm_error.h b/DRM/cc54/inc/wv_mod_drm_error.h
old mode 100644
new mode 100755
index 875c374..b10c2eb
--- a/DRM/cc54/inc/wv_mod_drm_error.h
+++ b/DRM/cc54/inc/wv_mod_drm_error.h
@@ -68,11 +68,13 @@
     DRM_WV_MOD_ERROR_DERIVED_CLIENT_MAC_KEY_FAILED,
     DRM_WV_MOD_ERROR_DERIVED_SERVER_MAC_KEY_FAILED,
     DRM_WV_MOD_ERROR_KEY_DERIVATION_FAILED,
-    DRM_WV_MOD_ERROR_INVALID_DATA_FORMAT_VERSION,
+    DRM_WV_MOD_ERROR_INVALID_DATA_FORMAT_VERSION,   // 0x30
     DRM_WV_MOD_ERROR_INVALID_PLAYBACK_STATE,
     DRM_WV_MOD_ERROR_INVALID_SESSION_STATE,
     DRM_WV_MOD_ERROR_INVALID_USAGE_TABLE_GENERATION_NUM,
-    DRM_WV_MOD_ERROR_INVALID_USAGE_TABLE_MAGIC
+    DRM_WV_MOD_ERROR_INVALID_USAGE_TABLE_MAGIC,
+    DRM_WV_MOD_ERROR_USAGE_TABLE_NOT_INITIALIZED,
+    DRM_WV_MOD_ERROR_INVALID_CIPHER_MODE
 };
 
 #endif
diff --git a/DRM/cc54/inc/wv_mod_oem_crypto.h b/DRM/cc54/inc/wv_mod_oem_crypto.h
old mode 100644
new mode 100755
index d43cc99..42ed033
--- a/DRM/cc54/inc/wv_mod_oem_crypto.h
+++ b/DRM/cc54/inc/wv_mod_oem_crypto.h
@@ -41,6 +41,7 @@
     uint32_t key_data_length;
     const uint8_t *key_control_iv;
     const uint8_t *key_control;
+    uint32_t cipher_mode;
 };
 
 struct drm_wv_mod_key_refresh_object
