 |
libxcoder
5.4.0
|
Go to the documentation of this file.
38 #define NI_NVME_IDENTITY_CMD_DATA_SZ 4096
237 typedef struct _ni_nvme_user_io
253 typedef struct _ni_nvme_passthrough_cmd
273 }ni_nvme_passthrough_cmd_t;
275 typedef ni_nvme_passthrough_cmd_t ni_nvme_admin_cmd_t;
277 #define NVME_IOCTL_ID _IO('N', 0x40)
278 #define NVME_IOCTL_ADMIN_CMD _IOWR('N', 0x41, ni_nvme_admin_cmd_t)
279 #define NVME_IOCTL_SUBMIT_IO _IOW('N', 0x42, ni_nvme_user_io_t)
280 #define NVME_IOCTL_IO_CMD _IOWR('N', 0x43, ni_nvme_passthrough_cmd_t)
281 #define NVME_IOCTL_RESET _IO('N', 0x44)
282 #define NVME_IOCTL_SUBSYS_RESET _IO('N', 0x45)
283 #define NVME_IOCTL_RESCAN _IO('N', 0x46)
285 #endif //__linux__ defined
288 typedef struct _ni_nvme_completion_result
294 uint16_t ui16CommandId;
296 }ni_nvme_completion_result_t, *p_ni_nvme_completion_result_t;
463 #if (PLATFORM_ENDIANESS == NI_BIG_ENDIAN_PLATFORM)
464 static inline uint64_t ni_htonll(uint64_t val)
469 return ((((uint64_t)htonl((val)&0xFFFFFFFFUL)) << 32) | htonl((uint32_t)((val) >> 32)));
472 static inline uint64_t ni_ntohll(uint64_t val)
477 return ((((uint64_t)ntohl((val)&0xFFFFFFFFUL)) << 32) | ntohl((uint32_t)((val) >> 32)));
480 static inline uint32_t ni_htonl(uint32_t val)
484 static inline uint16_t ni_htons(uint16_t val)
488 static inline uint32_t ni_ntohl(uint32_t val)
492 static inline uint16_t ni_ntohs(uint16_t val)
497 static inline uint64_t ni_ntohll(uint64_t val)
501 static inline uint64_t ni_htonll(uint64_t val)
505 static inline uint32_t ni_htonl(uint32_t val)
509 static inline uint16_t ni_htons(uint16_t val)
513 static inline uint32_t ni_ntohl(uint32_t val)
517 static inline uint16_t ni_ntohs(uint16_t val)
523 #define WRITE_INSTANCE_SET_DW2_SUBFRAME_IDX(dst, size) (dst = (size & 0xFFFFFFFFUL))
524 #define WRITE_INSTANCE_SET_DW3_SUBFRAME_SIZE(dst, size) (dst = (size & 0xFFFFFFFFUL))
526 #define CREATE_SESSION_SET_DW10_SUBTYPE(dst) (dst = (nvme_open_xcoder_create_session & 0xFFFFUL))
527 #define CREATE_SESSION_SET_DW11_INSTANCE(dst, instance) (dst = (instance & 0xFFFFUL))
528 #define CREATE_SESSION_SET_DW12_DEC_CID(dst, cid) (dst = (cid & 0xFFFFUL))
529 #define CREATE_SESSION_SET_DW12_DEC_HWF(dst, hwf) (dst = (((hwf << 16) & 0xFFFF0000UL) | (dst & 0xFFFFUL)))
531 #define CREATE_SESSION_SET_DW12_SCL_OPC(dst, opc) (dst = (opc & 0xFFFFUL))
533 #define CREATE_SESSION_SET_DW12_ENC_CID_FRWIDTH(dst, cid, width) (dst = (((width << 16) & 0xFFFF0000UL) | (cid & 0xFFFFUL)))
534 #define CREATE_SESSION_SET_DW13_ENC_FRHIGHT(dst, hight) (dst = (hight & 0xFFFFUL))
535 #define CREATE_SESSION_SET_DW14_MODEL_LOAD(dst, load) (dst = (load & 0xFFFFFFFFUL))
537 #define CREATE_SESSION_SET_DW12_AI_HWF(dst, hwf) \
538 (dst = (((hwf << 16) & 0xFFFF0000UL) | (dst & 0xFFFFUL)))
540 #define DESTROY_SESSION_SET_DW10_INSTANCE(dst, sid) (dst = (((sid << 16) & 0xFFFF0000UL) | (nvme_close_xcoder_destroy_session & 0xFFFFUL)))
542 #define READ_INSTANCE_SET_DW10_SUBTYPE(dst, sid) (dst = (((sid << 16) & 0xFFFF0000UL) | (nvme_write_xcoder_write_instance & 0xFFFFUL)))
543 #define READ_INSTANCE_SET_DW11_INSTANCE(dst, instance) (dst = (instance & 0xFFFFUL))
544 #define READ_INSTANCE_SET_DW15_SIZE(dst, size) (dst = (size & 0xFFFFFFFFUL))
546 #define WRITE_INSTANCE_SET_DW10_SUBTYPE(dst, sid) (dst = (((sid << 16) & 0xFFFF0000UL) | (nvme_write_xcoder_write_instance & 0xFFFFUL)))
547 #define WRITE_INSTANCE_SET_DW11_INSTANCE(dst, instance) (dst = (instance & 0xFFFFUL))
548 #define WRITE_INSTANCE_SET_DW11_PAGEOFFSET(dst, pageoffset) (dst = (((pageoffset << 16) | dst)))
549 #define WRITE_INSTANCE_SET_DW12_ISHWDESC(dst, ishwdesc) (dst = (ishwdesc & 0xFFFFUL))
550 #define WRITE_INSTANCE_SET_DW12_FRAMEINSTID(dst, fid) (dst = (0xFFFFUL & dst) | ((fid<<16) & 0xFFFF0000UL))
552 #define WRITE_INSTANCE_SET_DW15_SIZE(dst, size) (dst = (size & 0xFFFFFFFFUL))
554 #define QUERY_SESSION_SET_DW10_SUBTYPE(dst, sid) (dst = (((sid << 16) & 0xFFFF0000UL) | (nvme_query_xcoder_query_session & 0xFFFFUL)))
555 #define QUERY_SESSION_SET_DW11_INSTANCE(dst, instance) (dst = (instance & 0xFFFFUL))
556 #define QUERY_SESSION_SET_DW11_SESSION_STATS(dst) (dst = (nvme_query_xcoder_session_get_stats & 0xFFFFUL))
557 #define QUERY_SESSION_SET_DW15_SIZE(dst, size) (dst = (size & 0xFFFFFFFFUL))
559 #define QUERY_INSTANCE_SET_DW10_SUBTYPE(dst, sid) (dst = (((sid << 16) & 0xFFFF0000UL) | (nvme_query_xcoder_query_instance & 0xFFFFUL)))
560 #define QUERY_INSTANCE_SET_DW11_INSTANCE_STATUS(dst, instance) (dst = (((nvme_query_xcoder_instance_get_status << 16) & 0xFFFF0000UL) | (instance & 0xFFFFUL)))
561 #define QUERY_INSTANCE_SET_DW11_INSTANCE_STREAM_INFO(dst, instance) (dst = (((nvme_query_xcoder_instance_get_stream_info << 16) & 0xFFFF0000UL) | (instance & 0xFFFFUL)))
562 #define QUERY_INSTANCE_SET_DW11_INSTANCE_END_OF_OUTPUT(dst, instance) (dst = (((nvme_query_xcoder_instance_get_end_of_output << 16) & 0xFFFF0000UL) | (instance & 0xFFFFUL)))
564 #define QUERY_INSTANCE_SET_DW11_INSTANCE_BUF_INFO(dst, rw_type, inst_type) (dst = (((rw_type << 16) & 0xFFFF0000UL) | (inst_type & 0xFFFFUL)))
566 #define QUERY_INSTANCE_SET_DW15_SIZE(dst, size) (dst = (size & 0xFFFFFFFFUL))
568 #define QUERY_GENERAL_SET_DW10_SUBTYPE(dst) (dst = ( (nvme_query_xcoder_query_general & 0xFFFFUL)))
569 #define QUERY_GENERAL_SET_DW11_INSTANCE_STATUS(dst, instance) (dst = (((nvme_query_xcoder_general_get_status << 16) & 0xFFFF0000UL) | (instance & 0xFFFFUL)))
570 #define CONFIG_SESSION_SET_DW10_SESSION_ID(dst, sid) (dst = (((sid << 16) & 0xFFFF0000UL) | (nvme_config_xcoder_config_session & 0xFFFFUL)))
571 #define CONFIG_SESSION_SET_DW11_SUBTYPE(dst, subtype) (dst = (((0 << 16) & 0xFFFF0000UL) | (subtype & 0xFFFFUL)))
572 #define CONFIG_SESSION_SET_DW15_SIZE(dst, size) (dst = (size & 0xFFFFFFFFUL))
574 #define CONFIG_INSTANCE_SET_DW10_SUBTYPE(dst, sid) (dst = (((sid << 16) & 0xFFFF0000UL) | (nvme_config_xcoder_config_instance & 0xFFFFUL)))
575 #define CONFIG_INSTANCE_SET_DW11_SOS(dst, instance) (dst = (((nvme_config_xcoder_config_set_sos << 16) & 0xFFFF0000UL) | (instance & 0xFFFFUL)))
576 #define CONFIG_INSTANCE_SET_DW11_EOS(dst, instance) (dst = (((nvme_config_xcoder_config_set_eos << 16) & 0xFFFF0000UL) | (instance & 0xFFFFUL)))
577 #define CONFIG_INSTANCE_SET_DW11_DEC_PARAMS(dst, instance) (dst = (((nvme_config_xcoder_config_set_dec_params << 16) & 0xFFFF0000UL) | (instance & 0xFFFFUL)))
578 #define CONFIG_INSTANCE_SET_DW11_ENC_PARAMS(dst, instance) (dst = (((nvme_config_xcoder_config_set_enc_params << 16) & 0xFFFF0000UL) | (instance & 0xFFFFUL)))
579 #define CONFIG_INSTANCE_SET_DW11_ENC_FRAME_PARAMS(dst, instance) (dst = (((nvme_config_xcoder_config_set_enc_frame_params << 16) & 0xFFFF0000UL) | (instance & 0xFFFFUL)))
580 #define CONFIG_INSTANCE_SET_DW11_FLUSH(dst, instance) (dst = (((nvme_config_xcoder_config_flush << 16) & 0xFFFF0000UL) | (instance & 0xFFFFUL)))
581 #define CONFIG_INSTANCE_SET_DW11_UPDATE_PARAMS(dst, instance) (dst = (((nvme_config_xcoder_config_update_enc_params << 16) & 0xFFFF0000UL) | (instance & 0xFFFFUL)))
582 #define CONFIG_INSTANCE_SET_DW11_ALLOC_FRAME(dst, instance) (dst = (((nvme_config_xcoder_config_alloc_frame << 16) & 0xFFFF0000UL) | (instance & 0xFFFFUL)))
583 #define CONFIG_INSTANCE_SET_DW11_WRITE_LEN(dst, instance) (dst = (((nvme_config_xcoder_config_set_write_legth << 16) & 0xFFFF0000UL) | (instance & 0xFFFFUL)))
585 #define CONFIG_INSTANCE_SET_DW11_AI_PARAMS(dst, instance) \
586 (dst = (((nvme_config_xcoder_config_set_network_binary << 16) & \
588 (instance & 0xFFFFUL)))
590 #define CONFIG_INSTANCE_SET_DW15_SIZE(dst, size) (dst = (size & 0xFFFFFFFFUL))
591 #define RECYCLE_BUFFER_SET_DW10_BUFID(dst, bid) (dst = (bid & 0xFFFFUL))
593 #ifndef XCODER_IO_RW_ENABLED
595 ni_device_handle_t fd,
597 uint32_t data_len,
void *data,
602 void *data, uint32_t *pResult);
606 ni_device_handle_t fd,
608 uint32_t data_len,
void *data,
612 uint32_t hw_id, uint32_t *inst_id);
619 int32_t ni_nvme_send_admin_pass_through_command(ni_device_handle_t fd, ni_nvme_passthrough_cmd_t* cmd);
620 int32_t ni_nvme_send_io_pass_through_command(ni_device_handle_t fd, ni_nvme_passthrough_cmd_t* cmd);
624 #define NI_DATA_BUFFER_LEN 4096
625 #define LBA_BIT_OFFSET 12 //logic block size = 4K
628 #define NI_SUB_BIT_OFFSET 4
629 #define NI_OP_BIT_OFFSET 8
630 #define NI_INSTANCE_TYPE_OFFSET 19
631 #define NI_SESSION_ID_OFFSET 22
633 #define NI_SESSION_ID_SHIFT_HI 3
635 #define MBs(xMB) ((xMB)*1024*1024)
636 #define MBs_to_4k(xMB) ((xMB)*1024*1024/4096) // MB to 4K
638 #define START_OFFSET_IN_4K MBs_to_4k(512) // 0x00 -- 0x20000
640 #define CTL_OFFSET_IN_4K(op,sub,subtype) (START_OFFSET_IN_4K+(((op)<<NI_OP_BIT_OFFSET) + \
641 ((sub)<<NI_SUB_BIT_OFFSET)+subtype)) // 0x20000 -- 0x28000, each (op,sub,subtype) has 4k bytes
642 #define RD_OFFSET_IN_4K \
643 (START_OFFSET_IN_4K + MBs_to_4k(128)) // 0x28000 -- 0x38000
645 #define WR_OFFSET_IN_4K \
646 (RD_OFFSET_IN_4K + MBs_to_4k(256)) // 0x38000 -- 0x48000
648 #define LOAD_OFFSET_IN_4K \
649 (WR_OFFSET_IN_4K + MBs_to_4k(256)) // 0x48000 -- 0x50000
651 #define WR_METADATA_OFFSET_IN_4K \
652 (MBs_to_4k(1024) + MBs_to_4k(256)) // 0x50000 -- 0x58000
654 #define DOWNLOAD_OFFSET_IN_4K \
655 (WR_METADATA_OFFSET_IN_4K + MBs_to_4k(128)) // 0x58000 -- 0x68000
659 #define DUMP_LOG_OFFSET_IN_4K (LOAD_OFFSET_IN_4K + MBs_to_4k(8))
661 #define NVME_LOG_OFFSET_IN_4K (DUMP_LOG_OFFSET_IN_4K)
662 #define EP_LOG_OFFSET_IN_4K (NVME_LOG_OFFSET_IN_4K + MBs_to_4k(1))
663 #define DP_LOG_OFFSET_IN_4K (EP_LOG_OFFSET_IN_4K + MBs_to_4k(1))
664 #define TP_LOG_OFFSET_IN_4K (DP_LOG_OFFSET_IN_4K + MBs_to_4k(1))
665 #define FP_LOG_OFFSET_IN_4K (TP_LOG_OFFSET_IN_4K + MBs_to_4k(1))
667 #define HIGH_OFFSET_IN_4K(sid, instance) \
668 ((((sid & 0x1FFUL) << NI_SESSION_ID_SHIFT_HI) | (instance)) \
669 << NI_INSTANCE_TYPE_OFFSET) // 1024MB +128MB from range 0x0 to 0x40000 + 0x40000 to 0x48000
670 #define GAP(opcode) ((opcode) - nvme_admin_cmd_xcoder_open)
674 #define WRITE_INSTANCE_W(sid,instance) HIGH_OFFSET_IN_4K(sid,instance) + WR_OFFSET_IN_4K
676 #define WRITE_METADATA_W(sid, instance) \
677 HIGH_OFFSET_IN_4K(sid, instance) + WR_METADATA_OFFSET_IN_4K
680 #define READ_INSTANCE_R(sid,instance) HIGH_OFFSET_IN_4K(sid,instance) + RD_OFFSET_IN_4K
683 #define DOWNLOAD_FRAMEIDX_R(frame_id) ((frame_id & 0xFFFUL) << NI_INSTANCE_TYPE_OFFSET) + DOWNLOAD_OFFSET_IN_4K
687 #define IDENTIFY_DEVICE_R HIGH_OFFSET_IN_4K(0,0) + CTL_OFFSET_IN_4K(GAP(0xD9), 1, 0)
690 #define OPEN_GET_SID_R(instance) HIGH_OFFSET_IN_4K(0,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_open), \
691 nvme_open_xcoder_create_session,2)
692 #define OPEN_SESSION_W(sid,instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_open), \
693 nvme_open_xcoder_create_session,0)
694 #define OPEN_SESSION_CODEC(instance, codec, param) HIGH_OFFSET_IN_4K((param & 0x3F),instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_open), \
695 nvme_open_xcoder_create_session,codec)
696 #define OPEN_ADD_CODEC(instance, codec, param) HIGH_OFFSET_IN_4K(param,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_open), \
697 nvme_open_xcoder_add_session,codec)
701 #define CLOSE_SESSION_R(sid,instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_close), \
702 nvme_close_xcoder_destroy_session,0)
705 #define QUERY_SESSION_R(sid,instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
706 nvme_query_xcoder_query_session,0)
707 #define QUERY_SESSION_STATS_R(sid,instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
708 nvme_query_xcoder_query_session,nvme_query_xcoder_session_get_stats)
709 #define QUERY_INSTANCE_STATUS_R(sid,instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
710 nvme_query_xcoder_query_instance,nvme_query_xcoder_instance_get_status)
712 #define QUERY_INSTANCE_CUR_STATUS_INFO_R(sid,instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
713 nvme_query_xcoder_query_instance,nvme_query_xcoder_instance_get_current_status)
714 #define QUERY_INSTANCE_AI_INFO_R(sid, instance) \
715 HIGH_OFFSET_IN_4K(sid, instance) + \
716 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
717 nvme_query_xcoder_query_instance, \
718 nvme_query_xcoder_instance_read_ai_hw_output)
719 #define QUERY_INSTANCE_STREAM_INFO_R(sid,instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
720 nvme_query_xcoder_query_instance,nvme_query_xcoder_instance_get_stream_info)
721 #define QUERY_INSTANCE_EOS_R(sid,instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
722 nvme_query_xcoder_query_instance,nvme_query_xcoder_instance_get_end_of_output)
723 #define QUERY_INSTANCE_RBUFF_SIZE_R(sid, instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
724 nvme_query_xcoder_query_instance,nvme_query_xcoder_instance_read_buf_size)
725 #define QUERY_INSTANCE_WBUFF_SIZE_R(sid, instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
726 nvme_query_xcoder_query_instance,nvme_query_xcoder_instance_write_buf_size)
727 #define QUERY_INSTANCE_WBUFF_SIZE_R_BY_EP(sid, instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
728 nvme_query_xcoder_query_instance,nvme_query_xcoder_instance_write_buf_size_by_ep)
729 #define QUERY_INSTANCE_RBUFF_SIZE_BUSY_R(sid, instance) \
730 HIGH_OFFSET_IN_4K(sid, instance) + \
731 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
732 nvme_query_xcoder_query_instance, \
733 nvme_query_xcoder_instance_read_buf_size_busy)
734 #define QUERY_INSTANCE_WBUFF_SIZE_BUSY_R(sid, instance) \
735 HIGH_OFFSET_IN_4K(sid, instance) + \
736 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
737 nvme_query_xcoder_query_instance, \
738 nvme_query_xcoder_instance_write_buf_size_busy)
739 #define QUERY_INSTANCE_UPLOAD_ID_R(sid, instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
740 nvme_query_xcoder_query_instance,nvme_query_xcoder_instance_upload_idx)
741 #define QUERY_INSTANCE_ACQUIRE_BUF(sid, instance) \
742 HIGH_OFFSET_IN_4K(sid, instance) + \
743 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
744 nvme_query_xcoder_query_instance, \
745 nvme_query_xcoder_instance_acquire_buf)
747 #define QUERY_INSTANCE_HW_OUT_SIZE_R(sid, instance) \
748 HIGH_OFFSET_IN_4K(sid, instance) + \
749 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
750 nvme_query_xcoder_query_instance, \
751 nvme_query_xcoder_instance_read_output_buf_size)
753 #define QUERY_INSTANCE_NL_SIZE_R(sid, instance) \
754 HIGH_OFFSET_IN_4K(sid, instance) + \
755 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
756 nvme_query_xcoder_query_instance, \
757 nvme_query_xcoder_instance_network_layer_size)
758 #define QUERY_INSTANCE_NL_R(sid, instance) \
759 HIGH_OFFSET_IN_4K(sid, instance) + \
760 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
761 nvme_query_xcoder_query_instance, \
762 nvme_query_xcoder_instance_read_network_layer)
764 #define QUERY_INSTANCE_NL_SIZE_V2_R(sid, instance) \
765 HIGH_OFFSET_IN_4K(sid, instance) + \
766 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
767 nvme_query_xcoder_query_instance, \
768 nvme_query_xcoder_instance_network_layer_size_v2)
770 #define QUERY_INSTANCE_NL_V2_R(sid, instance) \
771 HIGH_OFFSET_IN_4K(sid, instance) + \
772 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
773 nvme_query_xcoder_query_instance, \
774 nvme_query_xcoder_instance_read_network_layer_v2)
776 #define QUERY_INSTANCE_METRICS_R(sid, instance) \
777 HIGH_OFFSET_IN_4K(sid, instance) + \
778 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
779 nvme_query_xcoder_query_instance, \
780 nvme_query_xcoder_instance_read_perf_metrics)
782 #define QUERY_GENERAL_GET_STATUS_R(instance) HIGH_OFFSET_IN_4K(0,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
783 nvme_query_xcoder_query_general,nvme_query_xcoder_general_get_status)
785 #define QUERY_DETAIL_GET_STATUS_R(instance) HIGH_OFFSET_IN_4K(0,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
786 nvme_query_xcoder_query_general,nvme_query_xcoder_general_get_detail_info)
787 #define QUERY_DETAIL_GET_STATUS_V1_R(instance) HIGH_OFFSET_IN_4K(0,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_query), \
788 nvme_query_xcoder_query_general,nvme_query_xcoder_general_get_detail_info_v1)
790 #define QUERY_GET_NVME_STATUS_R HIGH_OFFSET_IN_4K(0,0) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_general), \
791 nvme_xcoder_general_status_query, 0)
792 #define QUERY_GET_VERSIONS_R HIGH_OFFSET_IN_4K(0,0) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_general), \
793 nvme_xcoder_general_versions_query, 0)
795 #define QUERY_GET_NS_VF_R HIGH_OFFSET_IN_4K(0,0) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_general), \
796 nvme_xcoder_general_nsvf_query, 0)
797 #define QUERY_GET_TEMPERATURE_R HIGH_OFFSET_IN_4K(0,0) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_general), \
798 nvme_xcoder_general_temperature_query, 0)
799 #define QUERY_GET_EXTTRA_INFO_R HIGH_OFFSET_IN_4K(0,0) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_general), \
800 nvme_xcoder_general_extra_info_query, 0)
803 #define CONFIG_INSTANCE_SetSOS_W(sid,instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
804 nvme_config_xcoder_config_instance,nvme_config_xcoder_config_set_sos)
805 #define CONFIG_INSTANCE_SetEOS_W(sid,instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
806 nvme_config_xcoder_config_instance,nvme_config_xcoder_config_set_eos)
807 #define CONFIG_INSTANCE_Flush_W(sid,instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
808 nvme_config_xcoder_config_instance,nvme_config_xcoder_config_flush)
810 #define CONFIG_INSTANCE_SetDecPara_W(sid,instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
811 nvme_config_xcoder_config_instance,nvme_config_xcoder_config_set_dec_params)
812 #define CONFIG_INSTANCE_SetDecPpuPara_W(sid,instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
813 nvme_config_xcoder_config_instance,nvme_config_xcoder_config_set_ppu_params)
814 #define CONFIG_INSTANCE_SetScalerPara_W(sid, instance) \
815 HIGH_OFFSET_IN_4K(sid, instance) + \
816 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
817 nvme_config_xcoder_config_instance, \
818 nvme_config_xcoder_config_set_scaler_params)
819 #define CONFIG_INSTANCE_SetScalerAlloc_W(sid, instance) \
820 HIGH_OFFSET_IN_4K(sid, instance) + \
821 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
822 nvme_config_xcoder_config_instance, \
823 nvme_config_xcoder_config_alloc_frame)
825 #define CONFIG_INSTANCE_SetScalerDrawBoxPara_W(sid, instance) \
826 HIGH_OFFSET_IN_4K(sid, instance) + \
827 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
828 nvme_config_xcoder_config_instance, \
829 nvme_config_xcoder_config_set_scaler_drawbox_params)
831 #define CONFIG_INSTANCE_SetScalerWatermarkPara_W(sid, instance) \
832 HIGH_OFFSET_IN_4K(sid, instance) + \
833 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
834 nvme_config_xcoder_config_instance, \
835 nvme_config_xcoder_config_set_scaler_watermark_params)
837 #define CONFIG_INSTANCE_SetEncPara_W(sid,instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
838 nvme_config_xcoder_config_instance,nvme_config_xcoder_config_set_enc_params)
839 #define CONFIG_INSTANCE_UpdateEncPara_W(sid,instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
840 nvme_config_xcoder_config_instance,nvme_config_xcoder_config_update_enc_params)
841 #define CONFIG_INSTANCE_SetEncFramePara_W(sid,instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
842 nvme_config_xcoder_config_instance,nvme_config_xcoder_config_set_enc_frame_params)
843 #define CONFIG_INSTANCE_SetPktSize_W(sid,instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
844 nvme_config_xcoder_config_instance,nvme_config_xcoder_config_set_write_legth)
845 #define CONFIG_INSTANCE_SetSeqChange_W(sid,instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
846 nvme_config_xcoder_config_instance,nvme_config_xcoder_config_set_sequence_change)
847 #define CONFIG_INSTANCE_SetEncRoiQpMap_W(sid,instance) HIGH_OFFSET_IN_4K(sid,instance) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
848 nvme_config_xcoder_config_instance,nvme_config_xcoder_config_set_roi_qp_map)
849 #define CONFIG_INSTANCE_SetAiPara_W(sid, instance) \
850 HIGH_OFFSET_IN_4K(sid, instance) + \
851 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
852 nvme_config_xcoder_config_instance, \
853 nvme_config_xcoder_config_set_network_binary)
854 #define CONFIG_INSTANCE_SetAiHVSPlus_W(sid, instance) \
855 HIGH_OFFSET_IN_4K(sid, instance) + \
856 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
857 nvme_config_xcoder_config_instance, \
858 nvme_config_xcoder_config_hvsplus)
859 #define CONFIG_INSTANCE_SetAiFrm_W(sid, instance) \
860 HIGH_OFFSET_IN_4K(sid, instance) + \
861 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
862 nvme_config_xcoder_config_instance, \
863 nvme_config_xcoder_config_alloc_frame)
865 #define CONFIG_INSTANCE_SetP2P_W(sid,instance) \
866 HIGH_OFFSET_IN_4K(sid, instance) + \
867 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
868 nvme_config_xcoder_config_instance, \
869 nvme_config_xcoder_config_set_p2p_params)
872 #define CONFIG_SESSION_KeepAlive_W(sid) HIGH_OFFSET_IN_4K(sid,1) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
873 nvme_config_xcoder_config_session,nvme_config_xcoder_config_session_keep_alive)
874 #define CONFIG_SESSION_Read_W(sid) HIGH_OFFSET_IN_4K(sid,0) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
875 nvme_config_xcoder_config_session,nvme_config_xcoder_config_session_read)
876 #define CONFIG_SESSION_Write_W(sid) HIGH_OFFSET_IN_4K(sid,0) + CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
877 nvme_config_xcoder_config_session,nvme_config_xcoder_config_session_write)
879 #define CLEAR_INSTANCE_BUF_W(frame_id) CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_recycle_buffer), 0, (frame_id & 0x00FF)) + (((frame_id & 0xFF00)>>8)<<NI_INSTANCE_TYPE_OFFSET)
881 #define SEND_P2P_BUF_W CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_p2p_send), 0, 0)
883 #define CONFIG_SESSION_KeepAliveTimeout_W(sid) \
884 HIGH_OFFSET_IN_4K(sid, 0) + \
885 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
886 nvme_config_xcoder_config_session, \
887 nvme_config_xcoder_config_session_keep_alive_timeout)
889 #define CONFIG_SESSION_SWVersion_W(sid) \
890 HIGH_OFFSET_IN_4K(sid, 0) + \
891 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
892 nvme_config_xcoder_config_session, \
893 nvme_config_xcoder_config_session_sw_version)
895 #define CONFIG_GLOBAL_NAMESPACE_NUM \
896 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
897 nvme_config_xcoder_config_global, \
898 nvme_config_xcoder_config_namespace_num)
900 #define CONFIG_SESSION_DDR_PRIORITY_W(sid) \
901 HIGH_OFFSET_IN_4K(sid, 0) + \
902 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
903 nvme_config_xcoder_config_session, \
904 nvme_config_xcoder_config_ddr_priority)
906 #define CONFIG_SESSION_FRAME_COPY_W(sid) \
907 HIGH_OFFSET_IN_4K(sid, 0) + \
908 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
909 nvme_config_xcoder_config_session, \
910 nvme_config_xcoder_config_frame_clone)
912 #define CONFIG_INSTANCE_UploadModel_W(sid,instance) \
913 HIGH_OFFSET_IN_4K(sid, instance) + \
914 CTL_OFFSET_IN_4K(GAP(nvme_admin_cmd_xcoder_config), \
915 nvme_config_xcoder_config_instance, \
916 nvme_config_xcoder_config_set_upload_load)
918 int32_t
ni_nvme_send_read_cmd(ni_device_handle_t handle, ni_event_handle_t event_handle,
void *p_data, uint32_t data_len, uint32_t lba);
919 int32_t
ni_nvme_send_write_cmd(ni_device_handle_t handle, ni_event_handle_t event_handle,
void *p_data, uint32_t data_len, uint32_t lba);
922 static inline int32_t ni_aio_setup(
unsigned nr, aio_context_t *ctxp)
924 return syscall(__NR_io_setup, nr, ctxp);
927 static inline int32_t ni_aio_destroy(aio_context_t ctx)
929 return syscall(__NR_io_destroy, ctx);
932 static inline int32_t ni_aio_submit(aio_context_t ctx,
long nr,
struct iocb **iocbpp)
934 return syscall(__NR_io_submit, ctx, nr, iocbpp);
937 static inline int32_t ni_aio_getevents(aio_context_t ctx,
long min_nr,
long max_nr,
struct io_event *events,
struct timespec *timeout)
939 return syscall(__NR_io_getevents, ctx, min_nr, max_nr, events, timeout);
942 void ni_nvme_setup_aio_iocb(ni_device_handle_t handle, ni_iocb_t *iocb,
943 void *p_data, uint32_t data_len, uint32_t lba,
945 int32_t ni_nvme_batch_cmd_aio(aio_context_t ctx, ni_iocb_t **iocbs,
946 ni_io_event_t *events,
int iocb_num);
uint8_t fw_repo_info_padding[2]
@ nvme_admin_cmd_xcoder_p2p_send
uint8_t fw_commit_hash[41]
_nvme_query_xcoder_instance_subtype
uint16_t hw_min_video_width
@ nvme_admin_cmd_identify
@ nvme_admin_cmd_delete_sq
@ nvme_write_xcoder_write_instance
@ nvme_query_xcoder_instance_get_status
_nvme_query_xcoder_subtype
int32_t ni_nvme_send_read_cmd(ni_device_handle_t handle, ni_event_handle_t event_handle, void *p_data, uint32_t data_len, uint32_t lba)
Compose an io read command.
uint16_t hw0_max_video_height
uint8_t aui8FwLoaderRev[8]
enum _ni_nvme_opcode ni_nvme_opcode_t
struct _ni_nvme_identity_xcoder_hw ni_nvme_identity_xcoder_hw_t
@ nvme_query_xcoder_instance_read_buf_size
_nvme_xcoder_general_subtype
uint16_t hw1_min_video_width
@ nvme_admin_cmd_security_recv
@ nvme_xcoder_general_temperature_query
@ nvme_query_xcoder_general_get_detail_info_v1
uint8_t xcoder_num_h265_encoder_hw
uint8_t hw0_video_profile
@ nvme_config_xcoder_instance_write_buf_size_busy_place_holder
ni_retcode_t ni_nvme_check_error_code(int rc, int opcode, uint32_t xcoder_type, uint32_t hw_id, uint32_t *inst_id)
Check f/w error return code, and if it's a fatal one, terminate application's decoding/encoding proce...
uint8_t hw1_video_profile
int32_t ni_nvme_send_admin_cmd(ni_nvme_admin_opcode_t opcode, ni_device_handle_t fd, ni_nvme_command_t *p_ni_nvme_cmd, uint32_t data_len, void *data, uint32_t *pResult)
Compose a nvme admin command.
uint8_t xcoder_reserved[11]
@ nvme_admin_cmd_xcoder_read
@ nvme_config_xcoder_config_set_scaler_drawbox_params
int ni_nvme_enumerate_devices(char ni_devices[][NI_MAX_DEVICE_NAME_LEN], int max_handles)
@ nvme_xcoder_general_nsvf_query
uint16_t hw2_min_video_height
@ nvme_query_xcoder_instance_get_stream_info
uint8_t hw_max_number_of_contexts
@ nvme_query_xcoder_instance_get_current_status
@ nvme_admin_cmd_set_features
@ nvme_admin_cmd_create_sq
uint8_t hw1_max_1080p_fps
@ nvme_close_xcoder_destroy_session
@ nvme_admin_cmd_download_fw
uint8_t hw2_max_number_of_contexts
@ nvme_config_xcoder_config_set_p2p_params
_nvme_write_xcoder_subtype
struct _ni_nvme_id_power_state ni_nvme_id_power_state_t
@ nvme_open_xcoder_add_session
uint16_t hw0_min_video_width
uint8_t xcoder_num_h265_decoder_hw
@ nvme_query_xcoder_instance_write_buf_size_busy
#define NI_MAX_DEVICES_PER_HW_INSTANCE
@ nvme_query_xcoder_instance_read_network_layer
uint8_t hw3_video_profile
enum _nvme_query_xcoder_instance_subtype nvme_query_xcoder_instance_subtype_t
@ nvme_query_xcoder_instance_dec_place_holder
@ nvme_query_xcoder_instance_write_buf_size_by_ep
uint8_t hw0_max_number_of_contexts
@ nvme_config_xcoder_config_set_network_binary
@ nvme_admin_cmd_create_cq
@ nvme_config_xcoder_config_set_sequence_change
@ nvme_query_xcoder_instance_read_network_layer_v2
uint16_t hw_min_video_height
_nvme_close_xcoder_subtype
@ nvme_admin_cmd_ns_attach
@ nvme_config_xcoder_config_session_read
uint8_t xcoder_num_devices
@ nvme_admin_cmd_format_nvm
enum _nvme_read_xcoder_subtype nvme_read_xcoder_subtype_t
@ nvme_config_xcoder_config_instance
@ nvme_admin_cmd_get_features
uint16_t hw0_max_video_width
_nvme_query_xcoder_general_subtype
enum _nvme_query_xcoder_subtype nvme_query_xcoder_subtype_t
@ nvme_config_xcoder_config_set_write_legth
@ nvme_config_xcoder_config_set_roi_qp_map
@ nvme_query_xcoder_instance_upload_idx
uint8_t xcoder_num_h264_encoder_hw
enum _nvme_close_xcoder_subtype nvme_close_xcoder_subtype_t
@ nvme_config_xcoder_config_session_write
uint8_t aui8TotalRawCap[8]
uint16_t hw_max_video_height
@ nvme_config_xcoder_config_set_enc_frame_params
uint8_t fw_build_time[26]
uint16_t hw1_max_video_width
@ nvme_read_xcoder_read_instance
@ nvme_xcoder_general_extra_info_query
uint16_t hw_max_video_width
@ nvme_query_xcoder_query_general
uint8_t hw0_max_1080p_fps
@ nvme_open_xcoder_create_session
@ nvme_config_xcoder_config_set_scaler_watermark_params
int32_t ni_nvme_send_io_cmd_thru_admin_queue(ni_nvme_admin_opcode_t opcode, ni_device_handle_t fd, ni_nvme_command_t *p_ni_nvme_cmd, uint32_t data_len, void *data, uint32_t *pResult)
@ nvme_admin_cmd_xcoder_open
struct _ni_nvme_write_complete_dw0_t ni_nvme_write_complete_dw0_t
Common NETINT definitions used by all modules.
uint16_t hw3_max_video_height
@ nvme_admin_cmd_xcoder_load
enum _nvme_query_xcoder_session_subtype nvme_query_xcoder_session_subtype_t
enum _nvme_config_xcoder_subtype nvme_config_xcoder_subtype_t
uint8_t aui8Rsvd540[1508]
@ nvme_admin_cmd_activate_fw
uint8_t hw1_max_number_of_contexts
@ nvme_xcoder_general_versions_query
@ nvme_admin_cmd_xcoder_write
@ nvme_admin_cmd_xcoder_download_buffer
@ nvme_admin_cmd_security_send
uint32_t ni_nvme_result_t
@ nvme_query_xcoder_query_session
_nvme_read_xcoder_subtype
@ nvme_admin_cmd_xcoder_recycle_buffer
uint8_t hw2_video_profile
_nvme_config_xcoder_config_session_subtype
enum _ni_nvme_admin_opcode ni_nvme_admin_opcode_t
_nvme_query_xcoder_session_subtype
@ nvme_config_xcoder_config_set_upload_load
@ nvme_admin_cmd_xcoder_config
uint16_t hw3_min_video_height
enum _nvme_xcoder_general_subtype nvme_xcoder_general_subtype_t
@ nvme_config_xcoder_config_global
@ nvme_admin_cmd_xcoder_connect
uint16_t hw2_max_video_height
ni_nvme_identity_xcoder_hw_t xcoder_devices[NI_MAX_DEVICES_PER_HW_INSTANCE]
@ nvme_admin_cmd_xcoder_query
enum _nvme_config_xcoder_config_instance_subtype nvme_config_xcoder_config_instance_subtype_t
@ nvme_admin_cmd_xcoder_general
#define NI_MAX_DEVICE_NAME_LEN
@ nvme_xcoder_general_status_query
enum _nvme_open_xcoder_subtype nvme_open_xcoder_subtype_t
uint16_t hw0_min_video_height
@ nvme_config_xcoder_instance_read_buf_size_busy_place_holder
uint8_t xcoder_num_h264_decoder_hw
@ nvme_query_xcoder_session_get_stats
struct _ni_nvme_command ni_nvme_command_t
int32_t ni_nvme_send_io_cmd(ni_nvme_opcode_t opcode, ni_device_handle_t fd, ni_nvme_command_t *p_ni_nvme_cmd, uint32_t data_len, void *data, uint32_t *pResult)
Compose a nvme io command.
@ nvme_query_xcoder_query_instance
@ nvme_config_xcoder_config_session
@ nvme_query_xcoder_instance_read_perf_metrics
@ nvme_config_xcoder_config_frame_clone
@ nvme_config_xcoder_config_namespace_num
enum _nvme_query_xcoder_general_subtype nvme_query_xcoder_general_subtype_t
@ nvme_config_xcoder_config_set_scaler_params
@ nvme_query_xcoder_instance_write_buf_size
@ nvme_config_xcoder_config_flush
struct _ni_nvme_identity ni_nvme_identity_t
@ nvme_admin_cmd_get_log_page
@ nvme_config_xcoder_config_set_sos
@ nvme_query_xcoder_instance_read_output_buf_size
uint8_t hw3_max_number_of_contexts
@ nvme_query_xcoder_instance_read_buf_size_busy
@ nvme_config_xcoder_config_session_keep_alive
@ nvme_admin_cmd_xcoder_close
@ nvme_admin_cmd_xcoder_init_framepool
@ nvme_config_xcoder_config_set_enc_params
@ nvme_config_xcoder_config_session_sw_version
@ nvme_admin_cmd_delete_cq
@ nvme_config_xcoder_config_set_ppu_params
@ nvme_query_xcoder_instance_acquire_buf
@ nvme_config_xcoder_config_set_eos
@ nvme_config_xcoder_config_session_keep_alive_timeout
uint16_t hw2_min_video_width
_nvme_config_xcoder_subtype
_nvme_config_xcoder_config_instance_subtype
@ nvme_config_xcoder_config_ddr_priority
enum _nvme_config_xcoder_config_session_subtype nvme_config_xcoder_config_session_subtype_t
@ nvme_config_xcoder_config_alloc_frame
enum _nvme_write_xcoder_subtype nvme_write_xcoder_subtype_t
uint16_t hw2_max_video_width
@ nvme_admin_cmd_abort_cmd
uint16_t hw1_max_video_height
uint16_t hw3_min_video_width
@ nvme_admin_cmd_async_event
uint16_t hw1_min_video_height
@ nvme_admin_cmd_xcoder_identity
@ nvme_query_xcoder_instance_network_layer_size
@ nvme_config_xcoder_config_hvsplus
uint8_t xcoder_num_elements
@ nvme_config_xcoder_config_update_enc_params
@ nvme_config_xcoder_config_set_dec_params
uint8_t ui8ActiveWorkScale
@ nvme_query_xcoder_instance_network_layer_size_v2
uint8_t hw3_max_1080p_fps
uint16_t hw3_max_video_width
_nvme_open_xcoder_subtype
int32_t ni_nvme_send_write_cmd(ni_device_handle_t handle, ni_event_handle_t event_handle, void *p_data, uint32_t data_len, uint32_t lba)
Compose a io write command.
@ nvme_query_xcoder_instance_scl_place_holder
uint8_t fw_branch_name[256]
uint8_t fw_commit_time[26]
ni_nvme_id_power_state_t asPsd[32]
@ nvme_query_xcoder_general_get_status
uint8_t hw2_max_1080p_fps
@ nvme_query_xcoder_instance_read_ai_hw_output
@ nvme_query_xcoder_instance_get_end_of_output
@ nvme_query_xcoder_general_get_detail_info