From: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
To: broonie@opensource.wolfsonmicro.com
Cc: alsa-devel@alsa-project.org, tiwai@suse.de,
patches@opensource.wolfsonmicro.com, lgirdwood@gmail.com,
Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Subject: [PATCH 1/8] ASoC: arizona: Move selection of FLL REFCLK into init
Date: Wed, 20 Feb 2013 16:09:32 +0000 [thread overview]
Message-ID: <1361376579-29051-2-git-send-email-ckeepax@opensource.wolfsonmicro.com> (raw)
In-Reply-To: <1361376579-29051-1-git-send-email-ckeepax@opensource.wolfsonmicro.com>
In preparation for additional features on the FLL this patch moves the
code selecting the REFCLK source based on the 32kHz clock into the FLL
initialisation function.
Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
---
sound/soc/codecs/arizona.c | 28 ++++++++++++++++------------
sound/soc/codecs/arizona.h | 3 +++
2 files changed, 19 insertions(+), 12 deletions(-)
diff --git a/sound/soc/codecs/arizona.c b/sound/soc/codecs/arizona.c
index ac948a6..c14e755 100644
--- a/sound/soc/codecs/arizona.c
+++ b/sound/soc/codecs/arizona.c
@@ -1079,7 +1079,7 @@ int arizona_set_fll(struct arizona_fll *fll, int source,
{
struct arizona *arizona = fll->arizona;
struct arizona_fll_cfg cfg, sync;
- unsigned int reg, val;
+ unsigned int reg;
int syncsrc;
bool ena;
int ret;
@@ -1096,16 +1096,7 @@ int arizona_set_fll(struct arizona_fll *fll, int source,
ena = reg & ARIZONA_FLL1_ENA;
if (Fout) {
- /* Do we have a 32kHz reference? */
- regmap_read(arizona->regmap, ARIZONA_CLOCK_32K_1, &val);
- switch (val & ARIZONA_CLK_32K_SRC_MASK) {
- case ARIZONA_CLK_SRC_MCLK1:
- case ARIZONA_CLK_SRC_MCLK2:
- syncsrc = val & ARIZONA_CLK_32K_SRC_MASK;
- break;
- default:
- syncsrc = -1;
- }
+ syncsrc = fll->ref_src;
if (source == syncsrc)
syncsrc = -1;
@@ -1115,7 +1106,7 @@ int arizona_set_fll(struct arizona_fll *fll, int source,
if (ret != 0)
return ret;
- ret = arizona_calc_fll(fll, &cfg, 32768, Fout);
+ ret = arizona_calc_fll(fll, &cfg, fll->ref_freq, Fout);
if (ret != 0)
return ret;
} else {
@@ -1178,6 +1169,7 @@ int arizona_init_fll(struct arizona *arizona, int id, int base, int lock_irq,
int ok_irq, struct arizona_fll *fll)
{
int ret;
+ unsigned int val;
init_completion(&fll->ok);
@@ -1185,6 +1177,18 @@ int arizona_init_fll(struct arizona *arizona, int id, int base, int lock_irq,
fll->base = base;
fll->arizona = arizona;
+ /* Configure default refclk to 32kHz if we have one */
+ regmap_read(arizona->regmap, ARIZONA_CLOCK_32K_1, &val);
+ switch (val & ARIZONA_CLK_32K_SRC_MASK) {
+ case ARIZONA_CLK_SRC_MCLK1:
+ case ARIZONA_CLK_SRC_MCLK2:
+ fll->ref_src = val & ARIZONA_CLK_32K_SRC_MASK;
+ break;
+ default:
+ fll->ref_src = -1;
+ }
+ fll->ref_freq = 32768;
+
snprintf(fll->lock_name, sizeof(fll->lock_name), "FLL%d lock", id);
snprintf(fll->clock_ok_name, sizeof(fll->clock_ok_name),
"FLL%d clock OK", id);
diff --git a/sound/soc/codecs/arizona.h b/sound/soc/codecs/arizona.h
index 116372c..124f9f0 100644
--- a/sound/soc/codecs/arizona.h
+++ b/sound/soc/codecs/arizona.h
@@ -201,6 +201,9 @@ struct arizona_fll {
unsigned int fref;
unsigned int fout;
+ int ref_src;
+ unsigned int ref_freq;
+
char lock_name[ARIZONA_FLL_NAME_LEN];
char clock_ok_name[ARIZONA_FLL_NAME_LEN];
};
--
1.7.2.5
next prev parent reply other threads:[~2013-02-20 16:12 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-20 16:09 [PATCH 0/8] ASoC: arizona: Add support for directly setting the FLL REFCLK Charles Keepax
2013-02-20 16:09 ` Charles Keepax [this message]
2013-02-20 16:09 ` [PATCH 2/8] ASoC: arizona: Tidy up SYNCCLK selection and cache values Charles Keepax
2013-02-20 16:31 ` Mark Brown
2013-02-20 16:53 ` Charles Keepax
2013-02-20 16:09 ` [PATCH 3/8] ASoC: arizona: Factor out check for enabled FLL Charles Keepax
2013-02-20 16:09 ` [PATCH 4/8] ASoC: arizona: Factor out FLL disable Charles Keepax
2013-02-20 16:09 ` [PATCH 5/8] ASoC: arizona: Factor out FLL enable Charles Keepax
2013-02-20 16:09 ` [PATCH 6/8] ASoC: arizona: Improve suppression of noop FLL updates Charles Keepax
2013-02-20 16:09 ` [PATCH 7/8] ASoC: arizona: Add support for directly setting the FLL REFCLK Charles Keepax
2013-02-20 16:09 ` [PATCH 8/8] ASoC: arizona: Add convience define for clearing SYNCCLK Charles Keepax
2013-02-20 16:44 ` [PATCH 0/8] ASoC: arizona: Add support for directly setting the FLL REFCLK Mark Brown
2013-02-20 17:22 ` Charles Keepax
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=1361376579-29051-2-git-send-email-ckeepax@opensource.wolfsonmicro.com \
--to=ckeepax@opensource.wolfsonmicro.com \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=lgirdwood@gmail.com \
--cc=patches@opensource.wolfsonmicro.com \
--cc=tiwai@suse.de \
/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.