В настоящий момент идет работа над созданием отдельного драйвера именно под Vogue-плеер. Сложность состоит в том, что в устройстве используются сразу два типа клавиш - GPIO и ADC, а MinOS по умолчанию предоставляет драйверы либо для GPIO, либо для ACD. Нужно написать драйвер, совмещающий в себе оба типа клавиш. На данный момент есть готовый прототип, но пока с глюками к сожалению.
Однако, уже сейчас можно использовать устройство только с GPIO клавишами. При этом получаются задействованы кнопки: VolU, VolD, K1, K2, Power.
GPIO драйвер
В файле-конфигурации /mtv_50/jz4750l_taurus.mak следует поменять KEYTYPE на 1
В файле /soc_src/jz4725/include/PlatformCfg/4750L_taurus_cfg.h добавить (или отремарить и поменять) строки:
#define KEY_AUD_PREV_PIN (GPIO_GROUP_D + 17)//Vogue
#define KEY_VOL_DECR_PIN (GPIO_GROUP_C + 11)//Vogue
#define KEY_VOL_INCR_PIN (GPIO_GROUP_C + 10)//Vogue
#define KEY_AUD_NEXT_PIN (GPIO_GROUP_D + 23)//Vogue
#define KEY_MENU_PIN (GPIO_GROUP_C + 31)//Vogue
ADC драйвер
В файле-конфигурации /mtv_50/jz4750l_taurus.mak следует поменять KEYTYPE на 2
В файле /soc_src/jz4725/drv/key/key_ad.c нужно изменить структуру AD_Key_Dec keydec[] на полученные путем дизасемблирования оригинальной прошивки значения:
AD_Key_Dec keydec[] =
{
{0x290, 0x394, 0x20}, //K3
{0x498, 0x59C, 0x04}, //K4
{0x704, 0x808, 0x08}, //K5
{0x964, 0xA68, 0x02}, //K6
};
В файле /soc_src/jz4725/include/PlatformCfg/4750L_taurus_cfg.h добавить дефайн
#define AD_KEY_INT_R_EDGE //edit for Vogue
И изменить AD_KEY_INT_PIN на:
#define AD_KEY_INT_PIN (GPIO_GROUP_D + 17)//edit for Vogue
Драйвер для Vogue-плеера (GPIO+ADC)
Положить его в папку
/soc_src/jz4725/drv/key/
В файле-конфигурации /mtv_50/jz4750l_taurus.mak следует поменять KEYTYPE на 3
В файле /soc_src/jz4725/include/PlatformCfg/4750L_taurus_cfg.h добавить дефайн
#define KEY_VOL_DECR_PIN (GPIO_GROUP_C + 11)//Vogue
#define KEY_VOL_INCR_PIN (GPIO_GROUP_C + 10)//Vogue
#define KEY_AUD_NEXT_PIN (GPIO_GROUP_D + 23)//Vogue
#define KEY_MENU_PIN (GPIO_GROUP_C + 31)//Vogue
#define AD_KEY_INT_R_EDGE //edit for Vogue
И изменить AD_KEY_INT_PIN на:
#define AD_KEY_INT_PIN (GPIO_GROUP_D + 17)//edit for Vogue
Драйвер обрабатывает все 8 клавиш открытки плюс Power. Поскольку в приложениях используется только 6 клавиш, то часть кнопок пока свободны. На их скан-коды можно повесить что-то полезное, например скриншоты.
Таблица скан-кодов клавиш и во что они транслируются функцией TranslateKeyCode()
Кнопка | Скан- код
| Значение | GPIO ADC
| |
К1 | 0x01 | VK_OK | GPIO | GPIO_GROUP_C + 31 |
К2 | 0x04 | VK_LEFT | GPIO | GPIO_GROUP_D + 23 |
К3 | 0x02 | VK_RIGHT | ADC | 0x290 - 0x394 |
К4 | 0x10 | | ADC | 0x498 - 0x59C |
К5 | 0x40 | VK_PLAY | ADC | 0x704 - 0x808 |
К6 | 0x80 | | ADC | 0x964 - 0xA68 |
Vol + | 0x20 | VK_UP | GPIO | GPIO_GROUP_C + 10 |
Vol - | 0x08 | VK_DOWN | GPIO | GPIO_GROUP_C + 11 |
Power | 0x100 | | GPIO | GPIO_GROUP_B + 31 |
Отдельная история с кнопкой Power (GPIO, GPIO_GROUP_B + 31). Кнопка является 9-й, но обрабатывается специфически. При длительном нажатии она выключает систему. При коротком нажатии эмулирует нажатие и отпускание кнопки 0x100
Changelog2011_01_08.3Поправлены скан-коды для К2 и К3
Поправлена обработка Power при наличии зарядки
2011-01-09.1Оптимизирована обработка Power
2011-01-12.1Добавлен скан код 0x100 для короткого нажатия на Power. Теперь эта кнопка не дублирует 0x40 и может быть задействована в софте.