Lines Matching defs:info

279 static int sec_clk_en(struct sec_dev_info *info)
281 void __iomem *base = info->regs[SEC_COMMON];
291 dev_err(info->dev, "sec clock enable fail!\n");
296 static int sec_clk_dis(struct sec_dev_info *info)
298 void __iomem *base = info->regs[SEC_COMMON];
308 dev_err(info->dev, "sec clock disable fail!\n");
313 static int sec_reset_whole_module(struct sec_dev_info *info)
315 void __iomem *base = info->regs[SEC_COMMON];
331 dev_err(info->dev, "Reset req failed\n");
350 dev_err(info->dev, "Reset dreq failed\n");
358 static void sec_bd_endian_little(struct sec_dev_info *info)
360 void __iomem *addr = info->regs[SEC_SAA] + SEC_CTRL2_REG;
371 static void sec_cache_config(struct sec_dev_info *info)
374 void __iomem *addr = info->regs[SEC_SAA] + SEC_CTRL_REG;
376 domain = iommu_get_domain_for_dev(info->dev);
385 static void sec_data_axiwr_otsd_cfg(struct sec_dev_info *info, u32 cfg)
387 void __iomem *addr = info->regs[SEC_SAA] + SEC_CTRL2_REG;
397 static void sec_data_axird_otsd_cfg(struct sec_dev_info *info, u32 cfg)
399 void __iomem *addr = info->regs[SEC_SAA] + SEC_CTRL2_REG;
409 static void sec_clk_gate_en(struct sec_dev_info *info, bool clkgate)
411 void __iomem *addr = info->regs[SEC_SAA] + SEC_CTRL2_REG;
422 static void sec_comm_cnt_cfg(struct sec_dev_info *info, bool clr_ce)
424 void __iomem *addr = info->regs[SEC_SAA] + SEC_COMMON_CNT_CLR_CE_REG;
435 static void sec_commsnap_en(struct sec_dev_info *info, bool snap_en)
437 void __iomem *addr = info->regs[SEC_SAA] + SEC_COMMON_CNT_CLR_CE_REG;
448 static void sec_ipv6_hashmask(struct sec_dev_info *info, u32 hash_mask[])
450 void __iomem *base = info->regs[SEC_SAA];
458 static int sec_ipv4_hashmask(struct sec_dev_info *info, u32 hash_mask)
461 dev_err(info->dev, "Sec Ipv4 Hash Mask Input Error!\n ");
466 info->regs[SEC_SAA] + SEC_IPV4_MASK_TABLE_REG);
471 static void sec_set_dbg_bd_cfg(struct sec_dev_info *info, u32 cfg)
473 void __iomem *addr = info->regs[SEC_SAA] + SEC_DEBUG_BD_CFG_REG;
488 static void sec_saa_getqm_en(struct sec_dev_info *info, u32 saa_indx, u32 en)
490 void __iomem *addr = info->regs[SEC_SAA] + SEC_SAA_BASE +
502 static void sec_saa_int_mask(struct sec_dev_info *info, u32 saa_indx,
506 info->regs[SEC_SAA] + SEC_SAA_BASE + SEC_ST_INTMSK1_REG +
510 static void sec_streamid(struct sec_dev_info *info, int i)
516 info->regs[SEC_SAA] + SEC_Q_VMID_CFG_REG(i));
631 static struct sec_queue *sec_alloc_queue(struct sec_dev_info *info)
635 mutex_lock(&info->dev_lock);
639 if (!info->queues[i].in_use) {
640 info->queues[i].in_use = true;
641 info->queues_in_use++;
642 mutex_unlock(&info->dev_lock);
644 return &info->queues[i];
646 mutex_unlock(&info->dev_lock);
653 struct sec_dev_info *info = queue->dev_info;
656 dev_err(info->dev, "No queue %u\n", queue->queue_id);
661 dev_err(info->dev, "Queue %u is idle\n", queue->queue_id);
665 mutex_lock(&info->dev_lock);
667 info->queues_in_use--;
668 mutex_unlock(&info->dev_lock);
730 struct sec_dev_info *info = queue->dev_info;
737 dev_err(info->dev, "request irq(%d) failed %d\n", irq, ret);
772 static struct sec_queue *sec_queue_alloc_start(struct sec_dev_info *info)
776 queue = sec_alloc_queue(info);
778 dev_err(info->dev, "alloc sec queue failed! %ld\n",
798 struct sec_dev_info *info;
802 info = sec_device_get();
803 if (!info)
806 queue = sec_queue_alloc_start(info);
920 static int sec_hw_init(struct sec_dev_info *info)
927 domain = iommu_get_domain_for_dev(info->dev);
934 info->num_saas = 5;
937 info->num_saas = 10;
939 writel_relaxed(GENMASK(info->num_saas - 1, 0),
940 info->regs[SEC_SAA] + SEC_CLK_EN_REG);
943 sec_bd_endian_little(info);
945 sec_cache_config(info);
948 sec_data_axiwr_otsd_cfg(info, 0x7);
949 sec_data_axird_otsd_cfg(info, 0x7);
952 sec_clk_gate_en(info, true);
955 sec_comm_cnt_cfg(info, false);
958 sec_commsnap_en(info, false);
960 writel_relaxed((u32)~0, info->regs[SEC_SAA] + SEC_FSM_MAX_CNT_REG);
962 ret = sec_ipv4_hashmask(info, sec_ipv4_mask);
964 dev_err(info->dev, "Failed to set ipv4 hashmask %d\n", ret);
968 sec_ipv6_hashmask(info, sec_ipv6_mask);
971 sec_set_dbg_bd_cfg(info, 0);
975 sec_streamid(info, i);
978 info->regs[SEC_SAA] +
983 for (i = 0; i < info->num_saas; i++) {
984 sec_saa_getqm_en(info, i, 1);
985 sec_saa_int_mask(info, i, 0);
991 static void sec_hw_exit(struct sec_dev_info *info)
996 sec_saa_int_mask(info, i, (u32)~0);
997 sec_saa_getqm_en(info, i, 0);
1001 static void sec_queue_base_init(struct sec_dev_info *info,
1004 queue->dev_info = info;
1007 "%s_%d", dev_name(info->dev), queue->queue_id);
1010 static int sec_map_io(struct sec_dev_info *info, struct platform_device *pdev)
1019 dev_err(info->dev, "Memory resource %d not found\n", i);
1023 info->regs[i] = devm_ioremap(info->dev, res->start,
1025 if (!info->regs[i]) {
1026 dev_err(info->dev,
1036 static int sec_base_init(struct sec_dev_info *info,
1041 ret = sec_map_io(info, pdev);
1045 ret = sec_clk_en(info);
1049 ret = sec_reset_whole_module(info);
1053 ret = sec_hw_init(info);
1060 sec_clk_dis(info);
1065 static void sec_base_exit(struct sec_dev_info *info)
1067 sec_hw_exit(info);
1068 sec_clk_dis(info);
1142 static int sec_queue_config(struct sec_dev_info *info, struct sec_queue *queue,
1147 sec_queue_base_init(info, queue, queue_id);
1155 dev_err(info->dev, "Queue map failed %d\n", ret);
1165 static void sec_queue_unconfig(struct sec_dev_info *info,
1172 static int sec_id_alloc(struct sec_dev_info *info)
1186 info->sec_id = i;
1187 sec_devices[info->sec_id] = info;
1195 static void sec_id_free(struct sec_dev_info *info)
1198 sec_devices[info->sec_id] = NULL;
1204 struct sec_dev_info *info;
1215 info = devm_kzalloc(dev, (sizeof(*info)), GFP_KERNEL);
1216 if (!info)
1219 info->dev = dev;
1220 mutex_init(&info->dev_lock);
1222 info->hw_sgl_pool = dmam_pool_create("sgl", dev,
1224 if (!info->hw_sgl_pool) {
1229 ret = sec_base_init(info, pdev);
1236 ret = sec_queue_config(info, &info->queues[i], i);
1240 ret = sec_queue_irq_init(&info->queues[i]);
1242 sec_queue_unconfig(info, &info->queues[i]);
1254 platform_set_drvdata(pdev, info);
1256 ret = sec_id_alloc(info);
1266 sec_queue_irq_uninit(&info->queues[j]);
1267 sec_queue_unconfig(info, &info->queues[j]);
1269 sec_base_exit(info);
1276 struct sec_dev_info *info = platform_get_drvdata(pdev);
1280 sec_id_free(info);
1285 sec_queue_irq_uninit(&info->queues[i]);
1286 sec_queue_unconfig(info, &info->queues[i]);
1289 sec_base_exit(info);