Lines Matching refs:hx711_data

79 struct hx711_data {
102 static int hx711_cycle(struct hx711_data *hx711_data)
112 gpiod_set_value(hx711_data->gpiod_pd_sck, 1);
119 ndelay(hx711_data->data_ready_delay_ns);
127 gpiod_set_value(hx711_data->gpiod_pd_sck, 0);
134 ndelay(hx711_data->data_ready_delay_ns);
137 return gpiod_get_value(hx711_data->gpiod_dout);
140 static int hx711_read(struct hx711_data *hx711_data)
144 int val = gpiod_get_value(hx711_data->gpiod_dout);
152 ret = hx711_cycle(hx711_data);
159 for (i = 0; i < hx711_get_gain_to_pulse(hx711_data->gain_set); i++)
160 hx711_cycle(hx711_data);
165 static int hx711_wait_for_ready(struct hx711_data *hx711_data)
175 val = gpiod_get_value(hx711_data->gpiod_dout);
187 static int hx711_reset(struct hx711_data *hx711_data)
189 int val = hx711_wait_for_ready(hx711_data);
201 gpiod_set_value(hx711_data->gpiod_pd_sck, 1);
203 gpiod_set_value(hx711_data->gpiod_pd_sck, 0);
205 val = hx711_wait_for_ready(hx711_data);
208 hx711_data->gain_set = HX711_RESET_GAIN;
214 static int hx711_set_gain_for_channel(struct hx711_data *hx711_data, int chan)
219 if (hx711_data->gain_set == 32) {
220 hx711_data->gain_set = hx711_data->gain_chan_a;
222 ret = hx711_read(hx711_data);
226 ret = hx711_wait_for_ready(hx711_data);
231 if (hx711_data->gain_set != 32) {
232 hx711_data->gain_set = 32;
234 ret = hx711_read(hx711_data);
238 ret = hx711_wait_for_ready(hx711_data);
247 static int hx711_reset_read(struct hx711_data *hx711_data, int chan)
256 if (hx711_reset(hx711_data)) {
257 dev_err(hx711_data->dev, "reset failed!");
261 ret = hx711_set_gain_for_channel(hx711_data, chan);
265 val = hx711_read(hx711_data);
274 struct hx711_data *hx711_data = iio_priv(indio_dev);
278 mutex_lock(&hx711_data->lock);
280 *val = hx711_reset_read(hx711_data, chan->channel);
282 mutex_unlock(&hx711_data->lock);
289 mutex_lock(&hx711_data->lock);
291 *val2 = hx711_get_gain_to_scale(hx711_data->gain_set);
293 mutex_unlock(&hx711_data->lock);
307 struct hx711_data *hx711_data = iio_priv(indio_dev);
320 mutex_lock(&hx711_data->lock);
324 mutex_unlock(&hx711_data->lock);
328 if (gain != hx711_data->gain_set) {
329 hx711_data->gain_set = gain;
331 hx711_data->gain_chan_a = gain;
333 ret = hx711_read(hx711_data);
335 mutex_unlock(&hx711_data->lock);
340 mutex_unlock(&hx711_data->lock);
360 struct hx711_data *hx711_data = iio_priv(indio_dev);
363 mutex_lock(&hx711_data->lock);
365 memset(hx711_data->buffer, 0, sizeof(hx711_data->buffer));
371 hx711_data->buffer[j] = hx711_reset_read(hx711_data,
376 iio_push_to_buffers_with_timestamp(indio_dev, hx711_data->buffer,
379 mutex_unlock(&hx711_data->lock);
463 struct hx711_data *hx711_data;
468 indio_dev = devm_iio_device_alloc(dev, sizeof(struct hx711_data));
474 hx711_data = iio_priv(indio_dev);
475 hx711_data->dev = dev;
477 mutex_init(&hx711_data->lock);
483 hx711_data->gpiod_pd_sck = devm_gpiod_get(dev, "sck", GPIOD_OUT_LOW);
484 if (IS_ERR(hx711_data->gpiod_pd_sck)) {
486 PTR_ERR(hx711_data->gpiod_pd_sck));
487 return PTR_ERR(hx711_data->gpiod_pd_sck);
494 hx711_data->gpiod_dout = devm_gpiod_get(dev, "dout", GPIOD_IN);
495 if (IS_ERR(hx711_data->gpiod_dout)) {
497 PTR_ERR(hx711_data->gpiod_dout));
498 return PTR_ERR(hx711_data->gpiod_dout);
501 hx711_data->reg_avdd = devm_regulator_get(dev, "avdd");
502 if (IS_ERR(hx711_data->reg_avdd))
503 return PTR_ERR(hx711_data->reg_avdd);
505 ret = regulator_enable(hx711_data->reg_avdd);
521 ret = regulator_get_voltage(hx711_data->reg_avdd);
532 hx711_data->gain_set = 128;
533 hx711_data->gain_chan_a = 128;
535 hx711_data->clock_frequency = 400000;
537 &hx711_data->clock_frequency);
543 if (hx711_data->clock_frequency < 20000) {
545 hx711_data->clock_frequency = 400000;
548 hx711_data->data_ready_delay_ns =
549 1000000000 / hx711_data->clock_frequency;
578 regulator_disable(hx711_data->reg_avdd);
585 struct hx711_data *hx711_data;
589 hx711_data = iio_priv(indio_dev);
595 regulator_disable(hx711_data->reg_avdd);