Lines Matching refs:kdev

26 static struct knav_device *kdev;
54 #define knav_queue_idx_to_inst(kdev, idx) \
55 (kdev->instances + (idx << kdev->inst_shift))
61 #define for_each_instance(idx, inst, kdev) \
62 for (idx = 0, inst = kdev->instances; \
63 idx < (kdev)->num_queues_in_use; \
64 idx++, inst = knav_queue_idx_to_inst(kdev, idx))
128 dev_warn(range->kdev->dev,
193 knav_queue_match_id_to_inst(struct knav_device *kdev, unsigned id)
198 for_each_instance(idx, inst, kdev) {
207 if (kdev->base_id <= id &&
208 kdev->base_id + kdev->num_queues > id) {
209 id -= kdev->base_id;
210 return knav_queue_match_id_to_inst(kdev, id);
222 qh = devm_kzalloc(inst->kdev->dev, sizeof(*qh), GFP_KERNEL);
256 devm_kfree(inst->kdev->dev, qh);
299 for_each_instance(idx, inst, kdev) {
431 struct knav_device *kdev = inst->kdev;
444 kdev->base_id + inst->id, inst->name);
472 dev_name(kdev->dev), kdev->base_id,
473 kdev->base_id + kdev->num_queues - 1);
474 for_each_instance(idx, inst, kdev)
569 devm_kfree(inst->kdev->dev, qh);
590 ret = qh->inst->kdev->base_id + qh->inst->id;
722 dev_dbg(pool->kdev->dev,
766 if (!kdev)
769 if (!kdev->dev)
772 pool = devm_kzalloc(kdev->dev, sizeof(*pool), GFP_KERNEL);
774 dev_err(kdev->dev, "out of memory allocating pool\n");
778 for_each_region(kdev, reg_itr) {
786 dev_err(kdev->dev, "region-id(%d) not found\n", region_id);
793 dev_err(kdev->dev,
801 pool->kdev = kdev;
802 pool->dev = kdev->dev;
807 dev_err(kdev->dev, "out of descs in region(%d) for pool(%s)\n",
833 list_add_tail(&pool->list, &kdev->pools);
836 dev_err(kdev->dev, "pool(%s) create failed: fragmented desc pool in region(%d)\n",
850 devm_kfree(kdev->dev, pool);
878 devm_kfree(kdev->dev, pool);
980 static void knav_queue_setup_region(struct knav_device *kdev,
992 dev_warn(kdev->dev, "unused region %s\n", region->name);
1002 dev_warn(kdev->dev, "too few descriptors in region %s\n",
1012 dev_err(kdev->dev, "memory alloc failed for region %s\n",
1019 region->dma_start = dma_map_page(kdev->dev, page, 0, size,
1021 if (dma_mapping_error(kdev->dev, region->dma_start)) {
1022 dev_err(kdev->dev, "dma map failed for region %s\n",
1028 pool = devm_kzalloc(kdev->dev, sizeof(*pool), GFP_KERNEL);
1030 dev_err(kdev->dev, "out of memory allocating dummy pool\n");
1037 dev_dbg(kdev->dev,
1046 for_each_qmgr(kdev, qmgr) {
1057 dma_unmap_page(kdev->dev, region->dma_start, size,
1076 static int knav_queue_setup_regions(struct knav_device *kdev,
1079 struct device *dev = kdev->dev;
1120 list_add_tail(&region->list, &kdev->regions);
1122 if (list_empty(&kdev->regions)) {
1128 for_each_region(kdev, region)
1129 knav_queue_setup_region(kdev, region);
1134 static int knav_get_link_ram(struct knav_device *kdev,
1138 struct platform_device *pdev = to_platform_device(kdev->dev);
1167 block->virt = dmam_alloc_coherent(kdev->dev,
1171 dev_err(kdev->dev, "failed to alloc linkram\n");
1181 static int knav_queue_setup_link_ram(struct knav_device *kdev)
1186 for_each_qmgr(kdev, qmgr) {
1187 block = &kdev->link_rams[0];
1188 dev_dbg(kdev->dev, "linkram0: dma:%pad, virt:%p, size:%x\n",
1191 if (kdev->version == QMSS_66AK2G)
1201 dev_dbg(kdev->dev, "linkram1: dma:%pad, virt:%p, size:%x\n",
1209 static int knav_setup_queue_range(struct knav_device *kdev,
1212 struct device *dev = kdev->dev;
1224 range->kdev = kdev;
1228 range->queue_base = temp[0] - kdev->base_id;
1271 ret = knav_init_acc_range(kdev, node, range);
1281 for_each_qmgr(kdev, qmgr) {
1294 list_add_tail(&range->list, &kdev->queue_ranges);
1302 kdev->num_queues_in_use += range->num_queues;
1306 static int knav_setup_queue_pools(struct knav_device *kdev,
1314 knav_setup_queue_range(kdev, range);
1319 if (list_empty(&kdev->queue_ranges)) {
1320 dev_err(kdev->dev, "no valid queue range found\n");
1326 static void knav_free_queue_range(struct knav_device *kdev,
1332 devm_kfree(kdev->dev, range);
1335 static void knav_free_queue_ranges(struct knav_device *kdev)
1340 range = first_queue_range(kdev);
1343 knav_free_queue_range(kdev, range);
1347 static void knav_queue_free_regions(struct knav_device *kdev)
1354 region = first_region(kdev);
1364 devm_kfree(kdev->dev, region);
1368 static void __iomem *knav_queue_map_reg(struct knav_device *kdev,
1377 dev_err(kdev->dev, "Can't translate of node(%pOFn) address for index(%d)\n",
1382 regs = devm_ioremap_resource(kdev->dev, &res);
1384 dev_err(kdev->dev, "Failed to map register base for index(%d) node(%pOFn)\n",
1389 static int knav_queue_init_qmgrs(struct knav_device *kdev,
1392 struct device *dev = kdev->dev;
1421 knav_queue_map_reg(kdev, child,
1424 if (kdev->version == QMSS) {
1426 knav_queue_map_reg(kdev, child,
1431 knav_queue_map_reg(kdev, child,
1432 (kdev->version == QMSS_66AK2G) ?
1436 knav_queue_map_reg(kdev, child,
1437 (kdev->version == QMSS_66AK2G) ?
1442 knav_queue_map_reg(kdev, child,
1443 (kdev->version == QMSS_66AK2G) ?
1447 if (kdev->version == QMSS) {
1449 knav_queue_map_reg(kdev, child,
1454 ((kdev->version == QMSS) &&
1459 if (kdev->version == QMSS) {
1478 if (kdev->version == QMSS_66AK2G)
1481 list_add_tail(&qmgr->list, &kdev->qmgrs);
1491 static int knav_queue_init_pdsps(struct knav_device *kdev,
1494 struct device *dev = kdev->dev;
1507 knav_queue_map_reg(kdev, child,
1510 knav_queue_map_reg(kdev, child,
1513 knav_queue_map_reg(kdev, child,
1516 knav_queue_map_reg(kdev, child,
1535 list_add_tail(&pdsp->list, &kdev->pdsps);
1543 static int knav_queue_stop_pdsp(struct knav_device *kdev,
1554 dev_err(kdev->dev, "timed out on pdsp %s stop\n", pdsp->name);
1562 static int knav_queue_load_pdsp(struct knav_device *kdev,
1574 kdev->dev);
1583 dev_err(kdev->dev, "failed to get firmware for pdsp\n");
1587 dev_info(kdev->dev, "firmware file %s downloaded for PDSP\n",
1601 static int knav_queue_start_pdsp(struct knav_device *kdev,
1624 dev_err(kdev->dev,
1632 static void knav_queue_stop_pdsps(struct knav_device *kdev)
1637 for_each_pdsp(kdev, pdsp)
1638 knav_queue_stop_pdsp(kdev, pdsp);
1641 static int knav_queue_start_pdsps(struct knav_device *kdev)
1646 knav_queue_stop_pdsps(kdev);
1653 for_each_pdsp(kdev, pdsp) {
1654 ret = knav_queue_load_pdsp(kdev, pdsp);
1659 for_each_pdsp(kdev, pdsp) {
1661 ret = knav_queue_start_pdsp(kdev, pdsp);
1673 for_each_qmgr(kdev, qmgr) {
1681 static int knav_queue_init_queue(struct knav_device *kdev,
1692 inst->kdev = kdev;
1705 static int knav_queue_init_queues(struct knav_device *kdev)
1717 kdev->inst_shift = order_base_2(size);
1718 size = (1 << kdev->inst_shift) * kdev->num_queues_in_use;
1719 kdev->instances = devm_kzalloc(kdev->dev, size, GFP_KERNEL);
1720 if (!kdev->instances)
1723 for_each_queue_range(kdev, range) {
1729 ret = knav_queue_init_queue(kdev, range,
1730 knav_queue_idx_to_inst(kdev, idx), id);
1735 knav_queue_idx_to_inst(kdev, base_idx);
1767 kdev = devm_kzalloc(dev, sizeof(struct knav_device), GFP_KERNEL);
1768 if (!kdev) {
1775 kdev->version = QMSS_66AK2G;
1777 platform_set_drvdata(pdev, kdev);
1778 kdev->dev = dev;
1779 INIT_LIST_HEAD(&kdev->queue_ranges);
1780 INIT_LIST_HEAD(&kdev->qmgrs);
1781 INIT_LIST_HEAD(&kdev->pools);
1782 INIT_LIST_HEAD(&kdev->regions);
1783 INIT_LIST_HEAD(&kdev->pdsps);
1798 kdev->base_id = temp[0];
1799 kdev->num_queues = temp[1];
1808 ret = knav_queue_init_qmgrs(kdev, qmgrs);
1816 ret = knav_queue_init_pdsps(kdev, pdsps);
1820 ret = knav_queue_start_pdsps(kdev);
1833 ret = knav_setup_queue_pools(kdev, queue_pools);
1838 ret = knav_get_link_ram(kdev, "linkram0", &kdev->link_rams[0]);
1840 dev_err(kdev->dev, "could not setup linking ram\n");
1844 ret = knav_get_link_ram(kdev, "linkram1", &kdev->link_rams[1]);
1852 ret = knav_queue_setup_link_ram(kdev);
1862 ret = knav_queue_setup_regions(kdev, regions);
1867 ret = knav_queue_init_queues(kdev);
1879 knav_queue_stop_pdsps(kdev);
1880 knav_queue_free_regions(kdev);
1881 knav_free_queue_ranges(kdev);