/* * The Odroid Go Ultra has 2 PMICs: * - RK818 (manages the battery and USB-C power supply) * - RK817 * Both PMICs feeds power to the S922X SoC, so they must be powered-off in sequence. * Vendor does power-off the RK817 first, then the RK818 so here we follow this sequence.
*/
staticint odroid_go_ultra_poweroff_probe(struct platform_device *pdev)
{ struct odroid_go_ultra_poweroff_data *poweroff_data; int ret;
poweroff_data = devm_kzalloc(&pdev->dev, sizeof(*poweroff_data), GFP_KERNEL); if (!poweroff_data) return -ENOMEM;
dev_set_drvdata(&pdev->dev, poweroff_data);
/* RK818 PMIC Device */
ret = odroid_go_ultra_poweroff_get_pmic_device(&pdev->dev, "rockchip,rk818",
&poweroff_data->rk818); if (ret) return dev_err_probe(&pdev->dev, ret, "failed to get rk818 mfd data\n");
/* RK817 PMIC Device */
ret = odroid_go_ultra_poweroff_get_pmic_device(&pdev->dev, "rockchip,rk817",
&poweroff_data->rk817); if (ret) return dev_err_probe(&pdev->dev, ret, "failed to get rk817 mfd data\n");
/* Register as SYS_OFF_MODE_POWER_OFF_PREPARE because regmap_update_bits may sleep */
ret = devm_register_sys_off_handler(&pdev->dev,
SYS_OFF_MODE_POWER_OFF_PREPARE,
SYS_OFF_PRIO_DEFAULT,
odroid_go_ultra_poweroff_prepare,
poweroff_data); if (ret) return dev_err_probe(&pdev->dev, ret, "failed to register sys-off handler\n");
if (IS_ERR(pdev)) {
platform_driver_unregister(&odroid_go_ultra_poweroff_driver); return PTR_ERR(pdev);
}
return 0;
}
staticvoid __exit odroid_go_ultra_poweroff_exit(void)
{ /* Only delete when running on the Odroid Go Ultra device */ if (!of_device_is_compatible(of_root, "hardkernel,odroid-go-ultra")) return;
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.