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 */