All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ben Dooks <ben.dooks@codethink.co.uk>
To: Arnd Bergmann <arnd@arndb.de>
Cc: linux-kernel@lists.codethink.co.uk, dmaengine@vger.kernel.org,
	vinod.koul@intel.com, dan.j.williams@intel.com,
	linux-sh@vger.kernel.org, magnus.damm@opensource.se,
	horms@verge.net.au, g.liakhovetski@gmx.d,
	kuninori.morimoto.gx@renesas.com, devicetree@vger.kernel.org
Subject: Re: [PATCH v2 8/9] DMA: shdma: initial of common code
Date: Tue, 15 Apr 2014 09:54:51 +0000	[thread overview]
Message-ID: <534D01EB.3080702@codethink.co.uk> (raw)
In-Reply-To: <4431489.B0PGdfS6ct@wuerfel>

On 14/04/14 23:06, Arnd Bergmann wrote:
> On Monday 14 April 2014 22:35:11 Ben Dooks wrote:
>> Add support for building shdma internal data from the device tree to allow
>> converting the driver to be device tree enabled.
>>
>> It includes a helper for the of case to build the internal data used to
>> select and filter out the DMA channels from the ID information in the
>> device tree. Also updates the documentation for the DT case.
>>
>> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
>
> I think you should try to explain better here why you need all the logic
> that other drivers don't for the DT case.
>
> I've tried to understand what you are doing with shdma_of_client and
> couldn't quite figure it out. The driver is already different from
> all the others, because it still uses the 'slave_id' field in
> dma_slave_config (only for the non-DT case) that all other drivers
> don't use at all.
>
> My guess is that if you manage to clean that up first, all of this
> wouldn't be necessary.

Does anyone else have comments on this from a Renesas perspective? We
can uniquely identify a channel on a single DMAC using the MID/RID mux
control value.

If we can unify the slave-id and the MID/RID values then the driver is
simpler and we can drop part of the update and make the entire SHDMA
system simpler.

>>   static struct dma_chan *shdma_of_xlate(struct of_phandle_args *dma_spec,
>>   				       struct of_dma *ofdma)
>>   {
>> +	struct platform_device *pdev = ofdma->of_dma_data;
>>   	u32 id = dma_spec->args[0];
>>   	dma_cap_mask_t mask;
>>   	struct dma_chan *chan;
>>
>> -	if (dma_spec->args_count != 1)
>> +	if (dma_spec->args_count = 2) {
>> +		struct shdma_of_state *state = platform_get_drvdata(pdev);
>> +		struct shdma_of_client *client;
>> +
>> +		client = shdma_of_find_client(state, id);
>> +		if (!client) {
>> +			client = devm_kzalloc(&pdev->dev, sizeof(*client),
>> +					      GFP_KERNEL);
>> +			if (!client)
>> +				return NULL;
>> +
>> +			client->index = atomic_inc_return(&of_slave_index);
>> +			client->cfg.slave_id = id;
>> +			client->cfg.mid_rid = id;
>> +			client->cfg.chcr = dma_spec->args[1];
>
> Can you explain the purpose of setting the chcr in DT? For all I can
> tell, this should come from the device driver when that calls the
> dma_slave_config function, unlike the mid_rid value.

See previous note about transfer-widths and register-sizes not always
matching. I also do not have any idea about other SoCs in the series
if there are any differences between channel settings.

-- 
Ben Dooks				http://www.codethink.co.uk/
Senior Engineer				Codethink - Providing Genius

WARNING: multiple messages have this Message-ID (diff)
From: Ben Dooks <ben.dooks@codethink.co.uk>
To: Arnd Bergmann <arnd@arndb.de>
Cc: linux-kernel@lists.codethink.co.uk, dmaengine@vger.kernel.org,
	vinod.koul@intel.com, dan.j.williams@intel.com,
	linux-sh@vger.kernel.org, magnus.damm@opensource.se,
	horms@verge.net.au, g.liakhovetski@gmx.d,
	kuninori.morimoto.gx@renesas.com, devicetree@vger.kernel.org
Subject: Re: [PATCH v2 8/9] DMA: shdma: initial of common code
Date: Tue, 15 Apr 2014 10:54:51 +0100	[thread overview]
Message-ID: <534D01EB.3080702@codethink.co.uk> (raw)
In-Reply-To: <4431489.B0PGdfS6ct@wuerfel>

On 14/04/14 23:06, Arnd Bergmann wrote:
> On Monday 14 April 2014 22:35:11 Ben Dooks wrote:
>> Add support for building shdma internal data from the device tree to allow
>> converting the driver to be device tree enabled.
>>
>> It includes a helper for the of case to build the internal data used to
>> select and filter out the DMA channels from the ID information in the
>> device tree. Also updates the documentation for the DT case.
>>
>> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
>
> I think you should try to explain better here why you need all the logic
> that other drivers don't for the DT case.
>
> I've tried to understand what you are doing with shdma_of_client and
> couldn't quite figure it out. The driver is already different from
> all the others, because it still uses the 'slave_id' field in
> dma_slave_config (only for the non-DT case) that all other drivers
> don't use at all.
>
> My guess is that if you manage to clean that up first, all of this
> wouldn't be necessary.

Does anyone else have comments on this from a Renesas perspective? We
can uniquely identify a channel on a single DMAC using the MID/RID mux
control value.

If we can unify the slave-id and the MID/RID values then the driver is
simpler and we can drop part of the update and make the entire SHDMA
system simpler.

>>   static struct dma_chan *shdma_of_xlate(struct of_phandle_args *dma_spec,
>>   				       struct of_dma *ofdma)
>>   {
>> +	struct platform_device *pdev = ofdma->of_dma_data;
>>   	u32 id = dma_spec->args[0];
>>   	dma_cap_mask_t mask;
>>   	struct dma_chan *chan;
>>
>> -	if (dma_spec->args_count != 1)
>> +	if (dma_spec->args_count == 2) {
>> +		struct shdma_of_state *state = platform_get_drvdata(pdev);
>> +		struct shdma_of_client *client;
>> +
>> +		client = shdma_of_find_client(state, id);
>> +		if (!client) {
>> +			client = devm_kzalloc(&pdev->dev, sizeof(*client),
>> +					      GFP_KERNEL);
>> +			if (!client)
>> +				return NULL;
>> +
>> +			client->index = atomic_inc_return(&of_slave_index);
>> +			client->cfg.slave_id = id;
>> +			client->cfg.mid_rid = id;
>> +			client->cfg.chcr = dma_spec->args[1];
>
> Can you explain the purpose of setting the chcr in DT? For all I can
> tell, this should come from the device driver when that calls the
> dma_slave_config function, unlike the mid_rid value.

See previous note about transfer-widths and register-sizes not always
matching. I also do not have any idea about other SoCs in the series
if there are any differences between channel settings.

-- 
Ben Dooks				http://www.codethink.co.uk/
Senior Engineer				Codethink - Providing Genius

  reply	other threads:[~2014-04-15  9:54 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-14 21:35 Updates Renesas OF-DMA code Ben Dooks
2014-04-14 21:35 ` Ben Dooks
2014-04-14 21:35 ` [PATCH v2 1/9] ARM: shmobile: r8a7790: add dmac0,dmac1 clocks Ben Dooks
2014-04-14 21:35   ` Ben Dooks
2014-05-13  9:23   ` Geert Uytterhoeven
2014-05-13  9:23     ` Geert Uytterhoeven
2014-06-04 15:54     ` Ben Dooks
2014-06-04 15:54       ` Ben Dooks
2014-04-14 21:35 ` [PATCH v2 2/9] ARM: shmobile: r8a7790: add dma defines for sys and audio dmacs Ben Dooks
2014-04-14 21:35   ` Ben Dooks
2014-04-14 22:10   ` Arnd Bergmann
2014-04-14 22:10     ` Arnd Bergmann
2014-04-14 22:51     ` Simon Horman
2014-04-14 22:51       ` Simon Horman
2014-04-15  9:46       ` Ben Dooks
2014-04-15  9:46         ` Ben Dooks
2014-05-13  8:51   ` Geert Uytterhoeven
2014-05-13  8:51     ` Geert Uytterhoeven
2014-05-13 10:46   ` Geert Uytterhoeven
2014-05-13 10:46     ` Geert Uytterhoeven
     [not found]     ` <CAMuHMdUsRSGuGgnAgjKtOWmx3C_PWUxAU=2XTvPE1M9o13S1uA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-05-27  8:08       ` Geert Uytterhoeven
2014-05-27  8:08         ` Geert Uytterhoeven
2014-09-24 12:27   ` [PATCH v2 2/9] ARM: shmobile: r8a7790: Add DU node to device tree Laurent Pinchart
2014-04-14 21:35 ` [PATCH v2 3/9] ARM: shmobile: r8a7790: add dmac0 dmac1 nodes Ben Dooks
2014-04-14 21:35   ` Ben Dooks
     [not found]   ` <1397511312-4845-4-git-send-email-ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org>
2014-05-13 12:00     ` Geert Uytterhoeven
2014-05-13 12:00       ` Geert Uytterhoeven
     [not found]       ` <CAMuHMdUNAFJEFWYe5cpKaZqoZFhRA1s0YBntT5ZVJaieSj8ovQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-06-04 16:04         ` Ben Dooks
2014-06-04 16:04           ` Ben Dooks
2014-05-15 13:11   ` Geert Uytterhoeven
2014-05-15 13:11     ` Geert Uytterhoeven
2014-04-14 21:35 ` [PATCH v2 4/9] ARM: shmobile: r8a7790: Add DMA for MMCIF1 Ben Dooks
2014-04-14 21:35   ` Ben Dooks
2014-04-14 21:35 ` [PATCH v2 5/9] ARM: shmobile: add Audio DMAC clocks Ben Dooks
2014-04-14 21:35   ` Ben Dooks
2014-04-14 21:35 ` [PATCH v2 6/9] ARM: shmobile: r8a7790: add audio dmac node Ben Dooks
2014-04-14 21:35   ` Ben Dooks
2014-05-13  8:53   ` Geert Uytterhoeven
2014-05-13  8:53     ` Geert Uytterhoeven
2014-05-13 12:10   ` Geert Uytterhoeven
2014-05-13 12:10     ` Geert Uytterhoeven
2014-05-15 13:12   ` Geert Uytterhoeven
2014-05-15 13:12     ` Geert Uytterhoeven
     [not found] ` <1397511312-4845-1-git-send-email-ben.dooks-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org>
2014-04-14 21:35   ` [PATCH v2 7/9] ARM: shmobile: lager: enable sysdma units 0 and 1 Ben Dooks
2014-04-14 21:35     ` Ben Dooks
2014-09-24 12:27     ` [PATCH v2 7/9] ARM: shmobile: lager: Enable DU device in DT Laurent Pinchart
2014-09-24 13:01     ` Sergei Shtylyov
2014-09-24 13:09     ` Laurent Pinchart
2014-04-14 21:35 ` [PATCH v2 8/9] DMA: shdma: initial of common code Ben Dooks
2014-04-14 21:35   ` Ben Dooks
2014-04-14 22:06   ` Arnd Bergmann
2014-04-14 22:06     ` Arnd Bergmann
2014-04-15  9:54     ` Ben Dooks [this message]
2014-04-15  9:54       ` Ben Dooks
2014-05-21 20:14       ` Geert Uytterhoeven
2014-05-21 20:14         ` Geert Uytterhoeven
2014-06-04 15:54         ` Ben Dooks
2014-06-04 15:54           ` Ben Dooks
2014-04-14 21:35 ` [PATCH v2 9/9] DMA: shdma: wire r8a7790 Ben Dooks
2014-04-14 21:35   ` Ben Dooks
2014-04-15 12:20   ` Sergei Shtylyov
2014-04-15 12:20     ` Sergei Shtylyov
2014-04-18  1:32   ` Kuninori Morimoto
2014-04-18  1:32     ` Kuninori Morimoto
2014-04-23 13:08     ` Ben Dooks
2014-04-23 13:08       ` Ben Dooks

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=534D01EB.3080702@codethink.co.uk \
    --to=ben.dooks@codethink.co.uk \
    --cc=arnd@arndb.de \
    --cc=dan.j.williams@intel.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dmaengine@vger.kernel.org \
    --cc=g.liakhovetski@gmx.d \
    --cc=horms@verge.net.au \
    --cc=kuninori.morimoto.gx@renesas.com \
    --cc=linux-kernel@lists.codethink.co.uk \
    --cc=linux-sh@vger.kernel.org \
    --cc=magnus.damm@opensource.se \
    --cc=vinod.koul@intel.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.