Exemplo n.º 1
0
RET_CODE video_decoder_ioctl(unsigned long io_cmd, unsigned long param1, unsigned long param2)
{
    UINT32 i;
    UINT32 common_desc[sizeof(desc_vdec_ioctl)];
    UINT32 *desc = (UINT32 *)common_desc;
    UINT32 *b = (UINT32 *)desc_vdec_ioctl;
	
    memcpy(common_desc, desc_vdec_ioctl, sizeof(desc_vdec_ioctl));
    for(i = 0; i < sizeof(desc_vdec_ioctl)/sizeof(UINT32); i++)
    {
        desc[i] = b[i];
    }

    switch(io_cmd)
    {
        case VDEC_IO_SET_SCALE_MODE:
            DESC_STATIC_STRU_SET_SIZE(common_desc, 0, 0);
            DESC_STATIC_STRU_SET_SIZE(common_desc, 1, sizeof(struct VDecPIPInfo));
            break;
        case CONTAINER_IO_CONTROL_GET_TIME_MS:
            DESC_STATIC_STRU_SET_SIZE(common_desc, 0, sizeof(unsigned long));
            break;
        case VDEC_IO_GET_STATUS:
            DESC_OUTPUT_STRU_SET_SIZE(common_desc, 0, sizeof(struct  VDec_StatusInfo));
            break;
        case VDEC_IO_GET_MODE:
            DESC_STATIC_STRU_SET_SIZE(common_desc, 0, 4);
            break;
        case CONTAINER_IO_CONTROL_GET_CHAPTER_INFO:
            DESC_STATIC_STRU_SET_SIZE(common_desc, 0, sizeof(DEC_CHAPTER_INFO));
            break;
        case CONTAINER_IO_CONTROL_SET_AVSYNC_DELAY:
            DESC_STATIC_STRU_SET_SIZE(common_desc, 0, 0);
            DESC_STATIC_STRU_SET_SIZE(common_desc, 1, 0);
            break;

        case CONTAINER_IO_CONTROL_EN_AC3_BS_MODE:
        default:
            desc = NULL;
            break;
    }

    jump_to_func(NULL, ali_rpc_call, io_cmd, (LIB_PE_ADV_VIDEO_ENGINE_MODULE<<24)|(3<<16)|FUNC_VIDEO_ENGINE_DECODER_CONTROL, desc);
}
Exemplo n.º 2
0
RET_CODE ce_ioctl(pCE_DEVICE pCeDev,UINT32 cmd,UINT32 param)
{
    UINT32 i;
    UINT32 common_desc[sizeof(ce_io_control)];
    UINT32 *desc = (UINT32 *)common_desc;
    UINT32 *b = (UINT32 *)ce_io_control;
    
    for(i = 0; i < sizeof(ce_io_control)/sizeof(UINT32); i++)
    {
        desc[i] = b[i];
    }
    switch (cmd)
    {
        case IO_OTP_ROOT_KEY_GET:
            DESC_STATIC_STRU_SET_SIZE(common_desc, 0, sizeof(OTP_PARAM));
        break;

        case IO_CRYPT_DATA_INPUT:
            DESC_STATIC_STRU_SET_SIZE(common_desc, 0, sizeof(DATA_PARAM));
        break;

        case IO_CRYPT_PARAM_SET:
            DESC_STATIC_STRU_SET_SIZE(common_desc, 0, sizeof(DES_PARAM));
        break;

        case IO_CRYPT_SECOND_KEY_CONFIG:
           DESC_STATIC_STRU_SET_SIZE(common_desc, 0, sizeof(CE_KEY_PARAM));    	
        break;

        case IO_SECOND_KEY_GENERATE:
            desc = NULL ;
        break;

        case IO_CRYPT_DEBUG_GET_KEY:
            DESC_OUTPUT_STRU_SET_SIZE(common_desc, 0, sizeof(CE_DEBUG_KEY_INFO)); 
            break;
        case IO_CRYPT_POS_IS_OCCUPY:
        {  
            DESC_OUTPUT_STRU_SET_SIZE(common_desc, 0, sizeof(CE_POS_STS_PARAM));  
        }
        break;
        case IO_CRYPT_POS_SET_USED:
        {
            desc=NULL;
        }
        break;
        case IO_CRYPT_POS_SET_IDLE:
        {           
            desc=NULL;
        }
        break;
        case IO_CRYPT_FOUND_FREE_POS:
        {
            DESC_OUTPUT_STRU_SET_SIZE(common_desc, 0, sizeof(CE_FOUND_FREE_POS_PARAM));
        }
        break;
        case IO_DECRYPT_PVR_USER_KEY:
        {
            DESC_STATIC_STRU_SET_SIZE(common_desc, 0, sizeof(CE_PVR_KEY_PARAM));
        }
        break;
        default:
            SDBBP();
        break;
        
    }
    jump_to_func(NULL, OS_hld_caller, pCeDev, CE_NPARA(3)|FUNC_CE_IOCTL, desc);
}
Exemplo n.º 3
0
int ali_ce_ioctl(CE_DEVICE *pCeDev,__u32 cmd,__u32 param)
{
#if !defined(CONFIG_ALI_RPCNG)
	__u32 i;
	__u32 common_desc[sizeof(ce_io_control)];
	__u32 *desc = (__u32 *)common_desc;
	__u32 *b = (__u32 *)ce_io_control;

	for(i = 0; i < sizeof(ce_io_control)/sizeof(__u32); i++)
	{
		desc[i] = b[i];
	}
	
	switch (CE_IO_CMD(cmd))
	{
		case CE_IO_CMD(IO_OTP_ROOT_KEY_GET):
			DESC_STATIC_STRU_SET_SIZE(common_desc, 0, sizeof(OTP_PARAM));
			break;

		case CE_IO_CMD(IO_CRYPT_DEBUG_GET_KEY):
			DESC_OUTPUT_STRU_SET_SIZE(common_desc, 0, sizeof(CE_DEBUG_KEY_INFO)); 
			break;
			
		case CE_IO_CMD(IO_CRYPT_POS_IS_OCCUPY):
			DESC_OUTPUT_STRU_SET_SIZE(common_desc, 0, sizeof(CE_POS_STS_PARAM));  
			break;
			
		case CE_IO_CMD(IO_CRYPT_POS_SET_USED):
			desc=NULL;
			break;
			
		case CE_IO_CMD(IO_CRYPT_POS_SET_IDLE):
			desc=NULL;
			break;
			
		case CE_IO_CMD(IO_CRYPT_FOUND_FREE_POS):
			DESC_OUTPUT_STRU_SET_SIZE(common_desc, 0, \
										sizeof(CE_FOUND_FREE_POS_PARAM));
			break;
			
		case CE_IO_CMD(IO_DECRYPT_PVR_USER_KEY):
			DESC_STATIC_STRU_SET_SIZE(common_desc, 0, sizeof(CE_PVR_KEY_PARAM));
			break;
			
		default:
		{
			ALI_CE_RPC_DEBUG("CE rpc Error:invalid cmd\n");
			break;            
		}
	}
	jump_to_func(NULL, ali_rpc_call, pCeDev, CE_NPARA(3)|FUNC_CE_IOCTL, desc);
    
#else
	RET_CODE ret = RET_FAILURE;
	union
	{
		OTP_PARAM otp;
		CE_PVR_KEY_PARAM ce_pvr_key;
		CE_FOUND_FREE_POS_PARAM kpos_param;
		CE_DEBUG_KEY_INFO kdebug_param;
		CE_POS_STS_PARAM ksts_param;
	}tmp;
	
	Param p1;
	Param p2;
	Param p3;
	
	RPC_PARAM_UPDATE(p1, PARAM_IN, PARAM_UINT32, sizeof(long), (void *)&pCeDev);
	RPC_PARAM_UPDATE(p2, PARAM_IN, PARAM_UINT32, sizeof(long), (void *)&cmd);
	RPC_PARAM_UPDATE(p3, PARAM_IN, PARAM_UINT32, sizeof(long), (void *)&param);

	switch (CE_IO_CMD(cmd))
	{
		case CE_IO_CMD(IO_OTP_ROOT_KEY_GET):
			ali_ce_umemcpy(&tmp, (void *)param, sizeof(tmp.otp));
			RPC_PARAM_UPDATE(p3, PARAM_IN, PARAM_Otp_param_rpc, \
								sizeof(Otp_param_rpc), (void *)&tmp);          
			break;

		case CE_IO_CMD(IO_CRYPT_DEBUG_GET_KEY):
			ali_ce_umemcpy(&tmp, (void *)param, sizeof(tmp.kdebug_param));
			RPC_PARAM_UPDATE(p3, PARAM_INOUT, PARAM_Ce_debug_key_info_rpc, \
								sizeof(Ce_debug_key_info_rpc), (void *)&tmp);
			break;
			
		case CE_IO_CMD(IO_CRYPT_POS_IS_OCCUPY):
			ali_ce_umemcpy(&tmp, (void *)param, sizeof(tmp.ksts_param));
			RPC_PARAM_UPDATE(p3, PARAM_INOUT, PARAM_Ce_pos_status_param_rpc, \
								sizeof(Ce_pos_status_param_rpc), (void *)&tmp);
			break;
			
		case CE_IO_CMD(IO_CRYPT_POS_SET_USED):
			break;
		
		case CE_IO_CMD(IO_CRYPT_POS_SET_IDLE):         
			break;
		
		case CE_IO_CMD(IO_CRYPT_FOUND_FREE_POS):
			RPC_PARAM_UPDATE(p3, PARAM_INOUT, PARAM_Ce_found_free_pos_param_rpc, \
								sizeof(Ce_found_free_pos_param_rpc), (void *)param);            
			break;
			
		case CE_IO_CMD(IO_DECRYPT_PVR_USER_KEY):
			ali_ce_umemcpy(&tmp, (void *)param, sizeof(tmp.ce_pvr_key));
			RPC_PARAM_UPDATE(p3, PARAM_IN, PARAM_Ce_pvr_key_param_rpc, 
								sizeof(Ce_pvr_key_param_rpc), (void *)&tmp);
			break;
		
		default:
		{
			ALI_CE_RPC_DEBUG("CE rpc Error: invalid cmd=0x%x\n",cmd);
			break;            
		}
	}

	ret =  RpcCallCompletion(RPC_ce_ioctl,&p1,&p2,&p3,NULL);

	if(CE_IO_CMD(IO_CRYPT_DEBUG_GET_KEY) == CE_IO_CMD(cmd))
	{
		ali_ce_umemcpy((void *)param, &tmp, sizeof(tmp.kdebug_param));
	}
	
	if(CE_IO_CMD(IO_CRYPT_POS_IS_OCCUPY) == CE_IO_CMD(cmd))
	{
		ali_ce_umemcpy((void *)param, &tmp, sizeof(tmp.ksts_param));
	}

	return ret;
#endif
}