mirror of
https://git.planet-casio.com/Lephenixnoir/gint.git
synced 2025-07-04 03:26:37 +02:00
r61523: add r61523 backlight and display timing settings
This commit is contained in:
parent
bc5dd82441
commit
0d7ecbd8e2
2 changed files with 90 additions and 0 deletions
|
@ -13,6 +13,20 @@ extern "C" {
|
||||||
|
|
||||||
#include <gint/defs/types.h>
|
#include <gint/defs/types.h>
|
||||||
|
|
||||||
|
enum {
|
||||||
|
/* Normal/Partial mode (2^16 color) */
|
||||||
|
R61523_NORMAL,
|
||||||
|
/* Idle mode (2^3 color) */
|
||||||
|
R61523_IDLE
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
/* Frame inversion waveform (battery saver) */
|
||||||
|
R61523_FRAME,
|
||||||
|
/* Line inversion waveform (better display quality) */
|
||||||
|
R61523_LINE
|
||||||
|
};
|
||||||
|
|
||||||
/* r61523_display(): Update the entire display (320x528) */
|
/* r61523_display(): Update the entire display (320x528) */
|
||||||
void r61523_display(uint16_t *vram);
|
void r61523_display(uint16_t *vram);
|
||||||
|
|
||||||
|
@ -20,6 +34,23 @@ void r61523_display(uint16_t *vram);
|
||||||
void r61523_display_rect(
|
void r61523_display_rect(
|
||||||
uint16_t *vram, int xmin, int xmax, int ymin, int ymax);
|
uint16_t *vram, int xmin, int xmax, int ymin, int ymax);
|
||||||
|
|
||||||
|
/* r61523_get_backlight() and r61523_set_backlight(): Backlight settings
|
||||||
|
|
||||||
|
@level Brightness level (0-255)
|
||||||
|
@PWM_div PWM frequency division
|
||||||
|
@dimming Toggle dimming function */
|
||||||
|
void r61523_get_backlight(int *level, int *PWM_div, bool *dimming);
|
||||||
|
void r61523_set_backlight(int level, int PWM_div, bool dimming);
|
||||||
|
|
||||||
|
/* r61523_get_display_timing() and r61523_set_display_timing(): Display timing settings
|
||||||
|
|
||||||
|
@mode Normal/Partial or Idle mode
|
||||||
|
@waveform Frame or Line waveform inversion
|
||||||
|
@CPL Clocks per line (18-63)
|
||||||
|
@BP @FP Number of back/front porch lines (4-128) */
|
||||||
|
void r61523_get_display_timing(bool mode, bool *waveform, int *CPL, int *BP, int *FP);
|
||||||
|
void r61523_set_display_timing(bool mode, bool waveform, int CPL, int BP, int FP);
|
||||||
|
|
||||||
/* r61523_win_set(): Set the display window */
|
/* r61523_win_set(): Set the display window */
|
||||||
void r61523_win_set(int x1, int x2, int y1, int y2);
|
void r61523_win_set(int x1, int x2, int y1, int y2);
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#define REG_HRANGE 0x2a
|
#define REG_HRANGE 0x2a
|
||||||
#define REG_VRANGE 0x2b
|
#define REG_VRANGE 0x2b
|
||||||
#define REG_DATA 0x2c
|
#define REG_DATA 0x2c
|
||||||
|
#define REG_BACKLIGHT_CONTROL 0xb9
|
||||||
#define REG_DEVICE_CODE_READ 0xbf
|
#define REG_DEVICE_CODE_READ 0xbf
|
||||||
#define REG_DEVICE_CODE_VARIANT 0xda
|
#define REG_DEVICE_CODE_VARIANT 0xda
|
||||||
|
|
||||||
|
@ -96,6 +97,64 @@ void r61523_identify(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---
|
||||||
|
// Display control
|
||||||
|
//---
|
||||||
|
|
||||||
|
void r61523_get_backlight(int *level, int *PWM_div, bool *dimming)
|
||||||
|
{
|
||||||
|
uint16_t packets[5];
|
||||||
|
select(REG_BACKLIGHT_CONTROL);
|
||||||
|
read_Nu16(packets, 5);
|
||||||
|
|
||||||
|
*level = packets[2];
|
||||||
|
*PWM_div = packets[3];
|
||||||
|
*dimming = packets[4] & 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void r61523_set_backlight(int level, int PWM_div, bool dimming)
|
||||||
|
{
|
||||||
|
select(REG_BACKLIGHT_CONTROL);
|
||||||
|
|
||||||
|
/* Default value of PWMON */
|
||||||
|
write(0);
|
||||||
|
synco();
|
||||||
|
|
||||||
|
write(level);
|
||||||
|
synco();
|
||||||
|
write(PWM_div);
|
||||||
|
synco();
|
||||||
|
write(0b1000 | dimming);
|
||||||
|
synco();
|
||||||
|
}
|
||||||
|
|
||||||
|
void r61523_get_display_timing(bool mode, bool *waveform, int *CPL, int *BP, int *FP)
|
||||||
|
{
|
||||||
|
uint16_t packets[6];
|
||||||
|
select(mode ? 195 : 193);
|
||||||
|
read_Nu16(packets, 6);
|
||||||
|
|
||||||
|
*waveform = packets[1];
|
||||||
|
*CPL = packets[3];
|
||||||
|
*BP = packets[4];
|
||||||
|
*FP = packets[5];
|
||||||
|
}
|
||||||
|
|
||||||
|
void r61523_set_display_timing(bool mode, bool waveform, int CPL, int BP, int FP)
|
||||||
|
{
|
||||||
|
select(mode ? 195 : 193);
|
||||||
|
|
||||||
|
write(waveform);
|
||||||
|
synco();
|
||||||
|
read();
|
||||||
|
write(CPL);
|
||||||
|
synco();
|
||||||
|
write(BP);
|
||||||
|
synco();
|
||||||
|
write(FP);
|
||||||
|
synco();
|
||||||
|
}
|
||||||
|
|
||||||
//---
|
//---
|
||||||
// Window management
|
// Window management
|
||||||
//---
|
//---
|
||||||
|
|
Loading…
Add table
Reference in a new issue