Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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;
}
Ejemplo n.º 3
0
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;
}