struct da906x_chip_config { /* REGS */ int onkey_status; int onkey_pwr_signalling; int onkey_fault_log; int onkey_shutdown; /* MASKS */ int onkey_nonkey_mask; int onkey_nonkey_lock_mask; int onkey_key_reset_mask; int onkey_shutdown_mask; /* NAMES */ constchar *name;
};
/* Poll to see when the pin is released */
error = regmap_read(onkey->regmap,
config->onkey_status,
&val); if (error) {
dev_err(onkey->dev, "Failed to read ON status: %d\n", error); goto err_poll;
}
if (!(val & config->onkey_nonkey_mask)) {
error = regmap_update_bits(onkey->regmap,
config->onkey_pwr_signalling,
config->onkey_nonkey_lock_mask,
0); if (error) {
dev_err(onkey->dev, "Failed to reset the Key Delay %d\n", error); goto err_poll;
}
/* * If the fault log KEY_RESET is detected, then clear it * and shut down the system.
*/
error = regmap_read(onkey->regmap,
config->onkey_fault_log,
&fault_log); if (error) {
dev_warn(&onkey->input->dev, "Cannot read FAULT_LOG: %d\n", error);
} elseif (fault_log & config->onkey_key_reset_mask) {
error = regmap_write(onkey->regmap,
config->onkey_fault_log,
config->onkey_key_reset_mask); if (error) {
dev_warn(&onkey->input->dev, "Cannot reset KEY_RESET fault log: %d\n",
error);
} else { /* at this point we do any S/W housekeeping * and then send shutdown command
*/
dev_dbg(&onkey->input->dev, "Sending SHUTDOWN to PMIC ...\n");
error = regmap_write(onkey->regmap,
config->onkey_shutdown,
config->onkey_shutdown_mask); if (error)
dev_err(&onkey->input->dev, "Cannot SHUTDOWN PMIC: %d\n",
error);
}
}
err_poll: if (poll)
schedule_delayed_work(&onkey->work, msecs_to_jiffies(50));
}
error = dev_pm_set_wake_irq(&pdev->dev, irq); if (error)
dev_warn(&pdev->dev, "Failed to set IRQ %d as a wake IRQ: %d\n",
irq, error); else
device_init_wakeup(&pdev->dev, true);
error = input_register_device(onkey->input); if (error) return error;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.