diff options
author | Alexander Yurchenko <grange@cvs.openbsd.org> | 2006-03-04 16:27:04 +0000 |
---|---|---|
committer | Alexander Yurchenko <grange@cvs.openbsd.org> | 2006-03-04 16:27:04 +0000 |
commit | b9fdb6aa1f532061d14d21ff8ee5f45831608e29 (patch) | |
tree | 9e1d8c3405a020362b98336dad9791c05cf2d89e /sys/dev/onewire/onewirevar.h | |
parent | 15aac0ded9c4353cc6a757bb184367d5503f80d8 (diff) |
Dallas 1-Wire bus support. Includes the following drivers:
gpioow(4) 1-Wire bus bit-banging through GPIO pin
onewire(4) 1-Wire bus driver
owid(4) 1-Wire ID family type device
owtemp(4) 1-Wire temperature family type device
Drivers for RS-232 and USB bus masters will follow.
ok deraadt@
Diffstat (limited to 'sys/dev/onewire/onewirevar.h')
-rw-r--r-- | sys/dev/onewire/onewirevar.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/sys/dev/onewire/onewirevar.h b/sys/dev/onewire/onewirevar.h new file mode 100644 index 00000000000..51b7ea4a434 --- /dev/null +++ b/sys/dev/onewire/onewirevar.h @@ -0,0 +1,86 @@ +/* $OpenBSD: onewirevar.h,v 1.1 2006/03/04 16:27:03 grange Exp $ */ + +/* + * Copyright (c) 2006 Alexander Yurchenko <grange@openbsd.org> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef _DEV_ONEWIRE_ONEWIREVAR_H_ +#define _DEV_ONEWIRE_ONEWIREVAR_H_ + +/* + * 1-Wire bus interface. + */ + +/* Bus master interface */ +struct onewire_bus { + void * bus_cookie; + + int (*bus_reset)(void *); + int (*bus_bit)(void *, int); + int (*bus_read_byte)(void *); + void (*bus_write_byte)(void *, int); + int (*bus_triplet)(void *, int); +}; + +/* Bus methods */ +int onewire_lock(void *, int); +void onewire_unlock(void *); +int onewire_reset(void *); +int onewire_bit(void *, int); +int onewire_read_byte(void *); +void onewire_write_byte(void *, int); +int onewire_triplet(void *, int); +void onewire_read_block(void *, void *, int); +void onewire_write_block(void *, const void *, int); +void onewire_matchrom(void *, u_int64_t); + +#define ONEWIRE_NOWAIT 0x0001 + +/* Bus attachment */ +struct onewirebus_attach_args { + struct onewire_bus * oba_bus; +}; + +int onewirebus_print(void *, const char *); + +/* Device attachment */ +struct onewire_attach_args { + void * oa_onewire; + u_int64_t oa_rom; +}; + +/* Family matching */ +struct onewire_matchfam { + int om_type; +}; + +/* Miscellaneous routines */ +int onewire_crc(const void *, int); +const char * onewire_famname(int); +int onewire_matchbyfam(struct onewire_attach_args *, + const struct onewire_matchfam *, int); + +/* Bus bit-banging */ +struct onewire_bbops { + void (*bb_rx)(void *); + void (*bb_tx)(void *); + int (*bb_get)(void *); + void (*bb_set)(void *, int); +}; + +int onewire_bb_reset(const struct onewire_bbops *, void *); +int onewire_bb_bit(const struct onewire_bbops *, void *, int); + +#endif /* !_DEV_ONEWIRE_ONEWIREVAR_H_ */ |