Exemplo n.º 1
0
static void work_queue(struct work_struct *work)
{	

	//for(Int_count=0;Int_count<15;Int_count++){
		//printk(KERN_INFO "%s:%d:Int_count=%d::::::::Sii8334 interrupt happened\n", __func__,__LINE__);
		SiiMhlTxDeviceIsr();
	enable_irq(sii8334_PAGE_TPI->irq);
}
Exemplo n.º 2
0
/**
 *  @brief Thread function that periodically polls for MHLTx events.
 *
 *  @param[in]	data	Pointer to driver context structure
 *
 *  @return		Always returns zero when the thread exits.
 *
 *****************************************************************************/
static int EventThread(void *data)
{
	printk("%s EventThread starting up\n", MHL_DRIVER_NAME);

	while (true)
	{
		if (kthread_should_stop())
		{
			printk("%s EventThread exiting\n", MHL_DRIVER_NAME);
			break;
		}

		HalTimerWait(EVENT_POLL_INTERVAL_30_MS);
		SiiMhlTxDeviceIsr();
	}
	return 0;
}
static int mhl_irq_kthread(void *data)
{
	struct sched_param param = { .sched_priority = RTPM_PRIO_SCRN_UPDATE };
	sched_setscheduler(current, SCHED_RR, &param);
    
    for( ;; ) {
        wait_event_interruptible(mhl_irq_wq, atomic_read(&mhl_irq_event));
		printk("mhl_irq_kthread, mhl irq received\n");
        //hdmi_update_impl();

		atomic_set(&mhl_irq_event, 0);
        SiiMhlTxDeviceIsr();
        if (kthread_should_stop())
            break;
		mt65xx_eint_unmask(CUST_EINT_MHL_NUM);
    }

    return 0;
}
/**
 *  @brief Thread function that periodically polls for MHLTx events.
 *
 *  @param[in]	data	Pointer to driver context structure
 *
 *  @return		Always returns zero when the thread exits.
 *
 *****************************************************************************/
static int EventThread(void *data)
{
	uint8_t 				event;
	uint8_t 				eventParam;


	printk("%s EventThread starting up\n", MHL_DRIVER_NAME);

	while (true)
	{
		if (kthread_should_stop())
		{
			printk("%s EventThread exiting\n", MHL_DRIVER_NAME);
			break;
		}

		HalTimerWait(30);
		SiiMhlTxDeviceIsr();
	}
	return 0;
}
Exemplo n.º 5
0
static void SiiOsScheduler(void)
{
	int pinTxInt = gpio_get_value(sii9244->io_irq_pin);
	while((g_interruptPair.tail != g_interruptPair.head)
			||(g_bumpPair.tail != g_bumpPair.head)
			||(0==pinTxInt)
			)
	{
		if (g_interruptPair.tail != g_interruptPair.head)
		{
			g_interruptPair.head++;
//			SII_SCHEDULER_DEBUG_PRINT(("Sch: intr:%3bu sched:%3bu\n",g_interruptPair.tail,g_interruptPair.head));
//			printk("Sch: intr:%3bu sched:%3bu\n",g_interruptPair.tail,g_interruptPair.head);
		}
		if (g_bumpPair.tail != g_bumpPair.head)
		{
			g_bumpPair.head++;
//			SII_SCHEDULER_DEBUG_PRINT(("Sch: bump:%3bu sched:%3bu\n",g_bumpPair.tail,g_bumpPair.head));
//			printk(("Sch: bump:%3bu sched:%3bu\n",g_bumpPair.tail,g_bumpPair.head));
		}
		SiiMhlTxDeviceIsr( );
		pinTxInt = gpio_get_value(sii9244->io_irq_pin);
	}
}