当前位置: 技术问答>linux和unix
关于S3C2410触摸屏与ADC驱动的冲突
来源: 互联网 发布时间:2017-01-13
本文导语: 我买了个开发板(2.4.18内核),本身带了触摸屏驱动,我想加上ADC驱动,但是当加上了ADC驱动,触摸屏不能用了。我好好的看这两个驱动,发现这两个驱动用了共同的中断号62。我到网上找了很久,有这样一种解决方...
我买了个开发板(2.4.18内核),本身带了触摸屏驱动,我想加上ADC驱动,但是当加上了ADC驱动,触摸屏不能用了。我好好的看这两个驱动,发现这两个驱动用了共同的中断号62。我到网上找了很久,有这样一种解决方案:
1、更改中断模式(一开始这两个驱动程序中才用的都是快速中断处理SA_INTERRUPT)成中断共享(SA_SHIRQ);
2、在中断服务程序的入口处,需要判断一下发生中断的设备。
具体的网页是:
http://topic.csdn.net/u/20080509/16/8dec027f-131b-496f-83e7-69474bb275a1.html
我也明白他的意思,但是当有中断发生时,怎么在驱动中判断是哪个设备产生的中断?应该怎么改我的驱动程序?
1、更改中断模式(一开始这两个驱动程序中才用的都是快速中断处理SA_INTERRUPT)成中断共享(SA_SHIRQ);
2、在中断服务程序的入口处,需要判断一下发生中断的设备。
具体的网页是:
http://topic.csdn.net/u/20080509/16/8dec027f-131b-496f-83e7-69474bb275a1.html
我也明白他的意思,但是当有中断发生时,怎么在驱动中判断是哪个设备产生的中断?应该怎么改我的驱动程序?
|
楼主,你贴代码吧,我告诉你怎么改。。
kernel 会调用所有注册在这个中断上的中断处理函数。
所以你需要自己在中断处理函数的入口判断一下, 这个中断是不是自己的,不是自己的就不要处理。
比如:
注册的时候:
irq = 4 ; //你自己的中断号
retval = request_irq(irq, fcpci_irq, IRQF_SHARED, "12345", 0);
处理的时候:
static irqreturn_t myirq (int irq, void *v, struct pt_regs *regs)
{
if(*v != 12345(自己随便定义一个唯一的标识) )
return IRQ_NONE;
}
kernel 会调用所有注册在这个中断上的中断处理函数。
所以你需要自己在中断处理函数的入口判断一下, 这个中断是不是自己的,不是自己的就不要处理。
比如:
注册的时候:
irq = 4 ; //你自己的中断号
retval = request_irq(irq, fcpci_irq, IRQF_SHARED, "12345", 0);
处理的时候:
static irqreturn_t myirq (int irq, void *v, struct pt_regs *regs)
{
if(*v != 12345(自己随便定义一个唯一的标识) )
return IRQ_NONE;
}
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。