From: Arnd Bergmann <arnd@arndb.de>
To: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Cc: Ulf Hansson <ulf.hansson@linaro.org>, Chris Ball <cjb@laptop.org>,
Simon <horms@verge.net.au>, Linux-SH <linux-sh@vger.kernel.org>,
linux-mmc <linux-mmc@vger.kernel.org>
Subject: Re: [PATCH 2/9] mmc: tmio: tmio_mmc_host has .dma
Date: Wed, 07 Jan 2015 10:23:49 +0100 [thread overview]
Message-ID: <2017134.He5GnynN45@wuerfel> (raw)
In-Reply-To: <87fvbnpblr.wl%kuninori.morimoto.gx@renesas.com>
On Wednesday 07 January 2015 02:28:43 Kuninori Morimoto wrote:
>
> Hi Arnd
>
> Thank you for your DMAEngine fixup patch.
> I tried this patch, and have comment.
Thanks for looking at the changes
> >
> > - sdev = to_shdma_dev(schan->dma_chan.device);
> > - ret = sdev->ops->set_slave(schan, match, 0, true);
> > + ret = sdev->ops->set_slave(schan, schan->real_slave_id, 0, true);
> > + schan->real_slave_id = slave_id;
> > if (ret < 0)
> > return false;
>
> Here, your patch is
>
> ret = sdev->ops->set_slave(schan, schan->real_slave_id, 0, true);
> schan->real_slave_id = slave_id;
> if (ret < 0)
>
> But, it doesn't work. Maybe, you want this
>
> schan->real_slave_id = slave_id;
> ret = sdev->ops->set_slave(schan, schan->real_slave_id, 0, true);
> if (ret < 0)
Right, I broke it in a last-minute change. Originally I had
schan->real_slave_id = slave_id;
ret = sdev->ops->set_slave(schan, schan->real_slave_id, 0, true);
if (ret < 0) {
schan->real_slave_id = 0;
return ret;
}
and then meant to shorten it to
ret = sdev->ops->set_slave(schan, slave_id, 0, true);
if (ret < 0)
return ret;
schan->real_slave_id = slave_id;
Either of those should be fine, but what I wrote was instead was
completely wrong.
> > diff --git a/drivers/mmc/host/sh_mmcif.c b/drivers/mmc/host/sh_mmcif.c
> > index 7d9d6a321521..df3a537f5a83 100644
> > --- a/drivers/mmc/host/sh_mmcif.c
> > +++ b/drivers/mmc/host/sh_mmcif.c
> > @@ -388,7 +388,7 @@ sh_mmcif_request_dma_one(struct sh_mmcif_host *host,
> > {
> > struct dma_slave_config cfg = { 0, };
> > struct dma_chan *chan;
> > - unsigned int slave_id;
> > + void *slave_data;
> > struct resource *res;
> > dma_cap_mask_t mask;
> > int ret;
> > @@ -414,8 +414,6 @@ sh_mmcif_request_dma_one(struct sh_mmcif_host *host,
> >
> > res = platform_get_resource(host->pd, IORESOURCE_MEM, 0);
> >
> > - /* In the OF case the driver will get the slave ID from the DT */
> > - cfg.slave_id = slave_id;
> > cfg.direction = direction;
> >
> > if (direction == DMA_DEV_TO_MEM) {
>
> I got error here
>
>
> /opt/home/morimoto/linux/drivers/mmc/host/sh_mmcif.c: In function ‘sh_mmcif_request_dma_one’:
> /opt/home/morimoto/linux/drivers/mmc/host/sh_mmcif.c:400:3: error: ‘slave_id’ undeclared (first use in this function)
> slave_id = direction == DMA_MEM_TO_DEV
> ^
> /opt/home/morimoto/linux/drivers/mmc/host/sh_mmcif.c:400:3: note: each undeclared identifier is reported only once for each function it appears in
> /opt/home/morimoto/linux/drivers/mmc/host/sh_mmcif.c:391:8: warning: unused variable ‘slave_data’ [-Wunused-variable]
> void *slave_data;
> ^
>
> Maybe you are missing this
>
> if (pdata)
> - slave_id = direction == DMA_MEM_TO_DEV
> - ? pdata->slave_id_tx : pdata->slave_id_rx;
> + slave_data = direction == DMA_MEM_TO_DEV
> + ? (void *)pdata->slave_id_tx : (void *)pdata->slave_id_rx;
> else
> - slave_id = 0;
> + slave_data = 0;
>
> chan = dma_request_slave_channel_compat(mask, shdma_chan_filter,
> - (void *)(unsigned long)slave_id, &host->pd->dev,
> + slave_data, &host->pd->dev,
> direction == DMA_MEM_TO_DEV ? "tx" : "rx");
>
> dev_dbg(&host->pd->dev, "%s: %s: got channel %p\n", __func__,
>
>
> sh_mobile_sdhi DMA works if I fixuped above
Either that or undo the change to the type. I originally planned to change the
sh_mmcif_plat_data to use a void* type already, but then didn't do that because
it conflicts with your other patch, and I failed to revert my earlier change
correctly.
Arnd
WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de>
To: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Cc: Ulf Hansson <ulf.hansson@linaro.org>, Chris Ball <cjb@laptop.org>,
Simon <horms@verge.net.au>, Linux-SH <linux-sh@vger.kernel.org>,
linux-mmc <linux-mmc@vger.kernel.org>
Subject: Re: [PATCH 2/9] mmc: tmio: tmio_mmc_host has .dma
Date: Wed, 07 Jan 2015 09:23:49 +0000 [thread overview]
Message-ID: <2017134.He5GnynN45@wuerfel> (raw)
In-Reply-To: <87fvbnpblr.wl%kuninori.morimoto.gx@renesas.com>
On Wednesday 07 January 2015 02:28:43 Kuninori Morimoto wrote:
>
> Hi Arnd
>
> Thank you for your DMAEngine fixup patch.
> I tried this patch, and have comment.
Thanks for looking at the changes
> >
> > - sdev = to_shdma_dev(schan->dma_chan.device);
> > - ret = sdev->ops->set_slave(schan, match, 0, true);
> > + ret = sdev->ops->set_slave(schan, schan->real_slave_id, 0, true);
> > + schan->real_slave_id = slave_id;
> > if (ret < 0)
> > return false;
>
> Here, your patch is
>
> ret = sdev->ops->set_slave(schan, schan->real_slave_id, 0, true);
> schan->real_slave_id = slave_id;
> if (ret < 0)
>
> But, it doesn't work. Maybe, you want this
>
> schan->real_slave_id = slave_id;
> ret = sdev->ops->set_slave(schan, schan->real_slave_id, 0, true);
> if (ret < 0)
Right, I broke it in a last-minute change. Originally I had
schan->real_slave_id = slave_id;
ret = sdev->ops->set_slave(schan, schan->real_slave_id, 0, true);
if (ret < 0) {
schan->real_slave_id = 0;
return ret;
}
and then meant to shorten it to
ret = sdev->ops->set_slave(schan, slave_id, 0, true);
if (ret < 0)
return ret;
schan->real_slave_id = slave_id;
Either of those should be fine, but what I wrote was instead was
completely wrong.
> > diff --git a/drivers/mmc/host/sh_mmcif.c b/drivers/mmc/host/sh_mmcif.c
> > index 7d9d6a321521..df3a537f5a83 100644
> > --- a/drivers/mmc/host/sh_mmcif.c
> > +++ b/drivers/mmc/host/sh_mmcif.c
> > @@ -388,7 +388,7 @@ sh_mmcif_request_dma_one(struct sh_mmcif_host *host,
> > {
> > struct dma_slave_config cfg = { 0, };
> > struct dma_chan *chan;
> > - unsigned int slave_id;
> > + void *slave_data;
> > struct resource *res;
> > dma_cap_mask_t mask;
> > int ret;
> > @@ -414,8 +414,6 @@ sh_mmcif_request_dma_one(struct sh_mmcif_host *host,
> >
> > res = platform_get_resource(host->pd, IORESOURCE_MEM, 0);
> >
> > - /* In the OF case the driver will get the slave ID from the DT */
> > - cfg.slave_id = slave_id;
> > cfg.direction = direction;
> >
> > if (direction = DMA_DEV_TO_MEM) {
>
> I got error here
>
>
> /opt/home/morimoto/linux/drivers/mmc/host/sh_mmcif.c: In function ‘sh_mmcif_request_dma_one’:
> /opt/home/morimoto/linux/drivers/mmc/host/sh_mmcif.c:400:3: error: ‘slave_id’ undeclared (first use in this function)
> slave_id = direction = DMA_MEM_TO_DEV
> ^
> /opt/home/morimoto/linux/drivers/mmc/host/sh_mmcif.c:400:3: note: each undeclared identifier is reported only once for each function it appears in
> /opt/home/morimoto/linux/drivers/mmc/host/sh_mmcif.c:391:8: warning: unused variable ‘slave_data’ [-Wunused-variable]
> void *slave_data;
> ^
>
> Maybe you are missing this
>
> if (pdata)
> - slave_id = direction = DMA_MEM_TO_DEV
> - ? pdata->slave_id_tx : pdata->slave_id_rx;
> + slave_data = direction = DMA_MEM_TO_DEV
> + ? (void *)pdata->slave_id_tx : (void *)pdata->slave_id_rx;
> else
> - slave_id = 0;
> + slave_data = 0;
>
> chan = dma_request_slave_channel_compat(mask, shdma_chan_filter,
> - (void *)(unsigned long)slave_id, &host->pd->dev,
> + slave_data, &host->pd->dev,
> direction = DMA_MEM_TO_DEV ? "tx" : "rx");
>
> dev_dbg(&host->pd->dev, "%s: %s: got channel %p\n", __func__,
>
>
> sh_mobile_sdhi DMA works if I fixuped above
Either that or undo the change to the type. I originally planned to change the
sh_mmcif_plat_data to use a void* type already, but then didn't do that because
it conflicts with your other patch, and I failed to revert my earlier change
correctly.
Arnd
next prev parent reply other threads:[~2015-01-07 9:23 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-05 7:01 [PATCH 0/9]: mmc: tmio header cleanup Kuninori Morimoto
2015-01-05 7:01 ` Kuninori Morimoto
2015-01-05 7:02 ` [PATCH 1/9] mmc: tmio: add tmio_mmc_host_alloc/free() Kuninori Morimoto
2015-01-05 7:02 ` Kuninori Morimoto
2015-01-05 8:35 ` Geert Uytterhoeven
2015-01-05 8:35 ` Geert Uytterhoeven
2015-01-05 8:39 ` Kuninori Morimoto
2015-01-05 8:39 ` Kuninori Morimoto
2015-01-05 7:02 ` [PATCH 2/9] mmc: tmio: tmio_mmc_host has .dma Kuninori Morimoto
2015-01-05 7:02 ` Kuninori Morimoto
2015-01-05 8:43 ` Arnd Bergmann
2015-01-05 8:43 ` Arnd Bergmann
2015-01-05 9:35 ` Kuninori Morimoto
2015-01-05 9:35 ` Kuninori Morimoto
2015-01-05 21:33 ` Arnd Bergmann
2015-01-05 21:33 ` Arnd Bergmann
2015-01-06 0:20 ` Kuninori Morimoto
2015-01-06 0:20 ` Kuninori Morimoto
2015-01-06 13:24 ` Arnd Bergmann
2015-01-06 13:24 ` Arnd Bergmann
2015-01-07 1:45 ` Kuninori Morimoto
2015-01-07 1:45 ` Kuninori Morimoto
2015-01-06 2:38 ` Kuninori Morimoto
2015-01-06 2:38 ` Kuninori Morimoto
2015-01-06 13:19 ` Arnd Bergmann
2015-01-06 13:19 ` Arnd Bergmann
2015-01-07 2:56 ` Kuninori Morimoto
2015-01-07 2:56 ` Kuninori Morimoto
2015-01-07 2:28 ` Kuninori Morimoto
2015-01-07 2:28 ` Kuninori Morimoto
2015-01-07 9:23 ` Arnd Bergmann [this message]
2015-01-07 9:23 ` Arnd Bergmann
2015-01-07 3:01 ` Kuninori Morimoto
2015-01-07 3:01 ` Kuninori Morimoto
2015-01-07 9:15 ` Arnd Bergmann
2015-01-07 9:15 ` Arnd Bergmann
2015-01-08 1:57 ` Kuninori Morimoto
2015-01-08 1:57 ` Kuninori Morimoto
2015-01-08 7:30 ` Kuninori Morimoto
2015-01-08 7:30 ` Kuninori Morimoto
2015-01-08 13:09 ` Arnd Bergmann
2015-01-08 13:09 ` Arnd Bergmann
2015-01-09 9:44 ` Kuninori Morimoto
2015-01-09 9:44 ` Kuninori Morimoto
2015-01-12 9:05 ` Ulf Hansson
2015-01-12 9:05 ` Ulf Hansson
2015-01-05 7:02 ` [PATCH 3/9] mmc: tmio: tmio_mmc_host has .write16_hook Kuninori Morimoto
2015-01-05 7:02 ` Kuninori Morimoto
2015-01-05 7:03 ` [PATCH 4/9] mmc: tmio: tmio_mmc_host has .clk_enable Kuninori Morimoto
2015-01-05 7:03 ` Kuninori Morimoto
2015-01-05 7:03 ` [PATCH 5/9] mmc: tmio: tmio_mmc_host has .clk_disable Kuninori Morimoto
2015-01-05 7:03 ` Kuninori Morimoto
2015-01-05 7:03 ` [PATCH 6/9] mmc: tmio: tmio_mmc_host has .multi_io_quirk Kuninori Morimoto
2015-01-05 7:03 ` Kuninori Morimoto
2015-01-05 7:03 ` [PATCH 7/9] mmc: tmio: tmio_mmc_host has .bus_shift Kuninori Morimoto
2015-01-05 7:03 ` Kuninori Morimoto
2015-01-05 7:03 ` [PATCH 8/9] mmc: sh_mobile_sdhi: remove .init/.cleanup Kuninori Morimoto
2015-01-05 7:03 ` Kuninori Morimoto
2015-01-05 9:02 ` Geert Uytterhoeven
2015-01-05 9:02 ` Geert Uytterhoeven
2015-01-05 9:15 ` Kuninori Morimoto
2015-01-05 9:15 ` Kuninori Morimoto
2015-01-05 7:04 ` [PATCH 9/9] mmc: sh_mobile_sdhi: remove sh_mobile_sdhi_info Kuninori Morimoto
2015-01-05 7:04 ` Kuninori Morimoto
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=2017134.He5GnynN45@wuerfel \
--to=arnd@arndb.de \
--cc=cjb@laptop.org \
--cc=horms@verge.net.au \
--cc=kuninori.morimoto.gx@renesas.com \
--cc=linux-mmc@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=ulf.hansson@linaro.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 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.