2 * Copyright (C) 2017, Fuzhou Rockchip Electronics Co., Ltd
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms and conditions of the GNU General Public License,
6 * version 2, as published by the Free Software Foundation.
8 * This program is distributed in the hope it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 #ifndef __SOC_ROCKCHIP_SCPI_H
15 #define __SOC_ROCKCHIP_SCPI_H
17 #include <linux/rockchip/common.h>
19 #ifdef CONFIG_RK3368_SCPI_PROTOCOL
20 struct scpi_opp_entry {
26 struct scpi_opp_entry *opp;
27 u32 latency; /* in usecs */
31 unsigned long scpi_clk_get_val(u16 clk_id);
32 int scpi_clk_set_val(u16 clk_id, unsigned long rate);
33 int scpi_dvfs_get_idx(u8 domain);
34 int scpi_dvfs_set_idx(u8 domain, u8 idx);
35 struct scpi_opp *scpi_dvfs_get_opps(u8 domain);
36 int scpi_get_sensor(char *name);
37 int scpi_get_sensor_value(u16 sensor, u32 *val);
38 int scpi_sys_set_jtagmux_on_off(u32 en);
39 int scpi_sys_set_mcu_state_suspend(void);
40 int scpi_sys_set_mcu_state_resume(void);
42 int scpi_ddr_init(u32 dram_speed_bin, u32 freq, u32 lcdc_type,
44 int scpi_ddr_set_clk_rate(u32 rate, u32 lcdc_type);
45 int scpi_ddr_send_timing(u32 *p, u32 size);
46 int scpi_ddr_round_rate(u32 m_hz);
47 int scpi_ddr_set_auto_self_refresh(u32 en);
48 int scpi_ddr_bandwidth_get(struct ddr_bw_info *ddr_bw_ch0,
49 struct ddr_bw_info *ddr_bw_ch1);
50 int scpi_ddr_get_clk_rate(void);
51 int scpi_thermal_get_temperature(void);
52 int scpi_thermal_set_clk_cycle(u32 cycle);
54 static inline unsigned long scpi_clk_get_val(u16 clk_id)
59 static inline int scpi_clk_set_val(u16 clk_id, unsigned long rate)
64 static inline int scpi_dvfs_get_idx(u8 domain)
69 static inline int scpi_dvfs_set_idx(u8 domain, u8 idx)
74 static inline struct scpi_opp *scpi_dvfs_get_opps(u8 domain)
76 return ERR_PTR(-EPERM);
79 static inline int scpi_get_sensor(char *name)
84 static inline int scpi_get_sensor_value(u16 sensor, u32 *val)
89 static inline int scpi_sys_set_jtagmux_on_off(u32 en)
94 static inline int scpi_sys_set_mcu_state_suspend(void)
99 static inline int scpi_sys_set_mcu_state_resume(void)
104 static inline int scpi_ddr_init(u32 dram_speed_bin, u32 freq, u32 lcdc_type,
110 static inline int scpi_ddr_set_clk_rate(u32 rate, u32 lcdc_type)
115 static inline int scpi_ddr_send_timing(u32 *p, u32 size)
120 static inline int scpi_ddr_round_rate(u32 m_hz)
125 static inline int scpi_ddr_set_auto_self_refresh(u32 en)
130 static inline int scpi_ddr_bandwidth_get(struct ddr_bw_info *ddr_bw_ch0,
131 struct ddr_bw_info *ddr_bw_ch1)
136 static inline int scpi_ddr_get_clk_rate(void)
141 static inline int scpi_thermal_get_temperature(void)
146 static inline int scpi_thermal_set_clk_cycle(u32 cycle)