+ if (device->num_channels) {
+ /* Static channels and groups. */
+ channels = device->channels;
+ num_channels = device->num_channels;
+ channel_groups = device->channel_groups;
+ num_channel_groups = device->num_channel_groups;
+ } else {
+ /* Channels and groups need to be probed. */
+ ret = device->probe_channels(sdi, hw_info, &channels, &num_channels,
+ &channel_groups, &num_channel_groups);
+ if (ret != SR_OK) {
+ sr_err("Failed to probe for channels.");
+ return NULL;
+ }
+ /*
+ * Since these were dynamically allocated, we'll need to free them
+ * later.
+ */
+ devc->channels = channels;
+ devc->channel_groups = channel_groups;
+ }
+