1*bbc09bf2SSimon Glass /* 2*bbc09bf2SSimon Glass * Copyright (c) 2013 Google, Inc 3*bbc09bf2SSimon Glass * 4*bbc09bf2SSimon Glass * SPDX-License-Identifier: GPL-2.0+ 5*bbc09bf2SSimon Glass */ 6*bbc09bf2SSimon Glass 7*bbc09bf2SSimon Glass #ifndef __SANDBOX_SDL_H 8*bbc09bf2SSimon Glass #define __SANDBOX_SDL_H 9*bbc09bf2SSimon Glass 10*bbc09bf2SSimon Glass #include <errno.h> 11*bbc09bf2SSimon Glass 12*bbc09bf2SSimon Glass #ifdef CONFIG_SANDBOX_SDL 13*bbc09bf2SSimon Glass 14*bbc09bf2SSimon Glass /** 15*bbc09bf2SSimon Glass * sandbox_sdl_init_display() - Set up SDL video ready for use 16*bbc09bf2SSimon Glass * 17*bbc09bf2SSimon Glass * @width: Window width in pixels 18*bbc09bf2SSimon Glass * @height Window height in pixels 19*bbc09bf2SSimon Glass * @log2_bpp: Log to base 2 of the number of bits per pixel. So a 32bpp 20*bbc09bf2SSimon Glass * display will pass 5, since 2*5 = 32 21*bbc09bf2SSimon Glass * @return 0 if OK, -ENODEV if no device, -EIO if SDL failed to initialize 22*bbc09bf2SSimon Glass * and -EPERM if the video failed to come up. 23*bbc09bf2SSimon Glass */ 24*bbc09bf2SSimon Glass int sandbox_sdl_init_display(int width, int height, int log2_bpp); 25*bbc09bf2SSimon Glass 26*bbc09bf2SSimon Glass /** 27*bbc09bf2SSimon Glass * sandbox_sdl_sync() - Sync current U-Boot LCD frame buffer to SDL 28*bbc09bf2SSimon Glass * 29*bbc09bf2SSimon Glass * This must be called periodically to update the screen for SDL so that the 30*bbc09bf2SSimon Glass * user can see it. 31*bbc09bf2SSimon Glass * 32*bbc09bf2SSimon Glass * @lcd_base: Base of frame buffer 33*bbc09bf2SSimon Glass * @return 0 if screen was updated, -ENODEV is there is no screen. 34*bbc09bf2SSimon Glass */ 35*bbc09bf2SSimon Glass int sandbox_sdl_sync(void *lcd_base); 36*bbc09bf2SSimon Glass 37*bbc09bf2SSimon Glass /** 38*bbc09bf2SSimon Glass * sandbox_sdl_scan_keys() - scan for pressed keys 39*bbc09bf2SSimon Glass * 40*bbc09bf2SSimon Glass * Works out which keys are pressed and returns a list 41*bbc09bf2SSimon Glass * 42*bbc09bf2SSimon Glass * @key: Array to receive keycodes 43*bbc09bf2SSimon Glass * @max_keys: Size of array 44*bbc09bf2SSimon Glass * @return number of keycodes found, 0 if none, -ENODEV if no keyboard 45*bbc09bf2SSimon Glass */ 46*bbc09bf2SSimon Glass int sandbox_sdl_scan_keys(int key[], int max_keys); 47*bbc09bf2SSimon Glass 48*bbc09bf2SSimon Glass /** 49*bbc09bf2SSimon Glass * sandbox_sdl_key_pressed() - check if a particular key is pressed 50*bbc09bf2SSimon Glass * 51*bbc09bf2SSimon Glass * @keycode: Keycode to check (KEY_... - see include/linux/input.h 52*bbc09bf2SSimon Glass * @return 0 if pressed, -ENOENT if not pressed. -ENODEV if keybord not 53*bbc09bf2SSimon Glass * available, 54*bbc09bf2SSimon Glass */ 55*bbc09bf2SSimon Glass int sandbox_sdl_key_pressed(int keycode); 56*bbc09bf2SSimon Glass 57*bbc09bf2SSimon Glass /** 58*bbc09bf2SSimon Glass * sandbox_sdl_sound_start() - start playing a sound 59*bbc09bf2SSimon Glass * 60*bbc09bf2SSimon Glass * @frequency: Frequency of sounds in Hertz 61*bbc09bf2SSimon Glass * @return 0 if OK, -ENODEV if no sound is available 62*bbc09bf2SSimon Glass */ 63*bbc09bf2SSimon Glass int sandbox_sdl_sound_start(uint frequency); 64*bbc09bf2SSimon Glass 65*bbc09bf2SSimon Glass /** 66*bbc09bf2SSimon Glass * sandbox_sdl_sound_stop() - stop playing a sound 67*bbc09bf2SSimon Glass * 68*bbc09bf2SSimon Glass * @return 0 if OK, -ENODEV if no sound is available 69*bbc09bf2SSimon Glass */ 70*bbc09bf2SSimon Glass int sandbox_sdl_sound_stop(void); 71*bbc09bf2SSimon Glass 72*bbc09bf2SSimon Glass /** 73*bbc09bf2SSimon Glass * sandbox_sdl_sound_init() - set up the sound system 74*bbc09bf2SSimon Glass * 75*bbc09bf2SSimon Glass * @return 0 if OK, -ENODEV if no sound is available 76*bbc09bf2SSimon Glass */ 77*bbc09bf2SSimon Glass int sandbox_sdl_sound_init(void); 78*bbc09bf2SSimon Glass 79*bbc09bf2SSimon Glass #else 80*bbc09bf2SSimon Glass static inline int sandbox_sdl_init_display(int width, int height, 81*bbc09bf2SSimon Glass int log2_bpp) 82*bbc09bf2SSimon Glass { 83*bbc09bf2SSimon Glass return -ENODEV; 84*bbc09bf2SSimon Glass } 85*bbc09bf2SSimon Glass 86*bbc09bf2SSimon Glass static inline int sandbox_sdl_sync(void *lcd_base) 87*bbc09bf2SSimon Glass { 88*bbc09bf2SSimon Glass return -ENODEV; 89*bbc09bf2SSimon Glass } 90*bbc09bf2SSimon Glass 91*bbc09bf2SSimon Glass static inline int sandbox_sdl_scan_keys(int key[], int max_keys) 92*bbc09bf2SSimon Glass { 93*bbc09bf2SSimon Glass return -ENODEV; 94*bbc09bf2SSimon Glass } 95*bbc09bf2SSimon Glass 96*bbc09bf2SSimon Glass static inline int sandbox_sdl_key_pressed(int keycode) 97*bbc09bf2SSimon Glass { 98*bbc09bf2SSimon Glass return -ENODEV; 99*bbc09bf2SSimon Glass } 100*bbc09bf2SSimon Glass 101*bbc09bf2SSimon Glass static inline int sandbox_sdl_sound_start(uint frequency) 102*bbc09bf2SSimon Glass { 103*bbc09bf2SSimon Glass return -ENODEV; 104*bbc09bf2SSimon Glass } 105*bbc09bf2SSimon Glass 106*bbc09bf2SSimon Glass static inline int sandbox_sdl_sound_stop(void) 107*bbc09bf2SSimon Glass { 108*bbc09bf2SSimon Glass return -ENODEV; 109*bbc09bf2SSimon Glass } 110*bbc09bf2SSimon Glass 111*bbc09bf2SSimon Glass static inline int sandbox_sdl_sound_init(void) 112*bbc09bf2SSimon Glass { 113*bbc09bf2SSimon Glass return -ENODEV; 114*bbc09bf2SSimon Glass } 115*bbc09bf2SSimon Glass 116*bbc09bf2SSimon Glass #endif 117*bbc09bf2SSimon Glass 118*bbc09bf2SSimon Glass #endif 119