Skip to content

Commit

Permalink
Revert "thermal: tmu: Remap TMU register"
Browse files Browse the repository at this point in the history
This reverts commit 4beab28.

Bug: 182456027
Bug: 186111063
Bug: 173050897
Test: boot
Signed-off-by: YiHo Cheng <[email protected]>
Change-Id: I1739937234f472d7799473f84489184ccc9b9c7b
  • Loading branch information
YiHo Cheng authored and weivincewang committed May 4, 2021
1 parent d3a5135 commit 2e19a0f
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 319 deletions.
71 changes: 62 additions & 9 deletions drivers/thermal/samsung/exynos_acpm_tmu.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@
#include <linux/debugfs.h>
#include <linux/sched/clock.h>
#include <soc/google/acpm_ipc_ctrl.h>
#include <trace/events/power.h>
#include "exynos_acpm_tmu.h"

static unsigned int acpm_tmu_ch_num, acpm_tmu_size;

static bool acpm_tmu_test_mode;
static bool acpm_tmu_log;
static bool acpm_tmu_ipc_blocked;

bool exynos_acpm_tmu_is_test_mode(void)
{
Expand All @@ -34,11 +34,6 @@ void exynos_acpm_tmu_set_test_mode(bool mode)
acpm_tmu_test_mode = mode;
}

void exynos_acpm_tmu_set_ipc_blocked(bool mode)
{
acpm_tmu_ipc_blocked = mode;
}

void exynos_acpm_tmu_log(bool mode)
{
acpm_tmu_log = mode;
Expand Down Expand Up @@ -66,9 +61,6 @@ static void exynos_acpm_tmu_ipc_send_data(union tmu_ipc_message *message)
int ret;
unsigned long long before, after, latency;

if (acpm_tmu_ipc_blocked)
return;

config.cmd = message->data;
config.response = true;

Expand Down Expand Up @@ -105,6 +97,49 @@ int exynos_acpm_tmu_set_init(struct acpm_tmu_cap *cap)
return 0;
}

/*
* TMU_IPC_READ_TEMP
*
* - tz: thermal zone index registered in device tree
*/
int exynos_acpm_tmu_set_read_temp(int tz, int *temp, int *stat)
{
union tmu_ipc_message message;

if (acpm_tmu_test_mode)
return -1;

memset(&message, 0, sizeof(message));

message.req.type = TMU_IPC_READ_TEMP;
message.req.tzid = tz;

exynos_acpm_tmu_ipc_send_data(&message);
if (acpm_tmu_log) {
int i;
u8 *temp = &message.resp.rsvd0;
pr_info_ratelimited("[acpm_tmu] tz %d temp 0:%d 1:%d 2:%d 3:%d 4:%d 5:%d 6:%d\n",
tz,
message.resp.rsvd0,
message.resp.rsvd1,
message.resp.rsvd2,
message.resp.rsvd3,
message.resp.rsvd4,
message.resp.rsvd5,
message.resp.rsvd6);
for (i = 0; i < 7; i++) {
char name[40];

scnprintf(name, sizeof(name), "TMU%d_%d", tz, i);
trace_clock_set_rate(name, temp[i], raw_smp_processor_id());
}
}
*temp = message.resp.temp;
*stat = message.resp.stat;

return 0;
}

/*
* TMU_IPC_AP_SUSPEND
*/
Expand Down Expand Up @@ -288,6 +323,24 @@ void exynos_acpm_tmu_tz_control(int tz, bool enable)
}
}

void exynos_acpm_tmu_clear_tz_irq(int tz)
{
union tmu_ipc_message message;

memset(&message, 0, sizeof(message));
message.req.type = TMU_IPC_IRQ_CLEAR;
message.req.tzid = tz;

exynos_acpm_tmu_ipc_send_data(&message);
if (acpm_tmu_log) {
pr_info_ratelimited("[acpm_tmu] data 0:0x%08x 1:0x%08x 2:0x%08x 3:0x%08x\n",
message.data[0],
message.data[1],
message.data[2],
message.data[3]);
}
}

void exynos_acpm_tmu_set_emul_temp(int tz, unsigned char temp)
{
union tmu_ipc_message message;
Expand Down
3 changes: 2 additions & 1 deletion drivers/thermal/samsung/exynos_acpm_tmu.h
Original file line number Diff line number Diff line change
Expand Up @@ -111,19 +111,20 @@ struct acpm_tmu_cap {
};

int exynos_acpm_tmu_set_init(struct acpm_tmu_cap *cap);
int exynos_acpm_tmu_set_read_temp(int tz, int *temp, int *stat);
int exynos_acpm_tmu_set_suspend(int flag);
int exynos_acpm_tmu_set_cp_call(void);
int exynos_acpm_tmu_set_resume(void);
int exynos_acpm_tmu_ipc_dump(int no, unsigned int dump[]);
bool exynos_acpm_tmu_is_test_mode(void);
void exynos_acpm_tmu_set_test_mode(bool mode);
void exynos_acpm_tmu_set_ipc_blocked(bool mode);
void exynos_acpm_tmu_log(bool mode);

void exynos_acpm_tmu_set_threshold(int tz, unsigned char temp[]);
void exynos_acpm_tmu_set_hysteresis(int tz, unsigned char hyst[]);
void exynos_acpm_tmu_set_interrupt_enable(int tz, unsigned char inten);
void exynos_acpm_tmu_tz_control(int tz, bool enable);
void exynos_acpm_tmu_clear_tz_irq(int tz);
void exynos_acpm_tmu_set_emul_temp(int tz, unsigned char temp);

int exynos_acpm_tmu_init(void);
Expand Down
85 changes: 0 additions & 85 deletions drivers/thermal/samsung/gs101_tmu.h
Original file line number Diff line number Diff line change
Expand Up @@ -132,89 +132,4 @@ struct throttling_stats {
ktime_t *hardlimit_time_in_state;
};

#define TMU_TRIMINFO_CONFIG_REG 0
#define TMU_TRIMINFO_CONFIG_CALIB_SEL_MASK 1

#define TMU_TRIMINFO0 0x0010
#define TMU_TRIMINFO_REG(i) (TMU_TRIMINFO0 + 0x4 * (i))
#define TMU_TRIMINFO_85_SHIFT 9
#define TMU_TRIMINFO_25_85_MASK 0x1ff

#define TMU_CURRENT_TEMP_P1_P0 0x0084
#define TMU_CURRENT_TEMP_REG(i) (TMU_CURRENT_TEMP_P1_P0 + 0x4 * ((i) / 2))
#define TMU_CURRENT_TEMP_SHIFT(i) (((i) % 2) * 16)
#define TMU_CURRENT_TEMP_MASK 0x1ff

#define TMU_INTPEND_P0 0x00F8
#define TMU_INTPEND_REG(i) (TMU_INTPEND_P0 + 0x50 * (i))

#define TMU_1P_TRIM_TEMP_25 25
#define TMU_2P_TRIM_TEMP_85 85

#define TMU_UNKNOWN_TEMP 0
#define TMU_MAX_TEMP 125
#define TMU_MIN_TEMP 10
#define TMU_SENSOR_PROBE_NUM 16

enum tmu_zone_t {
TMU_TOP = 0,
TMU_SUB = 1,
TMU_END = 2,
};

enum tmu_sensor_t {
TMU_P0_SENSOR = 0,
TMU_P1_SENSOR = 1,
TMU_P2_SENSOR = 2,
TMU_P3_SENSOR = 3,
TMU_P4_SENSOR = 4,
TMU_P5_SENSOR = 5,
TMU_P6_SENSOR = 6,
TMU_P7_SENSOR = 7,
TMU_P8_SENSOR = 8,
TMU_P9_SENSOR = 9,
TMU_P10_SENSOR = 10,
TMU_P11_SENSOR = 11,
TMU_P12_SENSOR = 12,
TMU_P13_SENSOR = 13,
TMU_P14_SENSOR = 14,
TMU_P15_SENSOR = 15,
};

#define TMU_P0_SENSOR_MASK (1 << TMU_P0_SENSOR)
#define TMU_P1_SENSOR_MASK (1 << TMU_P1_SENSOR)
#define TMU_P2_SENSOR_MASK (1 << TMU_P2_SENSOR)
#define TMU_P3_SENSOR_MASK (1 << TMU_P3_SENSOR)
#define TMU_P4_SENSOR_MASK (1 << TMU_P4_SENSOR)
#define TMU_P5_SENSOR_MASK (1 << TMU_P5_SENSOR)
#define TMU_P6_SENSOR_MASK (1 << TMU_P6_SENSOR)
#define TMU_P7_SENSOR_MASK (1 << TMU_P7_SENSOR)
#define TMU_P8_SENSOR_MASK (1 << TMU_P8_SENSOR)
#define TMU_P9_SENSOR_MASK (1 << TMU_P9_SENSOR)
#define TMU_P10_SENSOR_MASK (1 << TMU_P10_SENSOR)
#define TMU_P11_SENSOR_MASK (1 << TMU_P11_SENSOR)
#define TMU_P12_SENSOR_MASK (1 << TMU_P12_SENSOR)
#define TMU_P13_SENSOR_MASK (1 << TMU_P13_SENSOR)
#define TMU_P14_SENSOR_MASK (1 << TMU_P14_SENSOR)
#define TMU_P15_SENSOR_MASK (1 << TMU_P15_SENSOR)

struct sensor_data {
enum tmu_sensor_t probe_id;
u16 trim_info_25;
u16 trim_info_85;
};

enum trim_type_t {
ONE_POINT_TRIMMING = 0,
TWO_POINT_TRIMMING = 1,
};

struct thermal_zone_data {
enum tmu_zone_t tmu_zone_id;
enum trim_type_t trim_type;
u16 sensors_mask;
struct sensor_data sensors[TMU_SENSOR_PROBE_NUM];
u16 sensor_cnt;
};

#endif /* _GS101_TMU_H */
Loading

0 comments on commit 2e19a0f

Please sign in to comment.