linux/drivers/soc/samsung/exynos5422-asv.c

// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (c) 2019 Samsung Electronics Co., Ltd.
 *	      http://www.samsung.com/
 *
 * Samsung Exynos 5422 SoC Adaptive Supply Voltage support
 */

#include <linux/bitrev.h>
#include <linux/errno.h>
#include <linux/regmap.h>
#include <linux/soc/samsung/exynos-chipid.h>
#include <linux/slab.h>

#include "exynos-asv.h"
#include "exynos5422-asv.h"

#define ASV_GROUPS_NUM
#define ASV_ARM_DVFS_NUM
#define ASV_ARM_BIN2_DVFS_NUM
#define ASV_KFC_DVFS_NUM
#define ASV_KFC_BIN2_DVFS_NUM

/*
 * This array is a set of 4 ASV data tables, first column of each ASV table
 * contains frequency value in MHz and subsequent columns contain the CPU
 * cluster's supply voltage values in uV.
 * In order to create a set of OPPs for specific SoC revision one of the voltage
 * columns (1...14) from one of the tables (0...3) is selected during
 * initialization. There are separate ASV tables for the big (ARM) and little
 * (KFC) CPU cluster. Only OPPs which are already defined in devicetree
 * will be updated.
 */

static const u32 asv_arm_table[][ASV_ARM_DVFS_NUM][ASV_GROUPS_NUM + 1] =;

static const u32 asv_kfc_table[][ASV_KFC_DVFS_NUM][ASV_GROUPS_NUM + 1] =;

static const struct asv_limit_entry __asv_limits[ASV_GROUPS_NUM] =;

static int exynos5422_asv_get_group(struct exynos_asv *asv)
{}

static int __asv_offset_voltage(unsigned int index)
{}

static void exynos5422_asv_offset_voltage_setup(struct exynos_asv *asv)
{}

static int exynos5422_asv_opp_get_voltage(const struct exynos_asv_subsys *subsys,
					  int level, unsigned int volt)
{}

static unsigned int exynos5422_asv_parse_table(unsigned int pkg_id)
{}

static bool exynos5422_asv_parse_bin2(unsigned int pkg_id)
{}

static bool exynos5422_asv_parse_sg(unsigned int pkg_id)
{}

int exynos5422_asv_init(struct exynos_asv *asv)
{}
EXPORT_SYMBOL_GPL();