Lines Matching defs:range
112 static int knav_queue_setup_irq(struct knav_range_info *range,
115 unsigned queue = inst->id - range->queue_base;
118 if (range->flags & RANGE_HAS_IRQ) {
119 irq = range->irqs[queue].irq;
125 if (range->irqs[queue].cpu_mask) {
126 ret = irq_set_affinity_hint(irq, range->irqs[queue].cpu_mask);
128 dev_warn(range->kdev->dev,
139 struct knav_range_info *range = inst->range;
140 unsigned queue = inst->id - inst->range->queue_base;
143 if (range->flags & RANGE_HAS_IRQ) {
144 irq = range->irqs[queue].irq;
157 return inst->range->flags & RANGE_RESERVED;
179 (inst->range->flags & RANGE_HAS_IRQ)) {
182 (inst->range->flags & RANGE_HAS_ACCUMULATOR)) {
185 !(inst->range->flags &
241 struct knav_range_info *range = inst->range;
244 if (range->ops && range->ops->open_queue)
245 ret = range->ops->open_queue(range, inst, flags);
317 struct knav_range_info *range = inst->range;
319 if (range->ops && range->ops->set_notify)
320 range->ops->set_notify(range, inst, enabled);
368 if (!(qh->inst->range->flags & (RANGE_HAS_ACCUMULATOR | RANGE_HAS_IRQ)))
383 static int knav_gp_set_notify(struct knav_range_info *range,
389 if (range->flags & RANGE_HAS_IRQ) {
390 queue = inst->id - range->queue_base;
392 enable_irq(range->irqs[queue].irq);
394 disable_irq_nosync(range->irqs[queue].irq);
399 static int knav_gp_open_queue(struct knav_range_info *range,
402 return knav_queue_setup_irq(range, inst);
405 static int knav_gp_close_queue(struct knav_range_info *range,
563 struct knav_range_info *range = inst->range;
565 if (range->ops && range->ops->close_queue)
566 range->ops->close_queue(range, inst);
1151 * if the range specified is 0x0c000000-0x0c003fff (i.e., 16K entries
1213 struct knav_range_info *range;
1218 range = devm_kzalloc(dev, sizeof(*range), GFP_KERNEL);
1219 if (!range) {
1220 dev_err(dev, "out of memory allocating range\n");
1224 range->kdev = kdev;
1225 range->name = knav_queue_find_name(node);
1228 range->queue_base = temp[0] - kdev->base_id;
1229 range->num_queues = temp[1];
1231 dev_err(dev, "invalid queue range %s\n", range->name);
1232 devm_kfree(dev, range);
1242 range->irqs[i].irq = irq_create_of_mapping(&oirq);
1243 if (range->irqs[i].irq == IRQ_NONE)
1246 range->num_irqs++;
1252 range->irqs[i].cpu_mask = devm_kzalloc(dev,
1254 if (!range->irqs[i].cpu_mask)
1259 cpumask_set_cpu(bit, range->irqs[i].cpu_mask);
1263 range->num_irqs = min(range->num_irqs, range->num_queues);
1264 if (range->num_irqs)
1265 range->flags |= RANGE_HAS_IRQ;
1268 range->flags |= RANGE_RESERVED;
1271 ret = knav_init_acc_range(kdev, node, range);
1273 devm_kfree(dev, range);
1277 range->ops = &knav_gp_range_ops;
1282 start = max(qmgr->start_queue, range->queue_base);
1284 range->queue_base + range->num_queues);
1294 list_add_tail(&range->list, &kdev->queue_ranges);
1295 dev_dbg(dev, "added range %s: %d-%d, %d irqs%s%s%s\n",
1296 range->name, range->queue_base,
1297 range->queue_base + range->num_queues - 1,
1298 range->num_irqs,
1299 (range->flags & RANGE_HAS_IRQ) ? ", has irq" : "",
1300 (range->flags & RANGE_RESERVED) ? ", reserved" : "",
1301 (range->flags & RANGE_HAS_ACCUMULATOR) ? ", acc" : "");
1302 kdev->num_queues_in_use += range->num_queues;
1309 struct device_node *type, *range;
1313 for_each_child_of_node(type, range) {
1314 ret = knav_setup_queue_range(kdev, range);
1321 dev_err(kdev->dev, "no valid queue range found\n");
1328 struct knav_range_info *range)
1330 if (range->ops && range->ops->free_range)
1331 range->ops->free_range(range);
1332 list_del(&range->list);
1333 devm_kfree(kdev->dev, range);
1338 struct knav_range_info *range;
1341 range = first_queue_range(kdev);
1342 if (!range)
1344 knav_free_queue_range(kdev, range);
1412 dev_err(dev, "invalid qmgr queue range\n");
1649 * and stated flag and when initialize the acc range, check
1650 * it and init the range only if pdsp is started.
1681 struct knav_range_info *range,
1692 inst->range = range;
1698 if (range->ops && range->ops->init_queue)
1699 return range->ops->init_queue(range, inst);
1706 struct knav_range_info *range;
1722 for_each_queue_range(kdev, range) {
1723 if (range->ops && range->ops->init_range)
1724 range->ops->init_range(range);
1726 for (id = range->queue_base;
1727 id < range->queue_base + range->num_queues; id++, idx++) {
1728 ret = knav_queue_init_queue(kdev, range,
1733 range->queue_base_inst =
1792 if (of_property_read_u32_array(node, "queue-range", temp, 2)) {
1793 dev_err(dev, "queue-range not specified\n");
1825 /* get usable queue range values from device tree */