LINUX.ORG.RU

U-boot, HDMI resolution, не могу найти.

 ,


0

1

Оказываеься на latest версии майнлайн U-boot нельзя задать видео разрешение HDMI видконсоли. А экран, с которым надо работать фулловое разрешение не принимает и на экране белиберда. Я не смог найти, как принудительно задать разрешение поменьше, например 800 на 600.

Надеюсь кто-то да знает.

★★★★★

Прогрепал все исходники на совпадение resolution и всё относящееся к видео нашёл, отредактировал только на одно разрешение. Компилю-один фиг оно автоопределяет монитор и ставит фулл. Я думаю, то, что мне нужно лежит в uboot/drivers/video/meson/, так если оно игнорирует видеорежим из других мест, то для амлогика там всё своё. Плохо, что не закоментированно совсем, написал разработчикам в емейл.

burato ★★★★★
() автор топика

Нужна чья-то помощь. То, что удалось найти: в файле drivers/video/meson/meson_vpu.c я смог найти секцию, которая имеет отношение к разрешению:

uc_priv->xsize = timing.hactive.typ;
                uc_priv->ysize = timing.vactive.typ;
Выставил 800 и 600, при попытке включить экран виснет. Беру экран на 800х600 и всё включается в нужном разрешении(но оно с автоопределением и так включается). Не могу разобраться, как работает это автоопределение. А мне нужно получить его, в том виде, в каком его получает код, чтобы хардкодно подсунуть туда то, что необходимо. Даже у меня хватило ума сделать
printf("width=%u\n", timing.hactive.typ);
                printf("height=%u\n", timing.vactive.typ);
Чтобы видеть не только определённую ширину с высотой, но и все причастные переменные, которые имеют отношение к определению монитора. Но нет, там либо не изменяющееся от разноно разрешения одно и то же значение, либо нуль.

В гугле находил советы по переменным videomode b video-mode, но оно не работает. В исходниках оно есть, но meson, точно, эти коды не использует и не парсит.

burato ★★★★★
() автор топика

Самостоятельно справился. Пришлось исходники модифицировать. Сначала путём printf выяснил все нужные параметры на дисплее с разрешением 800х600, сохранил всё и принудительно прописал в файле u-boot/drivers/video/meson/meson_vpu.c:

if (ret) {
                        debug("%s: Failed to read timings\n", __func__);
                        goto cvbs;
                }

                timing.hactive.typ = 800;
                timing.vactive.typ = 600;

                uc_priv->xsize = timing.hactive.typ;
                uc_priv->ysize = timing.vactive.typ;

                timing.pixelclock.typ = 40000000;
                timing.hfront_porch.typ = 40;
                timing.hback_porch.typ = 88;
                timing.hsync_len.typ = 128;
                timing.vfront_porch.typ = 1;
                timing.vback_porch.typ = 23;
                timing.vsync_len.typ = 4;
                timing.flags = 10;
                timing.hdmi_monitor = 1;


                ret = display_enable(disp, 0, &timing);
                if (ret)
Всё, теперь монитор всегда на консоли загрузчика в 800х600, теперь текст видно отлично!

burato ★★★★★
() автор топика

Может патч сделать? Или комит в гит написать, дело в том, что второй монитор уже, который на амлогиках хрень вместо картинки показывает.

burato ★★★★★
() автор топика

Нет, я думаю надо доделать, хотябы чтоб не жёстко разрешение было, а чтобы парсило строку переменной videoresolution или что-то в этом духе и ставило оттуда разрешение, так, уверен, будет лучше. Кто чего скажет?

burato ★★★★★
() автор топика