|
25 | 25 | #include "chardev/char.h"
|
26 | 26 | #include "hw/char/mchp_pfsoc_mmuart.h"
|
27 | 27 |
|
| 28 | +#define REGS_OFFSET 0x20 |
| 29 | + |
28 | 30 | static uint64_t mchp_pfsoc_mmuart_read(void *opaque, hwaddr addr, unsigned size)
|
29 | 31 | {
|
30 | 32 | MchpPfSoCMMUartState *s = opaque;
|
@@ -72,16 +74,19 @@ MchpPfSoCMMUartState *mchp_pfsoc_mmuart_create(MemoryRegion *sysmem,
|
72 | 74 |
|
73 | 75 | s = g_new0(MchpPfSoCMMUartState, 1);
|
74 | 76 |
|
| 77 | + memory_region_init(&s->container, NULL, "mchp.pfsoc.mmuart", 0x1000); |
| 78 | + |
75 | 79 | memory_region_init_io(&s->iomem, NULL, &mchp_pfsoc_mmuart_ops, s,
|
76 |
| - "mchp.pfsoc.mmuart", 0x1000); |
| 80 | + "mchp.pfsoc.mmuart.regs", 0x1000 - REGS_OFFSET); |
| 81 | + memory_region_add_subregion(&s->container, REGS_OFFSET, &s->iomem); |
77 | 82 |
|
78 | 83 | s->base = base;
|
79 | 84 | s->irq = irq;
|
80 | 85 |
|
81 |
| - s->serial = serial_mm_init(sysmem, base, 2, irq, 399193, chr, |
| 86 | + s->serial = serial_mm_init(&s->container, 0, 2, irq, 399193, chr, |
82 | 87 | DEVICE_LITTLE_ENDIAN);
|
83 | 88 |
|
84 |
| - memory_region_add_subregion(sysmem, base + 0x20, &s->iomem); |
| 89 | + memory_region_add_subregion(sysmem, base, &s->container); |
85 | 90 |
|
86 | 91 | return s;
|
87 | 92 | }
|
0 commit comments