Takashi Sakamoto wrote: > On Apr 19 2018 17:54, Clemens Ladisch wrote: >> Takashi Sakamoto wrote: >>> 183 /* Some old firmware versions do not have the following global registers: */ >>> ... >>> 188 #define GLOBAL_CLOCK_CAPABILITIES 0x064 >>> >>> But this is not proper in my case because the maximum offset on global >>> sub-address space is 0x05c in quadlet unit. >> >> IIRC that comment was based on the documentation. Apparently, there was >> a misunderstanding of "size 0x60" vs. "up to the register at 0x60". > > From my curiosity, do you know which version of DICE firstly supports GLOBAL_VERSION register? Can you read it on the documentation? I misremembered: I did not find anything about this in the documentation. This is derived from TCAT's host driver, which unconditionally reads everything up to the clock capabilities register, and checks for a size larger than 0x64 to detect if the firmware supports clock capabilities. >> The version register is checked only once (in get_subaddrs()) and does not >> actually affect the behaviour of the driver, so it would not hurt to simply >> omit that check on the old firmware. > > Hm. The check is applied to the other spaces such as rx/tx, so I'd like to > leave it as is. Sorry, "that check" meant the version check for 0x01000000. Your patch already implements what I suggested. > With this patch[1], ALSA dice driver can handle the unit. In this weekend, I'll post it. Your reviewing is very helpful. > > [1] https://github.com/takaswie/snd-firewire-improve/commit/1889e06b9593e16da2812010ffd5a8e4b9bc777d > + /* Old firmware doesn't support these fields. */ > + if (dice->clock_caps == 0) { > + dice->sync_offset = be32_to_cpu(pointers[6]) * 4; > + dice->rsrv_offset = be32_to_cpu(pointers[8]) * 4; > + } Shouldn't this be clock_caps!=0? Regards, Clemens _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel