Change the device_compatible_entry struct to have a union of
a scalar value (uintptr_t value) and a pointer value (const void *data), rather than just "uintptr_t data". This eliminates the need for drivers to cast this value, and doesn't lose const'ness of pointers assigned to the field. Update all of the users of this field to use the correct set of designated initialisers for each specific case.
This commit is contained in:
parent
7246a94523
commit
39983299d2
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: at24cxx.c,v 1.36 2020/01/15 06:09:36 thorpej Exp $ */
|
||||
/* $NetBSD: at24cxx.c,v 1.37 2021/01/17 21:56:20 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2003 Wasabi Systems, Inc.
|
||||
|
@ -36,7 +36,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: at24cxx.c,v 1.36 2020/01/15 06:09:36 thorpej Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: at24cxx.c,v 1.37 2021/01/17 21:56:20 thorpej Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
|
@ -112,21 +112,22 @@ const struct cdevsw seeprom_cdevsw = {
|
|||
static int seeprom_wait_idle(struct seeprom_softc *);
|
||||
|
||||
static const struct device_compatible_entry compat_data[] = {
|
||||
{ "i2c-at24c01", 128 },
|
||||
{ "i2c-at24c02", 256 },
|
||||
{ "i2c-at24c04", 512 },
|
||||
{ "i2c-at24c08", 1024 },
|
||||
{ "i2c-at24c16", 2048 },
|
||||
{ "i2c-at24c32", 4096 },
|
||||
{ "i2c-at24c64", 8192 },
|
||||
{ "i2c-at24c128", 16384 },
|
||||
{ "i2c-at24c256", 32768 },
|
||||
{ "i2c-at24c512", 65536 },
|
||||
{ "i2c-at34c02", 256 },
|
||||
{ "atmel,24c02", 256 },
|
||||
{ "atmel,24c16", 2048 },
|
||||
{ "atmel,24c256", 32768 },
|
||||
{ NULL, 0 }
|
||||
{ .compat = "i2c-at24c01", .value = 128 },
|
||||
{ .compat = "i2c-at24c02", .value = 256 },
|
||||
{ .compat = "i2c-at24c04", .value = 512 },
|
||||
{ .compat = "i2c-at24c08", .value = 1024 },
|
||||
{ .compat = "i2c-at24c16", .value = 2048 },
|
||||
{ .compat = "i2c-at24c32", .value = 4096 },
|
||||
{ .compat = "i2c-at24c64", .value = 8192 },
|
||||
{ .compat = "i2c-at24c128", .value = 16384 },
|
||||
{ .compat = "i2c-at24c256", .value = 32768 },
|
||||
{ .compat = "i2c-at24c512", .value = 65536 },
|
||||
{ .compat = "i2c-at34c02", .value = 256 },
|
||||
{ .compat = "atmel,24c02", .value = 256 },
|
||||
{ .compat = "atmel,24c16", .value = 2048 },
|
||||
{ .compat = "atmel,24c256", .value = 32768 },
|
||||
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
static int
|
||||
|
@ -182,7 +183,7 @@ seeprom_attach(device_t parent, device_t self, void *aux)
|
|||
|
||||
if (sc->sc_size <= 0 && ia->ia_ncompat > 0) {
|
||||
if (iic_compatible_match(ia, compat_data, &dce))
|
||||
sc->sc_size = dce->data;
|
||||
sc->sc_size = dce->value;
|
||||
}
|
||||
|
||||
switch (sc->sc_size) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: axppmic.c,v 1.29 2020/02/16 20:32:29 thorpej Exp $ */
|
||||
/* $NetBSD: axppmic.c,v 1.30 2021/01/17 21:56:20 thorpej Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2014-2018 Jared McNeill <jmcneill@invisible.ca>
|
||||
|
@ -27,7 +27,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: axppmic.c,v 1.29 2020/02/16 20:32:29 thorpej Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: axppmic.c,v 1.30 2021/01/17 21:56:20 thorpej Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
|
@ -466,12 +466,13 @@ static const struct axppmic_config axp813_config = {
|
|||
};
|
||||
|
||||
static const struct device_compatible_entry compat_data[] = {
|
||||
{ "x-powers,axp803", (uintptr_t)&axp803_config },
|
||||
{ "x-powers,axp805", (uintptr_t)&axp805_config },
|
||||
{ "x-powers,axp806", (uintptr_t)&axp806_config },
|
||||
{ "x-powers,axp809", (uintptr_t)&axp809_config },
|
||||
{ "x-powers,axp813", (uintptr_t)&axp813_config },
|
||||
{ NULL, 0 }
|
||||
{ .compat = "x-powers,axp803", .data = &axp803_config },
|
||||
{ .compat = "x-powers,axp805", .data = &axp805_config },
|
||||
{ .compat = "x-powers,axp806", .data = &axp806_config },
|
||||
{ .compat = "x-powers,axp809", .data = &axp809_config },
|
||||
{ .compat = "x-powers,axp813", .data = &axp813_config },
|
||||
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
static int
|
||||
|
@ -950,7 +951,7 @@ axppmic_attach(device_t parent, device_t self, void *aux)
|
|||
|
||||
(void) iic_compatible_match(ia, compat_data, &dce);
|
||||
KASSERT(dce != NULL);
|
||||
c = (void *)dce->data;
|
||||
c = dce->data;
|
||||
|
||||
sc->sc_dev = self;
|
||||
sc->sc_i2c = ia->ia_tag;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: ds1307.c,v 1.34 2020/01/02 16:24:51 thorpej Exp $ */
|
||||
/* $NetBSD: ds1307.c,v 1.35 2021/01/17 21:56:20 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2003 Wasabi Systems, Inc.
|
||||
|
@ -36,7 +36,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: ds1307.c,v 1.34 2020/01/02 16:24:51 thorpej Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: ds1307.c,v 1.35 2021/01/17 21:56:20 thorpej Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
|
@ -157,28 +157,28 @@ static const struct dsrtc_model mcp7940_model = {
|
|||
};
|
||||
|
||||
static const struct device_compatible_entry compat_data[] = {
|
||||
{ "dallas,ds1307", (uintptr_t)&ds1307_model },
|
||||
{ "maxim,ds1307", (uintptr_t)&ds1307_model },
|
||||
{ "i2c-ds1307", (uintptr_t)&ds1307_model },
|
||||
{ .compat = "dallas,ds1307", .data = &ds1307_model },
|
||||
{ .compat = "maxim,ds1307", .data = &ds1307_model },
|
||||
{ .compat = "i2c-ds1307", .data = &ds1307_model },
|
||||
|
||||
{ "dallas,ds1339", (uintptr_t)&ds1339_model },
|
||||
{ "maxim,ds1339", (uintptr_t)&ds1339_model },
|
||||
{ .compat = "dallas,ds1339", .data = &ds1339_model },
|
||||
{ .compat = "maxim,ds1339", .data = &ds1339_model },
|
||||
|
||||
{ "dallas,ds1340", (uintptr_t)&ds1340_model },
|
||||
{ "maxim,ds1340", (uintptr_t)&ds1340_model },
|
||||
{ .compat = "dallas,ds1340", .data = &ds1340_model },
|
||||
{ .compat = "maxim,ds1340", .data = &ds1340_model },
|
||||
|
||||
{ "dallas,ds1672", (uintptr_t)&ds1672_model },
|
||||
{ "maxim,ds1672", (uintptr_t)&ds1672_model },
|
||||
{ .compat = "dallas,ds1672", .data = &ds1672_model },
|
||||
{ .compat = "maxim,ds1672", .data = &ds1672_model },
|
||||
|
||||
{ "dallas,ds3231", (uintptr_t)&ds3231_model },
|
||||
{ "maxim,ds3231", (uintptr_t)&ds3231_model },
|
||||
{ .compat = "dallas,ds3231", .data = &ds3231_model },
|
||||
{ .compat = "maxim,ds3231", .data = &ds3231_model },
|
||||
|
||||
{ "dallas,ds3232", (uintptr_t)&ds3232_model },
|
||||
{ "maxim,ds3232", (uintptr_t)&ds3232_model },
|
||||
{ .compat = "dallas,ds3232", .data = &ds3232_model },
|
||||
{ .compat = "maxim,ds3232", .data = &ds3232_model },
|
||||
|
||||
{ "microchip,mcp7940", (uintptr_t)&mcp7940_model },
|
||||
{ .compat = "microchip,mcp7940", .data = &mcp7940_model },
|
||||
|
||||
{ NULL, 0 }
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
struct dsrtc_softc {
|
||||
|
@ -242,7 +242,7 @@ dsrtc_model_by_number(u_int model)
|
|||
return &ds1307_model;
|
||||
|
||||
for (dce = compat_data; dce->compat != NULL; dce++) {
|
||||
dm = (void *)dce->data;
|
||||
dm = dce->data;
|
||||
if (dm->dm_model == model)
|
||||
return dm;
|
||||
}
|
||||
|
@ -256,7 +256,7 @@ dsrtc_model_by_compat(const struct i2c_attach_args *ia)
|
|||
const struct device_compatible_entry *dce;
|
||||
|
||||
if (iic_compatible_match(ia, compat_data, &dce))
|
||||
dm = (void *)dce->data;
|
||||
dm = dce->data;
|
||||
|
||||
return dm;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: fan53555.c,v 1.5 2019/12/23 19:22:46 thorpej Exp $ */
|
||||
/* $NetBSD: fan53555.c,v 1.6 2021/01/17 21:56:20 thorpej Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2018 Jared McNeill <jmcneill@invisible.ca>
|
||||
|
@ -27,7 +27,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: fan53555.c,v 1.5 2019/12/23 19:22:46 thorpej Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: fan53555.c,v 1.6 2021/01/17 21:56:20 thorpej Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
|
@ -90,9 +90,10 @@ static const int fan53555_slew_rates[] = {
|
|||
};
|
||||
|
||||
static const struct device_compatible_entry compat_data[] = {
|
||||
{ "silergy,syr827", FAN_VENDOR_SILERGY },
|
||||
{ "silergy,syr828", FAN_VENDOR_SILERGY },
|
||||
{ NULL, 0 }
|
||||
{ .compat = "silergy,syr827", .value = FAN_VENDOR_SILERGY },
|
||||
{ .compat = "silergy,syr828", .value = FAN_VENDOR_SILERGY },
|
||||
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
static uint8_t
|
||||
|
@ -310,8 +311,9 @@ fan53555_attach(device_t parent, device_t self, void *aux)
|
|||
sc->sc_phandle = ia->ia_cookie;
|
||||
|
||||
iic_compatible_match(ia, compat_data, &compat);
|
||||
KASSERT(compat != NULL);
|
||||
|
||||
if (fan53555_init(sc, compat->data) != 0)
|
||||
if (fan53555_init(sc, compat->value) != 0)
|
||||
return;
|
||||
|
||||
fdtbus_register_regulator_controller(self, sc->sc_phandle,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: m41st84.c,v 1.27 2020/01/03 03:44:42 thorpej Exp $ */
|
||||
/* $NetBSD: m41st84.c,v 1.28 2021/01/17 21:56:20 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2003 Wasabi Systems, Inc.
|
||||
|
@ -36,7 +36,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: m41st84.c,v 1.27 2020/01/03 03:44:42 thorpej Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: m41st84.c,v 1.28 2021/01/17 21:56:20 thorpej Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
|
@ -81,10 +81,11 @@ static const struct strtc_model m48t84_model = {
|
|||
};
|
||||
|
||||
static const struct device_compatible_entry compat_data[] = {
|
||||
{ "st,m41t80", (uintptr_t)&m41t80_model },
|
||||
{ "st,m41t81", (uintptr_t)&m41t81_model },
|
||||
{ "st,m41t84", (uintptr_t)&m48t84_model },
|
||||
{ NULL, 0 },
|
||||
{ .compat = "st,m41t80", .data = &m41t80_model },
|
||||
{ .compat = "st,m41t81", .data = &m41t81_model },
|
||||
{ .compat = "st,m41t84", .data = &m48t84_model },
|
||||
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
struct strtc_softc {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: pcagpio.c,v 1.6 2020/10/31 14:38:54 jdc Exp $ */
|
||||
/* $NetBSD: pcagpio.c,v 1.7 2021/01/17 21:56:20 thorpej Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2020 Michael Lorenz
|
||||
|
@ -31,7 +31,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: pcagpio.c,v 1.6 2020/10/31 14:38:54 jdc Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: pcagpio.c,v 1.7 2021/01/17 21:56:20 thorpej Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
|
@ -99,11 +99,12 @@ CFATTACH_DECL_NEW(pcagpio, sizeof(struct pcagpio_softc),
|
|||
pcagpio_match, pcagpio_attach, pcagpio_detach, NULL);
|
||||
|
||||
static const struct device_compatible_entry compat_data[] = {
|
||||
{ "i2c-pca9555", 1 },
|
||||
{ "pca9555", 1 },
|
||||
{ "i2c-pca9556", 0 },
|
||||
{ "pca9556", 0 },
|
||||
{ NULL, 0 }
|
||||
{ .compat = "i2c-pca9555", .value = 1 },
|
||||
{ .compat = "pca9555", .value = 1 },
|
||||
{ .compat = "i2c-pca9556", .value = 0 },
|
||||
{ .compat = "pca9556", .value = 0 },
|
||||
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
static int
|
||||
|
@ -157,7 +158,7 @@ pcagpio_attach(device_t parent, device_t self, void *aux)
|
|||
aprint_naive("\n");
|
||||
sc->sc_is_16bit = 0;
|
||||
if (iic_compatible_match(ia, compat_data, &dce))
|
||||
sc->sc_is_16bit = dce->data;
|
||||
sc->sc_is_16bit = dce->value;
|
||||
|
||||
aprint_normal(": %s\n", sc->sc_is_16bit ? "PCA9555" : "PCA9556");
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: pcai2cmux.c,v 1.1 2020/12/29 01:47:51 thorpej Exp $ */
|
||||
/* $NetBSD: pcai2cmux.c,v 1.2 2021/01/17 21:56:20 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.1 2020/12/29 01:47:51 thorpej Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: pcai2cmux.c,v 1.2 2021/01/17 21:56:20 thorpej Exp $");
|
||||
|
||||
/*
|
||||
* Driver for NXP PCA954x / PCA984x I2C switches and multiplexers.
|
||||
|
@ -100,53 +100,53 @@ static const struct pcaiicmux_type switch8_type = {
|
|||
static const struct device_compatible_entry compat_data[] = {
|
||||
/* PCA9540 - 2 channel i2c mux */
|
||||
{ .compat = "nxp,pca9540",
|
||||
.data = (uintptr_t)&mux2_type },
|
||||
.data = &mux2_type },
|
||||
|
||||
/* PCA9542 - 2 channel i2c mux with interrupts */
|
||||
{ .compat = "nxp,pca9542",
|
||||
.data = (uintptr_t)&mux2_type },
|
||||
.data = &mux2_type },
|
||||
|
||||
/* PCA9543 - 2 channel i2c switch with interrupts */
|
||||
{ .compat = "nxp,pca9543",
|
||||
.data = (uintptr_t)&switch2_type },
|
||||
.data = &switch2_type },
|
||||
|
||||
/* PCA9544 - 4 channel i2c mux with interrupts */
|
||||
{ .compat = "nxp,pca9544",
|
||||
.data = (uintptr_t)&mux4_type },
|
||||
.data = &mux4_type },
|
||||
|
||||
/* PCA9545 - 4 channel i2c switch with interrupts */
|
||||
{ .compat = "nxp,pca9545",
|
||||
.data = (uintptr_t)&switch4_type },
|
||||
.data = &switch4_type },
|
||||
|
||||
/* PCA9546 - 4 channel i2c switch */
|
||||
{ .compat = "nxp,pca9546",
|
||||
.data = (uintptr_t)&switch4_type },
|
||||
.data = &switch4_type },
|
||||
|
||||
/* PCA9547 - 8 channel i2c mux */
|
||||
{ .compat = "nxp,pca9547",
|
||||
.data = (uintptr_t)&mux8_type },
|
||||
.data = &mux8_type },
|
||||
|
||||
/* PCA9548 - 8 channel i2c switch */
|
||||
{ .compat = "nxp,pca9548",
|
||||
.data = (uintptr_t)&switch8_type },
|
||||
.data = &switch8_type },
|
||||
|
||||
/* PCA9846 - 4 channel i2c switch */
|
||||
{ .compat = "nxp,pca9846",
|
||||
.data = (uintptr_t)&switch4_type },
|
||||
.data = &switch4_type },
|
||||
|
||||
/* PCA9847 - 8 channel i2c mux */
|
||||
{ .compat = "nxp,pca9847",
|
||||
.data = (uintptr_t)&mux8_type },
|
||||
.data = &mux8_type },
|
||||
|
||||
/* PCA9848 - 8 channel i2c switch */
|
||||
{ .compat = "nxp,pca9848",
|
||||
.data = (uintptr_t)&switch8_type },
|
||||
.data = &switch8_type },
|
||||
|
||||
/* PCA9849 - 4 channel i2c mux */
|
||||
{ .compat = "nxp,pca9849",
|
||||
.data = (uintptr_t)&mux4_type },
|
||||
.data = &mux4_type },
|
||||
|
||||
{ NULL }
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
struct pcaiicmux_softc {
|
||||
|
@ -277,7 +277,7 @@ pcaiicmux_type_by_compat(const struct i2c_attach_args * const ia)
|
|||
const struct device_compatible_entry *dce;
|
||||
|
||||
if (iic_compatible_match(ia, compat_data, &dce))
|
||||
type = (void *)dce->data;
|
||||
type = dce->data;
|
||||
|
||||
return type;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: rkpmic.c,v 1.8 2020/01/03 01:17:29 jmcneill Exp $ */
|
||||
/* $NetBSD: rkpmic.c,v 1.9 2021/01/17 21:56:20 thorpej Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2018 Jared McNeill <jmcneill@invisible.ca>
|
||||
|
@ -27,7 +27,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: rkpmic.c,v 1.8 2020/01/03 01:17:29 jmcneill Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: rkpmic.c,v 1.9 2021/01/17 21:56:20 thorpej Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
|
@ -212,7 +212,7 @@ struct rkpmic_softc {
|
|||
i2c_addr_t sc_addr;
|
||||
int sc_phandle;
|
||||
struct todr_chip_handle sc_todr;
|
||||
struct rkpmic_config *sc_conf;
|
||||
const struct rkpmic_config *sc_conf;
|
||||
struct clk_domain sc_clkdom;
|
||||
struct rkpmic_clk sc_clk[2];
|
||||
};
|
||||
|
@ -229,9 +229,10 @@ struct rkreg_attach_args {
|
|||
};
|
||||
|
||||
static const struct device_compatible_entry compat_data[] = {
|
||||
{ "rockchip,rk805", (uintptr_t)&rk805_config },
|
||||
{ "rockchip,rk808", (uintptr_t)&rk808_config },
|
||||
{ NULL }
|
||||
{ .compat = "rockchip,rk805", .data = &rk805_config },
|
||||
{ .compat = "rockchip,rk808", .data = &rk808_config },
|
||||
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
static uint8_t
|
||||
|
@ -472,7 +473,7 @@ rkpmic_attach(device_t parent, device_t self, void *aux)
|
|||
sc->sc_i2c = ia->ia_tag;
|
||||
sc->sc_addr = ia->ia_addr;
|
||||
sc->sc_phandle = ia->ia_cookie;
|
||||
sc->sc_conf = (void *)entry->data;
|
||||
sc->sc_conf = entry->data;
|
||||
|
||||
memset(&sc->sc_todr, 0, sizeof(sc->sc_todr));
|
||||
sc->sc_todr.cookie = sc;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: device.h,v 1.159 2020/11/24 16:17:04 christos Exp $ */
|
||||
/* $NetBSD: device.h,v 1.160 2021/01/17 21:56:20 thorpej Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1996, 2000 Christopher G. Demetriou
|
||||
|
@ -125,7 +125,10 @@ typedef struct cfattach *cfattach_t;
|
|||
#if defined(_KERNEL) || defined(_KMEMUSER)
|
||||
struct device_compatible_entry {
|
||||
const char *compat;
|
||||
uintptr_t data;
|
||||
union {
|
||||
const void *data;
|
||||
uintptr_t value;
|
||||
};
|
||||
};
|
||||
|
||||
struct device_lock {
|
||||
|
|
Loading…
Reference in New Issue