]> git.ipfire.org Git - thirdparty/qemu.git/commit
hw/sd/sdhci: Do not force sdhci_mmio_*_ops onto all SD controllers
authorBernhard Beschow <shentey@gmail.com>
Sun, 9 Jul 2023 08:09:50 +0000 (10:09 +0200)
committerMichael Tokarev <mjt@tls.msk.ru>
Sun, 10 Sep 2023 16:39:41 +0000 (19:39 +0300)
commitb4b3aac5b542557c63bc24049b61c2640ad90dd9
treefc82e760e71442dad98774c91205d992a69b2d12
parentaf0c16fae9532033453f8c208ad1e2e78701de5c
hw/sd/sdhci: Do not force sdhci_mmio_*_ops onto all SD controllers

Since commit c0a55a0c9da2 "hw/sd/sdhci: Support big endian SD host controller
interfaces" sdhci_common_realize() forces all SD card controllers to use either
sdhci_mmio_le_ops or sdhci_mmio_be_ops, depending on the "endianness" property.
However, there are device models which use different MMIO ops: TYPE_IMX_USDHC
uses usdhc_mmio_ops and TYPE_S3C_SDHCI uses sdhci_s3c_mmio_ops.

Forcing sdhci_mmio_le_ops breaks SD card handling on the "sabrelite" board, for
example. Fix this by defaulting the io_ops to little endian and switch to big
endian in sdhci_common_realize() only if there is a matchig big endian variant
available.

Fixes: c0a55a0c9da2 ("hw/sd/sdhci: Support big endian SD host controller
interfaces")

Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Message-Id: <20230709080950.92489-1-shentey@gmail.com>
(cherry picked from commit 3b830790151ff231531ef2595793e387dd154efb)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
hw/sd/sdhci.c