Fixed. Sort of. DMA was not working but required.
How have I figured it out? I've changed DMA functions to interrupt functions and it worked.
Then I unnecessarily hacked the driver to not use the DMA feature... Skip that part.
Why DMA was not working?
https://community.st.com/s/article/FAQ-DMA-is-not-working-on-STM32H7-devices
How to fix it? Just disable `CPU DCache` in `System Core / CORTEX_M7` in Cube.
Did my TouchGFX application slowed down? IDK. My impression - not at all.
If anyone would try to test SD card reader from STM32H747I-DISCO (or maybe other H7 setups) - keep that in mind. You must disable DCache or DMA and all that depends on DMA will fail just reading garbage. Also - if you wonder what options in SDMMC1 you can enable: pretty all of them except "External trasceiver present" - though I'm not sure about it, I haven't tested enabling it.
So I have my SDMMC1 configured as "4 bit bus with auto dir voltage converter", "hardware control flow enabled", "Clock divider = 1" - that gives 75MHz to the SD.
In FATFS I have all RTOS related options enabled, also LFN (with stack), UTF8/UNICODE, exFAT. Works as charm with modern cards >4GB formatted in Windows.
For card detection pin - I've read it could use ANY GPIO input. It's quite weird, because in the documentation for STM32H747I-DISCO stands that is a specific pin: PI8. It's not configured as input though, so it has to be done manually before configuring FATFS.
That's it, it took me way too much time to figure it all out, maybe someone could use what I've learned here.