Lines Matching +full:pulse +full:- +full:code
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * Maxim MAX31785 PMBus 6-Channel Fan Controller
75 #define MAX31785_FAN_CONFIG_PULSE(pulse) (pulse << 4) argument
76 #define MAX31785_DEFAULT_FAN_CONFIG_1_2(pulse) \ argument
77 (MAX31785_FAN_CONFIG_ENABLE | MAX31785_FAN_CONFIG_PULSE(pulse))
88 * @code: The command code received
140 * |23-254 | Reserved |
172 switch (pmdev->code) { in max31785_read_byte()
175 if (pmdev->page <= MAX31785_MAX_FAN_PAGE) { in max31785_read_byte()
176 pmbus_send8(pmdev, pmdev->pages[pmdev->page].fan_config_1_2); in max31785_read_byte()
181 if (pmdev->page <= MAX31785_MAX_FAN_PAGE) { in max31785_read_byte()
182 pmbus_send16(pmdev, pmdev->pages[pmdev->page].fan_command_1); in max31785_read_byte()
187 if (pmdev->page <= MAX31785_MAX_FAN_PAGE) { in max31785_read_byte()
188 pmbus_send16(pmdev, pmdev->pages[pmdev->page].read_fan_speed_1); in max31785_read_byte()
193 if (pmdev->page <= MAX31785_MAX_FAN_PAGE) { in max31785_read_byte()
194 pmbus_send16(pmdev, pmdev->pages[pmdev->page].status_fans_1_2); in max31785_read_byte()
211 pmbus_send64(pmdev, s->mfr_location); in max31785_read_byte()
215 pmbus_send64(pmdev, s->mfr_date); in max31785_read_byte()
219 pmbus_send64(pmdev, s->mfr_serial); in max31785_read_byte()
223 pmbus_send16(pmdev, s->mfr_mode[pmdev->page]); in max31785_read_byte()
227 if ((pmdev->page >= MAX31785_MIN_ADC_VOLTAGE_PAGE) && in max31785_read_byte()
228 (pmdev->page <= MAX31785_MAX_ADC_VOLTAGE_PAGE)) { in max31785_read_byte()
229 pmbus_send16(pmdev, s->vout_peak[pmdev->page]); in max31785_read_byte()
234 if ((pmdev->page >= MAX31785_MIN_TEMP_PAGE) && in max31785_read_byte()
235 (pmdev->page <= MAX31785_MAX_TEMP_PAGE)) { in max31785_read_byte()
236 pmbus_send16(pmdev, s->temperature_peak[pmdev->page]); in max31785_read_byte()
241 if ((pmdev->page >= MAX31785_MIN_ADC_VOLTAGE_PAGE) && in max31785_read_byte()
242 (pmdev->page <= MAX31785_MAX_ADC_VOLTAGE_PAGE)) { in max31785_read_byte()
243 pmbus_send16(pmdev, s->vout_min[pmdev->page]); in max31785_read_byte()
248 pmbus_send8(pmdev, s->fault_response[pmdev->page]); in max31785_read_byte()
252 pmbus_send32(pmdev, s->time_count[pmdev->page]); in max31785_read_byte()
256 if ((pmdev->page >= MAX31785_MIN_TEMP_PAGE) && in max31785_read_byte()
257 (pmdev->page <= MAX31785_MAX_TEMP_PAGE)) { in max31785_read_byte()
258 pmbus_send16(pmdev, s->temp_sensor_config[pmdev->page]); in max31785_read_byte()
263 if (pmdev->page <= MAX31785_MAX_FAN_PAGE) { in max31785_read_byte()
264 pmbus_send16(pmdev, s->fan_config[pmdev->page]); in max31785_read_byte()
269 if (pmdev->page <= MAX31785_MAX_FAN_PAGE) { in max31785_read_byte()
270 pmbus_send16(pmdev, s->read_fan_pwm[pmdev->page]); in max31785_read_byte()
275 if (pmdev->page <= MAX31785_MAX_FAN_PAGE) { in max31785_read_byte()
276 pmbus_send16(pmdev, s->fan_fault_limit[pmdev->page]); in max31785_read_byte()
281 if (pmdev->page <= MAX31785_MAX_FAN_PAGE) { in max31785_read_byte()
282 pmbus_send16(pmdev, s->fan_warn_limit[pmdev->page]); in max31785_read_byte()
287 if (pmdev->page <= MAX31785_MAX_FAN_PAGE) { in max31785_read_byte()
288 pmbus_send16(pmdev, s->fan_run_time[pmdev->page]); in max31785_read_byte()
293 if (pmdev->page <= MAX31785_MAX_FAN_PAGE) { in max31785_read_byte()
294 pmbus_send16(pmdev, s->fan_pwm_avg[pmdev->page]); in max31785_read_byte()
299 if (pmdev->page <= MAX31785_MAX_FAN_PAGE) { in max31785_read_byte()
300 pmbus_send64(pmdev, s->fan_pwm2rpm[pmdev->page]); in max31785_read_byte()
307 __func__, pmdev->code); in max31785_read_byte()
320 return -1; in max31785_write_data()
323 pmdev->code = buf[0]; /* PMBus command code */ in max31785_write_data()
329 /* Exclude command code from buffer */ in max31785_write_data()
331 len--; in max31785_write_data()
333 switch (pmdev->code) { in max31785_write_data()
336 if (pmdev->page <= MAX31785_MAX_FAN_PAGE) { in max31785_write_data()
337 pmdev->pages[pmdev->page].fan_config_1_2 = pmbus_receive8(pmdev); in max31785_write_data()
342 if (pmdev->page <= MAX31785_MAX_FAN_PAGE) { in max31785_write_data()
343 pmdev->pages[pmdev->page].fan_command_1 = pmbus_receive16(pmdev); in max31785_write_data()
344 pmdev->pages[pmdev->page].read_fan_speed_1 = in max31785_write_data()
346 pmdev->pages[pmdev->page].fan_command_1); in max31785_write_data()
351 s->mfr_location = pmbus_receive64(pmdev); in max31785_write_data()
355 s->mfr_date = pmbus_receive64(pmdev); in max31785_write_data()
359 s->mfr_serial = pmbus_receive64(pmdev); in max31785_write_data()
363 s->mfr_mode[pmdev->page] = pmbus_receive16(pmdev); in max31785_write_data()
367 if ((pmdev->page >= MAX31785_MIN_ADC_VOLTAGE_PAGE) && in max31785_write_data()
368 (pmdev->page <= MAX31785_MAX_ADC_VOLTAGE_PAGE)) { in max31785_write_data()
369 s->vout_peak[pmdev->page] = pmbus_receive16(pmdev); in max31785_write_data()
374 if ((pmdev->page >= 6) && (pmdev->page <= 16)) { in max31785_write_data()
375 s->temperature_peak[pmdev->page] = pmbus_receive16(pmdev); in max31785_write_data()
380 if ((pmdev->page >= MAX31785_MIN_ADC_VOLTAGE_PAGE) && in max31785_write_data()
381 (pmdev->page <= MAX31785_MAX_ADC_VOLTAGE_PAGE)) { in max31785_write_data()
382 s->vout_min[pmdev->page] = pmbus_receive16(pmdev); in max31785_write_data()
387 s->fault_response[pmdev->page] = pmbus_receive8(pmdev); in max31785_write_data()
391 s->time_count[pmdev->page] = pmbus_receive32(pmdev); in max31785_write_data()
395 if ((pmdev->page >= MAX31785_MIN_TEMP_PAGE) && in max31785_write_data()
396 (pmdev->page <= MAX31785_MAX_TEMP_PAGE)) { in max31785_write_data()
397 s->temp_sensor_config[pmdev->page] = pmbus_receive16(pmdev); in max31785_write_data()
402 if (pmdev->page <= MAX31785_MAX_FAN_PAGE) { in max31785_write_data()
403 s->fan_config[pmdev->page] = pmbus_receive16(pmdev); in max31785_write_data()
408 if (pmdev->page <= MAX31785_MAX_FAN_PAGE) { in max31785_write_data()
409 s->fan_fault_limit[pmdev->page] = pmbus_receive16(pmdev); in max31785_write_data()
414 if (pmdev->page <= MAX31785_MAX_FAN_PAGE) { in max31785_write_data()
415 s->fan_warn_limit[pmdev->page] = pmbus_receive16(pmdev); in max31785_write_data()
420 if (pmdev->page <= MAX31785_MAX_FAN_PAGE) { in max31785_write_data()
421 s->fan_run_time[pmdev->page] = pmbus_receive16(pmdev); in max31785_write_data()
426 if (pmdev->page <= MAX31785_MAX_FAN_PAGE) { in max31785_write_data()
427 s->fan_pwm_avg[pmdev->page] = pmbus_receive16(pmdev); in max31785_write_data()
432 if (pmdev->page <= MAX31785_MAX_FAN_PAGE) { in max31785_write_data()
433 s->fan_pwm2rpm[pmdev->page] = pmbus_receive64(pmdev); in max31785_write_data()
440 __func__, pmdev->code); in max31785_write_data()
452 pmdev->capability = MAX31785_DEFAULT_CAPABILITY; in max31785_exit_reset()
455 pmdev->pages[i].vout_mode = MAX31785_DEFAULT_VOUT_MODE; in max31785_exit_reset()
456 pmdev->pages[i].fan_command_1 = MAX31785_DEFAULT_FAN_COMMAND_1; in max31785_exit_reset()
457 pmdev->pages[i].revision = MAX31785_DEFAULT_PMBUS_REVISION; in max31785_exit_reset()
458 pmdev->pages[i].fan_config_1_2 = MAX31785_DEFAULT_FAN_CONFIG_1_2(0); in max31785_exit_reset()
459 pmdev->pages[i].read_fan_speed_1 = MAX31785_DEFAULT_FAN_SPEED; in max31785_exit_reset()
460 pmdev->pages[i].status_fans_1_2 = MAX31785_DEFAULT_FAN_STATUS; in max31785_exit_reset()
464 pmdev->pages[i].vout_mode = MAX31785_DEFAULT_VOUT_MODE; in max31785_exit_reset()
465 pmdev->pages[i].revision = MAX31785_DEFAULT_PMBUS_REVISION; in max31785_exit_reset()
466 pmdev->pages[i].ot_fault_limit = MAX31785_DEFAULT_OT_FAULT_LIMIT; in max31785_exit_reset()
467 pmdev->pages[i].ot_warn_limit = MAX31785_DEFAULT_OT_WARN_LIMIT; in max31785_exit_reset()
473 pmdev->pages[i].vout_mode = MAX31785_DEFAULT_VOUT_MODE; in max31785_exit_reset()
474 pmdev->pages[i].revision = MAX31785_DEFAULT_PMBUS_REVISION; in max31785_exit_reset()
475 pmdev->pages[i].vout_scale_monitor = in max31785_exit_reset()
477 pmdev->pages[i].vout_ov_fault_limit = MAX31785_DEFAULT_OV_FAULT_LIMIT; in max31785_exit_reset()
478 pmdev->pages[i].vout_ov_warn_limit = MAX31785_DEFAULT_OV_WARN_LIMIT; in max31785_exit_reset()
481 s->mfr_location = MAX31785_DEFAULT_TEXT; in max31785_exit_reset()
482 s->mfr_date = MAX31785_DEFAULT_TEXT; in max31785_exit_reset()
483 s->mfr_serial = MAX31785_DEFAULT_TEXT; in max31785_exit_reset()
552 dc->desc = "Maxim MAX31785 6-Channel Fan Controller"; in max31785_class_init()
553 dc->vmsd = &vmstate_max31785; in max31785_class_init()
554 k->write_data = max31785_write_data; in max31785_class_init()
555 k->receive_byte = max31785_read_byte; in max31785_class_init()
556 k->device_num_pages = MAX31785_TOTAL_NUM_PAGES; in max31785_class_init()
557 rc->phases.exit = max31785_exit_reset; in max31785_class_init()