Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/sys Change the device_compatible_match() function to onl...



details:   https://anonhg.NetBSD.org/src/rev/4194272c24c9
branches:  trunk
changeset: 958748:4194272c24c9
user:      thorpej <thorpej%NetBSD.org@localhost>
date:      Mon Jan 18 15:28:21 2021 +0000

description:
Change the device_compatible_match() function to only perform the match.
Introduce a device_compatible_lookup() function to return an entry based
on the same matching criteria (a'la of_search_compatible()).

Update iic_compatible_match() to reflect the above change, and introduce
iic_compatible_lookup().  This pattern is less awkward to use.

diffstat:

 sys/dev/i2c/at24cxx.c    |   6 +++---
 sys/dev/i2c/axppmic.c    |   6 +++---
 sys/dev/i2c/ds1307.c     |   6 +++---
 sys/dev/i2c/fan53555.c   |   6 +++---
 sys/dev/i2c/i2c.c        |  24 ++++++++++++++++++------
 sys/dev/i2c/i2cvar.h     |   8 +++++---
 sys/dev/i2c/m41st84.c    |  10 +++++-----
 sys/dev/i2c/pcagpio.c    |   6 +++---
 sys/dev/i2c/pcai2cmux.c  |   6 +++---
 sys/dev/i2c/rkpmic.c     |   7 ++++---
 sys/dev/spi/spi.c        |   6 +++---
 sys/kern/subr_autoconf.c |  40 ++++++++++++++++++++++++++++++++++------
 sys/sys/device.h         |   8 +++++---
 13 files changed, 92 insertions(+), 47 deletions(-)

diffs (truncated from 432 to 300 lines):

diff -r 0456ccb1face -r 4194272c24c9 sys/dev/i2c/at24cxx.c
--- a/sys/dev/i2c/at24cxx.c     Mon Jan 18 13:29:37 2021 +0000
+++ b/sys/dev/i2c/at24cxx.c     Mon Jan 18 15:28:21 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: at24cxx.c,v 1.37 2021/01/17 21:56:20 thorpej Exp $     */
+/*     $NetBSD: at24cxx.c,v 1.38 2021/01/18 15:28:21 thorpej Exp $     */
 
 /*
  * Copyright (c) 2003 Wasabi Systems, Inc.
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: at24cxx.c,v 1.37 2021/01/17 21:56:20 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: at24cxx.c,v 1.38 2021/01/18 15:28:21 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -182,7 +182,7 @@
                sc->sc_size = (device_cfdata(self)->cf_flags << 7);
 
        if (sc->sc_size <= 0 && ia->ia_ncompat > 0) {
-               if (iic_compatible_match(ia, compat_data, &dce))
+               if ((dce = iic_compatible_lookup(ia, compat_data)) != NULL)
                        sc->sc_size = dce->value;
        }
 
diff -r 0456ccb1face -r 4194272c24c9 sys/dev/i2c/axppmic.c
--- a/sys/dev/i2c/axppmic.c     Mon Jan 18 13:29:37 2021 +0000
+++ b/sys/dev/i2c/axppmic.c     Mon Jan 18 15:28:21 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: axppmic.c,v 1.30 2021/01/17 21:56:20 thorpej Exp $ */
+/* $NetBSD: axppmic.c,v 1.31 2021/01/18 15:28:21 thorpej Exp $ */
 
 /*-
  * Copyright (c) 2014-2018 Jared McNeill <jmcneill%invisible.ca@localhost>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: axppmic.c,v 1.30 2021/01/17 21:56:20 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: axppmic.c,v 1.31 2021/01/18 15:28:21 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -949,7 +949,7 @@
        uint8_t irq_mask, val;
        int error;
 
-       (void) iic_compatible_match(ia, compat_data, &dce);
+       dce = iic_compatible_lookup(ia, compat_data);
        KASSERT(dce != NULL);
        c = dce->data;
 
diff -r 0456ccb1face -r 4194272c24c9 sys/dev/i2c/ds1307.c
--- a/sys/dev/i2c/ds1307.c      Mon Jan 18 13:29:37 2021 +0000
+++ b/sys/dev/i2c/ds1307.c      Mon Jan 18 15:28:21 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ds1307.c,v 1.35 2021/01/17 21:56:20 thorpej Exp $      */
+/*     $NetBSD: ds1307.c,v 1.36 2021/01/18 15:28:21 thorpej Exp $      */
 
 /*
  * Copyright (c) 2003 Wasabi Systems, Inc.
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ds1307.c,v 1.35 2021/01/17 21:56:20 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ds1307.c,v 1.36 2021/01/18 15:28:21 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -255,7 +255,7 @@
        const struct dsrtc_model *dm = NULL;
        const struct device_compatible_entry *dce;
 
-       if (iic_compatible_match(ia, compat_data, &dce))
+       if ((dce = iic_compatible_lookup(ia, compat_data)) != NULL)
                dm = dce->data;
 
        return dm;
diff -r 0456ccb1face -r 4194272c24c9 sys/dev/i2c/fan53555.c
--- a/sys/dev/i2c/fan53555.c    Mon Jan 18 13:29:37 2021 +0000
+++ b/sys/dev/i2c/fan53555.c    Mon Jan 18 15:28:21 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: fan53555.c,v 1.6 2021/01/17 21:56:20 thorpej Exp $ */
+/* $NetBSD: fan53555.c,v 1.7 2021/01/18 15:28:21 thorpej Exp $ */
 
 /*-
  * Copyright (c) 2018 Jared McNeill <jmcneill%invisible.ca@localhost>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: fan53555.c,v 1.6 2021/01/17 21:56:20 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fan53555.c,v 1.7 2021/01/18 15:28:21 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -310,7 +310,7 @@
        sc->sc_addr = ia->ia_addr;
        sc->sc_phandle = ia->ia_cookie;
 
-       iic_compatible_match(ia, compat_data, &compat);
+       compat = iic_compatible_lookup(ia, compat_data);
        KASSERT(compat != NULL);
 
        if (fan53555_init(sc, compat->value) != 0)
diff -r 0456ccb1face -r 4194272c24c9 sys/dev/i2c/i2c.c
--- a/sys/dev/i2c/i2c.c Mon Jan 18 13:29:37 2021 +0000
+++ b/sys/dev/i2c/i2c.c Mon Jan 18 15:28:21 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: i2c.c,v 1.75 2020/07/07 16:14:23 thorpej Exp $ */
+/*     $NetBSD: i2c.c,v 1.76 2021/01/18 15:28:21 thorpej Exp $ */
 
 /*
  * Copyright (c) 2003 Wasabi Systems, Inc.
@@ -40,7 +40,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: i2c.c,v 1.75 2020/07/07 16:14:23 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i2c.c,v 1.76 2021/01/18 15:28:21 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -687,13 +687,12 @@
  */
 int
 iic_compatible_match(const struct i2c_attach_args *ia,
-                    const struct device_compatible_entry *compats,
-                    const struct device_compatible_entry **matching_entryp)
+                    const struct device_compatible_entry *compats)
 {
        int match_result;
 
        match_result = device_compatible_match(ia->ia_compat, ia->ia_ncompat,
-                                              compats, matching_entryp);
+                                              compats);
        if (match_result) {
                match_result =
                    MIN(I2C_MATCH_DIRECT_COMPATIBLE + match_result - 1,
@@ -704,6 +703,19 @@
 }
 
 /*
+ * iic_compatible_lookup --
+ *     Look the compatible entry that matches one of the driver's
+ *     "compatible" strings.  The first match is returned.
+ */
+const struct device_compatible_entry *
+iic_compatible_lookup(const struct i2c_attach_args *ia,
+                     const struct device_compatible_entry *compats)
+{
+       return device_compatible_lookup(ia->ia_compat, ia->ia_ncompat,
+                                       compats);
+}
+
+/*
  * iic_use_direct_match --
  *     Helper for direct-config of i2c.  Returns true if this is
  *     a direct-config situation, along with with match result.
@@ -724,7 +736,7 @@
        }
 
        if (ia->ia_ncompat > 0 && ia->ia_compat != NULL) {
-               *match_resultp = iic_compatible_match(ia, compats, NULL);
+               *match_resultp = iic_compatible_match(ia, compats);
                return true;
        }
 
diff -r 0456ccb1face -r 4194272c24c9 sys/dev/i2c/i2cvar.h
--- a/sys/dev/i2c/i2cvar.h      Mon Jan 18 13:29:37 2021 +0000
+++ b/sys/dev/i2c/i2cvar.h      Mon Jan 18 15:28:21 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: i2cvar.h,v 1.21 2020/12/29 00:26:51 thorpej Exp $      */
+/*     $NetBSD: i2cvar.h,v 1.22 2021/01/18 15:28:21 thorpej Exp $      */
 
 /*
  * Copyright (c) 2003 Wasabi Systems, Inc.
@@ -171,10 +171,12 @@
  * API presented to i2c devices.
  */
 int    iic_compatible_match(const struct i2c_attach_args *,
-                            const struct device_compatible_entry *,
-                            const struct device_compatible_entry **);
+                            const struct device_compatible_entry *);
 bool   iic_use_direct_match(const struct i2c_attach_args *, const cfdata_t,
                             const struct device_compatible_entry *, int *);
+const struct device_compatible_entry *
+       iic_compatible_lookup(const struct i2c_attach_args *,
+                             const struct device_compatible_entry *);
 
 /*
  * Constants to indicate the quality of a match made by a driver's
diff -r 0456ccb1face -r 4194272c24c9 sys/dev/i2c/m41st84.c
--- a/sys/dev/i2c/m41st84.c     Mon Jan 18 13:29:37 2021 +0000
+++ b/sys/dev/i2c/m41st84.c     Mon Jan 18 15:28:21 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: m41st84.c,v 1.28 2021/01/17 21:56:20 thorpej Exp $     */
+/*     $NetBSD: m41st84.c,v 1.29 2021/01/18 15:28:21 thorpej Exp $     */
 
 /*
  * Copyright (c) 2003 Wasabi Systems, Inc.
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: m41st84.c,v 1.28 2021/01/17 21:56:20 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: m41st84.c,v 1.29 2021/01/18 15:28:21 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -140,7 +140,7 @@
                return &m41t80_model;
        
        for (dce = compat_data; dce->compat != NULL; dce++) {
-               sm = (void *)dce->data;
+               sm = dce->data;
                if (sm->sm_model == model)
                        return sm;
        }
@@ -153,8 +153,8 @@
        const struct device_compatible_entry *dce;
        const struct strtc_model *sm = NULL;
 
-       if (iic_compatible_match(ia, compat_data, &dce))
-               sm = (void *)dce->data;
+       if ((dce = iic_compatible_lookup(ia, compat_data)) != NULL)
+               sm = dce->data;
        
        return sm;
 }
diff -r 0456ccb1face -r 4194272c24c9 sys/dev/i2c/pcagpio.c
--- a/sys/dev/i2c/pcagpio.c     Mon Jan 18 13:29:37 2021 +0000
+++ b/sys/dev/i2c/pcagpio.c     Mon Jan 18 15:28:21 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: pcagpio.c,v 1.7 2021/01/17 21:56:20 thorpej Exp $ */
+/* $NetBSD: pcagpio.c,v 1.8 2021/01/18 15:28:21 thorpej Exp $ */
 
 /*-
  * Copyright (c) 2020 Michael Lorenz
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pcagpio.c,v 1.7 2021/01/17 21:56:20 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pcagpio.c,v 1.8 2021/01/18 15:28:21 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -157,7 +157,7 @@
 
        aprint_naive("\n");
        sc->sc_is_16bit = 0;
-       if (iic_compatible_match(ia, compat_data, &dce))
+       if ((dce = iic_compatible_lookup(ia, compat_data)) != NULL)
                sc->sc_is_16bit = dce->value;
 
        aprint_normal(": %s\n", sc->sc_is_16bit ? "PCA9555" : "PCA9556");
diff -r 0456ccb1face -r 4194272c24c9 sys/dev/i2c/pcai2cmux.c
--- a/sys/dev/i2c/pcai2cmux.c   Mon Jan 18 13:29:37 2021 +0000
+++ b/sys/dev/i2c/pcai2cmux.c   Mon Jan 18 15:28:21 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: pcai2cmux.c,v 1.2 2021/01/17 21:56:20 thorpej Exp $    */
+/*     $NetBSD: pcai2cmux.c,v 1.3 2021/01/18 15:28:21 thorpej Exp $    */
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pcai2cmux.c,v 1.2 2021/01/17 21:56:20 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pcai2cmux.c,v 1.3 2021/01/18 15:28:21 thorpej Exp $");
 
 /*
  * Driver for NXP PCA954x / PCA984x I2C switches and multiplexers.
@@ -276,7 +276,7 @@
        const struct pcaiicmux_type *type = NULL;
        const struct device_compatible_entry *dce;
 
-       if (iic_compatible_match(ia, compat_data, &dce))
+       if ((dce = iic_compatible_lookup(ia, compat_data)) != NULL)
                type = dce->data;
 
        return type;
diff -r 0456ccb1face -r 4194272c24c9 sys/dev/i2c/rkpmic.c
--- a/sys/dev/i2c/rkpmic.c      Mon Jan 18 13:29:37 2021 +0000
+++ b/sys/dev/i2c/rkpmic.c      Mon Jan 18 15:28:21 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: rkpmic.c,v 1.9 2021/01/17 21:56:20 thorpej Exp $ */
+/* $NetBSD: rkpmic.c,v 1.10 2021/01/18 15:28:21 thorpej Exp $ */
 
 /*-
  * Copyright (c) 2018 Jared McNeill <jmcneill%invisible.ca@localhost>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>



Home | Main Index | Thread Index | Old Index