diff options
author | chasewu <chasewu@google.com> | 2021-06-18 14:23:04 +0800 |
---|---|---|
committer | chasewu <chasewu@google.com> | 2021-06-22 10:50:13 +0800 |
commit | f465d4521002e1cbc46b9120fc6265aadbd59e82 (patch) | |
tree | 72aafd7f7f8c509e8a235f0de5f678d8e0ce38a3 | |
parent | bf91265d21551fed3ce9566d51ed2a5a53626aa7 (diff) | |
download | amplifiers-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.c | 86 | ||||
-rw-r--r-- | cs40l25/include/linux/mfd/cs40l2x.h | 2 |
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]; |