From: Takashi Iwai <tiwai@suse.de>
To: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Cc: johannes.oertel@uni-due.de, alsa-devel@alsa-project.org,
clemens@ladisch.de, harryhaaren@gmail.com,
ffado-devel@lists.sf.net
Subject: Re: [PATCH 2/2] ALSA: fireworks/firewire-lib: add support for recent firmware quirk
Date: Wed, 05 Aug 2015 07:55:41 +0200 [thread overview]
Message-ID: <s5hy4hqb7oi.wl-tiwai@suse.de> (raw)
In-Reply-To: <1438734065-5204-3-git-send-email-o-takashi@sakamocchi.jp>
On Wed, 05 Aug 2015 02:21:05 +0200,
Takashi Sakamoto wrote:
>
> Fireworks uses TSB43CB43(IceLynx-Micro) as its IEC 61883-1/6 interface.
> This chip includes ARM7 core, and loads and runs program. The firmware
> is stored in on-board memory and loaded every powering-on from it.
>
> Echo Audio ships several versions of firmwares for each model. These
> firmwares have each quirk and the quirk changes a sequence of packets.
>
> As long as I investigated, AudioFire2/AudioFire4/AudioFirePre8 have a
> quirk to transfer a first packet with 0x02 in its dbc field. This causes
> ALSA Fireworks driver to detect discontinuity. In this case, firmware
> version 5.7.0, 5.7.3 and 5.8.0 are used.
>
> Payload CIP CIP
> quadlets header1 header2
> 02 00050002 90ffffff <-
> 42 0005000a 90013000
> 42 00050012 90014400
> 42 0005001a 90015800
> 02 0005001a 90ffffff
> 42 00050022 90019000
> 42 0005002a 9001a400
> 42 00050032 9001b800
> 02 00050032 90ffffff
> 42 0005003a 9001d000
> 42 00050042 9001e400
> 42 0005004a 9001f800
> 02 0005004a 90ffffff
> (AudioFire2 with firmware version 5.7.)
>
> $ dmesg
> snd-fireworks fw1.0: Detect discontinuity of CIP: 00 02
>
> These models, AudioFire8 (since Jul 2009 ) and Gibson Robot Interface
> Pack series uses the same ARM binary as their firmware. Thus, this
> quirk may be observed among them.
>
> This commit adds a new member for AMDTP structure. This member represents
> the value of dbc field in a first AMDTP packet. Drivers can set it with
> a preferred value according to model's quirk.
>
> Tested-by: Johannes Oertei <johannes.oertel@uni-due.de>
> Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Applied with Cc to stable. At the next time, if you think it's worth
for stable backports, feel free to add Cc to stable in your patch.
thanks,
Takashi
> ---
> sound/firewire/amdtp.c | 5 +++--
> sound/firewire/amdtp.h | 2 ++
> sound/firewire/fireworks/fireworks.c | 8 ++++++++
> sound/firewire/fireworks/fireworks.h | 1 +
> sound/firewire/fireworks/fireworks_stream.c | 9 +++++++++
> 5 files changed, 23 insertions(+), 2 deletions(-)
>
> diff --git a/sound/firewire/amdtp.c b/sound/firewire/amdtp.c
> index 7bb988f..2a153d2 100644
> --- a/sound/firewire/amdtp.c
> +++ b/sound/firewire/amdtp.c
> @@ -740,8 +740,9 @@ static int handle_in_packet(struct amdtp_stream *s,
> s->data_block_counter != UINT_MAX)
> data_block_counter = s->data_block_counter;
>
> - if (((s->flags & CIP_SKIP_DBC_ZERO_CHECK) && data_block_counter == 0) ||
> - (s->data_block_counter == UINT_MAX)) {
> + if (((s->flags & CIP_SKIP_DBC_ZERO_CHECK) &&
> + data_block_counter == s->tx_first_dbc) ||
> + s->data_block_counter == UINT_MAX) {
> lost = false;
> } else if (!(s->flags & CIP_DBC_IS_END_EVENT)) {
> lost = data_block_counter != s->data_block_counter;
> diff --git a/sound/firewire/amdtp.h b/sound/firewire/amdtp.h
> index 26b9093..b2cf9e7 100644
> --- a/sound/firewire/amdtp.h
> +++ b/sound/firewire/amdtp.h
> @@ -157,6 +157,8 @@ struct amdtp_stream {
>
> /* quirk: fixed interval of dbc between previos/current packets. */
> unsigned int tx_dbc_interval;
> + /* quirk: indicate the value of dbc field in a first packet. */
> + unsigned int tx_first_dbc;
>
> bool callbacked;
> wait_queue_head_t callback_wait;
> diff --git a/sound/firewire/fireworks/fireworks.c b/sound/firewire/fireworks/fireworks.c
> index 2682e7e..c94a432 100644
> --- a/sound/firewire/fireworks/fireworks.c
> +++ b/sound/firewire/fireworks/fireworks.c
> @@ -248,8 +248,16 @@ efw_probe(struct fw_unit *unit,
> err = get_hardware_info(efw);
> if (err < 0)
> goto error;
> + /* AudioFire8 (since 2009) and AudioFirePre8 */
> if (entry->model_id == MODEL_ECHO_AUDIOFIRE_9)
> efw->is_af9 = true;
> + /* These models uses the same firmware. */
> + if (entry->model_id == MODEL_ECHO_AUDIOFIRE_2 ||
> + entry->model_id == MODEL_ECHO_AUDIOFIRE_4 ||
> + entry->model_id == MODEL_ECHO_AUDIOFIRE_9 ||
> + entry->model_id == MODEL_GIBSON_RIP ||
> + entry->model_id == MODEL_GIBSON_GOLDTOP)
> + efw->is_fireworks3 = true;
>
> snd_efw_proc_init(efw);
>
> diff --git a/sound/firewire/fireworks/fireworks.h b/sound/firewire/fireworks/fireworks.h
> index 4f0201a..084d414 100644
> --- a/sound/firewire/fireworks/fireworks.h
> +++ b/sound/firewire/fireworks/fireworks.h
> @@ -71,6 +71,7 @@ struct snd_efw {
>
> /* for quirks */
> bool is_af9;
> + bool is_fireworks3;
> u32 firmware_version;
>
> unsigned int midi_in_ports;
> diff --git a/sound/firewire/fireworks/fireworks_stream.c b/sound/firewire/fireworks/fireworks_stream.c
> index c55db1b..7e353f1 100644
> --- a/sound/firewire/fireworks/fireworks_stream.c
> +++ b/sound/firewire/fireworks/fireworks_stream.c
> @@ -172,6 +172,15 @@ int snd_efw_stream_init_duplex(struct snd_efw *efw)
> efw->tx_stream.flags |= CIP_DBC_IS_END_EVENT;
> /* Fireworks reset dbc at bus reset. */
> efw->tx_stream.flags |= CIP_SKIP_DBC_ZERO_CHECK;
> + /*
> + * But Recent firmwares starts packets with non-zero dbc.
> + * Driver version 5.7.6 installs firmware version 5.7.3.
> + */
> + if (efw->is_fireworks3 &&
> + (efw->firmware_version == 0x5070000 ||
> + efw->firmware_version == 0x5070300 ||
> + efw->firmware_version == 0x5080000))
> + efw->tx_stream.tx_first_dbc = 0x02;
> /* AudioFire9 always reports wrong dbs. */
> if (efw->is_af9)
> efw->tx_stream.flags |= CIP_WRONG_DBS;
> --
> 2.1.4
>
next prev parent reply other threads:[~2015-08-05 5:55 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-05 0:21 [PATCH 0/2] ALSA: fireworks/firewire-lib: add support for recent firmware quirk Takashi Sakamoto
2015-08-05 0:21 ` [PATCH 1/2] Revert "ALSA: fireworks: add support for AudioFire2 quirk" Takashi Sakamoto
2015-08-05 5:54 ` Takashi Iwai
2015-08-05 0:21 ` [PATCH 2/2] ALSA: fireworks/firewire-lib: add support for recent firmware quirk Takashi Sakamoto
2015-08-05 5:55 ` Takashi Iwai [this message]
2015-08-10 22:44 ` [PATCH 0/2] " Takashi Sakamoto
2015-08-11 5:30 ` Takashi Iwai
2015-08-11 11:22 ` Takashi Sakamoto
-- strict thread matches above, loose matches on Subject: below --
2015-08-03 23:40 [RFC][PATCH " Takashi Sakamoto
2015-08-03 23:40 ` [PATCH 2/2] " Takashi Sakamoto
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=s5hy4hqb7oi.wl-tiwai@suse.de \
--to=tiwai@suse.de \
--cc=alsa-devel@alsa-project.org \
--cc=clemens@ladisch.de \
--cc=ffado-devel@lists.sf.net \
--cc=harryhaaren@gmail.com \
--cc=johannes.oertel@uni-due.de \
--cc=o-takashi@sakamocchi.jp \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox