Module Name: src Committed By: jdc Date: Fri Oct 25 14:23:15 UTC 2013
Modified Files: src/share/man/man4: seeprom.4 src/sys/dev/i2c: at24cxx.c Log Message: Allow the EEPROM size to be specified in the kernel configuration by using flags. Add the flags values, and configuration examples to the manual page. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/share/man/man4/seeprom.4 cvs rdiff -u -r1.14 -r1.15 src/sys/dev/i2c/at24cxx.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/share/man/man4/seeprom.4 diff -u src/share/man/man4/seeprom.4:1.4 src/share/man/man4/seeprom.4:1.5 --- src/share/man/man4/seeprom.4:1.4 Fri Feb 8 15:18:44 2013 +++ src/share/man/man4/seeprom.4 Fri Oct 25 14:23:15 2013 @@ -1,4 +1,4 @@ -.\" $NetBSD: seeprom.4,v 1.4 2013/02/08 15:18:44 jdc Exp $ +.\" $NetBSD: seeprom.4,v 1.5 2013/10/25 14:23:15 jdc Exp $ .\" .\" Copyright (c) 2007 The NetBSD Foundation, Inc. .\" All rights reserved. @@ -24,21 +24,45 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd February 7, 2013 +.Dd October 25, 2013 .Dt SEEPROM 4 .Os .Sh NAME .Nm seeprom .Nd 24-series I2C EEPROM driver .Sh SYNOPSIS -.Cd "seeprom0 at iic0 addr 0x50 size 128" +.Cd "seeprom0 at iic0 addr 0x51: AT24Cxx or compatible EEPROM: size 256" +.Cd "seeprom16 at iic1 addr 0x57: power-supply: size 8192" .Sh DESCRIPTION The .Nm -driver provides support for the 24-series of I2C EEPROMs, -available from a variety of vendors. +driver provides support for the ATMEL 24-series of I2C EEPROMs, and +compatables, available from a variety of vendors. The Philips PCF8582 +is also supported, as compatable with the AT24C02. .Pp Access to the contents of the memory is through a character device. +.Pp +The size of the EEPROM is either read from the firmware, or can be set +using the flags keyword in the kernel configuration. +The value of the flag represents the EEPROM size in Kbit. +.Bl -column -offset indent "flags" "EEPROM size in bytes" +.It Sy flags Ta Sy EEPROM size in bytes +.It Li 1 Ta 128 +.It Li 2 Ta 256 +.It Li 4 Ta 512 +.It Li 8 Ta 1024 +.It Li 16 Ta 2048 +.It Li 32 Ta 4096 +.It Li 64 Ta 8192 +.It Li 128 Ta 16384 +.It Li 256 Ta 32768 +.It Li 512 Ta 65536 +.El +.Sh EXAMPLES +Indirect configuration: +.Dl seeprom* at iic? addr 0x51 flags 0x2 +Direct configuration: +.Dl seeprom* at iic? addr? .Sh SEE ALSO .Xr iic 4 .Sh HISTORY @@ -49,6 +73,8 @@ device appeared in .Sh BUGS AT24C1024 EEPROM's are not supported. .Pp +Software write protection on the AT34Cxx EEPROM's is not supported. +.Pp The .Nm driver reads and writes one byte at a time to be compatible with all Index: src/sys/dev/i2c/at24cxx.c diff -u src/sys/dev/i2c/at24cxx.c:1.14 src/sys/dev/i2c/at24cxx.c:1.15 --- src/sys/dev/i2c/at24cxx.c:1.14 Wed Aug 7 19:38:45 2013 +++ src/sys/dev/i2c/at24cxx.c Fri Oct 25 14:23:15 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: at24cxx.c,v 1.14 2013/08/07 19:38:45 soren Exp $ */ +/* $NetBSD: at24cxx.c,v 1.15 2013/10/25 14:23:15 jdc Exp $ */ /* * Copyright (c) 2003 Wasabi Systems, Inc. @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: at24cxx.c,v 1.14 2013/08/07 19:38:45 soren Exp $"); +__KERNEL_RCSID(0, "$NetBSD: at24cxx.c,v 1.15 2013/10/25 14:23:15 jdc Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -136,7 +136,7 @@ seeprom_attach(device_t parent, device_t aprint_normal(": %s", ia->ia_name); } else { aprint_naive(": EEPROM"); - aprint_normal(": AT24Cxx EEPROM"); + aprint_normal(": AT24Cxx or compatible EEPROM"); } /* @@ -153,7 +153,10 @@ seeprom_attach(device_t parent, device_t * switching to select the proper super-page. This isn't * supported by this driver. */ - sc->sc_size = ia->ia_size; + if (device_cfdata(self)->cf_flags) + sc->sc_size = (device_cfdata(self)->cf_flags << 7); + else + sc->sc_size = ia->ia_size; switch (sc->sc_size) { case 128: /* 1Kbit */ case 256: /* 2Kbit */