Lines Matching refs:sl

61 static int w1_ds2438_get_page(struct w1_slave *sl, int pageno, u8 *buf)
69 if (w1_reset_select_slave(sl))
73 w1_write_block(sl->master, w1_buf, 2);
75 if (w1_reset_select_slave(sl))
79 w1_write_block(sl->master, w1_buf, 2);
81 count = w1_read_block(sl->master, buf, DS2438_PAGE_SIZE + 1);
93 static int w1_ds2438_get_temperature(struct w1_slave *sl, int16_t *temperature)
101 mutex_lock(&sl->master->bus_mutex);
104 if (w1_reset_select_slave(sl))
106 w1_write_8(sl->master, W1_DS2438_CONVERT_TEMP);
108 mutex_unlock(&sl->master->bus_mutex);
115 if (mutex_lock_interruptible(&sl->master->bus_mutex) != 0) {
123 if (w1_ds2438_get_page(sl, 0, w1_buf) == 0) {
129 mutex_unlock(&sl->master->bus_mutex);
135 static int w1_ds2438_change_config_bit(struct w1_slave *sl, u8 mask, u8 value)
143 if (w1_reset_select_slave(sl))
147 w1_write_block(sl->master, w1_buf, 2);
149 if (w1_reset_select_slave(sl))
153 w1_write_block(sl->master, w1_buf, 2);
156 status = w1_read_8(sl->master);
175 if (w1_reset_select_slave(sl))
180 w1_write_block(sl->master, w1_buf, 3);
182 if (w1_reset_select_slave(sl))
186 w1_write_block(sl->master, w1_buf, 2);
194 static int w1_ds2438_change_offset_register(struct w1_slave *sl, u8 *value)
200 if (w1_ds2438_get_page(sl, 1, w1_page1_buf) == 0) {
205 if (w1_reset_select_slave(sl))
209 w1_write_block(sl->master, w1_buf, 9);
211 if (w1_reset_select_slave(sl))
215 w1_write_block(sl->master, w1_buf, 2);
222 static int w1_ds2438_get_voltage(struct w1_slave *sl,
231 mutex_lock(&sl->master->bus_mutex);
233 if (w1_ds2438_change_config_bit(sl, DS2438_STATUS_AD, adc_input)) {
239 if (w1_reset_select_slave(sl))
241 w1_write_8(sl->master, W1_DS2438_CONVERT_VOLTAGE);
243 mutex_unlock(&sl->master->bus_mutex);
250 if (mutex_lock_interruptible(&sl->master->bus_mutex) != 0) {
258 if (w1_ds2438_get_page(sl, 0, w1_buf) == 0) {
265 mutex_unlock(&sl->master->bus_mutex);
271 static int w1_ds2438_get_current(struct w1_slave *sl, int16_t *voltage)
276 mutex_lock(&sl->master->bus_mutex);
278 if (w1_ds2438_get_page(sl, 0, w1_buf) == 0) {
285 mutex_unlock(&sl->master->bus_mutex);
294 struct w1_slave *sl = kobj_to_w1_slave(kobj);
300 mutex_lock(&sl->master->bus_mutex);
302 if (w1_ds2438_change_config_bit(sl, DS2438_STATUS_IAD, *buf & 0x01) == 0)
307 mutex_unlock(&sl->master->bus_mutex);
316 struct w1_slave *sl = kobj_to_w1_slave(kobj);
325 if (w1_ds2438_get_current(sl, &voltage) == 0)
337 struct w1_slave *sl = kobj_to_w1_slave(kobj);
346 mutex_lock(&sl->master->bus_mutex);
352 if (w1_ds2438_get_page(sl, 0, w1_buf) == 0) {
358 mutex_unlock(&sl->master->bus_mutex);
367 struct w1_slave *sl = kobj_to_w1_slave(kobj);
376 mutex_lock(&sl->master->bus_mutex);
382 if (w1_ds2438_get_page(sl, 1, w1_buf) == 0) {
388 mutex_unlock(&sl->master->bus_mutex);
397 struct w1_slave *sl = kobj_to_w1_slave(kobj);
400 mutex_lock(&sl->master->bus_mutex);
402 if (w1_ds2438_change_offset_register(sl, buf) == 0)
407 mutex_unlock(&sl->master->bus_mutex);
416 struct w1_slave *sl = kobj_to_w1_slave(kobj);
425 if (w1_ds2438_get_temperature(sl, &temp) == 0)
437 struct w1_slave *sl = kobj_to_w1_slave(kobj);
446 if (w1_ds2438_get_voltage(sl, DS2438_ADC_INPUT_VAD, &voltage) == 0)
458 struct w1_slave *sl = kobj_to_w1_slave(kobj);
467 if (w1_ds2438_get_voltage(sl, DS2438_ADC_INPUT_VDD, &voltage) == 0)