Module Name: src Committed By: jmcneill Date: Fri Jan 17 11:54:50 UTC 2025
Modified Files: src/sys/dev/sdmmc: sdmmc_cis.c sdmmcvar.h Log Message: sdmmc: Capture lan_nid and expose sdmmc_cisptr LAN NID contains the MAC address for networking adapters. Device drivers may want to processor vendor specific tuple codes, so expose sdmmc_cisptr to help this. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/sys/dev/sdmmc/sdmmc_cis.c cvs rdiff -u -r1.37 -r1.38 src/sys/dev/sdmmc/sdmmcvar.h 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/sdmmc/sdmmc_cis.c diff -u src/sys/dev/sdmmc/sdmmc_cis.c:1.9 src/sys/dev/sdmmc/sdmmc_cis.c:1.10 --- src/sys/dev/sdmmc/sdmmc_cis.c:1.9 Sun Oct 13 18:21:20 2024 +++ src/sys/dev/sdmmc/sdmmc_cis.c Fri Jan 17 11:54:50 2025 @@ -1,4 +1,4 @@ -/* $NetBSD: sdmmc_cis.c,v 1.9 2024/10/13 18:21:20 jmcneill Exp $ */ +/* $NetBSD: sdmmc_cis.c,v 1.10 2025/01/17 11:54:50 jmcneill Exp $ */ /* $OpenBSD: sdmmc_cis.c,v 1.1 2006/06/01 21:53:41 uwe Exp $ */ /* @@ -20,7 +20,7 @@ /* Routines to decode the Card Information Structure of SD I/O cards */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sdmmc_cis.c,v 1.9 2024/10/13 18:21:20 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sdmmc_cis.c,v 1.10 2025/01/17 11:54:50 jmcneill Exp $"); #ifdef _KERNEL_OPT #include "opt_sdmmc.h" @@ -41,7 +41,6 @@ __KERNEL_RCSID(0, "$NetBSD: sdmmc_cis.c, #define DPRINTF(s) /**/ #endif -static uint32_t sdmmc_cisptr(struct sdmmc_function *); static void decode_funce_common(struct sdmmc_function *, struct sdmmc_cis *, int, uint32_t); static void decode_funce_function(struct sdmmc_function *, struct sdmmc_cis *, @@ -49,7 +48,7 @@ static void decode_funce_function(struct static void decode_vers_1(struct sdmmc_function *, struct sdmmc_cis *, int, uint32_t); -static uint32_t +uint32_t sdmmc_cisptr(struct sdmmc_function *sf) { uint32_t cisptr = 0; @@ -108,7 +107,6 @@ decode_funce_lan_nid(struct sdmmc_functi { struct sdmmc_function *sf0 = sf->sc->sc_fn0; device_t dev = sf->sc->sc_dev; - uint8_t mac[6] __unused; int i; if (tpllen != 8) { @@ -117,13 +115,19 @@ decode_funce_lan_nid(struct sdmmc_functi return; } + if (sdmmc_io_read_1(sf0, reg++) != 6) { + aprint_error_dev(dev, + "CISTPL_FUNCE(lan_nid) invalid\n"); + } + for (i = 0; i < 6; i++) { - mac[i] = sdmmc_io_read_1(sf0, reg++); + cis->lan_nid[i] = sdmmc_io_read_1(sf0, reg++); } DPRINTF( ("CISTPL_FUNCE: LAN_NID=%02x:%02x:%02x:%02x:%02x:%02x\n", - mac[0], mac[1], mac[2], mac[3], mac[4], mac[5])); + cis->lan_nid[0], cis->lan_nid[1], cis->lan_nid[2], + cis->lan_nid[3], cis->lan_nid[4], cis->lan_nid[5])); } static void Index: src/sys/dev/sdmmc/sdmmcvar.h diff -u src/sys/dev/sdmmc/sdmmcvar.h:1.37 src/sys/dev/sdmmc/sdmmcvar.h:1.38 --- src/sys/dev/sdmmc/sdmmcvar.h:1.37 Fri Oct 18 11:03:52 2024 +++ src/sys/dev/sdmmc/sdmmcvar.h Fri Jan 17 11:54:50 2025 @@ -1,4 +1,4 @@ -/* $NetBSD: sdmmcvar.h,v 1.37 2024/10/18 11:03:52 jmcneill Exp $ */ +/* $NetBSD: sdmmcvar.h,v 1.38 2025/01/17 11:54:50 jmcneill Exp $ */ /* $OpenBSD: sdmmcvar.h,v 1.13 2009/01/09 10:55:22 jsg Exp $ */ /* @@ -187,6 +187,7 @@ struct sdmmc_cis { u_char cis1_minor; char cis1_info_buf[256]; char *cis1_info[4]; + uint8_t lan_nid[6]; }; /* @@ -393,6 +394,7 @@ int sdmmc_io_function_enable(struct sdmm void sdmmc_io_function_disable(struct sdmmc_function *); int sdmmc_io_function_abort(struct sdmmc_function *); +uint32_t sdmmc_cisptr(struct sdmmc_function *); int sdmmc_read_cis(struct sdmmc_function *, struct sdmmc_cis *); void sdmmc_print_cis(struct sdmmc_function *); void sdmmc_check_cis_quirks(struct sdmmc_function *);