spinlock_t fifo_lock;
struct list_head halt_fifo;
struct list_head list;
- struct pipe aim0;
- struct pipe aim1;
+ struct pipe pipe0;
+ struct pipe pipe1;
struct list_head trash_fifo;
struct task_struct *hdm_enqueue_task;
wait_queue_head_t hdm_fifo_wq;
list_for_each_entry(i, &instance_list, list) {
list_for_each_entry(c, &i->channel_list, list) {
- if (c->aim0.aim == aim || c->aim1.aim == aim) {
+ if (c->pipe0.aim == aim || c->pipe1.aim == aim) {
offs += snprintf(buf + offs, PAGE_SIZE - offs,
"%s:%s\n",
dev_name(&i->iface->dev),
int ret;
struct most_aim **aim_ptr;
- if (!c->aim0.aim)
- aim_ptr = &c->aim0.aim;
- else if (!c->aim1.aim)
- aim_ptr = &c->aim1.aim;
+ if (!c->pipe0.aim)
+ aim_ptr = &c->pipe0.aim;
+ else if (!c->pipe1.aim)
+ aim_ptr = &c->pipe1.aim;
else
return -ENOSPC;
if (aim->disconnect_channel(c->iface, c->channel_id))
return -EIO;
- if (c->aim0.aim == aim)
- c->aim0.aim = NULL;
- if (c->aim1.aim == aim)
- c->aim1.aim = NULL;
+ if (c->pipe0.aim == aim)
+ c->pipe0.aim = NULL;
+ if (c->pipe1.aim == aim)
+ c->pipe1.aim = NULL;
return len;
}
list_add_tail(&mbo->list, &c->fifo);
spin_unlock_irqrestore(&c->fifo_lock, flags);
- if (c->aim0.refs && c->aim0.aim->tx_completion)
- c->aim0.aim->tx_completion(c->iface, c->channel_id);
+ if (c->pipe0.refs && c->pipe0.aim->tx_completion)
+ c->pipe0.aim->tx_completion(c->iface, c->channel_id);
- if (c->aim1.refs && c->aim1.aim->tx_completion)
- c->aim1.aim->tx_completion(c->iface, c->channel_id);
+ if (c->pipe1.refs && c->pipe1.aim->tx_completion)
+ c->pipe1.aim->tx_completion(c->iface, c->channel_id);
}
/**
if (unlikely(!c))
return -EINVAL;
- if (c->aim0.refs && c->aim1.refs &&
- ((aim == c->aim0.aim && c->aim0.num_buffers <= 0) ||
- (aim == c->aim1.aim && c->aim1.num_buffers <= 0)))
+ if (c->pipe0.refs && c->pipe1.refs &&
+ ((aim == c->pipe0.aim && c->pipe0.num_buffers <= 0) ||
+ (aim == c->pipe1.aim && c->pipe1.num_buffers <= 0)))
return 0;
spin_lock_irqsave(&c->fifo_lock, flags);
if (unlikely(!c))
return NULL;
- if (c->aim0.refs && c->aim1.refs &&
- ((aim == c->aim0.aim && c->aim0.num_buffers <= 0) ||
- (aim == c->aim1.aim && c->aim1.num_buffers <= 0)))
+ if (c->pipe0.refs && c->pipe1.refs &&
+ ((aim == c->pipe0.aim && c->pipe0.num_buffers <= 0) ||
+ (aim == c->pipe1.aim && c->pipe1.num_buffers <= 0)))
return NULL;
- if (aim == c->aim0.aim)
- num_buffers_ptr = &c->aim0.num_buffers;
- else if (aim == c->aim1.aim)
- num_buffers_ptr = &c->aim1.num_buffers;
+ if (aim == c->pipe0.aim)
+ num_buffers_ptr = &c->pipe0.num_buffers;
+ else if (aim == c->pipe1.aim)
+ num_buffers_ptr = &c->pipe1.num_buffers;
else
num_buffers_ptr = &dummy_num_buffers;
if (atomic_sub_and_test(1, &c->mbo_nq_level))
c->is_starving = 1;
- if (c->aim0.refs && c->aim0.aim->rx_completion &&
- c->aim0.aim->rx_completion(mbo) == 0)
+ if (c->pipe0.refs && c->pipe0.aim->rx_completion &&
+ c->pipe0.aim->rx_completion(mbo) == 0)
return;
- if (c->aim1.refs && c->aim1.aim->rx_completion &&
- c->aim1.aim->rx_completion(mbo) == 0)
+ if (c->pipe1.refs && c->pipe1.aim->rx_completion &&
+ c->pipe1.aim->rx_completion(mbo) == 0)
return;
most_put_mbo(mbo);
return -EINVAL;
mutex_lock(&c->start_mutex);
- if (c->aim0.refs + c->aim1.refs > 0)
+ if (c->pipe0.refs + c->pipe1.refs > 0)
goto out; /* already started by other aim */
if (!try_module_get(iface->mod)) {
goto error;
c->is_starving = 0;
- c->aim0.num_buffers = c->cfg.num_buffers / 2;
- c->aim1.num_buffers = c->cfg.num_buffers - c->aim0.num_buffers;
+ c->pipe0.num_buffers = c->cfg.num_buffers / 2;
+ c->pipe1.num_buffers = c->cfg.num_buffers - c->pipe0.num_buffers;
atomic_set(&c->mbo_ref, num_buffer);
out:
- if (aim == c->aim0.aim)
- c->aim0.refs++;
- if (aim == c->aim1.aim)
- c->aim1.refs++;
+ if (aim == c->pipe0.aim)
+ c->pipe0.refs++;
+ if (aim == c->pipe1.aim)
+ c->pipe1.refs++;
mutex_unlock(&c->start_mutex);
return 0;
return -EINVAL;
mutex_lock(&c->start_mutex);
- if (c->aim0.refs + c->aim1.refs >= 2)
+ if (c->pipe0.refs + c->pipe1.refs >= 2)
goto out;
if (c->hdm_enqueue_task)
c->is_poisoned = false;
out:
- if (aim == c->aim0.aim)
- c->aim0.refs--;
- if (aim == c->aim1.aim)
- c->aim1.refs--;
+ if (aim == c->pipe0.aim)
+ c->pipe0.refs--;
+ if (aim == c->pipe1.aim)
+ c->pipe1.refs--;
mutex_unlock(&c->start_mutex);
return 0;
}
list_for_each_entry_safe(i, i_tmp, &instance_list, list) {
list_for_each_entry_safe(c, tmp, &i->channel_list, list) {
- if (c->aim0.aim == aim || c->aim1.aim == aim)
+ if (c->pipe0.aim == aim || c->pipe1.aim == aim)
aim->disconnect_channel(
c->iface, c->channel_id);
- if (c->aim0.aim == aim)
- c->aim0.aim = NULL;
- if (c->aim1.aim == aim)
- c->aim1.aim = NULL;
+ if (c->pipe0.aim == aim)
+ c->pipe0.aim = NULL;
+ if (c->pipe1.aim == aim)
+ c->pipe1.aim = NULL;
}
}
device_unregister(&aim->dev);
inst = iface->priv;
for (i = 0; i < iface->num_channels; i++) {
c = inst->channel[i];
- if (c->aim0.aim)
- c->aim0.aim->disconnect_channel(c->iface,
+ if (c->pipe0.aim)
+ c->pipe0.aim->disconnect_channel(c->iface,
c->channel_id);
- if (c->aim1.aim)
- c->aim1.aim->disconnect_channel(c->iface,
+ if (c->pipe1.aim)
+ c->pipe1.aim->disconnect_channel(c->iface,
c->channel_id);
- c->aim0.aim = NULL;
- c->aim1.aim = NULL;
+ c->pipe0.aim = NULL;
+ c->pipe1.aim = NULL;
list_del(&c->list);
device_unregister(&c->dev);
kfree(c);