/* SPDX-License-Identifier: GPL-2.0-only */


#ifndef _LINUX_REGULATOR_RPM_SMD_H
#define _LINUX_REGULATOR_RPM_SMD_H

#include <linux/device.h>

struct rpm_regulator;


enum rpm_regulator_voltage_corner {
	RPM_REGULATOR_CORNER_NONE = 1,
	RPM_REGULATOR_CORNER_RETENTION,
	RPM_REGULATOR_CORNER_SVS_KRAIT,
	RPM_REGULATOR_CORNER_SVS_SOC,
	RPM_REGULATOR_CORNER_NORMAL,
	RPM_REGULATOR_CORNER_TURBO,
	RPM_REGULATOR_CORNER_SUPER_TURBO,
};


enum rpm_regulator_voltage_level {
	RPM_REGULATOR_LEVEL_NONE		= 0,
	RPM_REGULATOR_LEVEL_RETENTION		= 16,
	RPM_REGULATOR_LEVEL_RETENTION_PLUS	= 32,
	RPM_REGULATOR_LEVEL_MIN_SVS		= 48,
	RPM_REGULATOR_LEVEL_LOW_SVS		= 64,
	RPM_REGULATOR_LEVEL_SVS			= 128,
	RPM_REGULATOR_LEVEL_SVS_PLUS		= 192,
	RPM_REGULATOR_LEVEL_NOM			= 256,
	RPM_REGULATOR_LEVEL_NOM_PLUS		= 320,
	RPM_REGULATOR_LEVEL_TURBO		= 384,
	RPM_REGULATOR_LEVEL_TURBO_NO_CPR	= 416,
	RPM_REGULATOR_LEVEL_BINNING		= 512,
	RPM_REGULATOR_LEVEL_MAX			= 65535,
};


enum rpm_regulator_mode {
	RPM_REGULATOR_MODE_AUTO,
	RPM_REGULATOR_MODE_IPEAK,
	RPM_REGULATOR_MODE_HPM,
};

#ifdef CONFIG_DEBUG_FS

static void rpm_vreg_create_debugfs(struct rpm_regulator *reg);

#else

static inline void rpm_vreg_create_debugfs(struct rpm_regulator *reg)
{
}
#endif
#endif
