/*
 * Copyright (c) 2020, Google LLC. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

#include <drivers/delay_timer.h>

#include <qti_plat.h>
#include <spmi_arb.h>

/*
 * 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);
}
