[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 07/14] hw/sd/sd: Remove legacy sd_set_cb() in favor of GPIOs
From: |
Bernhard Beschow |
Subject: |
[PATCH 07/14] hw/sd/sd: Remove legacy sd_set_cb() in favor of GPIOs |
Date: |
Wed, 8 Jan 2025 10:25:31 +0100 |
Commit ce5dd27534b0 "hw/sd: Remove omap2_mmc device" removed the last user of
sd_set_cb(). Rework this functionality into GPIOs.
Signed-off-by: Bernhard Beschow <shentey@gmail.com>
---
include/hw/sd/sdcard_legacy.h | 1 -
hw/sd/sd.c | 31 ++++++++++++++-----------------
2 files changed, 14 insertions(+), 18 deletions(-)
diff --git a/include/hw/sd/sdcard_legacy.h b/include/hw/sd/sdcard_legacy.h
index 0dc3889555..a121232560 100644
--- a/include/hw/sd/sdcard_legacy.h
+++ b/include/hw/sd/sdcard_legacy.h
@@ -36,7 +36,6 @@ SDState *sd_init(BlockBackend *blk, bool is_spi);
int sd_do_command(SDState *card, SDRequest *request, uint8_t *response);
void sd_write_byte(SDState *card, uint8_t value);
uint8_t sd_read_byte(SDState *card);
-void sd_set_cb(SDState *card, qemu_irq readonly, qemu_irq insert);
/* sd_enable should not be used -- it is only used on the nseries boards,
* where it is part of a broken implementation of the MMC card slot switch
diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index 0330d432fd..aa8d86e1af 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -820,6 +820,16 @@ static inline uint64_t sd_addr_to_wpnum(uint64_t addr)
return addr >> (HWBLOCK_SHIFT + SECTOR_SHIFT + WPGROUP_SHIFT);
}
+static bool sd_get_inserted(SDState *sd)
+{
+ return sd->blk && blk_is_inserted(sd->blk);
+}
+
+static bool sd_get_readonly(SDState *sd)
+{
+ return sd->wp_switch;
+}
+
static void sd_reset(DeviceState *dev)
{
SDState *sd = SDMMC_COMMON(dev);
@@ -865,16 +875,9 @@ static void sd_reset(DeviceState *dev)
sd->dat_lines = 0xf;
sd->cmd_line = true;
sd->multi_blk_cnt = 0;
-}
-static bool sd_get_inserted(SDState *sd)
-{
- return sd->blk && blk_is_inserted(sd->blk);
-}
-
-static bool sd_get_readonly(SDState *sd)
-{
- return sd->wp_switch;
+ qemu_set_irq(sd->readonly_cb, sd_get_readonly(sd));
+ qemu_set_irq(sd->inserted_cb, sd_get_inserted(sd));
}
static void sd_cardchange(void *opaque, bool load, Error **errp)
@@ -1034,14 +1037,6 @@ SDState *sd_init(BlockBackend *blk, bool is_spi)
return sd;
}
-void sd_set_cb(SDState *sd, qemu_irq readonly, qemu_irq insert)
-{
- sd->readonly_cb = readonly;
- sd->inserted_cb = insert;
- qemu_set_irq(readonly, sd->blk ? !blk_is_writable(sd->blk) : 0);
- qemu_set_irq(insert, sd->blk ? blk_is_inserted(sd->blk) : 0);
-}
-
static void sd_blk_read(SDState *sd, uint64_t addr, uint32_t len)
{
trace_sdcard_read_block(addr, len);
@@ -2727,6 +2722,8 @@ static void sd_instance_init(Object *obj)
sd->last_cmd_name = "UNSET";
sd->enable = true;
sd->ocr_power_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, sd_ocr_powerup, sd);
+ qdev_init_gpio_out_named(DEVICE(sd), &sd->inserted_cb, "cd", 1);
+ qdev_init_gpio_out_named(DEVICE(sd), &sd->readonly_cb, "wp", 1);
}
static void sd_instance_finalize(Object *obj)
--
2.47.1
- Re: [PATCH 04/14] hw/core: Introduce TYPE_SHARED_IRQ, (continued)
- [PATCH 02/14] hw/char/imx_serial: Fix reset value of UFCR register, Bernhard Beschow, 2025/01/08
- [PATCH 01/14] hw/sd/sdhci: Set SDHC_NIS_DMA bit when appropriate, Bernhard Beschow, 2025/01/08
- [PATCH 13/14] hw/misc/imx6_src: Convert DPRINTF() to trace events, Bernhard Beschow, 2025/01/08
- [PATCH 03/14] hw/char/imx_serial: Update all state before restarting ageing timer, Bernhard Beschow, 2025/01/08
- [PATCH 06/14] hw/gpio/imx_gpio: Don't clear input GPIO values upon reset, Bernhard Beschow, 2025/01/08
- [PATCH 07/14] hw/sd/sd: Remove legacy sd_set_cb() in favor of GPIOs,
Bernhard Beschow <=
- [PATCH 05/14] hw/pci-host/designware: Expose MSI IRQ, Bernhard Beschow, 2025/01/08
- [PATCH 10/14] hw/timer/imx_gpt: Remove unused define, Bernhard Beschow, 2025/01/08
- [PATCH 14/14] hw/gpio/imx_gpio: Turn DPRINTF() into trace events, Bernhard Beschow, 2025/01/08
- [PATCH 08/14] hw/sd/sd: Allow for inverting polarities of presence and write-protect GPIOs, Bernhard Beschow, 2025/01/08
- [PATCH 09/14] hw/char/imx_serial: Turn some DPRINTF() statements into trace events, Bernhard Beschow, 2025/01/08