Re: mmccam -> no more cards/sdio but "mmcprobe"
- In reply to: Bjoern A. Zeeb: "Re: mmccam -> no more cards/sdio but "mmcprobe""
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 21 Jul 2025 01:12:30 UTC
On Mon, 21 Jul 2025, Bjoern A. Zeeb wrote:
> On Mon, 21 Jul 2025, Bjoern A. Zeeb wrote:
>
>> On Sun, 20 Jul 2025, Warner Losh wrote:
>>
>>> On Sun, Jul 20, 2025, 5:19 PM Bjoern A. Zeeb
>>> <bzeeb-lists@lists.zabbadoz.net>
>>> wrote:
>>>
>>>> Hi,
>>>>
>>>> I've updated one of my trees to main after a longer while and I am
>>>> confused that I no longer see and SD card or SDIO (this is netbooted):
>>>>
>>>> # sysctl kern.features.mmccam
>>>> kern.features.mmccam: 1
>>>>
>>>> # camcontrol devlist -v
>>>> scbus0 on dw_mmc_sim0 bus 0:
>>>> <> at scbus0 target 0 lun 0 (mmcprobe0)
>>>> scbus1 on dw_mmc_sim1 bus 0:
>>>> <> at scbus1 target 0 lun 0 (mmcprobe1)
>>>> scbus-1 on xpt0 bus 0:
>>>> <> at scbus-1 target -1 lun ffffffff
>>>> (xpt0)
>>>>
>>>> Where to start looking?
>>>>
>>>
>>> So those probes are put there to evaluate devices that were found. If they
>>> remain, then that never finished. Most likely never started.
>>>
>>> What hardware is this on?
>>
>> arm64, rockchip
>>
>> [1.000651] rockchip_dwmmc0: <Synopsys DesignWare Mobile Storage Host
>> Controller (RockChip)> mem 0xff500000-0xff503fff irq 42 on ofwbus0
>> [1.000652] rockchip_dwmmc0: vmmc-supply regulator found
>> [1.000653] rockchip_dwmmc0: vqmmc-supply regulator found
>> [1.000654] rockchip_dwmmc0: Hardware version ID is 270a
>> [1.000656] rockchip_dwmmc0: Disabling HS200+ (tuning code not written)
>> [1.000657] ofwbus0: <mmc@ff510000> mem 0xff510000-0xff513fff irq 43
>> disabled compat rockchip,rk3328-dw-mshc (no driver attached)
>> [1.000658] rockchip_dwmmc1: <Synopsys DesignWare Mobile Storage Host
>> Controller (RockChip)> mem 0xff520000-0xff523fff irq 44 on ofwbus0
>> [1.000659] rockchip_dwmmc1: Hardware version ID is 270a
>> [1.000660] rockchip_dwmmc1: Disabling HS200+ (tuning code not written)
>
> I found the tunable:
>
> kern.cam.dflags=0x41
>
> Output see below; if it helps I can run with 0xff:
>
> [1.035158] (noperiph:dw_mmc_sim0:0:-1:ffffffff):
> xpt_async(AC_PATH_REGISTERED)
> [1.035752] (noperiph:dw_mmc_sim1:0:-1:ffffffff):
> xpt_async(AC_PATH_REGISTERED)
> [1.038843] (noperiph:dw_mmc_sim0:0:-1:ffffffff): XPT_SCAN_{BUS,TGT,LUN}
> [1.039609] (noperiph:dw_mmc_sim0:0:0:0): XPT_SCAN_{BUS,TGT,LUN}
> [1.040031] (noperiph:dw_mmc_sim0:0:0:0): Set up the mmcprobe device...
> [1.040560] (mmcprobe0:dw_mmc_sim0:0:0:0): Periph created
> [1.040933] (mmcprobe0:dw_mmc_sim0:0:0:0): Probe started
> [1.041289] (mmcprobe0:dw_mmc_sim0:0:0:0): Probe PROBE_INVALID to PROBE_RESET
> [1.041809] (mmcprobe0:dw_mmc_sim0:0:0:0): mmcprobe_start
> [1.042163] (mmcprobe0:dw_mmc_sim0:0:0:0): Start with PROBE_RESET
> [1.042588] (mmcprobe0:dw_mmc_sim0:0:0:0): Start with PROBE_IDENTIFY
> [1.043249] (noperiph:dw_mmc_sim1:0:-1:ffffffff): XPT_SCAN_{BUS,TGT,LUN}
> [1.043729] (noperiph:dw_mmc_sim1:0:0:0): XPT_SCAN_{BUS,TGT,LUN}
> [1.044143] (noperiph:dw_mmc_sim1:0:0:0): Set up the mmcprobe device...
> [1.044650] (mmcprobe1:dw_mmc_sim1:0:0:0): Periph created
> [1.045007] (mmcprobe1:dw_mmc_sim1:0:0:0): Probe started
> [1.045362] (mmcprobe1:dw_mmc_sim1:0:0:0): Probe PROBE_INVALID to PROBE_RESET
> [1.045878] (mmcprobe1:dw_mmc_sim1:0:0:0): mmcprobe_start
> [1.046237] (mmcprobe1:dw_mmc_sim1:0:0:0): Start with PROBE_RESET
> [1.046655] (mmcprobe1:dw_mmc_sim1:0:0:0): Start with PROBE_IDENTIFY
> [1.085627] (mmcprobe0:dw_mmc_sim0:0:0:0): mmcprobe_done
> [1.085996] (mmcprobe0:dw_mmc_sim0:0:0:0): done with PROBE_RESET
> [1.086437] (mmcprobe0:dw_mmc_sim0:0:0:0): Probe PROBE_RESET to
> PROBE_POWER_OFF
> [1.086997] (mmcprobe0:dw_mmc_sim0:0:0:0): mmcprobe_done: remaining freeze
> count 0
> [1.087592] (mmcprobe1:dw_mmc_sim1:0:0:0): mmcprobe_done
> [1.087970] (mmcprobe1:dw_mmc_sim1:0:0:0): done with PROBE_RESET
> [1.088396] (mmcprobe1:dw_mmc_sim1:0:0:0): Probe PROBE_RESET to
> PROBE_POWER_OFF
> [1.088936] (mmcprobe1:dw_mmc_sim1:0:0:0): mmcprobe_done: remaining freeze
> count 0
>
>
> Hmm okay:
>
> # sysctl kern.cam.dflags
> kern.cam.dflags: 255
>
> not much else...
>
> [1.000646] rockchip_dwmmc0: <Synopsys DesignWare Mobile Storage Host
> Controller (RockChip)> mem 0xff500000-0xff503fff irq 42 on ofwbus0
> [1.000647] rockchip_dwmmc0: vmmc-supply regulator found
> [1.000648] rockchip_dwmmc0: vqmmc-supply regulator found
> [1.000649] rockchip_dwmmc0: Hardware version ID is 270a
> [1.000651] rockchip_dwmmc0: Disabling HS200+ (tuning code not written)
> [1.000652] ofwbus0: <mmc@ff510000> mem 0xff510000-0xff513fff irq 43 disabled
> compat rockchip,rk3328-dw-mshc (no driver attached)
> [1.000653] rockchip_dwmmc1: <Synopsys DesignWare Mobile Storage Host
> Controller (RockChip)> mem 0xff520000-0xff523fff irq 44 on ofwbus0
> [1.000654] rockchip_dwmmc1: Hardware version ID is 270a
> [1.000655] rockchip_dwmmc1: Disabling HS200+ (tuning code not written)
> [1.000682] ofwbus0: <mmc@ff5f0000> mem 0xff5f0000-0xff5f3fff irq 50 disabled
> compat rockchip,rk3328-dw-mshc (no driver attached)
> [1.035161] (noperiph:dw_mmc_sim0:0:-1:ffffffff):
> xpt_async(AC_PATH_REGISTERED)
> [1.035754] (noperiph:dw_mmc_sim1:0:-1:ffffffff):
> xpt_async(AC_PATH_REGISTERED)
> [1.038855] (noperiph:dw_mmc_sim0:0:-1:ffffffff): XPT_SCAN_{BUS,TGT,LUN}
> [1.039618] (noperiph:dw_mmc_sim0:0:0:0): XPT_SCAN_{BUS,TGT,LUN}
> [1.040041] (noperiph:dw_mmc_sim0:0:0:0): Set up the mmcprobe device...
> [1.040572] (mmcprobe0:dw_mmc_sim0:0:0:0): Periph created
> [1.040945] (mmcprobe0:dw_mmc_sim0:0:0:0): Probe started
> [1.041301] (mmcprobe0:dw_mmc_sim0:0:0:0): Probe PROBE_INVALID to PROBE_RESET
> [1.041817] (mmcprobe0:dw_mmc_sim0:0:0:0): mmcprobe_start
> [1.042171] (mmcprobe0:dw_mmc_sim0:0:0:0): Start with PROBE_RESET
> [1.042595] (mmcprobe0:dw_mmc_sim0:0:0:0): Start with PROBE_IDENTIFY
> [1.043257] (noperiph:dw_mmc_sim1:0:-1:ffffffff): XPT_SCAN_{BUS,TGT,LUN}
> [1.043737] (noperiph:dw_mmc_sim1:0:0:0): XPT_SCAN_{BUS,TGT,LUN}
> [1.044151] (noperiph:dw_mmc_sim1:0:0:0): Set up the mmcprobe device...
> [1.044658] (mmcprobe1:dw_mmc_sim1:0:0:0): Periph created
> [1.045015] (mmcprobe1:dw_mmc_sim1:0:0:0): Probe started
> [1.045370] (mmcprobe1:dw_mmc_sim1:0:0:0): Probe PROBE_INVALID to PROBE_RESET
> [1.045886] (mmcprobe1:dw_mmc_sim1:0:0:0): mmcprobe_start
> [1.046244] (mmcprobe1:dw_mmc_sim1:0:0:0): Start with PROBE_RESET
> [1.046663] (mmcprobe1:dw_mmc_sim1:0:0:0): Start with PROBE_IDENTIFY
> [1.085689] (mmcprobe0:dw_mmc_sim0:0:0:0): mmcprobe_done
> [1.086059] (mmcprobe0:dw_mmc_sim0:0:0:0): done with PROBE_RESET
> [1.086488] (mmcprobe0:dw_mmc_sim0:0:0:0): Probe PROBE_RESET to
> PROBE_POWER_OFF
> [1.087023] (mmcprobe0:dw_mmc_sim0:0:0:0): mmcprobe_done: remaining freeze
> count 0
> [1.088196] (mmcprobe1:dw_mmc_sim1:0:0:0): mmcprobe_done
> [1.088625] (mmcprobe1:dw_mmc_sim1:0:0:0): done with PROBE_RESET
> [1.089343] (mmcprobe1:dw_mmc_sim1:0:0:0): Probe PROBE_RESET to
> PROBE_POWER_OFF
> [1.090285] (mmcprobe1:dw_mmc_sim1:0:0:0): mmcprobe_done: remaining freeze
> count 0
Similar on an NXP LS1088 with mmccam:
# dmesg -a | egrep -iE '(mmc|sdhci)'
[1.000313] sdhci_fsl_fdt0: <NXP QorIQ Layerscape eSDHC controller> mem 0x2140000-0x214ffff irq 20 on simplebus0
[1.000314] sdhci_fsl_fdt0: sdhci_fsl_fdt_attach:947: baseclk_hz 600000000 = clk_hz 1200000000 / baseclk_div 2
[1.000315] sdhci_fsl_fdt0: vendor_ver: 0x20
[1.000316] sdhci_fsl_fdt0: sdhci_fsl_fdt_attach:970: maxclk_hz 25000000 = f_max 25000000 ?: baseclk_hz 600000000
[1.000317] sdhci_fsl_fdt0-slot0: Hardware doesn't specify timeout clock frequency, setting BROKEN_TIMEOUT quirk.
[1.000319] sdhci_fsl_fdt0-slot0: 25MHz HS 4bits VDD: 3.3V VCCQ: 3.3V 1.8V 1.2V DRV: B DMA removable
sdhci_fsl_fdt0-slot0: eMMC: HS200
sdhci_fsl_fdt0-slot0: UHS-I: SDR12 SDR25 SDR50 SDR104 DDR50
sdhci_fsl_fdt0-slot0: Re-tuning count 0 secs, mode 3
[1.000320] sdhci_fsl_fdt0-slot0: ============== REGISTER DUMP ==============
sdhci_fsl_fdt0-slot0: Sys addr: 0xf6814000 | Version: 0x00002002
sdhci_fsl_fdt0-slot0: Blk size: 0x00000200 | Blk cnt: 0x00000020
sdhci_fsl_fdt0-slot0: Argument: 0x00000000 | Trn mode: 0x00000000
sdhci_fsl_fdt0-slot0: Present: 0x01fd0000 | Host ctl: 0x00000002
sdhci_fsl_fdt0-slot0: Power: 0x0000000d | Blk gap: 0x00000000
sdhci_fsl_fdt0-slot0: Wake-up: 0x00000000 | Clock: 0x00000003
sdhci_fsl_fdt0-slot0: Timeout: 0x0000000c | Int stat: 0x00000000
sdhci_fsl_fdt0-slot0: Int enab: 0x377f11cf | Sig enab: 0x00000000
sdhci_fsl_fdt0-slot0: AC12 err: 0x00000000 | Host ctl2:0x00000000
sdhci_fsl_fdt0-slot0: Caps: 0x35f20000 | Caps2: 0x0000af07
sdhci_fsl_fdt0-slot0: Max curr: 0x00000000 | ADMA err: 0x00000000
sdhci_fsl_fdt0-slot0: ADMA addr:0x00000000 | Slot int: 0x00000000
sdhci_fsl_fdt0-slot0: ===========================================
[1.000321] sdhci_fsl_fdt0-slot0: Card inserted
[1.000323] exclusive sleep mutex SD slot mtx (sdhci) r = 0 (0xffffa0800529ec38) locked @ /usr/src/sys/dev/sdhci/sdhci.c:688
[1.000331] #6 0xffff000000031f58 at mmccam_start_discovery+0x1c
[1.000332] #7 0xffff000000271688 at sdhci_card_task+0x108
[1.000333] #8 0xffff000000278334 at sdhci_fsl_fdt_attach+0x5b0
[1.033269] (noperiph:sdhci_slot0:0:-1:ffffffff): xpt_async(AC_PATH_REGISTERED)
[1.046019] (noperiph:sdhci_slot0:0:-1:ffffffff): XPT_SCAN_{BUS,TGT,LUN}
[1.051372] (noperiph:sdhci_slot0:0:0:0): XPT_SCAN_{BUS,TGT,LUN}
[1.080359] (noperiph:sdhci_slot0:0:0:0): Set up the mmcprobe device...
[1.085760] (mmcprobe0:sdhci_slot0:0:0:0): Periph created
[1.089831] (mmcprobe0:sdhci_slot0:0:0:0): Probe started
[1.093833] (mmcprobe0:sdhci_slot0:0:0:0): Probe PROBE_INVALID to PROBE_RESET
[1.099670] (mmcprobe0:sdhci_slot0:0:0:0): mmcprobe_start
[1.103756] (mmcprobe0:sdhci_slot0:0:0:0): Start with PROBE_RESET
[1.108542] (mmcprobe0:sdhci_slot0:0:0:0): Start with PROBE_IDENTIFY
[1.113823] (mmcprobe0:sdhci_slot0:0:0:0): mmcprobe_done
[1.117667] (mmcprobe0:sdhci_slot0:0:0:0): done with PROBE_RESET
[1.122371] (mmcprobe0:sdhci_slot0:0:0:0): Probe PROBE_RESET to PROBE_POWER_OFF
[1.128379] (mmcprobe0:sdhci_slot0:0:0:0): mmcprobe_done: remaining freeze count 0
# camcontrol devlist -v
scbus0 on sdhci_slot0 bus 0:
<> at scbus0 target 0 lun 0 (mmcprobe0)
...
--
Bjoern A. Zeeb r15:7