- 01 10月, 2019 1 次提交
-
-
由 Takashi Iwai 提交于
commit 2757970f6d0d0a112247600b23d38c0c728ceeb3 upstream. The node obtained from of_find_node_by_path() has to be unreferenced after the use, but we forgot it for the root node. Fixes: f0fba2ad ("ASoC: multi-component - ASoC Multi-Component Support") Cc: Timur Tabi <timur@kernel.org> Cc: Nicolin Chen <nicoleotsuka@gmail.com> Cc: Xiubo Li <Xiubo.Lee@gmail.com> Cc: Fabio Estevam <festevam@gmail.com> Signed-off-by: NTakashi Iwai <tiwai@suse.de> Acked-by: NNicolin Chen <nicoleotsuka@gmail.com> Signed-off-by: NMark Brown <broonie@kernel.org> Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 03 5月, 2018 1 次提交
-
-
由 Fabio Estevam 提交于
Adopt the SPDX license identifier headers to ease license compliance management. Signed-off-by: NFabio Estevam <fabio.estevam@nxp.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 26 4月, 2018 1 次提交
-
-
由 Fabio Estevam 提交于
Convert the sisr and sisr2 variable types to u32 to avoid the following sparse warnings: sound/soc/fsl/fsl_ssi.c:391:42: warning: incorrect type in argument 3 (different base types) sound/soc/fsl/fsl_ssi.c:391:42: expected unsigned int *val sound/soc/fsl/fsl_ssi.c:391:42: got restricted __be32 *<noident> sound/soc/fsl/fsl_ssi.c:393:17: warning: restricted __be32 degrades to integer sound/soc/fsl/fsl_ssi.c:393:15: warning: incorrect type in assignment (different base types) sound/soc/fsl/fsl_ssi.c:393:15: expected restricted __be32 [usertype] sisr2 sound/soc/fsl/fsl_ssi.c:393:15: got unsigned int sound/soc/fsl/fsl_ssi.c:396:50: warning: incorrect type in argument 3 (different base types) sound/soc/fsl/fsl_ssi.c:396:50: expected unsigned int [unsigned] val sound/soc/fsl/fsl_ssi.c:396:50: got restricted __be32 [usertype] sisr2 sound/soc/fsl/fsl_ssi.c:398:42: warning: incorrect type in argument 2 (different base types) sound/soc/fsl/fsl_ssi.c:398:42: expected unsigned int [unsigned] [usertype] sisr sound/soc/fsl/fsl_ssi.c:398:42: got restricted __be32 [addressable] [usertype] sisr In other places where regmap_read() is used a u32 variable is passed to store the register read value, so do the same here as well. regmap API already takes care of endianness, so the usage of u32 is safe. Signed-off-by: NFabio Estevam <fabio.estevam@nxp.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 12 4月, 2018 1 次提交
-
-
由 Nicolin Chen 提交于
This is a partial revert (in a cleaner way) of commit ebf08ae3 ("ASoC: fsl_ssi: Keep ssi->i2s_net updated") to fix a regression at test cases when switching between mono and stereo audio. The problem is that ssi->i2s_net is initialized in set_dai_fmt() only, while this set_dai_fmt() is only called during the dai-link probe(). The original patch assumed set_dai_fmt() would be called during every playback instance, so it failed at the overriding use cases. This patch adds the local variable i2s_net back to let regular use cases still follow the mode settings from the set_dai_fmt(). Meanwhile, the original commit of keeping ssi->i2s_net updated was to make set_tdm_slot() clean by checking the ssi->i2s_net directly instead of reading SCR register. However, the change itself is not necessary (or even harmful) because the set_tdm_slot() might fail to check the slot number for Normal-Mode-None-Net settings while mono audio cases still need 2 slots. So this patch can also fix it. And it adds an extra line of comments to declare ssi->i2s_net does not reflect the register value but merely the initial setting from the set_dai_fmt(). Reported-by: NMika Penttilä <mika.penttila@nextfour.com> Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NMika Penttilä <mika.penttila@nextfour.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 21 2月, 2018 17 次提交
-
-
由 Nicolin Chen 提交于
Since ssi->streams is being updated along with SCR register and its SSIEN bit, it's simpler to use it instead. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NCaleb Crome <caleb@crome.org> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
This patch cleans up probe() function by moving all Device Tree related code into a separate function. It allows the probe() to be Device Tree independent. This will be very useful for future integration of imx-ssi driver which has similar functionalities while exists only because it supports non-DT cases. This patch also moves symmetric_channels of AC97 from the probe to the structure snd_soc_dai_driver for simplification. Additionally, since PowerPC and AC97 use the same pdev pointer to register a platform device, this patch also unifies related code. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NCaleb Crome <caleb@crome.org> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
Using symmetric_rates in the cpu_dai_drv is a bit implicit, so this patch adds a bool synchronous instead. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NCaleb Crome <caleb@crome.org> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
The _fsl_ssi_set_dai_fmt() is a helper function being called from fsl_ssi_set_dai_fmt() as an ASoC operation and fsl_ssi_hw_init() mainly for AC97 format initialization. This patch cleans the _fsl_ssi_set_dai_fmt() in following ways: * Removing *dev pointer in the parameters as it's included in the *ssi pointer of struct fsl_ssi. * Using regmap_update_bits() instead of regmap_read() with masking the value manually. * Moving baudclk check to the switch-case routine to skip the I2S master check. And moving SxCCR.DC settings after baudclk check. * Adding format settings for SND_SOC_DAIFMT_AC97 like others. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NCaleb Crome <caleb@crome.org> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
AC97 configures most of registers earlier to start a communication with CODECs in order to successfully initialize CODEC. Currently, _fsl_ssi_set_dai_fmt() and fsl_ssi_setup_ac97() are called to get all SSI registers properly set. Since now the driver has a fsl_ssi_hw_init() to handle all register initial settings, this patch moves those register settings of AC97 to the fsl_ssi_hw_init() as well. Meanwhile it applies _fsl_ssi_set_dai_fmt() call to AC97 only since other formats would be configured via normal set_dai_fmt() directly. This patch also adds fsl_ssi_hw_clean() to cleanup control bits for AC97 in the platform remote() function. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NCaleb Crome <caleb@crome.org> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
The probe() could handle some one-time configurations since they will not be changed once being configured. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NCaleb Crome <caleb@crome.org> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
Since there is a helper function, use it to help readability. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NCaleb Crome <caleb@crome.org> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
It'd be safer to enable both FIFOs for TX or RX at the same time. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NCaleb Crome <caleb@crome.org> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
This patch cleans fsl_ssi_setup_regvals() by following changes: 1) Moving DBG bits to the first lines. 2) Setting SSIE, RE/TE as default and cleaning it for AC97 Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NCaleb Crome <caleb@crome.org> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
The _fsl_ssi_set_dai_fmt() bypasses an undefined format for AC97 mode. However, it's not really necessary if AC97 has its complete format defined. So this patch adds a DAIFMT macro of complete format including a clock direction and polarity. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NCaleb Crome <caleb@crome.org> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
The trigger() calls fsl_ssi_tx_config() and fsl_ssi_rx_config(), and both of them jump to fsl_ssi_config(). And fsl_ssi_config() later calls another fsl_ssi_rxtx_config(). However, the whole routine, especially fsl_ssi_config() function, is too complicated because of the folowing reasons: 1) It has to handle the concern of the opposite stream. 2) It has to handle cases of offline configurations support. 3) It has to handle enable and disable operations while they're mostly different. Since the enable and disable routines have more differences than TX and RX rountines, this patch simplifies these helper functions with the following changes: - Changing to two helper functions of enable and disable instead of TX and RX. - Removing fsl_ssi_rxtx_config() by separately integrating it to two newly introduced enable & disable functions. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NCaleb Crome <caleb@crome.org> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
The FIFO clear helper function is just one line of code now. So it could be cleaned up by removing it and calling regmap directly. Meanwhile, FIFO clear could be applied to all use cases, not confined to AC97. So this patch also moves FIFO clear in the trigger() to fsl_ssi_config() and removes the AC97 check. Note that SOR register is safe from offline_config HW limit. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NCaleb Crome <caleb@crome.org> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
The define of fsl_ssi_disable_val is not so clear as it mixes two steps of calculations together. And those parameter names are also a bit long to read. Since it just tries to exclude the shared bits from the regvals of current stream while the opposite stream is active, it's better to use something like ssi_excl_shared_bits. This patch also bisects fsl_ssi_disable_val into two macros of two corresponding steps and then shortens its parameter names. It also updates callers in the fsl_ssi_config() accordingly. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NCaleb Crome <caleb@crome.org> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
Checking TE and RE bits in SCR register doesn't work for AC97 mode which enables SSIEN, TE and RE in the fsl_ssi_setup_ac97() that's called during probe(). So when running into the trigger(), it will always get the result of both TE and RE being enabled already, even if actually there is no active stream. This patch fixes this issue by adding a variable to log the active streams manually. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NCaleb Crome <caleb@crome.org> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
This patch replaces the register read with ssi->i2s_net for simplification. It also removes masking SSIEN from scr value since it's handled later by regmap_update_bits() to set this scr value back. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NCaleb Crome <caleb@crome.org> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
The hw_params() overwrites i2s_net settings for special cases like mono-channel support, however, it doesn't update ssi->i2s_net as set_dai_fmt() does. This patch removes the local i2s_net variable and directly updates ssi->i2s_net in the hw_params() so that the driver can simply look up the ssi->i2s_net instead of reading the register. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NCaleb Crome <caleb@crome.org> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
The RX and TX macros were defined implicitly and there was a potential risk if someone changes their values. Since they were defined to index the array ssi->regvals[2], this patch moves these two macros to fsl_ssi.c, closer to its owner ssi->regvals. And it also puts some comments here to limit their value within [0, 1]. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NCaleb Crome <caleb@crome.org> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 12 2月, 2018 1 次提交
-
-
由 Fabio Estevam 提交于
The 'iprop' variable is passed as an argument to the be32_to_cpup() function, which expects a 'const _be *' type. Change the iprop variable type so that the following build warnings with W=1 are gone: sound/soc/fsl/fsl_ssi.c:1463:48: warning: incorrect type in argument 1 (different base types) sound/soc/fsl/fsl_ssi.c:1463:48: expected restricted __be32 const [usertype] *p sound/soc/fsl/fsl_ssi.c:1463:48: got unsigned int const [usertype] *[assigned] iprop Signed-off-by: NFabio Estevam <fabio.estevam@nxp.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 19 12月, 2017 11 次提交
-
-
由 Nicolin Chen 提交于
Some regmap code looks redudant. So simplify it. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Acked-by: NTimur Tabi <timur@tabi.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
Since this i2smode also includes the setting of Network mode, it should have it in the name. This patch also adds its MASK define. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Acked-by: NTimur Tabi <timur@tabi.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
The name fsl_ssi_rxtx_reg_val is too long to read comfortably. So this patch shortens it by using an array (fsl_ssi_regvals, renamed from fsl_ssi_reg_val). To do that, it also introduces two macros (TX and RX) to replace the wrapper structure. This will also help further cleanups. Meanwhile, it unifies all local variable with the name "vals" to get rid of the name "reg" -- could be confusing with "regs" in the private struct for regmap. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Acked-by: NTimur Tabi <timur@tabi.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
Simplify the variable name. This reduces one over-80-character line. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Acked-by: NTimur Tabi <timur@tabi.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
Shortens the variable name to save space, useful for dev_err outputs. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Acked-by: NTimur Tabi <timur@tabi.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
This patches unifies the error message in the "failed to xxxx" format. It also reduces the length of one line and adds spaces to an operator. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Acked-by: NTimur Tabi <timur@tabi.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
This patch just simply unifies the coding style. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Acked-by: NTimur Tabi <timur@tabi.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
This patch renames CCSR_SSI_xxx to REG_SSI_xxx and SSI_xxx_yyy style. It also slightly reduces the length of them to save some space. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Acked-by: NTimur Tabi <timur@tabi.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
This patch refines the comments by: 1) Removing all out-of-date comments 2) Removing all not-so-useful comments 3) Unifying the styles of all comments 4) Shortening comments to be more conise 5) Adding comments to improve code readablity 6) Moving all register related comments to fsl_ssi.h 7) Adding comments to all register and field defines Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Acked-by: NTimur Tabi <timur@tabi.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
There should be no trouble to understand dev = pdev->dev. This can save some space to have more print info or save some wrapped lines. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Acked-by: NTimur Tabi <timur@tabi.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Nicolin Chen 提交于
Shorten the private data structure to save some wrapped lines. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Tested-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Reviewed-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Acked-by: NTimur Tabi <timur@tabi.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 29 11月, 2017 3 次提交
-
-
由 Maciej S. Szmigiero 提交于
When testing AC'97 capture on UDOO board (currently the only user of fsl_ssi driver in the AC'97 mode) it become obvious that there is a massive distortion above certain, small input signal. This problem has been traced to silicon errata ERR003778: "In AC97, 16-bit mode, received data is shifted by 4-bit locations" that has "No fix scheduled". This errata suggests a workaround of doing a 4-bit shift back in SDMA script for this specific operation mode, however our SDMA scripts are shared between various SoC peripherals so we can't really modify them. There is a simple way to avoid this problem, however, that is to disallow recording in 16-bit mode and only support it in AC'97-native 20-bit mode. We have to use a 4-byte format for this since SSI FIFOs do not allow 3-byte accesses (and these aren't supported by imx-sdma driver anyway). With this change the capture distortion is gone. We can also add this format as an additional one supported for playback, using this opportunity to make sure that we use CPU-endian-native formats in AC'97 mode as we already do in I2S mode. There is no problem in using different bit widths in playback and capture in AC'97 mode so allow this, too. Signed-off-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Maciej S. Szmigiero 提交于
We need to make sure that only proper channel slots (in SACCST register) are enabled at playback start time since some AC'97 CODECs (like VT1613 on UDOO board) were observed requesting via SLOTREQ spurious ones just after an AC'97 link is started but before the CODEC is configured by its driver. When a bit for some channel slot is set in a SLOTREQ request then SSI sets the relevant bit in SACCST automatically, which then 'sticks' until it is manually unset. The SACCST register is not writable directly, we have to use SACCDIS and SACCEN registers to configure it instead (these aren't normal registers: writing a '1' bit at some position in SACCEN sets the relevant bit in SACCST; SACCDIS operates in a similar way but allows unsetting bits in SACCST). Theoretically, this should be necessary only for the very first playback but since some CODECs are so untrustworthy and extra channel slots enabled mean ruined playback let's play safe here and make sure that no extra slots are enabled in SACCST every time a playback is started. Signed-off-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Acked-by: NNicolin Chen <nicoleotsuka@gmail.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Maciej S. Szmigiero 提交于
In AC'97 mode we configure and start SSI RX / TX on probe path via a call to _fsl_ssi_set_dai_fmt() function. We don't need to call this function again later and in fact don't want to do it since this function temporarily sets STCR, SRCR and SCR to some intermediate values. Signed-off-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Acked-by: NNicolin Chen <nicoleotsuka@gmail.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 28 11月, 2017 3 次提交
-
-
由 Maciej S. Szmigiero 提交于
We don't need to set CCSR_SSI_SIER_RFF0_EN / CCSR_SSI_SIER_TFE0_EN bits in reg->rx.sier / reg->tx.sier variables in a non-AC'97 mode considering we had just initialized these variables to these very values unconditionally a few lines earlier. Signed-off-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Acked-by: NNicolin Chen <nicoleotsuka@gmail.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Maciej S. Szmigiero 提交于
AC'97 register access operations (both read and write) on SSI use a one, shared set of SSI registers for AC'97 register address and data. This means that only one such access is possible at a time and so all these operations need to be serialized. Since an AC'97 register access operation in this driver takes 100us+ let's use a mutex for this. Use this opportunity to also change a default value returned from AC'97 register read function from -1 to 0, since that's what AC'97 specs require to be returned when unknown / undefined registers are read. Signed-off-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Maciej S. Szmigiero 提交于
AC'97 ops (register read / write) need SSI regmap and clock, so they have to be set after them. We also need to set these ops back to NULL if we fail the probe. Signed-off-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name> Acked-by: NNicolin Chen <nicoleotsuka@gmail.com> Signed-off-by: NMark Brown <broonie@kernel.org> Cc: stable@vger.kernel.org
-
- 19 9月, 2017 1 次提交
-
-
由 Nicolin Chen 提交于
The set_sysclk() now is used to override the output bit clock rate. But this is not a common way to implement a set_dai_sysclk(). And this creates a problem when a general machine driver (simple-card for example) tries to do set_dai_sysclk() by passing an input clock rate for the baud clock instead of setting the bit clock rate as fsl_ssi driver expected. So this patch solves this problem by firstly removing set_sysclk() since the hw_params() can calculate the bit clock rate. Secondly, in order not to break those TDM use cases which previously might have been using set_sysclk() to override the bit clock rate, this patch changes the driver to calculate the bit clock rate using the slot number and the slot width from the via set_tdm_slot(). The patch also removes an obsolete comment of the dir parameter. Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-