@@ -178,18 +178,23 @@ mp_obj_t common_hal_board_create_uart(const mp_int_t instance) {
178178void reset_board_buses (void ) {
179179 #if CIRCUITPY_BOARD_I2C || (CIRCUITPY_BOARD_SPI && (CIRCUITPY_FOURWIRE || CIRCUITPY_SHARPDISPLAY || CIRCUITPY_AURORA_EPAPER ))
180180 mp_int_t max_num_displays = CIRCUITPY_DISPLAY_LIMIT ;
181+ #if CIRCUITPY_OS_GETENV
182+ #define DYN_DISPLAY_BUSES (indx ) (indx < CIRCUITPY_DISPLAY_LIMIT ? display_buses[indx] : display_buses_dyn[indx - CIRCUITPY_DISPLAY_LIMIT])
183+ #else
184+ #define DYN_DISPLAY_BUSES (indx ) (display_buses[indx])
185+ #endif
181186
182187 #if CIRCUITPY_OS_GETENV
183188 (void )common_hal_os_getenv_int ("CIRCUITPY_DISPLAY_LIMIT" , & max_num_displays );
184189 #endif
185190 #endif
186191
187192 #if CIRCUITPY_BOARD_I2C
188- for (uint8_t instance = 0 ; instance < max_num_displays ; instance ++ ) {
193+ for (uint8_t instance = 0 ; instance < CIRCUITPY_BOARD_I2C ; instance ++ ) {
189194 bool display_using_i2c = false;
190195 #if CIRCUITPY_I2CDISPLAYBUS
191196 for (uint8_t i = 0 ; i < max_num_displays ; i ++ ) {
192- if (display_buses [ i ] .bus_base .type == & i2cdisplaybus_i2cdisplaybus_type && display_buses [ i ] .i2cdisplay_bus .bus == & i2c_obj [instance ]) {
197+ if (DYN_DISPLAY_BUSES ( i ) .bus_base .type == & i2cdisplaybus_i2cdisplaybus_type && DYN_DISPLAY_BUSES ( i ) .i2cdisplay_bus .bus == & i2c_obj [instance ]) {
193198 display_using_i2c = true;
194199 break ;
195200 }
@@ -210,21 +215,21 @@ void reset_board_buses(void) {
210215 bool display_using_spi = false;
211216 #if CIRCUITPY_FOURWIRE || CIRCUITPY_SHARPDISPLAY || CIRCUITPY_AURORA_EPAPER
212217 for (uint8_t i = 0 ; i < max_num_displays ; i ++ ) {
213- mp_const_obj_t bus_type = display_buses [ i ] .bus_base .type ;
218+ mp_const_obj_t bus_type = DYN_DISPLAY_BUSES ( i ) .bus_base .type ;
214219 #if CIRCUITPY_FOURWIRE
215- if (bus_type == & fourwire_fourwire_type && display_buses [ i ] .fourwire_bus .bus == & spi_obj [instance ]) {
220+ if (bus_type == & fourwire_fourwire_type && DYN_DISPLAY_BUSES ( i ) .fourwire_bus .bus == & spi_obj [instance ]) {
216221 display_using_spi = true;
217222 break ;
218223 }
219224 #endif
220225 #if CIRCUITPY_SHARPDISPLAY
221- if (bus_type == & sharpdisplay_framebuffer_type && display_buses [ i ] .sharpdisplay .bus == & spi_obj [instance ]) {
226+ if (bus_type == & sharpdisplay_framebuffer_type && DYN_DISPLAY_BUSES ( i ) .sharpdisplay .bus == & spi_obj [instance ]) {
222227 display_using_spi = true;
223228 break ;
224229 }
225230 #endif
226231 #if CIRCUITPY_AURORA_EPAPER
227- if (bus_type == & aurora_epaper_framebuffer_type && display_buses [ i ] .aurora_epaper .bus == & spi_obj [instance ]) {
232+ if (bus_type == & aurora_epaper_framebuffer_type && DYN_DISPLAY_BUSES ( i ) .aurora_epaper .bus == & spi_obj [instance ]) {
228233 display_using_spi = true;
229234 break ;
230235 }
0 commit comments