1 /* 2 Copyright (c) NDS Limited 2010 3 4 P R O P R I E T A R Y & C O N F I D E N T I A L 5 6 The copyright of this code and related documentation together with 7 any other associated intellectual property rights are vested in 8 NDS Limited and may not be used except in accordance with the terms 9 of the license that you have entered into with NDS Limited. 10 Use of this material without an express license from NDS Limited 11 shall be an infringement of copyright and any other intellectual 12 property rights that may be incorporated with this material. 13 */ 14 15 #ifndef NSK2HDI_HEADER_H_ 16 #define NSK2HDI_HEADER_H_ 17 18 /** 19 * @mainpage NSK2 API - HDI Bootloader API for NSK2 Chips 20 * 21 * @author Reuben Sumner, Julia Rabinovich 22 * @date 28/06/2011 23 * @version 4.01 24 * 25 * @file nsk2hdi_bl.h 26 27 * @brief NSK2 API - HDI Bootloader API for NSK2 Chips 28 29 * This file contains the definitions and functions of the NSK2 Bootloader supplement 30 31 * 32 */ 33 34 #include "ndstypes.h" 35 #include "nsk_282.h" 36 #include "nsk_3014.h" 37 #include "hdi_121.h" 38 39 40 //#define DebugEnable 41 42 #define NSK2HDI_PVRENG 0 //DMX_PVR_EGN0 43 #define NSK2HDI_SPSPVRENG 0 //E_DSCMB_SPSPVR_ENG0 44 45 #define NSK21_Change 46 47 48 49 //typedef (void *)NSK2Util_AllocateMemory (MS_U32 u32Size, NSKUTIL_MEMORY_TYPE_e eMemType) 50 typedef void * (*P_NSK2_CbAllocateMemory)(MS_U32 u32Size, MS_BOOL bCached); 51 typedef MS_BOOL (*P_NSK2_CbFreeMemory)(void *pAddress, MS_BOOL bCached); 52 typedef MS_U32 (*P_NSK2_CbEcmGetType)(MS_U32 x_conn); 53 54 //typedef MS_BOOL (*P_NSK2_CbDMXOpenStart)(NDS_ULONG xconn, NDS_USHORT es_pid, NDS_UBYTE es_type, MS_U8 *DmxIdSect); 55 56 57 typedef struct 58 { 59 MS_BOOL bHarmonizer; 60 P_NSK2_CbAllocateMemory cbAllocMemory; 61 P_NSK2_CbFreeMemory cbFreeMemory; 62 P_NSK2_CbEcmGetType cbEcmGetType; 63 } HDIPara_Init_t; 64 65 MS_U32 MApi_NSK2HDI_Initial(HDIPara_Init_t *pInit); 66 MS_BOOL MApi_NSK2_IsHarmonizer(void); 67 void *MApi_NSK2_AllocateMemory(MS_U32 u32Size, MS_BOOL bCached); 68 MS_BOOL MApi_NSK2_FreeMemory(void *pAddress, MS_BOOL bCached); 69 MS_BOOL MApi_NSK2_DTV_ClosePidNo(MS_U8 PidNo); 70 MS_U32 MApi_NSK2_EcmGetFilterType(MS_U32 x_conn); 71 72 NSK2HDI_STATUS NSKHDI_CaSoCGroupDevice_Open (NSK2HDI_DEVICE_ID CaSoCGroup_ID, 73 NSK2HDI_HANDLE *CaSoCGroup_handle); 74 75 NSK2HDI_STATUS NSKHDI_CaSoCGroupDevice_Close (NSK2HDI_HANDLE CaSoCGroup_handle); 76 77 NSK2HDI_STATUS NSKHDI_CaSoCGroupDevice_EnumerateChildren( NSK2HDI_HANDLE CaSoCGroup_handle, 78 NDS_ULONG *child_device_num, 79 NSK2HDI_CHILD_DEVICE *child_device); 80 81 NSK2HDI_STATUS NSKHDI_CaSoCGroupDevice_RegisterEnumerationChangeCB (NSK2HDI_HANDLE CaSoCGroup_handle, 82 HDINSK2_ENUMERATION_CHANGE_CB_FN *cb_routine, 83 void *cookie); 84 85 NSK2HDI_STATUS NSKHDI_CmChannelTable_Open (NSK2HDI_DEVICE_ID CmChannelTable_ID, 86 NSK2HDI_HANDLE *CmChannelTable_handle); 87 88 NSK2HDI_STATUS NSKHDI_CmChannelTable_Close (NSK2HDI_HANDLE CmChannelTable_handle); 89 90 NSK2HDI_STATUS NSKHDI_CmChannelTable_EnumerateChildren( NSK2HDI_HANDLE CmChannelTable_handle, 91 NDS_ULONG *child_device_num, 92 NSK2HDI_CHILD_DEVICE *child_device); 93 94 NSK2HDI_STATUS NSKHDI_CmChannelGroup_Open (NSK2HDI_DEVICE_ID CmChannelGroup_ID, 95 NSK2HDI_HANDLE *CmChannelGroup_handle); 96 97 NSK2HDI_STATUS NSKHDI_CmChannelGroup_Close (NSK2HDI_HANDLE CmChannelGroup_handle); 98 99 NSK2HDI_STATUS NSKHDI_CmChannelGroup_GetProperties( NSK2HDI_HANDLE CmChannelGroup_handle, 100 NDS_ULONG request_id, 101 NDS_ULONG *desc_size, 102 NDS_UBYTE *desc); 103 104 NSK2HDI_STATUS NSKHDI_CmChannelDevice_Open (NSK2HDI_DEVICE_ID CmChannelGroup_ID, 105 NSK2HDI_HANDLE *CmChannele_handle); 106 107 NSK2HDI_STATUS NSKHDI_CmChannelDevice_Close (NSK2HDI_HANDLE CmChannele_handle); 108 109 NSK2HDI_STATUS NSKHDI_CmChannelDevice_Configure ( NSK2HDI_HANDLE CmChannele_handle, 110 NDS_ULONG lda_desc_size, 111 const NDS_UBYTE *lda_desc, 112 NDS_ULONG esa_desc_size, 113 const NDS_UBYTE *esa_desc, 114 NDS_ULONG lsa_desc_size, 115 const NDS_UBYTE *lsa_desc); 116 117 NSK2HDI_STATUS NSKHDI_CmChannelDevice_WriteTransportKey ( NSK2HDI_HANDLE CmChannelDevice_handle, 118 NDS_ULONG scb_in_out_size, 119 NDS_UBYTE *scb_in, 120 NDS_UBYTE *scb_out, 121 NDS_ULONG lda_desc_size, 122 const NDS_UBYTE *lda_desc, 123 NDS_ULONG esa_desc_size, 124 const NDS_UBYTE *esa_desc, 125 NDS_ULONG lsa_desc_size, 126 const NDS_UBYTE *lsa_desc); 127 128 NSK2HDI_STATUS NSKHDI_CmChannelDevice_InvalidateKeys (NSK2HDI_HANDLE CmChannelDevice_handle); 129 130 NSK2HDI_STATUS NSKHDI_CmChannelDevice_GetCookie(NSK2HDI_HANDLE CmChannelDevice_handle, 131 void **cookie); 132 133 NSK2HDI_STATUS NSKHDI_CaPIDProxy_Open (NDS_ULONG xconn, 134 NSK2HDI_HANDLE *CaPIDProxy_handle); 135 136 NSK2HDI_STATUS NSKHDI_CaPIDProxy_Close (NSK2HDI_HANDLE CaPIDProxy_handle); 137 138 NSK2HDI_STATUS NSKHDI_CaPIDProxy_SetPrimaryStreamPID (NSK2HDI_HANDLE CaPIDProxy_handle, 139 NDS_USHORT es_pid); 140 141 NSK2HDI_STATUS NSKHDI_CaPIDProxy_SetPrimaryStreamCmChannel (NSK2HDI_HANDLE CaPIDProxy_handle, 142 void *CmChannel_cookie); 143 144 NSK2HDI_STATUS NSKHDI_CaPIDProxy_RemovePrimaryStreamCmChannel (NSK2HDI_HANDLE CaPIDProxy_handle); 145 146 NSK2HDI_STATUS NSKHDI_CaPIDProxy_SetSecondaryStream (NSK2HDI_HANDLE CaPIDProxy_handle, 147 void *CmChannel_cookie, 148 NDS_USHORT es_pid, 149 NDS_ULONG merge_mode); 150 151 NSK2HDI_STATUS NSKHDI_CaPIDProxy_RemoveSecondaryStream (NSK2HDI_HANDLE CaPIDProxy_handle); 152 153 154 NSK2HDI_STATUS NSKHDI_OtpDevice_Open (NSK2HDI_DEVICE_ID Otp_ID, 155 NSK2HDI_HANDLE *Otp_handle); 156 157 NSK2HDI_STATUS NSKHDI_OtpDevice_Close (NSK2HDI_HANDLE Otp_handle); 158 159 NSK2HDI_STATUS NSKHDI_OtpDevice_GetProperties( NSK2HDI_HANDLE Otp_handle, 160 NDS_ULONG request_id, 161 NDS_ULONG *desc_size, 162 NDS_UBYTE *desc); 163 164 NSK2HDI_STATUS NSKHDI_NskDevice_Open (NSK2HDI_DEVICE_ID Nsk_ID, 165 NSK2HDI_HANDLE *Nsk_handle); 166 167 NSK2HDI_STATUS NSKHDI_NskDevice_Close (NSK2HDI_HANDLE Nsk_handle); 168 169 NSK2HDI_STATUS NSKHDI_NskDevice_Read8 (NSK2HDI_HANDLE Nsk_handle, 170 NDS_ULONG register_offset, 171 NDS_ULONG data_size, 172 NDS_UBYTE *data); 173 174 NSK2HDI_STATUS NSKHDI_NskDevice_Write8 (NSK2HDI_HANDLE Nsk_handle, 175 NDS_ULONG register_offset, 176 NDS_ULONG data_size, 177 const NDS_UBYTE *data); 178 179 NSK2HDI_STATUS NSKHDI_NskDevice_Read32 (NSK2HDI_HANDLE Nsk_handle, 180 NDS_ULONG register_offset, 181 NDS_ULONG data_size, 182 NDS_ULONG *data); 183 184 NSK2HDI_STATUS NSKHDI_NskDevice_Write32 (NSK2HDI_HANDLE Nsk_handle, 185 NDS_ULONG register_offset, 186 NDS_ULONG data_size, 187 const NDS_ULONG *data); 188 189 NSK2HDI_STATUS NSKHDI_NskDevice_ExecuteCmd (NSK2HDI_HANDLE Nsk_handle, 190 NDS_ULONG command, 191 NDS_ULONG control, 192 NDS_ULONG register_offset, 193 NDS_ULONG data_size, 194 const NDS_UBYTE *data); 195 196 NSK2HDI_STATUS NSKHDI_NskDevice_RegisterEventCB ( NSK2HDI_HANDLE Nsk_handle, 197 HDINSK2_NSKEVENT_CB_FN *cb_routine, 198 void *cookie); 199 200 NSK2HDI_STATUS NSKHDI_NskDevice_AcknowledgeKte(NSK2HDI_HANDLE Nsk_handle); 201 202 NSK2HDI_STATUS NSKHDI_NskDevice_BasicInitializationComplete( NSK2HDI_HANDLE Nsk_handle, NDS_ULONG stage); 203 204 NSK2HDI_STATUS NSKHDI_NskDevice_UpdateNVCounter(NSK2HDI_HANDLE Nsk_handle); 205 206 NSK2HDI_STATUS NSKHDI_NskDevice_WriteOTPKey(NSK2HDI_HANDLE Nsk_handle, 207 NDS_ULONG desc_size, 208 const NDS_UBYTE *desc); 209 210 NSK2HDI_STATUS NSKHDI_NskDevice_SetOneShotGenInBit(NSK2HDI_HANDLE Nsk_handle, 211 NDS_ULONG bits); 212 213 NSK2HDI_STATUS NSKHDI_M2MTable_Open (NSK2HDI_DEVICE_ID M2MTable_ID, 214 NSK2HDI_HANDLE *M2MTable_handle); 215 216 NSK2HDI_STATUS NSKHDI_M2MTable_Close (NSK2HDI_HANDLE M2MTable_handle); 217 218 NSK2HDI_STATUS NSKHDI_M2MTable_EnumerateChildren( NSK2HDI_HANDLE M2MTable_handle, 219 NDS_ULONG *child_device_num, 220 NSK2HDI_CHILD_DEVICE *child_device); 221 222 223 NSK2HDI_STATUS NSKHDI_DMADevice_Open (NSK2HDI_DEVICE_ID DMADevice_ID, 224 NSK2HDI_HANDLE *DMADevice_handle); 225 226 NSK2HDI_STATUS NSKHDI_DMADevice_Close (NSK2HDI_HANDLE DMADevice_handle); 227 228 NSK2HDI_STATUS NSKHDI_DMADevice_GetProperties( NSK2HDI_HANDLE DMADevice_handle, 229 NDS_ULONG request_id, 230 NDS_ULONG *desc_size, 231 NDS_UBYTE *desc); 232 233 NSK2HDI_STATUS NSKHDI_DMADevice_WriteData( NSK2HDI_HANDLE DMADevice_handle, 234 void *M2MChannel_cookie, 235 NDS_ULONG desc_size, 236 const NDS_UBYTE *desc, 237 NDS_ULONG data_size, 238 NDS_UBYTE *in_data, 239 NDS_UBYTE *out_data); 240 241 242 NSK2HDI_STATUS NSKHDI_M2MChannelGroup_Open (NSK2HDI_DEVICE_ID M2MChannelGroup_ID, 243 NSK2HDI_HANDLE *M2MChannelGroup_handle); 244 245 NSK2HDI_STATUS NSKHDI_M2MChannelGroup_Close (NSK2HDI_HANDLE M2MChannelGroup_handle); 246 247 NSK2HDI_STATUS NSKHDI_M2MChannelGroup_GetProperties( NSK2HDI_HANDLE M2MChannelGroup_handle, 248 NDS_ULONG request_id, 249 NDS_ULONG *desc_size, 250 NDS_UBYTE *desc); 251 252 NSK2HDI_STATUS NSKHDI_M2MChannelDevice_Open (NSK2HDI_DEVICE_ID M2MChannelGroup_ID, 253 NSK2HDI_HANDLE *M2MChannel_handle); 254 255 NSK2HDI_STATUS NSKHDI_M2MChannelDevice_Close (NSK2HDI_HANDLE M2MChannel_handle); 256 257 NSK2HDI_STATUS NSKHDI_M2MChannelDevice_GetCookie(NSK2HDI_HANDLE M2MChannele_handle, 258 void **cookie); 259 260 NSK2HDI_STATUS NSKHDI_M2MChannelDevice_Configure (NSK2HDI_HANDLE M2MChannele_handle, 261 NDS_ULONG desc_size, 262 const NDS_UBYTE *desc); 263 264 NSK2HDI_STATUS NSKHDI_M2MChannelDevice_WriteM2MKey(NSK2HDI_HANDLE M2MChannele_handle, 265 NDS_ULONG desc_size, 266 const NDS_UBYTE *desc); 267 268 NSK2HDI_STATUS NSKHDI_M2MChannelDevice_NSKWriteM2MKey(NSK2HDI_HANDLE M2MChannele_handle, 269 NDS_ULONG desc_size, 270 const NDS_UBYTE *desc); 271 272 273 MS_U32 NSKHDI_GetHandle(NSK2HDI_HANDLE Handle); 274 275 MS_U32 NSKHDI_IVDataTrans(MS_U8 NSK2HDI_Algo, MS_U8 *pu8IV1, MS_U8 *pu8IV2, MS_U32 *pu32HWIV); 276 277 MS_U32 NSKHDI_AddDscmbConnect(NDS_ULONG xconn, NDS_USHORT es_pid, MS_U32 u32FltID); 278 MS_U32 NSKHDI_RemoveDscmbConnect(NDS_ULONG xconn, NDS_USHORT es_pid); 279 void NSK2HDI_ParamInit(void); 280 281 #endif /*NSK2HDI_HEADER_H_*/ 282 283 284