From: codekipper-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
To: maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org,
wens-jdAy2FN1RRM@public.gmane.org,
linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
lgirdwood-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw@public.gmane.org,
be17068-p0aYb1w59bq9tCD/VL7h6Q@public.gmane.org,
Marcus Cooper
<codekipper-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Subject: [PATCH v2 1/6] ASoC: sun4i-i2s: Add slot width override
Date: Mon, 12 Mar 2018 16:57:48 +0100 [thread overview]
Message-ID: <20180312155753.9478-2-codekipper@gmail.com> (raw)
In-Reply-To: <20180312155753.9478-1-codekipper-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
From: Marcus Cooper <codekipper-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Some codecs require a different amount of a bit clocks per frame
than what is calculated by using the sample width. Use a slot
width override property to provide this mechanism.
Signed-off-by: Marcus Cooper <codekipper-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
Documentation/devicetree/bindings/sound/sun4i-i2s.txt | 5 +++++
sound/soc/sunxi/sun4i-i2s.c | 15 ++++++++++++---
2 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/sound/sun4i-i2s.txt b/Documentation/devicetree/bindings/sound/sun4i-i2s.txt
index b9d50d6cdef3..48addef65b8f 100644
--- a/Documentation/devicetree/bindings/sound/sun4i-i2s.txt
+++ b/Documentation/devicetree/bindings/sound/sun4i-i2s.txt
@@ -28,6 +28,11 @@ Required properties for the following compatibles:
- "allwinner,sun8i-h3-i2s"
- resets: phandle to the reset line for this codec
+Optional properties:
+- allwinner,slot-width-override:if this property is present then the dai is
+ configured to extend the slot width to the
+ value specified. Min 8, Max 32.
+
Example:
i2s0: i2s@1c22400 {
diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c
index a4aa931ebfae..873054a6c3be 100644
--- a/sound/soc/sunxi/sun4i-i2s.c
+++ b/sound/soc/sunxi/sun4i-i2s.c
@@ -193,6 +193,8 @@ struct sun4i_i2s {
struct regmap_field *field_rxchansel;
const struct sun4i_i2s_quirks *variant;
+
+ unsigned int slot_width;
};
struct sun4i_i2s_clk_div {
@@ -344,7 +346,7 @@ static int sun4i_i2s_set_clk_rate(struct snd_soc_dai *dai,
if (i2s->variant->has_fmt_set_lrck_period)
regmap_update_bits(i2s->regmap, SUN4I_I2S_FMT0_REG,
SUN8I_I2S_FMT0_LRCK_PERIOD_MASK,
- SUN8I_I2S_FMT0_LRCK_PERIOD(32));
+ SUN8I_I2S_FMT0_LRCK_PERIOD(word_size));
return 0;
}
@@ -418,7 +420,8 @@ static int sun4i_i2s_hw_params(struct snd_pcm_substream *substream,
sr + i2s->variant->fmt_offset);
return sun4i_i2s_set_clk_rate(dai, params_rate(params),
- params_width(params));
+ i2s->slot_width ?
+ i2s->slot_width : params_width(params));
}
static int sun4i_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
@@ -1029,7 +1032,7 @@ static int sun4i_i2s_probe(struct platform_device *pdev)
struct sun4i_i2s *i2s;
struct resource *res;
void __iomem *regs;
- int irq, ret;
+ int irq, ret, val;
i2s = devm_kzalloc(&pdev->dev, sizeof(*i2s), GFP_KERNEL);
if (!i2s)
@@ -1096,6 +1099,12 @@ static int sun4i_i2s_probe(struct platform_device *pdev)
i2s->capture_dma_data.addr = res->start + SUN4I_I2S_FIFO_RX_REG;
i2s->capture_dma_data.maxburst = 8;
+ if (!of_property_read_u32(pdev->dev.of_node,
+ "allwinner,slot-width-override", &val)) {
+ if (val >= 8 && val <= 32)
+ i2s->slot_width = val;
+ }
+
pm_runtime_enable(&pdev->dev);
if (!pm_runtime_enabled(&pdev->dev)) {
ret = sun4i_i2s_runtime_resume(&pdev->dev);
--
2.16.2
WARNING: multiple messages have this Message-ID (diff)
From: codekipper@gmail.com (codekipper at gmail.com)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 1/6] ASoC: sun4i-i2s: Add slot width override
Date: Mon, 12 Mar 2018 16:57:48 +0100 [thread overview]
Message-ID: <20180312155753.9478-2-codekipper@gmail.com> (raw)
In-Reply-To: <20180312155753.9478-1-codekipper@gmail.com>
From: Marcus Cooper <codekipper@gmail.com>
Some codecs require a different amount of a bit clocks per frame
than what is calculated by using the sample width. Use a slot
width override property to provide this mechanism.
Signed-off-by: Marcus Cooper <codekipper@gmail.com>
---
Documentation/devicetree/bindings/sound/sun4i-i2s.txt | 5 +++++
sound/soc/sunxi/sun4i-i2s.c | 15 ++++++++++++---
2 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/sound/sun4i-i2s.txt b/Documentation/devicetree/bindings/sound/sun4i-i2s.txt
index b9d50d6cdef3..48addef65b8f 100644
--- a/Documentation/devicetree/bindings/sound/sun4i-i2s.txt
+++ b/Documentation/devicetree/bindings/sound/sun4i-i2s.txt
@@ -28,6 +28,11 @@ Required properties for the following compatibles:
- "allwinner,sun8i-h3-i2s"
- resets: phandle to the reset line for this codec
+Optional properties:
+- allwinner,slot-width-override:if this property is present then the dai is
+ configured to extend the slot width to the
+ value specified. Min 8, Max 32.
+
Example:
i2s0: i2s at 1c22400 {
diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c
index a4aa931ebfae..873054a6c3be 100644
--- a/sound/soc/sunxi/sun4i-i2s.c
+++ b/sound/soc/sunxi/sun4i-i2s.c
@@ -193,6 +193,8 @@ struct sun4i_i2s {
struct regmap_field *field_rxchansel;
const struct sun4i_i2s_quirks *variant;
+
+ unsigned int slot_width;
};
struct sun4i_i2s_clk_div {
@@ -344,7 +346,7 @@ static int sun4i_i2s_set_clk_rate(struct snd_soc_dai *dai,
if (i2s->variant->has_fmt_set_lrck_period)
regmap_update_bits(i2s->regmap, SUN4I_I2S_FMT0_REG,
SUN8I_I2S_FMT0_LRCK_PERIOD_MASK,
- SUN8I_I2S_FMT0_LRCK_PERIOD(32));
+ SUN8I_I2S_FMT0_LRCK_PERIOD(word_size));
return 0;
}
@@ -418,7 +420,8 @@ static int sun4i_i2s_hw_params(struct snd_pcm_substream *substream,
sr + i2s->variant->fmt_offset);
return sun4i_i2s_set_clk_rate(dai, params_rate(params),
- params_width(params));
+ i2s->slot_width ?
+ i2s->slot_width : params_width(params));
}
static int sun4i_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
@@ -1029,7 +1032,7 @@ static int sun4i_i2s_probe(struct platform_device *pdev)
struct sun4i_i2s *i2s;
struct resource *res;
void __iomem *regs;
- int irq, ret;
+ int irq, ret, val;
i2s = devm_kzalloc(&pdev->dev, sizeof(*i2s), GFP_KERNEL);
if (!i2s)
@@ -1096,6 +1099,12 @@ static int sun4i_i2s_probe(struct platform_device *pdev)
i2s->capture_dma_data.addr = res->start + SUN4I_I2S_FIFO_RX_REG;
i2s->capture_dma_data.maxburst = 8;
+ if (!of_property_read_u32(pdev->dev.of_node,
+ "allwinner,slot-width-override", &val)) {
+ if (val >= 8 && val <= 32)
+ i2s->slot_width = val;
+ }
+
pm_runtime_enable(&pdev->dev);
if (!pm_runtime_enabled(&pdev->dev)) {
ret = sun4i_i2s_runtime_resume(&pdev->dev);
--
2.16.2
WARNING: multiple messages have this Message-ID (diff)
From: codekipper@gmail.com
To: maxime.ripard@free-electrons.com, wens@csie.org,
linux-sunxi@googlegroups.com
Cc: linux-arm-kernel@lists.infradead.org, lgirdwood@gmail.com,
broonie@kernel.org, linux-kernel@vger.kernel.org,
alsa-devel@alsa-project.org, be17068@iperbole.bo.it,
Marcus Cooper <codekipper@gmail.com>
Subject: [PATCH v2 1/6] ASoC: sun4i-i2s: Add slot width override
Date: Mon, 12 Mar 2018 16:57:48 +0100 [thread overview]
Message-ID: <20180312155753.9478-2-codekipper@gmail.com> (raw)
In-Reply-To: <20180312155753.9478-1-codekipper@gmail.com>
From: Marcus Cooper <codekipper@gmail.com>
Some codecs require a different amount of a bit clocks per frame
than what is calculated by using the sample width. Use a slot
width override property to provide this mechanism.
Signed-off-by: Marcus Cooper <codekipper@gmail.com>
---
Documentation/devicetree/bindings/sound/sun4i-i2s.txt | 5 +++++
sound/soc/sunxi/sun4i-i2s.c | 15 ++++++++++++---
2 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/sound/sun4i-i2s.txt b/Documentation/devicetree/bindings/sound/sun4i-i2s.txt
index b9d50d6cdef3..48addef65b8f 100644
--- a/Documentation/devicetree/bindings/sound/sun4i-i2s.txt
+++ b/Documentation/devicetree/bindings/sound/sun4i-i2s.txt
@@ -28,6 +28,11 @@ Required properties for the following compatibles:
- "allwinner,sun8i-h3-i2s"
- resets: phandle to the reset line for this codec
+Optional properties:
+- allwinner,slot-width-override:if this property is present then the dai is
+ configured to extend the slot width to the
+ value specified. Min 8, Max 32.
+
Example:
i2s0: i2s@1c22400 {
diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c
index a4aa931ebfae..873054a6c3be 100644
--- a/sound/soc/sunxi/sun4i-i2s.c
+++ b/sound/soc/sunxi/sun4i-i2s.c
@@ -193,6 +193,8 @@ struct sun4i_i2s {
struct regmap_field *field_rxchansel;
const struct sun4i_i2s_quirks *variant;
+
+ unsigned int slot_width;
};
struct sun4i_i2s_clk_div {
@@ -344,7 +346,7 @@ static int sun4i_i2s_set_clk_rate(struct snd_soc_dai *dai,
if (i2s->variant->has_fmt_set_lrck_period)
regmap_update_bits(i2s->regmap, SUN4I_I2S_FMT0_REG,
SUN8I_I2S_FMT0_LRCK_PERIOD_MASK,
- SUN8I_I2S_FMT0_LRCK_PERIOD(32));
+ SUN8I_I2S_FMT0_LRCK_PERIOD(word_size));
return 0;
}
@@ -418,7 +420,8 @@ static int sun4i_i2s_hw_params(struct snd_pcm_substream *substream,
sr + i2s->variant->fmt_offset);
return sun4i_i2s_set_clk_rate(dai, params_rate(params),
- params_width(params));
+ i2s->slot_width ?
+ i2s->slot_width : params_width(params));
}
static int sun4i_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
@@ -1029,7 +1032,7 @@ static int sun4i_i2s_probe(struct platform_device *pdev)
struct sun4i_i2s *i2s;
struct resource *res;
void __iomem *regs;
- int irq, ret;
+ int irq, ret, val;
i2s = devm_kzalloc(&pdev->dev, sizeof(*i2s), GFP_KERNEL);
if (!i2s)
@@ -1096,6 +1099,12 @@ static int sun4i_i2s_probe(struct platform_device *pdev)
i2s->capture_dma_data.addr = res->start + SUN4I_I2S_FIFO_RX_REG;
i2s->capture_dma_data.maxburst = 8;
+ if (!of_property_read_u32(pdev->dev.of_node,
+ "allwinner,slot-width-override", &val)) {
+ if (val >= 8 && val <= 32)
+ i2s->slot_width = val;
+ }
+
pm_runtime_enable(&pdev->dev);
if (!pm_runtime_enabled(&pdev->dev)) {
ret = sun4i_i2s_runtime_resume(&pdev->dev);
--
2.16.2
next prev parent reply other threads:[~2018-03-12 15:57 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-12 15:57 [PATCH v2 0/6] ASoC: sun4i-i2s: Updates to the driver codekipper-Re5JQEeQqe8AvxtiuMwx3w
2018-03-12 15:57 ` codekipper
2018-03-12 15:57 ` codekipper at gmail.com
[not found] ` <20180312155753.9478-1-codekipper-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2018-03-12 15:57 ` codekipper-Re5JQEeQqe8AvxtiuMwx3w [this message]
2018-03-12 15:57 ` [PATCH v2 1/6] ASoC: sun4i-i2s: Add slot width override codekipper
2018-03-12 15:57 ` codekipper at gmail.com
2018-03-12 18:20 ` Mark Brown
2018-03-12 18:20 ` Mark Brown
[not found] ` <20180312155753.9478-2-codekipper-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2018-03-13 11:59 ` Julian Calaby
2018-03-13 11:59 ` [linux-sunxi] " Julian Calaby
2018-03-13 11:59 ` Julian Calaby
2018-03-12 15:57 ` [PATCH v2 2/6] ASoC: sun4i-i2s: Add regmap field to sign extend sample codekipper-Re5JQEeQqe8AvxtiuMwx3w
2018-03-12 15:57 ` codekipper
2018-03-12 15:57 ` codekipper at gmail.com
2018-03-12 15:57 ` [PATCH v2 3/6] ASoC: sun4i-i2s: Correct divider calculations codekipper-Re5JQEeQqe8AvxtiuMwx3w
2018-03-12 15:57 ` codekipper
2018-03-12 15:57 ` codekipper at gmail.com
2018-03-13 8:20 ` Maxime Ripard
2018-03-13 8:20 ` Maxime Ripard
2018-03-12 15:57 ` [PATCH v2 4/6] ASoC: sun4i-i2s: Add multi-lane functionality codekipper-Re5JQEeQqe8AvxtiuMwx3w
2018-03-12 15:57 ` codekipper
2018-03-12 15:57 ` codekipper at gmail.com
2018-03-13 8:00 ` Maxime Ripard
2018-03-13 8:00 ` Maxime Ripard
2018-03-13 8:15 ` Code Kipper
2018-03-13 8:15 ` Code Kipper
2018-03-13 8:15 ` Code Kipper
2018-03-13 8:23 ` Maxime Ripard
2018-03-13 8:23 ` Maxime Ripard
2018-03-13 8:59 ` Code Kipper
2018-03-13 8:59 ` Code Kipper
2018-03-13 8:59 ` Code Kipper
2018-03-12 15:57 ` [PATCH v2 5/6] ASoc: sun4i-i2s: Add 20, 24 and 32 bit support codekipper-Re5JQEeQqe8AvxtiuMwx3w
2018-03-12 15:57 ` codekipper
2018-03-12 15:57 ` codekipper at gmail.com
2018-03-12 15:57 ` [PATCH v2 6/6] ASoC: sun4i-i2s: Add support for loopback codekipper-Re5JQEeQqe8AvxtiuMwx3w
2018-03-12 15:57 ` codekipper
2018-03-12 15:57 ` codekipper at gmail.com
2018-03-12 18:35 ` Mark Brown
2018-03-13 13:39 ` [linux-sunxi] " Chris Obbard
2018-03-13 13:39 ` Chris Obbard
2018-03-13 13:39 ` Chris Obbard
2018-03-13 14:03 ` Maxime Ripard
2018-03-13 14:03 ` Maxime Ripard
2018-03-13 16:26 ` Mark Brown
2018-03-13 16:26 ` [alsa-devel] " Mark Brown
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=20180312155753.9478-2-codekipper@gmail.com \
--to=codekipper-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw@public.gmane.org \
--cc=be17068-p0aYb1w59bq9tCD/VL7h6Q@public.gmane.org \
--cc=broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=lgirdwood-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
--cc=maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org \
--cc=wens-jdAy2FN1RRM@public.gmane.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.