/* * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2023 Ventana Micro Systems Inc. * */ #ifndef __SBI_CPPC_H__ #define __SBI_CPPC_H__ #include /** CPPC device */ struct sbi_cppc_device { /** Name of the CPPC device */ char name[32]; /** probe - returns register width if implemented, 0 otherwise */ int (*cppc_probe)(unsigned long reg); /** read the cppc register*/ int (*cppc_read)(unsigned long reg, uint64_t *val); /** write to the cppc register*/ int (*cppc_write)(unsigned long reg, uint64_t val); }; int sbi_cppc_probe(unsigned long reg); int sbi_cppc_read(unsigned long reg, uint64_t *val); int sbi_cppc_write(unsigned long reg, uint64_t val); const struct sbi_cppc_device *sbi_cppc_get_device(void); void sbi_cppc_set_device(const struct sbi_cppc_device *dev); #endif