MCPcopy Create free account
hub / github.com/F-Stack/f-stack / ccp_add_device

Function ccp_add_device

dpdk/drivers/crypto/ccp/ccp_dev.c:483–608  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

481}
482
483static int
484ccp_add_device(struct ccp_device *dev)
485{
486 int i;
487 uint32_t qmr, status_lo, status_hi, dma_addr_lo, dma_addr_hi;
488 uint64_t status;
489 struct ccp_queue *cmd_q;
490 const struct rte_memzone *q_mz;
491 void *vaddr;
492
493 if (dev == NULL)
494 return -1;
495
496 dev->id = ccp_dev_id++;
497 dev->qidx = 0;
498 vaddr = (void *)(dev->pci->mem_resource[2].addr);
499
500 if (dev->pci->id.device_id == AMD_PCI_CCP_5B) {
501 CCP_WRITE_REG(vaddr, CMD_TRNG_CTL_OFFSET, 0x00012D57);
502 CCP_WRITE_REG(vaddr, CMD_CONFIG_0_OFFSET, 0x00000003);
503 for (i = 0; i < 12; i++) {
504 CCP_WRITE_REG(vaddr, CMD_AES_MASK_OFFSET,
505 CCP_READ_REG(vaddr, TRNG_OUT_REG));
506 }
507 CCP_WRITE_REG(vaddr, CMD_QUEUE_MASK_OFFSET, 0x0000001F);
508 CCP_WRITE_REG(vaddr, CMD_QUEUE_PRIO_OFFSET, 0x00005B6D);
509 CCP_WRITE_REG(vaddr, CMD_CMD_TIMEOUT_OFFSET, 0x00000000);
510
511 CCP_WRITE_REG(vaddr, LSB_PRIVATE_MASK_LO_OFFSET, 0x3FFFFFFF);
512 CCP_WRITE_REG(vaddr, LSB_PRIVATE_MASK_HI_OFFSET, 0x000003FF);
513
514 CCP_WRITE_REG(vaddr, CMD_CLK_GATE_CTL_OFFSET, 0x00108823);
515 }
516 CCP_WRITE_REG(vaddr, CMD_REQID_CONFIG_OFFSET, 0x0);
517
518 /* Copy the private LSB mask to the public registers */
519 status_lo = CCP_READ_REG(vaddr, LSB_PRIVATE_MASK_LO_OFFSET);
520 status_hi = CCP_READ_REG(vaddr, LSB_PRIVATE_MASK_HI_OFFSET);
521 CCP_WRITE_REG(vaddr, LSB_PUBLIC_MASK_LO_OFFSET, status_lo);
522 CCP_WRITE_REG(vaddr, LSB_PUBLIC_MASK_HI_OFFSET, status_hi);
523 status = ((uint64_t)status_hi<<30) | ((uint64_t)status_lo);
524
525 dev->cmd_q_count = 0;
526 /* Find available queues */
527 qmr = CCP_READ_REG(vaddr, Q_MASK_REG);
528 for (i = 0; i < MAX_HW_QUEUES; i++) {
529 if (!(qmr & (1 << i)))
530 continue;
531 cmd_q = &dev->cmd_q[dev->cmd_q_count++];
532 cmd_q->dev = dev;
533 cmd_q->id = i;
534 cmd_q->qidx = 0;
535 cmd_q->qsize = Q_SIZE(Q_DESC_SIZE);
536
537 cmd_q->reg_base = (uint8_t *)vaddr +
538 CMD_Q_STATUS_INCR * (i + 1);
539
540 /* CCP queue memory */

Callers 1

ccp_probe_deviceFunction · 0.85

Calls 9

snprintfFunction · 0.85
ccp_find_lsb_regionsFunction · 0.85
ccp_assign_lsbsFunction · 0.85
ccp_lsb_allocFunction · 0.85
low32_valueFunction · 0.70
high32_valueFunction · 0.70
rte_atomic64_initFunction · 0.50
rte_atomic64_setFunction · 0.50

Tested by

no test coverage detected