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); }
/** * @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, ¶m); 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; }
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); } }