diff --git a/drivers/gdisp/SSD1289/gdisp_lld.c b/drivers/gdisp/SSD1289/gdisp_lld.c index 9b572568..3a770bc6 100644 --- a/drivers/gdisp/SSD1289/gdisp_lld.c +++ b/drivers/gdisp/SSD1289/gdisp_lld.c @@ -368,7 +368,7 @@ void GDISP_LLD(drawpixel)(coord_t x, coord_t y, color_t color) { * @note Optional. * @note If x,y is off the screen, the result is undefined. * - * @param[in] x, y The start of the text + * @param[in] x, y The pixel to be read * * @notapi */ @@ -386,6 +386,7 @@ void GDISP_LLD(drawpixel)(coord_t x, coord_t y, color_t color) { color = read_data(); stream_stop(); release_bus(); + return color; } #endif diff --git a/drivers/gdisp/SSD1289/gdisp_lld_board_firebullstm32f103.h b/drivers/gdisp/SSD1289/gdisp_lld_board_firebullstm32f103.h index 48be3cf7..185dac8a 100644 --- a/drivers/gdisp/SSD1289/gdisp_lld_board_firebullstm32f103.h +++ b/drivers/gdisp/SSD1289/gdisp_lld_board_firebullstm32f103.h @@ -139,16 +139,16 @@ static __inline uint16_t read_data(void) { uint16_t value; // change pin mode to digital input - GDISP_DATA_PORT->CRH = 0x44444444; - GDISP_DATA_PORT->CRL = 0x44444444; + palSetGroupMode(GDISP_DATA_PORT, PAL_WHOLE_PORT, 0, PAL_MODE_INPUT); CLR_RD; value = palReadPort(GDISP_DATA_PORT); + value = palReadPort(GDISP_DATA_PORT); SET_RD; // change pin mode back to digital output - GDISP_DATA_PORT->CRH = 0x33333333; - GDISP_DATA_PORT->CRL = 0x33333333; + palSetGroupMode(GDISP_DATA_PORT, PAL_WHOLE_PORT, 0, PAL_MODE_OUTPUT_PUSHPULL); + return value; } #endif