This changes the fx2lafw code to only enable the wide_sampling (16bit)
method, if at least one of the higher eight channels is enabled. This
has the benefit, that we can use higher samplerates on 16bit LA
devices if we use only the first eight channels.
The wide sampling is also enabled if we have one or more analog
channels.
Signed-off-by: Jan Losinski <redacted>
devc = fx2lafw_dev_new();
devc->profile = prof;
devc = fx2lafw_dev_new();
devc->profile = prof;
- if ((prof->dev_caps & DEV_CAPS_16BIT) || (prof->dev_caps & DEV_CAPS_AX_ANALOG))
- devc->sample_wide = TRUE;
sdi->priv = devc;
devices = g_slist_append(devices, sdi);
sdi->priv = devc;
devices = g_slist_append(devices, sdi);
const GSList *l;
int p;
struct sr_channel *ch;
const GSList *l;
int p;
struct sr_channel *ch;
+ uint32_t channel_mask = 0, num_analog = 0;
for (l = sdi->channels, p = 0; l; l = l->next, p++) {
ch = l->data;
if ((p <= NUM_CHANNELS) && (ch->type == SR_CHANNEL_ANALOG)) {
for (l = sdi->channels, p = 0; l; l = l->next, p++) {
ch = l->data;
if ((p <= NUM_CHANNELS) && (ch->type == SR_CHANNEL_ANALOG)) {
devc->ch_enabled[p] = ch->enabled;
devc->enabled_analog_channels =
g_slist_append(devc->enabled_analog_channels, ch);
devc->ch_enabled[p] = ch->enabled;
devc->enabled_analog_channels =
g_slist_append(devc->enabled_analog_channels, ch);
+ } else {
+ channel_mask |= ch->enabled << p;
+ /* Use no wide sampling if we have only the first 8 channels set. */
+ devc->sample_wide = (channel_mask > 0xff || num_analog > 0);
+