开发板--红外遥控器 --开机
本帖最后由 f839903061 于 2013-6-19 17:49 编辑现在遇到一个问题
开发板有红外接收器,可以使用红外遥控器
我已经做到了红外关机,这样肯定不能红外开机了
现在想让其变为睡眠,然后可以红外开机
我ir.kl配置文件中只有power (关机),并没有sleep选项!不知道如何入手!
有做过这方面的朋友吗?谢谢!
1. 原因:
这个power是进入休眠状态而不是关机.
不能开机的真正原因是:
内核中的sun7i-ir.c中对休眠进行了处理,把红外的时钟关闭了.
即在休眠状态下,红外不接收任何信号,所以也就不能唤醒了.
2. 解决方法:
把sun-7i-ir.c修改成如下形式: 即将suspend的处理的两个函数,改为空.
#if 0 //add by cong start
//停用设备
#ifdef CONFIG_HAS_EARLYSUSPEND
static void sun7i_ir_suspend(struct early_suspend *h)
{
/* unsigned long tmp = 0;
int ret;
struct sun7i_ir_data *ts = container_of(h, struct sun7i_ir_data, early_suspend);
tmp = readl(IR_BASE+IR_CTRL_REG);
tmp &= 0xfffffffc;
writel(tmp, IR_BASE+IR_CTRL_REG);
*/
dbmsg("EARLYSUSPEND:enter earlysuspend: sun7i_ir_suspend. \n");
if(NULL == ir_clk || IS_ERR(ir_clk)) {
printk("ir_clk handle is invalid, just return!\n");
return;
} else {
clk_disable(ir_clk);
}
if(NULL == apb_ir_clk || IS_ERR(ir_clk)) {
printk("ir_clk handle is invalid, just return!\n");
return;
} else {
clk_disable(apb_ir_clk);
}
}
//重新唤醒
static void sun7i_ir_resume(struct early_suspend *h)
{
dbmsg("EARLYSUSPEND:enter laterresume: sun7i_ir_resume. \n");
ir_code = 0;
timer_used = 0;
ir_reset_rawbuffer();
ir_clk_cfg();
ir_reg_cfg();
}
#endif
#endif//add by cong end
static void sun7i_ir_suspend(struct early_suspend *h)
{
}
//重新唤醒
static void sun7i_ir_resume(struct early_suspend *h)
{
}
wangcong02345 发表于 2014-7-21 19:20 static/image/common/back.gif
1. 原因:
这个power是进入休眠状态而不是关机.
不能开机的真正原因是:
找了好久,也猜是这个原因。 但苦于道行不深,终于发现源代码了。不过我是用的人人家编译好的ko, 自己编译环境都不具备。有办法单独编译sun-7i.ko吗
你的板子还自然红外开机嚒?
wangcong02345 发表于 2014-7-21 19:20 static/image/common/back.gif
1. 原因:
这个power是进入休眠状态而不是关机.
不能开机的真正原因是:
非常感谢您的回复!
马克之,到时候用的上,谢谢
ct的红外是不是还认客户码?如何让他兼容大多数的遥控器?
smileFei 发表于 2014-9-11 10:34 static/image/common/back.gif
ct的红外是不是还认客户码?如何让他兼容大多数的遥控器?
不好意思,这个是很久以前接触的,只是做了简单的配置!其他的了解的也不是很多
f839903061 发表于 2014-9-12 13:42 static/image/common/back.gif
不好意思,这个是很久以前接触的,只是做了简单的配置!其他的了解的也不是很多
...
哦,我不太懂,所以说请教你,我听说有客户码还有遥控得认频率。
smileFei 发表于 2014-9-13 19:17 static/image/common/back.gif
哦,我不太懂,所以说请教你,我听说有客户码还有遥控得认频率。
不同的红外遥控器,一般是「用户码」不同,所谓用户码是为了区分不同型号的设备(比如电视机)。内核驱动代码中是可以匹配多个「用户码」。我之前做过。
页:
[1]
2