当前位置: 技术问答>linux和unix
关于帧缓冲设备驱动中注册中断的疑问
来源: 互联网 发布时间:2016-12-25
本文导语: 本帖最后由 jerrylim 于 2011-08-16 20:37:54 编辑 在帧缓冲设备驱动代码,即s3c2410fb.c中对模块加载后就调用了probe函数,然后再该函数完成一系列的初始化,其中有一处是调用request_irq(irq, s3c2410fb_irq, IRQF_DISABLED, pdev->name, ...
小弟还有一疑问,就是在LCD的裸机程序中,初始化阶段必须要对LCDCON1~LCDCON5 以及LCDSADDR1~LCDSADDR3写入数据才能完成初始化,但是在
帧缓冲设备驱动中并没有对这些寄存器进行操作,只是将在裸机程序中应该填入
LCDCON1~LCDCON5 以及LCDSADDR1~LCDSADDR3寄存器的值填入var和fix结构,请问这样是不是就算是完成了对这些寄存器的操作。
|
没时间帮你分析代码,中断是由硬件产生,可能是用图形数据进行硬件加速?或者其它的与frame buffer相关的设备,例如LCD控制器?
|
某些时候有用。看code:
static irqreturn_t s3c2410fb_irq(int irq, void *dev_id)
{
struct s3c2410fb_info *fbi = dev_id;
void __iomem *irq_base = fbi->irq_base;
unsigned long lcdirq = readl(irq_base + S3C24XX_LCDINTPND);
if (lcdirq & S3C2410_LCDINT_FRSYNC) {
if (fbi->palette_ready)
s3c2410fb_write_palette(fbi);
writel(S3C2410_LCDINT_FRSYNC, irq_base + S3C24XX_LCDINTPND);
writel(S3C2410_LCDINT_FRSYNC, irq_base + S3C24XX_LCDSRCPND);
}
return IRQ_HANDLED;
}
如果有颜色表的时候,就会利用中断的时候填充颜色表。
static irqreturn_t s3c2410fb_irq(int irq, void *dev_id)
{
struct s3c2410fb_info *fbi = dev_id;
void __iomem *irq_base = fbi->irq_base;
unsigned long lcdirq = readl(irq_base + S3C24XX_LCDINTPND);
if (lcdirq & S3C2410_LCDINT_FRSYNC) {
if (fbi->palette_ready)
s3c2410fb_write_palette(fbi);
writel(S3C2410_LCDINT_FRSYNC, irq_base + S3C24XX_LCDINTPND);
writel(S3C2410_LCDINT_FRSYNC, irq_base + S3C24XX_LCDSRCPND);
}
return IRQ_HANDLED;
}
如果有颜色表的时候,就会利用中断的时候填充颜色表。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。