void mvCesaDebugRegs(void) { MV_U8 chan = 0; mvOsPrintf("\t CESA Registers:\n"); for (chan = 0; chan < MV_CESA_CHANNELS; chan++) { mvOsPrintf("\n\nChannel %d:\n", chan); mvOsPrintf("===========\n"); mvOsPrintf("MV_CESA_CMD_REG : 0x%X = 0x%08x\n", MV_CESA_CMD_REG(chan), MV_REG_READ(MV_CESA_CMD_REG(chan))); mvOsPrintf("MV_CESA_CHAN_DESC_OFFSET_REG : 0x%X = 0x%08x\n", MV_CESA_CHAN_DESC_OFFSET_REG(chan), MV_REG_READ(MV_CESA_CHAN_DESC_OFFSET_REG(chan))); mvOsPrintf("MV_CESA_CFG_REG : 0x%X = 0x%08x\n", MV_CESA_CFG_REG(chan), MV_REG_READ(MV_CESA_CFG_REG(chan))); mvOsPrintf("MV_CESA_STATUS_REG : 0x%X = 0x%08x\n", MV_CESA_STATUS_REG(chan), MV_REG_READ(MV_CESA_STATUS_REG(chan))); mvOsPrintf("MV_CESA_ISR_CAUSE_REG : 0x%X = 0x%08x\n", MV_CESA_ISR_CAUSE_REG(chan), MV_REG_READ(MV_CESA_ISR_CAUSE_REG(chan))); mvOsPrintf("MV_CESA_ISR_MASK_REG : 0x%X = 0x%08x\n", MV_CESA_ISR_MASK_REG(chan), MV_REG_READ(MV_CESA_ISR_MASK_REG(chan))); #ifdef MV_CESA_INT_COALESCING_SUPPORT mvOsPrintf("MV_CESA_INT_COAL_TH_REG : 0x%X = 0x%08x\n", MV_CESA_INT_COAL_TH_REG(chan), MV_REG_READ(MV_CESA_INT_COAL_TH_REG(chan))); mvOsPrintf("MV_CESA_INT_TIME_TH_REG : 0x%X = 0x%08x\n", MV_CESA_INT_TIME_TH_REG(chan), MV_REG_READ(MV_CESA_INT_TIME_TH_REG(chan))); #endif #if (MV_CESA_VERSION >= 2) mvOsPrintf("MV_CESA_TDMA_CTRL_REG : 0x%X = 0x%08x\n", MV_CESA_TDMA_CTRL_REG(chan), MV_REG_READ(MV_CESA_TDMA_CTRL_REG(chan))); mvOsPrintf("MV_CESA_TDMA_BYTE_COUNT_REG : 0x%X = 0x%08x\n", MV_CESA_TDMA_BYTE_COUNT_REG(chan), MV_REG_READ(MV_CESA_TDMA_BYTE_COUNT_REG(chan))); mvOsPrintf("MV_CESA_TDMA_SRC_ADDR_REG : 0x%X = 0x%08x\n", MV_CESA_TDMA_SRC_ADDR_REG(chan), MV_REG_READ(MV_CESA_TDMA_SRC_ADDR_REG(chan))); mvOsPrintf("MV_CESA_TDMA_DST_ADDR_REG : 0x%X = 0x%08x\n", MV_CESA_TDMA_DST_ADDR_REG(chan), MV_REG_READ(MV_CESA_TDMA_DST_ADDR_REG(chan))); mvOsPrintf("MV_CESA_TDMA_NEXT_DESC_PTR_REG : 0x%X = 0x%08x\n", MV_CESA_TDMA_NEXT_DESC_PTR_REG(chan), MV_REG_READ(MV_CESA_TDMA_NEXT_DESC_PTR_REG(chan))); mvOsPrintf("MV_CESA_TDMA_CURR_DESC_PTR_REG : 0x%X = 0x%08x\n", MV_CESA_TDMA_CURR_DESC_PTR_REG(chan), MV_REG_READ(MV_CESA_TDMA_CURR_DESC_PTR_REG(chan))); mvOsPrintf("MV_CESA_TDMA_ERROR_CAUSE_REG : 0x%X = 0x%08x\n", MV_CESA_TDMA_ERROR_CAUSE_REG(chan), MV_REG_READ(MV_CESA_TDMA_ERROR_CAUSE_REG(chan))); mvOsPrintf("MV_CESA_TDMA_ERROR_MASK_REG : 0x%X = 0x%08x\n", MV_CESA_TDMA_ERROR_MASK_REG(chan), MV_REG_READ(MV_CESA_TDMA_ERROR_CAUSE_REG(chan))); #endif } }
int cesa_init(void) { u8 chan = 0; int i; const char *irq_str[] = {"cesa0", "cesa1"}; printk(KERN_INFO "in %s\n", __func__); for (i = 0; i < 2; i++) spin_lock_init(&cesa_lock[i]); if (mvCtrlPwrClckGet(CESA_UNIT_ID, 0) == MV_FALSE) return 0; if (MV_OK != my_mvSysCesaInit(1, 256, NULL)) { printk(KERN_INFO "%s,%d: mvCesaInit Failed. \n", __FILE__, __LINE__); return EINVAL; } /* clear and unmask Int */ MV_REG_WRITE(MV_CESA_ISR_CAUSE_REG(chan), 0); MV_REG_WRITE(MV_CESA_ISR_MASK_REG(chan), MV_CESA_CAUSE_ACC_DMA_MASK); if (request_irq(CESA_IRQ(0), nfp_sec_interrupt_handler_0, (IRQF_DISABLED) , irq_str[chan], NULL)) { printk(KERN_INFO "%s,%d: cannot assign irq %x\n", __FILE__, __LINE__, CESA_IRQ(chan)); return EINVAL; } chan = 1; MV_REG_WRITE(MV_CESA_ISR_CAUSE_REG(chan), 0); MV_REG_WRITE(MV_CESA_ISR_MASK_REG(chan), MV_CESA_CAUSE_ACC_DMA_MASK); if (request_irq(CESA_IRQ(1), nfp_sec_interrupt_handler_1, (IRQF_DISABLED) , irq_str[chan], NULL)) { printk(KERN_INFO "%s,%d: cannot assign irq %x\n", __FILE__, __LINE__, CESA_IRQ(chan)); return EINVAL; } atomic_set(&req_count[0], 0); atomic_set(&req_count[1], 0); mvOsPrintf("MV_CESA_TDMA_CTRL_REG address 0 %08x\n\n", MV_CESA_TDMA_CTRL_REG(0)); mvOsPrintf("MV_CESA_TDMA_CTRL_REG address 1 %08x\n\n", MV_CESA_TDMA_CTRL_REG(1)); mvOsPrintf("MV_CESA_TDMA_CTRL_REG(0) %08x\n", MV_REG_READ(MV_CESA_TDMA_CTRL_REG(0))); mvOsPrintf("MV_CESA_TDMA_CTRL_REG(1) %08x\n", MV_REG_READ(MV_CESA_TDMA_CTRL_REG(1))); memset(&sa, 0, sizeof(MV_NFP_SEC_SA_ENTRY)); sa.digestSize = MV_CESA_SHA1_DIGEST_SIZE; sa.ivSize = MV_CESA_AES_BLOCK_SIZE; sa.spi = 3; sa.tunProt = MV_NFP_SEC_TUNNEL; sa.encap = MV_NFP_SEC_ESP; sa.seqNum = 4; sa.tunnelHdr.sIp = 0x6400A8C0; sa.tunnelHdr.dIp = 0x6401A8C0; sa.tunnelHdr.outIfIndex = 0; sa.lifeTime = 0; sa.secOp = MV_NFP_SEC_ENCRYPT; strcpy(sa.tunnelHdr.dstMac, "aabbccddeeff"); strcpy(sa.tunnelHdr.srcMac, "abacadaeafaa"); return 0; }