]> Git Repo - linux.git/log
linux.git
10 years agoASoC: sirf-audio-codec: Simplify the new bitmask value in regmap_update_bits
Axel Lin [Thu, 8 May 2014 08:29:49 +0000 (16:29 +0800)]
ASoC: sirf-audio-codec: Simplify the new bitmask value in regmap_update_bits

Having the binary ones complement operator in the new bitmak value makes the
code hard to read.

Signed-off-by: Axel Lin <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
10 years agoALSA: hda - Pop noises fix for XPS13 9333
Gabriele Mazzotta [Mon, 26 May 2014 15:11:46 +0000 (17:11 +0200)]
ALSA: hda - Pop noises fix for XPS13 9333

When headphones are plugged in, force AFG and node 0x02
("Headphone Playback Volume") to D0 to avoid pop noises.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=76611
Signed-off-by: Gabriele Mazzotta <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoASoC: davinci-evm: Replace instances of rtd->codec->card with rtd->card
Lars-Peter Clausen [Mon, 19 May 2014 09:41:47 +0000 (11:41 +0200)]
ASoC: davinci-evm: Replace instances of rtd->codec->card with rtd->card

No need to go via the CODEC to get a pointer to the card. This will help to
eventually remove the card field from the snd_soc_codec struct.

Signed-off-by: Lars-Peter Clausen <[email protected]>
Acked-by: Peter Ujfalusi <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
10 years agoASoC: max98095: Add master clock handling
Tushar Behera [Mon, 26 May 2014 08:28:22 +0000 (13:58 +0530)]
ASoC: max98095: Add master clock handling

If master clock is provided through device tree, then update
the master clock frequency during set_sysclk.

Documentation has been updated to reflect the change.

Signed-off-by: Tushar Behera <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
10 years agoASoC: max98090: Add master clock handling
Tushar Behera [Mon, 26 May 2014 08:28:21 +0000 (13:58 +0530)]
ASoC: max98090: Add master clock handling

If master clock is provided through device tree, then update
the master clock frequency during set_sysclk.

Documentation has been updated to reflect the change.

Signed-off-by: Tushar Behera <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
10 years agoASoC: alc5623: Fix Kconfig dependency
Takashi Iwai [Mon, 26 May 2014 14:08:37 +0000 (16:08 +0200)]
ASoC: alc5623: Fix Kconfig dependency

Add "depends on I2C" to shut up the build errors from randconfig.

Signed-off-by: Takashi Iwai <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
10 years agoASoC: omap-pcm: Move omap-pcm under include/sound
Jyri Sarha [Mon, 26 May 2014 08:51:14 +0000 (11:51 +0300)]
ASoC: omap-pcm: Move omap-pcm under include/sound

Make including the omap-pcm.h outside sound/soc/omap more convenient.

Signed-off-by: Jyri Sarha <[email protected]>
Acked-by: Peter Ujfalusi <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
10 years agoMerge branch 'topic/davinci' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie...
Mark Brown [Mon, 26 May 2014 14:31:40 +0000 (15:31 +0100)]
Merge branch 'topic/davinci' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-omap

10 years agoASoC: jack: Add support for GPIO descriptor defined jack pins
Jarkko Nikula [Mon, 26 May 2014 11:34:37 +0000 (14:34 +0300)]
ASoC: jack: Add support for GPIO descriptor defined jack pins

Allow jack GPIO pins be defined also using GPIO descriptor-based interface
in addition to legacy GPIO numbers. This is done by adding two new fields to
struct snd_soc_jack_gpio: idx and gpiod_dev.

Legacy GPIO numbers are used only when GPIO consumer device gpiod_dev is
NULL and otherwise idx is the descriptor index within the GPIO consumer
device.

New function snd_soc_jack_add_gpiods() is added for typical cases where all
GPIO descriptor jack pins belong to same GPIO consumer device. For other
cases the caller must set the gpiod_dev in struct snd_soc_jack_gpio before
calling snd_soc_jack_add_gpios().

Signed-off-by: Jarkko Nikula <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
10 years agoASoC: jack: Basic GPIO descriptor conversion
Jarkko Nikula [Mon, 26 May 2014 11:34:36 +0000 (14:34 +0300)]
ASoC: jack: Basic GPIO descriptor conversion

This patch does basic GPIO descriptor conversion to soc-jack. Even the GPIOs
are still passed and requested using legacy GPIO numbers the driver
internals are converted to use GPIO descriptor API.

Motivation for this is to prepare soc-jack so that it will allow registering
jack GPIO pins using both GPIO descriptors and legacy GPIO numbers.

Signed-off-by: Jarkko Nikula <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
10 years agoASoC: pxa: pxa-ssp: Terminate of match table
Stephen Boyd [Sat, 24 May 2014 00:16:49 +0000 (17:16 -0700)]
ASoC: pxa: pxa-ssp: Terminate of match table

Failure to terminate this match table can lead to boot failures
depending on where the compiler places the match table.

Signed-off-by: Stephen Boyd <[email protected]>
Acked-by: Daniel Mack <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
10 years agoASoC: rsnd: add rsnd_gen_dma_addr() for DMAC addr
Kuninori Morimoto [Fri, 23 May 2014 06:25:54 +0000 (23:25 -0700)]
ASoC: rsnd: add rsnd_gen_dma_addr() for DMAC addr

The DMAC src/dst addr needs to be set from driver when DT case.
(It was set from SoC/DMAEngine code when non-DT case)
This patch adds rsnd_gen_dma_addr() to set DMAC src/dst addr.

Signed-off-by: Kuninori Morimoto <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
10 years agoASoC: rsnd: care DMA slave channel name for DT
Kuninori Morimoto [Fri, 23 May 2014 06:25:49 +0000 (23:25 -0700)]
ASoC: rsnd: care DMA slave channel name for DT

Renesas sound driver is supporting to use DMAEngine.
But, DMA slave channel name "tx", "rx" is not enough
in DT case.
Becuase, it has many ports and path combination.

This patch adds rsnd_dma_of_name() to find
DMA channel name, for example
memory to SSI0 is "mem_ssi0",
SSI0 to memory is "ssi0_mem",
SSI0 to SRC0   is "ssi0_src0",
SRC0 to SSI0   is "src0_ssi0",
SRC0 to DVC0   is "src0_dvc0"...

Renesas sound want to use PIO transfer mode for some reasons.
It will be PIO tranfer mode if device node doesn't have
DMA settings.

Signed-off-by: Kuninori Morimoto <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
10 years agoASoC: rsnd: module name is unified
Kuninori Morimoto [Fri, 23 May 2014 06:25:43 +0000 (23:25 -0700)]
ASoC: rsnd: module name is unified

Renesas sound driver uses many modules (= SSI/SRC/DVC),
and each module had own name.
But, each module name can be used as several purpose,
like clock name, DMA name etc...
This patch uses common name for each module.

Signed-off-by: Kuninori Morimoto <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
10 years agoASoC: rsnd: remove rsnd_src_non_ops
Kuninori Morimoto [Fri, 23 May 2014 06:25:37 +0000 (23:25 -0700)]
ASoC: rsnd: remove rsnd_src_non_ops

Renesas sound driver is supporting Gen1/Gen2.
SRC probe can return error if it was unknown
generation.
Now, rsnd_src_non_ops is not needed.

Signed-off-by: Kuninori Morimoto <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
10 years agoASoC: rsnd: save platform_device instead of device
Kuninori Morimoto [Fri, 23 May 2014 06:25:30 +0000 (23:25 -0700)]
ASoC: rsnd: save platform_device instead of device

DT DMA support needs struct platform_device pointer,
and it can get struct device pointer from platform_device.
Save platform_device instead of device.

Signed-off-by: Kuninori Morimoto <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
10 years agoASoC: rsnd: DT node clean up by using the of_node_put()
Kuninori Morimoto [Fri, 23 May 2014 06:24:59 +0000 (23:24 -0700)]
ASoC: rsnd: DT node clean up by using the of_node_put()

Driver needs to call of_node_put() after of_get_chile_by_name()

Signed-off-by: Kuninori Morimoto <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
10 years agoASoC: tegra: free jack GPIOs before the sound card is freed
Stephen Warren [Thu, 22 May 2014 22:14:53 +0000 (16:14 -0600)]
ASoC: tegra: free jack GPIOs before the sound card is freed

snd_soc_jack_add_gpios() schedules a work queue item to poll the GPIO to
generate an initial jack status report. If sound card initialization
fails, that work item needs to be cancelled, so it doesn't run after the
card has been freed. Specifically, freeing the card calls
snd_jack_dev_free() which calls snd_jack_dev_disconnect() which sets
jack->input_dev = NULL, and input_dev is used by snd_jack_report(), which
is called from the work queue item.

snd_soc_jack_free_gpios() cancels the work item. The Tegra ASoC machine
drivers do call this function in the platform driver remove() callback.
However, this happens after the sound card is freed, at least when the
card is freed due to errors late during snd_soc_instantiate_card(). This
leaves a window where the work item can execute after the card is freed.
In next-20140522, sound card initialization does fail for unrelated
reasons, and hits the problem described above.

To solve this, fix the Tegra ASoC machine drivers to clean up the Jack
GPIOs during the snd_soc_card's .remove() callback, which is executed
before the overall card object is freed. also, gGuard the cleanup call
based on whether we actually setup up the GPIOs in the first place.
Ideally, we'd do the cleanup in a struct snd_soc_dai_link .fini/remove
function to match where the GPIOs get set up. However, there is no such
callback.

This change fixes all Tegra machine drivers. By code inspection, I
believe some non-Tegra machine drivers have the same issue. I'll send a
patch for that separately, once this is reviewed.

Signed-off-by: Stephen Warren <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
10 years agoASoC: Intel: avoid format string leak to thread name
Kees Cook [Thu, 22 May 2014 18:43:55 +0000 (11:43 -0700)]
ASoC: Intel: avoid format string leak to thread name

This makes sure a format string can never get processed into the worker
thread name from the device name.

Signed-off-by: Kees Cook <[email protected]>
Acked-by: Jarkko Nikula <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
10 years agoASoC: simple-card: Support setting mclk via a fixed factor
Andrew Lunn [Thu, 22 May 2014 15:31:49 +0000 (17:31 +0200)]
ASoC: simple-card: Support setting mclk via a fixed factor

Some platforms require that the codecs mclk is a fixed multiplication
factor of the audio stream rate. Add a optional property to the
binding to hold this factor and implement a hw_params() function to
make use of it.

Signed-off-by: Andrew Lunn <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
10 years agoASoC: max98090: Add NI/MI values for user pclk 19.2 MHz
Chen Zhen [Thu, 22 May 2014 11:21:43 +0000 (13:21 +0200)]
ASoC: max98090: Add NI/MI values for user pclk 19.2 MHz

This patch adds the clock divisor and multiplier NI, MI values for audio
sampling frequencies 44100 and 48000 Hz and PCLK 19.2 MHz. This is useful
for the Odroid X2/U2 boards when the codec works in master mode and its
MCLK clock is fed from the I2S CDCLK output.

Signed-off-by: Chen Zhen <[email protected]>
[[email protected]: edited the commit description]
Signed-off-by: Sylwester Nawrocki <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
10 years agoASoC: fsl_ssi: Add suspend/resume support
Fabio Estevam [Fri, 23 May 2014 05:38:56 +0000 (02:38 -0300)]
ASoC: fsl_ssi: Add suspend/resume support

Doing a suspend/resume sequence while playing an audio track in the backgroung
causes broken audio right after resume:

root@freescale /$ aplay clarinet.wav &

root@freescale /home$ Playing WAVE 'clarinet.wav' : Signed 16 bit Little Endian,
 Rate 44100 Hz, Mono

root@freescale /home$ echo mem > /sys/power/state
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.002 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.002 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
PM: suspend of devices complete after 37.082 msecs
PM: suspend devices took 0.040 seconds
PM: late suspend of devices complete after 4.234 msecs
PM: noirq suspend of devices complete after 4.618 msecs
Disabling non-boot CPUs ...
PM: noirq resume of devices complete after 4.013 msecs
PM: early resume of devices complete after 4.000 msecs
PM: resume of devices complete after 68.907 msecs
PM: resume devices took 0.070 seconds
Restarting tasks ... Suspended. Trying resume. Failed. Restarting stream. Done.
Suspended. Trying resume. Failed. Restarting stream. Done.
Suspended. Trying resume. Failed. Restarting stream. Done.
Suspended. Trying resume. Failed. Restarting stream. Done.
Suspended. Trying resume. Failed. Restarting stream. Done.
Suspended. Trying resume. Failed. Restarting stream. Done.
Suspended. Trying resume. Failed. Restarting stream. Done.
....

Add SNDRV_PCM_TRIGGER_RESUME/SUSPEND cases so that we can gracefully handle
system suspend/resume.

Signed-off-by: Fabio Estevam <[email protected]>
Acked-by: Shawn Guo <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
10 years agoALSA: firewire/bebob: Add a workaround for M-Audio special Firewire series
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:30 +0000 (22:45 +0900)]
ALSA: firewire/bebob: Add a workaround for M-Audio special Firewire series

In post commit, a quirk of this firmware about transactions is reported.
This commit apply a workaround for this quirk.

They often fail transactions due to gap_count mismatch. This state is changed
by generating bus reset.

The fw_schedule_bus_reset() is an exported symbol in firewire-core. But there
are no header for public. This commit moves its prototype from
drivers/firewire/core.h to include/linux/firewire.h.

This mismatch still affects bus management before generating this bus reset.
It still takes a time to call driver's probe() because transactions are still
often failed.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: bebob: Send a cue to load firmware for M-Audio Firewire series
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:29 +0000 (22:45 +0900)]
ALSA: bebob: Send a cue to load firmware for M-Audio Firewire series

Just powering on, these devices below wait to download firmware.
 - Firewire Audiophile
 - Firewire 410
 - Firewire 1814
 - ProjectMix I/O

But firmware version 5058 or later, flash memory in the device stores the
firmware. So this driver can enable these devices by sending a certain cue to
load the firmware.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: bebob: Add a quirk of data blocks for MIDI messages for some M-Audio devices
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:28 +0000 (22:45 +0900)]
ALSA: bebob: Add a quirk of data blocks for MIDI messages for some M-Audio devices

The firmwares for M-Audio Firewire 410/1814 and ProjectMix I/O has a quirk to
ignore MIDI messages in data blocks more than 8. This commit uses a flag which
Fireworks uses for a similar quirk.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: bebob/firewire-lib: Add a quirk of wrong dbc in empty packet for M-Audio specia...
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:27 +0000 (22:45 +0900)]
ALSA: bebob/firewire-lib: Add a quirk of wrong dbc in empty packet for M-Audio special Firewire series

M-Audio Firewire 1814 has a quirk, ProjectMix I/O also has. They transmit
empty packet with wrong value of dbc incremented by 8 at high sampling rate.
According to IEC 61883-1, this value should be the same as the one in
previous packet.

This commit adds a flag named as CIP_EMPTY_HAS_WRONG_DBC. With flag, the value
of dbc in empty packet is overwittern by an expected value.

This is an example of this quirk:
CIP Header 0 CIP Header 1 Payload size
010D0000 9004F759 210
010D0010 90040B59 210
010D0020 90042359 210
01020028 9004FFFF 2  <-
010D0030 90043759 210
010D0040 90044B59 210
010D0050 90046359 210
01020058 9004FFFF 2  <-
010D0060 90047759 210
010D0070 90048B59 210
010D0080 9004A359 210
01020088 9004FFFF 2  <-
010D0090 9004B759 210
010D00A0 9004CB59 210
010D00B0 9004E359 210
010200B8 9004FFFF 2  <-
010D00C0 9004F759 210
010D00D0 90040B59 210
010D00E0 90042359 210

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: bebob: Add support for M-Audio special Firewire series
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:26 +0000 (22:45 +0900)]
ALSA: bebob: Add support for M-Audio special Firewire series

This commit allows this driver to support some models which M-Audio produces
with DM1000 but its firmware is special. They are:
 - Firewire 1814
 - ProjectMix I/O

They have heavily customized firmware. The usual operations can't be applied to
them. For this reason, this commit adds a model specific member to 'struct
snd_bebob' and some model specific functions. Some parameters are write-only so
this commit also adds control interface for applications to set them.

M-Audio special firmware quirks:
 - Just after powering on, they wait to download firmware. This state is
   changed when receiving cue. Then bus reset is generated and the device is
   recognized as a different model with the uploaded firmware.
 - They don't respond against BridgeCo AV/C extension commands. So drivers
   can't get their stream formations and so on.
 - They do not start to transmit packets only by establishing connection but
   also by receiving SIGNAL FORMAT command.
 - After booting up, they often fail to send response against driver's request
   due to mismatch of gap_count.

This module don't support to upload firmware.

Tested-by: Darren Anderson <[email protected]> (ProjectMix I/O)
Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: bebob: Add support for M-Audio usual Firewire series
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:25 +0000 (22:45 +0900)]
ALSA: bebob: Add support for M-Audio usual Firewire series

This commit allows this driver to support some models which M-Audio produces
with DM1000/DM1000E with usual firmware. They are:
 - Firewire 410
 - Firewire AudioPhile
 - Firewire Solo
 - Ozonic
 - NRV10
 - FirewireLightBridge

According to a person who worked in BridgeCo, some models are produced with
'Pre-BeBoB'. This means that these products were released before BeBoB was
officially produced, and later BeBoB specification was formed. So these models
have some quirks.

M-Audio usual firmware quirks:
 - Just after powering on, 'Firewire 410' waits to download firmware. This
   state is changed when receiving cue. Then bus reset is generated and the
   device is recognized as a different model with the uploaded firmware.
 - 'Firewire Audiophile' also waits to download firmware but its
   vendor id/model id is the same as the one after loading firmware.
 - The information of channel mapping for MIDI conformant data channel is
   invalid against BridgeCo specification.

This commit adds some codes for these quirks but don't support to upload
firmware.

This commit also adds specific operations to get metering information. The
metering information also includes status of clock synchronization if the model
supports to switch source of clock.

The specification of FirewireLightBridge is unknown. So in this time, normal
operations are applied for this model.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: bebob: Add support for Focusrite Saffire/SaffirePro series
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:24 +0000 (22:45 +0900)]
ALSA: bebob: Add support for Focusrite Saffire/SaffirePro series

This commit allows this driver to support all of models which Focusrite
produces with DM1000/BeBoB. They are:
 - Saffire
 - Saffire LE
 - SaffirePro 10 I/O
 - SaffirePro 26 I/O

This commit adds Focusrite specific operations:
1. Get source of clock
2. Get/Set sampling frequency
3. Get metering information

The driver uses these functionalities to read/write specific address by async
transaction.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: bebob: Add support for Yamaha GO series
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:23 +0000 (22:45 +0900)]
ALSA: bebob: Add support for Yamaha GO series

This commit allows this driver to support all of models which Yamaha produced
with DM1000/BeBoB. They are:
 - GO44
 - GO46

This commit adds Yamaha specific operations. To get source of clock, AV/C Audio
Subunit command is used.

I note that their appearances are similar to some models of TerraTec; 'Go44' is
similar to 'PHASE 24 FW' and 'GO46' is similar to 'PHASE X24 FW'. But their
combination of Audio/Music subunits is a bit different.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: bebob: Add support for Terratec PHASE, EWS series and Aureon
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:22 +0000 (22:45 +0900)]
ALSA: bebob: Add support for Terratec PHASE, EWS series and Aureon

This commit allows this driver to support all of models which Terratec produced
with DM1000/BeBoB. They are:
 - PHASE 24 FW
 - PHASE X24 FW
 - PHASE 88 Rack FW
 - EWS MIC2
 - EWS MIC4
 - Aureon 7.1 Firewire

For Phase series, this commit adds a Terratec specific operation. To get source
of clock. AV/C Audio Subunit command is used.

For EWS series and Aureon, this module uses normal operations.

Tested-by: Maximilian Engelhardt <[email protected]> (PHASE 24 FW)
Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: bebob: Prepare for device specific operations
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:21 +0000 (22:45 +0900)]
ALSA: bebob: Prepare for device specific operations

This commit is for some devices which have its own operations or quirks.

Many functionality should be implemented in user land. Then this commit adds
functionality related to stream such as sampling frequency or clock source. For
help to debug, this commit adds the functionality to get metering information
if it's available.

To help these functionalities, this commit adds some AV/C commands defined in
'AV/C Audio Subunit Specification (1394TA).

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: bebob: Add hwdep interface
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:20 +0000 (22:45 +0900)]
ALSA: bebob: Add hwdep interface

This interface is designed for mixer/control application. By using hwdep
interface, the application can get information about firewire node, can
lock/unlock kernel streaming and can get notification at starting/stopping
kernel streaming.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: bebob: Add PCM interface
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:19 +0000 (22:45 +0900)]
ALSA: bebob: Add PCM interface

This commit adds a functionality to capture/playback PCM samples.

When AMDTP stream is already running for PCM or the source of clock is not
internal, available sampling rate is limited at current one.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: bebob: Add MIDI interface
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:18 +0000 (22:45 +0900)]
ALSA: bebob: Add MIDI interface

This commit adds a functionality to capture/playback MIDI messages.

When no AMDTP streams are running, this module starts AMDTP stream at current
sampling rate for MIDI substream.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: bebob: Add proc interface for debugging purpose
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:17 +0000 (22:45 +0900)]
ALSA: bebob: Add proc interface for debugging purpose

This commit adds proc interface to get these information for debugging:
 - firmware information
 - stream formation
 - current clock source and sampling rate

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: bebob/firewire-lib: Add a quirk for discontinuity at bus reset
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:16 +0000 (22:45 +0900)]
ALSA: bebob/firewire-lib: Add a quirk for discontinuity at bus reset

Normal BeBoB firmware has a quirk. When receiving bus reset, it transmits
packets with discontinuous value in dbc field.

This causes two situation, one is to abort streaming by firewire-lib as a
result of detecting the discontinuity. Another is to call driver's .update()
because of bus reset. These two is generated independently. (The former
depends on isochronous stream and the latter depends on IEEE1394 bus driver.)

When BeBoB driver works with XRUN-recoverable applications, this situation
looks like stream_start_duplex() call followed by stream_update_duplex() call
because applications will call snd_pcm_prepare() immediately at XRUN.

To update connections and streams at first, this commit use completion. When
queueing error occurs, stream_start_duplex() is forced to wait maximum
1000msec. During this, when .update() is called, the completion is waken and
stream_start_duplex() is processed without breaking connections.

At bus reset, stream_start_duplex() shouldn't break/establish connections and
stream_update_duplex() should update connections because a caller of
fw_iso_resources_allocate() is responsible for calling
fw_iso_resources_update() on bus reset.

This commit also adds a flag, which has an effect to skip checking continuity
for first packet. This flag is useful for BeBoB quirk to start handling packets
during streaming.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: bebob: Add commands and connections/streams management
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:15 +0000 (22:45 +0900)]
ALSA: bebob: Add commands and connections/streams management

This commit adds management functionality for connections and streams.
BeBoB uses CMP to manage connections and uses AMDTP for streams.

This commit also adds some BridgeCo's AV/C extension commands. There are some
BridgeCo's AV/C extension commands but this commit just uses below commands
to get device's capability and status:

 1.Extended Plug Info commands
  - Plug Channel Position Specific Data
  - Plug Type Specific Data
  - Cluster(Section) Info Specific Data
  - Plug Input Specific Data
 2.Extended Stream Format Information commands
  - Extended Stream Format Information Command - List Request

For Extended Plug Info commands for Cluster Info Specific Data, I pick up
'section' instead of 'cluster' from document to prevent from misunderstanding
because 'cluster' is also used in IEC 61883-6.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: bebob: Add skelton for BeBoB based devices
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:14 +0000 (22:45 +0900)]
ALSA: bebob: Add skelton for BeBoB based devices

This commit adds a new driver for BeBoB based devices with no specific
operations. Currently this driver just create/remove card instance according
to callbacks.

BeBoB is 'BridgeCo enhanced Breakout Box'. This is installed to firewire
devices with DM1000/DM1100/DM1500 chipset. It gives common way for host
system to handle BeBoB based devices.

Current supported devices:
 - Edirol FA-66/FA-101
 - PreSonus FIREBOX/FIREPOD/FP10/Inspire1394
 - BridgeCo RDAudio1/Audio5
 - Mackie Onyx 1220/1620/1640 (Firewire I/O Card)
 - Mackie d.2 (Firewire Option)
 - Stanton FinalScratch 2 (ScratchAmp)
 - Tascam IF-FW DM
 - Behringer XENIX UFX 1204/1604
 - Behringer Digital Mixer X32 series (X-UF Card)
 - Apogee Rosetta 200/Rosetta 400 (X-FireWire card)
 - Apogee DA-16X/AD-16X/DD-16X (X-FireWire card)
 - Apogee Ensemble
 - ESI Quotafire610
 - AcousticReality eARMasterOne
 - CME MatrixKFW
 - Phonix Helix Board 12 MkII/18 MkII/24 MkII
 - Phonic Helix Board 12 Universal/18 Universal/24 Universal
 - Lynx Aurora 8/16 (LT-FW)
 - ICON FireXon
 - PrismSound Orpheus/ADA-8XR

Devices possible to be supported if identifying IDs:
 - Apogee Mini-Me Firewire/Mini-DAC Firewire
 - Behringer F-Control Audio 610/1616
 - Cakewalk Sonar Power Studio 66
 - CME UF400e
 - ESI Quotafire XL
 - Infrasonic DewX/Windy6
 - Mackie Digital X Bus x.200/400
 - Phonic Helix Board 12/18/24
 - Phonic FireFly 202/302
 - Rolf Spuler Firewire Guitar

Tested-by: David Henningsson <[email protected]>
Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: fireworks: Add command/response functionality into hwdep interface
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:13 +0000 (22:45 +0900)]
ALSA: fireworks: Add command/response functionality into hwdep interface

This commit adds two functionality for hwdep interface, adds two parameters for
this driver, add a node for proc interface.

To receive responses from devices, this driver already allocate own callback
into initial memory space in host controller. This means no one can allocate
its own callback to the address. So this driver must give a way for user
applications to receive responses.

This commit adds a functionality to receive responses via hwdep interface. The
application can receive responses to read from this interface. To achieve this,
this commit adds a buffer to queue responses. The default size of this buffer is
1024 bytes. This size can be changed to give preferrable size to
'resp_buf_size' parameter for this driver. The application should notice rest
of space in this buffer because this driver don't push responses when this
buffer has no space.

Additionaly, this commit adds a functionality to transmit commands via hwdep
interface. The application can transmit commands to write into this interface.
I note that the application can transmit one command at once, but can receive
as many responses as possible untill the user-buffer is full.

When using these interfaces, the application must keep maximum number of
sequence number in command within the number in firewire.h because this driver
uses this number to distinguish the response is against the command by the
application or this driver.

Usually responses against commands which the application transmits are pushed
into this buffer. But to enable 'resp_buf_debug' parameter for this driver, all
responses are pushed into the buffer. When using this mode, I reccomend to
expand the size of buffer.

Finally this commit adds a new node into proc interface to output status of the
buffer.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: fireworks: Add hwdep interface
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:12 +0000 (22:45 +0900)]
ALSA: fireworks: Add hwdep interface

This interface is designed for mixer/control application. To use hwdep
interface, the application can get information about firewire node, can
lock/unlock kernel streaming and can get notification at starting/stopping
kernel streaming.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: fireworks: Add PCM interface
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:11 +0000 (22:45 +0900)]
ALSA: fireworks: Add PCM interface

This commit adds a functionality to capture/playback PCM samples.

When AMDTP stream is already running for PCM or the source of clock is not
internal, available sampling rate is limited at current one.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: fireworks/firewire-lib: Add a quirk of data blocks for MIDI in out-stream
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:10 +0000 (22:45 +0900)]
ALSA: fireworks/firewire-lib: Add a quirk of data blocks for MIDI in out-stream

Fireworks has a quirk to ignore MIDI messages in data blocks more than 8.
This commit adds a flag for this quirk and codes to skip 8 or more data
blocks to transfer MIDI messages.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: fireworks: Add MIDI interface
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:09 +0000 (22:45 +0900)]
ALSA: fireworks: Add MIDI interface

This commit adds a functionality to capture/playback MIDI messages.

When no AMDTP streams are running, this driver starts AMDTP stream for MIDI
stream at current sampling rate.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: fireworks: Add proc interface for debugging purpose
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:08 +0000 (22:45 +0900)]
ALSA: fireworks: Add proc interface for debugging purpose

This commit adds proc interface to output infomation for debugging.
 - firmware information
 - sampling rate and clock source
 - physical metering (linear value)

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: fireworks/firewire-lib: Add a quirk to reset data block counter at bus reset
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:07 +0000 (22:45 +0900)]
ALSA: fireworks/firewire-lib: Add a quirk to reset data block counter at bus reset

Fireworks has a quirk to reset data block counter at bus reset.

This commit adds a flag of CIP_SKIP_DBC_ZERO_CHECK. This flag has an effect
to skip checking dbc continuity when dbc is zero.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: fireworks/firewire-lib: Add a quirk for fixed interval of reported dbc
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:06 +0000 (22:45 +0900)]
ALSA: fireworks/firewire-lib: Add a quirk for fixed interval of reported dbc

Fireworks firmware version 5.5 reports fix interval for dbc in each packet.

For example, AudioFire4:
CIP0     CIP1     Payload
00070000 900484FF 72
00070008 9004A8FF 72
00070008 90FFFFFF 02
00070010 9004D0FF 72
00070018 9004C4FF 72
00070020 9004E8FF 72
00070020 90FFFFFF 02
00070028 900410FE 72

The interval of each dbc should be 16 except for empty packet but it's still 8.

This commit adds a flag for this quirk and codes to refer to a fixed value.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: fireworks/firewire-lib: Add a quirk for wrong dbs in tx packets
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:05 +0000 (22:45 +0900)]
ALSA: fireworks/firewire-lib: Add a quirk for wrong dbs in tx packets

One of Fireworks firmware, named  as 'AudioFire9', seems to transmit
packets with wrong value of dbs. It's always 0x11 but actual size of
data block is different.

This commit adds a flag for this quirk and some codes to calculate
correct size.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: fireworks/firewire-lib: Add a quirk for the meaning of dbc
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:04 +0000 (22:45 +0900)]
ALSA: fireworks/firewire-lib: Add a quirk for the meaning of dbc

Fireworks has a quirk for the value of dbc field in transmitted packets.
For Fireworks, dbc means the end of events in current packet. This is out
of specification.

For example, AudioFire4:
CIP0        CIP1    Payload
01070092 90FFFFFF 02
0107009A 9001E17B 3A <-
010700A2 9001F6E5 3A
010700A2 90FFFFFF 02
010700AA 9001104F 3A <-
010700B2 900125B9 3A
010700BA 90013B23 3A
010700BA 90FFFFFF 02
010700C2 9001548E 3A <-
010700CA 900169F8 3A
010700CA 90FFFFFF 02
010700D2 90018362 3A <-
010700DA 900198CC 3A

According to IEC 61883-1/6, a packet following to empty packet has the same
value for its dbc. But for Fireworks, it's incremented and empty packet has
the same value as previous packet in dbc field.

This commit adds a flag for Fireworks and some codes to checking dbc continuity.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: fireworks/firewire-lib: Add a quirk for empty packet with TAG0
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:03 +0000 (22:45 +0900)]
ALSA: fireworks/firewire-lib: Add a quirk for empty packet with TAG0

Fireworks has a quirk to transmit empty packets with TAG0. This commit
adds handling this quirk for full duplex stream synchronization.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: fireworks: Add connection and stream management
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:02 +0000 (22:45 +0900)]
ALSA: fireworks: Add connection and stream management

Fireworks manages connections by CMP and can transmit/receive AMDTP streams
with a few quirks. This commit adds functionality to start/stop the streams.

Major Fireworks products don't support 'SYT-Match' clock source mode, except
for AudioFire12/8(till 2009 July) with firmware version 1.0. Already in
previous commit, this driver don't support such old firmwares. So this commit
adds support for non 'SYT-Match' clock source modes.

I note that this driver has a short gap for MIDI streams when starting PCM
stream. When AMDTP streams are running only for MIDI data and PCM data is
going to be joined at different sampling rate, then AMDTP streams are
stopped once and started again after changing sampling rate.

Unfortunately, Fireworks is not fully compliant to IEC 61883-1/6. Some commits
following to this commit add these quirks.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: fireworks: Add transaction and some commands
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:01 +0000 (22:45 +0900)]
ALSA: fireworks: Add transaction and some commands

Fireworks uses own command and response. This commit adds functionality to
transact and adds some commands required for sound card instance and kernel
streaming.

There are two ways to deliver substance of this transaction:
1.AV/C vendor dependent command for command/response
2.Async transaction to specific addresses for command/response

By way 1, I confirm AudioFire12 cannot correctly response to some commands with
firmware version 5.0 or later. This is also confirmed by FFADO. So this driver
implement way 2.

The address for response gives an issue. When this driver allocate own callback
function into the address, then no one can allocate its own callback function.
This situation is not good for applications in user-land. This issue is solved
in later commit.

I note there is a command to change the address for response if the device
supports. But this driver uses default value. So users should not execute this
command as long as hoping this driver works correctly.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: fireworks: Add skelton for Fireworks based devices
Takashi Sakamoto [Fri, 25 Apr 2014 13:45:00 +0000 (22:45 +0900)]
ALSA: fireworks: Add skelton for Fireworks based devices

This commit adds a new driver for devices based on Fireworks. This driver
just creates/removes card instance according to callbacks.

Fireworks is a board module which Echo Audio produced. This module
consists of three chipsets:
 - Communication chipset for IEEE1394 PHY/Link and IEC 61883-1/6
 - DSP or/and FPGA for signal processing
 - Flash Memory to store firmwares

Current supported devices:
 - Mackie Onyx 400F/1200F
 - Echo AudioFire12/8(until 2009 July)
 - Echo AudioFire2/4/Pre8/8(since 2009 July)
 - Echo Fireworks 8/HDMI
 - Gibson Robot Interface pack/GoldTop

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: firewire-lib: Add some AV/C general commands
Takashi Sakamoto [Fri, 25 Apr 2014 13:44:59 +0000 (22:44 +0900)]
ALSA: firewire-lib: Add some AV/C general commands

This commit adds three commands, which may be used by some firewire device
drivers. These commands are defined in 'AV/C Digital Interface Command Set
General Specification Version 4.2 (2004006, 1394TA)'.

1. PLUG INFO command (clause 10.1)
2. INPUT PLUG SIGNAL FORMAT command (clause 10.10)
3. OUTPUT PLUG SIGNAL FORMAT command (clause 10.11)

By the command 1, the drivers can get the number of plugs for AV/C unit or
subunit.
By the command 2 and 3, the drivers can get/set sampling frequency.

The 'firewire-speakers' already uses INPUT PLUG SIGNAL FORMAT command to set
sampling rate. So this commit also affects the driver.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: firewire-lib: Add support for deferred transaction
Takashi Sakamoto [Fri, 25 Apr 2014 13:44:58 +0000 (22:44 +0900)]
ALSA: firewire-lib: Add support for deferred transaction

Some devices based on BeBoB use this type of AV/C transaction.

'Deferred Transaction' is defined in 'AV/C Digital Interface Command Set
General Specification' and is used by targets to make a response deferred
during processing it.

If a target may not be able to complete a command within 100msec since
receiving the command, then the target shall return INTERIM response,
to which final response will follow later. CONTROL/NOTIFY commands are
allowed for deferred transaction.

In the specification, devices allow to send INTERIM response just one time.
But this commit allows to handle several INTERIM response with two reasons.
One reason is to simplify codes, and another reason is to prepare for
devices which is out of specification.

There is an issue. In the specification, the interval between INTERIM
response and final response is 'Unspecified interval'. The specification
depends on each subunit specification for this interval.

But we promise to finish this function for caller. In this reason, I use
FCP_TIMEOUT_MS for this interval. Currently it's 125msec. When we find
devices which needs more time for this interval, then let us add some codes
to apply more interval for 'Unspecified interval'.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: firewire-lib: Add a new function to check others' connection
Takashi Sakamoto [Fri, 25 Apr 2014 13:44:57 +0000 (22:44 +0900)]
ALSA: firewire-lib: Add a new function to check others' connection

Plug Control Registers have two fields related to the number of established
connections, one is 'Broadcast connection counter' and another is
'Point-to-point connection counter'. The driver can know there are established
connections or not to check these fields.

This commit is for considering about JACK/FFADO streaming. Currently, when
JACK/FFADO starts its streaming to the device, cmp_connection_establish() is
failed expectedly. This seems to be enough but there are some devices which
needs to change sampling frequency before trying to establish connections.
For such devices, this functionality is needed.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: firewire-lib: Add handling output connection by CMP
Takashi Sakamoto [Fri, 25 Apr 2014 13:44:56 +0000 (22:44 +0900)]
ALSA: firewire-lib: Add handling output connection by CMP

This patch adds some macros, codes with condition of direction and new functions
to handle output connection. Once cmp_connection_init() is executed with its
direction, CMP input and output connection can be handled by the same way.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: firewire-lib: Add 'direction' member to 'cmp_connection' structure
Takashi Sakamoto [Fri, 25 Apr 2014 13:44:55 +0000 (22:44 +0900)]
ALSA: firewire-lib: Add 'direction' member to 'cmp_connection' structure

This patch adds 'direction' member to 'cmp_connection' structure to indicate
the direction of connection. This patch also adds 'direction' argument to
cmp_connection_init() function to determine the direction.

The cmp_connection_init() function is exported and used in snd-firewire-speakers
so this patch also affect it.

This patch just add them. Actual implementation will be done by followed
patches.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: firewire-lib: Rename macros, variables and functions for CMP
Takashi Sakamoto [Fri, 25 Apr 2014 13:44:54 +0000 (22:44 +0900)]
ALSA: firewire-lib: Rename macros, variables and functions for CMP

Referring to IEC 61883-1, oMPR and iMPR, oPCR and iPCR have some fields with
the same role in the same position. This patch renames some macros, variables
and function arguments with "i" in its prefix to reuse them between oMPR and
iMPR, oPCR and iPCR.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: firewire-lib: Restrict calling flush_context_completion() when context exists
Takashi Sakamoto [Fri, 25 Apr 2014 13:44:53 +0000 (22:44 +0900)]
ALSA: firewire-lib: Restrict calling flush_context_completion() when context exists

Currently, drivers can bring XRUN state for PCM substreams when error to
queue packets or detecting discontinuity of packet. The application may try to
recover this state by calling snd_pcm_prepare().

Depending on each driver, .prepare() includes restart streaming. Then there
is a state that PCM substreams are running but isochronous contexts are
stopped. In this case, when .pointer() is called, it refers to error pointer.

This commit is for a prevention of this bug.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: firewire-lib/dice/speakers: Add common PCM constraints for AMDTP streams
Takashi Sakamoto [Fri, 25 Apr 2014 13:44:52 +0000 (22:44 +0900)]
ALSA: firewire-lib/dice/speakers: Add common PCM constraints for AMDTP streams

This commit adds common PCM constraints according to current firewire-lib
implementation.

1.Maximum width for each sample is limited by 24.
AM824 in IEC 61883-6 can deliver 24bit data.

2. Minimum time for period is 5msec.
Apply the old value. For shorter latency, further works are needed.

3. In blocking mode, frames per period/buffer is aligned to 32.
Each packet can include some frames depending on its sampling rate. In
blocking mode, the number equals to SYT_INTERVAL. Currently firewire-lib
can schedule snd_pcm_period_elapsed() for each packet. So, for accurate
PCM interrupt, the number of frames per period/buffer should be aligned
to SYT_INTERVAL.
Currently firewire-lib is lack of better rules to achieve this. So LCM of
each value of SYT_INTERVALs (=32) is applied. This can be improved for
further work.

[Fixed the compile error due to the missing "&" by tiwai]

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: dice/firewire-lib: Keep dualwire mode but obsolete CIP_HI_DUALWIRE
Takashi Sakamoto [Fri, 25 Apr 2014 13:44:51 +0000 (22:44 +0900)]
ALSA: dice/firewire-lib: Keep dualwire mode but obsolete CIP_HI_DUALWIRE

In previous commit, AMDTP functionality in firewire-lib supports mapping
for PCM data channels. With this mapping, firewire-lib can obsolete
a flag, CIP_HI_DUALWIRE, but Dice driver still keeps dual wire mode.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: firewire-lib: Add support for channel mapping
Takashi Sakamoto [Fri, 25 Apr 2014 13:44:50 +0000 (22:44 +0900)]
ALSA: firewire-lib: Add support for channel mapping

Some devices arrange the position of PCM/MIDI data channel in AMDTP packet.
This commit allows drivers to set channel mapping.

To be simple, the mapping table is an array with fixed length. Then the number
of channels for PCM is restricted by 64 channels.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: firewire-lib: Add support for duplex streams synchronization in blocking mode
Takashi Sakamoto [Fri, 25 Apr 2014 13:44:49 +0000 (22:44 +0900)]
ALSA: firewire-lib: Add support for duplex streams synchronization in blocking mode

Generally, the devices can synchronize to handle 'presentation timestamp'
in CIP packets. This commit adds functionality to pick up this timestamp from
in-packets transmitted by the device, then use it for out packets.

In current implementation, this module generated the timestamp by itself. This
is 'SYT Match' mode. Then drivers with this module acts as synchronization
master. This commit allows this module to act as synchronization slave.

This commit restricts this mechanism is only available in blocking mode because
handling the timestamp in non-blocking mode is more complicated than in
blocking mode.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: firewire-lib: Give syt value as parameter to handle_out_packet()
Takashi Sakamoto [Fri, 25 Apr 2014 13:44:48 +0000 (22:44 +0900)]
ALSA: firewire-lib: Give syt value as parameter to handle_out_packet()

For duplex streams with synchronization, drivers should pick up
'presentation timestamp' from in-packets and use the timestamp for
out-packets. This commit is preparation for this.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: firewire-lib: Add support for MIDI capture/playback
Takashi Sakamoto [Fri, 25 Apr 2014 13:44:47 +0000 (22:44 +0900)]
ALSA: firewire-lib: Add support for MIDI capture/playback

For capturing/playbacking MIDI messages, this commit adds one MIDI conformant
data channel. This data channel has multiplexed 8 MIDI data streams. So this
data channel can transfer messages from/to 8 MIDI ports.

And this commit allows to set PCM format even if AMDTP streams already start.
I suppose the case that PCM substreams are going to be joined into AMDTP
streams when AMDTP streams are already started for MIDI substreams. Each
driver must count how many PCM/MIDI substreams use AMDTP streams to stop
AMDTP streams.

There are differences between specifications about MIDI conformant data.

About the multiplexing, IEC 61883-6:2002, itself, has no information. It
describes labels and bytes for MIDI messages and refers to MMA/AMEI RP-027
for 'successfull implementation'. MMA/AMEI RP-027 describes 8 MPX-MIDI data
streams for one MIDI conformant data channel. IEC 61883-6:2005 adds
'sequence multiplexing' and apply this way and describe incompatibility
between 2002 and 2005.

So this commit applies IEC 61883-6:2005. When we find some devices compliant
to IEC 61883-6:2002, then this difference should be handles as device quirk
in additional work.

About the number of bytes in an MIDI conformant data, IEC 61883-6:2002 describe
0,1,2,3 bytes. MMA/AMEI RP-027 describes 'MIDI1.0-1x-SPEED', 'MIDI1.0-2x-SPEED',
'MIDI1.0-3x-SPEED' modes and the maximum bytes for each mode corresponds to 1,
2, 3 bytes. The 'MIDI1.0-2x/3x-SPEED' modes are accompanied with 'negotiation
procedure' and 'encapsulation details' but there is no specifications for them.

So this commit implements 'MIDI1.0-1x-SPEED' mode for playback, but allows
to pick up 1-3 bytes for capturing.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: firewire-lib: Add support for AMDTP in-stream and PCM capture
Takashi Sakamoto [Fri, 25 Apr 2014 13:44:46 +0000 (22:44 +0900)]
ALSA: firewire-lib: Add support for AMDTP in-stream and PCM capture

For capturing PCM, this commit adds the functionality to handle in-stream.
This is also applied for dual-wire mode.

Currently, capturing 32bit samples are supported.

When the sequence of in-packet has discontinuity of dbc, in-stream isn't handled
and amdtp_streaming_error() returns true.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: firewire-lib: Split some codes into functions to reuse for both streams
Takashi Sakamoto [Fri, 25 Apr 2014 13:44:45 +0000 (22:44 +0900)]
ALSA: firewire-lib: Split some codes into functions to reuse for both streams

Some codes can be reused to handle in-stream. This commit adds new functions.
This commit also renames some functions to keep naming consistency.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: firewire-lib: Add 'direction' member to 'amdtp_stream' structure
Takashi Sakamoto [Fri, 25 Apr 2014 13:44:44 +0000 (22:44 +0900)]
ALSA: firewire-lib: Add 'direction' member to 'amdtp_stream' structure

This patch adds 'direction' member to amdtp_stream structure to indicate its
direction. This patch also adds 'direction' argument to amdtp_stream_init()
function to determine its direction.

The amdtp_stream_init() function is exported and used by firewire-speakers and
dice so this patch also affects them.

This patch just add them. Actual implementation will be done by followed
patches.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: firewire-lib: Add macros instead of fixed value for AMDTP
Takashi Sakamoto [Fri, 25 Apr 2014 13:44:43 +0000 (22:44 +0900)]
ALSA: firewire-lib: Add macros instead of fixed value for AMDTP

This patch adds some macros instead of fixed value for AMDTP according to
IEC 61883-1/6. These macros will also be used by followed patches.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: firewire-lib: Rename functions, structure, member for AMDTP
Takashi Sakamoto [Fri, 25 Apr 2014 13:44:42 +0000 (22:44 +0900)]
ALSA: firewire-lib: Rename functions, structure, member for AMDTP

This patch renames some functions, a structure and its member to reuse them
in both AMDTP in/out stream.

Signed-off-by: Takashi Sakamoto <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: hda - add an instance to use snd_hda_pick_pin_fixup
Hui Wang [Mon, 26 May 2014 08:22:44 +0000 (16:22 +0800)]
ALSA: hda - add an instance to use snd_hda_pick_pin_fixup

Just two members in the alc269_pin_fixup_tbl[] can cover more than
10 Dell laptop models.

Signed-off-by: Hui Wang <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: hda - drop def association and sequence from pinconf comparing
Hui Wang [Mon, 26 May 2014 08:22:43 +0000 (16:22 +0800)]
ALSA: hda - drop def association and sequence from pinconf comparing

A lot a machine have the same codec, but they have different default
pinconf setting just because the def association and sequence is
different, as a result they can't share a hda_pintbl[], to overcome
it, we don't compare def association and sequence in the pinconf
matching.

Signed-off-by: Hui Wang <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: hda - get subvendor from codec rather than pci_dev
Hui Wang [Mon, 26 May 2014 08:22:42 +0000 (16:22 +0800)]
ALSA: hda - get subvendor from codec rather than pci_dev

It is safer for non-pci situation.

Signed-off-by: Hui Wang <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: hda - Add a new quirk match based on default pin configuration
David Henningsson [Mon, 26 May 2014 08:22:41 +0000 (16:22 +0800)]
ALSA: hda - Add a new quirk match based on default pin configuration

Normally, we match on pci ssid only. This works but needs new code
for every machine. To catch more machines in the same quirk, let's add
a new type of quirk, where we match on
 1) PCI Subvendor ID (i e, not device, just vendor)
 2) Codec ID
 3) Pin configuration default

If all these three match, we could be reasonably certain that the
quirk should apply to the machine even though it might not be the
exact same device.

Signed-off-by: David Henningsson <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: hda - Add fixup_forced flag
David Henningsson [Mon, 26 May 2014 08:22:40 +0000 (16:22 +0800)]
ALSA: hda - Add fixup_forced flag

The "fixup_forced" flag will indicate whether a specific fixup
(or nofixup) has been set by the user, to override the driver's
default.
This flag will help future patches.

Signed-off-by: David Henningsson <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: snd-usb: mixer: remove error messages on failed kmalloc()
Daniel Mack [Sat, 24 May 2014 08:58:17 +0000 (10:58 +0200)]
ALSA: snd-usb: mixer: remove error messages on failed kmalloc()

If kmalloc() fails, warnings will be loud enough. We can safely just
return -ENOMEM in such cases.

Signed-off-by: Daniel Mack <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: snd-usb: mixer: coding style fixups
Daniel Mack [Sat, 24 May 2014 08:58:16 +0000 (10:58 +0200)]
ALSA: snd-usb: mixer: coding style fixups

Shorten some over-long lines, multi-line comments, spurious whitespaces,
curly brakets etc.  No functional change.

Signed-off-by: Daniel Mack <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: Remove deprecated snd_card_create()
Takashi Iwai [Fri, 23 May 2014 07:57:55 +0000 (09:57 +0200)]
ALSA: Remove deprecated snd_card_create()

Now all calls have been fixed, let's get rid of the old definition.

Signed-off-by: Takashi Iwai <[email protected]>
10 years agoALSA: hda - Fix onboard audio on Intel H97/Z97 chipsets
Takashi Iwai [Fri, 23 May 2014 07:02:44 +0000 (09:02 +0200)]
ALSA: hda - Fix onboard audio on Intel H97/Z97 chipsets

The recent Intel H97/Z97 chipsets need the similar setups like other
Intel chipsets for snooping, etc.  Especially without snooping, the
audio playback stutters or gets corrupted.  This fix patch just adds
the corresponding PCI ID entry with the proper flags.

Reported-and-tested-by: Arthur Borsboom <[email protected]>
Cc: <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoASoC: samsung: Handle errors when getting the op_clk clock
Sylwester Nawrocki [Thu, 22 May 2014 10:10:52 +0000 (12:10 +0200)]
ASoC: samsung: Handle errors when getting the op_clk clock

Ensure i2s->op_clk is not used when clk_get() for this clock fails.
This prevents working with an incorrectly configured clock in some
conditions.

Signed-off-by: Sylwester Nawrocki <[email protected]>
Signed-off-by: Mark Brown <[email protected]>
10 years agoMerge tag 'asoc-v3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound...
Takashi Iwai [Thu, 22 May 2014 15:50:00 +0000 (17:50 +0200)]
Merge tag 'asoc-v3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-next

ASoC: Updates for v3.16

Lots of cleanup work going on in the core this release but very little
visible to external users except for the new drivers that have been
added.

 - Support for specifying aux CODECs in DT.
 - Removal of the deprecated mux and enum macros.
 - More moves towards full componentisation.
 - Removal of some unused I/O code.
 - Lots of cleanups, fixes and enhancements to the davinci, Freescale,
   Haswell and Realtek drivers.
 - Several drivers exposed directly in Kconfig for use with simple-card.
 - New drivers for Cirrus CS42L56, Realtek RT5639, RT5642 and RT5651 and
   ST STA350.

10 years agoALSA: Replace DEFINE_PCI_DEVICE_TABLE macro use
Benoit Taine [Thu, 22 May 2014 15:08:54 +0000 (17:08 +0200)]
ALSA: Replace DEFINE_PCI_DEVICE_TABLE macro use

We should prefer `const struct pci_device_id` over
`DEFINE_PCI_DEVICE_TABLE` to meet kernel coding style guidelines.
This issue was reported by checkpatch.

A simplified version of the semantic patch that makes this change is as
follows (http://coccinelle.lip6.fr/):

// <smpl>

@@
identifier i;
declarer name DEFINE_PCI_DEVICE_TABLE;
initializer z;
@@

- DEFINE_PCI_DEVICE_TABLE(i)
+ const struct pci_device_id i[]
= z;

// </smpl>

It has been tested by compilation.

Signed-off-by: Benoit Taine <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
10 years agoMerge remote-tracking branches 'asoc/topic/ux500', 'asoc/topic/wm8731', 'asoc/topic...
Mark Brown [Wed, 21 May 2014 23:24:04 +0000 (00:24 +0100)]
Merge remote-tracking branches 'asoc/topic/ux500', 'asoc/topic/wm8731', 'asoc/topic/wm8804', 'asoc/topic/wm8955' and 'asoc/topic/wm8985' into asoc-next

10 years agoMerge remote-tracking branches 'asoc/topic/rt5651', 'asoc/topic/samsung', 'asoc/topic...
Mark Brown [Wed, 21 May 2014 23:24:00 +0000 (00:24 +0100)]
Merge remote-tracking branches 'asoc/topic/rt5651', 'asoc/topic/samsung', 'asoc/topic/sgtl5000', 'asoc/topic/sh', 'asoc/topic/simple', 'asoc/topic/sirf', 'asoc/topic/sta350' and 'asoc/topic/tlv320dac33' into asoc-next

10 years agoMerge remote-tracking branches 'asoc/topic/nuc900', 'asoc/topic/omap', 'asoc/topic...
Mark Brown [Wed, 21 May 2014 23:23:57 +0000 (00:23 +0100)]
Merge remote-tracking branches 'asoc/topic/nuc900', 'asoc/topic/omap', 'asoc/topic/pxa', 'asoc/topic/rcar', 'asoc/topic/rt5640' and 'asoc/topic/rt5645' into asoc-next

10 years agoMerge remote-tracking branches 'asoc/topic/headers', 'asoc/topic/intel', 'asoc/topic...
Mark Brown [Wed, 21 May 2014 23:23:54 +0000 (00:23 +0100)]
Merge remote-tracking branches 'asoc/topic/headers', 'asoc/topic/intel', 'asoc/topic/jz4740', 'asoc/topic/max98090', 'asoc/topic/max98095', 'asoc/topic/mc13783' and 'asoc/topic/multicodec' into asoc-next

10 years agoMerge remote-tracking branches 'asoc/topic/devm', 'asoc/topic/fsl', 'asoc/topic/fsl...
Mark Brown [Wed, 21 May 2014 23:23:51 +0000 (00:23 +0100)]
Merge remote-tracking branches 'asoc/topic/devm', 'asoc/topic/fsl', 'asoc/topic/fsl-esai', 'asoc/topic/fsl-sai', 'asoc/topic/fsl-spdif' and 'asoc/topic/fsl-ssi' into asoc-next

10 years agoMerge remote-tracking branches 'asoc/topic/cs42l56', 'asoc/topic/cs42xx8' and 'asoc...
Mark Brown [Wed, 21 May 2014 23:23:49 +0000 (00:23 +0100)]
Merge remote-tracking branches 'asoc/topic/cs42l56', 'asoc/topic/cs42xx8' and 'asoc/topic/davinci' into asoc-next

10 years agoMerge remote-tracking branches 'asoc/topic/ad1980', 'asoc/topic/adsp', 'asoc/topic...
Mark Brown [Wed, 21 May 2014 23:23:45 +0000 (00:23 +0100)]
Merge remote-tracking branches 'asoc/topic/ad1980', 'asoc/topic/adsp', 'asoc/topic/ak4104', 'asoc/topic/ak4642', 'asoc/topic/alc5623', 'asoc/topic/arizona', 'asoc/topic/atmel' and 'asoc/topic/cache' into asoc-next

10 years agoMerge remote-tracking branch 'asoc/topic/pcm512x' into asoc-next
Mark Brown [Wed, 21 May 2014 23:23:45 +0000 (00:23 +0100)]
Merge remote-tracking branch 'asoc/topic/pcm512x' into asoc-next

10 years agoMerge remote-tracking branch 'asoc/topic/pcm' into asoc-next
Mark Brown [Wed, 21 May 2014 23:23:44 +0000 (00:23 +0100)]
Merge remote-tracking branch 'asoc/topic/pcm' into asoc-next

10 years agoMerge remote-tracking branch 'asoc/topic/enum' into asoc-next
Mark Brown [Wed, 21 May 2014 23:23:44 +0000 (00:23 +0100)]
Merge remote-tracking branch 'asoc/topic/enum' into asoc-next

10 years agoMerge remote-tracking branch 'asoc/topic/dt' into asoc-next
Mark Brown [Wed, 21 May 2014 23:23:43 +0000 (00:23 +0100)]
Merge remote-tracking branch 'asoc/topic/dt' into asoc-next

10 years agoMerge remote-tracking branch 'asoc/topic/dapm-init' into asoc-next
Mark Brown [Wed, 21 May 2014 23:23:42 +0000 (00:23 +0100)]
Merge remote-tracking branch 'asoc/topic/dapm-init' into asoc-next

10 years agoMerge remote-tracking branch 'asoc/topic/dapm' into asoc-next
Mark Brown [Wed, 21 May 2014 23:23:42 +0000 (00:23 +0100)]
Merge remote-tracking branch 'asoc/topic/dapm' into asoc-next

10 years agoMerge remote-tracking branch 'asoc/topic/core' into asoc-next
Mark Brown [Wed, 21 May 2014 23:23:41 +0000 (00:23 +0100)]
Merge remote-tracking branch 'asoc/topic/core' into asoc-next

10 years agoMerge remote-tracking branch 'asoc/topic/component' into asoc-next
Mark Brown [Wed, 21 May 2014 23:23:41 +0000 (00:23 +0100)]
Merge remote-tracking branch 'asoc/topic/component' into asoc-next

10 years agoMerge remote-tracking branch 'asoc/fix/max98090' into asoc-linus
Mark Brown [Wed, 21 May 2014 23:23:37 +0000 (00:23 +0100)]
Merge remote-tracking branch 'asoc/fix/max98090' into asoc-linus

10 years agoMerge tag 'asoc-v3.15-rc5-intel' into asoc-linus
Mark Brown [Wed, 21 May 2014 23:23:36 +0000 (00:23 +0100)]
Merge tag 'asoc-v3.15-rc5-intel' into asoc-linus

ASoC: Intel fixes for v3.15

This is a relatively large batch of fixes for the newly added
Haswell/Baytrail drivers from Intel.  It's a bit larger than is good for
this point in the cycle but it's all for a newly added driver so not so
worrying as it might otherwise be.  Some of it's integration problems,
some of it's the sort of problem usually turned up in stress tests.

# gpg: Signature made Wed 14 May 2014 12:40:27 BST using RSA key ID 7EA229BD
# gpg: Good signature from "Mark Brown <[email protected]>"
# gpg:                 aka "Mark Brown <[email protected]>"
# gpg:                 aka "Mark Brown <[email protected]>"
# gpg:                 aka "Mark Brown <[email protected]>"
# gpg:                 aka "Mark Brown <[email protected]>"
# gpg:                 aka "Mark Brown <[email protected]>"

This page took 0.121176 seconds and 4 git commands to generate.