kbatt
struct kbatt *kbatt;
kbatt = devm_kzalloc(dev, sizeof(*kbatt), GFP_KERNEL);
if (!kbatt)
retval = devm_mutex_init(dev, &kbatt->lock);
kbatt->base = devm_ioremap_resource(dev, &kbatt_auxdev->io);
if (IS_ERR(kbatt->base))
return PTR_ERR(kbatt->base);
hwmon_dev = devm_hwmon_device_register_with_info(dev, KBATT, kbatt,
static bool kbatt_alarm(struct kbatt *kbatt)
mutex_lock(&kbatt->lock);
if (!kbatt->next_update || time_after(jiffies, kbatt->next_update)) {
kbatt->base + KBATT_CONTROL_REG);
if (ioread8(kbatt->base + KBATT_STATUS_REG) &
kbatt->alarm = false;
kbatt->alarm = true;
iowrite8(0, kbatt->base + KBATT_CONTROL_REG);
kbatt->next_update = jiffies + KBATT_MAX_UPD_INTERVAL;
mutex_unlock(&kbatt->lock);
return kbatt->alarm;
struct kbatt *kbatt = dev_get_drvdata(dev);
*val = kbatt_alarm(kbatt) ? 1 : 0;