linux下pc sc协议驱动,Linux中触摸屏驱动的实现:SC处理器.doc

Linux中触摸屏驱动的实现:SC处理器

这几篇文章主要是关于linux中触摸屏驱动的,基于s3c6410处理器进行分析。这一篇主要是关于触摸屏设备作为平台设备的实现,还有对应的probe函数和remove函数的源码分析。

1、触摸屏模块的加载和卸载函数

static char banner[] __initdata = KERN_INFO "S3C Touchscreen driver, (c) 2008 Samsung Electronics\n";

static int __init s3c_ts_init(void)

{

printk(banner);

return platform_driver_register(&s3c_ts_driver);

}

static void __exit s3c_ts_exit(void)

{

platform_driver_unregister(&s3c_ts_driver);

}

module_init(s3c_ts_init);

module_exit(s3c_ts_exit);

万变不离其宗,还是熟悉的那个他,只不过每一次都是一番新的历程。

对应的平台设备资源:在Dev-ts.c (linux2.6.28\arch\arm\plat-s3c)文件中

/* Touch srcreen */

static struct resource s3c_ts_resource[] = {

[0] = {

.start = S3C_PA_ADC, I/O端口

.end = S3C_PA_ADC + SZ_4K - 1,

.flags = IORESOURCE_MEM,

},

[1] = {

.start = IRQ_PENDN, 中断

.end = IRQ_PENDN,

.flags = IORESOURCE_IRQ,

},

[2] = {

.start = IRQ_ADC, 中断

.end = IRQ_ADC,

.flags = IORESOURCE_IRQ,

}

};

struct platform_device s3c_device_ts = {

.name = "s3c-ts",

.id = -1,

.num_resources = ARRAY_SIZE(s3c_ts_resource),

.resource = s3c_ts_resource,

};

对应的platform_driver结构体的定义如下:

static struct platform_driver s3c_ts_driver = {

.probe = s3c_ts_probe,

.remove = s3c_ts_remove,

.suspend = s3c_ts_suspend,

.resume = s3c_ts_resume,

.driver = {

.owner = THIS_MODULE,

.name = "s3c-ts",

},

};

2、我想应该知道要做什么了,接着来看probe函数,源码如下:

/*

* The functions for inserting/removing us as a module.

*/

static int __init s3c_ts_probe(struct platform_device *pdev)

{

struct resource *res;

struct device *dev;

struct input_dev *input_dev;

struct s3c_ts_mach_info * s3c_ts_cfg;

int ret, size;

dev = &pdev->dev;

res = platform_get_resource(pdev, IORESOURCE_MEM, 0);

if (res == NULL) {

dev_err(dev,"no memory resource specified\n");

return -ENOENT;

} 得到寄存器操作地址

size = (res->end - res->start) + 1;

ts_mem = request_mem_region(res->start, size, pdev->name); 申请这片内存区域

注:static struct resource*ts_mem;

if (ts_mem == NULL) {

dev_err(dev, "failed to get memory region\n");

ret = -ENOENT;

goto err_req;

}

t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值