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 + -
显示快捷键?