From: Tomasz Figa <tomasz.figa@gmail.com>
To: linux-samsung-soc@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-spi@vger.kernel.org,
alsa-devel@alsa-project.org, "Kukjin Kim" <kgene.kim@samsung.com>,
"Vinod Koul" <vinod.koul@intel.com>, "Dan Williams" <djbw@fb.com>,
"Linus Walleij" <linus.walleij@linaro.org>,
"Alessandro Rubini" <rubini@gnudd.com>,
"Giancarlo Asnaghi" <giancarlo.asnaghi@st.com>,
"Mark Brown" <broonie@kernel.org>,
"Grant Likely" <grant.likely@linaro.org>,
"Sangbeom Kim" <sbkim73@samsung.com>,
"Liam Girdwood" <lgirdwood@gmail.com>,
"Jaroslav Kysela" <perex@perex.cz>,
"Takashi Iwai" <tiwai@suse.de>,
"Padmavathi Venna" <padma.v@samsung.com>,
"Thomas Abraham" <thomas.abraham@linaro.org>,
"Arnd Bergmann" <arnd@arndb.de>,
"Olof Johansson" <olof@lixom.net>,
"Heiko Stübner" <heiko@sntech.de>,
"Sylwester Nawrocki" <sylvester.nawrocki@gmail.com>,
"Russell King - ARM Linux" <linux@arm.linux.org.uk>
Subject: [RFC PATCH v2 05/12] dmaengine: PL08x: Add support for different maximum transfer size
Date: Sat, 22 Jun 2013 22:42:37 +0200 [thread overview]
Message-ID: <1371933764-24875-6-git-send-email-tomasz.figa@gmail.com> (raw)
In-Reply-To: <1371933764-24875-1-git-send-email-tomasz.figa@gmail.com>
PL080S has separate register to store transfer size in, allowing single
transfer to be much larger than in standard PL080.
This patch makes the amba-pl08x driver aware of this and removes writing
transfer size to reserved bits of CH_CONTROL register on PL080S, which
was not a problem witn transfer sizes fitting the original bitfield
of PL080, but now would overwrite other fields.
Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
---
drivers/dma/amba-pl08x.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/dma/amba-pl08x.c b/drivers/dma/amba-pl08x.c
index 103bc1a..89b8120 100644
--- a/drivers/dma/amba-pl08x.c
+++ b/drivers/dma/amba-pl08x.c
@@ -122,6 +122,7 @@ struct vendor_data {
bool dualmaster;
bool nomadik;
bool pl080s;
+ u32 max_transfer_size;
};
u32 cctl1;
@@ -772,6 +773,7 @@ static inline u32 pl08x_cctl_bits(u32 cctl, u8 srcwidth, u8 dstwidth,
break;
}
+ tsize &= PL080_CONTROL_TRANSFER_SIZE_MASK;
retbits |= tsize << PL080_CONTROL_TRANSFER_SIZE_SHIFT;
return retbits;
}
@@ -1001,7 +1003,7 @@ static int pl08x_fill_llis_for_desc(struct pl08x_driver_data *pl08x,
* MIN(buswidths)
*/
max_bytes_per_lli = bd.srcbus.buswidth *
- PL080_CONTROL_TRANSFER_SIZE_MASK;
+ pl08x->vd->max_transfer_size;
dev_vdbg(&pl08x->adev->dev,
"%s max bytes per lli = %zu\n",
__func__, max_bytes_per_lli);
@@ -2111,6 +2113,7 @@ static struct vendor_data vendor_pl080 = {
.config_offset = PL080_CH_CONFIG,
.channels = 8,
.dualmaster = true,
+ .max_transfer_size = PL080_CONTROL_TRANSFER_SIZE_MASK,
};
static struct vendor_data vendor_nomadik = {
@@ -2118,18 +2121,21 @@ static struct vendor_data vendor_nomadik = {
.channels = 8,
.dualmaster = true,
.nomadik = true,
+ .max_transfer_size = PL080_CONTROL_TRANSFER_SIZE_MASK,
};
static struct vendor_data vendor_pl080s = {
.config_offset = PL080S_CH_CONFIG,
.channels = 8,
.pl080s = true,
+ .max_transfer_size = PL080S_CONTROL_TRANSFER_SIZE_MASK,
};
static struct vendor_data vendor_pl081 = {
.config_offset = PL080_CH_CONFIG,
.channels = 2,
.dualmaster = false,
+ .max_transfer_size = PL080_CONTROL_TRANSFER_SIZE_MASK,
};
static struct amba_id pl08x_ids[] = {
--
1.8.2.1
WARNING: multiple messages have this Message-ID (diff)
From: tomasz.figa@gmail.com (Tomasz Figa)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH v2 05/12] dmaengine: PL08x: Add support for different maximum transfer size
Date: Sat, 22 Jun 2013 22:42:37 +0200 [thread overview]
Message-ID: <1371933764-24875-6-git-send-email-tomasz.figa@gmail.com> (raw)
In-Reply-To: <1371933764-24875-1-git-send-email-tomasz.figa@gmail.com>
PL080S has separate register to store transfer size in, allowing single
transfer to be much larger than in standard PL080.
This patch makes the amba-pl08x driver aware of this and removes writing
transfer size to reserved bits of CH_CONTROL register on PL080S, which
was not a problem witn transfer sizes fitting the original bitfield
of PL080, but now would overwrite other fields.
Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
---
drivers/dma/amba-pl08x.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/dma/amba-pl08x.c b/drivers/dma/amba-pl08x.c
index 103bc1a..89b8120 100644
--- a/drivers/dma/amba-pl08x.c
+++ b/drivers/dma/amba-pl08x.c
@@ -122,6 +122,7 @@ struct vendor_data {
bool dualmaster;
bool nomadik;
bool pl080s;
+ u32 max_transfer_size;
};
u32 cctl1;
@@ -772,6 +773,7 @@ static inline u32 pl08x_cctl_bits(u32 cctl, u8 srcwidth, u8 dstwidth,
break;
}
+ tsize &= PL080_CONTROL_TRANSFER_SIZE_MASK;
retbits |= tsize << PL080_CONTROL_TRANSFER_SIZE_SHIFT;
return retbits;
}
@@ -1001,7 +1003,7 @@ static int pl08x_fill_llis_for_desc(struct pl08x_driver_data *pl08x,
* MIN(buswidths)
*/
max_bytes_per_lli = bd.srcbus.buswidth *
- PL080_CONTROL_TRANSFER_SIZE_MASK;
+ pl08x->vd->max_transfer_size;
dev_vdbg(&pl08x->adev->dev,
"%s max bytes per lli = %zu\n",
__func__, max_bytes_per_lli);
@@ -2111,6 +2113,7 @@ static struct vendor_data vendor_pl080 = {
.config_offset = PL080_CH_CONFIG,
.channels = 8,
.dualmaster = true,
+ .max_transfer_size = PL080_CONTROL_TRANSFER_SIZE_MASK,
};
static struct vendor_data vendor_nomadik = {
@@ -2118,18 +2121,21 @@ static struct vendor_data vendor_nomadik = {
.channels = 8,
.dualmaster = true,
.nomadik = true,
+ .max_transfer_size = PL080_CONTROL_TRANSFER_SIZE_MASK,
};
static struct vendor_data vendor_pl080s = {
.config_offset = PL080S_CH_CONFIG,
.channels = 8,
.pl080s = true,
+ .max_transfer_size = PL080S_CONTROL_TRANSFER_SIZE_MASK,
};
static struct vendor_data vendor_pl081 = {
.config_offset = PL080_CH_CONFIG,
.channels = 2,
.dualmaster = false,
+ .max_transfer_size = PL080_CONTROL_TRANSFER_SIZE_MASK,
};
static struct amba_id pl08x_ids[] = {
--
1.8.2.1
WARNING: multiple messages have this Message-ID (diff)
From: Tomasz Figa <tomasz.figa@gmail.com>
To: linux-samsung-soc@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-spi@vger.kernel.org,
alsa-devel@alsa-project.org, "Kukjin Kim" <kgene.kim@samsung.com>,
"Vinod Koul" <vinod.koul@intel.com>, "Dan Williams" <djbw@fb.com>,
"Linus Walleij" <linus.walleij@linaro.org>,
"Alessandro Rubini" <rubini@gnudd.com>,
"Giancarlo Asnaghi" <giancarlo.asnaghi@st.com>,
"Mark Brown" <broonie@kernel.org>,
"Grant Likely" <grant.likely@linaro.org>,
"Sangbeom Kim" <sbkim73@samsung.com>,
"Liam Girdwood" <lgirdwood@gmail.com>,
"Jaroslav Kysela" <perex@perex.cz>,
"Takashi Iwai" <tiwai@suse.de>,
"Padmavathi Venna" <padma.v@samsung.com>,
"Thomas Abraham" <thomas.abraham@linaro.org>,
"Arnd Bergmann" <arnd@arndb.de>,
"Olof Johansson" <olof@lixom.net>,
"Heiko Stübner" <heiko@sntech.de>,
"Sylwester Nawrocki" <sylvester.nawrocki@gmail.com>,
"Russell King - ARM Linux" <linux@arm.linux.org.uk>,
"Alban Bedel" <alban.bedel@avionic-design.de>,
"Tomasz Figa" <tomasz.figa@gmail.com>
Subject: [RFC PATCH v2 05/12] dmaengine: PL08x: Add support for different maximum transfer size
Date: Sat, 22 Jun 2013 22:42:37 +0200 [thread overview]
Message-ID: <1371933764-24875-6-git-send-email-tomasz.figa@gmail.com> (raw)
In-Reply-To: <1371933764-24875-1-git-send-email-tomasz.figa@gmail.com>
PL080S has separate register to store transfer size in, allowing single
transfer to be much larger than in standard PL080.
This patch makes the amba-pl08x driver aware of this and removes writing
transfer size to reserved bits of CH_CONTROL register on PL080S, which
was not a problem witn transfer sizes fitting the original bitfield
of PL080, but now would overwrite other fields.
Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
---
drivers/dma/amba-pl08x.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/dma/amba-pl08x.c b/drivers/dma/amba-pl08x.c
index 103bc1a..89b8120 100644
--- a/drivers/dma/amba-pl08x.c
+++ b/drivers/dma/amba-pl08x.c
@@ -122,6 +122,7 @@ struct vendor_data {
bool dualmaster;
bool nomadik;
bool pl080s;
+ u32 max_transfer_size;
};
u32 cctl1;
@@ -772,6 +773,7 @@ static inline u32 pl08x_cctl_bits(u32 cctl, u8 srcwidth, u8 dstwidth,
break;
}
+ tsize &= PL080_CONTROL_TRANSFER_SIZE_MASK;
retbits |= tsize << PL080_CONTROL_TRANSFER_SIZE_SHIFT;
return retbits;
}
@@ -1001,7 +1003,7 @@ static int pl08x_fill_llis_for_desc(struct pl08x_driver_data *pl08x,
* MIN(buswidths)
*/
max_bytes_per_lli = bd.srcbus.buswidth *
- PL080_CONTROL_TRANSFER_SIZE_MASK;
+ pl08x->vd->max_transfer_size;
dev_vdbg(&pl08x->adev->dev,
"%s max bytes per lli = %zu\n",
__func__, max_bytes_per_lli);
@@ -2111,6 +2113,7 @@ static struct vendor_data vendor_pl080 = {
.config_offset = PL080_CH_CONFIG,
.channels = 8,
.dualmaster = true,
+ .max_transfer_size = PL080_CONTROL_TRANSFER_SIZE_MASK,
};
static struct vendor_data vendor_nomadik = {
@@ -2118,18 +2121,21 @@ static struct vendor_data vendor_nomadik = {
.channels = 8,
.dualmaster = true,
.nomadik = true,
+ .max_transfer_size = PL080_CONTROL_TRANSFER_SIZE_MASK,
};
static struct vendor_data vendor_pl080s = {
.config_offset = PL080S_CH_CONFIG,
.channels = 8,
.pl080s = true,
+ .max_transfer_size = PL080S_CONTROL_TRANSFER_SIZE_MASK,
};
static struct vendor_data vendor_pl081 = {
.config_offset = PL080_CH_CONFIG,
.channels = 2,
.dualmaster = false,
+ .max_transfer_size = PL080_CONTROL_TRANSFER_SIZE_MASK,
};
static struct amba_id pl08x_ids[] = {
--
1.8.2.1
next prev parent reply other threads:[~2013-06-22 20:42 UTC|newest]
Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-22 20:42 [RFC PATCH v2 00/12] ARM: s3c64xx: Let amba-pl08x driver handle DMA Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-22 20:42 ` [RFC PATCH v2 01/12] dmaengine: PL08x: Refactor pl08x_getbytes_chan() to lower indentation Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-24 22:09 ` Linus Walleij
2013-06-24 22:09 ` Linus Walleij
2013-06-25 15:16 ` Vinod Koul
2013-06-25 15:16 ` Vinod Koul
2013-06-25 15:16 ` Vinod Koul
2013-06-25 18:30 ` Russell King - ARM Linux
2013-06-25 18:30 ` Russell King - ARM Linux
2013-06-25 18:30 ` Russell King - ARM Linux
2013-06-22 20:42 ` [RFC PATCH v2 02/12] dmaengine: PL08x: Add support for different offset of CONFIG register Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-24 22:11 ` Linus Walleij
2013-06-24 22:11 ` Linus Walleij
2013-06-25 15:34 ` Vinod Koul
2013-06-25 15:34 ` Vinod Koul
2013-06-25 15:34 ` Vinod Koul
2013-06-22 20:42 ` [RFC PATCH v2 03/12] dmaengine: PL08x: Rework LLI handling to be less fragile Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-24 22:23 ` Linus Walleij
2013-06-24 22:23 ` Linus Walleij
2013-06-26 22:04 ` Tomasz Figa
2013-06-26 22:04 ` Tomasz Figa
2013-06-27 9:31 ` Linus Walleij
2013-06-27 9:31 ` Linus Walleij
2013-06-22 20:42 ` [RFC PATCH v2 04/12] dmaengine: PL08x: Add support for PL080S variant Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-24 22:26 ` Linus Walleij
2013-06-24 22:26 ` Linus Walleij
2013-06-22 20:42 ` Tomasz Figa [this message]
2013-06-22 20:42 ` [RFC PATCH v2 05/12] dmaengine: PL08x: Add support for different maximum transfer size Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-24 22:27 ` Linus Walleij
2013-06-24 22:27 ` Linus Walleij
2013-06-25 16:10 ` Vinod Koul
2013-06-25 16:10 ` Vinod Koul
2013-06-25 16:10 ` Vinod Koul
2013-06-22 20:42 ` [RFC PATCH v2 06/12] dmaengine: PL08x: Fix reading the byte count in cctl Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-24 22:28 ` Linus Walleij
2013-06-24 22:28 ` Linus Walleij
2013-06-22 20:42 ` [RFC PATCH v2 07/12] dmaengine: PL08x: Add cyclic transfer support Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-24 22:33 ` Linus Walleij
2013-06-24 22:33 ` Linus Walleij
2013-06-22 20:42 ` [RFC PATCH v2 08/12] ASoC: Samsung: Do not queue cyclic buffers multiple times Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-24 22:35 ` Linus Walleij
2013-06-24 22:35 ` Linus Walleij
2013-06-22 20:42 ` [RFC PATCH v2 09/12] clk: samsung: s3c64xx: Add aliases for DMA clocks Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-24 22:38 ` Linus Walleij
2013-06-24 22:38 ` Linus Walleij
2013-06-25 5:30 ` Tomasz Figa
2013-06-25 5:30 ` Tomasz Figa
2013-06-22 20:42 ` [RFC PATCH v2 10/12] spi: s3c64xx: Do not require legacy DMA API in case of S3C64XX Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-22 20:42 ` [RFC PATCH v2 11/12] ASoC: Samsung: " Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-22 20:42 ` [RFC PATCH v2 12/12] ARM: s3c64xx: Add support for DMA using generic amba-pl08x driver Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-22 20:42 ` Tomasz Figa
2013-06-25 10:28 ` [RFC PATCH v2 00/12] ARM: s3c64xx: Let amba-pl08x driver handle DMA Mark Brown
2013-06-25 10:28 ` Mark Brown
2013-06-25 10:28 ` Mark Brown
2013-06-25 11:22 ` Tomasz Figa
2013-06-25 11:22 ` Tomasz Figa
2013-06-25 11:22 ` Tomasz Figa
2013-06-25 15:38 ` Mark Brown
2013-06-25 15:38 ` Mark Brown
2013-06-25 15:38 ` Mark Brown
2013-06-25 15:44 ` Tomasz Figa
2013-06-25 15:44 ` Tomasz Figa
2013-06-25 15:44 ` Tomasz Figa
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=1371933764-24875-6-git-send-email-tomasz.figa@gmail.com \
--to=tomasz.figa@gmail.com \
--cc=alsa-devel@alsa-project.org \
--cc=arnd@arndb.de \
--cc=broonie@kernel.org \
--cc=djbw@fb.com \
--cc=giancarlo.asnaghi@st.com \
--cc=grant.likely@linaro.org \
--cc=heiko@sntech.de \
--cc=kgene.kim@samsung.com \
--cc=lgirdwood@gmail.com \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=linux-spi@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=olof@lixom.net \
--cc=padma.v@samsung.com \
--cc=perex@perex.cz \
--cc=rubini@gnudd.com \
--cc=sbkim73@samsung.com \
--cc=sylvester.nawrocki@gmail.com \
--cc=thomas.abraham@linaro.org \
--cc=tiwai@suse.de \
--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.