int SetSource (struct dmx_demux* demux, const dmx_source_t *src) { struct dvb_demux* pDvbDemux = (struct dvb_demux*)demux->priv; struct DeviceContext_s* pContext = (struct DeviceContext_s*)pDvbDemux->priv; if((pContext == NULL) || (pContext->pPtiSession == NULL) || (src == NULL)) { printk("%s(): invalid pointer (%p, %p, %p)\n", __func__, pContext, pContext->pPtiSession, src); return -EINVAL; } #ifdef VERY_VERBOSE printk("SetSource(%p, %d) >> ", pDvbDemux, *src); #endif if (*src == DMX_SOURCE_FRONT0) printk("DMX_SOURCE_FRONT0\n"); else if (*src == DMX_SOURCE_FRONT1) printk("DMX_SOURCE_FRONT1\n"); else if (*src == DMX_SOURCE_FRONT2) printk("DMX_SOURCE_FRONT2\n"); else if (*src == DMX_SOURCE_FRONT3) printk("DMX_SOURCE_FRONT3\n"); else if (*src == DMX_SOURCE_DVR0) printk("DMX_SOURCE_DVR0\n"); pContext->pPtiSession->source = *src; if (((*src >= DMX_SOURCE_FRONT0) && (*src <= DMX_SOURCE_FRONT3)) || (*src == DMX_SOURCE_DVR0)) { pti_hal_set_source( pContext->pPtiSession->session, convert_source(*src) ); } return 0; }
void ptiInit ( struct DeviceContext_s *pContext ) { #if defined(UFS912) || defined(UFS913) || defined(SPARK) || defined(SPARK7162) || defined(ATEVIO7500) || defined(HS7810A) || defined(HS7110) || defined(ATEMIO520) || defined(ATEMIO530) || defined(VITAMIN_HD5000) unsigned long start = 0xfe230000; #else unsigned long start = 0x19230000; #endif struct PtiSession *pSession; int tag; int i; #if defined(ADB_BOX) if((TSIS_mode[0] == 0) || (strcmp("serial", TSIS_mode) == 0)) { printk("TsinMode = SERIAL\n"); TsinMode = SERIAL; } else if(strcmp("parallel", TSIS_mode) == 0) { printk("TsinMode = PARALLEL\n"); TsinMode = PARALLEL; } if((TSIS_mode[0] == 0) || (strcmp("single", NIMS) == 0)) { printk("NIMS = SINGLE\n"); glowica = SINGLE; } else if(strcmp("twin", NIMS) == 0) { printk("NIMS = TWIN\n"); glowica = TWIN; } #endif printk ( "%s context = %p, demux = %p\n", __FUNCTION__, pContext, &pContext->DvbDemux); if ( pContext->pPtiSession != NULL ) { printk("PTI ERROR: attempted to initialize a device context with an existing session\n"); return; } if(!ptiInitialized) { // the function is called for the first time // perform common PTI initialization /* * ioremap the pti address space */ pti.pti_io = (unsigned int)ioremap ( start, 0xFFFF ); /* * Setup the transport stream merger based on the configuration */ stm_tsm_init ( /*config */ 1 ); #if defined(TF7700) || defined(UFS922) || defined(UFC960) || defined(FORTIS_HDBOX) || defined(HL101) || defined(VIP1_V2) || defined(VIP2_V1) || defined(CUBEREVO) || defined(CUBEREVO_MINI2) || defined(CUBEREVO_MINI) || defined(CUBEREVO_250HD) || defined(CUBEREVO_2000HD) || defined(CUBEREVO_9500HD) || defined(CUBEREVO_MINI_FTA) || defined(ATEVIO7500) || defined(IPBOX9900) || defined(IPBOX99) || defined(IPBOX55) || defined(ADB_BOX) || defined(UFS913) pti_hal_init ( &pti, &pContext->DvbDemux, demultiplexDvbPackets, 2); #elif defined(SPARK7162) pti_hal_init ( &pti, &pContext->DvbDemux, demultiplexDvbPackets, 3); #else pti_hal_init ( &pti, &pContext->DvbDemux, demultiplexDvbPackets, 1); #endif #if defined(FORTIS_HDBOX) || defined(UFS912) || defined(SPARK) || defined(HS7810A) || defined(HS7110) || defined(ATEMIO520) || defined(ATEMIO530) || defined(VITAMIN_HD5000) || defined(SAGEMCOM88) stv090x_register_frontend(&pContext->DvbContext->DvbAdapter); #elif defined(HL101) || defined(VIP1_V2) || defined(VIP2_V1) || defined(IPBOX9900) || defined(IPBOX99) || defined(IPBOX55) || defined(ADB_BOX) fe_core_register_frontend( &pContext->DvbContext->DvbAdapter); #elif defined(CUBEREVO) || defined(CUBEREVO_MINI2) || defined(CUBEREVO_MINI) || defined(CUBEREVO_250HD) || defined(CUBEREVO_2000HD) || defined(CUBEREVO_9500HD) || defined(CUBEREVO_MINI_FTA) socket_register_adapter(&pContext->DvbContext->DvbAdapter); #elif defined(OCTAGON1008) avl2108_register_frontend( &pContext->DvbContext->DvbAdapter); #elif defined(ATEVIO7500) socket_register_adapter(&pContext->DvbContext->DvbAdapter); #elif defined(SPARK7162) spark7162_register_frontend( &pContext->DvbContext->DvbAdapter); #elif defined(UFC960) fe_core_register_frontend( &pContext->DvbContext->DvbAdapter); #elif defined(UFS922) cx24116_register_frontend( &pContext->DvbContext->DvbAdapter); avl2108_register_frontend( &pContext->DvbContext->DvbAdapter); #elif defined(UFS913) socket_register_adapter(&pContext->DvbContext->DvbAdapter); #else cx24116_register_frontend( &pContext->DvbContext->DvbAdapter); #endif ptiInitialized = 1; } /* * Allocate the session structure */ pSession = ( struct PtiSession * ) kmalloc ( sizeof ( struct PtiSession ), GFP_KERNEL ); if ( !pSession ) return; memset ( ( void * ) pSession, 0, sizeof ( *pSession ) ); pSession->num_pids = 0; // get new session handle tag = convert_source(sessionCounter + DMX_SOURCE_FRONT0); pSession->session = pti_hal_get_new_session_handle(tag, &pContext->DvbDemux); // get new descrambler handle pSession->descrambler = pti_hal_get_new_descrambler(pSession->session); pSession->descramblers[0] = pSession->descrambler; for(i=1;i<NUMBER_OF_DESCRAMBLERS;i++) pSession->descramblers[i] = pti_hal_get_new_descrambler(pSession->session); printk("Descrambler Handler = %d\n", pSession->descrambler); for(i=0;i<8192;i++) pSession->descramblerForPid[i] = 0; pContext->pPtiSession = pSession; sessionCounter++; return; }
int SetSource(struct dmx_demux *demux, const dmx_source_t *src) { struct dvb_demux *pDvbDemux = (struct dvb_demux *)demux->priv; struct DeviceContext_s *pContext = (struct DeviceContext_s *)pDvbDemux->priv; if ((pContext == NULL) || (pContext->pPtiSession == NULL) || (src == NULL)) { printk("%s(): invalid pointer (%p, %p, %p)\n", __func__, pContext, pContext->pPtiSession, src); return -EINVAL; } #ifdef VERY_VERBOSE printk("SetSource(%p, %d)\n", pDvbDemux, *src); #if defined(SAGEMCOM88) \ || defined(ADB_BOX) \ || defined(ARIVALINK200) \ || defined(SPARK7162) \ || defined(IPBOX9900) \ || defined(IPBOX99) \ || defined(IPBOX55) \ || defined(HL101) \ || defined(ADB5800) \ || defined(DSI87) \ || defined(ADB2850) if (*src == DMX_SOURCE_FRONT0) { printk("DMX_SOURCE_FRONT0\n"); } else if (*src == DMX_SOURCE_FRONT1) { printk("DMX_SOURCE_FRONT1\n"); } else if (*src == DMX_SOURCE_FRONT2) { printk("DMX_SOURCE_FRONT2\n"); } else if (*src == DMX_SOURCE_FRONT3) { printk("DMX_SOURCE_FRONT3\n"); } else if (*src == DMX_SOURCE_DVR0) { printk("DMX_SOURCE_DVR0\n"); } #endif #endif pContext->pPtiSession->source = *src; #if defined(DSI87) if (((*src >= DMX_SOURCE_FRONT0) && (*src <= DMX_SOURCE_FRONT1)) || (*src == DMX_SOURCE_DVR0)) #elif defined(ADB5800) \ || defined(ADB2850) if (((*src >= DMX_SOURCE_FRONT0) && (*src <= DMX_SOURCE_FRONT2)) || (*src == DMX_SOURCE_DVR0)) #elif defined(SAGEMCOM88) if (((*src >= DMX_SOURCE_FRONT0) && (*src <= DMX_SOURCE_FRONT3)) || (*src == DMX_SOURCE_DVR0)) #else if (((*src >= DMX_SOURCE_FRONT0) && (*src <= DMX_SOURCE_FRONT3)) || (*src == DMX_SOURCE_DVR0)) #endif { pti_hal_set_source(pContext->pPtiSession->session, convert_source(*src)); } return 0; }