From 2c040105a51abb76fe8929a13eb7f06b351a8ef7 Mon Sep 17 00:00:00 2001 From: Zheng Yang Date: Mon, 10 Sep 2012 19:22:37 +0800 Subject: [PATCH] rk3066b: rk610: support irq mode. --- arch/arm/mach-rk30/board-rk3066b-m701.c | 2 +- drivers/video/rockchip/hdmi/chips/rk610/Makefile | 2 +- drivers/video/rockchip/hdmi/chips/rk610/rk610_hdcp.h | 4 +++- drivers/video/rockchip/hdmi/chips/rk610/rk610_hdmi.c | 3 ++- drivers/video/rockchip/hdmi/chips/rk610/rk610_hdmi.h | 5 ++++- drivers/video/rockchip/hdmi/rk_hdmi_sysfs.c | 3 ++- 6 files changed, 13 insertions(+), 6 deletions(-) diff --git a/arch/arm/mach-rk30/board-rk3066b-m701.c b/arch/arm/mach-rk30/board-rk3066b-m701.c index 2b490cb408a7..401cf4829502 100755 --- a/arch/arm/mach-rk30/board-rk3066b-m701.c +++ b/arch/arm/mach-rk30/board-rk3066b-m701.c @@ -1311,7 +1311,7 @@ static struct i2c_board_info __initdata i2c0_info[] = { .type = "rk610_hdmi", .addr = 0x46, .flags = 0, - .irq = INVALID_GPIO, + .irq = RK30_PIN0_PB6, }, #endif #ifdef CONFIG_SND_SOC_RK610 diff --git a/drivers/video/rockchip/hdmi/chips/rk610/Makefile b/drivers/video/rockchip/hdmi/chips/rk610/Makefile index 68750e29d820..683fb21bec4b 100755 --- a/drivers/video/rockchip/hdmi/chips/rk610/Makefile +++ b/drivers/video/rockchip/hdmi/chips/rk610/Makefile @@ -1,5 +1,5 @@ ccflags-$(CONFIG_RK_HDMI_DEBUG) = -DDEBUG -DHDMI_DEBUG -ccflags-$(CONFIG_HDCP_RK2928_DEBUG) = -DHDCP_DEBUG +ccflags-$(CONFIG_HDCP_RK610_DEBUG) = -DHDCP_DEBUG obj-$(CONFIG_HDMI_RK610) += rk610_hdmi_hw.o rk610_hdmi.o obj-$(CONFIG_HDCP_RK610) += rk610_hdmi_hdcp.o rk610_hdcp.o diff --git a/drivers/video/rockchip/hdmi/chips/rk610/rk610_hdcp.h b/drivers/video/rockchip/hdmi/chips/rk610/rk610_hdcp.h index a33d1bcaa4e1..d7459a2c9b92 100755 --- a/drivers/video/rockchip/hdmi/chips/rk610/rk610_hdcp.h +++ b/drivers/video/rockchip/hdmi/chips/rk610/rk610_hdcp.h @@ -175,7 +175,9 @@ struct hdcp { extern struct hdcp *hdcp; -#define HDCP_DEBUG +#ifdef DBG +#undef DBG +#endif #ifdef HDCP_DEBUG #define DBG(format, ...) \ diff --git a/drivers/video/rockchip/hdmi/chips/rk610/rk610_hdmi.c b/drivers/video/rockchip/hdmi/chips/rk610/rk610_hdmi.c index 97fbb0734172..7c072e4a66ba 100755 --- a/drivers/video/rockchip/hdmi/chips/rk610/rk610_hdmi.c +++ b/drivers/video/rockchip/hdmi/chips/rk610/rk610_hdmi.c @@ -165,6 +165,7 @@ static int rk610_hdmi_i2c_probe(struct i2c_client *client,const struct i2c_devic #ifdef HDMI_USE_IRQ if(client->irq != INVALID_GPIO) { INIT_WORK(&rk610_hdmi->irq_work, rk610_irq_work_func); + schedule_work(&rk610_hdmi->irq_work); if((rc = gpio_request(client->irq, "hdmi gpio")) < 0) { dev_err(&client->dev, "fail to request gpio %d\n", client->irq); @@ -174,7 +175,7 @@ static int rk610_hdmi_i2c_probe(struct i2c_client *client,const struct i2c_devic rk610_hdmi->gpio = client->irq; gpio_pull_updown(client->irq, GPIOPullUp); gpio_direction_input(client->irq); - if((rc = request_irq(rk610_hdmi->irq, rk610_irq, IRQF_TRIGGER_RISING, NULL, hdmi)) < 0) + if((rc = request_irq(hdmi->irq, rk610_irq, IRQF_TRIGGER_RISING, NULL, hdmi)) < 0) { dev_err(&client->dev, "fail to request hdmi irq\n"); goto err_request_irq; diff --git a/drivers/video/rockchip/hdmi/chips/rk610/rk610_hdmi.h b/drivers/video/rockchip/hdmi/chips/rk610/rk610_hdmi.h index 5ddd8aeb2da0..746283e7a8ee 100755 --- a/drivers/video/rockchip/hdmi/chips/rk610/rk610_hdmi.h +++ b/drivers/video/rockchip/hdmi/chips/rk610/rk610_hdmi.h @@ -3,12 +3,15 @@ #include "../../rk_hdmi.h" #define HDMI_SOURCE_DEFAULT HDMI_SOURCE_LCDC0 +//#define HDMI_USE_IRQ struct rk610_hdmi_pdata { int gpio; struct i2c_client *client; struct delayed_work delay_work; - #ifndef HDMI_USE_IRQ + #ifdef HDMI_USE_IRQ + struct work_struct irq_work; + #else struct workqueue_struct *workqueue; #endif }; diff --git a/drivers/video/rockchip/hdmi/rk_hdmi_sysfs.c b/drivers/video/rockchip/hdmi/rk_hdmi_sysfs.c index 14f7924d041c..a93c32110839 100755 --- a/drivers/video/rockchip/hdmi/rk_hdmi_sysfs.c +++ b/drivers/video/rockchip/hdmi/rk_hdmi_sysfs.c @@ -42,8 +42,9 @@ static int hdmi_set_enable(struct rk_display_device *device, int enable) else { if(hdmi->irq) enable_irq(hdmi->irq); - else + #ifdef CONFIG_HDMI_RK610 queue_delayed_work(hdmi->workqueue, &hdmi->delay_work, 0); + #endif mutex_unlock(&hdmi->enable_mutex); } return 0; -- 2.34.1