• Home
  • Raw
  • Download

Lines Matching +full:gpi +full:- +full:config

1 // SPDX-License-Identifier: GPL-2.0-or-later
35 /* GPIO CONFIG bits */
91 s64 delta = ktime_us_delta(ktime_get(), data->write_time); in ucd90320_wait()
94 udelay(UCD90320_WAIT_DELAY_US - delta); in ucd90320_wait()
104 return -ENXIO; in ucd90320_read_word_data()
128 data->write_time = ktime_get(); in ucd90320_write_word_data()
141 data->write_time = ktime_get(); in ucd90320_write_byte()
152 if (data->fan_data[fan][3] & 1) in ucd9000_get_fan_config()
156 fan_config |= (data->fan_data[fan][3] & 0x06) >> 1; in ucd9000_get_fan_config()
169 return -ENXIO; in ucd9000_read_byte_data()
183 return -ENXIO; in ucd9000_read_byte_data()
196 ret = -ENODATA; in ucd9000_read_byte_data()
281 dev_dbg(&client->dev, "failed to read GPIO %d config: %d\n", in ucd9000_gpio_set()
303 dev_dbg(&client->dev, "Failed to write GPIO %d config: %d\n", in ucd9000_gpio_set()
312 dev_dbg(&client->dev, "Failed to write GPIO %d config: %d\n", in ucd9000_gpio_set()
334 int ret, config, out_val; in ucd9000_gpio_set_direction() local
363 config = ret; in ucd9000_gpio_set_direction()
366 ret = i2c_smbus_write_byte_data(client, UCD9000_GPIO_CONFIG, config); in ucd9000_gpio_set_direction()
370 config &= ~UCD9000_GPIO_CONFIG_ENABLE; in ucd9000_gpio_set_direction()
372 return i2c_smbus_write_byte_data(client, UCD9000_GPIO_CONFIG, config); in ucd9000_gpio_set_direction()
394 switch (mid->driver_data) { in ucd9000_probe_gpio()
396 data->gpio.ngpio = UCD9090_NUM_GPIOS; in ucd9000_probe_gpio()
401 data->gpio.ngpio = UCD901XX_NUM_GPIOS; in ucd9000_probe_gpio()
404 data->gpio.ngpio = UCD90320_NUM_GPIOS; in ucd9000_probe_gpio()
407 data->gpio.ngpio = UCD90910_NUM_GPIOS; in ucd9000_probe_gpio()
418 data->gpio.label = client->name; in ucd9000_probe_gpio()
419 data->gpio.get_direction = ucd9000_gpio_get_direction; in ucd9000_probe_gpio()
420 data->gpio.direction_input = ucd9000_gpio_direction_input; in ucd9000_probe_gpio()
421 data->gpio.direction_output = ucd9000_gpio_direction_output; in ucd9000_probe_gpio()
422 data->gpio.get = ucd9000_gpio_get; in ucd9000_probe_gpio()
423 data->gpio.set = ucd9000_gpio_set; in ucd9000_probe_gpio()
424 data->gpio.can_sleep = true; in ucd9000_probe_gpio()
425 data->gpio.base = -1; in ucd9000_probe_gpio()
426 data->gpio.parent = &client->dev; in ucd9000_probe_gpio()
428 rc = devm_gpiochip_add_data(&client->dev, &data->gpio, client); in ucd9000_probe_gpio()
430 dev_warn(&client->dev, "Could not add gpiochip: %d\n", rc); in ucd9000_probe_gpio()
454 struct i2c_client *client = entry->client; in ucd9000_debugfs_show_mfr_status_bit()
463 * GPI fault bits are in sets of 8, two bytes from end of response. in ucd9000_debugfs_show_mfr_status_bit()
465 i = ret - 3 - entry->index / 8; in ucd9000_debugfs_show_mfr_status_bit()
467 *val = !!(buffer[i] & BIT(entry->index % 8)); in ucd9000_debugfs_show_mfr_status_bit()
478 struct i2c_client *client = file->private_data; in ucd9000_debugfs_read_mfr_status()
492 return simple_read_from_buffer(buf, count, ppos, str, res - str); in ucd9000_debugfs_read_mfr_status()
512 return -ENOENT; in ucd9000_init_debugfs()
514 data->debugfs = debugfs_create_dir(client->name, debugfs); in ucd9000_init_debugfs()
518 * UCD90320, and UCD90910 report GPI faults in their MFR_STATUS in ucd9000_init_debugfs()
519 * register, so only create the GPI fault debugfs attributes for those in ucd9000_init_debugfs()
522 if (mid->driver_data == ucd9090 || mid->driver_data == ucd90160 || in ucd9000_init_debugfs()
523 mid->driver_data == ucd90320 || mid->driver_data == ucd90910) { in ucd9000_init_debugfs()
524 gpi_count = mid->driver_data == ucd90320 ? UCD90320_GPI_COUNT in ucd9000_init_debugfs()
526 entries = devm_kcalloc(&client->dev, in ucd9000_init_debugfs()
530 return -ENOMEM; in ucd9000_init_debugfs()
536 "gpi%d_alarm", i + 1); in ucd9000_init_debugfs()
537 debugfs_create_file(name, 0444, data->debugfs, in ucd9000_init_debugfs()
544 debugfs_create_file(name, 0444, data->debugfs, client, in ucd9000_init_debugfs()
567 if (!i2c_check_functionality(client->adapter, in ucd9000_probe()
570 return -ENODEV; in ucd9000_probe()
575 dev_err(&client->dev, "Failed to read device ID\n"); in ucd9000_probe()
579 dev_info(&client->dev, "Device ID %s\n", block_buffer); in ucd9000_probe()
581 for (mid = ucd9000_id; mid->name[0]; mid++) { in ucd9000_probe()
582 if (!strncasecmp(mid->name, block_buffer, strlen(mid->name))) in ucd9000_probe()
585 if (!mid->name[0]) { in ucd9000_probe()
586 dev_err(&client->dev, "Unsupported device\n"); in ucd9000_probe()
587 return -ENODEV; in ucd9000_probe()
590 if (client->dev.of_node) in ucd9000_probe()
591 chip = (uintptr_t)of_device_get_match_data(&client->dev); in ucd9000_probe()
593 chip = mid->driver_data; in ucd9000_probe()
595 if (chip != ucd9000 && strcmp(client->name, mid->name) != 0) in ucd9000_probe()
596 dev_notice(&client->dev, in ucd9000_probe()
598 client->name, mid->name); in ucd9000_probe()
600 data = devm_kzalloc(&client->dev, sizeof(struct ucd9000_data), in ucd9000_probe()
603 return -ENOMEM; in ucd9000_probe()
604 info = &data->info; in ucd9000_probe()
608 dev_err(&client->dev, in ucd9000_probe()
612 info->pages = ret; in ucd9000_probe()
613 if (!info->pages) { in ucd9000_probe()
614 dev_err(&client->dev, "No pages configured\n"); in ucd9000_probe()
615 return -ENODEV; in ucd9000_probe()
619 info->func[0] = PMBUS_HAVE_TEMP; in ucd9000_probe()
625 dev_err(&client->dev, "Failed to read configuration data\n"); in ucd9000_probe()
626 return -ENODEV; in ucd9000_probe()
631 if (page >= info->pages) in ucd9000_probe()
637 info->func[page] |= PMBUS_HAVE_VOUT in ucd9000_probe()
641 info->func[page] |= PMBUS_HAVE_TEMP2 in ucd9000_probe()
645 info->func[page] |= PMBUS_HAVE_IOUT in ucd9000_probe()
654 if (mid->driver_data == ucd90124) { in ucd9000_probe()
660 data->fan_data[i]); in ucd9000_probe()
666 info->read_byte_data = ucd9000_read_byte_data; in ucd9000_probe()
667 info->func[0] |= PMBUS_HAVE_FAN12 | PMBUS_HAVE_STATUS_FAN12 in ucd9000_probe()
669 } else if (mid->driver_data == ucd90320) { in ucd9000_probe()
670 info->read_byte_data = ucd90320_read_byte_data; in ucd9000_probe()
671 info->read_word_data = ucd90320_read_word_data; in ucd9000_probe()
672 info->write_byte = ucd90320_write_byte; in ucd9000_probe()
673 info->write_word_data = ucd90320_write_word_data; in ucd9000_probe()
684 dev_warn(&client->dev, "Failed to register debugfs: %d\n", in ucd9000_probe()