Lines Matching +full:width +full:- +full:mm
1 // SPDX-License-Identifier: GPL-2.0-or-later
23 /* Reg offset to specify Address for MM assisted accesses */
25 /* Reg offset to specify Command for MM assisted accesses */
27 /* Reg offset to MM SPARE 0 used specify Address[7:0] */
29 /* Reg offset to MM SPARE 3 used specify Data Byte 0 */
37 /* Time delay between checking MM status of EEPROM write (microseconds) */
46 #define ARIES_MAIN_MICRO_FW_INFO (96 * 1024 - 128)
72 bool mm_wide_reg_access; /* MM assisted wide register access */
83 struct i2c_client *client = data->client; in pt5161l_write_block_data()
94 remain_len -= 4; in pt5161l_write_block_data()
100 buf[0] = config | (curr_len - 1) << 1 | ((address >> 16) & 0x1); in pt5161l_write_block_data()
123 struct i2c_client *client = data->client; in pt5161l_read_block_data()
134 remain_len -= 16; in pt5161l_read_block_data()
140 wbuf[0] = config | (curr_len - 1) << 1 | in pt5161l_read_block_data()
168 u8 width, u8 *val) in pt5161l_read_wide_reg() argument
179 if (data->mm_wide_reg_access) { in pt5161l_read_wide_reg()
189 /* Set command based on width */ in pt5161l_read_wide_reg()
190 switch (width) { in pt5161l_read_wide_reg()
204 return -EINVAL; in pt5161l_read_wide_reg()
226 return -ETIMEDOUT; in pt5161l_read_wide_reg()
230 width, val); in pt5161l_read_wide_reg()
234 return pt5161l_read_block_data(data, address, width, val); in pt5161l_read_wide_reg()
253 /* No multi-byte indirect support here. Hence read a byte at a time */ in pt5161l_read_block_data_main_micro_indirect()
254 eeprom_base = address - AL_MAIN_SRAM_DMEM_OFFSET; in pt5161l_read_block_data_main_micro_indirect()
280 return -ETIMEDOUT; in pt5161l_read_block_data_main_micro_indirect()
305 dev_dbg(&data->client->dev, in pt5161l_fw_load_check()
308 data->code_load_okay = false; in pt5161l_fw_load_check()
310 data->code_load_okay = true; in pt5161l_fw_load_check()
342 data->mm_heartbeat_okay = hb_changed; in pt5161l_heartbeat_check()
365 if (data->code_load_okay && data->mm_heartbeat_okay) { in pt5161l_fwsts_check()
385 data->fw_ver.major = major; in pt5161l_fwsts_check()
386 data->fw_ver.minor = minor; in pt5161l_fwsts_check()
387 data->fw_ver.build = build; in pt5161l_fwsts_check()
396 u32 curr_ver = data->fw_ver.major << 24 | data->fw_ver.minor << 16 | in pt5161l_fw_is_at_least()
397 data->fw_ver.build; in pt5161l_fw_is_at_least()
409 mutex_lock(&data->lock); in pt5161l_init_dev()
411 mutex_unlock(&data->lock); in pt5161l_init_dev()
417 data->mm_wide_reg_access = true; in pt5161l_init_dev()
419 data->init_done = true; in pt5161l_init_dev()
434 if (!data->init_done) { in pt5161l_read()
440 mutex_lock(&data->lock); in pt5161l_read()
444 mutex_unlock(&data->lock); in pt5161l_read()
453 return -EIO; in pt5161l_read()
457 ((adc_code - (ARIES_TEMP_CAL_CODE_DEFAULT + 250)) * in pt5161l_read()
458 -320); in pt5161l_read()
461 return -EOPNOTSUPP; in pt5161l_read()
499 struct pt5161l_data *data = file->private_data; in pt5161l_debugfs_read_fw_ver()
503 mutex_lock(&data->lock); in pt5161l_debugfs_read_fw_ver()
505 mutex_unlock(&data->lock); in pt5161l_debugfs_read_fw_ver()
509 ret = snprintf(ver, sizeof(ver), "%u.%u.%u\n", data->fw_ver.major, in pt5161l_debugfs_read_fw_ver()
510 data->fw_ver.minor, data->fw_ver.build); in pt5161l_debugfs_read_fw_ver()
524 struct pt5161l_data *data = file->private_data; in pt5161l_debugfs_read_fw_load_sts()
529 mutex_lock(&data->lock); in pt5161l_debugfs_read_fw_load_sts()
531 mutex_unlock(&data->lock); in pt5161l_debugfs_read_fw_load_sts()
533 status = data->code_load_okay; in pt5161l_debugfs_read_fw_load_sts()
549 struct pt5161l_data *data = file->private_data; in pt5161l_debugfs_read_hb_sts()
554 mutex_lock(&data->lock); in pt5161l_debugfs_read_hb_sts()
556 mutex_unlock(&data->lock); in pt5161l_debugfs_read_hb_sts()
558 status = data->mm_heartbeat_okay; in pt5161l_debugfs_read_hb_sts()
573 data->debugfs = debugfs_create_dir(dev_name(&data->client->dev), in pt5161l_init_debugfs()
576 debugfs_create_file("fw_ver", 0444, data->debugfs, data, in pt5161l_init_debugfs()
579 debugfs_create_file("fw_load_status", 0444, data->debugfs, data, in pt5161l_init_debugfs()
582 debugfs_create_file("heartbeat_status", 0444, data->debugfs, data, in pt5161l_init_debugfs()
590 struct device *dev = &client->dev; in pt5161l_probe()
596 return -ENOMEM; in pt5161l_probe()
598 data->client = client; in pt5161l_probe()
599 mutex_init(&data->lock); in pt5161l_probe()
603 hwmon_dev = devm_hwmon_device_register_with_info(dev, client->name, in pt5161l_probe()
617 debugfs_remove_recursive(data->debugfs); in pt5161l_remove()