zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

smbconf.h (4060B) - Raw


      1 /*-
      2  * SPDX-License-Identifier: BSD-2-Clause
      3  *
      4  * Copyright (c) 1998 Nicolas Souchu
      5  * All rights reserved.
      6  *
      7  * Redistribution and use in source and binary forms, with or without
      8  * modification, are permitted provided that the following conditions
      9  * are met:
     10  * 1. Redistributions of source code must retain the above copyright
     11  *    notice, this list of conditions and the following disclaimer.
     12  * 2. Redistributions in binary form must reproduce the above copyright
     13  *    notice, this list of conditions and the following disclaimer in the
     14  *    documentation and/or other materials provided with the distribution.
     15  *
     16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
     17  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
     20  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     21  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     22  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     23  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     24  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     25  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     26  * SUCH DAMAGE.
     27  */
     28 #ifndef __DEV_SMBUS_SMBCONF_H
     29 #define	__DEV_SMBUS_SMBCONF_H
     30 
     31 #include <sys/queue.h>
     32 
     33 #define SMBPRI (PZERO+8)		/* XXX sleep/wakeup queue priority */
     34 
     35 #define n(flags) (~(flags) & (flags))
     36 
     37 /* Order constants for smbus children. */
     38 #define SMBUS_ORDER_HINTED	20
     39 #define SMBUS_ORDER_PNP		40
     40 
     41 /*
     42  * How tsleep() is called in smb_request_bus().
     43  */
     44 #define SMB_DONTWAIT	0
     45 #define SMB_NOINTR	0
     46 #define SMB_WAIT	0x1
     47 #define SMB_INTR	0x2
     48 
     49 /*
     50  * callback index
     51  */
     52 #define SMB_REQUEST_BUS	0x1
     53 #define SMB_RELEASE_BUS	0x2
     54 
     55 /*
     56  * SMB bus errors
     57  */
     58 #define SMB_ENOERR	0x0
     59 #define SMB_EBUSERR	0x1
     60 #define SMB_ENOTSUPP	0x2
     61 #define SMB_ENOACK	0x4
     62 #define SMB_ECOLLI	0x8
     63 #define SMB_EABORT	0x10
     64 #define SMB_ETIMEOUT	0x20
     65 #define SMB_EBUSY	0x40
     66 #define	SMB_EINVAL	0x100
     67 
     68 /*
     69  * How Quick command is executed
     70  */
     71 #define SMB_QWRITE	0x0
     72 #define SMB_QREAD	0x1
     73 
     74 /*
     75  * ivars codes
     76  */
     77 enum smbus_ivars {
     78     SMBUS_IVAR_ADDR,	/* slave address of the device */
     79 };
     80 
     81 int	smbus_request_bus(device_t, device_t, int);
     82 int	smbus_release_bus(device_t, device_t);
     83 device_t smbus_alloc_bus(device_t);
     84 int	smbus_error(int error);
     85 
     86 void	smbus_intr(device_t, u_char, char low, char high, int error);
     87 
     88 #define SMBUS_ACCESSOR(var, ivar, type)					\
     89 	__BUS_ACCESSOR(smbus, var, SMBUS, ivar, type)
     90 
     91 SMBUS_ACCESSOR(addr,		ADDR,		int)
     92 
     93 #undef SMBUS_ACCESSOR
     94 
     95 extern driver_t smbus_driver;
     96 
     97 #define smbus_quick(bus,slave,how) \
     98 	(SMBUS_QUICK(device_get_parent(bus), slave, how))
     99 #define smbus_sendb(bus,slave,byte) \
    100 	(SMBUS_SENDB(device_get_parent(bus), slave, byte))
    101 #define smbus_recvb(bus,slave,byte) \
    102 	(SMBUS_RECVB(device_get_parent(bus), slave, byte))
    103 #define smbus_writeb(bus,slave,cmd,byte) \
    104 	(SMBUS_WRITEB(device_get_parent(bus), slave, cmd, byte))
    105 #define smbus_writew(bus,slave,cmd,word) \
    106 	(SMBUS_WRITEW(device_get_parent(bus), slave, cmd, word))
    107 #define smbus_readb(bus,slave,cmd,byte) \
    108 	(SMBUS_READB(device_get_parent(bus), slave, cmd, byte))
    109 #define smbus_readw(bus,slave,cmd,word) \
    110 	(SMBUS_READW(device_get_parent(bus), slave, cmd, word))
    111 #define smbus_pcall(bus,slave,cmd,sdata,rdata) \
    112 	(SMBUS_PCALL(device_get_parent(bus), slave, cmd, sdata, rdata))
    113 #define smbus_bwrite(bus,slave,cmd,count,buf) \
    114 	(SMBUS_BWRITE(device_get_parent(bus), slave, cmd, count, buf))
    115 #define smbus_bread(bus,slave,cmd,count,buf) \
    116 	(SMBUS_BREAD(device_get_parent(bus), slave, cmd, count, buf))
    117 #define smbus_trans(bus,slave,cmd,op,wbuf,wcount,rbuf,rcount,actualp) \
    118 	(SMBUS_TRANS(device_get_parent(bus), slave, cmd, op, \
    119 	wbuf, wcount, rbuf, rcount, actualp))
    120 
    121 #define SMBUS_MODVER	1
    122 #define SMBUS_MINVER	1
    123 #define SMBUS_MAXVER	1
    124 #define SMBUS_PREFVER	SMBUS_MODVER
    125 
    126 #endif	/* __DEV_SMBUS_SMBCONF_H */