Module Name: src Committed By: thorpej Date: Tue Jun 26 06:21:23 UTC 2018
Modified Files: src/sys/dev/i2c: at24cxx.c Log Message: Encode the size information in the compat data. To generate a diff of this commit: cvs rdiff -u -r1.28 -r1.29 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/sys/dev/i2c/at24cxx.c diff -u src/sys/dev/i2c/at24cxx.c:1.28 src/sys/dev/i2c/at24cxx.c:1.29 --- src/sys/dev/i2c/at24cxx.c:1.28 Tue Jun 26 06:03:57 2018 +++ src/sys/dev/i2c/at24cxx.c Tue Jun 26 06:21:23 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: at24cxx.c,v 1.28 2018/06/26 06:03:57 thorpej Exp $ */ +/* $NetBSD: at24cxx.c,v 1.29 2018/06/26 06:21:23 thorpej Exp $ */ /* * Copyright (c) 2003 Wasabi Systems, Inc. @@ -36,7 +36,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: at24cxx.c,v 1.28 2018/06/26 06:03:57 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: at24cxx.c,v 1.29 2018/06/26 06:21:23 thorpej Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -111,20 +111,11 @@ const struct cdevsw seeprom_cdevsw = { static int seeprom_wait_idle(struct seeprom_softc *); -static const struct seeprom_size { - const char *name; - int size; -} seeprom_sizes[] = { - { "atmel,24c02", 256 }, - { "atmel,24c16", 2048 }, -}; - -/* XXXJRT collapse seeprom_size stuff into compat_data; see also ofw code */ static const struct device_compatible_entry compat_data[] = { - { "i2c-at24c64", 0 }, - { "i2c-at34c02", 0 }, - { "atmel,24c02", 0 }, - { "atmel,24c16", 0 }, + { "i2c-at24c64", 8192 }, + { "i2c-at34c02", 256 }, + { "atmel,24c02", 256 }, + { "atmel,24c16", 2048 }, { NULL, 0 } }; @@ -148,7 +139,7 @@ seeprom_attach(device_t parent, device_t { struct seeprom_softc *sc = device_private(self); struct i2c_attach_args *ia = aux; - u_int n, m; + const struct device_compatible_entry *dce; sc->sc_tag = ia->ia_tag; sc->sc_address = ia->ia_addr; @@ -182,15 +173,8 @@ seeprom_attach(device_t parent, device_t sc->sc_size = ia->ia_size; if (sc->sc_size <= 0 && ia->ia_ncompat > 0) { - for (n = 0; n < __arraycount(seeprom_sizes); n++) { - for (m = 0; m < ia->ia_ncompat; m++) { - if (!strcmp(seeprom_sizes[n].name, - ia->ia_compat[m])) { - sc->sc_size = seeprom_sizes[n].size; - break; - } - } - } + if (iic_compatible_match(ia, compat_data, &dce)) + sc->sc_size = dce->data; } switch (sc->sc_size) {