From 4241cc5d98e54db1f2b0c34883cf079dcde913d1 Mon Sep 17 00:00:00 2001 From: Thomas Cort Date: Wed, 29 May 2013 14:40:16 -0400 Subject: [PATCH] include: Import dev/i2c/i2c_io.h Change-Id: Icb754891349b7f571863f3a87b0318c28c35ac79 --- distrib/sets/lists/minix/mi | 3 + releasetools/nbsd_ports | 3 + sys/Makefile | 2 +- sys/dev/Makefile | 26 +++++++++ sys/dev/i2c/Makefile | 6 ++ sys/dev/i2c/i2c_io.h | 106 ++++++++++++++++++++++++++++++++++++ 6 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 sys/dev/Makefile create mode 100644 sys/dev/i2c/Makefile create mode 100644 sys/dev/i2c/i2c_io.h diff --git a/distrib/sets/lists/minix/mi b/distrib/sets/lists/minix/mi index bd4a436e3..ce34f47dc 100644 --- a/distrib/sets/lists/minix/mi +++ b/distrib/sets/lists/minix/mi @@ -546,6 +546,9 @@ ./usr/include/ddekit/timer.h minix-sys ./usr/include/ddekit/types.h minix-sys ./usr/include/ddekit/usb.h minix-sys +./usr/include/dev minix-sys +./usr/include/dev/i2c minix-sys +./usr/include/dev/i2c/i2c_io.h minix-sys ./usr/include/dirent.h minix-sys ./usr/include/disktab.h minix-sys ./usr/include/dlfcn.h minix-sys diff --git a/releasetools/nbsd_ports b/releasetools/nbsd_ports index d24ac3c79..5a05e0902 100644 --- a/releasetools/nbsd_ports +++ b/releasetools/nbsd_ports @@ -94,6 +94,9 @@ 2012/02/10 16:16:12,share/zoneinfo 2011/12/25 06:09:09,sys/arch/i386/stand 2012/10/17 12:00:00,sys/arch/x86/include +2013/04/23 12:00:00,sys/dev/Makefile +2013/04/23 12:00:00,sys/dev/i2c/Makefile +2013/04/23 12:00:00,sys/dev/i2c/i2c_io.h 2012/01/16 18:47:57,sys/lib/libsa 2012/10/17 12:00:00,sys/lib/libz 2012/10/17 12:00:00,sys/Makefile diff --git a/sys/Makefile b/sys/Makefile index 095a7a644..af6aac550 100644 --- a/sys/Makefile +++ b/sys/Makefile @@ -2,7 +2,7 @@ .include -SUBDIR= arch \ +SUBDIR= arch dev \ net netinet netinet6 \ \ sys ufs diff --git a/sys/dev/Makefile b/sys/dev/Makefile new file mode 100644 index 000000000..00d1bc537 --- /dev/null +++ b/sys/dev/Makefile @@ -0,0 +1,26 @@ +# $NetBSD: Makefile,v 1.35 2012/06/20 21:38:26 sjg Exp $ + +.if defined(__MINIX) +SUBDIR= i2c +.else +SUBDIR= apm ata bluetooth dec dm dmover dtv filemon hpc \ + i2c i2o ic ieee1394 ir isa \ + microcode ofw pci pckbport pcmcia pud putter raidframe sbus scsipi \ + sun tc usb vme wscons +.endif + +.include + +.if ${MKISCSI} != "no" +SUBDIR+= iscsi +.endif + +INCSDIR= /usr/include/dev + +.if !defined(__MINIX) +# Only install includes which are used by userland +INCS= biovar.h ccdvar.h cgdvar.h fssvar.h keylock.h kttcpio.h lockstat.h \ + md.h vndvar.h +.endif + +.include diff --git a/sys/dev/i2c/Makefile b/sys/dev/i2c/Makefile new file mode 100644 index 000000000..367edc7e0 --- /dev/null +++ b/sys/dev/i2c/Makefile @@ -0,0 +1,6 @@ +# $NetBSD: Makefile,v 1.3 2011/10/02 16:39:47 jmcneill Exp $ + +INCSDIR= /usr/include/dev/i2c +INCS= i2c_io.h + +.include diff --git a/sys/dev/i2c/i2c_io.h b/sys/dev/i2c/i2c_io.h new file mode 100644 index 000000000..52e916eb1 --- /dev/null +++ b/sys/dev/i2c/i2c_io.h @@ -0,0 +1,106 @@ +/* $NetBSD: i2c_io.h,v 1.3 2012/04/22 14:10:36 pgoyette Exp $ */ + +/* + * Copyright (c) 2003 Wasabi Systems, Inc. + * All rights reserved. + * + * Written by Jason R. Thorpe for Wasabi Systems, Inc. + * + * 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. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed for the NetBSD Project by + * Wasabi Systems, Inc. + * 4. The name of Wasabi Systems, Inc. may not be used to endorse + * or promote products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``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 WASABI SYSTEMS, INC + * 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. + */ + +#ifndef _DEV_I2C_I2C_IO_H_ +#define _DEV_I2C_I2C_IO_H_ + +#include + +/* I2C bus address. */ +typedef uint16_t i2c_addr_t; + +/* High-level I2C operations. */ +#define I2C_OPMASK_STOP 1 +#define I2C_OPMASK_WRITE 2 +#define I2C_OPMASK_BLKMODE 4 + +#define I2C_OP_STOP_P(x) (((int)(x) & I2C_OPMASK_STOP) != 0) +#define I2C_OP_WRITE_P(x) (((int)(x) & I2C_OPMASK_WRITE) != 0) +#define I2C_OP_READ_P(x) (!I2C_OP_WRITE_P(x)) +#define I2C_OP_BLKMODE_P(x) (((int)(x) & I2C_OPMASK_BLKMODE) != 0) + +typedef enum { + I2C_OP_READ = 0, + I2C_OP_READ_WITH_STOP = I2C_OPMASK_STOP, + I2C_OP_WRITE = I2C_OPMASK_WRITE, + I2C_OP_WRITE_WITH_STOP = I2C_OPMASK_WRITE | I2C_OPMASK_STOP, + I2C_OP_READ_BLOCK = I2C_OPMASK_BLKMODE | I2C_OPMASK_STOP, + I2C_OP_WRITE_BLOCK = I2C_OPMASK_BLKMODE | I2C_OPMASK_WRITE | + I2C_OPMASK_STOP, +} i2c_op_t; + +/* + * This structure describes a single I2C control script fragment. + * + * Note that use of this scripted API allows for support of automated + * SMBus controllers. The following table maps SMBus operations to + * script fragment configuration: + * + * SMBus "write byte": I2C_OP_WRITE_WITH_STOP + * cmdlen = 1 + * + * SMBus "read byte": I2C_OP_READ_WITH_STOP + * cmdlen = 1 + * + * SMBus "receive byte": I2C_OP_READ_WITH_STOP + * cmdlen = 0 + * + * Note that while each of these 3 SMBus operations implies a STOP + * (which an automated controller will likely perform automatically), + * non-SMBus clients may continue to function even if they issue + * I2C_OP_WRITE and I2C_OP_READ. + */ + +/* + * I2C_IOCTL_EXEC: + * + * User ioctl to execute an i2c operation. + */ +typedef struct i2c_ioctl_exec { + i2c_op_t iie_op; /* operation to perform */ + i2c_addr_t iie_addr; /* address of device */ + const void *iie_cmd; /* pointer to command */ + size_t iie_cmdlen; /* length of command */ + void *iie_buf; /* pointer to data buffer */ + size_t iie_buflen; /* length of data buffer */ +} i2c_ioctl_exec_t; +#define I2C_EXEC_MAX_CMDLEN 32 +#define I2C_EXEC_MAX_BUFLEN 32 + +#define I2C_IOCTL_EXEC _IOW('I', 0, i2c_ioctl_exec_t) + +#endif /* _DEV_I2C_I2C_IO_H_ */