Commit d61100bb authored by Mark Brown's avatar Mark Brown

ASoC: wm2000: Use clock API integration to configure MCLK divisor

Since we are now using the clock API integration to manage MCLK we can now
use clk_get_rate() to determine if we need to divide MCLK without relying
on platform data.
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 514cfd6d
...@@ -15,9 +15,6 @@ struct wm2000_platform_data { ...@@ -15,9 +15,6 @@ struct wm2000_platform_data {
/** Filename for system-specific image to download to device. */ /** Filename for system-specific image to download to device. */
const char *download_file; const char *download_file;
/** Divide MCLK by 2 for system clock? */
unsigned int mclkdiv2:1;
/** Disable speech clarity enhancement, for use when an /** Disable speech clarity enhancement, for use when an
* external algorithm is used. */ * external algorithm is used. */
unsigned int speech_enh_disable:1; unsigned int speech_enh_disable:1;
......
...@@ -73,7 +73,6 @@ struct wm2000_priv { ...@@ -73,7 +73,6 @@ struct wm2000_priv {
unsigned int anc_eng_ena:1; unsigned int anc_eng_ena:1;
unsigned int spk_ena:1; unsigned int spk_ena:1;
unsigned int mclk_div:1;
unsigned int speech_clarity:1; unsigned int speech_clarity:1;
int anc_download_size; int anc_download_size;
...@@ -133,6 +132,7 @@ static int wm2000_poll_bit(struct i2c_client *i2c, ...@@ -133,6 +132,7 @@ static int wm2000_poll_bit(struct i2c_client *i2c,
static int wm2000_power_up(struct i2c_client *i2c, int analogue) static int wm2000_power_up(struct i2c_client *i2c, int analogue)
{ {
struct wm2000_priv *wm2000 = dev_get_drvdata(&i2c->dev); struct wm2000_priv *wm2000 = dev_get_drvdata(&i2c->dev);
unsigned long rate;
int ret; int ret;
BUG_ON(wm2000->anc_mode != ANC_OFF); BUG_ON(wm2000->anc_mode != ANC_OFF);
...@@ -145,7 +145,8 @@ static int wm2000_power_up(struct i2c_client *i2c, int analogue) ...@@ -145,7 +145,8 @@ static int wm2000_power_up(struct i2c_client *i2c, int analogue)
return ret; return ret;
} }
if (!wm2000->mclk_div) { rate = clk_get_rate(wm2000->mclk);
if (rate <= 13500000) {
dev_dbg(&i2c->dev, "Disabling MCLK divider\n"); dev_dbg(&i2c->dev, "Disabling MCLK divider\n");
wm2000_write(i2c, WM2000_REG_SYS_CTL2, wm2000_write(i2c, WM2000_REG_SYS_CTL2,
WM2000_MCLK_DIV2_ENA_CLR); WM2000_MCLK_DIV2_ENA_CLR);
...@@ -847,7 +848,6 @@ static int wm2000_i2c_probe(struct i2c_client *i2c, ...@@ -847,7 +848,6 @@ static int wm2000_i2c_probe(struct i2c_client *i2c,
filename = "wm2000_anc.bin"; filename = "wm2000_anc.bin";
pdata = dev_get_platdata(&i2c->dev); pdata = dev_get_platdata(&i2c->dev);
if (pdata) { if (pdata) {
wm2000->mclk_div = pdata->mclkdiv2;
wm2000->speech_clarity = !pdata->speech_enh_disable; wm2000->speech_clarity = !pdata->speech_enh_disable;
if (pdata->download_file) if (pdata->download_file)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment