Skip to content

Commit 8384506

Browse files
authored
Merge branch 'adafruit:main' into main
2 parents 0054362 + 353411a commit 8384506

File tree

8 files changed

+72
-50
lines changed

8 files changed

+72
-50
lines changed

.gitmodules

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,8 +309,7 @@
309309
branch = circuitpython
310310
[submodule "ports/raspberrypi/lib/cyw43-driver"]
311311
path = ports/raspberrypi/lib/cyw43-driver
312-
url = https://github.com/adafruit/cyw43-driver.git
313-
branch = circuitpython8
312+
url = https://github.com/georgerobotics/cyw43-driver.git
314313
[submodule "ports/raspberrypi/lib/lwip"]
315314
path = ports/raspberrypi/lib/lwip
316315
url = https://github.com/adafruit/lwip.git

locale/es.po

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ msgstr ""
88
"Project-Id-Version: \n"
99
"Report-Msgid-Bugs-To: \n"
1010
"POT-Creation-Date: 2021-01-04 12:55-0600\n"
11-
"PO-Revision-Date: 2023-02-24 23:20+0000\n"
12-
"Last-Translator: Luis Ruiz San Segundo <luisan00@hotmail.com>\n"
11+
"PO-Revision-Date: 2023-03-09 10:38+0000\n"
12+
"Last-Translator: Jose David M <jquintana202020@gmail.com>\n"
1313
"Language-Team: \n"
1414
"Language: es\n"
1515
"MIME-Version: 1.0\n"
1616
"Content-Type: text/plain; charset=UTF-8\n"
1717
"Content-Transfer-Encoding: 8bit\n"
1818
"Plural-Forms: nplurals=2; plural=n != 1;\n"
19-
"X-Generator: Weblate 4.16-dev\n"
19+
"X-Generator: Weblate 4.16.2-dev\n"
2020

2121
#: main.c
2222
msgid ""
@@ -848,11 +848,11 @@ msgstr ""
848848

849849
#: shared-bindings/bitmaptools/__init__.c
850850
msgid "Coordinate arrays have different lengths"
851-
msgstr ""
851+
msgstr "Las matrices de coordenadas tienen diferentes longitudes"
852852

853853
#: shared-bindings/bitmaptools/__init__.c
854854
msgid "Coordinate arrays types have different sizes"
855-
msgstr ""
855+
msgstr "Las matrices de coordenadas tienen diferentes tamaños"
856856

857857
#: py/persistentcode.c
858858
msgid "Corrupt .mpy file"

ports/atmel-samd/common-hal/busio/SPI.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,10 +271,17 @@ bool common_hal_busio_spi_write(busio_spi_obj_t *self,
271271
size_t bytes_remaining = len;
272272

273273
// Maximum DMA transfer is 65535
274-
while (bytes_remaining > 0) {
274+
while (1) {
275275
size_t to_send = (bytes_remaining > 65535) ? 65535 : bytes_remaining;
276276
status = sercom_dma_write(self->spi_desc.dev.prvt, data + (len - bytes_remaining), to_send);
277277
bytes_remaining -= to_send;
278+
if (bytes_remaining > 0) {
279+
// Multi-part transfer; let other things run before doing the next chunk.
280+
RUN_BACKGROUND_TASKS;
281+
} else {
282+
// All done.
283+
break;
284+
}
278285
}
279286
} else {
280287
struct io_descriptor *spi_io;

ports/espressif/common-hal/busio/SPI.c

Lines changed: 36 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
#include "driver/spi_common_internal.h"
3434

3535
#define SPI_MAX_DMA_BITS (SPI_MAX_DMA_LEN * 8)
36+
#define MAX_SPI_TRANSACTIONS 10
3637

3738
static bool spi_never_reset[SOC_SPI_PERIPH_NUM];
3839
static spi_device_handle_t spi_handle[SOC_SPI_PERIPH_NUM];
@@ -59,7 +60,7 @@ static void set_spi_config(busio_spi_obj_t *self,
5960
.clock_speed_hz = baudrate,
6061
.mode = phase | (polarity << 1),
6162
.spics_io_num = -1, // No CS pin
62-
.queue_size = 1,
63+
.queue_size = MAX_SPI_TRANSACTIONS,
6364
.pre_cb = NULL
6465
};
6566
esp_err_t result = spi_bus_add_device(self->host_id, &device_config, &spi_handle[self->host_id]);
@@ -213,47 +214,61 @@ bool common_hal_busio_spi_transfer(busio_spi_obj_t *self,
213214
mp_raise_ValueError(translate("No MISO Pin"));
214215
}
215216

216-
spi_transaction_t transaction = { 0 };
217+
spi_transaction_t transactions[MAX_SPI_TRANSACTIONS];
217218

218219
// Round to nearest whole set of bits
219220
int bits_to_send = len * 8 / self->bits * self->bits;
220221

221222
if (len <= 4) {
223+
memset(&transactions[0], 0, sizeof(spi_transaction_t));
222224
if (data_out != NULL) {
223-
memcpy(&transaction.tx_data, data_out, len);
225+
memcpy(&transactions[0].tx_data, data_out, len);
224226
}
225227

226-
transaction.flags = SPI_TRANS_USE_TXDATA | SPI_TRANS_USE_RXDATA;
227-
transaction.length = bits_to_send;
228-
spi_device_transmit(spi_handle[self->host_id], &transaction);
228+
transactions[0].flags = SPI_TRANS_USE_TXDATA | SPI_TRANS_USE_RXDATA;
229+
transactions[0].length = bits_to_send;
230+
spi_device_transmit(spi_handle[self->host_id], &transactions[0]);
229231

230232
if (data_in != NULL) {
231-
memcpy(data_in, &transaction.rx_data, len);
233+
memcpy(data_in, &transactions[0].rx_data, len);
232234
}
233235
} else {
234236
int offset = 0;
235237
int bits_remaining = bits_to_send;
238+
int cur_trans = 0;
236239

237240
while (bits_remaining && !mp_hal_is_interrupted()) {
238-
memset(&transaction, 0, sizeof(transaction));
239241

240-
transaction.length =
241-
bits_remaining > SPI_MAX_DMA_BITS ? SPI_MAX_DMA_BITS : bits_remaining;
242+
cur_trans = 0;
243+
while (bits_remaining && (cur_trans != MAX_SPI_TRANSACTIONS)) {
244+
memset(&transactions[cur_trans], 0, sizeof(spi_transaction_t));
242245

243-
if (data_out != NULL) {
244-
transaction.tx_buffer = data_out + offset;
245-
}
246-
if (data_in != NULL) {
247-
transaction.rx_buffer = data_in + offset;
248-
}
246+
transactions[cur_trans].length =
247+
bits_remaining > SPI_MAX_DMA_BITS ? SPI_MAX_DMA_BITS : bits_remaining;
249248

250-
spi_device_transmit(spi_handle[self->host_id], &transaction);
251-
bits_remaining -= transaction.length;
249+
if (data_out != NULL) {
250+
transactions[cur_trans].tx_buffer = data_out + offset;
251+
}
252+
if (data_in != NULL) {
253+
transactions[cur_trans].rx_buffer = data_in + offset;
254+
}
252255

253-
// doesn't need ceil(); loop ends when bits_remaining is 0
254-
offset += transaction.length / 8;
256+
bits_remaining -= transactions[cur_trans].length;
257+
258+
// doesn't need ceil(); loop ends when bits_remaining is 0
259+
offset += transactions[cur_trans].length / 8;
260+
cur_trans++;
261+
}
255262

256-
RUN_BACKGROUND_TASKS;
263+
for (int i = 0; i < cur_trans; i++) {
264+
spi_device_queue_trans(spi_handle[self->host_id], &transactions[i], portMAX_DELAY);
265+
}
266+
267+
spi_transaction_t *rtrans;
268+
for (int x = 0; x < cur_trans; x++) {
269+
RUN_BACKGROUND_TASKS;
270+
spi_device_get_trans_result(spi_handle[self->host_id], &rtrans, portMAX_DELAY);
271+
}
257272
}
258273
}
259274
return true;

ports/raspberrypi/Makefile

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -33,17 +33,23 @@ INC_CYW43 := \
3333
-isystem lib/cyw43-driver/firmware \
3434
-isystem lib/cyw43-driver/src \
3535
-isystem lib/lwip/src/include \
36+
-isystem sdk/src/rp2_common/pico_async_context/include/ \
3637
-isystem sdk/src/rp2_common/pico_cyw43_arch/include/ \
38+
-isystem sdk/src/rp2_common/pico_cyw43_driver/include/ \
3739
-isystem sdk/src/rp2_common/pico_lwip/include/ \
40+
-isystem sdk/src/rp2_common/pico_rand/include/ \
3841

3942
CFLAGS_CYW43 := -DCYW43_LWIP=1 -DPICO_CYW43_ARCH_THREADSAFE_BACKGROUND=1 -DCYW43_USE_SPI -DIGNORE_GPIO25 -DIGNORE_GPIO23 -DIGNORE_GPIO24 -DCYW43_LOGIC_DEBUG=0 -DCYW43_NETUTILS=1
4043
SRC_SDK_CYW43 := \
4144
src/common/pico_sync/sem.c \
42-
src/rp2_common/cyw43_driver/cyw43_bus_pio_spi.c \
45+
src/rp2_common/pico_async_context/async_context_base.c \
46+
src/rp2_common/pico_async_context/async_context_threadsafe_background.c \
4347
src/rp2_common/pico_cyw43_arch/cyw43_arch.c \
4448
src/rp2_common/pico_cyw43_arch/cyw43_arch_threadsafe_background.c \
45-
src/rp2_common/pico_lwip/nosys.c \
46-
src/rp2_common/pico_lwip/random.c \
49+
src/rp2_common/pico_cyw43_driver/cyw43_driver.c \
50+
src/rp2_common/pico_cyw43_driver/cyw43_bus_pio_spi.c \
51+
src/rp2_common/pico_lwip/lwip_nosys.c \
52+
src/rp2_common/pico_rand/rand.c \
4753

4854
SRC_LWIP := \
4955
shared/netutils/netutils.c \
@@ -69,27 +75,15 @@ $(PIOASM):
6975
$(Q)cmake -S pioasm -B $(BUILD)/pioasm
7076
$(Q)$(MAKE) -C $(BUILD)/pioasm PioasmBuild
7177

72-
$(BUILD)/cyw43_bus_pio_spi.pio.h: sdk/src/rp2_common/cyw43_driver/cyw43_bus_pio_spi.pio $(PIOASM)
78+
$(BUILD)/cyw43_bus_pio_spi.pio.h: sdk/src/rp2_common/pico_cyw43_driver/cyw43_bus_pio_spi.pio $(PIOASM)
7379
$(Q)$(PIOASM) -o c-sdk $< $@
74-
$(BUILD)/sdk/src/rp2_common/cyw43_driver/cyw43_bus_pio_spi.o: $(BUILD)/cyw43_bus_pio_spi.pio.h
75-
76-
CYW43_FIRMWARE_BIN = 43439A0-7.95.49.00.combined
77-
78-
$(BUILD)/cyw43_resource.o: lib/cyw43-driver/firmware/$(CYW43_FIRMWARE_BIN)
79-
$(Q)$(OBJCOPY) -I binary -O elf32-littlearm -B arm \
80-
--readonly-text \
81-
--rename-section .data=.big_const,contents,alloc,load,readonly,data \
82-
--redefine-sym _binary_lib_cyw43_driver_firmware_43439A0_7_95_49_00_combined_start=fw_43439A0_7_95_49_00_start \
83-
--redefine-sym _binary_lib_cyw43_driver_firmware_43439A0_7_95_49_00_combined_size=fw_43439A0_7_95_49_00_size \
84-
--redefine-sym _binary_lib_cyw43_driver_firmware_43439A0_7_95_49_00_combined_end=fw_43439A0_7_95_49_00_end \
85-
$< $@
86-
OBJ_CYW43 := $(BUILD)/cyw43_resource.o
80+
$(BUILD)/sdk/src/rp2_common/pico_cyw43_driver/cyw43_bus_pio_spi.o: $(BUILD)/cyw43_bus_pio_spi.pio.h
81+
8782
else
8883
INC_CYW43 :=
8984
CFLAGS_CYW43 :=
9085
SRC_SDK_CYW43 :=
9186
SRC_CYW43 :=
92-
OBJ_CYW43 :=
9387
SRC_LWIP :=
9488
endif
9589

@@ -377,7 +371,7 @@ OBJ += $(addprefix $(BUILD)/, $(SRC_S:.s=.o))
377371
OBJ += $(addprefix $(BUILD)/, $(SRC_S_UPPER:.S=.o))
378372
OBJ += $(addprefix $(BUILD)/, $(SRC_MOD:.c=.o))
379373
OBJ += $(BUILD)/boot2_padded_checksummed.o
380-
OBJ += $(OBJ_CYW43) $(OBJ_MBEDTLS)
374+
OBJ += $(OBJ_MBEDTLS)
381375

382376
$(BUILD)/%.o: $(BUILD)/%.S
383377
$(STEPECHO) "CC $<"

ports/raspberrypi/sdk

Submodule sdk updated 247 files

supervisor/shared/web_workflow/websocket.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ typedef struct {
5252
// interrupt character.
5353
STATIC ringbuf_t _incoming_ringbuf;
5454
STATIC uint8_t _buf[16];
55+
// make sure background is not called recursively
56+
STATIC bool in_web_background = false;
5557

5658
static _websocket cp_serial;
5759

@@ -244,6 +246,10 @@ void websocket_background(void) {
244246
if (!websocket_connected()) {
245247
return;
246248
}
249+
if (in_web_background) {
250+
return;
251+
}
252+
in_web_background = true;
247253
uint8_t c;
248254
while (ringbuf_num_empty(&_incoming_ringbuf) > 0 &&
249255
_read_next_payload_byte(&c)) {
@@ -253,4 +259,5 @@ void websocket_background(void) {
253259
}
254260
ringbuf_put(&_incoming_ringbuf, c);
255261
}
262+
in_web_background = false;
256263
}

0 commit comments

Comments
 (0)