Modyfikowanie parametrów bufora ramki (/ dev / graphics / fb0) przy użyciu ładowalnego modułu jądra

Problem: Muszę skonfigurować różne wyświetlacze LCD, które będą używane przez platformę Android. Prawie we wszystkich przypadkach nie ma żadnych specyfikacji elektrycznych dostępnych dla wyświetlaczy LCD będących przedmiotem zainteresowania. Ale dzięki doświadczeniu i inżynierii odwrotnej parametry można odgadnąć dość dobrze. Próbuję użyć Loadable Kernel Modules, aby dostroić parametry wyświetlania (inne sugestie są również mile widziane). Poniżej znajdują się odpowiednie informacje.

HW: Atmel SAMA5D31-EK (procesor ARM 5)

POŁUDNIOWY ZACHÓD: Andriod Linux (Target), Ubuntu (Host System), Sourcery CodeBench (Cross Compiler) Fragmenty kodu z pliku board-dt.c

static struct fb_videomode at91_tft_vga_modes[] = {
..... 
.xres =435;
.yres =235;
....
}
static struct fb_monspecs at91fb_default_monspecs = {
.........
.modedb = at91_tft_vga_modes,
......
}
static struct atmel_lcd_fb_info __initdata ek_lcdc_data = {
..........
.default_monspecs = & at91fb_default_monspecs;
.........
}

Dodałem ten kod, więc moduł ładowalnego jądra ma dostęp do struktury lcdc_data

extern void set_fb_video(struct fb_videomode *mg_set_tft_vga_modes)
{
   ek_lcdc_data.default_monspecs->modedb->xres = mg_set_tft_vga_modes->xres;
}
EXPORT_SYMBOL(set_fb_video);

Kiedy wykonuję ładowalny moduł jądra, nie zauważam żadnych zmian na wyświetlaczu. Podejrzewam, że zmieniam zmienną (pamięć), ale rejestry nie zostały naruszone.

Pytanie: Czego mi brakuje? Czytałem o wykonywaniu wywołań do platform_driver_register () i platform_driver_unregister ().

Z góry dziękuję za pomoc.

questionAnswers(0)

yourAnswerToTheQuestion