diff options
author | Jon Medhurst <tixy@linaro.org> | 2015-05-15 15:25:34 +0100 |
---|---|---|
committer | Jon Medhurst <tixy@linaro.org> | 2015-05-15 15:25:34 +0100 |
commit | d48a114b7731434919d75a77b1444d1b7875d244 (patch) | |
tree | ff133d0657efa7fea122e4f6854614bba12d4b84 /include | |
parent | 0e1d45ab249bc0ee76e723baae36e8c651102eca (diff) | |
parent | a4eb38b4f1c65f84f8df78632c7e29763a176f91 (diff) |
Merge branch 'tracking-armlt-juno-cpufreq' into integration-linaro-vexpress64
Conflicts:
arch/arm64/boot/dts/arm/juno.dts
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/scpi_protocol.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/include/linux/scpi_protocol.h b/include/linux/scpi_protocol.h new file mode 100644 index 000000000000..a33fb2937230 --- /dev/null +++ b/include/linux/scpi_protocol.h @@ -0,0 +1,57 @@ +/* + * SCPI Message Protocol driver header + * + * Copyright (C) 2014 ARM Ltd. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see <http://www.gnu.org/licenses/>. + */ +#include <linux/types.h> + +struct scpi_opp { + u32 freq; + u32 m_volt; +} __packed; + +struct scpi_dvfs_info { + unsigned int count; + unsigned int latency; /* in nanoseconds */ + struct scpi_opp *opps; +}; + +/** + * struct scpi_ops - represents the various operations provided + * by SCP through SCPI message protocol + * @get_version: returns the major and minor revision on the SCPI + * message protocol + * @clk_get_range: gets clock range limit(min - max in Hz) + * @clk_get_val: gets clock value(in Hz) + * @clk_set_val: sets the clock value, setting to 0 will disable the + * clock (if supported) + * @dvfs_get_idx: gets the Operating Point of the given power domain. + * OPP is an index to the list return by @dvfs_get_info + * @dvfs_set_idx: sets the Operating Point of the given power domain. + * OPP is an index to the list return by @dvfs_get_info + * @dvfs_get_info: returns the DVFS capabilities of the given power + * domain. It includes the OPP list and the latency information + */ +struct scpi_ops { + u32 (*get_version)(void); + int (*clk_get_range)(u16, unsigned long *, unsigned long *); + unsigned long (*clk_get_val)(u16); + int (*clk_set_val)(u16, unsigned long); + int (*dvfs_get_idx)(u8); + int (*dvfs_set_idx)(u8, u8); + struct scpi_dvfs_info *(*dvfs_get_info)(u8); +}; + +struct scpi_ops *get_scpi_ops(void); |