mirror of https://github.com/xemu-project/xemu.git
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 "qemu/osdep.h"
|
||||||
#include "hw/sysbus.h"
|
#include "hw/sysbus.h"
|
||||||
#include "hw/i2c/bitbang_i2c.h"
|
#include "hw/i2c/bitbang_i2c.h"
|
||||||
|
#include "hw/registerfields.h"
|
||||||
#include "qemu/log.h"
|
#include "qemu/log.h"
|
||||||
#include "qemu/module.h"
|
#include "qemu/module.h"
|
||||||
|
|
||||||
|
@ -40,14 +41,19 @@ typedef struct VersatileI2CState {
|
||||||
int in;
|
int in;
|
||||||
} VersatileI2CState;
|
} VersatileI2CState;
|
||||||
|
|
||||||
|
REG32(CONTROL_GET, 0)
|
||||||
|
REG32(CONTROL_SET, 0)
|
||||||
|
REG32(CONTROL_CLR, 4)
|
||||||
|
|
||||||
static uint64_t versatile_i2c_read(void *opaque, hwaddr offset,
|
static uint64_t versatile_i2c_read(void *opaque, hwaddr offset,
|
||||||
unsigned size)
|
unsigned size)
|
||||||
{
|
{
|
||||||
VersatileI2CState *s = (VersatileI2CState *)opaque;
|
VersatileI2CState *s = (VersatileI2CState *)opaque;
|
||||||
|
|
||||||
if (offset == 0) {
|
switch (offset) {
|
||||||
|
case A_CONTROL_SET:
|
||||||
return (s->out & 1) | (s->in << 1);
|
return (s->out & 1) | (s->in << 1);
|
||||||
} else {
|
default:
|
||||||
qemu_log_mask(LOG_GUEST_ERROR,
|
qemu_log_mask(LOG_GUEST_ERROR,
|
||||||
"%s: Bad offset 0x%x\n", __func__, (int)offset);
|
"%s: Bad offset 0x%x\n", __func__, (int)offset);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -60,10 +66,10 @@ static void versatile_i2c_write(void *opaque, hwaddr offset,
|
||||||
VersatileI2CState *s = (VersatileI2CState *)opaque;
|
VersatileI2CState *s = (VersatileI2CState *)opaque;
|
||||||
|
|
||||||
switch (offset) {
|
switch (offset) {
|
||||||
case 0:
|
case A_CONTROL_SET:
|
||||||
s->out |= value & 3;
|
s->out |= value & 3;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case A_CONTROL_CLR:
|
||||||
s->out &= ~value;
|
s->out &= ~value;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in New Issue