[osal]: fixup for reading system compatible

The kernel uses termination character to divisive compatible.

Change-Id: I5db14e22aefa1ea54b8d32a4af7b112f22358dfb
Signed-off-by: Randy Li <randy.li@rock-chips.com>
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Signed-off-by: leo.ding <leo.ding@rock-chips.com>
This commit is contained in:
Randy Li
2017-04-06 12:02:36 +08:00
committed by Herman Chen
parent 76e5398633
commit d99cc7f2ff

View File

@@ -25,7 +25,7 @@
#include "mpp_common.h" #include "mpp_common.h"
#include "mpp_platform.h" #include "mpp_platform.h"
#define MAX_SOC_NAME_LENGTH 32 #define MAX_SOC_NAME_LENGTH 64
class MppPlatformService; class MppPlatformService;
@@ -162,14 +162,25 @@ MppPlatformService::MppPlatformService()
soc_name = mpp_malloc_size(char, MAX_SOC_NAME_LENGTH); soc_name = mpp_malloc_size(char, MAX_SOC_NAME_LENGTH);
if (soc_name) { if (soc_name) {
RK_U32 found_match_soc_name = 0; RK_U32 found_match_soc_name = 0;
ssize_t soc_name_len = 0;
snprintf(soc_name, MAX_SOC_NAME_LENGTH, "unknown"); snprintf(soc_name, MAX_SOC_NAME_LENGTH, "unknown");
if (read(fd, soc_name, MAX_SOC_NAME_LENGTH - 1) > 0) { soc_name_len = read(fd, soc_name, MAX_SOC_NAME_LENGTH - 1);
if (soc_name_len > 0) {
/* replacing the termination character to space */
char *ptr = soc_name;
while (ptr < soc_name + soc_name_len - 1) {
ptr += strnlen (soc_name, MAX_SOC_NAME_LENGTH);
*ptr = ' ';
}
mpp_dbg(MPP_DBG_PLATFORM, "chip name: %s\n", soc_name);
for (i = 0; i < MPP_ARRAY_ELEMS(mpp_vpu_version); i++) { for (i = 0; i < MPP_ARRAY_ELEMS(mpp_vpu_version); i++) {
if (strstr(soc_name, mpp_vpu_version[i].compatible)) { if (strstr(soc_name, mpp_vpu_version[i].compatible)) {
vcodec_type = mpp_vpu_version[i].vcodec_type; vcodec_type = mpp_vpu_version[i].vcodec_type;
soc_type = mpp_vpu_version[i].soc_type; soc_type = mpp_vpu_version[i].soc_type;
mpp_dbg(MPP_DBG_PLATFORM, "chip name: %s\n", soc_name);
found_match_soc_name = 1; found_match_soc_name = 1;
break; break;
} }