- 21 2月, 2018 11 次提交
-
-
由 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>
-
- 15 8月, 2017 1 次提交
-
-
由 Markus Elfring 提交于
Omit an extra message for a memory allocation failure in these functions. This issue was detected by using the Coccinelle software. Link: http://events.linuxfoundation.org/sites/events/files/slides/LCJ16-Refactor_Strings-WSang_0.pdfSigned-off-by: NMarkus Elfring <elfring@users.sourceforge.net> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 11 4月, 2017 2 次提交
-
-
由 Fabio Estevam 提交于
Code can be simplified by using the standard tolower() funtion. Signed-off-by: NFabio Estevam <fabio.estevam@nxp.com> Acked-by: NTimur Tabi <timur@tabi.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Fabio Estevam 提交于
The comment for the FSLSSI_I2S_RATES definition states that the driver currently only supports I2S slave mode, which is no longer correct. As FSLSSI_I2S_RATES is the same as the standard SNDRV_PCM_RATE_CONTINUOUS, just remove its definition and its comments to make the code simpler. Signed-off-by: NFabio Estevam <fabio.estevam@nxp.com> Acked-by: NTimur Tabi <timur@tabi.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 05 1月, 2017 1 次提交
-
-
由 Caleb Crome 提交于
The fsl_ssi fifo watermark is by default set to 2 free spaces (i.e. activate DMA on FIFO when only 2 spaces are left.) This means the DMA must service the fifo within 2 audio samples, which is just not enough time for many use cases with high data rate. In many configurations the audio channel slips (causing l/r swap in stereo configurations, or channel slipping in multi-channel configurations). This patch gives more breathing room and allows the SSI to operate reliably by changing the fifio refill watermark to 8. There is no change in behavior for older chips (with an 8-deep fifo). Only the newer chips with a 15-deep fifo get the new behavior. I suspect a new fifo depth setting could be optimized on the older chips too, but I have not tested. Signed-off-by: NCaleb Crome <caleb@crome.org> Reviewed-by: NFabio Estevam <fabio.estevam@nxp.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 30 9月, 2016 1 次提交
-
-
由 Mark Brown 提交于
The recent series of changes to the caching in the SSI driver have caused a number of problems to appear in some test systems. These are still not fully understood but we're coming up to the merge window so for now let's revert commit 7de2763d (ASoC: fsl_ssi: Remove .num_reg_defaults_raw from regmap_config) as backing that out seems to resolve the problem on affected systems. Reported-by: NMaciej S. Szmigiero" <mail@maciej.szmigiero.name> Signed-off-by: NMark Brown <broonie@kernel.org> Reviewed-by: NMarek Vasut <marex@denx.de>
-
- 21 9月, 2016 2 次提交
-
-
由 Marek Vasut 提交于
This driver provides no .reg_defaults_raw in regmap_config, so the .num_reg_defaults_raw is useless, and, in fact harmful. It triggers kernel crash in regmap_init which tries to access the register defaults. Signed-off-by: NMarek Vasut <marex@denx.de> Acked-by: NNicolin Chen <nicoleotsuka@gmail.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Marek Vasut 提交于
Same as commit ce492b3b Subject: drm/fsl-dcu: use flat regmap cache Using flat regmap cache instead of RB-tree to avoid the following lockdep warning on driver load: WARNING: CPU: 0 PID: 1 at kernel/locking/lockdep.c:2871 lockdep_trace_alloc+0x104/0x128 DEBUG_LOCKS_WARN_ON(irqs_disabled_flags(flags)) The RB-tree regmap cache needs to allocate new space on first writes. However, allocations in an atomic context (e.g. when a spinlock is held) are not allowed. The function regmap_write calls map->lock, which acquires a spinlock in the fast_io case. Since the driver uses MMIO, the regmap bus of type regmap_mmio is being used which has fast_io set to true. Signed-off-by: NMarek Vasut <marex@denx.de> Acked-by: NNicolin Chen <nicoleotsuka@gmail.com> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 30 6月, 2016 1 次提交
-
-
由 Alexander Shiyan 提交于
The i.MX51 datasheet says: Chapter 56.1.2.4 I2S Mode ... When I2S modes are entered (I2S master (01) or I2S slave (10)), the following settings are recommended: ... - TX Frame Rate should be 2 i.e. (STCCR[12:8] = 1) - RX Frame Rate should be 2 i.e. (SRCCR[12:8] = 1) Chapter 56.3.3.12 SSI Transmit and Receive Clock Control Registers (STCCR & SRCCR) ... Bits 12-8 DC4-DC0 Frame Rate Divider Control. These bits are used to control the divide ratio for the programmable frame rate dividers. The divide ratio works on the word clock. In Normal mode, this ratio determines the word transfer rate. In Network mode, this ratio sets the number of words per frame. The divide ratio ranges from 1 to 32 in Normal mode and from 2 to 32 in Network mode. In Normal mode, a divide ratio of 1 (DC=00000) provides continuous periodic data word transfer. A bit-length frame sync must be used in this case. Function fsl_ssi_hw_params() setup Normal mode for MONO output, so with DC=0, SSI enters to continuous periodic data word transfer. To fix this, setup DC for any I2S mode. Patch has tested on custom board based on Digi CCMX-51 module (i.MX51). Signed-off-by: NAlexander Shiyan <shc_work@mail.ru> Signed-off-by: NMark Brown <broonie@kernel.org>
-
- 13 5月, 2016 2 次提交
-
-
由 Arnaud Mouiche 提交于
Happened when the Playback (or Capture) is running continuously and Capture (or Playback) is restarted (xrun, manual stop/start...) Since the RX (or TX) FIFO are only reset when the whole SSI is disabled, pending samples from previous capture (or playback) session may still be present. They must be erased to not introduce channel slipping. FIFO Clear register fields are documented in IMX51, IMX35 reference manual. They are not documented in IMX50 or IMX6 RM, despite they are working as expected on IMX6SL and IMX6solo. Signed-off-by: NArnaud Mouiche <arnaud.mouiche@invoxia.com> Reviewed-by: NFabio Estevam <fabio.estevam@nxp.com> Tested-by: NCaleb Crome <caleb@crome.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-
由 Arnaud Mouiche 提交于
Previously, SCR.SSIEN and SCR.TE were enabled at once if no capture stream was also running. This may not give a chance for the DMA to write the first sample in TX FIFO before the streaming starts on the PCM bus, inserting void samples first. Those void samples are then responsible for slipping the channels. Signed-off-by: NArnaud Mouiche <arnaud.mouiche@invoxia.com> Reviewed-by: NFabio Estevam <fabio.estevam@nxp.com> Tested-by: NCaleb Crome <caleb@crome.org> Signed-off-by: NMark Brown <broonie@kernel.org>
-