More simple-card dai node clock parameters
Subsystems (4)
cover More simple-card dai node clock parameters
These changes target to sii9022 HDMI audio support, but are independent fixes and additions.
To cover more cases with simple-card it should be possible to select all parameters for set_sysclk() callback. The default behavior is not changed by these patches.
Jyri Sarha (3):
ASoC: simple-card: Make u32 DT parameter handling 64-bit proof
ASoC: simple-card: Add system-clock-direction DT parameter to dai
nodes
ASoC: simple-card: Add system-clock-id DT parameter to dai nodes
.../devicetree/bindings/sound/simple-card.txt | 3 ++ include/sound/simple_card.h | 2 ++ sound/soc/generic/simple-card.c | 31 +++++++++++++++----- 3 files changed, 29 insertions(+), 7 deletions(-)
Signature · 1 line
1.7.9.5
PATCH 1/3 ASoC: simple-card: Make u32 DT parameter handling 64-bit proof
Passing unsigned int pointers as u32 ponters may be dangerous on 64-bit system.
--- sound/soc/generic/simple-card.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-)
sound/soc/generic/simple-card.c +7 -6
@@ -116,6 +116,7 @@ asoc_simple_card_sub_parse_of(struct device_node *np, {struct device_node *node;struct clk *clk; +u32 val;int ret;/*
@@ -151,10 +152,8 @@ asoc_simple_card_sub_parse_of(struct device_node *np, } dai->sysclk =clk_get_rate (clk); - }else if (of_property_read_bool (np,"system-clock-frequency" )) { -of_property_read_u32 (np, -"system-clock-frequency" , - &dai->sysclk); + }else if (!of_property_read_u32 (np,"system-clock-frequency" , &val)) { + dai->sysclk = val; }else { clk =of_clk_get (node,0 );if (!IS_ERR (clk))
@@ -303,6 +302,7 @@ static int asoc_simple_card_parse_of(struct device_node *node, {struct snd_soc_dai_link *dai_link = priv->snd_card.dai_link;struct simple_dai_props *dai_props = priv->dai_props; +u32 val;int ret;/* parsing the card name from DT */
@@ -325,8 +325,9 @@ static int asoc_simple_card_parse_of(struct device_node *node, }/* Factor to mclk, used in hw_params() */ -of_property_read_u32 (node,"simple-audio-card,mclk-fs" , - &priv->mclk_fs); + ret =of_property_read_u32 (node,"simple-audio-card,mclk-fs" , &val); +if (ret ==0 ) + priv->mclk_fs = val;dev_dbg (dev,"New simple-card: %s\n" , priv->snd_card.name ? priv->snd_card.name :"" );
Signature · 1 line
1.7.9.5
PATCH 2/3 ASoC: simple-card: Add system-clock-direction DT parameter to dai nodes
In reply to Jyri SarhaSelect dir parameters for set_sysclk calls in the card init phase.
--- .../devicetree/bindings/sound/simple-card.txt | 1 + include/sound/simple_card.h | 1 + sound/soc/generic/simple-card.c | 14 +++++++++++++- 3 files changed, 15 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/sound/simple-card.txt +1 -0
@@ -71,6 +71,7 @@ Optional CPU/CODEC subnodes properties: it can be specified via "clocks" if system has clock node (= common clock), or "system-clock-frequency" (if system doens't support common clock) +- system-clock-direction : "in" or "out", default "in" Example 1 - single DAI link:
include/sound/simple_card.h +1 -0
@@ -18,6 +18,7 @@ struct asoc_simple_dai {const char *name;unsigned int fmt;unsigned int sysclk; +int sysclk_dir;int slots;int slot_width; };
sound/soc/generic/simple-card.c +13 -1
@@ -64,7 +64,8 @@ static int __asoc_simple_card_dai_init(struct snd_soc_dai *dai, }if (set->sysclk) { - ret =snd_soc_dai_set_sysclk (dai,0 , set->sysclk,0 ); + ret =snd_soc_dai_set_sysclk (dai,0 , set->sysclk, + set->sysclk_dir);if (ret && ret != -ENOTSUPP ) {dev_err (dai->dev,"simple-card: set_sysclk error\n" ); goto err;
@@ -116,6 +117,7 @@ asoc_simple_card_sub_parse_of(struct device_node *np, {struct device_node *node;struct clk *clk; +const char *str;u32 val;int ret;
@@ -138,6 +140,16 @@ asoc_simple_card_sub_parse_of(struct device_node *np,if (ret)return ret; + ret =of_property_read_string (np,"system-clock-direction" , &str); +if (ret ==0 ) { +if (!strcmp (str,"out" )) + dai->sysclk_dir =SND_SOC_CLOCK_OUT ; +else if (!strcmp (str,"in" )) + dai->sysclk_dir =SND_SOC_CLOCK_IN ; +else +return -EINVAL ; + } +/* * dai->sysclk come from * "clocks = <&xxx>" (if system has common clock)
Signature · 1 line
1.7.9.5
PATCH 3/3 ASoC: simple-card: Add system-clock-id DT parameter to dai nodes
In reply to Jyri SarhaSelect clk_id parameters for set_sysclk calls in the card init phase.
--- .../devicetree/bindings/sound/simple-card.txt | 2 ++ include/sound/simple_card.h | 1 + sound/soc/generic/simple-card.c | 6 +++++- 3 files changed, 8 insertions(+), 1 deletion(-)
Documentation/devicetree/bindings/sound/simple-card.txt +2 -0
@@ -72,6 +72,8 @@ Optional CPU/CODEC subnodes properties: clock node (= common clock), or "system-clock-frequency" (if system doens't support common clock) - system-clock-direction : "in" or "out", default "in" +- system-clock-id : u32, clk_id parameter for set_sysclk, + default 0 Example 1 - single DAI link:
include/sound/simple_card.h +1 -0
@@ -19,6 +19,7 @@ struct asoc_simple_dai {unsigned int fmt;unsigned int sysclk;int sysclk_dir; +int sysclk_id;int slots;int slot_width; };
sound/soc/generic/simple-card.c +5 -1
@@ -64,7 +64,7 @@ static int __asoc_simple_card_dai_init(struct snd_soc_dai *dai, }if (set->sysclk) { - ret =snd_soc_dai_set_sysclk (dai,0 , set->sysclk, + ret =snd_soc_dai_set_sysclk (dai, set->sysclk_id, set->sysclk, set->sysclk_dir);if (ret && ret != -ENOTSUPP ) {dev_err (dai->dev,"simple-card: set_sysclk error\n" );
@@ -150,6 +150,10 @@ asoc_simple_card_sub_parse_of(struct device_node *np,return -EINVAL ; } + ret =of_property_read_u32 (np,"system-clock-id" , &val); +if (ret ==0 ) + dai->sysclk_id = val; +/* * dai->sysclk come from * "clocks = <&xxx>" (if system has common clock)
Signature · 1 line
1.7.9.5
Re: [PATCH 3/3] ASoC: simple-card: Add system-clock-id DT parameter to dai nodes
Hi
I have panda board (omap4430 <http://www.ti.com/product/omap4430>) , I am trying to debug omap4430 <http://www.ti.com/product/omap4430> board using trace32 [Lauterbach].
Can you please provide procedure to debug u-boot code kernel code.
I had installed trace32 and PC is identifying trace32 through serial cable.
I wants to know steps to follow for debugging the boot code and kernel code.
I have gone through net, I came to know , need CMM scripts [board specfic CMM scripts]
can you please provide the same and further steps to debug the code.
Thank you in advance.
Regards
Satish.G
Quoted 74 lines · Jyri Sarha
Select
clk_idparameters forset_sysclkcalls in the card init phase.Signed-off-by Jyri Sarha <[email protected]>--- .../devicetree/bindings/sound/simple-card.txt | 2 ++ include/sound/simple_card.h | 1 + sound/soc/generic/simple-card.c | 6 +++++- 3 files changed, 8 insertions(+), 1 deletion(-)Documentation/devicetree/bindings/sound/simple-card.txt +0
-0@@ -72,6 +72,8 @@ Optional CPU/CODEC subnodes properties: clock node (= common clock), or"system-clock-frequency"
(if system doens't support
common clock)
- system-clock-direction : "in" or "out", default "in"
+- system-clock-id : u32,clk_idparameter forset_sysclk,Documentation/devicetree/bindings/sound/simple-card.txt +1
-0+ default 0 Example 1 - single DAI link:include/sound/simple_card.h +1
-0@@ -19,6 +19,7 @@ struct asoc_simple_dai {unsigned int fmt;unsigned int sysclk;int sysclk_dir; +int sysclk_id;int slots;int slot_width; };sound/soc/generic/simple-card.c +1
-1@@ -64,7 +64,7 @@ static int __asoc_simple_card_dai_init(struct snd_soc_dai *dai, }if (set->sysclk) { - ret =snd_soc_dai_set_sysclk (dai,0 , set->sysclk, + ret =snd_soc_dai_set_sysclk (dai, set->sysclk_id, set->sysclk, set->sysclk_dir);if (ret && ret != -ENOTSUPP) { dev_err(dai->dev, "simple-card: set_sysclkerror\n");
sound/soc/generic/simple-card.c +4
-1@@ -150,6 +150,10 @@ asoc_simple_card_sub_parse_of(struct device_node *np,return -EINVAL ; } + ret =of_property_read_u32 (np,"system-clock-id" , &val); +if (ret ==0 ) + dai->sysclk_id = val; +/* * dai->sysclk come from * "clocks = <&xxx>" (if system has common clock) -- 1.7.9.5
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 1/3] ASoC: simple-card: Make u32 DT parameter handling 64-bit proof
In reply to Jyri SarhaQuoted 2 lines · Jyri Sarha
Passing unsigned int pointers as u32 ponters may be dangerous on 64-bit system.
Applied, thanks.
Mark Brown
maintainerRe: [PATCH 3/3] ASoC: simple-card: Add system-clock-id DT parameter to dai nodes
In reply to Jyri SarhaQuoted 1 line · Jyri Sarha
Select
clk_idparameters forset_sysclkcalls in the card init phase.
This is making the ID defined by the drivers into ABI. It's not clear that this is something we want to do, and we certainly don't want to do it without updating the driver bindings. In principle what we want to do here is have our clocks handled by the clock API, though that's not trivial work.
Re: [PATCH 3/3] ASoC: simple-card: Add system-clock-id DT parameter to dai nodes
Quoted 9 lines · Mark Brown
Quoted 1 line · Jyri Sarha
Select
clk_idparameters forset_sysclkcalls in the card init phase.This is making the ID defined by the drivers into ABI. It's not clear that this is something we want to do, and we certainly don't want to do it without updating the driver bindings. In principle what we want to do here is have our clocks handled by the clock API, though that's not trivial work.
I see, actually this is not something I would need anytime soon, but how about the previous "Add system-clock-direction DT parameter to dai nodes" patch?
There is a clear common definitions for clock direction, so this should be ok, right?
If the clock direction patch would go in I would not need to add more stuff to already quite messy davinci-evm driver.
Best regards,
Jyri
Mark Brown
maintainerRe: [PATCH 3/3] ASoC: simple-card: Add system-clock-id DT parameter to dai nodes
Quoted 9 lines · Jyri Sarha
I see, actually this is not something I would need anytime soon, but how about the previous "Add system-clock-direction DT parameter to dai nodes" patch?
There is a clear common definitions for clock direction, so this should be ok, right?
If the clock direction patch would go in I would not need to add more stuff to already quite messy davinci-evm driver.
Yeah, I'm still thinking about that one. One thing I was wondering was if we should agree a definition that's generic with the clock API but then have an ASoC specific implementation for now until the clock API gets further along.