linux/drivers/cpufreq/scmi-cpufreq.c

// SPDX-License-Identifier: GPL-2.0
/*
 * System Control and Power Interface (SCMI) based CPUFreq Interface driver
 *
 * Copyright (C) 2018-2021 ARM Ltd.
 * Sudeep Holla <[email protected]>
 */

#define pr_fmt(fmt)

#include <linux/clk-provider.h>
#include <linux/cpu.h>
#include <linux/cpufreq.h>
#include <linux/cpumask.h>
#include <linux/energy_model.h>
#include <linux/export.h>
#include <linux/module.h>
#include <linux/pm_opp.h>
#include <linux/slab.h>
#include <linux/scmi_protocol.h>
#include <linux/types.h>
#include <linux/units.h>

struct scmi_data {};

static struct scmi_protocol_handle *ph;
static const struct scmi_perf_proto_ops *perf_ops;
static struct cpufreq_driver scmi_cpufreq_driver;

static unsigned int scmi_cpufreq_get_rate(unsigned int cpu)
{}

/*
 * perf_ops->freq_set is not a synchronous, the actual OPP change will
 * happen asynchronously and can get notified if the events are
 * subscribed for by the SCMI firmware
 */
static int
scmi_cpufreq_set_target(struct cpufreq_policy *policy, unsigned int index)
{}

static unsigned int scmi_cpufreq_fast_switch(struct cpufreq_policy *policy,
					     unsigned int target_freq)
{}

static int scmi_cpu_domain_id(struct device *cpu_dev)
{}

static int
scmi_get_sharing_cpus(struct device *cpu_dev, int domain,
		      struct cpumask *cpumask)
{}

static int __maybe_unused
scmi_get_cpu_power(struct device *cpu_dev, unsigned long *power,
		   unsigned long *KHz)
{}

static int
scmi_get_rate_limit(u32 domain, bool has_fast_switch)
{}

static struct freq_attr *scmi_cpufreq_hw_attr[] =;

static int scmi_cpufreq_init(struct cpufreq_policy *policy)
{}

static void scmi_cpufreq_exit(struct cpufreq_policy *policy)
{}

static void scmi_cpufreq_register_em(struct cpufreq_policy *policy)
{}

static struct cpufreq_driver scmi_cpufreq_driver =;

static int scmi_cpufreq_probe(struct scmi_device *sdev)
{}

static void scmi_cpufreq_remove(struct scmi_device *sdev)
{}

static const struct scmi_device_id scmi_id_table[] =;
MODULE_DEVICE_TABLE(scmi, scmi_id_table);

static struct scmi_driver scmi_cpufreq_drv =;
module_scmi_driver();

MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();