diff mbox

[V5,8/8] arm: xlnx-zynqmp: Add xlnx-dp and xlnx-dpdma

Message ID 1445002914-7351-9-git-send-email-fred.konrad@greensocs.com
State New
Headers show

Commit Message

fred.konrad@greensocs.com Oct. 16, 2015, 1:41 p.m. UTC
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(+)

Comments

Alistair Francis Nov. 20, 2015, 12:21 p.m. UTC | #1
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
>
>
fred.konrad@greensocs.com Nov. 23, 2015, 1:23 p.m. UTC | #2
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
>>
>>
Alistair Francis Nov. 24, 2015, 3:42 a.m. UTC | #3
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
>>>
>>>
>
>
fred.konrad@greensocs.com Nov. 30, 2015, 9:27 a.m. UTC | #4
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
>>>>
>>>>
>>
Alistair Francis Dec. 7, 2015, 11:43 p.m. UTC | #5
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 mbox

Patch

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