Lines Matching refs:data
140 * For the Abit uGuru, we need to keep some data in memory.
146 struct mutex update_lock; /* protect access to data and uGuru */
633 static int abituguru3_wait_while_busy(struct abituguru3_data *data)
638 while ((x = inb_p(data->addr + ABIT_UGURU3_DATA)) &
654 static int abituguru3_wait_for_read(struct abituguru3_data *data)
659 while (!((x = inb_p(data->addr + ABIT_UGURU3_DATA)) &
678 static int abituguru3_synchronize(struct abituguru3_data *data)
682 x = abituguru3_wait_while_busy(data);
689 outb(0x20, data->addr + ABIT_UGURU3_DATA);
690 x = abituguru3_wait_while_busy(data);
697 outb(0x10, data->addr + ABIT_UGURU3_CMD);
698 x = abituguru3_wait_while_busy(data);
705 outb(0x00, data->addr + ABIT_UGURU3_CMD);
706 x = abituguru3_wait_while_busy(data);
713 x = abituguru3_wait_for_read(data);
720 while ((x = inb(data->addr + ABIT_UGURU3_CMD)) != 0xAC) {
737 static int abituguru3_read(struct abituguru3_data *data, u8 bank, u8 offset,
742 x = abituguru3_synchronize(data);
746 outb(0x1A, data->addr + ABIT_UGURU3_DATA);
747 x = abituguru3_wait_while_busy(data);
755 outb(bank, data->addr + ABIT_UGURU3_CMD);
756 x = abituguru3_wait_while_busy(data);
764 outb(offset, data->addr + ABIT_UGURU3_CMD);
765 x = abituguru3_wait_while_busy(data);
773 outb(count, data->addr + ABIT_UGURU3_CMD);
774 x = abituguru3_wait_while_busy(data);
783 x = abituguru3_wait_for_read(data);
790 buf[i] = inb(data->addr + ABIT_UGURU3_CMD);
799 static int abituguru3_read_increment_offset(struct abituguru3_data *data,
806 x = abituguru3_read(data, bank, offset + i, count,
820 * sensor_device_attribute_2->index: index into the data->sensors array
830 struct abituguru3_data *data = abituguru3_update_device(dev);
833 if (!data)
836 sensor = &data->sensors[attr->index];
840 value = data->settings[sensor->port][attr->nr];
842 value = data->value[sensor->port];
863 struct abituguru3_data *data = abituguru3_update_device(dev);
865 if (!data)
868 port = data->sensors[attr->index].port;
876 if ((data->alarms[port / 8] & (0x01 << (port % 8))) &&
877 (!attr->nr || (data->settings[port][0] & attr->nr)))
887 struct abituguru3_data *data = dev_get_drvdata(dev);
889 if (data->settings[data->sensors[attr->index].port][0] & attr->nr)
899 struct abituguru3_data *data = dev_get_drvdata(dev);
901 return sprintf(buf, "%s\n", data->sensors[attr->index].name);
962 struct abituguru3_data *data;
968 data = devm_kzalloc(&pdev->dev, sizeof(struct abituguru3_data),
970 if (!data)
973 data->addr = platform_get_resource(pdev, IORESOURCE_IO, 0)->start;
974 mutex_init(&data->update_lock);
975 platform_set_drvdata(pdev, data);
978 i = abituguru3_read(data, ABIT_UGURU3_MISC_BANK, ABIT_UGURU3_BOARD_ID,
997 data->sensors = abituguru3_motherboards[i].sensors;
1003 sysfs_filename = data->sysfs_names;
1005 for (i = 0; data->sensors[i].name; i++) {
1013 type = data->sensors[i].type;
1018 data->sysfs_attr[sysfs_attr_i] =
1020 data->sysfs_attr[sysfs_attr_i].dev_attr.attr.name =
1022 data->sysfs_attr[sysfs_attr_i].index = i;
1040 &data->sysfs_attr[i].dev_attr))
1047 data->hwmon_dev = hwmon_device_register(&pdev->dev);
1048 if (IS_ERR(data->hwmon_dev)) {
1049 res = PTR_ERR(data->hwmon_dev);
1056 for (i = 0; data->sysfs_attr[i].dev_attr.attr.name; i++)
1057 device_remove_file(&pdev->dev, &data->sysfs_attr[i].dev_attr);
1067 struct abituguru3_data *data = platform_get_drvdata(pdev);
1069 hwmon_device_unregister(data->hwmon_dev);
1070 for (i = 0; data->sysfs_attr[i].dev_attr.attr.name; i++)
1071 device_remove_file(&pdev->dev, &data->sysfs_attr[i].dev_attr);
1081 struct abituguru3_data *data = dev_get_drvdata(dev);
1083 mutex_lock(&data->update_lock);
1084 if (!data->valid || time_after(jiffies, data->last_updated + HZ)) {
1085 /* Clear data->valid while updating */
1086 data->valid = 0;
1088 if (abituguru3_read_increment_offset(data,
1091 1, data->alarms, 48/8) != (48/8))
1095 if (abituguru3_read(data, ABIT_UGURU3_SENSORS_BANK,
1097 1, &data->value[i]) != 1)
1099 if (abituguru3_read_increment_offset(data,
1103 data->settings[i], 3) != 3)
1108 if (abituguru3_read(data, ABIT_UGURU3_SENSORS_BANK,
1110 1, &data->value[32 + i]) != 1)
1112 if (abituguru3_read_increment_offset(data,
1116 data->settings[32 + i], 2) != 2)
1119 data->last_updated = jiffies;
1120 data->valid = 1;
1123 mutex_unlock(&data->update_lock);
1124 if (data->valid)
1125 return data;
1133 struct abituguru3_data *data = dev_get_drvdata(dev);
1138 mutex_lock(&data->update_lock);
1144 struct abituguru3_data *data = dev_get_drvdata(dev);
1145 mutex_unlock(&data->update_lock);
1222 ABIT_UGURU3_DEBUG("no Abit uGuru3 found, data = 0x%02X, cmd = "