v = readq(&timer->hpet_config); 
static int hpet_ioctl_ieon(struct hpet_dev *devp){	struct hpet_timer __iomem *timer;	struct hpet __iomem *hpet;	struct hpets *hpetp;	int irq;	unsigned long g, v, t, m;	unsigned long flags, isr;	timer = devp->hd_timer;	hpet = devp->hd_hpet;	hpetp = devp->hd_hpets;	if (!devp->hd_ireqfreq)		return -EIO;	v = readq(&timer->hpet_config);	spin_lock_irq(&hpet_lock);	if (devp->hd_flags & HPET_IE) {		spin_unlock_irq(&hpet_lock);		return -EBUSY;	}	devp->hd_flags |= HPET_IE;	spin_unlock_irq(&hpet_lock);	t = readq(&timer->hpet_config);	irq = devp->hd_hdwirq;	if (irq) {		sprintf(devp->hd_name, "hpet%d", (int)(devp - hpetp->hp_dev));		if (request_irq		    (irq, hpet_interrupt, SA_INTERRUPT, devp->hd_name, (void *)devp)) {			printk(KERN_ERR "hpet: IRQ %d is not free\n", irq);			irq = 0;		}	}	if (irq == 0) {		spin_lock_irq(&hpet_lock);		devp->hd_flags ^= HPET_IE;		spin_unlock_irq(&hpet_lock);		return -EIO;	}	devp->hd_irq = irq;	t = devp->hd_ireqfreq;	v = readq(&timer->hpet_config);	g = v | Tn_INT_ENB_CNF_MASK;	if (devp->hd_flags & HPET_PERIODIC) {		write_counter(t, &timer->hpet_compare);		g |= Tn_TYPE_CNF_MASK;		v |= Tn_TYPE_CNF_MASK;		writeq(v, &timer->hpet_config);		v |= Tn_VAL_SET_CNF_MASK;		writeq(v, &timer->hpet_config);		local_irq_save(flags);		m = read_counter(&hpet->hpet_mc);		write_counter(t + m + hpetp->hp_delta, &timer->hpet_compare);	} else {		local_irq_save(flags);		m = read_counter(&hpet->hpet_mc);		write_counter(t + m + hpetp->hp_delta, &timer->hpet_compare);	}	isr = (1 << (devp - hpets->hp_dev));	writeq(isr, &hpet->hpet_isr);	writeq(g, &timer->hpet_config);	local_irq_restore(flags);	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/3f992e1bb7eab7b7af2b9ea46d2b80b1fed84845/hpet.c/clean/drivers/char/hpet.c