Fred Oh
ee8a41cd30
ASoC: rt1011: fix KASAN out-of-bounds bug in find_next_bit()
...
KASAN throws the following warning in rt1011.c:
[ 170.777603] BUG: KASAN: stack-out-of-bounds in _find_next_bit.constprop.0+0x3e/0xf0
find_next_bit() relies on unsigned long pointer arguments, but this driver
uses a type cast that generates the KASAN warning. Replace find_next_bit()
and find_last_bit() with __ffs() and __fls() to pass the value and avoid
casting pointers to make the warning go away.
Signed-off-by: Fred Oh <fred.oh@linux.intel.com >
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com >
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com >
Link: https://lore.kernel.org/r/20200622151348.28063-1-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2020-06-23 12:54:11 +01:00
Shuming Fan
0e4ba0290e
ASoC: rt1011: set the different setting for QFN/WLCSP package
...
The QFN package is a new one.
There is a different initial setting to the chip of QFN and WLCSP package.
Signed-off-by: Shuming Fan <shumingf@realtek.com >
Link: https://lore.kernel.org/r/20200116091854.18095-1-shumingf@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2020-01-17 15:30:31 +00:00
Shuming Fan
683b85152e
ASoC: rt1011: some minor changes to improve readability
...
There is no other code use the RT1011_INIT_REG_LEN definition,
except rt1011_reg_init().
Hence, we remove it and fix the typo.
Signed-off-by: Shuming Fan <shumingf@realtek.com >
Link: https://lore.kernel.org/r/20191031115446.21108-1-shumingf@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2019-10-31 14:20:17 +01:00
Shuming Fan
98b6b8df06
ASoC: rt1011: add the range check for temperature_calib from device property
...
The driver will check the range for temperature_calib.
It should be from 1 to 255.
Signed-off-by: Shuming Fan <shumingf@realtek.com >
Link: https://lore.kernel.org/r/20191031115436.21055-1-shumingf@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2019-10-31 14:20:01 +01:00
Shuming Fan
270d1b39b0
ASoC: rt1011: remove unnecessary tabs using spaces instead
...
There are unnecessary tabs inside some statements.
It uses sapces instead.
Signed-off-by: Shuming Fan <shumingf@realtek.com >
Link: https://lore.kernel.org/r/20191031115425.21003-1-shumingf@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2019-10-31 14:19:46 +01:00
Shuming Fan
5cf93491ff
ASoC: rt1011: improve the rt1011_set_dai_fmt() function
...
If there is a wrong format setting,
the driver will goto the end of the function directly.
Signed-off-by: Shuming Fan <shumingf@realtek.com >
Link: https://lore.kernel.org/r/20191031115414.20951-1-shumingf@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2019-10-31 14:19:30 +01:00
Shuming Fan
b9a3eea38b
ASoC: rt1011: remove redundant code in kcontrol
...
The !component->card->instantiated statement should remove in kcontrol.
It is no need to check the card->instantiated in kcontrol.
Signed-off-by: Shuming Fan <shumingf@realtek.com >
Link: https://lore.kernel.org/r/20191031115401.20898-1-shumingf@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2019-10-31 14:19:10 +01:00
Colin Ian King
349959a9c7
ASoC: rt1011: fix spelling mistake "temperture" -> "temperature"
...
There is a spelling mistake in a dev_dbg message. Fix it.
Signed-off-by: Colin Ian King <colin.king@canonical.com >
Link: https://lore.kernel.org/r/20191018082317.11971-1-colin.king@canonical.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2019-10-18 18:11:54 +01:00
Shuming Fan
8de6e75506
ASoC: rt1011: Read and apply r0 and temperature device property
...
Typically, the r0 (calibration data) and temperature were measured in the factory.
This information is written into the non-volatile area
where keeps data whether factory reset or OS update.
In Chromium OS case, the coreboot will read the info from VPD and create
the device property for each rt1011.
Signed-off-by: Shuming Fan <shumingf@realtek.com >
Tested-By: Cheng-Yi Chiang <cychiang@chromium.org >
Link: https://lore.kernel.org/r/20191016085845.11672-1-shumingf@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2019-10-16 13:56:58 +01:00
Shuming Fan
81bd644f69
ASoC: rt1011: set tx/rx slots from tx/rx_mask in TDM case
...
The TX/RX slot configuration use tx/rx_mask which requested
by the machine driver.
Signed-off-by: Shuming Fan <shumingf@realtek.com >
Link: https://lore.kernel.org/r/20191016085754.11614-1-shumingf@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2019-10-16 13:55:43 +01:00
Mark Brown
bb83178611
Merge branch 'asoc-5.4' into asoc-next
2019-09-09 14:55:20 +01:00
Colin Ian King
2b70d5776e
ASoC: rt1011: make array pd static const, makes object smaller
...
Don't populate the array pd on the stack but instead make it
static const. Makes the object code smaller by 100 bytes.
Before:
text data bss dec hex filename
51463 13016 128 64607 fc5f sound/soc/codecs/rt1011.o
After:
text data bss dec hex filename
51299 13080 128 64507 fbfb sound/soc/codecs/rt1011.o
(gcc version 9.2.1, amd64)
Signed-off-by: Colin Ian King <colin.king@canonical.com >
Link: https://lore.kernel.org/r/20190907073717.21632-1-colin.king@canonical.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2019-09-09 10:51:36 +01:00
Shuming Fan
e9e897d5fd
ASoC: rt1011: add mutex protection to set_fmt/set_tdm_slot
...
The calibration process at booting will reset registers and bypass cache
to make sure the calibration is done.
We add mutex protection to avoid unexpected settings while
the registration process and calibration are interleaved.
Signed-off-by: Shuming Fan <shumingf@realtek.com >
Link: https://lore.kernel.org/r/20190826090052.1875-1-shumingf@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2019-08-27 20:38:42 +01:00
YueHaibing
5b366753c1
ASoC: rt1011: remove unused variable 'dac_vol_tlv' and 'adc_vol_tlv'
...
sound/soc/codecs/rt1011.c:981:35: warning:
dac_vol_tlv defined but not used [-Wunused-const-variable=]
sound/soc/codecs/rt1011.c:982:35: warning:
adc_vol_tlv defined but not used [-Wunused-const-variable=]
They are never used, so can be removed.
Signed-off-by: YueHaibing <yuehaibing@huawei.com >
Link: https://lore.kernel.org/r/20190815090602.9000-1-yuehaibing@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2019-08-15 15:05:36 +01:00
Shuming Fan
0922c7a51c
ASoC: rt1011: Add a flag for the R0 calibration test
...
The factory test needs to know whether the calibration completed.
This flag helps to confirm the calibration completed or not.
Signed-off-by: Shuming Fan <shumingf@realtek.com >
Link: https://lore.kernel.org/r/20190806091459.14382-1-shumingf@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2019-08-07 14:19:13 +01:00
Shuming Fan
3403b808a0
ASoC: rt1011: Add R0 temperature and TDM1 ADC2DAT Swap control
...
- The user level application could set the R0 temperature after booting system.
The degree Celsius of R0 temperature store in the non-volatile space
when doing R0 calibration.
- TDM1 ADC2DAT Swap controls use to control TDM slot2/3 data
Signed-off-by: Shuming Fan <shumingf@realtek.com >
Link: https://lore.kernel.org/r/20190806091435.14329-1-shumingf@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2019-08-07 14:18:55 +01:00
Shuming Fan
09297c2f7a
ASoC: rt1011: fix DC calibration offset not applying
...
There are two issues to fix:
- DC offset calibration data will be reset after stopping playback.
- DC offset calibration data should be applied in the initial setting.
Signed-off-by: Shuming Fan <shumingf@realtek.com >
Link: https://lore.kernel.org/r/20190711082214.8142-1-shumingf@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org >
2019-07-11 12:15:42 +01:00
Shuming Fan
64429a8711
ASoC: rt1011: fix warning reported by kbuild test robot and minor issue
...
This patch fixes following issues:
- warning: this decimal constant is unsigned only in ISO C90
- sparse: incorrect type in assignment
- check if value.integer.value is zero for "R0 Load Mode" control
Signed-off-by: Shuming Fan <shumingf@realtek.com >
Signed-off-by: Mark Brown <broonie@kernel.org >
2019-06-06 21:19:35 +01:00
Nathan Chancellor
83a6edbb8f
ASoC: rt1011: Mark format integer literals as unsigned
...
Clang warns:
sound/soc/codecs/rt1011.c:1291:12: warning: integer literal is too large
to be represented in type 'long', interpreting as 'unsigned long' per
C89; this literal will have type 'long long' in C99 onwards
[-Wc99-compat]
format = 2147483648; /* 2^24 * 128 */
^
sound/soc/codecs/rt1011.c:2123:13: warning: integer literal is too large
to be represented in type 'long', interpreting as 'unsigned long' per
C89; this literal will have type 'long long' in C99 onwards
[-Wc99-compat]
format = 2147483648; /* 2^24 * 128 */
^
2 warnings generated.
Mark the integer literals as unsigned explicitly so that if the kernel
does ever bump the C standard it uses, the behavior is consitent.
Fixes: d6e65bb7ff
("ASoC: rt1011: Add RT1011 amplifier driver")
Link: https://github.com/ClangBuiltLinux/linux/issues/506
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com >
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com >
Signed-off-by: Mark Brown <broonie@kernel.org >
2019-06-06 21:19:07 +01:00
Shuming Fan
d6e65bb7ff
ASoC: rt1011: Add RT1011 amplifier driver
...
This is the initial amplifier driver for rt1011.
Signed-off-by: Shuming Fan <shumingf@realtek.com >
Signed-off-by: Mark Brown <broonie@kernel.org >
2019-06-04 15:09:39 +01:00