static int broadcast_Isdb_spi_remove(struct spi_device *spi)
{
	int rc = 0;

	/*                       */
	tcc353x_lnaControl_stop();

	TcpalPrintStatus((I08S *)"[%s]\n", __func__);
	TcpalUnRegisterIrqHandler();
#ifndef _NOT_USE_WAKE_LOCK_
	wake_lock_destroy(&IsdbCtrlInfo.wake_lock);
#endif
	memset((unsigned char*)&IsdbCtrlInfo, 0x0, sizeof(struct broadcast_tcc3530_ctrl_data));
	TcpalDeleteSemaphore(&Tcc353xDrvSem);
	TcpalDeleteSemaphore(&Tcc353xStreamSema);
	TcpalDeleteSemaphore(&Tcc353xLnaControlSema);
	return rc;
}
예제 #2
0
void TcbdDeinitQueue(TcbdQueue_t *_queue)
{
    _queue->front    = 0;
    _queue->rear     = 0;
    _queue->qsize    = 0;
    _queue->buffSize = 0;

    TcpalMemoryFree((void*)_queue->q);
    TcpalDeleteSemaphore(&_queue->sem);
}
예제 #3
0
static int broadcast_Isdb_i2c_remove(struct i2c_client* client)
{
    int rc = 0;

    TcpalPrintStatus((I08S *)"[%s]\n", __func__);
#ifndef _NOT_USE_WAKE_LOCK_
    wake_lock_destroy(&IsdbCtrlInfo.wake_lock);
#endif
    memset((unsigned char*)&IsdbCtrlInfo, 0x0, sizeof(struct broadcast_tcc3530_ctrl_data));
    TcpalDeleteSemaphore(&Tcc353xDrvSem);
    return rc;
}
I32S TcpalRegisterIrqHandler(TcbdDevice_t *_device)
{
#else
I32S TcpalRegisterIrqHandler(void)
{
	extern TcbdDevice_t *GetTcbdDevice(void);
	TcbdDevice_t *_device = GetTcbdDevice();
#endif

    struct spi_device *spi = TCC_GET_SPI_DRIVER();
	TcbdIrqData.isIrqEnable = 0;
#if defined(__WORKQUEUE__)
    TcbdIrqData.workQueue = create_singlethread_workqueue("TcbdStreamParsingWork");
    TcbdIrqData.device = _device;
    TcbdIrqData.tcbd_irq = spi->irq;
	TcpalCreateSemaphore(&TcbdIrqData.lock, "IRQ", 1);

    INIT_WORK(&TcbdIrqData.work, TcbdStreamParsingWork);
#endif //__WORKQUEUE__
    TcbdInitParser(TcbdStreamCallback);

    TchalIrqSetup();

    TcbdDebug(DEBUG_ERROR,"irq:%d\n", TcbdIrqData.tcbd_irq);
    return  request_irq(TcbdIrqData.tcbd_irq, TcbdIrqHandler,
        IRQF_DISABLED | IRQF_TRIGGER_FALLING, "tc317x_stream", &TcbdIrqData);
	
}

I32S TcpalUnRegisterIrqHandler(void)
{
    disable_irq(TcbdIrqData.tcbd_irq);
	flush_workqueue(TcbdIrqData.workQueue);
    destroy_workqueue(TcbdIrqData.workQueue);
	TcpalDeleteSemaphore(&TcbdIrqData.lock);
    return 0;
}