34#include <sys/kernel.h>
36#include <sys/module.h>
38#include <sys/sysctl.h>
47#define AD7418_ADDR 0x50
51#define AD7418_CONF_SHUTDOWN 0x01
52#define AD7418_CONF_CHAN 0xe0
53#define AD7418_CHAN_TEMP 0x00
54#define AD7418_CHAN_VOLT 0x80
77 device_set_desc(
dev,
"Analog Devices AD7418 ADC");
78 return (BUS_PROBE_NOWILDCARD);
91 return sysctl_handle_int(oidp, &temp, 0, req);
104 return sysctl_handle_int(oidp, &volt, 0, req);
111 struct sysctl_ctx_list *ctx = device_get_sysctl_ctx(
dev);
112 struct sysctl_oid *tree = device_get_sysctl_tree(
dev);
118 sx_init(&sc->
sc_lock,
"ad7418");
120 SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
121 "temp", CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
123 SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
124 "volt", CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0,
175 tsleep(sc, 0,
"ad7418", hz/1000);
198 sx_assert(&sc->
sc_lock, SA_XLOCKED);
static int ad7418_read_1(device_t dev, int reg)
MODULE_DEPEND(ad7418, iicbus, 1, 1, 1)
static devclass_t ad7418_devclass
static int ad7418_attach(device_t dev)
static driver_t ad7418_driver
MODULE_VERSION(ad7418, 1)
static void ad7418_update(struct ad7418_softc *)
static void ad7418_set_channel(struct ad7418_softc *sc, int chan)
static int ad7418_read_2(device_t dev, int reg)
DRIVER_MODULE(ad7418, iicbus, ad7418_driver, ad7418_devclass, 0, 0)
static int ad7418_sysctl_temp(SYSCTL_HANDLER_ARGS)
#define AD7418_CONF_SHUTDOWN
static int ad7418_sysctl_voltage(SYSCTL_HANDLER_ARGS)
static int ad7418_probe(device_t dev)
static int ad7418_write_1(device_t dev, int reg, int v)
static device_method_t ad7418_methods[]
int iicbus_transfer(device_t bus, struct iic_msg *msgs, uint32_t nmsgs)