1272343Sngie/* $NetBSD: onewirevar.h,v 1.6 2019/11/30 23:04:12 ad Exp $ */ 2272343Sngie/* $OpenBSD: onewirevar.h,v 1.1 2006/03/04 16:27:03 grange Exp $ */ 3272343Sngie 4272343Sngie/* 5272343Sngie * Copyright (c) 2006 Alexander Yurchenko <grange@openbsd.org> 6272343Sngie * 7272343Sngie * Permission to use, copy, modify, and distribute this software for any 8272343Sngie * purpose with or without fee is hereby granted, provided that the above 9272343Sngie * copyright notice and this permission notice appear in all copies. 10272343Sngie * 11272343Sngie * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 12272343Sngie * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 13272343Sngie * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 14272343Sngie * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 15272343Sngie * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 16272343Sngie * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 17272343Sngie * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 18272343Sngie */ 19272343Sngie 20272343Sngie#ifndef _DEV_ONEWIRE_ONEWIREVAR_H_ 21272343Sngie#define _DEV_ONEWIRE_ONEWIREVAR_H_ 22272343Sngie 23272343Sngie/* 24272343Sngie * 1-Wire bus interface. 25272343Sngie */ 26272343Sngie 27272343Sngie/* Bus master interface */ 28272343Sngiestruct onewire_bus { 29272343Sngie void * bus_cookie; 30272343Sngie 31272343Sngie int (*bus_reset)(void *); 32272343Sngie int (*bus_read_bit)(void *); 33272343Sngie void (*bus_write_bit)(void *, int); 34272343Sngie int (*bus_read_byte)(void *); 35272343Sngie void (*bus_write_byte)(void *, int); 36272343Sngie int (*bus_triplet)(void *, int); 37272343Sngie}; 38272343Sngie 39272343Sngie/* Bus methods */ 40272343Sngievoid onewire_lock(void *); 41272343Sngievoid onewire_unlock(void *); 42272343Sngieint onewire_reset(void *); 43272343Sngieint onewire_read_bit(void *); 44272343Sngievoid onewire_write_bit(void *, int); 45272343Sngieint onewire_read_byte(void *); 46272343Sngievoid onewire_write_byte(void *, int); 47272343Sngieint onewire_triplet(void *, int); 48272343Sngievoid onewire_read_block(void *, void *, int); 49272343Sngievoid onewire_write_block(void *, const void *, int); 50272343Sngievoid onewire_matchrom(void *, u_int64_t); 51272343Sngie 52272343Sngie/* Bus attachment */ 53272343Sngiestruct onewirebus_attach_args { 54272343Sngie struct onewire_bus * oba_bus; 55272343Sngie}; 56272343Sngie 57272343Sngieint onewirebus_print(void *, const char *); 58272343Sngie 59272343Sngie/* Device attachment */ 60272343Sngiestruct onewire_attach_args { 61272343Sngie void * oa_onewire; 62272343Sngie u_int64_t oa_rom; 63272343Sngie}; 64272343Sngie 65272343Sngie/* Family matching */ 66272343Sngiestruct onewire_matchfam { 67272343Sngie int om_type; 68272343Sngie}; 69272343Sngie 70272343Sngie/* Miscellaneous routines */ 71272343Sngieint onewire_crc(const void *, int); 72272343Sngieconst char * onewire_famname(int); 73272343Sngieint onewire_matchbyfam(struct onewire_attach_args *, 74272343Sngie const struct onewire_matchfam *, int); 75272343Sngie 76272343Sngie/* Bus bit-banging */ 77272343Sngiestruct onewire_bbops { 78272343Sngie void (*bb_rx)(void *); 79272343Sngie void (*bb_tx)(void *); 80272343Sngie int (*bb_get)(void *); 81272343Sngie void (*bb_set)(void *, int); 82272343Sngie}; 83272343Sngie 84272343Sngieint onewire_bb_reset(const struct onewire_bbops *, void *); 85272343Sngieint onewire_bb_read_bit(const struct onewire_bbops *, void *); 86272343Sngievoid onewire_bb_write_bit(const struct onewire_bbops *, void *, int); 87272343Sngie 88272343Sngie#endif /* !_DEV_ONEWIRE_ONEWIREVAR_H_ */ 89272343Sngie