1414#include "lvgl_touch/tp_spi.h"
1515
1616#include "lvgl_spi_conf.h"
17- #include "lvgl_i2c_conf.h"
1817
19- #include "driver/i2c .h"
18+ #include "lvgl_i2c/i2c_manager .h"
2019
2120#ifdef LV_LVGL_H_INCLUDE_SIMPLE
22- #include "src/lv_core/lv_refr .h"
21+ #include "lvgl .h"
2322#else
24- #include "lvgl/src/lv_core/lv_refr .h"
23+ #include "lvgl/lvgl .h"
2524#endif
2625
2726/*********************
5352/* Interface and driver initialization */
5453void lvgl_driver_init (void )
5554{
55+ /* Since LVGL v8 LV_HOR_RES_MAX and LV_VER_RES_MAX are not defined, so
56+ * print it only if they are defined. */
57+ #if (LVGL_VERSION_MAJOR < 8 )
5658 ESP_LOGI (TAG , "Display hor size: %d, ver size: %d" , LV_HOR_RES_MAX , LV_VER_RES_MAX );
59+ #endif
60+
5761 ESP_LOGI (TAG , "Display buffer size: %d" , DISP_BUF_SIZE );
5862
5963#if defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_FT81X )
@@ -63,7 +67,7 @@ void lvgl_driver_init(void)
6367 DISP_SPI_MISO , DISP_SPI_MOSI , DISP_SPI_CLK ,
6468 SPI_BUS_MAX_TRANSFER_SZ , 1 ,
6569 DISP_SPI_IO2 , DISP_SPI_IO3 );
66-
70+
6771 disp_spi_add_device (TFT_SPI_HOST );
6872 disp_driver_init ();
6973
@@ -81,48 +85,29 @@ void lvgl_driver_init(void)
8185 TP_SPI_MISO , DISP_SPI_MOSI , DISP_SPI_CLK ,
8286 SPI_BUS_MAX_TRANSFER_SZ , 1 ,
8387 -1 , -1 );
84-
88+
8589 disp_spi_add_device (TFT_SPI_HOST );
8690 tp_spi_add_device (TOUCH_SPI_HOST );
87-
88- disp_driver_init ();
89- touch_driver_init ();
90-
91- return ;
92- #endif
9391
94- #if defined (SHARED_I2C_BUS )
95- ESP_LOGI (TAG , "Initializing shared I2C master" );
96-
97- lvgl_i2c_driver_init (DISP_I2C_PORT ,
98- DISP_I2C_SDA , DISP_I2C_SCL ,
99- DISP_I2C_SPEED_HZ );
100-
10192 disp_driver_init ();
10293 touch_driver_init ();
103-
94+
10495 return ;
10596#endif
10697
10798/* Display controller initialization */
10899#if defined CONFIG_LV_TFT_DISPLAY_PROTOCOL_SPI
109100 ESP_LOGI (TAG , "Initializing SPI master for display" );
110-
101+
111102 lvgl_spi_driver_init (TFT_SPI_HOST ,
112103 DISP_SPI_MISO , DISP_SPI_MOSI , DISP_SPI_CLK ,
113104 SPI_BUS_MAX_TRANSFER_SZ , 1 ,
114105 DISP_SPI_IO2 , DISP_SPI_IO3 );
115-
106+
116107 disp_spi_add_device (TFT_SPI_HOST );
117-
108+
118109 disp_driver_init ();
119- #elif defined (CONFIG_LV_TFT_DISPLAY_PROTOCOL_I2C )
120- ESP_LOGI (TAG , "Initializing I2C master for display" );
121- /* Init the i2c master on the display driver code */
122- lvgl_i2c_driver_init (DISP_I2C_PORT ,
123- DISP_I2C_SDA , DISP_I2C_SCL ,
124- DISP_I2C_SPEED_HZ );
125-
110+ #elif defined (CONFIG_LV_I2C_DISPLAY )
126111 disp_driver_init ();
127112#else
128113#error "No protocol defined for display controller"
@@ -132,22 +117,16 @@ void lvgl_driver_init(void)
132117#if CONFIG_LV_TOUCH_CONTROLLER != TOUCH_CONTROLLER_NONE
133118 #if defined (CONFIG_LV_TOUCH_DRIVER_PROTOCOL_SPI )
134119 ESP_LOGI (TAG , "Initializing SPI master for touch" );
135-
120+
136121 lvgl_spi_driver_init (TOUCH_SPI_HOST ,
137122 TP_SPI_MISO , TP_SPI_MOSI , TP_SPI_CLK ,
138123 0 /* Defaults to 4094 */ , 2 ,
139124 -1 , -1 );
140-
125+
141126 tp_spi_add_device (TOUCH_SPI_HOST );
142-
127+
143128 touch_driver_init ();
144- #elif defined (CONFIG_LV_TOUCH_DRIVER_PROTOCOL_I2C )
145- ESP_LOGI (TAG , "Initializing I2C master for touch" );
146-
147- lvgl_i2c_driver_init (TOUCH_I2C_PORT ,
148- TOUCH_I2C_SDA , TOUCH_I2C_SCL ,
149- TOUCH_I2C_SPEED_HZ );
150-
129+ #elif defined (CONFIG_LV_I2C_TOUCH )
151130 touch_driver_init ();
152131 #elif defined (CONFIG_LV_TOUCH_DRIVER_ADC )
153132 touch_driver_init ();
@@ -160,60 +139,46 @@ void lvgl_driver_init(void)
160139#endif
161140}
162141
163- /* Config the i2c master
142+
143+ /* Initialize spi bus master
144+ *
145+ * NOTE: dma_chan type and value changed to int instead of spi_dma_chan_t
146+ * for backwards compatibility with ESP-IDF versions prior v4.3.
164147 *
165- * This should init the i2c master to be used on display and touch controllers.
166- * So we should be able to know if the display and touch controllers shares the
167- * same i2c master.
148+ * We could use the ESP_IDF_VERSION_VAL macro available in the "esp_idf_version.h"
149+ * header available since ESP-IDF v4.
168150 */
169- bool lvgl_i2c_driver_init (int port , int sda_pin , int scl_pin , int speed_hz )
170- {
171- esp_err_t err ;
172-
173- ESP_LOGI (TAG , "Initializing I2C master port %d..." , port );
174- ESP_LOGI (TAG , "SDA pin: %d, SCL pin: %d, Speed: %d (Hz)" ,
175- sda_pin , scl_pin , speed_hz );
176-
177- i2c_config_t conf = {
178- .mode = I2C_MODE_MASTER ,
179- .sda_io_num = sda_pin ,
180- .sda_pullup_en = GPIO_PULLUP_ENABLE ,
181- .scl_io_num = scl_pin ,
182- .scl_pullup_en = GPIO_PULLUP_ENABLE ,
183- .master .clk_speed = speed_hz ,
184- };
185-
186- ESP_LOGI (TAG , "Setting I2C master configuration..." );
187- err = i2c_param_config (port , & conf );
188- assert (ESP_OK == err );
189-
190- ESP_LOGI (TAG , "Installing I2C master driver..." );
191- err = i2c_driver_install (port ,
192- I2C_MODE_MASTER ,
193- 0 , 0 /*I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE */ ,
194- 0 /* intr_alloc_flags */ );
195- assert (ESP_OK == err );
196-
197- return ESP_OK != err ;
198- }
199-
200- /* Initialize spi bus master */
201151bool lvgl_spi_driver_init (int host ,
202152 int miso_pin , int mosi_pin , int sclk_pin ,
203153 int max_transfer_sz ,
204154 int dma_channel ,
205155 int quadwp_pin , int quadhd_pin )
206156{
157+ int dma_chan = 0 /* SPI_DMA_DISABLED */ ;
158+
207159#if defined (CONFIG_IDF_TARGET_ESP32 )
208160 assert ((SPI_HOST <= host ) && (VSPI_HOST >= host ));
209161 const char * spi_names [] = {
210162 "SPI_HOST" , "HSPI_HOST" , "VSPI_HOST"
211163 };
164+
165+ dma_chan = dma_channel ;
212166#elif defined (CONFIG_IDF_TARGET_ESP32S2 )
213167 assert ((SPI_HOST <= host ) && (HSPI_HOST >= host ));
214168 const char * spi_names [] = {
215169 "SPI_HOST" , "" , ""
216170 };
171+
172+ dma_chan = dma_channel ;
173+ #elif defined (CONFIG_IDF_TARGET_ESP32C3 )
174+ assert ((SPI1_HOST <= host ) && (SPI3_HOST >= host ));
175+ const char * spi_names [] = {
176+ "SPI1_HOST" , "SPI2_HOST" , "SPI3_HOST"
177+ };
178+
179+ dma_chan = 3 /* SPI_DMA_CH_AUTO */ ;
180+ #else
181+ #error "Target chip not selected"
217182#endif
218183
219184 ESP_LOGI (TAG , "Configuring SPI host %s (%d)" , spi_names [host ], host );
@@ -232,7 +197,7 @@ bool lvgl_spi_driver_init(int host,
232197 };
233198
234199 ESP_LOGI (TAG , "Initializing SPI bus..." );
235- esp_err_t ret = spi_bus_initialize (host , & buscfg , dma_channel );
200+ esp_err_t ret = spi_bus_initialize (host , & buscfg , dma_chan );
236201 assert (ret == ESP_OK );
237202
238203 return ESP_OK != ret ;
0 commit comments