devfs_sample.txt

来自「基于LINUX操作系统下的各种详细配置(如FTP」· 文本 代码 · 共 54 行

TXT
54
字号
static int __init s3c2410ts_probe(struct device *dev) 
{ 
int ret; 

tsEvent = tsEvent_dummy; 

ret = register_chrdev(0, DEVICE_NAME, &s3c2410_fops); 
if (ret < 0) { 
printk(DEVICE_NAME " can't get major number\n"); 
return ret; 
} 
tsMajor = ret; 
printk("%s device driver MAJOR:%d\n", DEVICE_NAME, tsMajor); 

/* set gpio to XP, YM, YP and YM */ 
// set_gpio_ctrl(GPIO_YPON); 
// set_gpio_ctrl(GPIO_YMON); 
// set_gpio_ctrl(GPIO_XPON); 
// set_gpio_ctrl(GPIO_XMON); 
__raw_writel(__raw_readl(S3C2410_GPGCON)|(0xff<<24), S3C2410_GPGCON); 

__raw_writel(30000, S3C2410_ADCDLY); //added by hzh 
/* Enable touch interrupt */ 
ret = request_irq(IRQ_ADC, s3c2410_isr_adc, SA_INTERRUPT, 
DEVICE_NAME, s3c2410_isr_adc); 
if (ret) goto adc_failed; 
ret = request_irq(IRQ_TC, s3c2410_isr_tc, SA_INTERRUPT, 
DEVICE_NAME, s3c2410_isr_tc); 
if (ret) goto tc_failed; 

/* Wait for touch screen interrupts */ 
wait_down_int(); 

#ifdef CONFIG_DEVFS_FS 
devfs_mk_dir("touchscreen"); 
devfs_mk_cdev(MKDEV(tsMajor, TSRAW_MINOR), S_IFCHR|S_IRUGO|S_IWUSR, "touchscreen/%d", 0); 
#endif 

#ifdef CONFIG_PM 
#if 0 
tsdev.pm_dev = pm_register(PM_GP_DEV, PM_USER_INPUT, 
s3c2410_ts_pm_callback); 
#endif 
tsdev.pm_dev = pm_register(PM_DEBUG_DEV, PM_USER_INPUT, 
s3c2410_ts_pm_callback); 
#endif 
printk(DEVICE_NAME " initialized\n"); 

return 0; 
tc_failed: 
free_irq(IRQ_ADC, s3c2410_isr_adc); 
adc_failed: 
return ret; 
} 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?