summaryrefslogtreecommitdiffstats
path: root/sound/soc/dwc/designware_i2s.c
Commit message (Collapse)AuthorAgeFilesLines
* ASoC: dwc: Ensure i2s_reg_comp{1,2} is always initialisedJon Medhurst (Tixy)2016-02-021-3/+2
| | | | | | | | | | In the case that the driver is configured from device-tree i2s_reg_comp1 and i2s_reg_comp2 aren't initialised, breaking the driver. Fix this by unconditionally setting these values before checking for quirks. Fixes: a242cac1d3aa ("ASoC: dwc: add quirk to override COMP_PARAM_1 register") Signed-off-by: Jon Medhurst <tixy@linaro.org> Signed-off-by: Mark Brown <broonie@kernel.org>
* ASoC: dwc: add quirk to override COMP_PARAM_1 registerMaruthi Srinivas Bayyavarapu2016-01-101-0/+4
| | | | | | | | | | DWC for capture in ACP 2.x IP reports playback and capture capabilities though it supports only capture. Added a quirk to override default value to represent capture capability only. Signed-off-by: Maruthi Bayyavarapu <maruthi.bayyavarapu@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Mark Brown <broonie@kernel.org>
* ASoC: dwc: reconfigure dwc in 'resume' from 'suspend'Maruthi Srinivas Bayyavarapu2015-12-071-27/+43
| | | | | | | | | | | DWC IP can be powered off during system suspend in some platforms. After system is resumed, dwc needs to be programmed again to continue audio use case. Signed-off-by: Maruthi Bayyavarapu <maruthi.bayyavarapu@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Mark Brown <broonie@kernel.org>
* ASoC: dwc: add quirk for different register offsetMaruthi Srinivas Bayyavarapu2015-12-071-3/+14
| | | | | | | | | | DWC in ACP 2.x IP has different offsets for I2S_COMP_PARAM_* registers. Added a quirk to support the same. Signed-off-by: Maruthi Bayyavarapu <maruthi.bayyavarapu@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Mark Brown <broonie@kernel.org>
* ASoC: dwc: add runtime suspend/resume functionalityMaruthi Srinivas Bayyavarapu2015-12-071-1/+25
| | | | | | | | | | When DW controller is in master mode, it can disable/enable clock during the device runtime suspend/resume sequence. Signed-off-by: Maruthi Bayyavarapu <maruthi.bayyavarapu@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Mark Brown <broonie@kernel.org>
*-. Merge remote-tracking branches 'asoc/topic/dwc', 'asoc/topic/es8328', ↵Mark Brown2015-10-261-37/+86
|\ \ | | | | | | | | | 'asoc/topic/fsl' and 'asoc/topic/fsl-card' into asoc-next
| * | ASoC: dwc: add check for master/slave formatMaruthi Srinivas Bayyavarapu2015-10-241-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | DW i2s controller's master/slave config can be read from a read-only register. Machine driver can try to set a master/slave format on cpu-dai using 'set_fmt' of dai ops. A check is added to verify codec is master when dwc is slave and vice-versa. Signed-off-by: Maruthi Bayyavarapu <maruthi.bayyavarapu@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Mark Brown <broonie@kernel.org>
| * | ASoC: dwc: support dw i2s in slave modeMaruthi Srinivas Bayyavarapu2015-10-051-37/+55
| |/ | | | | | | | | | | | | | | | | | | dw i2s controller can work in slave mode, codec being master. dw i2s is made to support master/slave operation, by reading dwc register. Signed-off-by: Maruthi Bayyavarapu <maruthi.bayyavarapu@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Mark Brown <broonie@kernel.org>
* | ASoC: dwc: fix dma stop transferring issueyitian2015-10-021-3/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Designware I2S uses tx empty and rx available signals as the DMA handshaking signals. during music playing, if XRUN occurs, i2s_stop() function will be executed and both tx and rx irq are masked, when music continues to be played, i2s_start() is executed but both tx and rx irq are not unmasked which cause I2S stop sending DMA handshaking signal to DMA controller, and it finally causes music playing will be stopped once XRUN occurs for the first time. [On list discussion suggests this may be partly a race condition on slow systems -- broonie] Signed-off-by: Yitian Bu <yitian.bu@tangramtek.com> Signed-off-by: Mark Brown <broonie@kernel.org>
* | ASoC: dwc: correct irq clear methodYitian Bu2015-10-021-2/+2
|/ | | | | | | | | from Designware I2S datasheet, tx/rx XRUN irq is cleared by reading register TOR/ROR, rather than by writing into them. Signed-off-by: Yitian Bu <yitian.bu@tangramtek.com> Signed-off-by: Mark Brown <broonie@kernel.org> Cc: stable@vger.kernel.org
*-. Merge remote-tracking branches 'asoc/topic/doc', 'asoc/topic/dwc', ↵Mark Brown2015-02-041-69/+242
|\ \ | | | | | | | | | 'asoc/topic/fsi', 'asoc/topic/fsl' and 'asoc/topic/fsl-asrc' into asoc-next
| | * ASoC: dwc: Remove unnecessary conditional compilationAndrew Jackson2015-01-281-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | of_match_ptr is already conditionally compiled based on CONFIG_OF so further conditional compilation is not required. Remove conditional compilation surrounding of_match_ptr. Signed-off-by: Andrew Jackson <Andrew.Jackson@arm.com> Signed-off-by: Mark Brown <broonie@kernel.org>
| | * ASoC: dwc: Add devicetree support for Designware I2SAndrew Jackson2014-12-301-43/+150
| | | | | | | | | | | | | | | | | | | | | | | | Allow the driver to be configured through a device tree rather than platform data. Signed-off-by: Andrew Jackson <Andrew.Jackson@arm.com> Signed-off-by: Mark Brown <broonie@kernel.org>
| | * ASoC: dwc: Register components with managed interfaceAndrew Jackson2014-12-301-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Register SOC component using managed interface to simplify error handling and future introduction of device tree. Signed-off-by: Andrew Jackson <Andrew.Jackson@arm.com> Signed-off-by: Mark Brown <broonie@kernel.org>
| | * ASoC: dwc: Prepare clock before useAndrew Jackson2014-12-301-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some I2S clocks may require some time to get the clock ready for operation and so need to be prepared before they are enabled. So, prepare the clock as well as enabling it, but combine the two through clk_prepare_enable. Signed-off-by: Andrew Jackson <Andrew.Jackson@arm.com> Signed-off-by: Mark Brown <broonie@kernel.org>
| | * ASoC: dwc: Read I2S block configuration from registersAndrew Jackson2014-12-301-10/+86
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The I2S block provides component parameter registers which describe how the block is instantiated. Use these registers to extract the block's configuration rather than relying on platform data. Signed-off-by: Andrew Jackson <Andrew.Jackson@arm.com> Signed-off-by: Mark Brown <broonie@kernel.org>
| | * ASoC: dwc: Switch to managed clock resourceAndrew Jackson2014-12-301-8/+2
| | | | | | | | | | | | | | | | | | | | | | | | Simplify error handling during probe by using managed clock resources. Signed-off-by: Andrew Jackson <Andrew.Jackson@arm.com> Signed-off-by: Mark Brown <broonie@kernel.org>
| | * ASoC: dwc: Reorder code in preparation for DT supportAndrew Jackson2014-12-221-34/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | Move code that configures the DAI and DMA into a separate function. This reduces the size of the dw_i2s_probe function and will make it easier to add support for device tree to the driver. Signed-off-by: Andrew Jackson <Andrew.Jackson@arm.com> Signed-off-by: Mark Brown <broonie@kernel.org>
| | * ASoC: dwc: Remove unnecessary debug messages and testsAndrew Jackson2014-12-221-11/+2
| |/ | | | | | | | | | | | | | | The devm_XXX allocation functions print a message on failure, so additional messages are not required. Signed-off-by: Andrew Jackson <Andrew.Jackson@arm.com> Signed-off-by: Mark Brown <broonie@kernel.org>
* | ASoC: dwc: Iterate over all channelsAndrew Jackson2014-12-221-19/+16
| | | | | | | | | | | | | | | | | | | | The Designware core can be configured with up to four stereo channels. Each stereo channel is individually configured so, when the driver's hw_params call is made, each requested stereo channel has to be programmed. Signed-off-by: Andrew Jackson <Andrew.Jackson@arm.com> Signed-off-by: Mark Brown <broonie@kernel.org>
* | ASoC: dwc: Ensure FIFOs are flushed to prevent channel swapAndrew Jackson2014-12-221-0/+14
|/ | | | | | | | | | Flush the FIFOs when the stream is prepared for use. This avoids an inadvertent swapping of the left/right channels if the FIFOs are not empty at startup. Signed-off-by: Andrew Jackson <Andrew.Jackson@arm.com> Signed-off-by: Mark Brown <broonie@kernel.org> Cc: stable@vger.kernel.org
* Merge tag 'driver-core-3.19-rc1' of ↵Linus Torvalds2014-12-141-1/+0
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core Pull driver core update from Greg KH: "Here's the set of driver core patches for 3.19-rc1. They are dominated by the removal of the .owner field in platform drivers. They touch a lot of files, but they are "simple" changes, just removing a line in a structure. Other than that, a few minor driver core and debugfs changes. There are some ath9k patches coming in through this tree that have been acked by the wireless maintainers as they relied on the debugfs changes. Everything has been in linux-next for a while" * tag 'driver-core-3.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (324 commits) Revert "ath: ath9k: use debugfs_create_devm_seqfile() helper for seq_file entries" fs: debugfs: add forward declaration for struct device type firmware class: Deletion of an unnecessary check before the function call "vunmap" firmware loader: fix hung task warning dump devcoredump: provide a one-way disable function device: Add dev_<level>_once variants ath: ath9k: use debugfs_create_devm_seqfile() helper for seq_file entries ath: use seq_file api for ath9k debugfs files debugfs: add helper function to create device related seq_file drivers/base: cacheinfo: remove noisy error boot message Revert "core: platform: add warning if driver has no owner" drivers: base: support cpu cache information interface to userspace via sysfs drivers: base: add cpu_device_create to support per-cpu devices topology: replace custom attribute macros with standard DEVICE_ATTR* cpumask: factor out show_cpumap into separate helper function driver core: Fix unbalanced device reference in drivers_probe driver core: fix race with userland in device_add() sysfs/kernfs: make read requests on pre-alloc files use the buffer. sysfs/kernfs: allow attributes to request write buffer be pre-allocated. fs: sysfs: return EGBIG on write if offset is larger than file size ...
| * ASoC: dwc: drop owner assignment from platform_driversWolfram Sang2014-10-201-1/+0
| | | | | | | | | | | | | | A platform_driver does not need to set an owner, it will be populated by the driver core. Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
* | ASoC: dwc: Allocate resources with devm_ioremap_resourceAndrew Jackson2014-12-031-27/+19
|/ | | | | | | | Prepare for the introduction of device-tree support by re-ordering some of the allocations and using devm_iomap_resource to simplify IO mapping. Signed-off-by: Andrew Jackson <Andrew.Jackson@arm.com> Signed-off-by: Mark Brown <broonie@kernel.org>
* ASoC: Update email id of the authorRajeev Kumar2014-09-091-1/+1
| | | | | | | I moved from ST Microelectronics and so updating email-id to personal one. Signed-off-by: Rajeev Kumar <rajeevkumar.linux@gmail.com> Signed-off-by: Mark Brown <broonie@linaro.org>
* ASoC: dwc: Update email id of the authorRajeev Kumar2014-09-061-1/+1
| | | | | | | | I moved from ST Microelectronics and the email-id no longer exists. Update email-id to personal one, Signed-off-by: Rajeev Kumar <rajeevkumar.linux@gmail.com> Signed-off-by: Mark Brown <broonie@kernel.org>
* ASoC: designware_i2s: Remove unnecessary dev_set_drvdata()Fabio Estevam2013-08-291-4/+1
| | | | | | | | Driver core clears the driver data to NULL after device_release or on probe failure, so just remove it from here. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Signed-off-by: Mark Brown <broonie@linaro.org>
* ASoC: dwc: Folder path correction in file header.Rajeev Kumar2013-06-121-1/+1
| | | | | | | Folder path correction in file header. Signed-off-by: Rajeev Kumar <rajeevk-dlh.kumar@st.com> Signed-off-by: Mark Brown <broonie@linaro.org>
* ASoC: dwc: debug message correction.Rajeev Kumar2013-06-121-2/+2
| | | | | | | Debug message correction. Signed-off-by: Rajeev Kumar <rajeevk-dlh.kumar@st.com> Signed-off-by: Mark Brown <broonie@linaro.org>
* ASoC: switch over to use snd_soc_register_component() on dw i2sKuninori Morimoto2013-03-261-2/+7
| | | | | Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* ASoC: dwc: fix support for more than two channelsDan Carpenter2013-01-261-0/+4
| | | | | | | | | | | | | | | | There were missing break statements so everything used TWO_CHANNEL_SUPPORT. Also I added a return statement to silence a GCC warning: sound/soc/dwc/designware_i2s.c: In function ‘dw_i2s_hw_params’: sound/soc/dwc/designware_i2s.c:236:32: warning: ‘ch_reg’ may be used uninitialized in this function [-Wmaybe-uninitialized] Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Acked-by: Rajeev Kumar <rajeev-dlh.kumar@st.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* ASoC: dwc: Staticise non-exported i2s_start()Mark Brown2012-07-041-1/+2
| | | | Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* ASoC: dwc: Add missing __iomem annotationsMark Brown2012-06-281-2/+2
| | | | | | Otherwise sparse gets very upset with us. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* ASoC: Add support for synopsys i2s controller as per ASoC framework.Rajeev Kumar2012-06-221-0/+454
This patch add support for synopsys I2S controller as per the ASoC framework. Signed-off-by: Rajeev Kumar <rajeev-dlh.kumar@st.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>