Lines Matching refs:range

114 static int knav_queue_setup_irq(struct knav_range_info *range,
117 unsigned queue = inst->id - range->queue_base;
120 if (range->flags & RANGE_HAS_IRQ) {
121 irq = range->irqs[queue].irq;
127 if (range->irqs[queue].cpu_mask) {
128 ret = irq_set_affinity_hint(irq, range->irqs[queue].cpu_mask);
130 dev_warn(range->kdev->dev,
141 struct knav_range_info *range = inst->range;
142 unsigned queue = inst->id - inst->range->queue_base;
145 if (range->flags & RANGE_HAS_IRQ) {
146 irq = range->irqs[queue].irq;
159 return inst->range->flags & RANGE_RESERVED;
181 (inst->range->flags & RANGE_HAS_IRQ)) {
184 (inst->range->flags & RANGE_HAS_ACCUMULATOR)) {
187 !(inst->range->flags &
243 struct knav_range_info *range = inst->range;
246 if (range->ops && range->ops->open_queue)
247 ret = range->ops->open_queue(range, inst, flags);
319 struct knav_range_info *range = inst->range;
321 if (range->ops && range->ops->set_notify)
322 range->ops->set_notify(range, inst, enabled);
370 if (!(qh->inst->range->flags & (RANGE_HAS_ACCUMULATOR | RANGE_HAS_IRQ)))
385 static int knav_gp_set_notify(struct knav_range_info *range,
391 if (range->flags & RANGE_HAS_IRQ) {
392 queue = inst->id - range->queue_base;
394 enable_irq(range->irqs[queue].irq);
396 disable_irq_nosync(range->irqs[queue].irq);
401 static int knav_gp_open_queue(struct knav_range_info *range,
404 return knav_queue_setup_irq(range, inst);
407 static int knav_gp_close_queue(struct knav_range_info *range,
565 struct knav_range_info *range = inst->range;
567 if (range->ops && range->ops->close_queue)
568 range->ops->close_queue(range, inst);
1153 * if the range specified is 0x0c000000-0x0c003fff (i.e., 16K entries
1215 struct knav_range_info *range;
1220 range = devm_kzalloc(dev, sizeof(*range), GFP_KERNEL);
1221 if (!range) {
1222 dev_err(dev, "out of memory allocating range\n");
1226 range->kdev = kdev;
1227 range->name = knav_queue_find_name(node);
1230 range->queue_base = temp[0] - kdev->base_id;
1231 range->num_queues = temp[1];
1233 dev_err(dev, "invalid queue range %s\n", range->name);
1234 devm_kfree(dev, range);
1244 range->irqs[i].irq = irq_create_of_mapping(&oirq);
1245 if (range->irqs[i].irq == IRQ_NONE)
1248 range->num_irqs++;
1254 range->irqs[i].cpu_mask = devm_kzalloc(dev,
1256 if (!range->irqs[i].cpu_mask)
1261 cpumask_set_cpu(bit, range->irqs[i].cpu_mask);
1265 range->num_irqs = min(range->num_irqs, range->num_queues);
1266 if (range->num_irqs)
1267 range->flags |= RANGE_HAS_IRQ;
1270 range->flags |= RANGE_RESERVED;
1273 ret = knav_init_acc_range(kdev, node, range);
1275 devm_kfree(dev, range);
1279 range->ops = &knav_gp_range_ops;
1284 start = max(qmgr->start_queue, range->queue_base);
1286 range->queue_base + range->num_queues);
1296 list_add_tail(&range->list, &kdev->queue_ranges);
1297 dev_dbg(dev, "added range %s: %d-%d, %d irqs%s%s%s\n",
1298 range->name, range->queue_base,
1299 range->queue_base + range->num_queues - 1,
1300 range->num_irqs,
1301 (range->flags & RANGE_HAS_IRQ) ? ", has irq" : "",
1302 (range->flags & RANGE_RESERVED) ? ", reserved" : "",
1303 (range->flags & RANGE_HAS_ACCUMULATOR) ? ", acc" : "");
1304 kdev->num_queues_in_use += range->num_queues;
1313 struct device_node *type, *range;
1320 for_each_child_of_node(type, range) {
1322 knav_setup_queue_range(kdev, range);
1329 "no valid queue range found\n");
1334 struct knav_range_info *range)
1336 if (range->ops && range->ops->free_range)
1337 range->ops->free_range(range);
1338 list_del(&range->list);
1339 devm_kfree(kdev->dev, range);
1344 struct knav_range_info *range;
1347 range = first_queue_range(kdev);
1348 if (!range)
1350 knav_free_queue_range(kdev, range);
1425 dev_err(dev, "invalid qmgr queue range\n");
1663 * and stated flag and when initialize the acc range, check
1664 * it and init the range only if pdsp is started.
1715 struct knav_range_info *range,
1726 inst->range = range;
1732 if (range->ops && range->ops->init_queue)
1733 return range->ops->init_queue(range, inst);
1740 struct knav_range_info *range;
1756 for_each_queue_range(kdev, range) {
1757 if (range->ops && range->ops->init_range)
1758 range->ops->init_range(range);
1760 for (id = range->queue_base;
1761 id < range->queue_base + range->num_queues; id++, idx++) {
1762 ret = knav_queue_init_queue(kdev, range,
1767 range->queue_base_inst =
1823 if (of_property_read_u32_array(node, "queue-range", temp, 2)) {
1824 dev_err(dev, "queue-range not specified\n");
1841 /* get usable queue range values from device tree */