mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-05 17:16:50 +08:00
[vpu]: correct vpu device print and add vpu_debug for register print
git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@1013 6e48237b-75ef-9749-8fc9-41990f28c85a
This commit is contained in:
@@ -22,6 +22,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include "mpp_env.h"
|
||||||
#include "mpp_log.h"
|
#include "mpp_log.h"
|
||||||
|
|
||||||
#include "vpu.h"
|
#include "vpu.h"
|
||||||
@@ -38,7 +39,8 @@ typedef struct VPUReq {
|
|||||||
RK_U32 size;
|
RK_U32 size;
|
||||||
} VPUReq_t;
|
} VPUReq_t;
|
||||||
|
|
||||||
static int vpu_service_status = -1;
|
static RK_U32 vpu_debug = 0;
|
||||||
|
static RK_S32 vpu_service_status = -1;
|
||||||
#define VPU_SERVICE_TEST \
|
#define VPU_SERVICE_TEST \
|
||||||
do { \
|
do { \
|
||||||
if (vpu_service_status < 0) { \
|
if (vpu_service_status < 0) { \
|
||||||
@@ -46,20 +48,25 @@ static int vpu_service_status = -1;
|
|||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
static const char *name_rkvdec = "/dev/rkvdec";
|
||||||
|
static const char *name_hevc_service = "/dev/hevc_service";
|
||||||
|
static const char *name_vpu_service = "/dev/hevc_service";
|
||||||
|
|
||||||
int VPUClientInit(VPU_CLIENT_TYPE type)
|
int VPUClientInit(VPU_CLIENT_TYPE type)
|
||||||
{
|
{
|
||||||
VPU_SERVICE_TEST;
|
VPU_SERVICE_TEST;
|
||||||
int ret;
|
int ret;
|
||||||
int fd;
|
int fd;
|
||||||
|
const char *name = NULL;
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case VPU_DEC_RKV: {
|
case VPU_DEC_RKV: {
|
||||||
fd = open("/dev/rkvdec", O_RDWR);
|
name = name_rkvdec;
|
||||||
type = VPU_DEC;
|
type = VPU_DEC;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case VPU_DEC_HEVC: {
|
case VPU_DEC_HEVC: {
|
||||||
fd = open("/dev/hevc_service", O_RDWR);
|
name = name_hevc_service;
|
||||||
type = VPU_DEC;
|
type = VPU_DEC;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -67,18 +74,21 @@ int VPUClientInit(VPU_CLIENT_TYPE type)
|
|||||||
case VPU_PP:
|
case VPU_PP:
|
||||||
case VPU_DEC:
|
case VPU_DEC:
|
||||||
case VPU_ENC: {
|
case VPU_ENC: {
|
||||||
fd = open("/dev/vpu_service", O_RDWR);
|
name = name_vpu_service;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
fd = -1;
|
return -1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fd = open(name, O_RDWR);
|
||||||
|
|
||||||
|
mpp_env_get_u32("vpu_debug", &vpu_debug, 0);
|
||||||
|
|
||||||
if (fd == -1) {
|
if (fd == -1) {
|
||||||
mpp_err_f("failed to open /dev/rkvdec\n");
|
mpp_err_f("failed to open %s\n", name);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
ret = ioctl(fd, VPU_IOC_SET_CLIENT_TYPE, (RK_U32)type);
|
ret = ioctl(fd, VPU_IOC_SET_CLIENT_TYPE, (RK_U32)type);
|
||||||
@@ -105,6 +115,15 @@ RK_S32 VPUClientSendReg(int socket, RK_U32 *regs, RK_U32 nregs)
|
|||||||
int fd = socket;
|
int fd = socket;
|
||||||
RK_S32 ret;
|
RK_S32 ret;
|
||||||
VPUReq_t req;
|
VPUReq_t req;
|
||||||
|
|
||||||
|
if (vpu_debug) {
|
||||||
|
RK_U32 i;
|
||||||
|
|
||||||
|
for (i = 0; i < nregs; i++) {
|
||||||
|
mpp_log("set reg[%03d]: %08x\n", i, regs[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
nregs *= sizeof(RK_U32);
|
nregs *= sizeof(RK_U32);
|
||||||
req.req = regs;
|
req.req = regs;
|
||||||
req.size = nregs;
|
req.size = nregs;
|
||||||
@@ -122,9 +141,11 @@ RK_S32 VPUClientWaitResult(int socket, RK_U32 *regs, RK_U32 nregs, VPU_CMD_TYPE
|
|||||||
RK_S32 ret;
|
RK_S32 ret;
|
||||||
VPUReq_t req;
|
VPUReq_t req;
|
||||||
(void)len;
|
(void)len;
|
||||||
|
|
||||||
nregs *= sizeof(RK_U32);
|
nregs *= sizeof(RK_U32);
|
||||||
req.req = regs;
|
req.req = regs;
|
||||||
req.size = nregs;
|
req.size = nregs;
|
||||||
|
|
||||||
ret = (RK_S32)ioctl(fd, VPU_IOC_GET_REG, &req);
|
ret = (RK_S32)ioctl(fd, VPU_IOC_GET_REG, &req);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
mpp_err_f("ioctl VPU_IOC_GET_REG failed ret %d errno %d %s\n", ret, errno, strerror(errno));
|
mpp_err_f("ioctl VPU_IOC_GET_REG failed ret %d errno %d %s\n", ret, errno, strerror(errno));
|
||||||
@@ -132,6 +153,15 @@ RK_S32 VPUClientWaitResult(int socket, RK_U32 *regs, RK_U32 nregs, VPU_CMD_TYPE
|
|||||||
} else
|
} else
|
||||||
*cmd = VPU_SEND_CONFIG_ACK_OK;
|
*cmd = VPU_SEND_CONFIG_ACK_OK;
|
||||||
|
|
||||||
|
if (vpu_debug) {
|
||||||
|
RK_U32 i;
|
||||||
|
nregs >>= 2;
|
||||||
|
|
||||||
|
for (i = 0; i < nregs; i++) {
|
||||||
|
mpp_log("get reg[%03d]: %08x\n", i, regs[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user