日期:2014-05-16 浏览次数:21019 次
static struct platform_driver s3c_adc_driver = {
.probe = s3c_adc_probe,
.remove = s3c_adc_remove,
.suspend = s3c_adc_suspend,
.resume = s3c_adc_resume,
.driver = {
.owner = THIS_MODULE,
.name = "s3c-adc",
},
};
int __init s3c_adc_init(void)
{
printk(banner);
return platform_driver_register(&s3c_adc_driver);
}
static int __init s3c_adc_probe(struct platform_device *pdev)
{
struct resource *res;
struct device *dev;
int ret;
int size;
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
dev = &pdev->dev;
if(res == NULL){
dev_err(dev,"no memory resource specified\n");
return -ENOENT;
}
size = (res->end - res->start) + 1;
#if !defined(ADC_WITH_TOUCHSCREEN)
adc_mem = request_mem_region(res->start, size, pdev->name);
if(adc_mem == NULL){
dev_err(dev, "failed to get memory region\n");
ret = -ENOENT;
goto err_req;
}
#endif
/* 为什么下面这一句就得到了一个虚拟地址,我的意思是res->start为什么就代表了ADC基地址 */
base_addr = ioremap(res->start,size);
if(base_addr == NULL){
dev_err(dev,"fail to ioremap() region\n");
ret = -ENOENT;
goto err_map;
}
.
.
.
}