Lines Matching +full:short +full:- +full:circuits

1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * A driver for the Integrated Circuits ICS932S401
19 static const unsigned short normal_i2c[] = { 0x69, I2C_CLIENT_END };
122 mutex_lock(&data->lock); in ics932s401_update_device()
123 if (time_before(local_jiffies, data->sensors_last_updated + in ics932s401_update_device()
125 && data->sensors_valid) in ics932s401_update_device()
137 data->regs[regs_to_copy[i]] = temp >> 8; in ics932s401_update_device()
140 data->sensors_last_updated = local_jiffies; in ics932s401_update_device()
141 data->sensors_valid = 1; in ics932s401_update_device()
144 mutex_unlock(&data->lock); in ics932s401_update_device()
154 if (data->regs[ICS932S401_REG_CFG2] & ICS932S401_CFG1_SPREAD) in show_spread_enabled()
181 m = data->regs[ICS932S401_REG_CPU_M_CTRL] & ICS932S401_M_MASK; in calculate_cpu_freq()
182 n = data->regs[ICS932S401_REG_CPU_N_CTRL]; in calculate_cpu_freq()
185 n |= ((int)data->regs[ICS932S401_REG_CPU_M_CTRL] & 0x80) << 1; in calculate_cpu_freq()
186 n |= ((int)data->regs[ICS932S401_REG_CPU_M_CTRL] & 0x40) << 3; in calculate_cpu_freq()
189 freq /= divisors[data->regs[ICS932S401_REG_CPU_DIVISOR] >> in calculate_cpu_freq()
211 if (data->regs[ICS932S401_REG_CTRL] & ICS932S401_MN_ENABLED) in show_cpu_clock_sel()
215 int fid = data->regs[ICS932S401_REG_CFG7] & ICS932S401_FS_MASK; in show_cpu_clock_sel()
218 if (data->regs[ICS932S401_REG_CTRL] & ICS932S401_CPU_ALT) { in show_cpu_clock_sel()
238 m = data->regs[ICS932S401_REG_SRC_M_CTRL] & ICS932S401_M_MASK; in calculate_src_freq()
239 n = data->regs[ICS932S401_REG_SRC_N_CTRL]; in calculate_src_freq()
242 n |= ((int)data->regs[ICS932S401_REG_SRC_M_CTRL] & 0x80) << 1; in calculate_src_freq()
243 n |= ((int)data->regs[ICS932S401_REG_SRC_M_CTRL] & 0x40) << 3; in calculate_src_freq()
246 freq /= divisors[data->regs[ICS932S401_REG_PCISRC_DIVISOR] & in calculate_src_freq()
268 if (data->regs[ICS932S401_REG_CTRL] & ICS932S401_MN_ENABLED) in show_src_clock_sel()
272 if (data->regs[ICS932S401_REG_CTRL] & ICS932S401_CPU_ALT && in show_src_clock_sel()
273 data->regs[ICS932S401_REG_CTRL] & ICS932S401_SRC_ALT) in show_src_clock_sel()
286 m = data->regs[ICS932S401_REG_SRC_M_CTRL] & ICS932S401_M_MASK; in calculate_pci_freq()
287 n = data->regs[ICS932S401_REG_SRC_N_CTRL]; in calculate_pci_freq()
290 n |= ((int)data->regs[ICS932S401_REG_SRC_M_CTRL] & 0x80) << 1; in calculate_pci_freq()
291 n |= ((int)data->regs[ICS932S401_REG_SRC_M_CTRL] & 0x40) << 3; in calculate_pci_freq()
294 freq /= divisors[data->regs[ICS932S401_REG_PCISRC_DIVISOR] >> in calculate_pci_freq()
316 if (data->regs[ICS932S401_REG_CTRL] & ICS932S401_MN_ENABLED) in show_pci_clock_sel()
383 if (!(data->regs[ICS932S401_REG_CFG2] & ICS932S401_CFG1_SPREAD)) in show_spread()
393 val = data->regs[reg] | (data->regs[reg + 1] << 8); in show_spread()
396 /* Scale 0..2^14 to -0.5. */ in show_spread()
398 return sprintf(buf, "-0.%lu%%\n", val); in show_spread()
401 /* Return 0 if detection is successful, -ENODEV otherwise */
405 struct i2c_adapter *adapter = client->adapter; in ics932s401_detect()
409 return -ENODEV; in ics932s401_detect()
416 return -ENODEV; in ics932s401_detect()
421 return -ENODEV; in ics932s401_detect()
424 dev_info(&adapter->dev, "Unknown revision %d\n", revision); in ics932s401_detect()
426 strscpy(info->type, "ics932s401", I2C_NAME_SIZE); in ics932s401_detect()
438 err = -ENOMEM; in ics932s401_probe()
443 mutex_init(&data->lock); in ics932s401_probe()
445 dev_info(&client->dev, "%s chip found\n", client->name); in ics932s401_probe()
448 data->attrs.attrs = ics932s401_attr; in ics932s401_probe()
449 err = sysfs_create_group(&client->dev.kobj, &data->attrs); in ics932s401_probe()
465 sysfs_remove_group(&client->dev.kobj, &data->attrs); in ics932s401_remove()