Change to gdisp low level driver API. Display number is now in the GDriver structure (It was required for a Nokia driver).
This commit is contained in:
parent
443d14c21f
commit
87a6af81f4
24 changed files with 84 additions and 106 deletions
|
@ -64,17 +64,13 @@ static const SPIConfig spi1cfg_16bit = {
|
|||
SPI_CR1_DFF //SPI_CR1_BR_0
|
||||
};
|
||||
|
||||
static inline void init_board(GDisplay *g, unsigned display) {
|
||||
static inline void init_board(GDisplay *g) {
|
||||
|
||||
// As we are not using multiple displays we set g->priv to NULL as we don't use it.
|
||||
g->priv = 0;
|
||||
|
||||
if (display == 0) {
|
||||
|
||||
/**
|
||||
* Set up for Display 0
|
||||
*/
|
||||
|
||||
switch(g->controllerdisplay) {
|
||||
case 0: // Set up for Display 0
|
||||
/* Display backlight control */
|
||||
/* TIM4 is an alternate function 2 (AF2) */
|
||||
pwmStart(&PWMD4, &pwmcfg);
|
||||
|
@ -96,6 +92,7 @@ static inline void init_board(GDisplay *g, unsigned display) {
|
|||
palSetPadMode(GPIOA, 5, PAL_MODE_ALTERNATE(5)|PAL_STM32_OSPEED_HIGHEST); /* SCK. */
|
||||
palSetPadMode(GPIOA, 6, PAL_MODE_ALTERNATE(5)); /* MISO. */
|
||||
palSetPadMode(GPIOA, 7, PAL_MODE_ALTERNATE(5)|PAL_STM32_OSPEED_HIGHEST); /* MOSI. */
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -20,16 +20,14 @@
|
|||
* @brief Initialise the board for the display.
|
||||
*
|
||||
* @param[in] g The GDisplay structure
|
||||
* @param[in] display The display number on this controller (0..n)
|
||||
*
|
||||
* @note Set the g->priv member to whatever is appropriate. For multiple
|
||||
* displays this might be a pointer to the appropriate register set.
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static inline void init_board(GDisplay *g, unsigned display) {
|
||||
static inline void init_board(GDisplay *g) {
|
||||
(void) g;
|
||||
(void) display;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -61,9 +61,9 @@ static inline void set_viewport(GDisplay* g) {
|
|||
/* Driver exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
LLDSPEC bool_t gdisp_lld_init(GDisplay *g, unsigned display) {
|
||||
LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
|
||||
/* Initialise your display */
|
||||
init_board(g, display);
|
||||
init_board(g);
|
||||
|
||||
// Hardware reset
|
||||
setpin_reset(g, TRUE);
|
||||
|
|
|
@ -17,17 +17,13 @@
|
|||
#define noinline __attribute__((noinline))
|
||||
#endif
|
||||
|
||||
static void init_board(GDisplay *g, unsigned display) {
|
||||
static void init_board(GDisplay *g) {
|
||||
|
||||
// As we are not using multiple displays we set g->priv to NULL as we don't use it.
|
||||
g->priv = 0;
|
||||
|
||||
if (display == 0) {
|
||||
|
||||
/**
|
||||
* Set up for Display 0
|
||||
*/
|
||||
|
||||
switch(g->controllerdisplay) {
|
||||
case 0: // Set up for Display 0
|
||||
// RST
|
||||
palSetPadMode(IOPORTA, 7, PAL_MODE_OUTPUT);
|
||||
palClearPad(IOPORTA, 7);
|
||||
|
@ -59,6 +55,7 @@ static void init_board(GDisplay *g, unsigned display) {
|
|||
PMCONbits.PMPEN = 1;
|
||||
|
||||
palClearPad(IOPORTA, 9);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -18,17 +18,13 @@
|
|||
#define GDISP_REG (*((volatile uint16_t *) 0x60000000)) /* RS = 0 */
|
||||
#define GDISP_RAM (*((volatile uint16_t *) 0x60100000)) /* RS = 1 */
|
||||
|
||||
static inline void init_board(GDisplay *g, unsigned display) {
|
||||
static inline void init_board(GDisplay *g) {
|
||||
|
||||
// As we are not using multiple displays we set g->priv to NULL as we don't use it.
|
||||
g->priv = 0;
|
||||
|
||||
if (display == 0) {
|
||||
|
||||
/**
|
||||
* Set up for Display 0
|
||||
*/
|
||||
|
||||
switch(g->controllerdisplay) {
|
||||
case 0: // Set up for Display 0
|
||||
/* FSMC setup for F1 */
|
||||
rccEnableAHB(RCC_AHBENR_FSMCEN, 0);
|
||||
|
||||
|
@ -46,6 +42,7 @@ static inline void init_board(GDisplay *g, unsigned display) {
|
|||
/* Bank1 NOR/SRAM control register configuration
|
||||
* This is actually not needed as already set by default after reset */
|
||||
FSMC_Bank1->BTCR[0] = FSMC_BCR1_MWID_0 | FSMC_BCR1_WREN | FSMC_BCR1_MBKEN;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -20,16 +20,14 @@
|
|||
* @brief Initialise the board for the display.
|
||||
*
|
||||
* @param[in] g The GDisplay structure
|
||||
* @param[in] display The display number on this controller (0..n)
|
||||
*
|
||||
* @note Set the g->priv member to whatever is appropriate. For multiple
|
||||
* displays this might be a pointer to the appropriate register set.
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static inline void init_board(GDisplay *g, unsigned display) {
|
||||
static inline void init_board(GDisplay *g) {
|
||||
(void) g;
|
||||
(void) display;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -95,11 +95,11 @@ static void set_viewport(GDisplay *g) {
|
|||
}
|
||||
}
|
||||
|
||||
LLDSPEC bool_t gdisp_lld_init(GDisplay *g, unsigned display) {
|
||||
LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
|
||||
uint16_t cver;
|
||||
|
||||
/* Initialise your display */
|
||||
init_board(g, display);
|
||||
init_board(g);
|
||||
|
||||
/* Hardware reset */
|
||||
setpin_reset(g, TRUE);
|
||||
|
|
|
@ -31,17 +31,13 @@
|
|||
#define GDISP_REG (*((volatile uint16_t *) 0x60000000)) /* RS = 0 */
|
||||
#define GDISP_RAM (*((volatile uint16_t *) 0x60020000)) /* RS = 1 */
|
||||
|
||||
static inline void init_board(GDisplay *g, unsigned display) {
|
||||
static inline void init_board(GDisplay *g) {
|
||||
|
||||
// As we are not using multiple displays we set g->priv to NULL as we don't use it.
|
||||
g->priv = 0;
|
||||
|
||||
if (display == 0) {
|
||||
|
||||
/**
|
||||
* Set up for Display 0
|
||||
*/
|
||||
|
||||
switch(g->controllerdisplay) {
|
||||
case 0: // Set up for Display 0
|
||||
/* FSMC setup for F1 */
|
||||
rccEnableAHB(RCC_AHBENR_FSMCEN, 0);
|
||||
|
||||
|
@ -61,6 +57,7 @@ static inline void init_board(GDisplay *g, unsigned display) {
|
|||
/* Bank1 NOR/SRAM control register configuration
|
||||
* This is actually not needed as already set by default after reset */
|
||||
FSMC_Bank1->BTCR[FSMC_Bank] = FSMC_BCR1_MWID_0 | FSMC_BCR1_WREN | FSMC_BCR1_MBKEN;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -20,16 +20,14 @@
|
|||
* @brief Initialise the board for the display.
|
||||
*
|
||||
* @param[in] g The GDisplay structure
|
||||
* @param[in] display The display number on this controller (0..n)
|
||||
*
|
||||
* @note Set the g->priv member to whatever is appropriate. For multiple
|
||||
* displays this might be a pointer to the appropriate register set.
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static inline void init_board(GDisplay *g, unsigned display) {
|
||||
static inline void init_board(GDisplay *g) {
|
||||
(void) g;
|
||||
(void) display;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -96,11 +96,11 @@ static void set_viewport(GDisplay* g) {
|
|||
}
|
||||
}
|
||||
|
||||
LLDSPEC bool_t gdisp_lld_init(GDisplay *g, unsigned display) {
|
||||
LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
|
||||
uint16_t cver;
|
||||
|
||||
/* Initialise your display */
|
||||
init_board(g, display);
|
||||
init_board(g);
|
||||
|
||||
/* Hardware reset */
|
||||
setpin_reset(g, TRUE);
|
||||
|
|
|
@ -25,16 +25,13 @@
|
|||
#define SET_RD palSetPad(GPIOD, 15);
|
||||
#define CLR_RD palClearPad(GPIOD, 15);
|
||||
|
||||
static inline void init_board(GDisplay *g, unsigned display) {
|
||||
static inline void init_board(GDisplay *g) {
|
||||
|
||||
// As we are not using multiple displays we set g->priv to NULL as we don't use it.
|
||||
g->priv = 0;
|
||||
|
||||
if (display == 0) {
|
||||
|
||||
/**
|
||||
* Set up for Display 0
|
||||
*/
|
||||
switch(g->controllerdisplay) {
|
||||
case 0: // Set up for Display 0
|
||||
palSetGroupMode(GPIOE, PAL_WHOLE_PORT, 0, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
palSetPadMode(GPIOD, 12, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
palSetPadMode(GPIOD, 13, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
|
@ -46,6 +43,7 @@ static inline void init_board(GDisplay *g, unsigned display) {
|
|||
SET_RD;
|
||||
SET_WR;
|
||||
CLR_CS;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -21,16 +21,14 @@
|
|||
* @brief Initialise the board for the display.
|
||||
*
|
||||
* @param[in] g The GDisplay structure
|
||||
* @param[in] display The display number on this controller (0..n)
|
||||
*
|
||||
* @note Set the g->priv member to whatever is appropriate. For multiple
|
||||
* displays this might be a pointer to the appropriate register set.
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static inline void init_board(GDisplay *g, unsigned display) {
|
||||
static inline void init_board(GDisplay *g) {
|
||||
(void) g;
|
||||
(void) display;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -70,9 +70,9 @@ static void set_viewport(GDisplay* g) {
|
|||
/* Driver exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
LLDSPEC bool_t gdisp_lld_init(GDisplay *g, unsigned display) {
|
||||
LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
|
||||
/* Initialise your display */
|
||||
init_board(g, display);
|
||||
init_board(g);
|
||||
|
||||
/* Hardware reset */
|
||||
setpin_reset(g, TRUE);
|
||||
|
|
|
@ -20,17 +20,13 @@
|
|||
#define FSMC_BANK 4
|
||||
|
||||
|
||||
static inline void init_board(GDisplay *g, unsigned display) {
|
||||
static inline void init_board(GDisplay *g) {
|
||||
|
||||
// As we are not using multiple displays we set g->priv to NULL as we don't use it.
|
||||
g->priv = 0;
|
||||
|
||||
if (display == 0) {
|
||||
|
||||
/**
|
||||
* Set up for Display 0
|
||||
*/
|
||||
|
||||
switch(g->controllerdisplay) {
|
||||
case 0: // Set up for Display 0
|
||||
/* set pins to FSMC mode */
|
||||
IOBus busD = {GPIOD, (1 << 0) | (1 << 1) | (1 << 4) | (1 << 5) | (1 << 8) |
|
||||
(1 << 9) | (1 << 10) | (1 << 11) | (1 << 14) | (1 << 15), 0};
|
||||
|
@ -52,6 +48,7 @@ static inline void init_board(GDisplay *g, unsigned display) {
|
|||
/* Bank1 NOR/SRAM control register configuration
|
||||
* This is actually not needed as already set by default after reset */
|
||||
FSMC_Bank1->BTCR[FSMC_BANK] = FSMC_BCR1_MWID_0 | FSMC_BCR1_WREN | FSMC_BCR1_MBKEN;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -20,14 +20,14 @@
|
|||
* @brief Initialise the board for the display.
|
||||
*
|
||||
* @param[in] g The GDisplay structure
|
||||
* @param[in] display The display number on this controller (0..n)
|
||||
*
|
||||
* @note Set the g->priv member to whatever is appropriate. For multiple
|
||||
* displays this might be a pointer to the appropriate register set.
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static inline void init_board(GDisplay *g, unsigned display) {
|
||||
static inline void init_board(GDisplay *g) {
|
||||
(void) g;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -38,6 +38,7 @@ static inline void init_board(GDisplay *g, unsigned display) {
|
|||
* @notapi
|
||||
*/
|
||||
static inline void post_init_board(GDisplay *g) {
|
||||
(void) g;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -49,7 +50,8 @@ static inline void post_init_board(GDisplay *g) {
|
|||
* @notapi
|
||||
*/
|
||||
static inline void setpin_reset(GDisplay *g, bool_t state) {
|
||||
|
||||
(void) g;
|
||||
(void) state;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -60,7 +62,7 @@ static inline void setpin_reset(GDisplay *g, bool_t state) {
|
|||
* @notapi
|
||||
*/
|
||||
static inline void acquire_bus(GDisplay *g) {
|
||||
|
||||
(void) g;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -71,7 +73,7 @@ static inline void acquire_bus(GDisplay *g) {
|
|||
* @notapi
|
||||
*/
|
||||
static inline void release_bus(GDisplay *g) {
|
||||
|
||||
(void) g;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -83,7 +85,8 @@ static inline void release_bus(GDisplay *g) {
|
|||
* @notapi
|
||||
*/
|
||||
static inline void write_index(GDisplay *g, uint16_t index) {
|
||||
|
||||
(void) g;
|
||||
(void) index;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -95,7 +98,8 @@ static inline void write_index(GDisplay *g, uint16_t index) {
|
|||
* @notapi
|
||||
*/
|
||||
static inline void write_data(GDisplay *g, uint16_t data) {
|
||||
|
||||
(void) g;
|
||||
(void) data;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -106,7 +110,7 @@ static inline void write_data(GDisplay *g, uint16_t data) {
|
|||
* @notapi
|
||||
*/
|
||||
static inline void setreadmode(GDisplay *g) {
|
||||
|
||||
(void) g;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -117,7 +121,7 @@ static inline void setreadmode(GDisplay *g) {
|
|||
* @notapi
|
||||
*/
|
||||
static inline void setwritemode(GDisplay *g) {
|
||||
|
||||
(void) g;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -132,9 +136,8 @@ static inline void setwritemode(GDisplay *g) {
|
|||
* @notapi
|
||||
*/
|
||||
static inline uint16_t read_data(GDisplay *g) {
|
||||
|
||||
(void) g;
|
||||
}
|
||||
|
||||
#endif /* _GDISP_LLD_BOARD_H */
|
||||
/** @} */
|
||||
|
||||
|
|
|
@ -106,9 +106,9 @@ static inline void set_backlight(GDisplay* g, uint8_t percent) {
|
|||
/* Driver exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
LLDSPEC bool_t gdisp_lld_init(GDisplay *g, unsigned display) {
|
||||
LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
|
||||
/* Initialise your display */
|
||||
init_board(g, display);
|
||||
init_board(g);
|
||||
|
||||
// Hardware reset
|
||||
setpin_reset(g, TRUE);
|
||||
|
|
|
@ -24,16 +24,13 @@
|
|||
#define SET_RD palSetPad(GPIOD, 15);
|
||||
#define CLR_RD palClearPad(GPIOD, 15);
|
||||
|
||||
static inline void init_board(GDisplay *g, unsigned display) {
|
||||
static inline void init_board(GDisplay *g) {
|
||||
|
||||
// As we are not using multiple displays we set g->priv to NULL as we don't use it.
|
||||
g->priv = 0;
|
||||
|
||||
if (display == 0) {
|
||||
|
||||
/**
|
||||
* Set up for Display 0
|
||||
*/
|
||||
switch(g->controllerdisplay) {
|
||||
case 0: // Set up for Display 0
|
||||
palSetGroupMode(GPIOE, PAL_WHOLE_PORT, 0, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
palSetPadMode(GPIOD, 12, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
palSetPadMode(GPIOD, 13, PAL_MODE_OUTPUT_PUSHPULL);
|
||||
|
@ -45,6 +42,7 @@ static inline void init_board(GDisplay *g, unsigned display) {
|
|||
SET_RD;
|
||||
SET_WR;
|
||||
CLR_CS;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -34,16 +34,14 @@ static const PWMConfig pwmcfg = {
|
|||
0
|
||||
};
|
||||
|
||||
static inline void init_board(GDisplay *g, unsigned display) {
|
||||
static inline void init_board(GDisplay *g) {
|
||||
|
||||
// As we are not using multiple displays we set g->priv to NULL as we don't use it.
|
||||
g->priv = 0;
|
||||
|
||||
if (display == 0) {
|
||||
|
||||
switch(g->controllerdisplay) {
|
||||
case 0: // Set up for Display 0
|
||||
/**
|
||||
* Set up for Display 0
|
||||
*
|
||||
* Performs the following functions:
|
||||
* 1. initialise the io port used by the display
|
||||
* 2. initialise the reset pin (initial state not-in-reset)
|
||||
|
@ -95,6 +93,7 @@ static inline void init_board(GDisplay *g, unsigned display) {
|
|||
pwmStart(&PWMD3, &pwmcfg);
|
||||
palSetPadMode(GPIOB, 0, PAL_MODE_ALTERNATE(2));
|
||||
pwmEnableChannel(&PWMD3, 2, 100);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -20,16 +20,14 @@
|
|||
* @brief Initialise the board for the display.
|
||||
*
|
||||
* @param[in] g The GDisplay structure
|
||||
* @param[in] display The display number on this controller (0..n)
|
||||
*
|
||||
* @note Set the g->priv member to whatever is appropriate. For multiple
|
||||
* displays this might be a pointer to the appropriate register set.
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
static inline void init_board(GDisplay *g, unsigned display) {
|
||||
static inline void init_board(GDisplay *g) {
|
||||
(void) g;
|
||||
(void) display;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -114,9 +114,9 @@ static void set_viewport(GDisplay* g) {
|
|||
/* Driver exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
LLDSPEC bool_t gdisp_lld_init(GDisplay *g, unsigned display) {
|
||||
LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
|
||||
/* Initialise your display */
|
||||
init_board(g, display);
|
||||
init_board(g);
|
||||
|
||||
// Hardware reset
|
||||
setpin_reset(g, TRUE);
|
||||
|
|
|
@ -381,7 +381,7 @@ static DECLARE_THREAD_FUNCTION(WindowThread, param) {
|
|||
/* Driver exported functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
LLDSPEC bool_t gdisp_lld_init(GDisplay *g, unsigned display) {
|
||||
LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
|
||||
winPriv * priv;
|
||||
char buf[132];
|
||||
|
||||
|
@ -426,13 +426,13 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g, unsigned display) {
|
|||
|
||||
// Turn on toggles for the first GINPUT_TOGGLE_CONFIG_ENTRIES windows
|
||||
#if GINPUT_NEED_TOGGLE
|
||||
if (display < GINPUT_TOGGLE_CONFIG_ENTRIES)
|
||||
if (g->controllerdisplay < GINPUT_TOGGLE_CONFIG_ENTRIES)
|
||||
g->flags |= GDISP_FLG_HASTOGGLE;
|
||||
#endif
|
||||
|
||||
// Only turn on mouse on the first window for now
|
||||
#if GINPUT_NEED_MOUSE
|
||||
if (!display)
|
||||
if (!g->controllerdisplay)
|
||||
g->flags |= GDISP_FLG_HASMOUSE;
|
||||
#endif
|
||||
|
||||
|
@ -443,13 +443,13 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g, unsigned display) {
|
|||
g->priv = priv;
|
||||
|
||||
// Create the window in the message thread
|
||||
PostThreadMessage(winThreadId, WM_USER, (WPARAM)display, (LPARAM)g);
|
||||
PostThreadMessage(winThreadId, WM_USER, (WPARAM)g->controllerdisplay, (LPARAM)g);
|
||||
|
||||
// Wait for the window creation to complete (for safety)
|
||||
while(!(((volatile GDisplay *)g)->flags & GDISP_FLG_READY))
|
||||
Sleep(1);
|
||||
|
||||
sprintf(buf, APP_NAME " - %u", display+1);
|
||||
sprintf(buf, APP_NAME " - %u", g->systemdisplay+1);
|
||||
SetWindowText(priv->hwnd, buf);
|
||||
ShowWindow(priv->hwnd, SW_SHOW);
|
||||
UpdateWindow(priv->hwnd);
|
||||
|
|
|
@ -145,7 +145,7 @@ static int FatalXIOError(Display *d) {
|
|||
exit(0);
|
||||
}
|
||||
|
||||
LLDSPEC bool_t gdisp_lld_init(GDisplay *g, unsigned display) {
|
||||
LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
|
||||
XSizeHints *pSH;
|
||||
XSetWindowAttributes xa;
|
||||
XTextProperty WindowTitle;
|
||||
|
@ -208,7 +208,7 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g, unsigned display) {
|
|||
|
||||
{
|
||||
char buf[132];
|
||||
sprintf(buf, "uGFX - %u", display+1);
|
||||
sprintf(buf, "uGFX - %u", g->systemdisplay+1);
|
||||
WindowTitleText = buf;
|
||||
XStringListToTextProperty(&WindowTitleText, 1, &WindowTitle);
|
||||
XSetWMName(dis, priv->win, &WindowTitle);
|
||||
|
|
|
@ -172,7 +172,8 @@
|
|||
/*===========================================================================*/
|
||||
|
||||
struct GDisplay {
|
||||
GDISPControl g; // The public GDISP stuff - must be the first element
|
||||
// The public GDISP stuff - must be the first element
|
||||
GDISPControl g;
|
||||
|
||||
#if GDISP_TOTAL_CONTROLLERS > 1
|
||||
const struct GDISPVMT const * vmt; // The Virtual Method Table
|
||||
|
@ -180,7 +181,8 @@ struct GDisplay {
|
|||
|
||||
void * priv; // A private area just for the drivers use.
|
||||
|
||||
|
||||
uint8_t systemdisplay;
|
||||
uint8_t controllerdisplay;
|
||||
uint16_t flags;
|
||||
#define GDISP_FLG_INSTREAM 0x0001 // We are in a user based stream operation
|
||||
#define GDISP_FLG_SCRSTREAM 0x0002 // The stream area currently covers the whole screen
|
||||
|
@ -241,10 +243,9 @@ struct GDisplay {
|
|||
* @brief Initialize the driver.
|
||||
* @return TRUE if successful.
|
||||
* @param[in] g The driver structure
|
||||
* @param[in] display The display number for this controller 0..n
|
||||
* @param[out] g->g The driver must fill in the GDISPControl structure
|
||||
*/
|
||||
LLDSPEC bool_t gdisp_lld_init(GDisplay *g, unsigned display);
|
||||
LLDSPEC bool_t gdisp_lld_init(GDisplay *g);
|
||||
|
||||
#if GDISP_HARDWARE_STREAM_WRITE || defined(__DOXYGEN__)
|
||||
/**
|
||||
|
@ -477,7 +478,7 @@ struct GDisplay {
|
|||
#if GDISP_TOTAL_CONTROLLERS > 1
|
||||
|
||||
typedef struct GDISPVMT {
|
||||
bool_t (*init)(GDisplay *g, unsigned display);
|
||||
bool_t (*init)(GDisplay *g);
|
||||
void (*writestart)(GDisplay *g); // Uses p.x,p.y p.cx,p.cy
|
||||
void (*writepos)(GDisplay *g); // Uses p.x,p.y
|
||||
void (*writecolor)(GDisplay *g); // Uses p.color
|
||||
|
@ -569,7 +570,7 @@ struct GDisplay {
|
|||
}};
|
||||
|
||||
#else
|
||||
#define gdisp_lld_init(g, display) g->vmt->init(g, display)
|
||||
#define gdisp_lld_init(g) g->vmt->init(g)
|
||||
#define gdisp_lld_write_start(g) g->vmt->writestart(g)
|
||||
#define gdisp_lld_write_pos(g) g->vmt->writepos(g)
|
||||
#define gdisp_lld_write_color(g) g->vmt->writecolor(g)
|
||||
|
|
|
@ -493,9 +493,9 @@ static void line_clip(GDisplay *g) {
|
|||
/* Our module initialiser */
|
||||
void _gdispInit(void) {
|
||||
GDisplay *g;
|
||||
unsigned i;
|
||||
uint16_t i;
|
||||
#if GDISP_TOTAL_CONTROLLERS > 1
|
||||
unsigned j;
|
||||
uint16_t j;
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -504,13 +504,17 @@ void _gdispInit(void) {
|
|||
for(g = GDisplayArray, j=0; j < GDISP_TOTAL_CONTROLLERS; j++)
|
||||
for(i = 0; i < DisplayCountList[j]; g++, i++) {
|
||||
g->vmt = ControllerList[j];
|
||||
g->systemdisplay = j*GDISP_TOTAL_CONTROLLERS+i;
|
||||
g->controllerdisplay = i;
|
||||
#else
|
||||
for(g = GDisplayArray, i = 0; i < GDISP_TOTAL_DISPLAYS; g++, i++) {
|
||||
g->systemdisplay = i;
|
||||
g->controllerdisplay = i;
|
||||
#endif
|
||||
MUTEX_INIT(g);
|
||||
MUTEX_ENTER(g);
|
||||
g->flags = 0;
|
||||
gdisp_lld_init(g, i);
|
||||
gdisp_lld_init(g);
|
||||
|
||||
// Set the initial clipping region
|
||||
#if GDISP_NEED_VALIDATION || GDISP_NEED_CLIP
|
||||
|
|
Loading…
Add table
Reference in a new issue