|
@@ -1382,6 +1382,8 @@ void sdhci_initfn(SDHCIState *s)
|
|
|
|
|
|
s->insert_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, sdhci_raise_insertion_irq, s);
|
|
s->insert_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, sdhci_raise_insertion_irq, s);
|
|
s->transfer_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, sdhci_data_transfer, s);
|
|
s->transfer_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, sdhci_data_transfer, s);
|
|
|
|
+
|
|
|
|
+ s->io_ops = &sdhci_mmio_le_ops;
|
|
}
|
|
}
|
|
|
|
|
|
void sdhci_uninitfn(SDHCIState *s)
|
|
void sdhci_uninitfn(SDHCIState *s)
|
|
@@ -1399,9 +1401,13 @@ void sdhci_common_realize(SDHCIState *s, Error **errp)
|
|
|
|
|
|
switch (s->endianness) {
|
|
switch (s->endianness) {
|
|
case DEVICE_LITTLE_ENDIAN:
|
|
case DEVICE_LITTLE_ENDIAN:
|
|
- s->io_ops = &sdhci_mmio_le_ops;
|
|
|
|
|
|
+ /* s->io_ops is little endian by default */
|
|
break;
|
|
break;
|
|
case DEVICE_BIG_ENDIAN:
|
|
case DEVICE_BIG_ENDIAN:
|
|
|
|
+ if (s->io_ops != &sdhci_mmio_le_ops) {
|
|
|
|
+ error_setg(errp, "SD controller doesn't support big endianness");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
s->io_ops = &sdhci_mmio_be_ops;
|
|
s->io_ops = &sdhci_mmio_be_ops;
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|