android — [QCOM-MSM8916] [CM12.1] Как зарегистрировать правильные узлы кадрового буфера? (Fb0 / 1/2)

Я в настоящее время разработчик для Samsung Galaxy J5.

  • Набор микросхем: Qualcomm MSM8916 Snapdragon 410
  • ЦПУ: Четырехъядерный процессор 1,2 ГГц Cortex-A53
  • GPU: Adreno 306

В / Оборудование / QCOM / дисплей-CAF / msm8916 / libqdutils есть соответствующий файл, (qd_utils.cpp) объявить узлы кадрового буфера через msm_fb_type.

#include "qd_utils.h"#define QD_UTILS_DEBUG 0

namespace qdutils {

int getHDMINode(void)
{
FILE *displayDeviceFP = NULL;
char fbType[MAX_FRAME_BUFFER_NAME_SIZE];
char msmFbTypePath[MAX_FRAME_BUFFER_NAME_SIZE];
int j = 0;

for(j = 0; j < HWC_NUM_DISPLAY_TYPES; j++) {
snprintf (msmFbTypePath, sizeof(msmFbTypePath),
"/sys/class/graphics/fb%d/msm_fb_type", j);
displayDeviceFP = fopen(msmFbTypePath, "r");
if(displayDeviceFP) {
fread(fbType, sizeof(char), MAX_FRAME_BUFFER_NAME_SIZE,
displayDeviceFP);
if(strncmp(fbType, "dtv panel", strlen("dtv panel")) == 0) {
ALOGD("%s: HDMI is at fb%d", __func__, j);
fclose(displayDeviceFP);
break;
}
fclose(displayDeviceFP);
} else {
ALOGE("%s: Failed to open fb node %d", __func__, j);
}
}

if (j < HWC_NUM_DISPLAY_TYPES)
return j;
else
ALOGE("%s: Failed to find HDMI node", __func__);

Панель DTV не включена в конфигурацию ядра.
Устройство имеет на складе текущие фб узлы:

  • / dev / fb0 (mdss_primary_panel)
  • / dev / fb1 (writeback_panel)

Таким образом, результатом является следующая ошибка в logcat при включении / выключении экрана:

E/qdutils (  269): int qdutils::getHDMINode(): Failed to open fb node 2
E/qdutils (  269): int qdutils::getHDMINode(): Failed to find HDMI node

Любые идеи о том, как отключить поиск узла / dev / fb2 или включить эту функцию в дерево ядра / устройства? Некоторые разработчики говорят, что отсутствующие узлы вызывают задержку в включении / отключении экрана при нажатии клавиши питания, так что это ошибка, я думаю.

ИСТОЧНИКИ

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …