|
@@ -72,6 +72,7 @@ static void gpio_status_delay_work_func(struct work_struct *work)
|
|
|
dev->last_status = value;
|
|
dev->last_status = value;
|
|
|
dev->status_changed = 1;
|
|
dev->status_changed = 1;
|
|
|
wake_up_interruptible(&dev->read_wait);
|
|
wake_up_interruptible(&dev->read_wait);
|
|
|
|
|
+ pr_info("%s %s %d value=%d\n", __FILE__, __func__, __LINE__, value);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// debug code
|
|
// debug code
|
|
@@ -142,9 +143,9 @@ static ssize_t cashd_read(struct file *filp, char __user *buf,
|
|
|
printk(KERN_INFO "gpio_monitor: wait interrupted by signal\n");
|
|
printk(KERN_INFO "gpio_monitor: wait interrupted by signal\n");
|
|
|
return -ERESTARTSYS;
|
|
return -ERESTARTSYS;
|
|
|
}
|
|
}
|
|
|
- dev->in_status = readl(dev->gpio_status_reg_base);
|
|
|
|
|
|
|
+ // dev->in_status = readl(dev->gpio_status_reg_base);
|
|
|
|
|
|
|
|
- if(dev->in_status & 0x2)
|
|
|
|
|
|
|
+ if(dev->last_status & 0x2)
|
|
|
{
|
|
{
|
|
|
ret = copy_to_user(buf, "o", 1);
|
|
ret = copy_to_user(buf, "o", 1);
|
|
|
if(ret != 0)
|
|
if(ret != 0)
|