summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchasewu <chasewu@google.com>2021-06-18 14:23:04 +0800
committerchasewu <chasewu@google.com>2021-06-22 10:50:13 +0800
commitf465d4521002e1cbc46b9120fc6265aadbd59e82 (patch)
tree72aafd7f7f8c509e8a235f0de5f678d8e0ce38a3
parentbf91265d21551fed3ce9566d51ed2a5a53626aa7 (diff)
downloadamplifiers-f465d4521002e1cbc46b9120fc6265aadbd59e82.tar.gz
cs40l25: Make pwle_feature and save_pwle local variables
There is no need for these values to be saved in the driver private data structure they are only used on code paths from a single function. Update them to be local variables instead. Bug: 191278456 Test: local sanity checking PWLE commands Change-Id: Ic5f4a4901ed481a167568c3ee1500f9800e07441 Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Signed-off-by: chasewu <chasewu@google.com>
-rw-r--r--cs40l25/cs40l2x.c86
-rw-r--r--cs40l25/include/linux/mfd/cs40l2x.h2
2 files changed, 31 insertions, 57 deletions
diff --git a/cs40l25/cs40l2x.c b/cs40l25/cs40l2x.c
index 7f615b9..69d128b 100644
--- a/cs40l25/cs40l2x.c
+++ b/cs40l25/cs40l2x.c
@@ -1700,7 +1700,7 @@ err_mutex:
}
static int cs40l2x_save_packed_pwle_data(struct cs40l2x_private *cs40l2x,
- struct wt_type12_pwle *pwle)
+ struct wt_type12_pwle *pwle, unsigned int feature, bool save)
{
unsigned int zero_pad_size;
char *zero_pad_data;
@@ -1720,17 +1720,16 @@ static int cs40l2x_save_packed_pwle_data(struct cs40l2x_private *cs40l2x,
zero_pad_size = ret;
- if (cs40l2x->save_pwle) {
+ if (save) {
ret = cs40l2x_add_waveform_to_virtual_list(cs40l2x,
- CS40L2X_WT_TYPE_12_PWLE_FILE,
- cs40l2x->pwle_feature,
- zero_pad_size, zero_pad_data);
+ CS40L2X_WT_TYPE_12_PWLE_FILE, feature, zero_pad_size,
+ zero_pad_data);
if (!ret)
cs40l2x->num_virtual_pwle_waves++;
} else {
cs40l2x_save_waveform_to_ovwr_struct(cs40l2x,
- CS40L2X_WT_TYPE_12_PWLE_FILE, cs40l2x->pwle_feature,
- zero_pad_size, zero_pad_data);
+ CS40L2X_WT_TYPE_12_PWLE_FILE, feature, zero_pad_size,
+ zero_pad_data);
}
kfree(zero_pad_data);
@@ -1738,46 +1737,6 @@ static int cs40l2x_save_packed_pwle_data(struct cs40l2x_private *cs40l2x,
return ret;
}
-static int cs40l2x_pwle_save_entry(struct cs40l2x_private *cs40l2x, char *token)
-{
- unsigned int val;
- int ret;
-
- ret = kstrtou32(token, 10, &val);
- if (ret)
- return ret;
-
- if (val > 1) {
- dev_err(cs40l2x->dev, "Valid Save: 0 or 1\n");
- return -EINVAL;
- }
-
- if (val)
- cs40l2x->save_pwle = true;
-
- return ret;
-}
-
-static int cs40l2x_pwle_wvfrm_feature_entry(struct cs40l2x_private *cs40l2x,
- char *token)
-{
- unsigned int val;
- int ret;
-
- ret = kstrtou32(token, 10, &val);
- if (ret)
- return ret;
-
- if (val > CS40L2X_PWLE_MAX_WVFRM_FEAT || (val % 4) != 0) {
- dev_err(cs40l2x->dev, "Valid Waveform Feature: 0, 4, 8, 12\n");
- return -EINVAL;
- }
-
- cs40l2x->pwle_feature = val << CS40L2X_PWLE_WVFRM_FT_SHFT;
-
- return ret;
-}
-
static int cs40l2x_pwle_repeat_entry(struct cs40l2x_private *cs40l2x,
char *token, struct wt_type12_pwle *pwle)
{
@@ -1949,9 +1908,9 @@ static ssize_t cs40l2x_pwle_store(struct device *dev,
struct wt_type12_pwle *pwle;
struct wt_type12_pwle_section *section;
char *pwle_str, *cur, *token, *type;
- unsigned int num_vals = 0, num_segs = 0;
+ unsigned int num_vals = 0, num_segs = 0, feature = 0;
unsigned int val;
- bool indef = false;
+ bool indef = false, save_pwle = false;
bool t = false, l = false, f = false, c = false, b = false;
bool a = false, v = false;
int ret;
@@ -1979,8 +1938,6 @@ static ssize_t cs40l2x_pwle_store(struct device *dev,
goto err_exit;
}
- cs40l2x->save_pwle = false;
-
section = pwle->sections;
strlcpy(pwle_str, buf, count);
@@ -2006,9 +1963,18 @@ static ssize_t cs40l2x_pwle_store(struct device *dev,
goto err_exit;
}
- ret = cs40l2x_pwle_save_entry(cs40l2x, token);
+ ret = kstrtou32(token, 10, &val);
if (ret)
goto err_exit;
+
+ if (val > 1) {
+ dev_err(cs40l2x->dev, "Valid Save: 0 or 1\n");
+ ret = -EINVAL;
+ goto err_exit;
+ }
+
+ if (val)
+ save_pwle = true;
} else if (!strncmp(type, "WF", 2)) {
if (num_vals != 1) {
dev_err(cs40l2x->dev,
@@ -2017,9 +1983,19 @@ static ssize_t cs40l2x_pwle_store(struct device *dev,
goto err_exit;
}
- ret = cs40l2x_pwle_wvfrm_feature_entry(cs40l2x, token);
+ ret = kstrtou32(token, 10, &val);
if (ret)
goto err_exit;
+
+ if (val > CS40L2X_PWLE_MAX_WVFRM_FEAT ||
+ (val % 4) != 0) {
+ dev_err(cs40l2x->dev,
+ "Valid Waveform Feature: 0, 4, 8, 12\n");
+ ret = -EINVAL;
+ goto err_exit;
+ }
+
+ feature = val << CS40L2X_PWLE_WVFRM_FT_SHFT;
} else if (!strncmp(type, "RP", 2)) {
if (num_vals != 2) {
dev_err(cs40l2x->dev,
@@ -2172,7 +2148,7 @@ static ssize_t cs40l2x_pwle_store(struct device *dev,
pwle->wlength |= WT_WAVELEN_CALCULATED;
- ret = cs40l2x_save_packed_pwle_data(cs40l2x, pwle);
+ ret = cs40l2x_save_packed_pwle_data(cs40l2x, pwle, feature, save_pwle);
if (ret) {
dev_err(cs40l2x->dev,
"Malformed PWLE. No segments found.\n");
@@ -2182,7 +2158,7 @@ static ssize_t cs40l2x_pwle_store(struct device *dev,
ret = count;
- if (!cs40l2x->save_pwle)
+ if (!save_pwle)
cs40l2x->last_type_entered = CS40L2X_WT_TYPE_12_PWLE_FILE;
cs40l2x->queue_stored = true;
diff --git a/cs40l25/include/linux/mfd/cs40l2x.h b/cs40l25/include/linux/mfd/cs40l2x.h
index 04db37f..d25919b 100644
--- a/cs40l25/include/linux/mfd/cs40l2x.h
+++ b/cs40l25/include/linux/mfd/cs40l2x.h
@@ -1466,7 +1466,6 @@ struct cs40l2x_private {
struct hrtimer pbq_timer;
unsigned int pbq_cp_dig_scale;
- unsigned int pwle_feature;
unsigned int num_virtual_pwle_waves;
unsigned int last_type_entered;
unsigned int display_pwle_segs;
@@ -1503,7 +1502,6 @@ struct cs40l2x_private {
bool f0_wt_en[CS40L2X_MAX_WAVEFORMS];
bool dyn_f0_enable;
bool cond_class_h_en;
- bool save_pwle;
bool clab_bin_found;
bool par_bin_found;
struct cs40l2x_wseq_pair dsp_cache[CS40L2X_DSP_CACHE_MAX];