On 2019-01-10 10:40, Stefan Hajnoczi wrote: > This test verifies that we read back the expected I2C WHO_AM_I register > values for the accelerometer/magnetometer. > > Signed-off-by: Stefan Hajnoczi <[email protected]> > --- > tests/microbit-test.c | 44 +++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 44 insertions(+) > > diff --git a/tests/microbit-test.c b/tests/microbit-test.c > index 0c125535f6..dcdc0cd41a 100644 > --- a/tests/microbit-test.c > +++ b/tests/microbit-test.c > @@ -21,6 +21,49 @@ > #include "hw/arm/nrf51.h" > #include "hw/gpio/nrf51_gpio.h" > #include "hw/timer/nrf51_timer.h" > +#include "hw/i2c/microbit_i2c.h" > + > +/* Read a byte from I2C device at @addr from register @reg */ > +static uint32_t i2c_read_byte(uint32_t addr, uint32_t reg) > +{ > + uint32_t val; > + > + writel(NRF51_TWI_BASE + NRF51_TWI_REG_ADDRESS, addr); > + writel(NRF51_TWI_BASE + NRF51_TWI_TASK_STARTTX, 1); > + writel(NRF51_TWI_BASE + NRF51_TWI_REG_TXD, reg); > + val = readl(NRF51_TWI_BASE + NRF51_TWI_EVENT_TXDSENT); > + g_assert_cmpuint(val, ==, 1); > + writel(NRF51_TWI_BASE + NRF51_TWI_TASK_STOP, 1); > + > + writel(NRF51_TWI_BASE + NRF51_TWI_TASK_STARTRX, 1); > + val = readl(NRF51_TWI_BASE + NRF51_TWI_EVENT_RXDREADY); > + g_assert_cmpuint(val, ==, 1); > + val = readl(NRF51_TWI_BASE + NRF51_TWI_REG_RXD); > + writel(NRF51_TWI_BASE + NRF51_TWI_TASK_STOP, 1);
Any chance that you could use qemu_writel() right from the start here? That will make it easier to finally get rid of global_qtest one day... Thomas
