主题 : s3c2440  ADC驱动问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 29200
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
综合积分: 14 分
注册时间: 2010-09-24
最后登录: 2012-02-21
楼主  发表于: 2011-05-08 16:38

 s3c2440  ADC驱动问题

#define clkcon          (unsigned long)ioremap(0x4c00000c,4)
#define adc_con         (unsigned long)ioremap(0x58000000,4)
#define adc_dat0        (volatile unsigned long)ioremap(0x5800000c,4)
#define adctsc          (unsigned long)ioremap(0x58000004,1)

static ssize_t adc_read(struct file *file,char *buffer,size_t count,loff_t *ppos)
{
unsigned long buf;
unsigned long tmp;
printk("%ld ",ioread32(adc_con));
iowrite32((ioread32(clkcon))|1<<15,clkcon);
iowrite8((ioread8(adctsc))&(~(1<<2)),adctsc);
iowrite32(ioread32(adc_con)|(1<<14)|(0x5<<6),adc_con);
//iowrite32(ioread32(adc_con)&(0x7ffb)|1<<1,adc_con);
printk("%ld ",ioread32(adc_con));
iowrite32(ioread32(adc_con)|0x1,adc_con);

//printk("%ld",__raw_readl(adc_con));
do{
      tmp = readl(adc_con);
}while(((unsigned int)tmp)&0x1);
printk("%ld ",ioread32(adc_con));
while(!(__raw_readl(adc_con)&0x8000));

为什么这里的循环过不去?有高人知道吗?