lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 25 Jan 2017 11:28:07 +0100 From: Marek Szyprowski <m.szyprowski@...sung.com> To: linux-samsung-soc@...r.kernel.org, dmaengine@...r.kernel.org, alsa-devel@...a-project.org, linux-arm-kernel@...ts.infradead.org, linux-pm@...r.kernel.org, linux-kernel@...r.kernel.org Cc: Marek Szyprowski <m.szyprowski@...sung.com>, Krzysztof Kozlowski <krzk@...nel.org>, Bartlomiej Zolnierkiewicz <b.zolnierkie@...sung.com>, Vinod Koul <vinod.koul@...el.com>, Ulf Hansson <ulf.hansson@...aro.org>, "Rafael J. Wysocki" <rjw@...ysocki.net>, Kuninori Morimoto <kuninori.morimoto.gx@...esas.com>, Mark Brown <broonie@...nel.org>, Inki Dae <inki.dae@...sung.com> Subject: [PATCH v7 3/4] dmaengine: pl330: Store pointer to slave device Store the pointer to slave device, which requested our channel. It will be later used to implement runtime PM of PL330 DMA controller. Although DMA channels might be requested many times, each DMA peripheral channel is physically dedicated only for specific hardware, so there should be only one slave device for each channel. Signed-off-by: Marek Szyprowski <m.szyprowski@...sung.com> Reviewed-by: Krzysztof Kozlowski <krzk@...nel.org> Reviewed-by: Ulf Hansson <ulf.hansson@...aro.org> Acked-by: Arnd Bergmann <arnd@...db.de> --- drivers/dma/pl330.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c index b6b2cc912380..c77a3494659c 100644 --- a/drivers/dma/pl330.c +++ b/drivers/dma/pl330.c @@ -450,6 +450,7 @@ struct dma_pl330_chan { /* for runtime pm tracking */ bool active; + struct device *slave; }; struct pl330_dmac { @@ -2093,6 +2094,14 @@ static struct dma_chan *of_dma_pl330_xlate(struct of_phandle_args *dma_spec, if (chan_id >= pl330->num_peripherals) return NULL; + if (!pl330->peripherals[chan_id].slave) { + pl330->peripherals[chan_id].slave = slave; + } else if (pl330->peripherals[chan_id].slave != slave) { + dev_err(pl330->ddma.dev, + "Can't use same channel with multiple slave devices!\n"); + return NULL; + } + return dma_get_slave_channel(&pl330->peripherals[chan_id].chan); } -- 1.9.1
Powered by blists - more mailing lists