0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 #include "ti-thermal.h"
0022 #include "ti-bandgap.h"
0023
0024
0025
0026
0027
0028 static struct temp_sensor_registers
0029 omap34xx_mpu_temp_sensor_registers = {
0030 .temp_sensor_ctrl = 0,
0031 .bgap_soc_mask = BIT(8),
0032 .bgap_eocz_mask = BIT(7),
0033 .bgap_dtemp_mask = 0x7f,
0034
0035 .bgap_mode_ctrl = 0,
0036 .mode_ctrl_mask = BIT(9),
0037 };
0038
0039
0040 static struct temp_sensor_data omap34xx_mpu_temp_sensor_data = {
0041 .min_freq = 32768,
0042 .max_freq = 32768,
0043 };
0044
0045
0046
0047
0048 static const int
0049 omap34xx_adc_to_temp[128] = {
0050 -40000, -40000, -40000, -40000, -40000, -39000, -38000, -36000,
0051 -34000, -32000, -31000, -29000, -28000, -26000, -25000, -24000,
0052 -22000, -21000, -19000, -18000, -17000, -15000, -14000, -12000,
0053 -11000, -9000, -8000, -7000, -5000, -4000, -2000, -1000, 0000,
0054 1000, 3000, 4000, 5000, 7000, 8000, 10000, 11000, 13000, 14000,
0055 15000, 17000, 18000, 20000, 21000, 22000, 24000, 25000, 27000,
0056 28000, 30000, 31000, 32000, 34000, 35000, 37000, 38000, 39000,
0057 41000, 42000, 44000, 45000, 47000, 48000, 49000, 51000, 52000,
0058 53000, 55000, 56000, 58000, 59000, 60000, 62000, 63000, 65000,
0059 66000, 67000, 69000, 70000, 72000, 73000, 74000, 76000, 77000,
0060 79000, 80000, 81000, 83000, 84000, 85000, 87000, 88000, 89000,
0061 91000, 92000, 94000, 95000, 96000, 98000, 99000, 100000,
0062 102000, 103000, 105000, 106000, 107000, 109000, 110000, 111000,
0063 113000, 114000, 116000, 117000, 118000, 120000, 121000, 122000,
0064 124000, 124000, 125000, 125000, 125000, 125000, 125000
0065 };
0066
0067
0068 const struct ti_bandgap_data omap34xx_data = {
0069 .features = TI_BANDGAP_FEATURE_CLK_CTRL | TI_BANDGAP_FEATURE_UNRELIABLE,
0070 .fclock_name = "ts_fck",
0071 .div_ck_name = "ts_fck",
0072 .conv_table = omap34xx_adc_to_temp,
0073 .adc_start_val = 0,
0074 .adc_end_val = 127,
0075 .expose_sensor = ti_thermal_expose_sensor,
0076 .remove_sensor = ti_thermal_remove_sensor,
0077
0078 .sensors = {
0079 {
0080 .registers = &omap34xx_mpu_temp_sensor_registers,
0081 .ts_data = &omap34xx_mpu_temp_sensor_data,
0082 .domain = "cpu",
0083 .slope_pcb = 0,
0084 .constant_pcb = 20000,
0085 .register_cooling = NULL,
0086 .unregister_cooling = NULL,
0087 },
0088 },
0089 .sensor_count = 1,
0090 };
0091
0092
0093
0094
0095
0096 static struct temp_sensor_registers
0097 omap36xx_mpu_temp_sensor_registers = {
0098 .temp_sensor_ctrl = 0,
0099 .bgap_soc_mask = BIT(9),
0100 .bgap_eocz_mask = BIT(8),
0101 .bgap_dtemp_mask = 0xFF,
0102
0103 .bgap_mode_ctrl = 0,
0104 .mode_ctrl_mask = BIT(10),
0105 };
0106
0107
0108 static struct temp_sensor_data omap36xx_mpu_temp_sensor_data = {
0109 .min_freq = 32768,
0110 .max_freq = 32768,
0111 };
0112
0113
0114
0115
0116 static const int
0117 omap36xx_adc_to_temp[128] = {
0118 -40000, -40000, -40000, -40000, -40000, -40000, -40000, -40000,
0119 -40000, -40000, -40000, -40000, -40000, -38000, -35000, -34000,
0120 -32000, -30000, -28000, -26000, -24000, -22000, -20000, -18500,
0121 -17000, -15000, -13500, -12000, -10000, -8000, -6500, -5000, -3500,
0122 -1500, 0, 2000, 3500, 5000, 6500, 8500, 10000, 12000, 13500,
0123 15000, 17000, 19000, 21000, 23000, 25000, 27000, 28500, 30000,
0124 32000, 33500, 35000, 37000, 38500, 40000, 42000, 43500, 45000,
0125 47000, 48500, 50000, 52000, 53500, 55000, 57000, 58500, 60000,
0126 62000, 64000, 66000, 68000, 70000, 71500, 73500, 75000, 77000,
0127 78500, 80000, 82000, 83500, 85000, 87000, 88500, 90000, 92000,
0128 93500, 95000, 97000, 98500, 100000, 102000, 103500, 105000, 107000,
0129 109000, 111000, 113000, 115000, 117000, 118500, 120000, 122000,
0130 123500, 125000, 125000, 125000, 125000, 125000, 125000, 125000,
0131 125000, 125000, 125000, 125000, 125000, 125000, 125000, 125000,
0132 125000, 125000, 125000, 125000, 125000, 125000, 125000
0133 };
0134
0135
0136 const struct ti_bandgap_data omap36xx_data = {
0137 .features = TI_BANDGAP_FEATURE_CLK_CTRL | TI_BANDGAP_FEATURE_UNRELIABLE,
0138 .fclock_name = "ts_fck",
0139 .div_ck_name = "ts_fck",
0140 .conv_table = omap36xx_adc_to_temp,
0141 .adc_start_val = 0,
0142 .adc_end_val = 127,
0143 .expose_sensor = ti_thermal_expose_sensor,
0144 .remove_sensor = ti_thermal_remove_sensor,
0145
0146 .sensors = {
0147 {
0148 .registers = &omap36xx_mpu_temp_sensor_registers,
0149 .ts_data = &omap36xx_mpu_temp_sensor_data,
0150 .domain = "cpu",
0151 .slope_pcb = 0,
0152 .constant_pcb = 20000,
0153 .register_cooling = NULL,
0154 .unregister_cooling = NULL,
0155 },
0156 },
0157 .sensor_count = 1,
0158 };