Lines Matching refs:data
63 struct amd_energy_data *data = dev_get_drvdata(dev);
65 *str = data->label[channel];
69 static void get_energy_units(struct amd_energy_data *data)
74 data->energy_units = (rapl_units & AMD_ENERGY_UNIT_MASK) >> 8;
77 static void accumulate_delta(struct amd_energy_data *data,
83 mutex_lock(&data->lock);
87 accum = &data->accums[channel];
96 mutex_unlock(&data->lock);
99 static void read_accumulate(struct amd_energy_data *data)
103 for (sock = 0; sock < data->nr_socks; sock++) {
107 accumulate_delta(data, data->nr_cpus + sock,
111 if (data->core_id >= data->nr_cpus)
112 data->core_id = 0;
114 cpu = data->core_id;
116 accumulate_delta(data, cpu, cpu, ENERGY_CORE_MSR);
118 data->core_id++;
121 static void amd_add_delta(struct amd_energy_data *data, int ch,
127 mutex_lock(&data->lock);
131 accum = &data->accums[ch];
140 *val = div64_ul(input * 1000000UL, BIT(data->energy_units));
142 mutex_unlock(&data->lock);
149 struct amd_energy_data *data = dev_get_drvdata(dev);
153 if (channel >= data->nr_cpus) {
156 (channel - data->nr_cpus));
165 amd_add_delta(data, channel, cpu, val, reg);
179 struct amd_energy_data *data = (struct amd_energy_data *)p;
180 unsigned int timeout = data->timeout_ms;
187 read_accumulate(data);
205 struct amd_energy_data *data,
208 struct hwmon_channel_info *info = &data->energy_info;
244 data->nr_cpus = cpus;
245 data->nr_socks = sockets;
246 data->accums = accums;
247 data->label = label_l;
264 struct amd_energy_data *data;
268 data = devm_kzalloc(dev,
270 if (!data)
273 data->chip.ops = &amd_energy_ops;
274 data->chip.info = data->info;
276 dev_set_drvdata(dev, data);
278 data->info[0] = &data->energy_info;
279 ret = amd_create_sensor(dev, data, hwmon_energy,
284 mutex_init(&data->lock);
285 get_energy_units(data);
288 data,
289 &data->chip,
298 data->timeout_ms = 1000 *
299 BIT(min(28, 31 - data->energy_units)) / 250;
301 data->wrap_accumulate = kthread_run(energy_accumulator, data,
303 return PTR_ERR_OR_ZERO(data->wrap_accumulate);
308 struct amd_energy_data *data = dev_get_drvdata(&pdev->dev);
310 if (data && data->wrap_accumulate)
311 kthread_stop(data->wrap_accumulate);