-
- Адрес
- ДОНЕЦК
- Возраст
- 51
- Сообщений
- 3,267
- Репутация
- 39566 (0)
24.03.2017 10:28IN PLAYER.RU WE TRUSTСпойлер:и запомни наконец - АМБУШЮРЫ
-
- Адрес
- Екатеринбург
- Сообщений
- 352
- Репутация
- 1827 (0)
24.03.2017 10:46Не думаю. Спустя 3 часа, вновь скопировал на флешку свежий rockbox - запускается! За 3 запуска 0 белых экранов. Аккумулятор при этом я не заряжал.
Очень радует звук на rockbox bfd04df. Он стал более "живой" и детальный, по сравнению с версией от ноября 2013 года, что я до этого использовал.HiFiMAN HM-801 Symmod + balanced card by freeman2007, HiFiMAN HM-603 MM4
Sony XBA-Z5 + Litz Cu 330x Portable balanced + Rare Soviet Litz by sboch (200x0,05x4)
-
- Адрес
- г. Владимир
- Возраст
- 38
- Сообщений
- 79
- Репутация
- 230 (0)
24.03.2017 11:06SNPR_,
хм.. может тогда какую то настройку рокбокс начинает создавать или использовать, которая и выдает сбой. может стоит смотреть и делать сравнения всех файлов рокбокса до заливки на флешку, после первого включения (выключил, вставил на комп и сделал сравнение), после второго.. и найдя изменения в файле можно проанализировать и покумекать, либо попробовать заблокировать файл на запись. Либо ошибка в чем-то другом и тут уже хуже.
-
- Адрес
- Екатеринбург
- Сообщений
- 352
- Репутация
- 1827 (0)
24.03.2017 11:15Вот снова у меня белый экран в 100% случаев, а полчаса назад всё работало отлично.
Снова разархивировал свежий rockbox на флешку и снова белый экран.
Нас таких, как я понял, несколько человек (а может и больше, но они rockbox не пытались ставить). Судя по всему, чем-то железо в наших ревизиях отличается от остальных 603-х.
Как писал gemzza - возможно поможет банальный фикс сборки, с жёстким указанием типа экрана V2 (но для этого нужна помощь опытных людей). Подобные манипуляции были проделаны mortalis'ом на сборке от ноября 2013 года - и эта сборка запускается в 100% случаев. Был бы я рад остаться на ней, но после того, как услышал звучание сборки от 24.03.17, возвращаться на сборку 13 года не хочется. Звучание мне нравится даже больше, чем 0.12 от HM-601.HiFiMAN HM-801 Symmod + balanced card by freeman2007, HiFiMAN HM-603 MM4
Sony XBA-Z5 + Litz Cu 330x Portable balanced + Rare Soviet Litz by sboch (200x0,05x4)
-
- Адрес
- г. Владимир
- Возраст
- 38
- Сообщений
- 79
- Репутация
- 230 (0)
24.03.2017 11:52SNPR_,
ну тогда нужно поставить виртуальную машину, линукс и клепать прошивку...
-
- Адрес
- Минск
- Сообщений
- 1,256
- Репутация
- 3795 (0)
24.03.2017 11:53Золотой ОМ, делов то))
-
Пользователи, сказавшие Спасибо mtz_fish за полезный пост
SNPR_ (24.03.2017)
-
- Адрес
- Москва
- Сообщений
- 4,989
- Репутация
- 105621 (0)
24.03.2017 12:58Как мне кажется, дело совсем не в этом. Достаточно взглянуть в код, который я постил выше: инициализация дисплея не зависит не от каких-либо файлов на диске.
Да уже давно пора. Но я так понимаю, что проще писать в этой теме много букв и делать фантастические предположения, чем реально заняться делом.ММ4 / FitEar 335 DW AA
_________
Suum cuique
-
- Адрес
- Екатеринбург
- Сообщений
- 352
- Репутация
- 1827 (0)
24.03.2017 13:17Кто-нибудь в курсе, параметр cpu frequency в отладке реально меняет частоту проца мужика?
HiFiMAN HM-801 Symmod + balanced card by freeman2007, HiFiMAN HM-603 MM4
Sony XBA-Z5 + Litz Cu 330x Portable balanced + Rare Soviet Litz by sboch (200x0,05x4)
-
- Адрес
- Казань
- Сообщений
- 82
- Репутация
- 288 (0)
24.03.2017 16:03Не, для новых серий 603 рокбокс сплошное мучение - белые экраны, загрузка с 8 битным цветом. Не предсказуемо, никакого эстетического удовольствия. Сегодня словил кирпича, такого реального. Когда хотел перепрошить на обычную 07 версию без мультизагрузки. Пришлось разбирать и тыкать иголкой, иначе устройство не определялось. Вернул наконец оригинальную прошивку и полностью счастлив.[COLOR="Silver"]
---------- Добавлено в 18:03 ---------- Предыдущее сообщение было размещено в 17:58 ----------
SNPR_, У меня такая же ревизия, рокбокс первые 2, 3 раза стартует с нормальными цветами, стоит на оригинальную прошу переключиться - и вот он, 8 битный цвет. Забил, убрал рокбокс и дуалбут. Слушаю на 0,7 стоке.
-
- Сообщений
- 69
- Репутация
- 302 (0)
24.03.2017 16:28igor759, А как различаются серии 603?
«...Уж пусть лучше заклюют меня эти прекрасные птицы...» Г.Х. Андерсен "Гадкий утенок"
-
Пользователи, сказавшие Спасибо don loco за полезный пост
uncle Drew (24.03.2017)
-
- Адрес
- Краснокамск
- Возраст
- 57
- Сообщений
- 488
- Репутация
- 3076 (0)
-
- Адрес
- Екатеринбург
- Сообщений
- 352
- Репутация
- 1827 (0)
24.03.2017 19:20Разобрался я, как собирать rockbox из исходников под ubuntu, вот только не представляю в каком месте в коде копаться, чтобы ситуацию с дисплеем исправить, давайте подумаем вместе)
Пробовал ставить udelay(10000) - не помогает.
Код:/*************************************************************************** * __________ __ ___. * Open \______ \ ____ ____ | | _\_ |__ _______ ___ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ * \/ \/ \/ \/ \/ * $Id$ * * Copyright (C) 2011 Andrew Ryabinin * * * This program is free software; you can redis****ute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This software is dis****uted on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ****************************************************************************/ #include "config.h" #include "kernel.h" #include "lcd.h" #include "system.h" #include "cpu.h" #include "lcdif-rk27xx.h" #include "lcd-target.h" static bool display_on = false; static void reset_lcd(void) { GPIO_PCCON |= (1<<7); GPIO_PCDR &= ~(1<<7); udelay(10); GPIO_PCDR |= (1<<7); udelay(5000); } void lcd_v1_display_init(void) { unsigned int x, y; /* Driving ability setting */ lcd_write_reg(0x60, 0x00); lcd_write_reg(0x61, 0x06); lcd_write_reg(0x62, 0x00); lcd_write_reg(0x63, 0xC8); /* Gamma 2.2 Setting */ lcd_write_reg(0x40, 0x00); lcd_write_reg(0x41, 0x40); lcd_write_reg(0x42, 0x45); lcd_write_reg(0x43, 0x01); lcd_write_reg(0x44, 0x60); lcd_write_reg(0x45, 0x05); lcd_write_reg(0x46, 0x0C); lcd_write_reg(0x47, 0xD1); lcd_write_reg(0x48, 0x05); lcd_write_reg(0x50, 0x75); lcd_write_reg(0x51, 0x01); lcd_write_reg(0x52, 0x67); lcd_write_reg(0x53, 0x14); lcd_write_reg(0x54, 0xF2); lcd_write_reg(0x55, 0x07); lcd_write_reg(0x56, 0x03); lcd_write_reg(0x57, 0x49); /* Power voltage setting */ lcd_write_reg(0x1F, 0x03); lcd_write_reg(0x20, 0x00); lcd_write_reg(0x24, 0x28); lcd_write_reg(0x25, 0x45); lcd_write_reg(0x23, 0x2F); /* Power on setting */ lcd_write_reg(0x18, 0x44); lcd_write_reg(0x21, 0x01); lcd_write_reg(0x01, 0x00); lcd_write_reg(0x1C, 0x03); lcd_write_reg(0x19, 0x06); udelay(5); /* Display on setting */ lcd_write_reg(0x26, 0x84); udelay(40); lcd_write_reg(0x26, 0xB8); udelay(40); lcd_write_reg(0x26, 0xBC); udelay(40); /* Memmory access setting */ lcd_write_reg(0x16, 0x68); /* Setup 16bit mode */ lcd_write_reg(0x17, 0x05); /* Set GRAM area */ lcd_write_reg(0x02, 0x00); lcd_write_reg(0x03, 0x00); lcd_write_reg(0x04, 0x00); lcd_write_reg(0x05, LCD_WIDTH - 1); lcd_write_reg(0x06, 0x00); lcd_write_reg(0x07, 0x00); lcd_write_reg(0x08, 0x00); lcd_write_reg(0x09, LCD_HEIGHT - 1); /* Start GRAM write */ lcd_cmd(0x22); for (x=0; x<LCD_WIDTH; x++) for(y=0; y<LCD_HEIGHT; y++) lcd_data(0x00); display_on = true; } static void lcd_v1_enable (bool on) { if (on == display_on) return; lcdctrl_bypass(1); LCDC_CTRL |= RGB24B; if (on) { lcd_write_reg(0x18, 0x44); lcd_write_reg(0x21, 0x01); lcd_write_reg(0x01, 0x00); lcd_write_reg(0x1C, 0x03); lcd_write_reg(0x19, 0x06); udelay(5); lcd_write_reg(0x26, 0x84); udelay(40); lcd_write_reg(0x26, 0xB8); udelay(40); lcd_write_reg(0x26, 0xBC); } else { lcd_write_reg(0x26, 0xB8); udelay(40); lcd_write_reg(0x19, 0x01); udelay(40); lcd_write_reg(0x26, 0xA4); udelay(40); lcd_write_reg(0x26, 0x84); udelay(40); lcd_write_reg(0x1C, 0x00); lcd_write_reg(0x01, 0x02); lcd_write_reg(0x21, 0x00); } display_on = on; LCDC_CTRL &= ~RGB24B; } static void lcd_v1_set_gram_area(int x_start, int y_start, int x_end, int y_end) { lcdctrl_bypass(1); LCDC_CTRL |= RGB24B; lcd_write_reg(0x03, x_start); lcd_write_reg(0x05, x_end); lcd_write_reg(0x07, y_start); lcd_write_reg(0x09, y_end); lcd_cmd(0x22); LCDC_CTRL &= ~RGB24B; } #ifdef HM60X enum lcd_type_t lcd_type; static void identify_lcd(void) { SCU_IOMUXB_CON &= ~(1<<2); if (GPIO_PCDR & (1<<4)) { lcd_type = LCD_V2; } else { lcd_type = LCD_v2; } } static void lcd_v2_display_init(void) { unsigned int x, y; lcd_write_reg(0xD0, 0x0003); lcd_write_reg(0xEB, 0x0B00); lcd_write_reg(0xEC, 0x00CF); lcd_write_reg(0xC7, 0x030F); lcd_write_reg(0x01, 0x001C); lcd_write_reg(0x02, 0x0100); lcd_write_reg(0x03, 0x1038); lcd_write_reg(0x07, 0x0000); lcd_write_reg(0x08, 0x0808); lcd_write_reg(0x0F, 0x0901); lcd_write_reg(0x10, 0x0000); lcd_write_reg(0x11, 0x1B41); lcd_write_reg(0x12, 0x2010); lcd_write_reg(0x13, 0x0009); lcd_write_reg(0x14, 0x4C65); lcd_write_reg(0x30, 0x0000); lcd_write_reg(0x31, 0x00DB); lcd_write_reg(0x32, 0x0000); lcd_write_reg(0x33, 0x0000); lcd_write_reg(0x34, 0x00DB); lcd_write_reg(0x35, 0x0000); lcd_write_reg(0x36, 0x00AF); lcd_write_reg(0x37, 0x0000); lcd_write_reg(0x38, 0x00DB); lcd_write_reg(0x39, 0x0000); lcd_write_reg(0x50, 0x0000); lcd_write_reg(0x51, 0x0705); lcd_write_reg(0x52, 0x0C0A); lcd_write_reg(0x53, 0x0401); lcd_write_reg(0x54, 0x040C); lcd_write_reg(0x55, 0x0608); lcd_write_reg(0x56, 0x0000); lcd_write_reg(0x57, 0x0104); lcd_write_reg(0x58, 0x0E06); lcd_write_reg(0x59, 0x060E); lcd_write_reg(0x20, 0x0000); lcd_write_reg(0x21, 0x0000); lcd_write_reg(0x07, 0x1017); lcd_cmd(0x22); for (x=0; x<LCD_WIDTH; x++) for(y=0; y<LCD_HEIGHT; y++) lcd_data(0x00); display_on = true; } static void lcd_v2_enable (bool on) { if (on == display_on) return; lcdctrl_bypass(1); LCDC_CTRL |= RGB24B; if (on) { lcd_write_reg(0x10, 0x0000); lcd_write_reg(0x11, 0x1B41); udelay(50000); lcd_write_reg(0x07, 0x1017); udelay(50000); } else { lcd_write_reg(0x07, 0x0000); udelay(50000); lcd_write_reg(0x11, 0x0001); udelay(50000); lcd_write_reg(0x10, 0x0001); } display_on = on; LCDC_CTRL &= ~RGB24B; } static void lcd_v2_set_gram_area(int x_start, int y_start, int x_end, int y_end) { lcdctrl_bypass(1); LCDC_CTRL |= RGB24B; lcd_write_reg(0x36, y_end); lcd_write_reg(0x37, y_start); lcd_write_reg(0x38, x_end); lcd_write_reg(0x39, x_start); /* set GRAM address */ lcd_write_reg(0x20, y_start); lcd_write_reg(0x21, x_start); lcd_cmd(0x22); LCDC_CTRL &= ~RGB24B; } void lcd_display_init(void) { reset_lcd(); identify_lcd(); if (lcd_type == LCD_V1) lcd_v1_display_init(); else lcd_v2_display_init(); } void lcd_enable (bool on) { if (lcd_type == LCD_V1) lcd_v1_enable(on); else lcd_v2_enable(on); } void lcd_set_gram_area(int x_start, int y_start, int x_end, int y_end) { if (lcd_type == LCD_V1) lcd_v1_set_gram_area(x_start, y_start, x_end, y_end); else lcd_v2_set_gram_area(x_start, y_start, x_end, y_end); } #else /* HM801 */ void lcd_display_init(void) { reset_lcd(); lcd_v1_display_init(); } void lcd_enable (bool on) { lcd_v1_enable(on); } void lcd_set_gram_area(int x_start, int y_start, int x_end, int y_end) { lcd_v1_set_gram_area(x_start, y_start, x_end, y_end); } #endif bool lcd_active() { return display_on; } /* Blit a YUV bitmap directly to the LCD * provided by generic fallback in lcd-16bit-common.c */ #if 0 void lcd_blit_yuv(unsigned char * const src[3], int src_x, int src_y, int stride, int x, int y, int width, int height) { (void)src; (void)src_x; (void)src_y; (void)stride; (void)x; (void)y; (void)width; (void)height; } #endif
HiFiMAN HM-801 Symmod + balanced card by freeman2007, HiFiMAN HM-603 MM4
Sony XBA-Z5 + Litz Cu 330x Portable balanced + Rare Soviet Litz by sboch (200x0,05x4)
-
Пользователи, сказавшие Спасибо SNPR_ за полезный пост
igor759 (25.03.2017)
-
- Адрес
- Казань
- Сообщений
- 82
- Репутация
- 288 (0)
25.03.2017 07:12Ну гребаным экраном, конечно. Кстати дата производства у меня 12.16, а батарею поставили старую 12 года выпуска. Все оставшиеся детали под чистую используют.
---------- Добавлено в 09:12 ---------- Предыдущее сообщение было размещено в 09:03 ----------
Uncle Drew, потролить решил , кучерявый?
-
- Адрес
- Москва
- Сообщений
- 4,989
- Репутация
- 105621 (0)
25.03.2017 13:37Я же уже выше писал, где происходит выбор типа дисплея. В функции identify_lcd нужно убрать if и жестко установить определённый тип. Затем собрать и попробовать, что получилось
ММ4 / FitEar 335 DW AA
_________
Suum cuique
-
- Адрес
- Екатеринбург
- Сообщений
- 352
- Репутация
- 1827 (0)
25.03.2017 15:50Сделал вот так, не помогает:
Код:/*************************************************************************** * __________ __ ___. * Open \______ \ ____ ____ | | _\_ |__ _______ ___ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ * \/ \/ \/ \/ \/ * $Id$ * * Copyright (C) 2011 Andrew Ryabinin * * * This program is free software; you can redis****ute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This software is dis****uted on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ****************************************************************************/ #include "config.h" #include "kernel.h" #include "lcd.h" #include "system.h" #include "cpu.h" #include "lcdif-rk27xx.h" #include "lcd-target.h" static bool display_on = false; static void reset_lcd(void) { GPIO_PCCON |= (1<<7); GPIO_PCDR &= ~(1<<7); udelay(10); GPIO_PCDR |= (1<<7); udelay(5000); } void lcd_v1_display_init(void) { unsigned int x, y; /* Driving ability setting */ lcd_write_reg(0x60, 0x00); lcd_write_reg(0x61, 0x06); lcd_write_reg(0x62, 0x00); lcd_write_reg(0x63, 0xC8); /* Gamma 2.2 Setting */ lcd_write_reg(0x40, 0x00); lcd_write_reg(0x41, 0x40); lcd_write_reg(0x42, 0x45); lcd_write_reg(0x43, 0x01); lcd_write_reg(0x44, 0x60); lcd_write_reg(0x45, 0x05); lcd_write_reg(0x46, 0x0C); lcd_write_reg(0x47, 0xD1); lcd_write_reg(0x48, 0x05); lcd_write_reg(0x50, 0x75); lcd_write_reg(0x51, 0x01); lcd_write_reg(0x52, 0x67); lcd_write_reg(0x53, 0x14); lcd_write_reg(0x54, 0xF2); lcd_write_reg(0x55, 0x07); lcd_write_reg(0x56, 0x03); lcd_write_reg(0x57, 0x49); /* Power voltage setting */ lcd_write_reg(0x1F, 0x03); lcd_write_reg(0x20, 0x00); lcd_write_reg(0x24, 0x28); lcd_write_reg(0x25, 0x45); lcd_write_reg(0x23, 0x2F); /* Power on setting */ lcd_write_reg(0x18, 0x44); lcd_write_reg(0x21, 0x01); lcd_write_reg(0x01, 0x00); lcd_write_reg(0x1C, 0x03); lcd_write_reg(0x19, 0x06); udelay(5); /* Display on setting */ lcd_write_reg(0x26, 0x84); udelay(40); lcd_write_reg(0x26, 0xB8); udelay(40); lcd_write_reg(0x26, 0xBC); udelay(40); /* Memmory access setting */ lcd_write_reg(0x16, 0x68); /* Setup 16bit mode */ lcd_write_reg(0x17, 0x05); /* Set GRAM area */ lcd_write_reg(0x02, 0x00); lcd_write_reg(0x03, 0x00); lcd_write_reg(0x04, 0x00); lcd_write_reg(0x05, LCD_WIDTH - 1); lcd_write_reg(0x06, 0x00); lcd_write_reg(0x07, 0x00); lcd_write_reg(0x08, 0x00); lcd_write_reg(0x09, LCD_HEIGHT - 1); /* Start GRAM write */ lcd_cmd(0x22); for (x=0; x<LCD_WIDTH; x++) for(y=0; y<LCD_HEIGHT; y++) lcd_data(0x00); display_on = true; } static void lcd_v1_enable (bool on) { if (on == display_on) return; lcdctrl_bypass(1); LCDC_CTRL |= RGB24B; if (on) { lcd_write_reg(0x18, 0x44); lcd_write_reg(0x21, 0x01); lcd_write_reg(0x01, 0x00); lcd_write_reg(0x1C, 0x03); lcd_write_reg(0x19, 0x06); udelay(5); lcd_write_reg(0x26, 0x84); udelay(40); lcd_write_reg(0x26, 0xB8); udelay(40); lcd_write_reg(0x26, 0xBC); } else { lcd_write_reg(0x26, 0xB8); udelay(40); lcd_write_reg(0x19, 0x01); udelay(40); lcd_write_reg(0x26, 0xA4); udelay(40); lcd_write_reg(0x26, 0x84); udelay(40); lcd_write_reg(0x1C, 0x00); lcd_write_reg(0x01, 0x02); lcd_write_reg(0x21, 0x00); } display_on = on; LCDC_CTRL &= ~RGB24B; } static void lcd_v1_set_gram_area(int x_start, int y_start, int x_end, int y_end) { lcdctrl_bypass(1); LCDC_CTRL |= RGB24B; lcd_write_reg(0x03, x_start); lcd_write_reg(0x05, x_end); lcd_write_reg(0x07, y_start); lcd_write_reg(0x09, y_end); lcd_cmd(0x22); LCDC_CTRL &= ~RGB24B; } #ifdef HM60X enum lcd_type_t lcd_type; static void identify_lcd(void) { SCU_IOMUXB_CON &= ~(1<<2); lcd_type = LCD_v2; } static void lcd_v2_display_init(void) { unsigned int x, y; lcd_write_reg(0xD0, 0x0003); lcd_write_reg(0xEB, 0x0B00); lcd_write_reg(0xEC, 0x00CF); lcd_write_reg(0xC7, 0x030F); lcd_write_reg(0x01, 0x001C); lcd_write_reg(0x02, 0x0100); lcd_write_reg(0x03, 0x1038); lcd_write_reg(0x07, 0x0000); lcd_write_reg(0x08, 0x0808); lcd_write_reg(0x0F, 0x0901); lcd_write_reg(0x10, 0x0000); lcd_write_reg(0x11, 0x1B41); lcd_write_reg(0x12, 0x2010); lcd_write_reg(0x13, 0x0009); lcd_write_reg(0x14, 0x4C65); lcd_write_reg(0x30, 0x0000); lcd_write_reg(0x31, 0x00DB); lcd_write_reg(0x32, 0x0000); lcd_write_reg(0x33, 0x0000); lcd_write_reg(0x34, 0x00DB); lcd_write_reg(0x35, 0x0000); lcd_write_reg(0x36, 0x00AF); lcd_write_reg(0x37, 0x0000); lcd_write_reg(0x38, 0x00DB); lcd_write_reg(0x39, 0x0000); lcd_write_reg(0x50, 0x0000); lcd_write_reg(0x51, 0x0705); lcd_write_reg(0x52, 0x0C0A); lcd_write_reg(0x53, 0x0401); lcd_write_reg(0x54, 0x040C); lcd_write_reg(0x55, 0x0608); lcd_write_reg(0x56, 0x0000); lcd_write_reg(0x57, 0x0104); lcd_write_reg(0x58, 0x0E06); lcd_write_reg(0x59, 0x060E); lcd_write_reg(0x20, 0x0000); lcd_write_reg(0x21, 0x0000); lcd_write_reg(0x07, 0x1017); lcd_cmd(0x22); for (x=0; x<LCD_WIDTH; x++) for(y=0; y<LCD_HEIGHT; y++) lcd_data(0x00); display_on = true; } static void lcd_v2_enable (bool on) { if (on == display_on) return; lcdctrl_bypass(1); LCDC_CTRL |= RGB24B; if (on) { lcd_write_reg(0x10, 0x0000); lcd_write_reg(0x11, 0x1B41); udelay(50000); lcd_write_reg(0x07, 0x1017); udelay(50000); } else { lcd_write_reg(0x07, 0x0000); udelay(50000); lcd_write_reg(0x11, 0x0001); udelay(50000); lcd_write_reg(0x10, 0x0001); } display_on = on; LCDC_CTRL &= ~RGB24B; } static void lcd_v2_set_gram_area(int x_start, int y_start, int x_end, int y_end) { lcdctrl_bypass(1); LCDC_CTRL |= RGB24B; lcd_write_reg(0x36, y_end); lcd_write_reg(0x37, y_start); lcd_write_reg(0x38, x_end); lcd_write_reg(0x39, x_start); /* set GRAM address */ lcd_write_reg(0x20, y_start); lcd_write_reg(0x21, x_start); lcd_cmd(0x22); LCDC_CTRL &= ~RGB24B; } void lcd_display_init(void) { reset_lcd(); identify_lcd(); lcd_v2_display_init(); } void lcd_enable (bool on) { if (lcd_type == LCD_V1) lcd_v1_enable(on); else lcd_v2_enable(on); } void lcd_set_gram_area(int x_start, int y_start, int x_end, int y_end) { if (lcd_type == LCD_V1) lcd_v1_set_gram_area(x_start, y_start, x_end, y_end); else lcd_v2_set_gram_area(x_start, y_start, x_end, y_end); } #else /* HM801 */ void lcd_display_init(void) { reset_lcd(); lcd_v1_display_init(); } void lcd_enable (bool on) { lcd_v1_enable(on); } void lcd_set_gram_area(int x_start, int y_start, int x_end, int y_end) { lcd_v1_set_gram_area(x_start, y_start, x_end, y_end); } #endif bool lcd_active() { return display_on; } /* Blit a YUV bitmap directly to the LCD * provided by generic fallback in lcd-16bit-common.c */ #if 0 void lcd_blit_yuv(unsigned char * const src[3], int src_x, int src_y, int stride, int x, int y, int width, int height) { (void)src; (void)src_x; (void)src_y; (void)stride; (void)x; (void)y; (void)width; (void)height; } #endif
Код:/*************************************************************************** * __________ __ ___. * Open \______ \ ____ ____ | | _\_ |__ _______ ___ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ * \/ \/ \/ \/ \/ * $Id$ * * Copyright (C) 2011 Andrew Ryabinin * * * This program is free software; you can redis****ute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This software is dis****uted on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ****************************************************************************/ #include "config.h" #include "kernel.h" #include "lcd.h" #include "system.h" #include "cpu.h" #include "lcdif-rk27xx.h" #include "lcd-target.h" static bool display_on = false; static void reset_lcd(void) { GPIO_PCCON |= (1<<7); GPIO_PCDR &= ~(1<<7); udelay(10); GPIO_PCDR |= (1<<7); udelay(5000); } void lcd_v1_display_init(void) { unsigned int x, y; /* Driving ability setting */ lcd_write_reg(0x60, 0x00); lcd_write_reg(0x61, 0x06); lcd_write_reg(0x62, 0x00); lcd_write_reg(0x63, 0xC8); /* Gamma 2.2 Setting */ lcd_write_reg(0x40, 0x00); lcd_write_reg(0x41, 0x40); lcd_write_reg(0x42, 0x45); lcd_write_reg(0x43, 0x01); lcd_write_reg(0x44, 0x60); lcd_write_reg(0x45, 0x05); lcd_write_reg(0x46, 0x0C); lcd_write_reg(0x47, 0xD1); lcd_write_reg(0x48, 0x05); lcd_write_reg(0x50, 0x75); lcd_write_reg(0x51, 0x01); lcd_write_reg(0x52, 0x67); lcd_write_reg(0x53, 0x14); lcd_write_reg(0x54, 0xF2); lcd_write_reg(0x55, 0x07); lcd_write_reg(0x56, 0x03); lcd_write_reg(0x57, 0x49); /* Power voltage setting */ lcd_write_reg(0x1F, 0x03); lcd_write_reg(0x20, 0x00); lcd_write_reg(0x24, 0x28); lcd_write_reg(0x25, 0x45); lcd_write_reg(0x23, 0x2F); /* Power on setting */ lcd_write_reg(0x18, 0x44); lcd_write_reg(0x21, 0x01); lcd_write_reg(0x01, 0x00); lcd_write_reg(0x1C, 0x03); lcd_write_reg(0x19, 0x06); udelay(5); /* Display on setting */ lcd_write_reg(0x26, 0x84); udelay(40); lcd_write_reg(0x26, 0xB8); udelay(40); lcd_write_reg(0x26, 0xBC); udelay(40); /* Memmory access setting */ lcd_write_reg(0x16, 0x68); /* Setup 16bit mode */ lcd_write_reg(0x17, 0x05); /* Set GRAM area */ lcd_write_reg(0x02, 0x00); lcd_write_reg(0x03, 0x00); lcd_write_reg(0x04, 0x00); lcd_write_reg(0x05, LCD_WIDTH - 1); lcd_write_reg(0x06, 0x00); lcd_write_reg(0x07, 0x00); lcd_write_reg(0x08, 0x00); lcd_write_reg(0x09, LCD_HEIGHT - 1); /* Start GRAM write */ lcd_cmd(0x22); for (x=0; x<LCD_WIDTH; x++) for(y=0; y<LCD_HEIGHT; y++) lcd_data(0x00); display_on = true; } static void lcd_v1_enable (bool on) { if (on == display_on) return; lcdctrl_bypass(1); LCDC_CTRL |= RGB24B; if (on) { lcd_write_reg(0x18, 0x44); lcd_write_reg(0x21, 0x01); lcd_write_reg(0x01, 0x00); lcd_write_reg(0x1C, 0x03); lcd_write_reg(0x19, 0x06); udelay(5); lcd_write_reg(0x26, 0x84); udelay(40); lcd_write_reg(0x26, 0xB8); udelay(40); lcd_write_reg(0x26, 0xBC); } else { lcd_write_reg(0x26, 0xB8); udelay(40); lcd_write_reg(0x19, 0x01); udelay(40); lcd_write_reg(0x26, 0xA4); udelay(40); lcd_write_reg(0x26, 0x84); udelay(40); lcd_write_reg(0x1C, 0x00); lcd_write_reg(0x01, 0x02); lcd_write_reg(0x21, 0x00); } display_on = on; LCDC_CTRL &= ~RGB24B; } static void lcd_v1_set_gram_area(int x_start, int y_start, int x_end, int y_end) { lcdctrl_bypass(1); LCDC_CTRL |= RGB24B; lcd_write_reg(0x03, x_start); lcd_write_reg(0x05, x_end); lcd_write_reg(0x07, y_start); lcd_write_reg(0x09, y_end); lcd_cmd(0x22); LCDC_CTRL &= ~RGB24B; } #ifdef HM60X enum lcd_type_t lcd_type; static void identify_lcd(void) { SCU_IOMUXB_CON &= ~(1<<2); lcd_type = LCD_v2; } static void lcd_v2_display_init(void) { unsigned int x, y; lcd_write_reg(0xD0, 0x0003); lcd_write_reg(0xEB, 0x0B00); lcd_write_reg(0xEC, 0x00CF); lcd_write_reg(0xC7, 0x030F); lcd_write_reg(0x01, 0x001C); lcd_write_reg(0x02, 0x0100); lcd_write_reg(0x03, 0x1038); lcd_write_reg(0x07, 0x0000); lcd_write_reg(0x08, 0x0808); lcd_write_reg(0x0F, 0x0901); lcd_write_reg(0x10, 0x0000); lcd_write_reg(0x11, 0x1B41); lcd_write_reg(0x12, 0x2010); lcd_write_reg(0x13, 0x0009); lcd_write_reg(0x14, 0x4C65); lcd_write_reg(0x30, 0x0000); lcd_write_reg(0x31, 0x00DB); lcd_write_reg(0x32, 0x0000); lcd_write_reg(0x33, 0x0000); lcd_write_reg(0x34, 0x00DB); lcd_write_reg(0x35, 0x0000); lcd_write_reg(0x36, 0x00AF); lcd_write_reg(0x37, 0x0000); lcd_write_reg(0x38, 0x00DB); lcd_write_reg(0x39, 0x0000); lcd_write_reg(0x50, 0x0000); lcd_write_reg(0x51, 0x0705); lcd_write_reg(0x52, 0x0C0A); lcd_write_reg(0x53, 0x0401); lcd_write_reg(0x54, 0x040C); lcd_write_reg(0x55, 0x0608); lcd_write_reg(0x56, 0x0000); lcd_write_reg(0x57, 0x0104); lcd_write_reg(0x58, 0x0E06); lcd_write_reg(0x59, 0x060E); lcd_write_reg(0x20, 0x0000); lcd_write_reg(0x21, 0x0000); lcd_write_reg(0x07, 0x1017); lcd_cmd(0x22); for (x=0; x<LCD_WIDTH; x++) for(y=0; y<LCD_HEIGHT; y++) lcd_data(0x00); display_on = true; } static void lcd_v2_enable (bool on) { if (on == display_on) return; lcdctrl_bypass(1); LCDC_CTRL |= RGB24B; if (on) { lcd_write_reg(0x10, 0x0000); lcd_write_reg(0x11, 0x1B41); udelay(50000); lcd_write_reg(0x07, 0x1017); udelay(50000); } else { lcd_write_reg(0x07, 0x0000); udelay(50000); lcd_write_reg(0x11, 0x0001); udelay(50000); lcd_write_reg(0x10, 0x0001); } display_on = on; LCDC_CTRL &= ~RGB24B; } static void lcd_v2_set_gram_area(int x_start, int y_start, int x_end, int y_end) { lcdctrl_bypass(1); LCDC_CTRL |= RGB24B; lcd_write_reg(0x36, y_end); lcd_write_reg(0x37, y_start); lcd_write_reg(0x38, x_end); lcd_write_reg(0x39, x_start); /* set GRAM address */ lcd_write_reg(0x20, y_start); lcd_write_reg(0x21, x_start); lcd_cmd(0x22); LCDC_CTRL &= ~RGB24B; } void lcd_display_init(void) { reset_lcd(); identify_lcd(); lcd_v2_display_init(); } void lcd_enable (bool on) { lcd_v2_enable(on); } void lcd_set_gram_area(int x_start, int y_start, int x_end, int y_end) { lcd_v2_set_gram_area(x_start, y_start, x_end, y_end); } #else /* HM801 */ void lcd_display_init(void) { reset_lcd(); lcd_v1_display_init(); } void lcd_enable (bool on) { lcd_v1_enable(on); } void lcd_set_gram_area(int x_start, int y_start, int x_end, int y_end) { lcd_v1_set_gram_area(x_start, y_start, x_end, y_end); } #endif bool lcd_active() { return display_on; } /* Blit a YUV bitmap directly to the LCD * provided by generic fallback in lcd-16bit-common.c */ #if 0 void lcd_blit_yuv(unsigned char * const src[3], int src_x, int src_y, int stride, int x, int y, int width, int height) { (void)src; (void)src_x; (void)src_y; (void)stride; (void)x; (void)y; (void)width; (void)height; } #endif
HiFiMAN HM-801 Symmod + balanced card by freeman2007, HiFiMAN HM-603 MM4
Sony XBA-Z5 + Litz Cu 330x Portable balanced + Rare Soviet Litz by sboch (200x0,05x4)
-
- Адрес
- Могилёв, Беларусь
- Возраст
- 52
- Сообщений
- 6,117
- Репутация
- 241561 (0)
25.03.2017 16:16Всем привет. Подскажите, плиз, можно ли rockbox настроить так, чтобы экран не включался при переключении треков? 603-й.
Luxury & Precision L5 Pro, Highscreen TrueSound PRO, JDS LABS Atom AMP
Earsonics S-EM6 V1 + кабель Earsonics Silver 4C, Earsonics SM3 v2 + кабель Ice Lab, Denon AH-D5000, Sony MDR-MA900.
плеер.ру в Telegram
-
- Адрес
- ДОНЕЦК
- Возраст
- 51
- Сообщений
- 3,267
- Репутация
- 39566 (0)
-
- Адрес
- г. Владимир
- Возраст
- 38
- Сообщений
- 79
- Репутация
- 230 (0)
26.03.2017 02:48SNPR_,
gemzza,
ой ребят, до трех ночи сидел - пытался разобраться в коде прошивки...
Вот, попробуйте https://yadi.sk/d/WBbA-GmC3GLtmh постарался сделать свежий рокбокс, адаптированный под экран LCD_V2
p.s.: на моем плеере запустилась, но у меня без проблем и раньше было, проверьте на своих "мужиках"
Что я там сделал?
сначала хотел выправить алгоритм "если блаблабла то экран_тип1, иначе экран_тип2" и подставить везде "экран_тип2", но при компиляции получал ошибки. Потом тупо взял и три секции с настройками экрана тип2 взял и вставил с заменой в секции с настройками типа1.
т.е. я заменил вот эти секции
Код:void lcd_v1_display_init(void) ... static void lcd_v1_enable (bool on) ... static void lcd_v1_set_gram_area(int x_start, int y_start, int x_end, int y_end) ...
Код:void lcd_enable (bool on) { if (lcd_type == LCD_V1) lcd_v1_enable(on); else lcd_v2_enable(on); }
Потестируйте и напишите, надеюсь прокатит данная фишка, иначе придется думать еще...
-
- Адрес
- Екатеринбург
- Сообщений
- 352
- Репутация
- 1827 (0)
-
- Адрес
- Краснокамск
- Возраст
- 57
- Сообщений
- 488
- Репутация
- 3076 (0)
26.03.2017 11:24HiFiMAN HM-603,
SMSL sApII Pro TPA6120A2,
Sony XBA-A2, AudioSense T260 PRO, SoundMAGIC PL50, ТДС-16 "Эхо".
Информация о теме
Пользователи, просматривающие эту тему
Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)
Похожие темы
-
Прошивка ROCKBOX для iBasso DX50.
от DOC2008 в разделе Flash-плеерыОтветов: 1956Последнее сообщение: 18.08.2021, 16:14 -
Hifiman HM-603 4Gb RockBox
от makarov111935 в разделе АрхивОтветов: 11Последнее сообщение: 21.03.2018, 15:34 -
Hifiman HM-601 Slim 4Gb Rockbox
от Urzilo в разделе АрхивОтветов: 3Последнее сообщение: 01.04.2016, 21:53 -
Sansa Clip + прошивка Rockbox 3.13: проблема с динамическим списком воспроизведения
от restet в разделе Модификации и ремонт плееровОтветов: 0Последнее сообщение: 28.01.2015, 23:59 -
Прошивка ROCKBOX для Colorfly CK4/CK4+
от Incura в разделе Выбор плеераОтветов: 6Последнее сообщение: 02.12.2014, 20:43