[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 2/3] hw/arm/nrf51_soc: Connect UART to nRF51
From: |
Alistair Francis |
Subject: |
Re: [Qemu-devel] [PATCH v3 2/3] hw/arm/nrf51_soc: Connect UART to nRF51 SoC |
Date: |
Thu, 25 Oct 2018 10:25:21 +0100 |
On Thu, Oct 25, 2018 at 1:56 AM Julia Suvorova via Qemu-devel
<address@hidden> wrote:
>
> Wire up nRF51 UART in the corresponding SoC.
>
> Signed-off-by: Julia Suvorova <address@hidden>
Reviewed-by: Alistair Francis <address@hidden>
Alistair
> ---
> hw/arm/microbit.c | 2 ++
> hw/arm/nrf51_soc.c | 20 ++++++++++++++++++++
> include/hw/arm/nrf51_soc.h | 3 +++
> 3 files changed, 25 insertions(+)
>
> diff --git a/hw/arm/microbit.c b/hw/arm/microbit.c
> index e7d74116a5..a734e7f650 100644
> --- a/hw/arm/microbit.c
> +++ b/hw/arm/microbit.c
> @@ -12,6 +12,7 @@
> #include "qapi/error.h"
> #include "hw/boards.h"
> #include "hw/arm/arm.h"
> +#include "sysemu/sysemu.h"
> #include "exec/address-spaces.h"
>
> #include "hw/arm/nrf51_soc.h"
> @@ -35,6 +36,7 @@ static void microbit_init(MachineState *machine)
>
> sysbus_init_child_obj(OBJECT(machine), "nrf51", soc, sizeof(s->nrf51),
> TYPE_NRF51_SOC);
> + qdev_prop_set_chr(DEVICE(&s->nrf51), "serial0", serial_hd(0));
> object_property_set_link(soc, OBJECT(system_memory), "memory",
> &error_fatal);
> object_property_set_bool(soc, true, "realized", &error_fatal);
> diff --git a/hw/arm/nrf51_soc.c b/hw/arm/nrf51_soc.c
> index 1a59ef4552..b89c1bdea0 100644
> --- a/hw/arm/nrf51_soc.c
> +++ b/hw/arm/nrf51_soc.c
> @@ -43,9 +43,12 @@
> #define NRF51822_FLASH_SIZE (256 * 1024)
> #define NRF51822_SRAM_SIZE (16 * 1024)
>
> +#define BASE_TO_IRQ(base) ((base >> 12) & 0x1F)
> +
> static void nrf51_soc_realize(DeviceState *dev_soc, Error **errp)
> {
> NRF51State *s = NRF51_SOC(dev_soc);
> + MemoryRegion *mr;
> Error *err = NULL;
>
> if (!s->board_memory) {
> @@ -82,6 +85,18 @@ static void nrf51_soc_realize(DeviceState *dev_soc, Error
> **errp)
> }
> memory_region_add_subregion(&s->container, SRAM_BASE, &s->sram);
>
> + /* UART */
> + object_property_set_bool(OBJECT(&s->uart), true, "realized", &err);
> + if (err) {
> + error_propagate(errp, err);
> + return;
> + }
> + mr = sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->uart), 0);
> + memory_region_add_subregion_overlap(&s->container, UART_BASE, mr, 0);
> + sysbus_connect_irq(SYS_BUS_DEVICE(&s->uart), 0,
> + qdev_get_gpio_in(DEVICE(&s->cpu),
> + BASE_TO_IRQ(UART_BASE)));
> +
> create_unimplemented_device("nrf51_soc.io", IOMEM_BASE, IOMEM_SIZE);
> create_unimplemented_device("nrf51_soc.ficr", FICR_BASE, FICR_SIZE);
> create_unimplemented_device("nrf51_soc.private",
> @@ -99,6 +114,11 @@ static void nrf51_soc_init(Object *obj)
> qdev_prop_set_string(DEVICE(&s->cpu), "cpu-type",
> ARM_CPU_TYPE_NAME("cortex-m0"));
> qdev_prop_set_uint32(DEVICE(&s->cpu), "num-irq", 32);
> +
> + sysbus_init_child_obj(obj, "uart", &s->uart, sizeof(s->uart),
> + TYPE_NRF51_UART);
> + object_property_add_alias(obj, "serial0", OBJECT(&s->uart), "chardev",
> + &error_abort);
> }
>
> static Property nrf51_soc_properties[] = {
> diff --git a/include/hw/arm/nrf51_soc.h b/include/hw/arm/nrf51_soc.h
> index f4e092b554..73fc92e9a8 100644
> --- a/include/hw/arm/nrf51_soc.h
> +++ b/include/hw/arm/nrf51_soc.h
> @@ -12,6 +12,7 @@
>
> #include "hw/sysbus.h"
> #include "hw/arm/armv7m.h"
> +#include "hw/char/nrf51_uart.h"
>
> #define TYPE_NRF51_SOC "nrf51-soc"
> #define NRF51_SOC(obj) \
> @@ -24,6 +25,8 @@ typedef struct NRF51State {
> /*< public >*/
> ARMv7MState cpu;
>
> + NRF51UARTState uart;
> +
> MemoryRegion iomem;
> MemoryRegion sram;
> MemoryRegion flash;
> --
> 2.17.1
>
>
- [Qemu-devel] [PATCH v3 0/3] arm: Add nRF51 SoC UART support, Julia Suvorova, 2018/10/24
- [Qemu-devel] [PATCH v3 1/3] hw/char: Implement nRF51 SoC UART, Julia Suvorova, 2018/10/24
- [Qemu-devel] [PATCH v3 3/3] tests/boot-serial-test: Add microbit board testcase, Julia Suvorova, 2018/10/24
- [Qemu-devel] [PATCH v3 2/3] hw/arm/nrf51_soc: Connect UART to nRF51 SoC, Julia Suvorova, 2018/10/24
- Re: [Qemu-devel] [PATCH v3 2/3] hw/arm/nrf51_soc: Connect UART to nRF51 SoC,
Alistair Francis <=
- Re: [Qemu-devel] [PATCH v3 0/3] arm: Add nRF51 SoC UART support, Stefan Hajnoczi, 2018/10/25
- Re: [Qemu-devel] [PATCH v3 0/3] arm: Add nRF51 SoC UART support, Peter Maydell, 2018/10/29