This is an enhancement which allows to specify the default driver
parameters among the module parameters.
Adding default variables to the speakup_dtlk module
allows to easily set that at boot, rather than
setting the sys variables after boot.
More details can be found here:
https://github.com/linux-speakup/speakup/issues/7
Signed-off-by: Osama Muhammad <[email protected]>
Reviewed-by: Samuel Thibault <[email protected]>
---
drivers/accessibility/speakup/speakup_dtlk.c | 50 +++++++++++++++-----
1 file changed, 39 insertions(+), 11 deletions(-)
diff --git a/drivers/accessibility/speakup/speakup_dtlk.c b/drivers/accessibility/speakup/speakup_dtlk.c
index 6f01e010aaf4..657cd04de4e4 100644
--- a/drivers/accessibility/speakup/speakup_dtlk.c
+++ b/drivers/accessibility/speakup/speakup_dtlk.c
@@ -37,17 +37,27 @@ static unsigned int synth_portlist[] = {
static u_char synth_status;
-static struct var_t vars[] = {
- { CAPS_START, .u.s = {"\x01+35p" } },
- { CAPS_STOP, .u.s = {"\x01-35p" } },
- { RATE, .u.n = {"\x01%ds", 8, 0, 9, 0, 0, NULL } },
- { PITCH, .u.n = {"\x01%dp", 50, 0, 99, 0, 0, NULL } },
- { VOL, .u.n = {"\x01%dv", 5, 0, 9, 0, 0, NULL } },
- { TONE, .u.n = {"\x01%dx", 1, 0, 2, 0, 0, NULL } },
- { PUNCT, .u.n = {"\x01%db", 7, 0, 15, 0, 0, NULL } },
- { VOICE, .u.n = {"\x01%do", 0, 0, 7, 0, 0, NULL } },
- { FREQUENCY, .u.n = {"\x01%df", 5, 0, 9, 0, 0, NULL } },
- { DIRECT, .u.n = {NULL, 0, 0, 1, 0, 0, NULL } },
+enum default_vars_id {
+ CAPS_START_ID = 0, CAPS_STOP_ID,
+ RATE_ID, PITCH_ID,
+ VOL_ID, TONE_ID, PUNCT_ID,
+ VOICE_ID, FREQUENCY_ID,
+ DIRECT_ID, V_LAST_VAR_ID,
+ NB_ID,
+};
+
+
+static struct var_t vars[NB_ID] = {
+ [CAPS_START] = { CAPS_START, .u.s = {"\x01+35p" } },
+ [CAPS_STOP] = { CAPS_STOP, .u.s = {"\x01-35p" } },
+ [RATE] = { RATE, .u.n = {"\x01%ds", 8, 0, 9, 0, 0, NULL } },
+ [PITCH] = { PITCH, .u.n = {"\x01%dp", 50, 0, 99, 0, 0, NULL } },
+ [VOL] = { VOL, .u.n = {"\x01%dv", 5, 0, 9, 0, 0, NULL } },
+ [TONE] = { TONE, .u.n = {"\x01%dx", 1, 0, 2, 0, 0, NULL } },
+ [PUNCT] = { PUNCT, .u.n = {"\x01%db", 7, 0, 15, 0, 0, NULL } },
+ [VOICE] = { VOICE, .u.n = {"\x01%do", 0, 0, 7, 0, 0, NULL } },
+ [FREQUENCY] = { FREQUENCY, .u.n = {"\x01%df", 5, 0, 9, 0, 0, NULL } },
+ [DIRECT] = { DIRECT, .u.n = {NULL, 0, 0, 1, 0, 0, NULL } },
V_LAST_VAR
};
@@ -376,9 +386,27 @@ static void dtlk_release(struct spk_synth *synth)
module_param_hw_named(port, port_forced, int, ioport, 0444);
module_param_named(start, synth_dtlk.startup, short, 0444);
+module_param_named(rate, vars[RATE_ID].u.n.default_val, int, 0444);
+module_param_named(pitch, vars[PITCH_ID].u.n.default_val, int, 0444);
+module_param_named(vol, vars[VOL_ID].u.n.default_val, int, 0444);
+module_param_named(tone, vars[TONE_ID].u.n.default_val, int, 0444);
+module_param_named(punct, vars[PUNCT_ID].u.n.default_val, int, 0444);
+module_param_named(voice, vars[VOICE_ID].u.n.default_val, int, 0444);
+module_param_named(frequency, vars[FREQUENCY_ID].u.n.default_val, int, 0444);
+module_param_named(direct, vars[DIRECT_ID].u.n.default_val, int, 0444);
+
MODULE_PARM_DESC(port, "Set the port for the synthesizer (override probing).");
MODULE_PARM_DESC(start, "Start the synthesizer once it is loaded.");
+MODULE_PARM_DESC(rate, "Set the rate variable on load.");
+MODULE_PARM_DESC(pitch, "Set the pitch variable on load.");
+MODULE_PARM_DESC(vol, "Set the vol variable on load.");
+MODULE_PARM_DESC(tone, "Set the tone variable on load.");
+MODULE_PARM_DESC(punct, "Set the punct variable on load.");
+MODULE_PARM_DESC(voice, "Set the voice variable on load.");
+MODULE_PARM_DESC(frequency, "Set the frequency variable on load.");
+MODULE_PARM_DESC(direct, "Set the direct variable on load.");
+
module_spk_synth(synth_dtlk);
--
2.25.1
Hi Osama,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on linus/master]
[also build test ERROR on v6.1-rc3 next-20221101]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Osama-Muhammad/Accessiblity-speakup_dtlk-specifying-the-default-driver-parameters-among-the-module-params/20221102-050055
patch link: https://lore.kernel.org/r/20221101205912.10139-1-osmtendev%40gmail.com
patch subject: [PATCH] Accessiblity: speakup_dtlk: specifying the default driver parameters among the module params
config: parisc-randconfig-r022-20221101
compiler: hppa-linux-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/faea81a453174d64d377b24736315f81c2137565
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Osama-Muhammad/Accessiblity-speakup_dtlk-specifying-the-default-driver-parameters-among-the-module-params/20221102-050055
git checkout faea81a453174d64d377b24736315f81c2137565
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=parisc SHELL=/bin/bash drivers/accessibility/speakup/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <[email protected]>
All errors (new ones prefixed by >>):
>> drivers/accessibility/speakup/speakup_dtlk.c:51:10: error: array index in initializer exceeds array bounds
51 | [CAPS_START] = { CAPS_START, .u.s = {"\x01+35p" } },
| ^~~~~~~~~~
drivers/accessibility/speakup/speakup_dtlk.c:51:10: note: (near initialization for 'vars')
drivers/accessibility/speakup/speakup_dtlk.c:52:10: error: array index in initializer exceeds array bounds
52 | [CAPS_STOP] = { CAPS_STOP, .u.s = {"\x01-35p" } },
| ^~~~~~~~~
drivers/accessibility/speakup/speakup_dtlk.c:52:10: note: (near initialization for 'vars')
drivers/accessibility/speakup/speakup_dtlk.c:53:10: error: array index in initializer exceeds array bounds
53 | [RATE] = { RATE, .u.n = {"\x01%ds", 8, 0, 9, 0, 0, NULL } },
| ^~~~
drivers/accessibility/speakup/speakup_dtlk.c:53:10: note: (near initialization for 'vars')
drivers/accessibility/speakup/speakup_dtlk.c:54:10: error: array index in initializer exceeds array bounds
54 | [PITCH] = { PITCH, .u.n = {"\x01%dp", 50, 0, 99, 0, 0, NULL } },
| ^~~~~
drivers/accessibility/speakup/speakup_dtlk.c:54:10: note: (near initialization for 'vars')
drivers/accessibility/speakup/speakup_dtlk.c:55:10: error: array index in initializer exceeds array bounds
55 | [VOL] = { VOL, .u.n = {"\x01%dv", 5, 0, 9, 0, 0, NULL } },
| ^~~
drivers/accessibility/speakup/speakup_dtlk.c:55:10: note: (near initialization for 'vars')
drivers/accessibility/speakup/speakup_dtlk.c:56:10: error: array index in initializer exceeds array bounds
56 | [TONE] = { TONE, .u.n = {"\x01%dx", 1, 0, 2, 0, 0, NULL } },
| ^~~~
drivers/accessibility/speakup/speakup_dtlk.c:56:10: note: (near initialization for 'vars')
drivers/accessibility/speakup/speakup_dtlk.c:57:10: error: array index in initializer exceeds array bounds
57 | [PUNCT] = { PUNCT, .u.n = {"\x01%db", 7, 0, 15, 0, 0, NULL } },
| ^~~~~
drivers/accessibility/speakup/speakup_dtlk.c:57:10: note: (near initialization for 'vars')
drivers/accessibility/speakup/speakup_dtlk.c:58:10: error: array index in initializer exceeds array bounds
58 | [VOICE] = { VOICE, .u.n = {"\x01%do", 0, 0, 7, 0, 0, NULL } },
| ^~~~~
drivers/accessibility/speakup/speakup_dtlk.c:58:10: note: (near initialization for 'vars')
drivers/accessibility/speakup/speakup_dtlk.c:59:10: error: array index in initializer exceeds array bounds
59 | [FREQUENCY] = { FREQUENCY, .u.n = {"\x01%df", 5, 0, 9, 0, 0, NULL } },
| ^~~~~~~~~
drivers/accessibility/speakup/speakup_dtlk.c:59:10: note: (near initialization for 'vars')
drivers/accessibility/speakup/speakup_dtlk.c:60:10: error: array index in initializer exceeds array bounds
60 | [DIRECT] = { DIRECT, .u.n = {NULL, 0, 0, 1, 0, 0, NULL } },
| ^~~~~~
drivers/accessibility/speakup/speakup_dtlk.c:60:10: note: (near initialization for 'vars')
vim +51 drivers/accessibility/speakup/speakup_dtlk.c
48
49
50 static struct var_t vars[NB_ID] = {
> 51 [CAPS_START] = { CAPS_START, .u.s = {"\x01+35p" } },
52 [CAPS_STOP] = { CAPS_STOP, .u.s = {"\x01-35p" } },
53 [RATE] = { RATE, .u.n = {"\x01%ds", 8, 0, 9, 0, 0, NULL } },
54 [PITCH] = { PITCH, .u.n = {"\x01%dp", 50, 0, 99, 0, 0, NULL } },
55 [VOL] = { VOL, .u.n = {"\x01%dv", 5, 0, 9, 0, 0, NULL } },
56 [TONE] = { TONE, .u.n = {"\x01%dx", 1, 0, 2, 0, 0, NULL } },
57 [PUNCT] = { PUNCT, .u.n = {"\x01%db", 7, 0, 15, 0, 0, NULL } },
58 [VOICE] = { VOICE, .u.n = {"\x01%do", 0, 0, 7, 0, 0, NULL } },
59 [FREQUENCY] = { FREQUENCY, .u.n = {"\x01%df", 5, 0, 9, 0, 0, NULL } },
60 [DIRECT] = { DIRECT, .u.n = {NULL, 0, 0, 1, 0, 0, NULL } },
61 V_LAST_VAR
62 };
63
--
0-DAY CI Kernel Test Service
https://01.org/lkp