X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=plat.h;h=54436cd671acf2605aa158ed70948afdfa3a44ca;hb=ebf0e111a84cbd73511cc2b935c7bd688638cf5e;hp=f502a402379aa2d1d50800019c2fad3ec6e78a52;hpb=2d3fa8770e527558e3532e8cdf07db11102fa712;p=libpicofe.git diff --git a/plat.h b/plat.h index f502a40..54436cd 100644 --- a/plat.h +++ b/plat.h @@ -1,6 +1,8 @@ #ifndef LIBPICOFE_PLAT_H #define LIBPICOFE_PLAT_H +#include + #ifdef __cplusplus extern "C" { #endif @@ -9,11 +11,16 @@ extern "C" { struct plat_target { int (*cpu_clock_get)(void); int (*cpu_clock_set)(int clock); - int (*get_bat_capacity)(void); - void (*set_filter)(int which); - char **filters; - void (*set_lcdrate)(int is_pal); - void (*step_volume)(int is_up); + int (*bat_capacity_get)(void); + int (*hwfilter_set)(int which); + int (*lcdrate_set)(int is_pal); + int (*gamma_set)(int val, int black_level); + int (*step_volume)(int is_up); + const char **vout_methods; + int vout_method; + int vout_fullscreen; + const char **hwfilters; + int hwfilter; }; extern struct plat_target plat_target; @@ -21,16 +28,59 @@ int plat_target_init(void); void plat_target_finish(void); void plat_target_setup_input(void); -static __inline void plat_target_set_filter(int which) +/* CPU clock in MHz */ +static __inline int plat_target_cpu_clock_get(void) +{ + if (plat_target.cpu_clock_get) + return plat_target.cpu_clock_get(); + return -1; +} + +static __inline int plat_target_cpu_clock_set(int mhz) +{ + if (plat_target.cpu_clock_set) + return plat_target.cpu_clock_set(mhz); + return -1; +} + +/* battery capacity (0-100) */ +static __inline int plat_target_bat_capacity_get(void) +{ + if (plat_target.bat_capacity_get) + return plat_target.bat_capacity_get(); + return -1; +} + +/* set some hardware-specific video filter, 0 for none */ +static __inline int plat_target_hwfilter_set(int which) +{ + if (plat_target.hwfilter_set) + return plat_target.hwfilter_set(which); + return -1; +} + +/* set device LCD rate, is_pal 0 for NTSC, 1 for PAL compatible */ +static __inline int plat_target_lcdrate_set(int is_pal) +{ + if (plat_target.lcdrate_set) + return plat_target.lcdrate_set(is_pal); + return -1; +} + +/* set device LCD rate, is_pal 0 for NTSC, 1 for PAL compatible */ +static __inline int plat_target_gamma_set(int val, int black_level) { - if (plat_target.set_filter) - plat_target.set_filter(which); + if (plat_target.gamma_set) + return plat_target.gamma_set(val, black_level); + return -1; } -static __inline void plat_target_set_lcdrate(int is_pal) +/* step sound volume up or down */ +static __inline int plat_target_step_volume(int is_up) { - if (plat_target.set_lcdrate) - plat_target.set_lcdrate(is_pal); + if (plat_target.step_volume) + return plat_target.step_volume(is_up); + return -1; } /* menu: enter (switch bpp, etc), begin/end drawing */ @@ -52,6 +102,7 @@ void plat_sleep_ms(int ms); void *plat_mmap(unsigned long addr, size_t size, int need_exec, int is_fixed); void *plat_mremap(void *ptr, size_t oldsize, size_t newsize); void plat_munmap(void *ptr, size_t size); +int plat_mem_set_exec(void *ptr, size_t size); /* timers, to be used for time diff and must refer to the same clock */ unsigned int plat_get_ticks_ms(void);