Lines Matching +full:int +full:- +full:map +full:- +full:mask
1 // SPDX-License-Identifier: GPL-2.0
59 static int suspend_8960(struct tsens_priv *priv) in suspend_8960()
61 int ret; in suspend_8960()
62 unsigned int mask; in suspend_8960() local
63 struct regmap *map = priv->tm_map; in suspend_8960() local
65 ret = regmap_read(map, THRESHOLD_ADDR, &priv->ctx.threshold); in suspend_8960()
69 ret = regmap_read(map, CNTL_ADDR, &priv->ctx.control); in suspend_8960()
73 if (priv->num_sensors > 1) in suspend_8960()
74 mask = SLP_CLK_ENA | EN; in suspend_8960()
76 mask = SLP_CLK_ENA_8660 | EN; in suspend_8960()
78 ret = regmap_update_bits(map, CNTL_ADDR, mask, 0); in suspend_8960()
85 static int resume_8960(struct tsens_priv *priv) in resume_8960()
87 int ret; in resume_8960()
88 struct regmap *map = priv->tm_map; in resume_8960() local
90 ret = regmap_update_bits(map, CNTL_ADDR, SW_RST, SW_RST); in resume_8960()
98 if (priv->num_sensors > 1) { in resume_8960()
99 ret = regmap_update_bits(map, CONFIG_ADDR, CONFIG_MASK, CONFIG); in resume_8960()
104 ret = regmap_write(map, THRESHOLD_ADDR, priv->ctx.threshold); in resume_8960()
108 ret = regmap_write(map, CNTL_ADDR, priv->ctx.control); in resume_8960()
115 static int enable_8960(struct tsens_priv *priv, int id) in enable_8960()
117 int ret; in enable_8960()
118 u32 reg, mask; in enable_8960() local
120 ret = regmap_read(priv->tm_map, CNTL_ADDR, ®); in enable_8960()
124 mask = BIT(id + SENSOR0_SHIFT); in enable_8960()
125 ret = regmap_write(priv->tm_map, CNTL_ADDR, reg | SW_RST); in enable_8960()
129 if (priv->num_sensors > 1) in enable_8960()
130 reg |= mask | SLP_CLK_ENA | EN; in enable_8960()
132 reg |= mask | SLP_CLK_ENA_8660 | EN; in enable_8960()
134 ret = regmap_write(priv->tm_map, CNTL_ADDR, reg); in enable_8960()
143 int ret; in disable_8960()
145 u32 mask; in disable_8960() local
147 mask = GENMASK(priv->num_sensors - 1, 0); in disable_8960()
148 mask <<= SENSOR0_SHIFT; in disable_8960()
149 mask |= EN; in disable_8960()
151 ret = regmap_read(priv->tm_map, CNTL_ADDR, ®_cntl); in disable_8960()
155 reg_cntl &= ~mask; in disable_8960()
157 if (priv->num_sensors > 1) in disable_8960()
162 regmap_write(priv->tm_map, CNTL_ADDR, reg_cntl); in disable_8960()
165 static int init_8960(struct tsens_priv *priv) in init_8960()
167 int ret, i; in init_8960()
170 priv->tm_map = dev_get_regmap(priv->dev, NULL); in init_8960()
171 if (!priv->tm_map) in init_8960()
172 return -ENODEV; in init_8960()
180 for (i = 0; i < priv->num_sensors; i++) { in init_8960()
182 priv->sensor[i].status = S0_STATUS_ADDR + 40; in init_8960()
183 priv->sensor[i].status += i * 4; in init_8960()
187 ret = regmap_update_bits(priv->tm_map, CNTL_ADDR, SW_RST, reg_cntl); in init_8960()
191 if (priv->num_sensors > 1) { in init_8960()
194 ret = regmap_update_bits(priv->tm_map, CONFIG_ADDR, in init_8960()
202 reg_cntl |= GENMASK(priv->num_sensors - 1, 0) << SENSOR0_SHIFT; in init_8960()
203 ret = regmap_write(priv->tm_map, CNTL_ADDR, reg_cntl); in init_8960()
208 ret = regmap_write(priv->tm_map, CNTL_ADDR, reg_cntl); in init_8960()
215 static int calibrate_8960(struct tsens_priv *priv) in calibrate_8960()
217 int i; in calibrate_8960()
220 ssize_t num_read = priv->num_sensors; in calibrate_8960()
221 struct tsens_sensor *s = priv->sensor; in calibrate_8960()
223 data = qfprom_read(priv->dev, "calib"); in calibrate_8960()
225 data = qfprom_read(priv->dev, "calib_backup"); in calibrate_8960()
230 s->offset = data[i]; in calibrate_8960()
237 /* Temperature on y axis and ADC-code on x-axis */
238 static inline int code_to_mdegC(u32 adc_code, const struct tsens_sensor *s) in code_to_mdegC()
240 int slope, offset; in code_to_mdegC()
242 slope = thermal_zone_get_slope(s->tzd); in code_to_mdegC()
243 offset = CAL_MDEGC - slope * s->offset; in code_to_mdegC()
248 static int get_temp_8960(const struct tsens_sensor *s, int *temp) in get_temp_8960()
250 int ret; in get_temp_8960()
252 struct tsens_priv *priv = s->priv; in get_temp_8960()
257 ret = regmap_read(priv->tm_map, INT_STATUS_ADDR, &trdy); in get_temp_8960()
262 ret = regmap_read(priv->tm_map, s->status, &code); in get_temp_8960()
269 return -ETIMEDOUT; in get_temp_8960()