Message ID | 1445002914-7351-9-git-send-email-fred.konrad@greensocs.com |
---|---|
State | New |
Headers | show |
On Fri, Oct 16, 2015 at 7:11 PM, <fred.konrad@greensocs.com> wrote: > From: KONRAD Frederic <fred.konrad@greensocs.com> > > This adds the DP and the DPDMA to the Zynq MP platform. > > Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com> > Reviewed-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> > Tested-By: Hyun Kwon <hyun.kwon@xilinx.com> > --- > 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 0xFD0C0000 > #define SATA_NUM_PORTS 2 > > +#define DP_ADDR 0xfd4a0000 > +#define DP_IRQ 113 > + > +#define DPDMA_ADDR 0xfd4c0000 > +#define DPDMA_IRQ 116 > + > static const uint64_t gem_addr[XLNX_ZYNQMP_NUM_GEMS] = { > 0xFF0B0000, 0xFF0C0000, 0xFF0D0000, 0xFF0E0000, > }; > @@ -97,6 +103,11 @@ static void xlnx_zynqmp_init(Object *obj) > > object_initialize(&s->sata, sizeof(s->sata), TYPE_SYSBUS_AHCI); > qdev_set_parent_bus(DEVICE(&s->sata), sysbus_get_default()); > + > + object_initialize(&s->dp, sizeof(s->dp), TYPE_XLNX_DP); > + qdev_set_parent_bus(DEVICE(&s->dp), sysbus_get_default()); New line > + object_initialize(&s->dpdma, sizeof(s->dpdma), TYPE_XLNX_DPDMA); > + qdev_set_parent_bus(DEVICE(&s->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(&s->sata), 0, SATA_ADDR); > sysbus_connect_irq(SYS_BUS_DEVICE(&s->sata), 0, gic_spi[SATA_INTR]); > + > + sysbus_mmio_map(SYS_BUS_DEVICE(&s->dp), 0, DP_ADDR); > + sysbus_connect_irq(SYS_BUS_DEVICE(&s->dp), 0, gic_spi[DP_IRQ]); New line > + sysbus_mmio_map(SYS_BUS_DEVICE(&s->dpdma), 0, DPDMA_ADDR); > + sysbus_connect_irq(SYS_BUS_DEVICE(&s->dpdma), 0, gic_spi[DPDMA_IRQ]); > + object_property_set_bool(OBJECT(&s->dp), true, "realized", &err); > + object_property_set_bool(OBJECT(&s->dpdma), true, "realized", &err); Can you add something to check these errors? Thanks, Alistair > + object_property_set_link(OBJECT(&s->dp), OBJECT(&s->dpdma), "dpdma", > + &error_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 > >
Le 20/11/2015 13:21, Alistair Francis a écrit : > On Fri, Oct 16, 2015 at 7:11 PM, <fred.konrad@greensocs.com> wrote: >> From: KONRAD Frederic <fred.konrad@greensocs.com> >> >> This adds the DP and the DPDMA to the Zynq MP platform. >> >> Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com> >> Reviewed-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> >> Tested-By: Hyun Kwon <hyun.kwon@xilinx.com> >> --- >> 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 0xFD0C0000 >> #define SATA_NUM_PORTS 2 >> >> +#define DP_ADDR 0xfd4a0000 >> +#define DP_IRQ 113 >> + >> +#define DPDMA_ADDR 0xfd4c0000 >> +#define DPDMA_IRQ 116 >> + >> static const uint64_t gem_addr[XLNX_ZYNQMP_NUM_GEMS] = { >> 0xFF0B0000, 0xFF0C0000, 0xFF0D0000, 0xFF0E0000, >> }; >> @@ -97,6 +103,11 @@ static void xlnx_zynqmp_init(Object *obj) >> >> object_initialize(&s->sata, sizeof(s->sata), TYPE_SYSBUS_AHCI); >> qdev_set_parent_bus(DEVICE(&s->sata), sysbus_get_default()); >> + >> + object_initialize(&s->dp, sizeof(s->dp), TYPE_XLNX_DP); >> + qdev_set_parent_bus(DEVICE(&s->dp), sysbus_get_default()); > New line > >> + object_initialize(&s->dpdma, sizeof(s->dpdma), TYPE_XLNX_DPDMA); >> + qdev_set_parent_bus(DEVICE(&s->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(&s->sata), 0, SATA_ADDR); >> sysbus_connect_irq(SYS_BUS_DEVICE(&s->sata), 0, gic_spi[SATA_INTR]); >> + >> + sysbus_mmio_map(SYS_BUS_DEVICE(&s->dp), 0, DP_ADDR); >> + sysbus_connect_irq(SYS_BUS_DEVICE(&s->dp), 0, gic_spi[DP_IRQ]); > New line > >> + sysbus_mmio_map(SYS_BUS_DEVICE(&s->dpdma), 0, DPDMA_ADDR); >> + sysbus_connect_irq(SYS_BUS_DEVICE(&s->dpdma), 0, gic_spi[DPDMA_IRQ]); >> + object_property_set_bool(OBJECT(&s->dp), true, "realized", &err); >> + object_property_set_bool(OBJECT(&s->dpdma), true, "realized", &err); > 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(&s->dp), OBJECT(&s->dpdma), "dpdma", >> + &error_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 >> >>
On Mon, Nov 23, 2015 at 6:53 PM, KONRAD Frederic <fred.konrad@greensocs.com> wrote: > > > Le 20/11/2015 13:21, Alistair Francis a écrit : >> >> On Fri, Oct 16, 2015 at 7:11 PM, <fred.konrad@greensocs.com> wrote: >>> >>> From: KONRAD Frederic <fred.konrad@greensocs.com> >>> >>> This adds the DP and the DPDMA to the Zynq MP platform. >>> >>> Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com> >>> Reviewed-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> >>> Tested-By: Hyun Kwon <hyun.kwon@xilinx.com> >>> --- >>> 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 0xFD0C0000 >>> #define SATA_NUM_PORTS 2 >>> >>> +#define DP_ADDR 0xfd4a0000 >>> +#define DP_IRQ 113 >>> + >>> +#define DPDMA_ADDR 0xfd4c0000 >>> +#define DPDMA_IRQ 116 >>> + >>> static const uint64_t gem_addr[XLNX_ZYNQMP_NUM_GEMS] = { >>> 0xFF0B0000, 0xFF0C0000, 0xFF0D0000, 0xFF0E0000, >>> }; >>> @@ -97,6 +103,11 @@ static void xlnx_zynqmp_init(Object *obj) >>> >>> object_initialize(&s->sata, sizeof(s->sata), TYPE_SYSBUS_AHCI); >>> qdev_set_parent_bus(DEVICE(&s->sata), sysbus_get_default()); >>> + >>> + object_initialize(&s->dp, sizeof(s->dp), TYPE_XLNX_DP); >>> + qdev_set_parent_bus(DEVICE(&s->dp), sysbus_get_default()); >> >> New line >> >>> + object_initialize(&s->dpdma, sizeof(s->dpdma), TYPE_XLNX_DPDMA); >>> + qdev_set_parent_bus(DEVICE(&s->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(&s->sata), 0, SATA_ADDR); >>> sysbus_connect_irq(SYS_BUS_DEVICE(&s->sata), 0, >>> gic_spi[SATA_INTR]); >>> + >>> + sysbus_mmio_map(SYS_BUS_DEVICE(&s->dp), 0, DP_ADDR); >>> + sysbus_connect_irq(SYS_BUS_DEVICE(&s->dp), 0, gic_spi[DP_IRQ]); >> >> New line >> >>> + sysbus_mmio_map(SYS_BUS_DEVICE(&s->dpdma), 0, DPDMA_ADDR); >>> + sysbus_connect_irq(SYS_BUS_DEVICE(&s->dpdma), 0, >>> gic_spi[DPDMA_IRQ]); >>> + object_property_set_bool(OBJECT(&s->dp), true, "realized", &err); >>> + object_property_set_bool(OBJECT(&s->dpdma), true, "realized", &err); >> >> 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(&s->dp), OBJECT(&s->dpdma), "dpdma", >>> + &error_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 >>> >>> > >
On 24/11/2015 04:42, Alistair Francis wrote: > On Mon, Nov 23, 2015 at 6:53 PM, KONRAD Frederic > <fred.konrad@greensocs.com> wrote: >> >> Le 20/11/2015 13:21, Alistair Francis a écrit : >>> On Fri, Oct 16, 2015 at 7:11 PM, <fred.konrad@greensocs.com> wrote: >>>> From: KONRAD Frederic <fred.konrad@greensocs.com> >>>> >>>> This adds the DP and the DPDMA to the Zynq MP platform. >>>> >>>> Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com> >>>> Reviewed-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> >>>> Tested-By: Hyun Kwon <hyun.kwon@xilinx.com> >>>> --- >>>> 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 0xFD0C0000 >>>> #define SATA_NUM_PORTS 2 >>>> >>>> +#define DP_ADDR 0xfd4a0000 >>>> +#define DP_IRQ 113 >>>> + >>>> +#define DPDMA_ADDR 0xfd4c0000 >>>> +#define DPDMA_IRQ 116 >>>> + >>>> static const uint64_t gem_addr[XLNX_ZYNQMP_NUM_GEMS] = { >>>> 0xFF0B0000, 0xFF0C0000, 0xFF0D0000, 0xFF0E0000, >>>> }; >>>> @@ -97,6 +103,11 @@ static void xlnx_zynqmp_init(Object *obj) >>>> >>>> object_initialize(&s->sata, sizeof(s->sata), TYPE_SYSBUS_AHCI); >>>> qdev_set_parent_bus(DEVICE(&s->sata), sysbus_get_default()); >>>> + >>>> + object_initialize(&s->dp, sizeof(s->dp), TYPE_XLNX_DP); >>>> + qdev_set_parent_bus(DEVICE(&s->dp), sysbus_get_default()); >>> New line >>> >>>> + object_initialize(&s->dpdma, sizeof(s->dpdma), TYPE_XLNX_DPDMA); >>>> + qdev_set_parent_bus(DEVICE(&s->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(&s->sata), 0, SATA_ADDR); >>>> sysbus_connect_irq(SYS_BUS_DEVICE(&s->sata), 0, >>>> gic_spi[SATA_INTR]); >>>> + >>>> + sysbus_mmio_map(SYS_BUS_DEVICE(&s->dp), 0, DP_ADDR); >>>> + sysbus_connect_irq(SYS_BUS_DEVICE(&s->dp), 0, gic_spi[DP_IRQ]); >>> New line >>> >>>> + sysbus_mmio_map(SYS_BUS_DEVICE(&s->dpdma), 0, DPDMA_ADDR); >>>> + sysbus_connect_irq(SYS_BUS_DEVICE(&s->dpdma), 0, >>>> gic_spi[DPDMA_IRQ]); >>>> + object_property_set_bool(OBJECT(&s->dp), true, "realized", &err); >>>> + object_property_set_bool(OBJECT(&s->dpdma), true, "realized", &err); >>> 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(&s->dp), OBJECT(&s->dpdma), "dpdma", >>>> + &error_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 >>>> >>>> >>
On Mon, Nov 30, 2015 at 2:57 PM, Frederic Konrad <fred.konrad@greensocs.com> wrote: > On 24/11/2015 04:42, Alistair Francis wrote: >> On Mon, Nov 23, 2015 at 6:53 PM, KONRAD Frederic >> <fred.konrad@greensocs.com> wrote: >>> >>> Le 20/11/2015 13:21, Alistair Francis a écrit : >>>> On Fri, Oct 16, 2015 at 7:11 PM, <fred.konrad@greensocs.com> wrote: >>>>> From: KONRAD Frederic <fred.konrad@greensocs.com> >>>>> >>>>> This adds the DP and the DPDMA to the Zynq MP platform. >>>>> >>>>> Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com> >>>>> Reviewed-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> >>>>> Tested-By: Hyun Kwon <hyun.kwon@xilinx.com> >>>>> --- >>>>> 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 0xFD0C0000 >>>>> #define SATA_NUM_PORTS 2 >>>>> >>>>> +#define DP_ADDR 0xfd4a0000 >>>>> +#define DP_IRQ 113 >>>>> + >>>>> +#define DPDMA_ADDR 0xfd4c0000 >>>>> +#define DPDMA_IRQ 116 >>>>> + >>>>> static const uint64_t gem_addr[XLNX_ZYNQMP_NUM_GEMS] = { >>>>> 0xFF0B0000, 0xFF0C0000, 0xFF0D0000, 0xFF0E0000, >>>>> }; >>>>> @@ -97,6 +103,11 @@ static void xlnx_zynqmp_init(Object *obj) >>>>> >>>>> object_initialize(&s->sata, sizeof(s->sata), TYPE_SYSBUS_AHCI); >>>>> qdev_set_parent_bus(DEVICE(&s->sata), sysbus_get_default()); >>>>> + >>>>> + object_initialize(&s->dp, sizeof(s->dp), TYPE_XLNX_DP); >>>>> + qdev_set_parent_bus(DEVICE(&s->dp), sysbus_get_default()); >>>> New line >>>> >>>>> + object_initialize(&s->dpdma, sizeof(s->dpdma), TYPE_XLNX_DPDMA); >>>>> + qdev_set_parent_bus(DEVICE(&s->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(&s->sata), 0, SATA_ADDR); >>>>> sysbus_connect_irq(SYS_BUS_DEVICE(&s->sata), 0, >>>>> gic_spi[SATA_INTR]); >>>>> + >>>>> + sysbus_mmio_map(SYS_BUS_DEVICE(&s->dp), 0, DP_ADDR); >>>>> + sysbus_connect_irq(SYS_BUS_DEVICE(&s->dp), 0, gic_spi[DP_IRQ]); >>>> New line >>>> >>>>> + sysbus_mmio_map(SYS_BUS_DEVICE(&s->dpdma), 0, DPDMA_ADDR); >>>>> + sysbus_connect_irq(SYS_BUS_DEVICE(&s->dpdma), 0, >>>>> gic_spi[DPDMA_IRQ]); >>>>> + object_property_set_bool(OBJECT(&s->dp), true, "realized", &err); >>>>> + object_property_set_bool(OBJECT(&s->dpdma), true, "realized", &err); >>>> 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(&s->dp), OBJECT(&s->dpdma), "dpdma", >>>>> + &error_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 >>>>> >>>>> >>> > >
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 0xFD0C0000 #define SATA_NUM_PORTS 2 +#define DP_ADDR 0xfd4a0000 +#define DP_IRQ 113 + +#define DPDMA_ADDR 0xfd4c0000 +#define DPDMA_IRQ 116 + static const uint64_t gem_addr[XLNX_ZYNQMP_NUM_GEMS] = { 0xFF0B0000, 0xFF0C0000, 0xFF0D0000, 0xFF0E0000, }; @@ -97,6 +103,11 @@ static void xlnx_zynqmp_init(Object *obj) object_initialize(&s->sata, sizeof(s->sata), TYPE_SYSBUS_AHCI); qdev_set_parent_bus(DEVICE(&s->sata), sysbus_get_default()); + + object_initialize(&s->dp, sizeof(s->dp), TYPE_XLNX_DP); + qdev_set_parent_bus(DEVICE(&s->dp), sysbus_get_default()); + object_initialize(&s->dpdma, sizeof(s->dpdma), TYPE_XLNX_DPDMA); + qdev_set_parent_bus(DEVICE(&s->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(&s->sata), 0, SATA_ADDR); sysbus_connect_irq(SYS_BUS_DEVICE(&s->sata), 0, gic_spi[SATA_INTR]); + + sysbus_mmio_map(SYS_BUS_DEVICE(&s->dp), 0, DP_ADDR); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->dp), 0, gic_spi[DP_IRQ]); + sysbus_mmio_map(SYS_BUS_DEVICE(&s->dpdma), 0, DPDMA_ADDR); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->dpdma), 0, gic_spi[DPDMA_IRQ]); + object_property_set_bool(OBJECT(&s->dp), true, "realized", &err); + object_property_set_bool(OBJECT(&s->dpdma), true, "realized", &err); + object_property_set_link(OBJECT(&s->dp), OBJECT(&s->dpdma), "dpdma", + &error_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