Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> --- hw/sd/sdhci-internal.h | 6 ++++-- hw/sd/sdhci.c | 8 ++------ 2 files changed, 6 insertions(+), 8 deletions(-)
diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index e941bc2386..df240ea046 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -24,6 +24,8 @@ #ifndef SDHCI_INTERNAL_H #define SDHCI_INTERNAL_H +#include "hw/registerfields.h" + /* R/W SDMA System Address register 0x0 */ #define SDHC_SYSAD 0x00 @@ -77,8 +79,8 @@ #define SDHC_SPACE_AVAILABLE 0x00000400 #define SDHC_DATA_AVAILABLE 0x00000800 #define SDHC_CARD_PRESENT 0x00010000 -#define SDHC_CARD_DETECT 0x00040000 -#define SDHC_WRITE_PROTECT 0x00080000 +FIELD(SDHC_PRNSTS, CARD_DETECT, 18, 1); +FIELD(SDHC_PRNSTS, WRITE_PROTECT, 19, 1); #define TRANSFERRING_DATA(x) \ ((x) & (SDHC_DOING_READ | SDHC_DOING_WRITE)) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index ede51d7e45..2c8dc66e7a 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -159,12 +159,8 @@ static void sdhci_set_readonly(DeviceState *dev, bool level) { SDHCIState *s = (SDHCIState *)dev; - if (level) { - s->prnsts &= ~SDHC_WRITE_PROTECT; - } else { - /* Write enabled */ - s->prnsts |= SDHC_WRITE_PROTECT; - } + /* Write enabled */ + s->prnsts = FIELD_DP32(s->prnsts, SDHC_PRNSTS, WRITE_PROTECT, level); } static void sdhci_reset(SDHCIState *s) -- 2.15.1