/* * Copyright (c) 2020, Google LLC. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #include #include #include /* * This driver implements PON support for PM8998-compatible PMICs. This can * include other part numbers like PM6150. */ #define RESET_TYPE_WARM_RESET 1 #define RESET_TYPE_SHUTDOWN 4 #define S2_RESET_EN BIT(7) static void configure_ps_hold(uint32_t reset_type) { /* QTI recommends disabling reset for 10 cycles before reconfiguring. */ spmi_arb_write8(PON_PS_HOLD_RESET_CTL2, 0); mdelay(1); spmi_arb_write8(PON_PS_HOLD_RESET_CTL, reset_type); spmi_arb_write8(PON_PS_HOLD_RESET_CTL2, S2_RESET_EN); mdelay(1); } void qti_pmic_prepare_reset(void) { configure_ps_hold(RESET_TYPE_WARM_RESET); } void qti_pmic_prepare_shutdown(void) { configure_ps_hold(RESET_TYPE_SHUTDOWN); }