mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 01:32:21 +02:00
As is, the EMC drivers for each 32-bit platform contain almost identical duplicated code for aggregating rate requests. Move this code out to a shared tegra-emc-common file to reduce duplication, and add kerneldoc comments. Based on code from the tegra20-emc driver. Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com> Link: https://patch.msgid.link/20260501-memory-refactor-v3-1-69fb1ae1a7ca@nvidia.com Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
47 lines
1.2 KiB
C
47 lines
1.2 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
|
#ifndef TEGRA_EMC_COMMON_H
|
|
#define TEGRA_EMC_COMMON_H
|
|
|
|
#include <linux/device.h>
|
|
#include <linux/mutex.h>
|
|
|
|
/**
|
|
* enum tegra_emc_rate_request_type - source of rate request
|
|
* @TEGRA_EMC_RATE_DEVFREQ: rate requested by devfreq governor
|
|
* @TEGRA_EMC_RATE_DEBUG: rate requested through debugfs knobs
|
|
* @TEGRA_EMC_RATE_ICC: rate requested by ICC framework
|
|
* @TEGRA_EMC_RATE_TYPE_MAX: number of valid request types
|
|
*/
|
|
enum tegra_emc_rate_request_type {
|
|
TEGRA_EMC_RATE_DEVFREQ,
|
|
TEGRA_EMC_RATE_DEBUG,
|
|
TEGRA_EMC_RATE_ICC,
|
|
TEGRA_EMC_RATE_TYPE_MAX,
|
|
};
|
|
|
|
struct tegra_emc_rate_request {
|
|
unsigned long min_rate;
|
|
unsigned long max_rate;
|
|
};
|
|
|
|
struct tegra_emc_rate_requests {
|
|
struct tegra_emc_rate_request requested_rate[TEGRA_EMC_RATE_TYPE_MAX];
|
|
/* Protects @requested_rate. */
|
|
struct mutex rate_lock;
|
|
struct device *dev;
|
|
};
|
|
|
|
void tegra_emc_rate_requests_init(struct tegra_emc_rate_requests *reqs,
|
|
struct device *dev);
|
|
|
|
int tegra_emc_set_min_rate(struct tegra_emc_rate_requests *reqs,
|
|
unsigned long rate,
|
|
enum tegra_emc_rate_request_type type);
|
|
|
|
int tegra_emc_set_max_rate(struct tegra_emc_rate_requests *reqs,
|
|
unsigned long rate,
|
|
enum tegra_emc_rate_request_type type);
|
|
|
|
#endif /* TEGRA_EMC_COMMON_H */
|