* Re: [PATCH V23 15/16] mmc: sdhci-pci-gli: enable UHS-II mode for GL9755
[not found] ` <20241018105333.4569-16-victorshihgli@gmail.com>
@ 2025-02-19 21:32 ` Janne Grunau
2025-03-05 0:56 ` Ben Chuang
0 siblings, 1 reply; 3+ messages in thread
From: Janne Grunau @ 2025-02-19 21:32 UTC (permalink / raw)
To: Victor Shih
Cc: ulf.hansson, adrian.hunter, linux-mmc, linux-kernel, benchuanggli,
Lucas.Lai, HL.Liu, Greg.tu, dlunev, Ben Chuang, AKASHI Takahiro,
Victor Shih, asahi
Hej,
On Fri, Oct 18, 2024 at 06:53:32PM +0800, Victor Shih wrote:
> From: Victor Shih <victor.shih@genesyslogic.com.tw>
>
> Changes are:
> * Disable GL9755 overcurrent interrupt when power on/off on UHS-II.
> * Enable the internal clock when do reset on UHS-II mode.
> * Increase timeout value before detecting UHS-II interface.
> * Add vendor settings fro UHS-II mode.
> * Remove sdhci_gli_enable_internal_clock functon unused clk_ctrl variable.
> * Make a function sdhci_gli_wait_software_reset_done() for gl9755 reset.
> * Remove unnecessary code from sdhci_gl9755_reset().
>
> Signed-off-by: Ben Chuang <ben.chuang@genesyslogic.com.tw>
> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
> Signed-off-by: Victor Shih <victor.shih@genesyslogic.com.tw>
> Signed-off-by: Lucas Lai <lucas.lai@genesyslogic.com.tw>
> ---
>
> drivers/mmc/host/sdhci-pci-gli.c | 235 ++++++++++++++++++++++++++++++-
> 1 file changed, 234 insertions(+), 1 deletion(-)
This change results in error messages / timeout about UHS2 followed by
register dumps with the GL9755 integrated in Apple silicon Macbook Pros
and Mac Studio systems. Non UHS-II function of controller does not seem
to be affected. Apple advertises the the SDXC slot as UHS-II capable.
The only quirk we've experienced with gl9755 on this platform is that 8
and 16 bit MMIO reads do not work. Workaround added in commit
c064bb5c78c1b ("mmc: sdhci-pci-gli: GL975[50]: Issue 8/16-bit MMIO reads
as 32-bit reads.").
If you have ideas or patches to try I'm happy to do that. If not we can
look into what MacOS does.
See kernel log and lspci output below
Thanks,
Janne
[ 38.130033] kernel: sdhci: Secure Digital Host Controller Interface driver
[ 38.130141] kernel: sdhci: Copyright(c) Pierre Ossman
[ 38.133352] kernel: sdhci-pci 0000:02:00.0: Adding to iommu group 13
[ 38.160551] kernel: sdhci-pci 0000:02:00.0: SDHCI controller found [17a0:9755] (rev 1)
[ 38.160655] kernel: sdhci-pci 0000:02:00.0: enabling device (0000 -> 0002)
[ 38.160750] kernel: mmc0: SDHCI controller on PCI [0000:02:00.0] using ADMA 64-bit
[ 38.274617] kernel: mmc0: not detect UHS2 interface in 100ms.
[ 38.274717] kernel: mmc0: sdhci: ============ SDHCI REGISTER DUMP ===========
[ 38.274782] kernel: mmc0: sdhci: Sys addr: 0x00000000 | Version: 0x00000005
[ 38.277391] kernel: mmc0: sdhci: Blk size: 0x00000000 | Blk cnt: 0x00000000
[ 38.277475] kernel: mmc0: sdhci: Argument: 0x00000000 | Trn mode: 0x00000000
[ 38.280125] kernel: mmc0: sdhci: Present: 0x20070000 | Host ctl: 0x00000000
[ 38.280206] kernel: mmc0: sdhci: Power: 0x000000bf | Blk gap: 0x00000000
[ 38.284511] kernel: mmc0: sdhci: Wake-up: 0x00000000 | Clock: 0x0000032f
[ 38.284592] kernel: mmc0: sdhci: Timeout: 0x00000007 | Int stat: 0x00000000
[ 38.284636] kernel: mmc0: sdhci: Int enab: 0x00ff0083 | Sig enab: 0x00ff0083
[ 38.287200] kernel: mmc0: sdhci: ACmd stat: 0x00000000 | Slot int: 0x00000000
[ 38.287281] kernel: mmc0: sdhci: Caps: 0x396a3281 | Caps_1: 0x1803057f
[ 38.291212] kernel: mmc0: sdhci: Cmd: 0x00000000 | Max curr: 0x000000c8
[ 38.291292] kernel: mmc0: sdhci: Resp[0]: 0x00000000 | Resp[1]: 0x00000000
[ 38.291335] kernel: mmc0: sdhci: Resp[2]: 0x00000000 | Resp[3]: 0x00000000
[ 38.293513] kernel: mmc0: sdhci: Host ctl2: 0x00009107
[ 38.293604] kernel: mmc0: sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x0000000000000000
[ 38.297842] kernel: mmc0: sdhci_uhs2: ==================== UHS2 ==================
[ 38.297923] kernel: mmc0: sdhci_uhs2: Blk Size: 0x00000000 | Blk Cnt: 0x00000000
[ 38.297968] kernel: mmc0: sdhci_uhs2: Cmd: 0x00000000 | Trn mode: 0x00000000
[ 38.300773] kernel: mmc0: sdhci_uhs2: Int Stat: 0x00000000 | Dev Sel : 0x00000000
[ 38.300853] kernel: mmc0: sdhci_uhs2: Dev Int Code: 0x00000000
[ 38.304739] kernel: mmc0: sdhci_uhs2: Reset: 0x00000000 | Timer: 0x000000a7
[ 38.304811] kernel: mmc0: sdhci_uhs2: ErrInt: 0x00000000 | ErrIntEn: 0x00030000
[ 38.304856] kernel: mmc0: sdhci_uhs2: ErrSigEn: 0x00030000
[ 38.307110] kernel: mmc0: sdhci: ============================================
[ 38.307201] kernel: mmc0: cannot detect UHS2 interface.
[ 38.310110] kernel: mmc0: failed to initial phy for UHS-II!
[ 38.424645] kernel: mmc0: not detect UHS2 interface in 100ms.
[ 38.424731] kernel: mmc0: sdhci: ============ SDHCI REGISTER DUMP ===========
[ 38.424758] kernel: mmc0: sdhci: Sys addr: 0x00000000 | Version: 0x00000005
[ 38.424782] kernel: mmc0: sdhci: Blk size: 0x00000000 | Blk cnt: 0x00000000
[ 38.424840] kernel: mmc0: sdhci: Argument: 0x00000000 | Trn mode: 0x00000000
[ 38.427603] kernel: mmc0: sdhci: Present: 0x20070000 | Host ctl: 0x00000000
[ 38.427659] kernel: mmc0: sdhci: Power: 0x000000bf | Blk gap: 0x00000000
[ 38.430579] kernel: mmc0: sdhci: Wake-up: 0x00000000 | Clock: 0x0000032f
[ 38.430626] kernel: mmc0: sdhci: Timeout: 0x00000007 | Int stat: 0x00000000
[ 38.433504] kernel: mmc0: sdhci: Int enab: 0x00ff0083 | Sig enab: 0x00ff0083
[ 38.433550] kernel: mmc0: sdhci: ACmd stat: 0x00000000 | Slot int: 0x00000000
[ 38.437596] kernel: mmc0: sdhci: Caps: 0x396a3281 | Caps_1: 0x1803057f
[ 38.437641] kernel: mmc0: sdhci: Cmd: 0x00000000 | Max curr: 0x000000c8
[ 38.437677] kernel: mmc0: sdhci: Resp[0]: 0x00000000 | Resp[1]: 0x00000000
[ 38.440318] kernel: mmc0: sdhci: Resp[2]: 0x00000000 | Resp[3]: 0x00000000
[ 38.440345] kernel: mmc0: sdhci: Host ctl2: 0x00009107
[ 38.444119] kernel: mmc0: sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x0000000000000000
[ 38.444161] kernel: mmc0: sdhci_uhs2: ==================== UHS2 ==================
[ 38.444184] kernel: mmc0: sdhci_uhs2: Blk Size: 0x00000000 | Blk Cnt: 0x00000000
[ 38.446918] kernel: mmc0: sdhci_uhs2: Cmd: 0x00000000 | Trn mode: 0x00000000
[ 38.446958] kernel: mmc0: sdhci_uhs2: Int Stat: 0x00000000 | Dev Sel : 0x00000000
[ 38.450833] kernel: mmc0: sdhci_uhs2: Dev Int Code: 0x00000000
[ 38.450874] kernel: mmc0: sdhci_uhs2: Reset: 0x00000000 | Timer: 0x000000a7
[ 38.450907] kernel: mmc0: sdhci_uhs2: ErrInt: 0x00000000 | ErrIntEn: 0x00030000
[ 38.454625] kernel: mmc0: sdhci_uhs2: ErrSigEn: 0x00030000
[ 38.454665] kernel: mmc0: sdhci: ============================================
[ 38.454699] kernel: mmc0: cannot detect UHS2 interface.
[ 38.456705] kernel: mmc0: failed to initial phy for UHS-II!
`lspci -vvvnn -d 17a0:9755` output:
02:00.0 SD Host controller [0805]: Genesys Logic, Inc GL9755 SD Host Controller [17a0:9755] (rev 01) (prog-if 01)
Subsystem: Genesys Logic, Inc GL9755 SD Host Controller [17a0:9755]
Device tree node: /sys/firmware/devicetree/base/soc@200000000/pcie@590000000/pci@1,0/mmc@0,0
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 168
IOMMU group: 13
Region 0: Memory at 5c1e00000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [80] Express (v2) Endpoint, IntMsgNum 0
DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 0W TEE-IO-
DevCtl: CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+
MaxPayload 128 bytes, MaxReadReq 512 bytes
DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
LnkCap: Port #85, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <4us, L1 unlimited
ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
LnkCtl: ASPM Disabled; RCB 64 bytes, LnkDisable- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 5GT/s, Width x1
TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP- LTR+
10BitTagComp- 10BitTagReq- OBFF Via message/WAKE#, ExtFmt- EETLPPrefix-
EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
FRS- TPHComp- ExtTPHComp-
AtomicOpsCap: 32bit- 64bit- 128bitCAS-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
AtomicOpsCtl: ReqEn-
IDOReq- IDOCompl- LTR+ EmergencyPowerReductionReq-
10BitTagReq- OBFF Disabled, EETLPPrefixBlk-
LnkCap2: Supported Link Speeds: 2.5-5GT/s, Crosslink- Retimer- 2Retimers- DRS-
LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
Retimer- 2Retimers- CrosslinkRes: unsupported
Capabilities: [e0] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fffff000 Data: 0018
Capabilities: [f8] Power Management version 3
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME+
Capabilities: [100 v1] Vendor Specific Information: ID=17a0 Rev=1 Len=008 <?>
Capabilities: [108 v1] Latency Tolerance Reporting
Max snoop latency: 0ns
Max no snoop latency: 0ns
Capabilities: [110 v1] L1 PM Substates
L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
PortCommonModeRestoreTime=255us PortTPowerOnTime=3100us
L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
T_CommonMode=0us LTR1.2_Threshold=3375104ns
L1SubCtl2: T_PwrOn=3100us
Capabilities: [200 v1] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP-
ECRC- UnsupReq- ACSViol- UncorrIntErr- BlockedTLP- AtomicOpBlocked- TLPBlockedErr-
PoisonTLPBlocked- DMWrReqBlocked- IDECheck- MisIDETLP- PCRC_CHECK- TLPXlatBlocked-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP-
ECRC- UnsupReq- ACSViol- UncorrIntErr- BlockedTLP- AtomicOpBlocked- TLPBlockedErr-
PoisonTLPBlocked- DMWrReqBlocked- IDECheck- MisIDETLP- PCRC_CHECK- TLPXlatBlocked-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+
ECRC- UnsupReq- ACSViol- UncorrIntErr- BlockedTLP- AtomicOpBlocked- TLPBlockedErr-
PoisonTLPBlocked- DMWrReqBlocked- IDECheck- MisIDETLP- PCRC_CHECK- TLPXlatBlocked-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr- CorrIntErr- HeaderOF-
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout+ AdvNonFatalErr+ CorrIntErr- HeaderOF-
AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
HeaderLog: 00000000 00000000 00000000 00000000
Kernel driver in use: sdhci-pci
Kernel modules: sdhci_pci
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH V23 15/16] mmc: sdhci-pci-gli: enable UHS-II mode for GL9755
2025-02-19 21:32 ` [PATCH V23 15/16] mmc: sdhci-pci-gli: enable UHS-II mode for GL9755 Janne Grunau
@ 2025-03-05 0:56 ` Ben Chuang
2025-03-06 14:27 ` Adrian Hunter
0 siblings, 1 reply; 3+ messages in thread
From: Ben Chuang @ 2025-03-05 0:56 UTC (permalink / raw)
To: Janne Grunau
Cc: Victor Shih, ulf.hansson, adrian.hunter, linux-mmc, linux-kernel,
Lucas.Lai, HL.Liu, Greg.tu, dlunev, Ben Chuang, AKASHI Takahiro,
Victor Shih, asahi
Hi Janne,
On Thu, Feb 20, 2025 at 5:32 AM Janne Grunau <j@jannau.net> wrote:
>
> Hej,
>
> On Fri, Oct 18, 2024 at 06:53:32PM +0800, Victor Shih wrote:
> > From: Victor Shih <victor.shih@genesyslogic.com.tw>
> >
> > Changes are:
> > * Disable GL9755 overcurrent interrupt when power on/off on UHS-II.
> > * Enable the internal clock when do reset on UHS-II mode.
> > * Increase timeout value before detecting UHS-II interface.
> > * Add vendor settings fro UHS-II mode.
> > * Remove sdhci_gli_enable_internal_clock functon unused clk_ctrl variable.
> > * Make a function sdhci_gli_wait_software_reset_done() for gl9755 reset.
> > * Remove unnecessary code from sdhci_gl9755_reset().
> >
> > Signed-off-by: Ben Chuang <ben.chuang@genesyslogic.com.tw>
> > Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
> > Signed-off-by: Victor Shih <victor.shih@genesyslogic.com.tw>
> > Signed-off-by: Lucas Lai <lucas.lai@genesyslogic.com.tw>
> > ---
> >
> > drivers/mmc/host/sdhci-pci-gli.c | 235 ++++++++++++++++++++++++++++++-
> > 1 file changed, 234 insertions(+), 1 deletion(-)
>
> This change results in error messages / timeout about UHS2 followed by
> register dumps with the GL9755 integrated in Apple silicon Macbook Pros
> and Mac Studio systems. Non UHS-II function of controller does not seem
> to be affected. Apple advertises the the SDXC slot as UHS-II capable.
>
> The only quirk we've experienced with gl9755 on this platform is that 8
> and 16 bit MMIO reads do not work. Workaround added in commit
> c064bb5c78c1b ("mmc: sdhci-pci-gli: GL975[50]: Issue 8/16-bit MMIO reads
> as 32-bit reads.").
>
> If you have ideas or patches to try I'm happy to do that. If not we can
> look into what MacOS does.
>
> See kernel log and lspci output below
>
> Thanks,
> Janne
>
> [ 38.130033] kernel: sdhci: Secure Digital Host Controller Interface driver
> [ 38.130141] kernel: sdhci: Copyright(c) Pierre Ossman
> [ 38.133352] kernel: sdhci-pci 0000:02:00.0: Adding to iommu group 13
> [ 38.160551] kernel: sdhci-pci 0000:02:00.0: SDHCI controller found [17a0:9755] (rev 1)
> [ 38.160655] kernel: sdhci-pci 0000:02:00.0: enabling device (0000 -> 0002)
> [ 38.160750] kernel: mmc0: SDHCI controller on PCI [0000:02:00.0] using ADMA 64-bit
> [ 38.274617] kernel: mmc0: not detect UHS2 interface in 100ms.
> [ 38.274717] kernel: mmc0: sdhci: ============ SDHCI REGISTER DUMP ===========
> [ 38.274782] kernel: mmc0: sdhci: Sys addr: 0x00000000 | Version: 0x00000005
> [ 38.277391] kernel: mmc0: sdhci: Blk size: 0x00000000 | Blk cnt: 0x00000000
> [ 38.277475] kernel: mmc0: sdhci: Argument: 0x00000000 | Trn mode: 0x00000000
> [ 38.280125] kernel: mmc0: sdhci: Present: 0x20070000 | Host ctl: 0x00000000
> [ 38.280206] kernel: mmc0: sdhci: Power: 0x000000bf | Blk gap: 0x00000000
> [ 38.284511] kernel: mmc0: sdhci: Wake-up: 0x00000000 | Clock: 0x0000032f
> [ 38.284592] kernel: mmc0: sdhci: Timeout: 0x00000007 | Int stat: 0x00000000
> [ 38.284636] kernel: mmc0: sdhci: Int enab: 0x00ff0083 | Sig enab: 0x00ff0083
> [ 38.287200] kernel: mmc0: sdhci: ACmd stat: 0x00000000 | Slot int: 0x00000000
> [ 38.287281] kernel: mmc0: sdhci: Caps: 0x396a3281 | Caps_1: 0x1803057f
> [ 38.291212] kernel: mmc0: sdhci: Cmd: 0x00000000 | Max curr: 0x000000c8
> [ 38.291292] kernel: mmc0: sdhci: Resp[0]: 0x00000000 | Resp[1]: 0x00000000
> [ 38.291335] kernel: mmc0: sdhci: Resp[2]: 0x00000000 | Resp[3]: 0x00000000
> [ 38.293513] kernel: mmc0: sdhci: Host ctl2: 0x00009107
> [ 38.293604] kernel: mmc0: sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x0000000000000000
> [ 38.297842] kernel: mmc0: sdhci_uhs2: ==================== UHS2 ==================
> [ 38.297923] kernel: mmc0: sdhci_uhs2: Blk Size: 0x00000000 | Blk Cnt: 0x00000000
> [ 38.297968] kernel: mmc0: sdhci_uhs2: Cmd: 0x00000000 | Trn mode: 0x00000000
> [ 38.300773] kernel: mmc0: sdhci_uhs2: Int Stat: 0x00000000 | Dev Sel : 0x00000000
> [ 38.300853] kernel: mmc0: sdhci_uhs2: Dev Int Code: 0x00000000
> [ 38.304739] kernel: mmc0: sdhci_uhs2: Reset: 0x00000000 | Timer: 0x000000a7
> [ 38.304811] kernel: mmc0: sdhci_uhs2: ErrInt: 0x00000000 | ErrIntEn: 0x00030000
> [ 38.304856] kernel: mmc0: sdhci_uhs2: ErrSigEn: 0x00030000
> [ 38.307110] kernel: mmc0: sdhci: ============================================
> [ 38.307201] kernel: mmc0: cannot detect UHS2 interface.
> [ 38.310110] kernel: mmc0: failed to initial phy for UHS-II!
> [ 38.424645] kernel: mmc0: not detect UHS2 interface in 100ms.
> [ 38.424731] kernel: mmc0: sdhci: ============ SDHCI REGISTER DUMP ===========
> [ 38.424758] kernel: mmc0: sdhci: Sys addr: 0x00000000 | Version: 0x00000005
> [ 38.424782] kernel: mmc0: sdhci: Blk size: 0x00000000 | Blk cnt: 0x00000000
> [ 38.424840] kernel: mmc0: sdhci: Argument: 0x00000000 | Trn mode: 0x00000000
> [ 38.427603] kernel: mmc0: sdhci: Present: 0x20070000 | Host ctl: 0x00000000
> [ 38.427659] kernel: mmc0: sdhci: Power: 0x000000bf | Blk gap: 0x00000000
> [ 38.430579] kernel: mmc0: sdhci: Wake-up: 0x00000000 | Clock: 0x0000032f
> [ 38.430626] kernel: mmc0: sdhci: Timeout: 0x00000007 | Int stat: 0x00000000
> [ 38.433504] kernel: mmc0: sdhci: Int enab: 0x00ff0083 | Sig enab: 0x00ff0083
> [ 38.433550] kernel: mmc0: sdhci: ACmd stat: 0x00000000 | Slot int: 0x00000000
> [ 38.437596] kernel: mmc0: sdhci: Caps: 0x396a3281 | Caps_1: 0x1803057f
> [ 38.437641] kernel: mmc0: sdhci: Cmd: 0x00000000 | Max curr: 0x000000c8
> [ 38.437677] kernel: mmc0: sdhci: Resp[0]: 0x00000000 | Resp[1]: 0x00000000
> [ 38.440318] kernel: mmc0: sdhci: Resp[2]: 0x00000000 | Resp[3]: 0x00000000
> [ 38.440345] kernel: mmc0: sdhci: Host ctl2: 0x00009107
> [ 38.444119] kernel: mmc0: sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x0000000000000000
> [ 38.444161] kernel: mmc0: sdhci_uhs2: ==================== UHS2 ==================
> [ 38.444184] kernel: mmc0: sdhci_uhs2: Blk Size: 0x00000000 | Blk Cnt: 0x00000000
> [ 38.446918] kernel: mmc0: sdhci_uhs2: Cmd: 0x00000000 | Trn mode: 0x00000000
> [ 38.446958] kernel: mmc0: sdhci_uhs2: Int Stat: 0x00000000 | Dev Sel : 0x00000000
> [ 38.450833] kernel: mmc0: sdhci_uhs2: Dev Int Code: 0x00000000
> [ 38.450874] kernel: mmc0: sdhci_uhs2: Reset: 0x00000000 | Timer: 0x000000a7
> [ 38.450907] kernel: mmc0: sdhci_uhs2: ErrInt: 0x00000000 | ErrIntEn: 0x00030000
> [ 38.454625] kernel: mmc0: sdhci_uhs2: ErrSigEn: 0x00030000
> [ 38.454665] kernel: mmc0: sdhci: ============================================
> [ 38.454699] kernel: mmc0: cannot detect UHS2 interface.
> [ 38.456705] kernel: mmc0: failed to initial phy for UHS-II!
>
On which UHS-II card does this message appear? Please share the card
information.
If it is a UHS-I card, this message is normal.
Best regards,
Ben Chuang
>
> `lspci -vvvnn -d 17a0:9755` output:
> 02:00.0 SD Host controller [0805]: Genesys Logic, Inc GL9755 SD Host Controller [17a0:9755] (rev 01) (prog-if 01)
> Subsystem: Genesys Logic, Inc GL9755 SD Host Controller [17a0:9755]
> Device tree node: /sys/firmware/devicetree/base/soc@200000000/pcie@590000000/pci@1,0/mmc@0,0
> Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0
> Interrupt: pin A routed to IRQ 168
> IOMMU group: 13
> Region 0: Memory at 5c1e00000 (32-bit, non-prefetchable) [size=4K]
> Capabilities: [80] Express (v2) Endpoint, IntMsgNum 0
> DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <4us, L1 unlimited
> ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 0W TEE-IO-
> DevCtl: CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+
> RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+
> MaxPayload 128 bytes, MaxReadReq 512 bytes
> DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
> LnkCap: Port #85, Speed 5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <4us, L1 unlimited
> ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
> LnkCtl: ASPM Disabled; RCB 64 bytes, LnkDisable- CommClk+
> ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> LnkSta: Speed 5GT/s, Width x1
> TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
> DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP- LTR+
> 10BitTagComp- 10BitTagReq- OBFF Via message/WAKE#, ExtFmt- EETLPPrefix-
> EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
> FRS- TPHComp- ExtTPHComp-
> AtomicOpsCap: 32bit- 64bit- 128bitCAS-
> DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
> AtomicOpsCtl: ReqEn-
> IDOReq- IDOCompl- LTR+ EmergencyPowerReductionReq-
> 10BitTagReq- OBFF Disabled, EETLPPrefixBlk-
> LnkCap2: Supported Link Speeds: 2.5-5GT/s, Crosslink- Retimer- 2Retimers- DRS-
> LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
> Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
> Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
> LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete- EqualizationPhase1-
> EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
> Retimer- 2Retimers- CrosslinkRes: unsupported
> Capabilities: [e0] MSI: Enable+ Count=1/1 Maskable- 64bit+
> Address: 00000000fffff000 Data: 0018
> Capabilities: [f8] Power Management version 3
> Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
> Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME+
> Capabilities: [100 v1] Vendor Specific Information: ID=17a0 Rev=1 Len=008 <?>
> Capabilities: [108 v1] Latency Tolerance Reporting
> Max snoop latency: 0ns
> Max no snoop latency: 0ns
> Capabilities: [110 v1] L1 PM Substates
> L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
> PortCommonModeRestoreTime=255us PortTPowerOnTime=3100us
> L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
> T_CommonMode=0us LTR1.2_Threshold=3375104ns
> L1SubCtl2: T_PwrOn=3100us
> Capabilities: [200 v1] Advanced Error Reporting
> UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP-
> ECRC- UnsupReq- ACSViol- UncorrIntErr- BlockedTLP- AtomicOpBlocked- TLPBlockedErr-
> PoisonTLPBlocked- DMWrReqBlocked- IDECheck- MisIDETLP- PCRC_CHECK- TLPXlatBlocked-
> UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP-
> ECRC- UnsupReq- ACSViol- UncorrIntErr- BlockedTLP- AtomicOpBlocked- TLPBlockedErr-
> PoisonTLPBlocked- DMWrReqBlocked- IDECheck- MisIDETLP- PCRC_CHECK- TLPXlatBlocked-
> UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+
> ECRC- UnsupReq- ACSViol- UncorrIntErr- BlockedTLP- AtomicOpBlocked- TLPBlockedErr-
> PoisonTLPBlocked- DMWrReqBlocked- IDECheck- MisIDETLP- PCRC_CHECK- TLPXlatBlocked-
> CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr- CorrIntErr- HeaderOF-
> CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout+ AdvNonFatalErr+ CorrIntErr- HeaderOF-
> AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
> MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
> HeaderLog: 00000000 00000000 00000000 00000000
> Kernel driver in use: sdhci-pci
> Kernel modules: sdhci_pci
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH V23 15/16] mmc: sdhci-pci-gli: enable UHS-II mode for GL9755
2025-03-05 0:56 ` Ben Chuang
@ 2025-03-06 14:27 ` Adrian Hunter
0 siblings, 0 replies; 3+ messages in thread
From: Adrian Hunter @ 2025-03-06 14:27 UTC (permalink / raw)
To: Ben Chuang
Cc: Victor Shih, ulf.hansson, linux-mmc, linux-kernel, Lucas.Lai,
HL.Liu, Greg.tu, dlunev, Ben Chuang, AKASHI Takahiro, Victor Shih,
asahi, Janne Grunau
On 5/03/25 02:56, Ben Chuang wrote:
> Hi Janne,
>
> On Thu, Feb 20, 2025 at 5:32 AM Janne Grunau <j@jannau.net> wrote:
>>
>> Hej,
>>
>> On Fri, Oct 18, 2024 at 06:53:32PM +0800, Victor Shih wrote:
>>> From: Victor Shih <victor.shih@genesyslogic.com.tw>
>>>
>>> Changes are:
>>> * Disable GL9755 overcurrent interrupt when power on/off on UHS-II.
>>> * Enable the internal clock when do reset on UHS-II mode.
>>> * Increase timeout value before detecting UHS-II interface.
>>> * Add vendor settings fro UHS-II mode.
>>> * Remove sdhci_gli_enable_internal_clock functon unused clk_ctrl variable.
>>> * Make a function sdhci_gli_wait_software_reset_done() for gl9755 reset.
>>> * Remove unnecessary code from sdhci_gl9755_reset().
>>>
>>> Signed-off-by: Ben Chuang <ben.chuang@genesyslogic.com.tw>
>>> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
>>> Signed-off-by: Victor Shih <victor.shih@genesyslogic.com.tw>
>>> Signed-off-by: Lucas Lai <lucas.lai@genesyslogic.com.tw>
>>> ---
>>>
>>> drivers/mmc/host/sdhci-pci-gli.c | 235 ++++++++++++++++++++++++++++++-
>>> 1 file changed, 234 insertions(+), 1 deletion(-)
>>
>> This change results in error messages / timeout about UHS2 followed by
>> register dumps with the GL9755 integrated in Apple silicon Macbook Pros
>> and Mac Studio systems. Non UHS-II function of controller does not seem
>> to be affected. Apple advertises the the SDXC slot as UHS-II capable.
>>
>> The only quirk we've experienced with gl9755 on this platform is that 8
>> and 16 bit MMIO reads do not work. Workaround added in commit
>> c064bb5c78c1b ("mmc: sdhci-pci-gli: GL975[50]: Issue 8/16-bit MMIO reads
>> as 32-bit reads.").
>>
>> If you have ideas or patches to try I'm happy to do that. If not we can
>> look into what MacOS does.
>>
>> See kernel log and lspci output below
>>
>> Thanks,
>> Janne
>>
>> [ 38.130033] kernel: sdhci: Secure Digital Host Controller Interface driver
>> [ 38.130141] kernel: sdhci: Copyright(c) Pierre Ossman
>> [ 38.133352] kernel: sdhci-pci 0000:02:00.0: Adding to iommu group 13
>> [ 38.160551] kernel: sdhci-pci 0000:02:00.0: SDHCI controller found [17a0:9755] (rev 1)
>> [ 38.160655] kernel: sdhci-pci 0000:02:00.0: enabling device (0000 -> 0002)
>> [ 38.160750] kernel: mmc0: SDHCI controller on PCI [0000:02:00.0] using ADMA 64-bit
>> [ 38.274617] kernel: mmc0: not detect UHS2 interface in 100ms.
>> [ 38.274717] kernel: mmc0: sdhci: ============ SDHCI REGISTER DUMP ===========
>> [ 38.274782] kernel: mmc0: sdhci: Sys addr: 0x00000000 | Version: 0x00000005
>> [ 38.277391] kernel: mmc0: sdhci: Blk size: 0x00000000 | Blk cnt: 0x00000000
>> [ 38.277475] kernel: mmc0: sdhci: Argument: 0x00000000 | Trn mode: 0x00000000
>> [ 38.280125] kernel: mmc0: sdhci: Present: 0x20070000 | Host ctl: 0x00000000
>> [ 38.280206] kernel: mmc0: sdhci: Power: 0x000000bf | Blk gap: 0x00000000
>> [ 38.284511] kernel: mmc0: sdhci: Wake-up: 0x00000000 | Clock: 0x0000032f
>> [ 38.284592] kernel: mmc0: sdhci: Timeout: 0x00000007 | Int stat: 0x00000000
>> [ 38.284636] kernel: mmc0: sdhci: Int enab: 0x00ff0083 | Sig enab: 0x00ff0083
>> [ 38.287200] kernel: mmc0: sdhci: ACmd stat: 0x00000000 | Slot int: 0x00000000
>> [ 38.287281] kernel: mmc0: sdhci: Caps: 0x396a3281 | Caps_1: 0x1803057f
>> [ 38.291212] kernel: mmc0: sdhci: Cmd: 0x00000000 | Max curr: 0x000000c8
>> [ 38.291292] kernel: mmc0: sdhci: Resp[0]: 0x00000000 | Resp[1]: 0x00000000
>> [ 38.291335] kernel: mmc0: sdhci: Resp[2]: 0x00000000 | Resp[3]: 0x00000000
>> [ 38.293513] kernel: mmc0: sdhci: Host ctl2: 0x00009107
>> [ 38.293604] kernel: mmc0: sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x0000000000000000
>> [ 38.297842] kernel: mmc0: sdhci_uhs2: ==================== UHS2 ==================
>> [ 38.297923] kernel: mmc0: sdhci_uhs2: Blk Size: 0x00000000 | Blk Cnt: 0x00000000
>> [ 38.297968] kernel: mmc0: sdhci_uhs2: Cmd: 0x00000000 | Trn mode: 0x00000000
>> [ 38.300773] kernel: mmc0: sdhci_uhs2: Int Stat: 0x00000000 | Dev Sel : 0x00000000
>> [ 38.300853] kernel: mmc0: sdhci_uhs2: Dev Int Code: 0x00000000
>> [ 38.304739] kernel: mmc0: sdhci_uhs2: Reset: 0x00000000 | Timer: 0x000000a7
>> [ 38.304811] kernel: mmc0: sdhci_uhs2: ErrInt: 0x00000000 | ErrIntEn: 0x00030000
>> [ 38.304856] kernel: mmc0: sdhci_uhs2: ErrSigEn: 0x00030000
>> [ 38.307110] kernel: mmc0: sdhci: ============================================
>> [ 38.307201] kernel: mmc0: cannot detect UHS2 interface.
>> [ 38.310110] kernel: mmc0: failed to initial phy for UHS-II!
>> [ 38.424645] kernel: mmc0: not detect UHS2 interface in 100ms.
>> [ 38.424731] kernel: mmc0: sdhci: ============ SDHCI REGISTER DUMP ===========
>> [ 38.424758] kernel: mmc0: sdhci: Sys addr: 0x00000000 | Version: 0x00000005
>> [ 38.424782] kernel: mmc0: sdhci: Blk size: 0x00000000 | Blk cnt: 0x00000000
>> [ 38.424840] kernel: mmc0: sdhci: Argument: 0x00000000 | Trn mode: 0x00000000
>> [ 38.427603] kernel: mmc0: sdhci: Present: 0x20070000 | Host ctl: 0x00000000
>> [ 38.427659] kernel: mmc0: sdhci: Power: 0x000000bf | Blk gap: 0x00000000
>> [ 38.430579] kernel: mmc0: sdhci: Wake-up: 0x00000000 | Clock: 0x0000032f
>> [ 38.430626] kernel: mmc0: sdhci: Timeout: 0x00000007 | Int stat: 0x00000000
>> [ 38.433504] kernel: mmc0: sdhci: Int enab: 0x00ff0083 | Sig enab: 0x00ff0083
>> [ 38.433550] kernel: mmc0: sdhci: ACmd stat: 0x00000000 | Slot int: 0x00000000
>> [ 38.437596] kernel: mmc0: sdhci: Caps: 0x396a3281 | Caps_1: 0x1803057f
>> [ 38.437641] kernel: mmc0: sdhci: Cmd: 0x00000000 | Max curr: 0x000000c8
>> [ 38.437677] kernel: mmc0: sdhci: Resp[0]: 0x00000000 | Resp[1]: 0x00000000
>> [ 38.440318] kernel: mmc0: sdhci: Resp[2]: 0x00000000 | Resp[3]: 0x00000000
>> [ 38.440345] kernel: mmc0: sdhci: Host ctl2: 0x00009107
>> [ 38.444119] kernel: mmc0: sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x0000000000000000
>> [ 38.444161] kernel: mmc0: sdhci_uhs2: ==================== UHS2 ==================
>> [ 38.444184] kernel: mmc0: sdhci_uhs2: Blk Size: 0x00000000 | Blk Cnt: 0x00000000
>> [ 38.446918] kernel: mmc0: sdhci_uhs2: Cmd: 0x00000000 | Trn mode: 0x00000000
>> [ 38.446958] kernel: mmc0: sdhci_uhs2: Int Stat: 0x00000000 | Dev Sel : 0x00000000
>> [ 38.450833] kernel: mmc0: sdhci_uhs2: Dev Int Code: 0x00000000
>> [ 38.450874] kernel: mmc0: sdhci_uhs2: Reset: 0x00000000 | Timer: 0x000000a7
>> [ 38.450907] kernel: mmc0: sdhci_uhs2: ErrInt: 0x00000000 | ErrIntEn: 0x00030000
>> [ 38.454625] kernel: mmc0: sdhci_uhs2: ErrSigEn: 0x00030000
>> [ 38.454665] kernel: mmc0: sdhci: ============================================
>> [ 38.454699] kernel: mmc0: cannot detect UHS2 interface.
>> [ 38.456705] kernel: mmc0: failed to initial phy for UHS-II!
>>
>
> On which UHS-II card does this message appear? Please share the card
> information.
> If it is a UHS-I card, this message is normal.
If it is normal, we should not be producing error messages
and register dumps. Please change all these messages to be
debug only. The register dump can go behind DYNAMIC_DEBUG_BRANCH().
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-03-06 14:28 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20241018105333.4569-1-victorshihgli@gmail.com>
[not found] ` <20241018105333.4569-16-victorshihgli@gmail.com>
2025-02-19 21:32 ` [PATCH V23 15/16] mmc: sdhci-pci-gli: enable UHS-II mode for GL9755 Janne Grunau
2025-03-05 0:56 ` Ben Chuang
2025-03-06 14:27 ` Adrian Hunter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox