res = i2c_transfer(poweroff_restart_client->adapter, msgs, ARRAY_SIZE(msgs)); if (res < 0)
dev_warn(&poweroff_restart_client->dev, "Failed to power off (err = %d)\n", res);
ec = devm_kmalloc(&client->dev, sizeof(*ec), GFP_KERNEL); if (!ec) return -ENOMEM;
ec->dev = &client->dev;
ec->regmap = devm_regmap_init_i2c(client, ®map_config); if (IS_ERR(ec->regmap)) {
dev_err(ec->dev, "Failed to set up regmap for device\n"); return PTR_ERR(ec->regmap);
}
/* Determine the firmware version */
res = regmap_read(ec->regmap, NTXEC_REG_VERSION, &version); if (res < 0) {
dev_err(ec->dev, "Failed to read firmware version number\n"); return res;
}
/* Bail out if we encounter an unknown firmware version */ switch (version) { case NTXEC_VERSION_KOBO_AURA: case NTXEC_VERSION_TOLINO_VISION:
subdevs = ntxec_subdev;
n_subdevs = ARRAY_SIZE(ntxec_subdev); break; case NTXEC_VERSION_TOLINO_SHINE2:
subdevs = ntxec_subdev_pwm;
n_subdevs = ARRAY_SIZE(ntxec_subdev_pwm); /* Another regmap stacked on top of the other */
ec->regmap = devm_regmap_init(ec->dev, NULL,
ec->regmap,
®map_config_noack); if (IS_ERR(ec->regmap)) return PTR_ERR(ec->regmap); break; default:
dev_err(ec->dev, "Netronix embedded controller version %04x is not supported.\n",
version); return -ENODEV;
}
dev_info(ec->dev, "Netronix embedded controller version %04x detected.\n", version);
if (of_device_is_system_power_controller(ec->dev->of_node)) { /* *Setthe'powerkeep'bit.Thisisnecessaryonsomeboards *inordertokeepthesystemrunning.
*/
res = regmap_write(ec->regmap, NTXEC_REG_POWERKEEP,
NTXEC_POWERKEEP_VALUE); if (res < 0) return res;
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.