设为首页 加入收藏

TOP

TQ2440触摸屏驱动程序的移植(二)
2014-11-23 19:52:56 来源: 作者: 【 】 浏览:83
Tags:TQ2440 触摸屏 驱动程序 移植
adcdev.channel, adc_data, ((ADCCON & 0x80) 1:0));

value = adc_data;
sprintf(str,"%5d", adc_data);
copy_to_user(buffer, (char *)&adc_data, sizeof(adc_data));

ADC_enable = 0;
up(&ADC_LOCK);

len = sprintf(str, "%d\n", value);
if (count >= len)
{
int r = copy_to_user(buffer, str, len);
return r r : len;
}
else
{
return -1;
}
}
else
{
return -1;
//value = -1;
}
}

static int tq2440_adc_open(struct inode *inode, struct file *filp)
{
init_waitqueue_head(&(adcdev.wait));

adcdev.channel=2;
adcdev.prescale=0xff;

DPRINTK( "ADC opened\n");

return 0;
}

static int tq2440_adc_release(struct inode *inode, struct file *filp)
{
DPRINTK( "ADC closed\n");
return 0;
}


static struct file_operations dev_fops = {
.owner = THIS_MODULE,
.open = tq2440_adc_open,
.ioctl = tq2440_adc_ioctl,
.read = tq2440_adc_read,
.release = tq2440_adc_release,
};

static struct miscdevice misc = {
.minor = MISC_DYNAMIC_MINOR,
.name = DEVICE_NAME,
.fops = &dev_fops,
};

static int __init dev_init(void)
{
int ret;

base_addr=ioremap(S3C2410_PA_ADC,0x20);
if (base_addr == NULL)
{
printk(KERN_ERR "failed to remap register block\n");
return -ENOMEM;
}

adc_clock = clk_get(NULL, "adc");
if (!adc_clock)
{
printk(KERN_ERR "failed to get adc clock source\n");
return -ENOENT;
}
clk_enable(adc_clock);

ADCTSC = 0;

ret = misc_register(&misc);

printk (DEVICE_NAME" initialized\n");
return ret;
}

static void __exit dev_exit(void)
{

if (adc_clock)
{
clk_disable(adc_clock);
clk_put(adc_clock);
adc_clock = NULL;
}

misc_deregister(&misc);
}

EXPORT_SYMBOL(ADC_LOCK);
module_init(dev_init);
module_exit(dev_exit);
MODULE_LICENSE("GPL");


上述程序的源码以后再作分析。


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java I/O操作入门教程 下一篇TQ2440四线电阻式触摸屏驱动程序..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: