Пример #1
0
static void __maybe_unused rk616_irq_work_func(struct work_struct *work)
{
	if((hdmi->suspend == 0) && (hdmi->enable == 1)) {
                rk616_hdmi_work();
	}
	dev_info(hdmi->dev, "func: %s, enable_irq\n", __func__);
        enable_irq(hdmi->irq);
}
Пример #2
0
static void rk616_delay_work_func(struct work_struct *work)
{
        struct rk616_hdmi *rk616_hdmi;

        rk616_hdmi = container_of(hdmi, struct rk616_hdmi, g_hdmi);

	if(hdmi->suspend == 0) {
		if(hdmi->enable == 1) {
			//hdmi_irq();
                        rk616_hdmi_work();
		}

                if (rk616_hdmi->rk616_drv && rk616_hdmi->rk616_drv->pdata->hdmi_irq == INVALID_GPIO) {
                        queue_delayed_work(hdmi->workqueue, &rk616_hdmi->rk616_delay_work, 50);
                }
	}
}
Пример #3
0
static irqreturn_t rk616_hdmi_irq(int irq, void *dev_id)
{
        struct work_struct  *rk616_irq_work_struct;
        struct rk616_hdmi *rk616_hdmi;

        rk616_hdmi = container_of(hdmi, struct rk616_hdmi, g_hdmi);
        if(rk616_hdmi->rk616_drv) {
                rk616_irq_work_struct  = dev_id;
                disable_irq_nosync(hdmi->irq);
                queue_work(hdmi->workqueue, rk616_irq_work_struct);
        } else {
                /* 3028a hdmi */
                if((hdmi->suspend == 0) && (hdmi->enable == 1)) {
                        printk(KERN_INFO "line = %d, rk616_hdmi_irq irq triggered.\n", __LINE__);
                        rk616_hdmi_work();
                }
        }
        return IRQ_HANDLED;
}
Пример #4
0
static void hdmi_early_resume(struct early_suspend *h)
{
	struct rk616_hdmi *rk616_hdmi;

	rk616_hdmi = container_of(hdmi, struct rk616_hdmi, g_hdmi);
	hdmi_dbg(hdmi->dev, "hdmi exit early resume\n");

	mutex_lock(&hdmi->enable_mutex);

	hdmi->suspend = 0;
	rk616_hdmi_initial();
	if(hdmi->enable && hdmi->irq) {
		enable_irq(hdmi->irq);
		// hdmi_irq();
		rk616_hdmi_work();
	}

	if (rk616_hdmi->rk616_drv && rk616_hdmi->rk616_drv->pdata->hdmi_irq == INVALID_GPIO) 
		queue_delayed_work(hdmi->workqueue, &rk616_hdmi->rk616_delay_work, 100);
	queue_delayed_work(hdmi->workqueue, &hdmi->delay_work, msecs_to_jiffies(10));	
	mutex_unlock(&hdmi->enable_mutex);
	return;
}