static int simple_panel_enable_backlight(struct udevice *dev) { struct simple_panel_priv *priv = dev_get_priv(dev); int ret; debug("%s: start, backlight = '%s'\n", __func__, priv->backlight->name); dm_gpio_set_value(&priv->enable, 1); ret = backlight_enable(priv->backlight); debug("%s: done, ret = %d\n", __func__, ret); if (ret) return ret; return 0; }
void show_image(ppz_images image_name) { int fallback = 1; enum omap_dispc_format fmt = OMAP_XRGB888_FMT; if(panel_has_enabled) { panel_enable(0); backlight_enable(0); } switch (image_name) { case boot: fmt = OMAP_RGB565_FMT; display_rle(_binary_boot_rle_start, (uint16_t *) FB, panel.xres, panel.yres); break; case lowbatt_charge: fmt = OMAP_RGB565_FMT; display_rle(_binary_lowbatt_charge_rle_start, (uint16_t *) FB, panel.xres, panel.yres); break; case connect_charge: display_mmc_gzip_ppm(1, 5, "connect_charge.ppz", (uint32_t *) FB, panel.xres, panel.yres); break; case cooldown: display_mmc_gzip_ppm(1, 5, "cooldown.ppz", (uint32_t *) FB, panel.xres, panel.yres); break; default: return -1; } panel_enable(1); display_init(&panel, (void *) FB, fmt); backlight_enable(1); backlight_set_brightness(0x3f); panel_has_enabled = 1; }
static void mainboard_enable(device_t dev) { /* Configure the MultiKey controller */ // m3885_configure_multikey(); /* Enable LCD Backlight */ backlight_enable(); /* Disable Dummy DCC -> GP45 = 1 */ outb(inb(0x60f) | (1 << 5), 0x60f); #if CONFIG_VGA_ROM_RUN /* Install custom int15 handler for VGA OPROM */ mainboard_interrupt_handlers(0x15, &int15_handler); #endif #if DUMP_RUNTIME_REGISTERS dump_runtime_registers(); #endif }
void lcd_test(void) { unsigned char c; static int lcdon = 0; static int blon = 0; static int dispon = 0; lcd_init(); while (1) { printf("********LCD TEST MENU********\n\r"); printf("[L] enable/disable LCD\n\r"); printf("[B] enable/disable back light\n\r"); printf("[C] enable/disable s3c6410 display controller\n\r"); printf("[D] display color\n\r"); printf("[Q] quit\n\r"); do { c = getc(); if (c == '\n' || c == '\r') { printf("\n\r"); } else { putc(c); } } while (c == '\n' || c == '\r'); switch (c) { case 'l': case 'L': { if (lcdon) { lcd_off(); printf("LCD off\n\r"); } else { lcd_on(); printf("LCD on\n\r"); } lcdon = !lcdon; break; } case 'b': case 'B': { if (blon) { backlight_disable(); printf("Backlight off\n\r"); } else { backlight_enable(); printf("Backlight on\n\r"); } blon = !blon; break; } case 'c': case 'C': { if (dispon) { displaycon_off(); printf("Display controller off\n\r"); } else { displaycon_on(); printf("Display controller on\n\r"); } blon = !blon; break; } case 'd': case 'D': { display_red(); break; } case 'q': case 'Q': { return ; break; } } } }
void lcd_init(void) { /* 1. 设置相关GPIO引脚用于LCD */ GPICON = 0xaaaaaaaa; /* gpi0~gpi15用作lcd_vd[0~15] */ GPJCON = 0xaaaaaaa; /* gpj0~gpi11用作lcd */ //GPFCON &= ~(0x3<<28); //GPFCON |= (1<<28); /* GPF14用作背光使能信号 */ GPECON &= ~(0xf); GPECON |= (0x1); /* GPE0用作LCD的on/off信号 */ /* 2. 初始化6410的display controller * 2.1 hsync,vsync,vclk,vden的极性和时间参数 * 2.2 行数、列数(分辨率),象素颜色的格式 * 2.3 分配显存(frame buffer),写入display controller */ MIFPCON &= ~(1<<3); /* Normal mode */ SPCON &= ~(0x3); SPCON |= 0x1; /* RGB I/F style */ #if 0 VIDCON0 &= ~((3<<26) | (3<<17) | (0xff<<6)); /* RGB I/F, RGB Parallel format, */ VIDCON0 |= ((2<<6) | (1<<4) | (0x3<<2)); /* vclk== 27MHz Ext Clock input / (CLKVAL+1) = 27/3 = 9MHz */ #else VIDCON0 &= ~((3<<26) | (3<<17) | (0xff<<6) | (3<<2)); /* RGB I/F, RGB Parallel format, */ VIDCON0 |= ((14<<6) | (1<<4) ); /* vclk== HCLK / (CLKVAL+1) = 133/15 = 9MHz */ #endif VIDCON1 &= ~(1<<7); /* 在vclk的下降沿获取数据 */ VIDCON1 |= ((1<<6) | (1<<5)); /* HSYNC高电平有效, VSYNC高电平有效, */ VIDTCON0 = (VBPD << 16) | (VFPD << 8) | (VSPW << 0); VIDTCON1 = (HBPD << 16) | (HFPD << 8) | (HSPW << 0); VIDTCON2 = (LINEVAL << 11) | (HOZVAL << 0); WINCON0 &= ~(0xf << 2); WINCON0 |= (0x3<<2) | (1<<17); /* 8 BPP (palletized), byte swap */ VIDOSD0A = (LeftTopX<<11) | (LeftTopY << 0); VIDOSD0B = (RightBotX<<11) | (RightBotY << 0); VIDOSD0C = (LINEVAL + 1) * (HOZVAL + 1) / 4; VIDW00ADD0B0 = FRAME_BUFFER; VIDW00ADD1B0 = (((HOZVAL + 1)*1 + 0) * (LINEVAL + 1)) & (0xffffff); /* VBASEL = VBASEU + (LINEWIDTH+OFFSIZE) x (LINEVAL+1) * = 0 + (480*1 + 0) * 272 * = */ //VIDW00ADD2 = HOZVAL + 1; /* 设置调色板 */ palette_init(); //pwm_set(2); backlight_enable(); fb_base_addr = FRAME_BUFFER; xsize = HOZVAL + 1; ysize = LINEVAL + 1; bpp = 8; clean_screem(); }
int board_late_init(void) { int bootmode = set_boot_mode(); int display_painted =0; /* boot */ enum omap_dispc_format fmt = OMAP_XRGB888_FMT; enum coolcharger_ppz_t coolcharger_ppz = get_coolcharger_ppz(); if(coolcharger_ppz == COOLCHARGER_SHUTDOWN_NOACTION) return 0; else if(coolcharger_ppz == COOLCHARGER_INITONLY) { if(!panel_has_enabled) { fmt = OMAP_RGB565_FMT; memset((void *) FB, 0, (panel.xres * 2 * panel.yres)); display_init(&panel, (void *) FB, fmt); } return 0; } switch(bootmode) { case EMMC_ANDROID: switch(coolcharger_ppz) { case COOLCHARGER_DISABLE: display_painted = 1; break; case COOLCHARGER_SHUTDOWN_COOLDOWN: case COOLCHARGER_SHUTDOWN_WARMUP: //if we have the warm up image, we can use it. disable_panel_backlight(); display_mmc_gzip_ppm(1, 5, "cooldown.ppz", (uint32_t *) FB, panel.xres, panel.yres); break; } break; case EMMC_RECOVERY: if(boot_cooldown_charger_mode()) { disable_panel_backlight(); switch(coolcharger_ppz) { case COOLCHARGER_COOLDOWN_MODE: display_mmc_gzip_ppm(1, 5, "cooldown.ppz", (uint32_t *) FB, panel.xres, panel.yres); break; case COOLCHARGER_CHARGER_MODE: fmt = OMAP_RGB565_FMT; display_rle(_binary_lowbatt_charge_rle_start, (uint16_t *) FB, panel.xres, panel.yres); break; } } else { if (!panel_has_enabled) /* recovery image is same as boot */ show_image(boot); display_painted = 1; } break; case SD_UIMAGE: case SD_BOOTIMG: case USB_BOOTIMG: default: /* if we use PIC SD card to reflash and the SoC < BOOT_ANDROID * the show_image will not be called. */ if(!panel_has_enabled) show_image(boot); display_painted = 1; break; } if (display_painted == 0) { panel_enable(1); display_init(&panel, (void *) FB, fmt); backlight_enable(1); backlight_set_brightness(0x3f); panel_has_enabled = 1; if(coolcharger_ppz == COOLCHARGER_SHUTDOWN_COOLDOWN || coolcharger_ppz == COOLCHARGER_SHUTDOWN_WARMUP) udelay(3000000); } return bootmode; }
void backlight_set(uint8_t level) { #ifdef FADING_LED_ENABLE backlight_mode = level; #endif #ifdef BREATHING_LED_ENABLE switch (level) { case 1: case 2: case 3: #ifdef SOFTPWM_LED_ENABLE softpwm_led_enable(); #ifdef FADING_LED_ENABLE fading_led_disable_all(); #endif breathing_led_disable_all(); #else backlight_enable(); breathing_led_disable(); #endif backlight_set_raw(pgm_read_byte(&backlight_table[level])); break; case 4: case 5: case 6: #ifdef SOFTPWM_LED_ENABLE softpwm_led_enable(); #ifdef FADING_LED_ENABLE fading_led_disable_all(); #endif breathing_led_enable_all(); #else backlight_enable(); breathing_led_enable(); #endif breathing_led_set_duration(6 - level); break; #ifdef SOFTPWM_LED_ENABLE #ifdef FADING_LED_ENABLE case 7: softpwm_led_enable(); fading_led_enable_all(); breathing_led_disable_all(); fading_led_set_direction(FADING_LED_FADE_IN); fading_led_set_duration(3); break; case 8: softpwm_led_enable(); fading_led_enable_all(); breathing_led_disable_all(); fading_led_set_direction(FADING_LED_FADE_OUT); fading_led_set_duration(3); break; #endif #endif case 0: default: #ifdef SOFTPWM_LED_ENABLE #ifdef FADING_LED_ENABLE fading_led_disable_all(); #endif breathing_led_disable_all(); softpwm_led_disable(); #else breathing_led_disable(); backlight_disable(); #endif break; } #else if (level > 0) { backlight_enable(); backlight_set_raw(pgm_read_byte(&backlight_table[level])); } else { backlight_disable(); } #endif }
void handle_code_actuate(const uint8_t code, const uint8_t action, const uint8_t tapkey) { const uint8_t modaction = (action & MOD_ACTION_MASK); if (modaction) { g_autokey_modifier = modaction; } switch(code) { case HID_KEYBOARD_SC_A: case HID_KEYBOARD_SC_B: case HID_KEYBOARD_SC_C: case HID_KEYBOARD_SC_D: case HID_KEYBOARD_SC_E: case HID_KEYBOARD_SC_F: case HID_KEYBOARD_SC_G: case HID_KEYBOARD_SC_H: case HID_KEYBOARD_SC_I: case HID_KEYBOARD_SC_J: case HID_KEYBOARD_SC_K: case HID_KEYBOARD_SC_L: case HID_KEYBOARD_SC_M: case HID_KEYBOARD_SC_N: case HID_KEYBOARD_SC_O: case HID_KEYBOARD_SC_P: case HID_KEYBOARD_SC_Q: case HID_KEYBOARD_SC_R: case HID_KEYBOARD_SC_S: case HID_KEYBOARD_SC_T: case HID_KEYBOARD_SC_U: case HID_KEYBOARD_SC_V: case HID_KEYBOARD_SC_W: case HID_KEYBOARD_SC_X: case HID_KEYBOARD_SC_Y: case HID_KEYBOARD_SC_Z: case HID_KEYBOARD_SC_1_AND_EXCLAMATION: case HID_KEYBOARD_SC_2_AND_AT: case HID_KEYBOARD_SC_3_AND_HASHMARK: case HID_KEYBOARD_SC_4_AND_DOLLAR: case HID_KEYBOARD_SC_5_AND_PERCENTAGE: case HID_KEYBOARD_SC_6_AND_CARET: case HID_KEYBOARD_SC_7_AND_AMPERSAND: case HID_KEYBOARD_SC_8_AND_ASTERISK: case HID_KEYBOARD_SC_9_AND_OPENING_PARENTHESIS: case HID_KEYBOARD_SC_0_AND_CLOSING_PARENTHESIS: case HID_KEYBOARD_SC_ENTER: case HID_KEYBOARD_SC_ESCAPE: case HID_KEYBOARD_SC_BACKSPACE: case HID_KEYBOARD_SC_TAB: case HID_KEYBOARD_SC_SPACE: case HID_KEYBOARD_SC_MINUS_AND_UNDERSCORE: case HID_KEYBOARD_SC_EQUAL_AND_PLUS: case HID_KEYBOARD_SC_OPENING_BRACKET_AND_OPENING_BRACE: case HID_KEYBOARD_SC_CLOSING_BRACKET_AND_CLOSING_BRACE: case HID_KEYBOARD_SC_BACKSLASH_AND_PIPE: case HID_KEYBOARD_SC_NON_US_HASHMARK_AND_TILDE: case HID_KEYBOARD_SC_SEMICOLON_AND_COLON: case HID_KEYBOARD_SC_APOSTROPHE_AND_QUOTE: case HID_KEYBOARD_SC_GRAVE_ACCENT_AND_TILDE: case HID_KEYBOARD_SC_COMMA_AND_LESS_THAN_SIGN: case HID_KEYBOARD_SC_DOT_AND_GREATER_THAN_SIGN: case HID_KEYBOARD_SC_SLASH_AND_QUESTION_MARK: case HID_KEYBOARD_SC_CAPS_LOCK: case HID_KEYBOARD_SC_F1: case HID_KEYBOARD_SC_F2: case HID_KEYBOARD_SC_F3: case HID_KEYBOARD_SC_F4: case HID_KEYBOARD_SC_F5: case HID_KEYBOARD_SC_F6: case HID_KEYBOARD_SC_F7: case HID_KEYBOARD_SC_F8: case HID_KEYBOARD_SC_F9: case HID_KEYBOARD_SC_F10: case HID_KEYBOARD_SC_F11: case HID_KEYBOARD_SC_F12: case HID_KEYBOARD_SC_PRINT_SCREEN: case HID_KEYBOARD_SC_SCROLL_LOCK: case HID_KEYBOARD_SC_PAUSE: case HID_KEYBOARD_SC_INSERT: case HID_KEYBOARD_SC_HOME: case HID_KEYBOARD_SC_PAGE_UP: case HID_KEYBOARD_SC_DELETE: case HID_KEYBOARD_SC_END: case HID_KEYBOARD_SC_PAGE_DOWN: case HID_KEYBOARD_SC_RIGHT_ARROW: case HID_KEYBOARD_SC_LEFT_ARROW: case HID_KEYBOARD_SC_DOWN_ARROW: case HID_KEYBOARD_SC_UP_ARROW: case HID_KEYBOARD_SC_NUM_LOCK: case HID_KEYBOARD_SC_KEYPAD_SLASH: case HID_KEYBOARD_SC_KEYPAD_ASTERISK: case HID_KEYBOARD_SC_KEYPAD_MINUS: case HID_KEYBOARD_SC_KEYPAD_PLUS: case HID_KEYBOARD_SC_KEYPAD_ENTER: case HID_KEYBOARD_SC_KEYPAD_1_AND_END: case HID_KEYBOARD_SC_KEYPAD_2_AND_DOWN_ARROW: case HID_KEYBOARD_SC_KEYPAD_3_AND_PAGE_DOWN: case HID_KEYBOARD_SC_KEYPAD_4_AND_LEFT_ARROW: case HID_KEYBOARD_SC_KEYPAD_5: case HID_KEYBOARD_SC_KEYPAD_6_AND_RIGHT_ARROW: case HID_KEYBOARD_SC_KEYPAD_7_AND_HOME: case HID_KEYBOARD_SC_KEYPAD_8_AND_UP_ARROW: case HID_KEYBOARD_SC_KEYPAD_9_AND_PAGE_UP: case HID_KEYBOARD_SC_KEYPAD_0_AND_INSERT: case HID_KEYBOARD_SC_KEYPAD_DOT_AND_DELETE: case HID_KEYBOARD_SC_NON_US_BACKSLASH_AND_PIPE: case HID_KEYBOARD_SC_APPLICATION: case HID_KEYBOARD_SC_POWER: case HID_KEYBOARD_SC_KEYPAD_EQUAL_SIGN: case HID_KEYBOARD_SC_F13: case HID_KEYBOARD_SC_F14: case HID_KEYBOARD_SC_F15: case HID_KEYBOARD_SC_F16: case HID_KEYBOARD_SC_F17: case HID_KEYBOARD_SC_F18: case HID_KEYBOARD_SC_F19: case HID_KEYBOARD_SC_F20: case HID_KEYBOARD_SC_F21: case HID_KEYBOARD_SC_F22: case HID_KEYBOARD_SC_F23: case HID_KEYBOARD_SC_F24: #ifdef MACRO_RAM_SIZE if (g_recording_macro) record_stroke(code); #endif /* MACRO_RAM_SIZE */ alpha_down(code, action); break; case HID_KEYBOARD_SC_LOCKING_CAPS_LOCK: queue_autokeys(HID_KEYBOARD_SC_CAPS_LOCK, g_modifier_state); break; case HID_KEYBOARD_SC_LOCKING_NUM_LOCK: queue_autokeys(HID_KEYBOARD_SC_NUM_LOCK, g_modifier_state); break; case HID_KEYBOARD_SC_LOCKING_SCROLL_LOCK: queue_autokeys(HID_KEYBOARD_SC_SCROLL_LOCK, g_modifier_state); break; #ifdef MAX_NUMBER_OF_BACKLIGHTS case SCANCODE_BL_DIMMER: backlight_dimmer(); break; case SCANCODE_BL_MODE: backlight_mode(); break; case SCANCODE_BL_ENABLE: backlight_enable(); break; #else case SCANCODE_BL_DIMMER: led_dimmer(); break; #endif /* MAX_NUMBER_OF_BACKLIGHTS */ #ifdef MACRO_RAM_SIZE case SCANCODE_PASSWORD1: case SCANCODE_PASSWORD2: case SCANCODE_PASSWORD3: case SCANCODE_PASSWORD4: if (!g_recording_macro) start_password_record(code); break; #endif /* MACRO_RAM_SIZE */ case SCANCODE_KEYLOCK: g_keylock_flag ^= 1; break; case SCANCODE_WINLOCK: g_winlock_flag ^= 1; if (g_winlock_flag == 0) led_host_off(LED_WIN_LOCK); else led_host_on(LED_WIN_LOCK); break; case SCANCODE_ESCGRAVE: break; case SCANCODE_BOOT: g_reset_requested = RESET_TO_BOOT; break; case SCANCODE_CONFIG: if (g_console_state == CONSOLE_IDLE) g_console_state = CONSOLE_MENU_MAIN; break; case SCANCODE_MUTE: case SCANCODE_VOL_INC: case SCANCODE_VOL_DEC: case SCANCODE_BASS_BOOST: case SCANCODE_NEXT_TRACK: case SCANCODE_PREV_TRACK: case SCANCODE_STOP: case SCANCODE_PLAY_PAUSE: case SCANCODE_BACK: case SCANCODE_FORWARD: case SCANCODE_MEDIA: case SCANCODE_MAIL: case SCANCODE_CALC: case SCANCODE_MYCOMP: case SCANCODE_SEARCH: case SCANCODE_BROWSER: set_media(code); break; #ifdef ENABLE_MOUSE case SCANCODE_MOUSE1: case SCANCODE_MOUSE2: case SCANCODE_MOUSE3: case SCANCODE_MOUSE4: case SCANCODE_MOUSE5: set_mousebutton(code); break; case SCANCODE_MOUSEXR: g_mouse_req_X++; goto mousemove; case SCANCODE_MOUSEXL: g_mouse_req_X--; goto mousemove; case SCANCODE_MOUSEYU: g_mouse_req_Y--; goto mousemove; case SCANCODE_MOUSEYD: g_mouse_req_Y++; mousemove: if ((g_mouse_active == 0) || (g_mouse_multiply < g_double_tap_repeat)) g_mouse_multiply = g_double_tap_repeat; break; #endif /* ENABLE_MOUSE */ case SCANCODE_M1: case SCANCODE_M2: case SCANCODE_M3: case SCANCODE_M4: case SCANCODE_M5: case SCANCODE_M6: case SCANCODE_M7: case SCANCODE_M8: case SCANCODE_M9: case SCANCODE_M10: case SCANCODE_M11: case SCANCODE_M12: case SCANCODE_M13: case SCANCODE_M14: play_macro(code); break; #ifdef MACRO_RAM_SIZE case SCANCODE_MRAM_RECORD: toggle_macro_record(); break; case SCANCODE_MRAM_PLAY: if (!g_recording_macro) queue_ram_macro(g_ram_macro, g_ram_macro_length); break; #endif /* MACRO_RAM_SIZE */ case HID_KEYBOARD_SC_LEFT_CONTROL: case HID_KEYBOARD_SC_LEFT_SHIFT: case HID_KEYBOARD_SC_LEFT_ALT: case HID_KEYBOARD_SC_LEFT_GUI: case HID_KEYBOARD_SC_RIGHT_CONTROL: case HID_KEYBOARD_SC_RIGHT_SHIFT: case HID_KEYBOARD_SC_RIGHT_ALT: case HID_KEYBOARD_SC_RIGHT_GUI: mod_down(code, action); break; case SCANCODE_FN: case SCANCODE_FN2: case SCANCODE_FN3: case SCANCODE_FN4: case SCANCODE_FN5: case SCANCODE_FN6: case SCANCODE_FN7: case SCANCODE_FN8: case SCANCODE_FN9: fn_down(code, action); break; default: report_event(EVENT_CODE_KEYMAP_INVALID_CODE, code, MODE_UPDATE); break; } g_last_keypress = code; }