f839903061 发表于 2013-6-19 17:16:32

开发板--红外遥控器 --开机

本帖最后由 f839903061 于 2013-6-19 17:49 编辑

现在遇到一个问题
开发板有红外接收器,可以使用红外遥控器

我已经做到了红外关机,这样肯定不能红外开机了


现在想让其变为睡眠,然后可以红外开机

我ir.kl配置文件中只有power (关机),并没有sleep选项!不知道如何入手!

有做过这方面的朋友吗?谢谢!

wangcong02345 发表于 2014-7-21 19:20:13

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)
{
}

天下第七 发表于 2014-7-27 04:06:54

wangcong02345 发表于 2014-7-21 19:20 static/image/common/back.gif
1. 原因:
这个power是进入休眠状态而不是关机.
不能开机的真正原因是:


找了好久,也猜是这个原因。 但苦于道行不深,终于发现源代码了。不过我是用的人人家编译好的ko, 自己编译环境都不具备。有办法单独编译sun-7i.ko吗

管叫我小狄 发表于 2014-8-4 17:13:54

你的板子还自然红外开机嚒?

f839903061 发表于 2014-8-8 10:37:32

wangcong02345 发表于 2014-7-21 19:20 static/image/common/back.gif
1. 原因:
这个power是进入休眠状态而不是关机.
不能开机的真正原因是:


非常感谢您的回复!

bsdcpp 发表于 2014-8-11 15:28:04

马克之,到时候用的上,谢谢

smileFei 发表于 2014-9-11 10:34:27

ct的红外是不是还认客户码?如何让他兼容大多数的遥控器?

f839903061 发表于 2014-9-12 13:42:05

smileFei 发表于 2014-9-11 10:34 static/image/common/back.gif
ct的红外是不是还认客户码?如何让他兼容大多数的遥控器?

不好意思,这个是很久以前接触的,只是做了简单的配置!其他的了解的也不是很多

smileFei 发表于 2014-9-13 19:17:26

f839903061 发表于 2014-9-12 13:42 static/image/common/back.gif
不好意思,这个是很久以前接触的,只是做了简单的配置!其他的了解的也不是很多
...

哦,我不太懂,所以说请教你,我听说有客户码还有遥控得认频率。

kangear 发表于 2014-10-26 18:34:51

smileFei 发表于 2014-9-13 19:17 static/image/common/back.gif
哦,我不太懂,所以说请教你,我听说有客户码还有遥控得认频率。

不同的红外遥控器,一般是「用户码」不同,所谓用户码是为了区分不同型号的设备(比如电视机)。内核驱动代码中是可以匹配多个「用户码」。我之前做过。
页: [1] 2
查看完整版本: 开发板--红外遥控器 --开机