Hi,

on my i.MX8MM EVK there's a ath10k-based WiFi chip which we
unfortunately do not support (yet?).  But the SD/MMC CIS parser
complains:

sdmmc0: CIS parse error at 4136, tuple code 0x14, length 0
manufacturer 0x0271, product 0x0701 at sdmmc0 function 1 not configured

It's not a transmission bug though, since I saw prints from a Linux
dmesg on the web[0] stating something similar:

<4>mmc0: queuing unknown CIS tuple 0x01 (3 bytes)
<4>mmc0: queuing unknown CIS tuple 0x1a (5 bytes)
<4>mmc0: queuing unknown CIS tuple 0x1b (8 bytes)
<4>mmc0: queuing unknown CIS tuple 0x14 (0 bytes)

I guess the ath10k-Chips use some vendor-specific tuples in the CIS
structure.  The thing that our CIS parser complains about is the tuple
without a length.

Section 16 of the SDIO Simplified Specification 3.0[1] describes the CIS
formats, with Section 16.2 describing the Basic Tuple Format.  What our
code calls "tpllen", the tuple body length, is called "link field" in
the specification.

The specification explicitly says, that a empty tuple body is fine, by
saying: "If the link field is 0, then the tuple body is empty."

Thus I propose that instead of complaining about that tuple, we just
continue our job.  I guess sometimes the existance of a code is infor-
mation enough.

ok?

Patrick

[0] 
https://linuxlists.cc/l/9/linux-wireless/t/3226749/ath10k-sdio:_failed_to_load_firmware
[1] 
https://www.sdcard.org/downloads/pls/pdf/index.php?p=PartE1_SDIO_Simplified_Specification_Ver3.00.jpg&f=PartE1_SDIO_Simplified_Specification_Ver3.00.pdf&e=EN_SSE1

diff --git a/sys/dev/sdmmc/sdmmc_cis.c b/sys/dev/sdmmc/sdmmc_cis.c
index 21cf530b24f..09f3a70af40 100644
--- a/sys/dev/sdmmc/sdmmc_cis.c
+++ b/sys/dev/sdmmc/sdmmc_cis.c
@@ -76,12 +76,8 @@ sdmmc_read_cis(struct sdmmc_function *sf, struct sdmmc_cis 
*cis)
                        continue;
 
                tpllen = sdmmc_io_read_1(sf0, reg++);
-               if (tpllen == 0) {
-                       printf("%s: CIS parse error at %d, "
-                           "tuple code %#x, length %d\n",
-                           DEVNAME(sf->sc), reg, tplcode, tpllen);
-                       break;
-               }
+               if (tpllen == 0)
+                       continue;
 
                switch (tplcode) {
                case SD_IO_CISTPL_FUNCID:

Reply via email to