#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));
为什么这里的循环过不去?有高人知道吗?