From: "André Przywara" <andre.przywara@arm.com>
To: Stefan Bruens <stefan.bruens@rwth-aachen.de>
Cc: linux-sunxi@googlegroups.com,
Maxime Ripard <maxime.ripard@free-electrons.com>,
Chen-Yu Tsai <wens@csie.org>,
devicetree@vger.kernel.org, dmaengine@vger.kernel.org,
Vinod Koul <vinod.koul@intel.com>,
Rob Herring <robh+dt@kernel.org>,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 3/3] dmaengine: sun6i: Add support for Allwinner A64
Date: Mon, 4 Sep 2017 00:14:22 +0100 [thread overview]
Message-ID: <de04a144-ba07-00df-c684-d7db8956a94f@arm.com> (raw)
In-Reply-To: <2607878.Us0MSlEf6n@pebbles.site>
On 02/09/17 03:02, Stefan Bruens wrote:
> On Samstag, 2. September 2017 00:32:50 CEST André Przywara wrote:
>> Hi,
>>
>> On 01/09/17 02:19, Stefan Bruens wrote:
>>> On Freitag, 1. September 2017 02:31:35 CEST Andre Przywara wrote:
>>>> Hi,
>>>>
>>>> On 31/08/17 00:36, Stefan Brüns wrote:
>>>>> The A64 SoC has the same dma engine as the H3 (sun8i), with a
>>>>> reduced amount of physical channels. Add the proper config data
>>>>> and compatible string to support it.
>>>>
>>>> ...
>>>>
>>>>> diff --git a/drivers/dma/sun6i-dma.c b/drivers/dma/sun6i-dma.c
>>>>> index 5f4eee4513e5..6a17c5d63582 100644
>>>>> --- a/drivers/dma/sun6i-dma.c
>>>>> +++ b/drivers/dma/sun6i-dma.c
>>>>> @@ -1068,6 +1068,12 @@ static struct sun6i_dma_config sun8i_h3_dma_cfg =
>>>>> {
>>>>>
>>>>> .nr_max_vchans = 34,
>>>>> .dmac_variant = DMAC_VARIANT_H3,
>>>>>
>>>>> };
>>>>>
>>>>> +
>>>>> +static struct sun6i_dma_config sun50i_a64_dma_cfg = {
>>>>> + .nr_max_channels = 8,
>>>>> + .nr_max_requests = 27,
>>>>> + .nr_max_vchans = 38,
>>>>> + .dmac_variant = DMAC_VARIANT_H3,
>>>>>
>>>>> };
>>>>>
> [...]
>>> There are also the incompatibilities in the "DMA channel configuration
>>> register" (burst length; burst width; burst length field offset).
>>>
>>> We can either have 3 different compatible strings, or another property for
>>> the register model.
>>
>> The latter is usually frowned upon, using separate compatible strings
>> for each group of SoCs is the way to go here.
>
> Just for clarification, I was not talking about a property in the devicetree,
> but about a struct member in the config data, i.e. the .dmac_variant above.
Ah, I see. I was indeed talking about device tree nodes.
So in this case I would lean towards mapping the actual properties to
member names in struct sun6i_dma_config, in this case something like:
.auto_clock_gate = 0x28;
.max_burst_width = 16;
This looks more flexible to me and avoids hard to read code where
property A is used in SoC X and Y, but property B in SoC X and Z, for
instance.
In the auto clock gate case this would result in an easy-to-read:
writel(SUN8I_DMA_GATE_ENABLE,
sdc->base + sdc->cfg->auto_clock_gate);
(possibly guarded somehow to catch that A31 case)
Sorry for the delay in this answer, I see that you kept the
DMAC_VARIANT_ style for your new post, and the end result doesn't look
too bad. But maybe still changing this is not too hard now that you have
more fine grained patches?
Cheers,
Andre.
next prev parent reply other threads:[~2017-09-03 23:18 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-30 23:36 [PATCH 0/3] dmaengine: Fix DMA on current allwinner SoCs, add A64 support Stefan Brüns
2017-08-30 23:36 ` [PATCH 1/3] dmaengine: sun6i: Correct DMA support on H3 Stefan Brüns
2017-08-31 14:51 ` Maxime Ripard
2017-09-01 3:04 ` Stefan Bruens
2017-09-01 13:35 ` Maxime Ripard
2017-09-01 14:42 ` Brüns, Stefan
2017-09-04 6:50 ` Maxime Ripard
2017-08-30 23:36 ` [PATCH 2/3] arm64: allwinner: a64: Add device node for DMA controller Stefan Brüns
2017-09-11 22:00 ` Rob Herring
2017-08-30 23:36 ` [PATCH 3/3] dmaengine: sun6i: Add support for Allwinner A64 Stefan Brüns
2017-08-31 11:44 ` Code Kipper
2017-08-31 14:52 ` Maxime Ripard
2017-08-31 16:35 ` [linux-sunxi] " Code Kipper
2017-09-01 0:31 ` Andre Przywara
2017-09-01 1:19 ` Stefan Bruens
2017-09-01 22:32 ` André Przywara
2017-09-02 0:38 ` Stefan Bruens
2017-09-02 2:02 ` Stefan Bruens
2017-09-03 23:14 ` André Przywara [this message]
2017-09-01 6:04 ` Maxime Ripard
2017-09-01 22:35 ` André Przywara
2017-09-04 7:04 ` Maxime Ripard
2017-09-04 8:14 ` André Przywara
2017-09-08 14:39 ` Maxime Ripard
2017-09-08 14:57 ` Andre Przywara
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=de04a144-ba07-00df-c684-d7db8956a94f@arm.com \
--to=andre.przywara@arm.com \
--cc=devicetree@vger.kernel.org \
--cc=dmaengine@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sunxi@googlegroups.com \
--cc=maxime.ripard@free-electrons.com \
--cc=robh+dt@kernel.org \
--cc=stefan.bruens@rwth-aachen.de \
--cc=vinod.koul@intel.com \
--cc=wens@csie.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox