On 13.2.2019 23.13, Ivan Mironov wrote: > Hi all, > > There is a known problem on some MacBooks: internal card reader > disappears after the first suspend/resume and all subsequent attempts > to suspend laptop are failing. > > This was reported[1][2] and even discussed in the mailing lists[3], > without any real solution. After trying various things[4], including > some existing quirks, I discovered that switching link state to DISABLED > before suspend both fixes the card reader device and allows any subsequent > suspend to succeed. > > First patch adds code for this new quirk, and second patch enables this > quirk for card reader device which is used in my macbook. > > I'm not really familiar with either USB standards or kernel code to > support them, so this patch series is RFC. I'm especially unsure with the > "resume" part, because I implemented it by trial and error mostly. > However, I'm using kernel with these patches and it works for me. > > Also, feel free to suggest other kernel patches or existing quirks or > quirk combinations to fix the same problem. > > Oh, and by the way: I've checked schematics of various macbooks available > on the internet. It seems that the actual chip is Genesys Logic GL3219, > probably just with the custom ID. What I found curious, is that USB 2.0 > pins of this chip (D+ and D-) are not really connected anywhere, but > instead shorted through the resistor. Could it be possible that this > somehow messes up some logic inside the device, host controller or > linux kernel? > This card reader prevents second system suspend on latest kernels, see thread: https://marc.info/?l=linux-usb&m=154816680816246&w=2 In that case the card reader fails to resume from usb3 U3 suspend state, and ends up stuck in USB3 polling state, which now prevents suspend Could you try a testpatch (attached) to see if it helps? Thanks -Mathias