On Wed, Jan 3, 2018 at 10:08 AM, Philippe Mathieu-Daudé <f4bug@amsat.org> wrote:
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Alistair Francis <alistair.francis@xilinx.com>
Alistair
> ---
> 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
>
>