1
0
This repository has been archived on 2025-07-31. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
orange_kernel/drivers/thermal/x1-thermal.h
2025-03-18 10:29:27 +08:00

78 lines
1.7 KiB
C

#ifndef __X1_THERMAL_H__
#define __X1_THERMAL_H__
#define BITS(_start, _end) ((BIT(_end) - BIT(_start)) + BIT(_end))
#define MAX_SENSOR_NUMBER 5
#define TEMPERATURE_OFFSET 278
#define REG_TSEN_INT_MASK 0x14
#define TSEN_EMERGENT_INT_OFFSET 23
#define REG_EMERGENT_REBOOT_TEMP_THR 0x68
#define REG_EMERGENT_REBOOT_TEMP_THR_MSK 0xffff
#define REG_TSEN_TIME_CTRL 0x0C
#define BITS_TIME_CTRL_MASK BITS(0, 23)
#define VALUE_FILTER_PERIOD (0x3000 << 8)
#define BITS_RST_ADC_CNT BITS(4, 7)
#define VALUE_WAIT_REF_CNT (0xf << 0)
#define BIT_TSEN_RAW_SEL BIT(7)
#define BIT_TEMP_MODE BIT(3)
#define BIT_EN_SENSOR BIT(0)
#define BITS_TSEN_SW_CTRL BITS(18, 21)
#define BITS_CTUNE BITS(8, 11)
#define REG_TSEN_PCTRL 0x00
#define REG_TSEN_PCTRL2 0x04
#define BITS_SDM_CLK_SEL BITS(14, 15)
#define BITS_SDM_CLK_SEL_24M (0 << 14)
#define TSEN_INT_MASK BIT(0)
#define BIT_HW_AUTO_MODE BIT(23)
struct sensor_enable {
unsigned int bjt_en;
unsigned int offset;
unsigned int bit_msk;
unsigned int en_val;
};
struct sensor_data {
unsigned int data_reg;
unsigned int offset;
unsigned int bit_msk;
};
struct sensor_thrsh {
unsigned int temp_thrsh;
unsigned int low_offset;
unsigned int high_offset;
};
struct x1_thermal_sensor_desc {
void __iomem *base;
unsigned int int_msk;
unsigned int int_clr;
unsigned int int_sta;
unsigned int offset;
unsigned int bit_msk;
struct sensor_enable se;
struct sensor_data sd;
struct sensor_thrsh sr;
struct thermal_zone_device *tzd;
};
struct x1_thermal_sensor {
int irq;
void __iomem *base;
struct clk *clk;
struct reset_control *resets;
struct device *dev;
/* sensor range */
unsigned int sr[2];
struct x1_thermal_sensor_desc *sdesc;
};
#endif