Re: [Qemu-devel] [PATCH V5 8/8] arm: xlnx-zynqmp: Add xlnx-dp and xlnx-dpdma
On Mon, Nov 30, 2015 at 2:57 PM, Frederic Konradwrote: > On 24/11/2015 04:42, Alistair Francis wrote: >> On Mon, Nov 23, 2015 at 6:53 PM, KONRAD Frederic >> wrote: >>> >>> Le 20/11/2015 13:21, Alistair Francis a écrit : On Fri, Oct 16, 2015 at 7:11 PM, wrote: > From: KONRAD Frederic > > This adds the DP and the DPDMA to the Zynq MP platform. > > Signed-off-by: KONRAD Frederic > Reviewed-by: Peter Crosthwaite > Tested-By: Hyun Kwon > --- > hw/arm/xlnx-zynqmp.c | 20 > include/hw/arm/xlnx-zynqmp.h | 5 + > 2 files changed, 25 insertions(+) > > diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c > index b36ca3d..dfed5cd 100644 > --- a/hw/arm/xlnx-zynqmp.c > +++ b/hw/arm/xlnx-zynqmp.c > @@ -32,6 +32,12 @@ > #define SATA_ADDR 0xFD0C > #define SATA_NUM_PORTS 2 > > +#define DP_ADDR 0xfd4a > +#define DP_IRQ 113 > + > +#define DPDMA_ADDR 0xfd4c > +#define DPDMA_IRQ 116 > + > static const uint64_t gem_addr[XLNX_ZYNQMP_NUM_GEMS] = { > 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, > }; > @@ -97,6 +103,11 @@ static void xlnx_zynqmp_init(Object *obj) > > object_initialize(>sata, sizeof(s->sata), TYPE_SYSBUS_AHCI); > qdev_set_parent_bus(DEVICE(>sata), sysbus_get_default()); > + > +object_initialize(>dp, sizeof(s->dp), TYPE_XLNX_DP); > +qdev_set_parent_bus(DEVICE(>dp), sysbus_get_default()); New line > +object_initialize(>dpdma, sizeof(s->dpdma), TYPE_XLNX_DPDMA); > +qdev_set_parent_bus(DEVICE(>dpdma), sysbus_get_default()); > } > > static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) > @@ -258,6 +269,15 @@ static void xlnx_zynqmp_realize(DeviceState *dev, > Error **errp) > > sysbus_mmio_map(SYS_BUS_DEVICE(>sata), 0, SATA_ADDR); > sysbus_connect_irq(SYS_BUS_DEVICE(>sata), 0, > gic_spi[SATA_INTR]); > + > +sysbus_mmio_map(SYS_BUS_DEVICE(>dp), 0, DP_ADDR); > +sysbus_connect_irq(SYS_BUS_DEVICE(>dp), 0, gic_spi[DP_IRQ]); New line > +sysbus_mmio_map(SYS_BUS_DEVICE(>dpdma), 0, DPDMA_ADDR); > +sysbus_connect_irq(SYS_BUS_DEVICE(>dpdma), 0, > gic_spi[DPDMA_IRQ]); > +object_property_set_bool(OBJECT(>dp), true, "realized", ); > +object_property_set_bool(OBJECT(>dpdma), true, "realized", ); Can you add something to check these errors? >>> >>> Ok. >> Thanks >> >>> BTW I'll move the I2C and AUX device out of xlnx-dp and put that here. >>> Is that ok with you? >> That should be fine. Is there a reason you are doing that? Does >> anything else need to access them? > No I don't thing anything else is accessing that. It's just a screen > specific stuff. > If it's fine like this then I don't bother changing that. I think it is fine as is. Thanks, Alistair > > Fred > >> >> Thanks, >> >> Alistair >> >>> Thanks, >>> Fred >>> Thanks, Alistair > +object_property_set_link(OBJECT(>dp), OBJECT(>dpdma), "dpdma", > + _abort); > } > > static Property xlnx_zynqmp_props[] = { > diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h > index 4005a99..5a4d6cc 100644 > --- a/include/hw/arm/xlnx-zynqmp.h > +++ b/include/hw/arm/xlnx-zynqmp.h > @@ -24,6 +24,8 @@ > #include "hw/char/cadence_uart.h" > #include "hw/ide/pci.h" > #include "hw/ide/ahci.h" > +#include "hw/dma/xlnx_dpdma.h" > +#include "hw/display/xlnx_dp.h" > > #define TYPE_XLNX_ZYNQMP "xlnx,zynqmp" > #define XLNX_ZYNQMP(obj) OBJECT_CHECK(XlnxZynqMPState, (obj), \ > @@ -66,6 +68,9 @@ typedef struct XlnxZynqMPState { > > char *boot_cpu; > ARMCPU *boot_cpu_ptr; > + > +XlnxDPState dp; > +XlnxDPDMAState dpdma; > } XlnxZynqMPState; > > #define XLNX_ZYNQMP_H > -- > 1.9.0 > > >>> > >
Re: [Qemu-devel] [PATCH V5 8/8] arm: xlnx-zynqmp: Add xlnx-dp and xlnx-dpdma
On 24/11/2015 04:42, Alistair Francis wrote: > On Mon, Nov 23, 2015 at 6:53 PM, KONRAD Frederic >wrote: >> >> Le 20/11/2015 13:21, Alistair Francis a écrit : >>> On Fri, Oct 16, 2015 at 7:11 PM, wrote: From: KONRAD Frederic This adds the DP and the DPDMA to the Zynq MP platform. Signed-off-by: KONRAD Frederic Reviewed-by: Peter Crosthwaite Tested-By: Hyun Kwon --- hw/arm/xlnx-zynqmp.c | 20 include/hw/arm/xlnx-zynqmp.h | 5 + 2 files changed, 25 insertions(+) diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c index b36ca3d..dfed5cd 100644 --- a/hw/arm/xlnx-zynqmp.c +++ b/hw/arm/xlnx-zynqmp.c @@ -32,6 +32,12 @@ #define SATA_ADDR 0xFD0C #define SATA_NUM_PORTS 2 +#define DP_ADDR 0xfd4a +#define DP_IRQ 113 + +#define DPDMA_ADDR 0xfd4c +#define DPDMA_IRQ 116 + static const uint64_t gem_addr[XLNX_ZYNQMP_NUM_GEMS] = { 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, }; @@ -97,6 +103,11 @@ static void xlnx_zynqmp_init(Object *obj) object_initialize(>sata, sizeof(s->sata), TYPE_SYSBUS_AHCI); qdev_set_parent_bus(DEVICE(>sata), sysbus_get_default()); + +object_initialize(>dp, sizeof(s->dp), TYPE_XLNX_DP); +qdev_set_parent_bus(DEVICE(>dp), sysbus_get_default()); >>> New line >>> +object_initialize(>dpdma, sizeof(s->dpdma), TYPE_XLNX_DPDMA); +qdev_set_parent_bus(DEVICE(>dpdma), sysbus_get_default()); } static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) @@ -258,6 +269,15 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) sysbus_mmio_map(SYS_BUS_DEVICE(>sata), 0, SATA_ADDR); sysbus_connect_irq(SYS_BUS_DEVICE(>sata), 0, gic_spi[SATA_INTR]); + +sysbus_mmio_map(SYS_BUS_DEVICE(>dp), 0, DP_ADDR); +sysbus_connect_irq(SYS_BUS_DEVICE(>dp), 0, gic_spi[DP_IRQ]); >>> New line >>> +sysbus_mmio_map(SYS_BUS_DEVICE(>dpdma), 0, DPDMA_ADDR); +sysbus_connect_irq(SYS_BUS_DEVICE(>dpdma), 0, gic_spi[DPDMA_IRQ]); +object_property_set_bool(OBJECT(>dp), true, "realized", ); +object_property_set_bool(OBJECT(>dpdma), true, "realized", ); >>> Can you add something to check these errors? >> >> Ok. > Thanks > >> BTW I'll move the I2C and AUX device out of xlnx-dp and put that here. >> Is that ok with you? > That should be fine. Is there a reason you are doing that? Does > anything else need to access them? No I don't thing anything else is accessing that. It's just a screen specific stuff. If it's fine like this then I don't bother changing that. Fred > > Thanks, > > Alistair > >> Thanks, >> Fred >> >>> Thanks, >>> >>> Alistair >>> +object_property_set_link(OBJECT(>dp), OBJECT(>dpdma), "dpdma", + _abort); } static Property xlnx_zynqmp_props[] = { diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h index 4005a99..5a4d6cc 100644 --- a/include/hw/arm/xlnx-zynqmp.h +++ b/include/hw/arm/xlnx-zynqmp.h @@ -24,6 +24,8 @@ #include "hw/char/cadence_uart.h" #include "hw/ide/pci.h" #include "hw/ide/ahci.h" +#include "hw/dma/xlnx_dpdma.h" +#include "hw/display/xlnx_dp.h" #define TYPE_XLNX_ZYNQMP "xlnx,zynqmp" #define XLNX_ZYNQMP(obj) OBJECT_CHECK(XlnxZynqMPState, (obj), \ @@ -66,6 +68,9 @@ typedef struct XlnxZynqMPState { char *boot_cpu; ARMCPU *boot_cpu_ptr; + +XlnxDPState dp; +XlnxDPDMAState dpdma; } XlnxZynqMPState; #define XLNX_ZYNQMP_H -- 1.9.0 >>
Re: [Qemu-devel] [PATCH V5 8/8] arm: xlnx-zynqmp: Add xlnx-dp and xlnx-dpdma
Le 20/11/2015 13:21, Alistair Francis a écrit : On Fri, Oct 16, 2015 at 7:11 PM,wrote: From: KONRAD Frederic This adds the DP and the DPDMA to the Zynq MP platform. Signed-off-by: KONRAD Frederic Reviewed-by: Peter Crosthwaite Tested-By: Hyun Kwon --- hw/arm/xlnx-zynqmp.c | 20 include/hw/arm/xlnx-zynqmp.h | 5 + 2 files changed, 25 insertions(+) diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c index b36ca3d..dfed5cd 100644 --- a/hw/arm/xlnx-zynqmp.c +++ b/hw/arm/xlnx-zynqmp.c @@ -32,6 +32,12 @@ #define SATA_ADDR 0xFD0C #define SATA_NUM_PORTS 2 +#define DP_ADDR 0xfd4a +#define DP_IRQ 113 + +#define DPDMA_ADDR 0xfd4c +#define DPDMA_IRQ 116 + static const uint64_t gem_addr[XLNX_ZYNQMP_NUM_GEMS] = { 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, }; @@ -97,6 +103,11 @@ static void xlnx_zynqmp_init(Object *obj) object_initialize(>sata, sizeof(s->sata), TYPE_SYSBUS_AHCI); qdev_set_parent_bus(DEVICE(>sata), sysbus_get_default()); + +object_initialize(>dp, sizeof(s->dp), TYPE_XLNX_DP); +qdev_set_parent_bus(DEVICE(>dp), sysbus_get_default()); New line +object_initialize(>dpdma, sizeof(s->dpdma), TYPE_XLNX_DPDMA); +qdev_set_parent_bus(DEVICE(>dpdma), sysbus_get_default()); } static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) @@ -258,6 +269,15 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) sysbus_mmio_map(SYS_BUS_DEVICE(>sata), 0, SATA_ADDR); sysbus_connect_irq(SYS_BUS_DEVICE(>sata), 0, gic_spi[SATA_INTR]); + +sysbus_mmio_map(SYS_BUS_DEVICE(>dp), 0, DP_ADDR); +sysbus_connect_irq(SYS_BUS_DEVICE(>dp), 0, gic_spi[DP_IRQ]); New line +sysbus_mmio_map(SYS_BUS_DEVICE(>dpdma), 0, DPDMA_ADDR); +sysbus_connect_irq(SYS_BUS_DEVICE(>dpdma), 0, gic_spi[DPDMA_IRQ]); +object_property_set_bool(OBJECT(>dp), true, "realized", ); +object_property_set_bool(OBJECT(>dpdma), true, "realized", ); Can you add something to check these errors? Ok. BTW I'll move the I2C and AUX device out of xlnx-dp and put that here. Is that ok with you? Thanks, Fred Thanks, Alistair +object_property_set_link(OBJECT(>dp), OBJECT(>dpdma), "dpdma", + _abort); } static Property xlnx_zynqmp_props[] = { diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h index 4005a99..5a4d6cc 100644 --- a/include/hw/arm/xlnx-zynqmp.h +++ b/include/hw/arm/xlnx-zynqmp.h @@ -24,6 +24,8 @@ #include "hw/char/cadence_uart.h" #include "hw/ide/pci.h" #include "hw/ide/ahci.h" +#include "hw/dma/xlnx_dpdma.h" +#include "hw/display/xlnx_dp.h" #define TYPE_XLNX_ZYNQMP "xlnx,zynqmp" #define XLNX_ZYNQMP(obj) OBJECT_CHECK(XlnxZynqMPState, (obj), \ @@ -66,6 +68,9 @@ typedef struct XlnxZynqMPState { char *boot_cpu; ARMCPU *boot_cpu_ptr; + +XlnxDPState dp; +XlnxDPDMAState dpdma; } XlnxZynqMPState; #define XLNX_ZYNQMP_H -- 1.9.0
Re: [Qemu-devel] [PATCH V5 8/8] arm: xlnx-zynqmp: Add xlnx-dp and xlnx-dpdma
On Mon, Nov 23, 2015 at 6:53 PM, KONRAD Fredericwrote: > > > Le 20/11/2015 13:21, Alistair Francis a écrit : >> >> On Fri, Oct 16, 2015 at 7:11 PM, wrote: >>> >>> From: KONRAD Frederic >>> >>> This adds the DP and the DPDMA to the Zynq MP platform. >>> >>> Signed-off-by: KONRAD Frederic >>> Reviewed-by: Peter Crosthwaite >>> Tested-By: Hyun Kwon >>> --- >>> hw/arm/xlnx-zynqmp.c | 20 >>> include/hw/arm/xlnx-zynqmp.h | 5 + >>> 2 files changed, 25 insertions(+) >>> >>> diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c >>> index b36ca3d..dfed5cd 100644 >>> --- a/hw/arm/xlnx-zynqmp.c >>> +++ b/hw/arm/xlnx-zynqmp.c >>> @@ -32,6 +32,12 @@ >>> #define SATA_ADDR 0xFD0C >>> #define SATA_NUM_PORTS 2 >>> >>> +#define DP_ADDR 0xfd4a >>> +#define DP_IRQ 113 >>> + >>> +#define DPDMA_ADDR 0xfd4c >>> +#define DPDMA_IRQ 116 >>> + >>> static const uint64_t gem_addr[XLNX_ZYNQMP_NUM_GEMS] = { >>> 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, >>> }; >>> @@ -97,6 +103,11 @@ static void xlnx_zynqmp_init(Object *obj) >>> >>> object_initialize(>sata, sizeof(s->sata), TYPE_SYSBUS_AHCI); >>> qdev_set_parent_bus(DEVICE(>sata), sysbus_get_default()); >>> + >>> +object_initialize(>dp, sizeof(s->dp), TYPE_XLNX_DP); >>> +qdev_set_parent_bus(DEVICE(>dp), sysbus_get_default()); >> >> New line >> >>> +object_initialize(>dpdma, sizeof(s->dpdma), TYPE_XLNX_DPDMA); >>> +qdev_set_parent_bus(DEVICE(>dpdma), sysbus_get_default()); >>> } >>> >>> static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) >>> @@ -258,6 +269,15 @@ static void xlnx_zynqmp_realize(DeviceState *dev, >>> Error **errp) >>> >>> sysbus_mmio_map(SYS_BUS_DEVICE(>sata), 0, SATA_ADDR); >>> sysbus_connect_irq(SYS_BUS_DEVICE(>sata), 0, >>> gic_spi[SATA_INTR]); >>> + >>> +sysbus_mmio_map(SYS_BUS_DEVICE(>dp), 0, DP_ADDR); >>> +sysbus_connect_irq(SYS_BUS_DEVICE(>dp), 0, gic_spi[DP_IRQ]); >> >> New line >> >>> +sysbus_mmio_map(SYS_BUS_DEVICE(>dpdma), 0, DPDMA_ADDR); >>> +sysbus_connect_irq(SYS_BUS_DEVICE(>dpdma), 0, >>> gic_spi[DPDMA_IRQ]); >>> +object_property_set_bool(OBJECT(>dp), true, "realized", ); >>> +object_property_set_bool(OBJECT(>dpdma), true, "realized", ); >> >> Can you add something to check these errors? > > > Ok. Thanks > BTW I'll move the I2C and AUX device out of xlnx-dp and put that here. > Is that ok with you? That should be fine. Is there a reason you are doing that? Does anything else need to access them? Thanks, Alistair > > Thanks, > Fred > >> >> Thanks, >> >> Alistair >> >>> +object_property_set_link(OBJECT(>dp), OBJECT(>dpdma), "dpdma", >>> + _abort); >>> } >>> >>> static Property xlnx_zynqmp_props[] = { >>> diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h >>> index 4005a99..5a4d6cc 100644 >>> --- a/include/hw/arm/xlnx-zynqmp.h >>> +++ b/include/hw/arm/xlnx-zynqmp.h >>> @@ -24,6 +24,8 @@ >>> #include "hw/char/cadence_uart.h" >>> #include "hw/ide/pci.h" >>> #include "hw/ide/ahci.h" >>> +#include "hw/dma/xlnx_dpdma.h" >>> +#include "hw/display/xlnx_dp.h" >>> >>> #define TYPE_XLNX_ZYNQMP "xlnx,zynqmp" >>> #define XLNX_ZYNQMP(obj) OBJECT_CHECK(XlnxZynqMPState, (obj), \ >>> @@ -66,6 +68,9 @@ typedef struct XlnxZynqMPState { >>> >>> char *boot_cpu; >>> ARMCPU *boot_cpu_ptr; >>> + >>> +XlnxDPState dp; >>> +XlnxDPDMAState dpdma; >>> } XlnxZynqMPState; >>> >>> #define XLNX_ZYNQMP_H >>> -- >>> 1.9.0 >>> >>> > >
Re: [Qemu-devel] [PATCH V5 8/8] arm: xlnx-zynqmp: Add xlnx-dp and xlnx-dpdma
On Fri, Oct 16, 2015 at 7:11 PM,wrote: > From: KONRAD Frederic > > This adds the DP and the DPDMA to the Zynq MP platform. > > Signed-off-by: KONRAD Frederic > Reviewed-by: Peter Crosthwaite > Tested-By: Hyun Kwon > --- > hw/arm/xlnx-zynqmp.c | 20 > include/hw/arm/xlnx-zynqmp.h | 5 + > 2 files changed, 25 insertions(+) > > diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c > index b36ca3d..dfed5cd 100644 > --- a/hw/arm/xlnx-zynqmp.c > +++ b/hw/arm/xlnx-zynqmp.c > @@ -32,6 +32,12 @@ > #define SATA_ADDR 0xFD0C > #define SATA_NUM_PORTS 2 > > +#define DP_ADDR 0xfd4a > +#define DP_IRQ 113 > + > +#define DPDMA_ADDR 0xfd4c > +#define DPDMA_IRQ 116 > + > static const uint64_t gem_addr[XLNX_ZYNQMP_NUM_GEMS] = { > 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, > }; > @@ -97,6 +103,11 @@ static void xlnx_zynqmp_init(Object *obj) > > object_initialize(>sata, sizeof(s->sata), TYPE_SYSBUS_AHCI); > qdev_set_parent_bus(DEVICE(>sata), sysbus_get_default()); > + > +object_initialize(>dp, sizeof(s->dp), TYPE_XLNX_DP); > +qdev_set_parent_bus(DEVICE(>dp), sysbus_get_default()); New line > +object_initialize(>dpdma, sizeof(s->dpdma), TYPE_XLNX_DPDMA); > +qdev_set_parent_bus(DEVICE(>dpdma), sysbus_get_default()); > } > > static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) > @@ -258,6 +269,15 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error > **errp) > > sysbus_mmio_map(SYS_BUS_DEVICE(>sata), 0, SATA_ADDR); > sysbus_connect_irq(SYS_BUS_DEVICE(>sata), 0, gic_spi[SATA_INTR]); > + > +sysbus_mmio_map(SYS_BUS_DEVICE(>dp), 0, DP_ADDR); > +sysbus_connect_irq(SYS_BUS_DEVICE(>dp), 0, gic_spi[DP_IRQ]); New line > +sysbus_mmio_map(SYS_BUS_DEVICE(>dpdma), 0, DPDMA_ADDR); > +sysbus_connect_irq(SYS_BUS_DEVICE(>dpdma), 0, gic_spi[DPDMA_IRQ]); > +object_property_set_bool(OBJECT(>dp), true, "realized", ); > +object_property_set_bool(OBJECT(>dpdma), true, "realized", ); Can you add something to check these errors? Thanks, Alistair > +object_property_set_link(OBJECT(>dp), OBJECT(>dpdma), "dpdma", > + _abort); > } > > static Property xlnx_zynqmp_props[] = { > diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h > index 4005a99..5a4d6cc 100644 > --- a/include/hw/arm/xlnx-zynqmp.h > +++ b/include/hw/arm/xlnx-zynqmp.h > @@ -24,6 +24,8 @@ > #include "hw/char/cadence_uart.h" > #include "hw/ide/pci.h" > #include "hw/ide/ahci.h" > +#include "hw/dma/xlnx_dpdma.h" > +#include "hw/display/xlnx_dp.h" > > #define TYPE_XLNX_ZYNQMP "xlnx,zynqmp" > #define XLNX_ZYNQMP(obj) OBJECT_CHECK(XlnxZynqMPState, (obj), \ > @@ -66,6 +68,9 @@ typedef struct XlnxZynqMPState { > > char *boot_cpu; > ARMCPU *boot_cpu_ptr; > + > +XlnxDPState dp; > +XlnxDPDMAState dpdma; > } XlnxZynqMPState; > > #define XLNX_ZYNQMP_H > -- > 1.9.0 > >
[Qemu-devel] [PATCH V5 8/8] arm: xlnx-zynqmp: Add xlnx-dp and xlnx-dpdma
From: KONRAD FredericThis adds the DP and the DPDMA to the Zynq MP platform. Signed-off-by: KONRAD Frederic Reviewed-by: Peter Crosthwaite Tested-By: Hyun Kwon --- hw/arm/xlnx-zynqmp.c | 20 include/hw/arm/xlnx-zynqmp.h | 5 + 2 files changed, 25 insertions(+) diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c index b36ca3d..dfed5cd 100644 --- a/hw/arm/xlnx-zynqmp.c +++ b/hw/arm/xlnx-zynqmp.c @@ -32,6 +32,12 @@ #define SATA_ADDR 0xFD0C #define SATA_NUM_PORTS 2 +#define DP_ADDR 0xfd4a +#define DP_IRQ 113 + +#define DPDMA_ADDR 0xfd4c +#define DPDMA_IRQ 116 + static const uint64_t gem_addr[XLNX_ZYNQMP_NUM_GEMS] = { 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, }; @@ -97,6 +103,11 @@ static void xlnx_zynqmp_init(Object *obj) object_initialize(>sata, sizeof(s->sata), TYPE_SYSBUS_AHCI); qdev_set_parent_bus(DEVICE(>sata), sysbus_get_default()); + +object_initialize(>dp, sizeof(s->dp), TYPE_XLNX_DP); +qdev_set_parent_bus(DEVICE(>dp), sysbus_get_default()); +object_initialize(>dpdma, sizeof(s->dpdma), TYPE_XLNX_DPDMA); +qdev_set_parent_bus(DEVICE(>dpdma), sysbus_get_default()); } static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) @@ -258,6 +269,15 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) sysbus_mmio_map(SYS_BUS_DEVICE(>sata), 0, SATA_ADDR); sysbus_connect_irq(SYS_BUS_DEVICE(>sata), 0, gic_spi[SATA_INTR]); + +sysbus_mmio_map(SYS_BUS_DEVICE(>dp), 0, DP_ADDR); +sysbus_connect_irq(SYS_BUS_DEVICE(>dp), 0, gic_spi[DP_IRQ]); +sysbus_mmio_map(SYS_BUS_DEVICE(>dpdma), 0, DPDMA_ADDR); +sysbus_connect_irq(SYS_BUS_DEVICE(>dpdma), 0, gic_spi[DPDMA_IRQ]); +object_property_set_bool(OBJECT(>dp), true, "realized", ); +object_property_set_bool(OBJECT(>dpdma), true, "realized", ); +object_property_set_link(OBJECT(>dp), OBJECT(>dpdma), "dpdma", + _abort); } static Property xlnx_zynqmp_props[] = { diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h index 4005a99..5a4d6cc 100644 --- a/include/hw/arm/xlnx-zynqmp.h +++ b/include/hw/arm/xlnx-zynqmp.h @@ -24,6 +24,8 @@ #include "hw/char/cadence_uart.h" #include "hw/ide/pci.h" #include "hw/ide/ahci.h" +#include "hw/dma/xlnx_dpdma.h" +#include "hw/display/xlnx_dp.h" #define TYPE_XLNX_ZYNQMP "xlnx,zynqmp" #define XLNX_ZYNQMP(obj) OBJECT_CHECK(XlnxZynqMPState, (obj), \ @@ -66,6 +68,9 @@ typedef struct XlnxZynqMPState { char *boot_cpu; ARMCPU *boot_cpu_ptr; + +XlnxDPState dp; +XlnxDPDMAState dpdma; } XlnxZynqMPState; #define XLNX_ZYNQMP_H -- 1.9.0