1 /*
2  * Arm SCP/MCP Software
3  * Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 
8 #ifndef INTERNAL_THERMAL_SENSOR_H
9 #define INTERNAL_THERMAL_SENSOR_H
10 
11 #define THERMAL_BASE_ADDRESS 0x48190000
12 #define THERMAL_INDIVIDUAL_BASE_OFFSET 0x800
13 #define THERMAL_INDIVIDUAL_SENSOR_OFFSET 0x80
14 
15 /* base address of the thermal sensor */
16 #define THERMAL_SENSOR0_BASE_ADDRESS_OFFSET 0x800
17 #define THERMAL_SENSOR1_BASE_ADDRESS_OFFSET 0x880
18 #define THERMAL_SENSOR2_BASE_ADDRESS_OFFSET 0x900
19 #define THERMAL_SENSOR3_BASE_ADDRESS_OFFSET 0x980
20 #define THERMAL_SENSOR4_BASE_ADDRESS_OFFSET 0xA00
21 #define THERMAL_SENSOR5_BASE_ADDRESS_OFFSET 0xA80
22 #define THERMAL_SENSOR6_BASE_ADDRESS_OFFSET 0xB00
23 #define THERMAL_SENSOR7_BASE_ADDRESS_OFFSET 0xB80
24 #define THERMAL_SENSOR8_BASE_ADDRESS_OFFSET 0xC00
25 #define THERMAL_SENSOR9_BASE_ADDRESS_OFFSET 0xC80
26 #define THERMAL_SENSOR10_BASE_ADDRESS_OFFSET 0xD00
27 #define THERMAL_SENSOR11_BASE_ADDRESS_OFFSET 0xD80
28 #define THERMAL_SENSOR12_BASE_ADDRESS_OFFSET 0xE00
29 #define THERMAL_SENSOR13_BASE_ADDRESS_OFFSET 0xE80
30 #define THERMAL_SENSOR14_BASE_ADDRESS_OFFSET 0xF00
31 #define THERMAL_SENSOR15_BASE_ADDRESS_OFFSET 0xF80
32 
33 /* register offset */
34 #define THERMAL_MACROINFO_G_OFFSET 0x000
35 #define THERMAL_ALLCONFIG_OFFSET 0x00C
36 
37 #define THERMAL_TS_RESET_OFFSET 0x010
38 #define THERMAL_TS_EN_OFFSET 0x014
39 #define THERMAL_TS_CT_OFFSET 0x018
40 #define THERMAL_TS_ADJ_OFFSET 0x01C
41 
42 #define THERMAL_IRQOUT_OFFSET 0x020
43 #define THERMAL_IRQCLR_OFFSET 0x024
44 #define THERMAL_IRQMASK_OFFSET 0x028
45 #define THERMAL_IRQSTATUS_OFFSET 0x02C
46 
47 #define THERMAL_TSDATA_VALID_X_OFFSET 0x030
48 #define THERMAL_TSDATA_X_OFFSET 0x034
49 
50 #define THERMAL_HI_FULL_TEMP_OFFSET 0x040
51 #define THERMAL_HI_NEAR_TEMP_OFFSET 0x044
52 #define THERMAL_LO_NEAR_TEMP_OFFSET 0x048
53 #define THERMAL_LO_FULL_TEMP_OFFSET 0x04C
54 
55 #define THERMAL_HYS_TEMP_OFFSET 0x050
56 
57 #define THERMAL_ENABLE 0x1
58 #define THERMAL_DISABLE 0x0
59 
60 #define THERMAL_SUCCESS 0x0
61 #define THERMAL_FAIL 0x1
62 
63 #define THERMAL_SENSOR_BASE(a)                               \
64     (THERMAL_BASE_ADDRESS + THERMAL_INDIVIDUAL_BASE_OFFSET + \
65      (a * (THERMAL_INDIVIDUAL_SENSOR_OFFSET)))
66 
67 int thermal_enable(void);
68 
69 #endif /* INTERNAL_THERMAL_SENSOR_H */
70