mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
rgb_lcd: make pclk gpio setting optional
PCLK may not be necessary in VGA use case. Closes https://github.com/espressif/esp-idf/issues/11298
This commit is contained in:
parent
9652d8ed6f
commit
5ba53c9294
@ -126,7 +126,7 @@ typedef struct {
|
|||||||
int hsync_gpio_num; /*!< GPIO used for HSYNC signal */
|
int hsync_gpio_num; /*!< GPIO used for HSYNC signal */
|
||||||
int vsync_gpio_num; /*!< GPIO used for VSYNC signal */
|
int vsync_gpio_num; /*!< GPIO used for VSYNC signal */
|
||||||
int de_gpio_num; /*!< GPIO used for DE signal, set to -1 if it's not used */
|
int de_gpio_num; /*!< GPIO used for DE signal, set to -1 if it's not used */
|
||||||
int pclk_gpio_num; /*!< GPIO used for PCLK signal */
|
int pclk_gpio_num; /*!< GPIO used for PCLK signal, set to -1 if it's not used */
|
||||||
int disp_gpio_num; /*!< GPIO used for display control signal, set to -1 if it's not used */
|
int disp_gpio_num; /*!< GPIO used for display control signal, set to -1 if it's not used */
|
||||||
int data_gpio_nums[SOC_LCD_RGB_DATA_WIDTH]; /*!< GPIOs used for data lines */
|
int data_gpio_nums[SOC_LCD_RGB_DATA_WIDTH]; /*!< GPIOs used for data lines */
|
||||||
struct {
|
struct {
|
||||||
|
@ -866,7 +866,7 @@ static esp_err_t lcd_rgb_panel_configure_gpio(esp_rgb_panel_t *panel, const esp_
|
|||||||
{
|
{
|
||||||
int panel_id = panel->panel_id;
|
int panel_id = panel->panel_id;
|
||||||
// check validation of GPIO number
|
// check validation of GPIO number
|
||||||
bool valid_gpio = (panel_config->pclk_gpio_num >= 0);
|
bool valid_gpio = true;
|
||||||
if (panel_config->de_gpio_num < 0) {
|
if (panel_config->de_gpio_num < 0) {
|
||||||
// Hsync and Vsync are required in HV mode
|
// Hsync and Vsync are required in HV mode
|
||||||
valid_gpio = valid_gpio && (panel_config->hsync_gpio_num >= 0) && (panel_config->vsync_gpio_num >= 0);
|
valid_gpio = valid_gpio && (panel_config->hsync_gpio_num >= 0) && (panel_config->vsync_gpio_num >= 0);
|
||||||
@ -896,10 +896,13 @@ static esp_err_t lcd_rgb_panel_configure_gpio(esp_rgb_panel_t *panel, const esp_
|
|||||||
esp_rom_gpio_connect_out_signal(panel_config->vsync_gpio_num,
|
esp_rom_gpio_connect_out_signal(panel_config->vsync_gpio_num,
|
||||||
lcd_periph_signals.panels[panel_id].vsync_sig, false, false);
|
lcd_periph_signals.panels[panel_id].vsync_sig, false, false);
|
||||||
}
|
}
|
||||||
gpio_hal_iomux_func_sel(GPIO_PIN_MUX_REG[panel_config->pclk_gpio_num], PIN_FUNC_GPIO);
|
// PCLK may not be necessary in some cases (i.e. VGA output)
|
||||||
gpio_set_direction(panel_config->pclk_gpio_num, GPIO_MODE_OUTPUT);
|
if (panel_config->pclk_gpio_num >= 0) {
|
||||||
esp_rom_gpio_connect_out_signal(panel_config->pclk_gpio_num,
|
gpio_hal_iomux_func_sel(GPIO_PIN_MUX_REG[panel_config->pclk_gpio_num], PIN_FUNC_GPIO);
|
||||||
lcd_periph_signals.panels[panel_id].pclk_sig, false, false);
|
gpio_set_direction(panel_config->pclk_gpio_num, GPIO_MODE_OUTPUT);
|
||||||
|
esp_rom_gpio_connect_out_signal(panel_config->pclk_gpio_num,
|
||||||
|
lcd_periph_signals.panels[panel_id].pclk_sig, false, false);
|
||||||
|
}
|
||||||
// DE signal might not be necessary for some RGB LCD
|
// DE signal might not be necessary for some RGB LCD
|
||||||
if (panel_config->de_gpio_num >= 0) {
|
if (panel_config->de_gpio_num >= 0) {
|
||||||
gpio_hal_iomux_func_sel(GPIO_PIN_MUX_REG[panel_config->de_gpio_num], PIN_FUNC_GPIO);
|
gpio_hal_iomux_func_sel(GPIO_PIN_MUX_REG[panel_config->de_gpio_num], PIN_FUNC_GPIO);
|
||||||
|
Loading…
Reference in New Issue
Block a user