52 lines
1.4 KiB
C
52 lines
1.4 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (c) 2020 MediaTek Inc.
|
|
*/
|
|
|
|
#ifndef __APU_POWER_H__
|
|
#define __APU_POWER_H__
|
|
#include "apu_devfreq.h"
|
|
#include "apu_gov.h"
|
|
|
|
#define KHZ (1000)
|
|
#define MHZ (1000*KHZ)
|
|
|
|
#define TOMHZ(x) (x / MHZ)
|
|
#define TOKHZ(x) (x / KHZ)
|
|
|
|
#define MV (1000)
|
|
#define TOMV(x) (x / MV)
|
|
|
|
/* round_khz, and input unit is hz */
|
|
static inline bool round_khz(unsigned long x, unsigned long y)
|
|
{
|
|
return (abs((x) - (y)) < KHZ);
|
|
}
|
|
|
|
/* round_Mhz, and input unit is hz */
|
|
static inline bool round_Mhz(unsigned long x, unsigned long y)
|
|
{
|
|
return (abs((x) - (y)) < MHZ);
|
|
}
|
|
|
|
static inline const char *apu_dev_name(struct device *dev)
|
|
{
|
|
return ((struct apu_dev *)dev_get_drvdata(dev))->name;
|
|
}
|
|
|
|
const char *apu_dev_string(enum DVFS_USER user);
|
|
enum DVFS_USER apu_dev_user(const char *name);
|
|
struct apu_dev *apu_find_device(enum DVFS_USER user);
|
|
int apu_add_devfreq(struct apu_dev *ad);
|
|
int apu_del_devfreq(struct apu_dev *ad);
|
|
int apu_boost2opp(struct apu_dev *ad, int boost);
|
|
int apu_boost2freq(struct apu_dev *ad, int boost);
|
|
int apu_opp2freq(struct apu_dev *ad, int opp);
|
|
int apu_opp2boost(struct apu_dev *ad, int opp);
|
|
int apu_freq2opp(struct apu_dev *ad, unsigned long freq);
|
|
int apu_freq2boost(struct apu_dev *ad, unsigned long freq);
|
|
int apu_volt2opp(struct apu_dev *ad, int volt);
|
|
int apu_volt2boost(struct apu_dev *ad, int volt);
|
|
int apu_get_recommend_freq_volt(struct device *dev, unsigned long *freq,
|
|
unsigned long *volt, int flag);
|
|
#endif
|