Lines Matching +full:adc +full:- +full:chan

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
56 #define AD7418_VOLT 4 /* ADC aka Voltage (r/o) */
76 device_set_desc(dev, "Analog Devices AD7418 ADC"); in ad7418_probe()
86 sx_xlock(&sc->sc_lock); in ad7418_sysctl_temp()
88 temp = (sc->sc_curtemp / 64) * 25; in ad7418_sysctl_temp()
89 sx_xunlock(&sc->sc_lock); in ad7418_sysctl_temp()
99 sx_xlock(&sc->sc_lock); in ad7418_sysctl_voltage()
101 volt = (sc->sc_curvolt >> 6) * 564 / 10; in ad7418_sysctl_voltage()
102 sx_xunlock(&sc->sc_lock); in ad7418_sysctl_voltage()
114 sc->sc_dev = dev; in ad7418_attach()
115 sc->sc_lastupdate = ticks - hz; in ad7418_attach()
117 sx_init(&sc->sc_lock, "ad7418"); in ad7418_attach()
143 return iicbus_transfer(dev, msgs, 2) != 0 ? -1 : data[0]; in ad7418_read_1()
160 ad7418_set_channel(struct ad7418_softc *sc, int chan) in ad7418_set_channel() argument
162 if (sc->sc_curchan == chan) in ad7418_set_channel()
164 ad7418_write_1(sc->sc_dev, AD7418_CONF, in ad7418_set_channel()
165 (ad7418_read_1(sc->sc_dev, AD7418_CONF) &~ AD7418_CONF_CHAN)|chan); in ad7418_set_channel()
166 sc->sc_curchan = chan; in ad7418_set_channel()
189 -1 : ((data[0] << 8) | data[1]); in ad7418_read_2()
197 sx_assert(&sc->sc_lock, SA_XLOCKED); in ad7418_update()
199 if (ticks - sc->sc_lastupdate > hz) { in ad7418_update()
201 v = ad7418_read_2(sc->sc_dev, AD7418_TEMP); in ad7418_update()
203 sc->sc_curtemp = v; in ad7418_update()
205 v = ad7418_read_2(sc->sc_dev, AD7418_VOLT); in ad7418_update()
207 sc->sc_curvolt = v; in ad7418_update()
208 sc->sc_lastupdate = ticks; in ad7418_update()