[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-arm] [PATCH 10/16] hw/dma/pl080: Allow use as embedded-struct
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [Qemu-arm] [PATCH 10/16] hw/dma/pl080: Allow use as embedded-struct device |
Date: |
Fri, 10 Aug 2018 02:27:13 -0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 |
On 08/10/2018 02:18 AM, Philippe Mathieu-Daudé wrote:
> On 08/09/2018 10:01 AM, Peter Maydell wrote:
>> Create a new include file for the pl081's device struct,
>> type macros, etc, so that it can be instantiated using
>> the "embedded struct" coding style.
[...]
>> +#ifndef HW_DMA_PL080_H
>> +#define HW_DMA_PL080_H
>> +
>> +#include "hw/sysbus.h"
>> +
>> +#define PL080_MAX_CHANNELS 8
>> +
>> +typedef struct {
>> + uint32_t src;
>> + uint32_t dest;
>> + uint32_t lli;
>> + uint32_t ctrl;
>> + uint32_t conf;
>> +} pl080_channel;
>> +
>> +#define TYPE_PL080 "pl080"
>> +#define TYPE_PL081 "pl081"
>> +#define PL080(obj) OBJECT_CHECK(PL080State, (obj), TYPE_PL080)
>
> The PL080() macro can stay in the source.
Oh this respect the "coding style" indeed.
Can you add the PL081() companion? Thanks.
>
> Regardless:
> Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
>
>> +
>> +typedef struct PL080State {
>> + SysBusDevice parent_obj;
>> +
>> + MemoryRegion iomem;
>> + uint8_t tc_int;
>> + uint8_t tc_mask;
>> + uint8_t err_int;
>> + uint8_t err_mask;
>> + uint32_t conf;
>> + uint32_t sync;
>> + uint32_t req_single;
>> + uint32_t req_burst;
>> + pl080_channel chan[PL080_MAX_CHANNELS];
>> + int nchannels;
>> + /* Flag to avoid recursive DMA invocations. */
>> + int running;
>> + qemu_irq irq;
>> +} PL080State;
>> +
>> +#endif
>> diff --git a/hw/dma/pl080.c b/hw/dma/pl080.c
>> index 7724c93b8f2..0f79c2d8a6c 100644
>> --- a/hw/dma/pl080.c
>> +++ b/hw/dma/pl080.c
>> @@ -11,8 +11,8 @@
>> #include "hw/sysbus.h"
>> #include "exec/address-spaces.h"
>> #include "qemu/log.h"
>> +#include "hw/dma/pl080.h"
>>
>> -#define PL080_MAX_CHANNELS 8
>> #define PL080_CONF_E 0x1
>> #define PL080_CONF_M1 0x2
>> #define PL080_CONF_M2 0x4
>> @@ -30,36 +30,6 @@
>> #define PL080_CCTRL_D 0x02000000
>> #define PL080_CCTRL_S 0x01000000
>>
>> -typedef struct {
>> - uint32_t src;
>> - uint32_t dest;
>> - uint32_t lli;
>> - uint32_t ctrl;
>> - uint32_t conf;
>> -} pl080_channel;
>> -
>> -#define TYPE_PL080 "pl080"
>> -#define PL080(obj) OBJECT_CHECK(PL080State, (obj), TYPE_PL080)
>> -
>> -typedef struct PL080State {
>> - SysBusDevice parent_obj;
>> -
>> - MemoryRegion iomem;
>> - uint8_t tc_int;
>> - uint8_t tc_mask;
>> - uint8_t err_int;
>> - uint8_t err_mask;
>> - uint32_t conf;
>> - uint32_t sync;
>> - uint32_t req_single;
>> - uint32_t req_burst;
>> - pl080_channel chan[PL080_MAX_CHANNELS];
>> - int nchannels;
>> - /* Flag to avoid recursive DMA invocations. */
>> - int running;
>> - qemu_irq irq;
>> -} PL080State;
>> -
>> static const VMStateDescription vmstate_pl080_channel = {
>> .name = "pl080_channel",
>> .version_id = 1,
>> @@ -408,7 +378,7 @@ static const TypeInfo pl080_info = {
>> };
>>
>> static const TypeInfo pl081_info = {
>> - .name = "pl081",
>> + .name = TYPE_PL081,
>> .parent = TYPE_PL080,
>> .instance_init = pl081_init,
>> };
>> diff --git a/MAINTAINERS b/MAINTAINERS
>> index 5d1a3645dd4..92ccca716c6 100644
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -444,6 +444,7 @@ F: hw/char/pl011.c
>> F: include/hw/char/pl011.h
>> F: hw/display/pl110*
>> F: hw/dma/pl080.c
>> +F: include/hw/dma/pl080.h
>> F: hw/dma/pl330.c
>> F: hw/gpio/pl061.c
>> F: hw/input/pl050.c
>>
[Qemu-arm] [PATCH 04/16] hw/arm/iotkit: Wire up the S32KTIMER, Peter Maydell, 2018/08/09
[Qemu-arm] [PATCH 05/16] hw/misc/iotkit-sysctl: Implement IoTKit system control element, Peter Maydell, 2018/08/09