hw/i2c/versatile_i2c: Add definitions for register addresses
Use self-explicit definitions instead of magic values. Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-id: 20200617072539.32686-3-f4bug@amsat.org Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
69ed08e4c5
commit
faa1bdfa32
@ -24,6 +24,7 @@
|
||||
#include "qemu/osdep.h"
|
||||
#include "hw/sysbus.h"
|
||||
#include "hw/i2c/bitbang_i2c.h"
|
||||
#include "hw/registerfields.h"
|
||||
#include "qemu/log.h"
|
||||
#include "qemu/module.h"
|
||||
|
||||
@ -40,14 +41,19 @@ typedef struct VersatileI2CState {
|
||||
int in;
|
||||
} VersatileI2CState;
|
||||
|
||||
REG32(CONTROL_GET, 0)
|
||||
REG32(CONTROL_SET, 0)
|
||||
REG32(CONTROL_CLR, 4)
|
||||
|
||||
static uint64_t versatile_i2c_read(void *opaque, hwaddr offset,
|
||||
unsigned size)
|
||||
{
|
||||
VersatileI2CState *s = (VersatileI2CState *)opaque;
|
||||
|
||||
if (offset == 0) {
|
||||
switch (offset) {
|
||||
case A_CONTROL_SET:
|
||||
return (s->out & 1) | (s->in << 1);
|
||||
} else {
|
||||
default:
|
||||
qemu_log_mask(LOG_GUEST_ERROR,
|
||||
"%s: Bad offset 0x%x\n", __func__, (int)offset);
|
||||
return -1;
|
||||
@ -60,10 +66,10 @@ static void versatile_i2c_write(void *opaque, hwaddr offset,
|
||||
VersatileI2CState *s = (VersatileI2CState *)opaque;
|
||||
|
||||
switch (offset) {
|
||||
case 0:
|
||||
case A_CONTROL_SET:
|
||||
s->out |= value & 3;
|
||||
break;
|
||||
case 4:
|
||||
case A_CONTROL_CLR:
|
||||
s->out &= ~value;
|
||||
break;
|
||||
default:
|
||||
|
Loading…
Reference in New Issue
Block a user