iiconf.h
来自「基于组件方式开发操作系统的OSKIT源代码」· C头文件 代码 · 共 131 行
H
131 行
/*- * Copyright (c) 1998 Nicolas Souchu * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $Id: iiconf.h,v 1.3.2.2 1999/01/27 11:57:26 roger Exp $ */#ifndef __IICONF_H#define __IICONF_H#include <sys/queue.h>#define IICPRI PZERO+8 /* XXX sleep/wakeup queue priority */#define n(flags) (~(flags) & (flags))#define LSB 0x1/* * How tsleep() is called in iic_request_bus(). */#define IIC_DONTWAIT 0#define IIC_NOINTR 0#define IIC_WAIT 0x1#define IIC_INTR 0x2/* * i2c modes */#define IIC_MASTER 0x1#define IIC_SLAVE 0x2#define IIC_POLLED 0x4/* * i2c speed */#define IIC_UNKNOWN 0x0#define IIC_SLOW 0x1#define IIC_FAST 0x2#define IIC_FASTEST 0x3#define IIC_LAST_READ 0x1/* * callback index */#define IIC_REQUEST_BUS 0x1#define IIC_RELEASE_BUS 0x2/* * interrupt events */#define INTR_GENERAL 0x1 /* general call received */#define INTR_START 0x2 /* the I2C interface is addressed */#define INTR_STOP 0x3 /* stop condition received */#define INTR_RECEIVE 0x4 /* character received */#define INTR_TRANSMIT 0x5 /* character to transmit */#define INTR_ERROR 0x6 /* error */#define INTR_NOACK 0x7 /* no ack from master receiver *//* * adapter layer errors */#define IIC_NOERR 0x0 /* no error occured */#define IIC_EBUSERR 0x1 /* bus error */#define IIC_ENOACK 0x2 /* ack not received until timeout */#define IIC_ETIMEOUT 0x3 /* timeout */#define IIC_EBUSBSY 0x4 /* bus busy */#define IIC_ESTATUS 0x5 /* status error */#define IIC_EUNDERFLOW 0x6 /* slave ready for more data */#define IIC_EOVERFLOW 0x7 /* too much data */#define IIC_ENOTSUPP 0x8 /* request not supported */#define IIC_ENOADDR 0x9 /* no address assigned to the interface *//* * ivars codes */#define IICBUS_IVAR_ADDR 0x1 /* I2C address of the device */extern int iicbus_request_bus(device_t, device_t, int);extern int iicbus_release_bus(device_t, device_t);extern device_t iicbus_alloc_bus(device_t);extern void iicbus_intr(device_t, int, char *);extern int iicbus_null_repeated_start(device_t, u_char);extern int iicbus_null_callback(device_t, int, caddr_t);#define iicbus_reset(bus,speed,addr,oldaddr) \ (IICBUS_RESET(device_get_parent(bus), speed, addr, oldaddr))/* basic I2C operations */extern int iicbus_started(device_t);extern int iicbus_start(device_t, u_char, int);extern int iicbus_stop(device_t);extern int iicbus_repeated_start(device_t, u_char, int);extern int iicbus_write(device_t, char *, int, int *, int);extern int iicbus_read(device_t, char *, int, int *, int, int);/* single byte read/write functions, start/stop not managed */extern int iicbus_write_byte(device_t, char, int);extern int iicbus_read_byte(device_t, char *, int);/* Read/write operations with start/stop conditions managed */extern int iicbus_block_write(device_t, u_char, char *, int, int *);extern int iicbus_block_read(device_t, u_char, char *, int, int *);extern u_char iicbus_get_addr(device_t);#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?