Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions extmod/vfs_blockdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@
#include "shared-bindings/sdioio/SDCard.h"
#endif

#if CIRCUITPY_EMMCIO
#include "shared-bindings/emmcio/EMMC.h"
#endif


#if MICROPY_VFS

Expand Down Expand Up @@ -75,6 +79,25 @@ void mp_vfs_blockdev_init(mp_vfs_blockdev_t *self, mp_obj_t bdev) {
self->u.ioctl[2] = (mp_obj_t)sdioio_sdcard_ioctl; // native version
}
#endif

#if CIRCUITPY_EMMCIO
if (mp_obj_get_type(bdev) == &emmcio_emmc_type) {
self->flags |= MP_BLOCKDEV_FLAG_NATIVE | MP_BLOCKDEV_FLAG_HAVE_IOCTL;
self->readblocks[0] = mp_const_none;
self->readblocks[1] = bdev;
self->readblocks[2] = (mp_obj_t)emmcio_emmc_readblocks_native;
if (emmcio_emmc_is_write_enabled(bdev)) {
self->writeblocks[0] = mp_const_none;
self->writeblocks[1] = bdev;
self->writeblocks[2] = (mp_obj_t)emmcio_emmc_writeblocks_native;
} else {
self->writeblocks[0] = MP_OBJ_NULL;
}
self->u.ioctl[0] = mp_const_none;
self->u.ioctl[1] = bdev;
self->u.ioctl[2] = (mp_obj_t)emmcio_emmc_ioctl_native;
}
#endif
if (self->u.ioctl[0] != MP_OBJ_NULL) {
// Device supports new block protocol, so indicate it
self->flags |= MP_BLOCKDEV_FLAG_HAVE_IOCTL;
Expand Down
36 changes: 21 additions & 15 deletions locale/circuitpython.pot
Original file line number Diff line number Diff line change
Expand Up @@ -990,7 +990,7 @@ msgstr ""
#: ports/atmel-samd/common-hal/microcontroller/Pin.c
#: ports/espressif/common-hal/dotclockframebuffer/DotClockFramebuffer.c
#: ports/mimxrt10xx/common-hal/microcontroller/Pin.c
#: shared-bindings/microcontroller/Pin.c
#: shared-bindings/emmcio/EMMC.c shared-bindings/microcontroller/Pin.c
msgid "Invalid %q pin"
msgstr ""

Expand Down Expand Up @@ -1032,16 +1032,18 @@ msgid "Another send is already active"
msgstr ""

#: ports/atmel-samd/common-hal/sdioio/SDCard.c
#: ports/espressif/common-hal/qspibus/QSPIBus.c
#: ports/espressif/common-hal/qspibus/QSPIBus.c shared-bindings/emmcio/EMMC.c
#: shared-bindings/socketpool/SocketPool.c
msgid "%q failure: %d"
msgstr ""

#: ports/atmel-samd/common-hal/sdioio/SDCard.c
#: ports/cxd56/common-hal/sdioio/SDCard.c
#: ports/espressif/common-hal/sdioio/SDCard.c
#: ports/raspberrypi/common-hal/sdioio/SDCard.c
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/floppyio/__init__.c
#: shared-bindings/picogame/Canvas.c shared-module/sdcardio/SDCard.c
#: ports/stm/common-hal/sdioio/SDCard.c shared-bindings/emmcio/EMMC.c
#: shared-bindings/floppyio/__init__.c shared-bindings/picogame/Canvas.c
#: shared-module/sdcardio/SDCard.c
#, c-format
msgid "Buffer must be a multiple of %d bytes"
msgstr ""
Expand Down Expand Up @@ -1153,6 +1155,7 @@ msgstr ""

#: ports/espressif/common-hal/_bleio/Adapter.c
#: ports/nordic/common-hal/_bleio/Adapter.c
#: ports/zephyr-cp/common-hal/_bleio/Adapter.c
msgid "Data too large for advertisement packet"
msgstr ""

Expand Down Expand Up @@ -1325,7 +1328,7 @@ msgid "%q must be 8, 16, 24, or 32"
msgstr ""

#: ports/espressif/common-hal/audiobusio/__init__.c
#: ports/espressif/common-hal/audioi2sin/I2SIn.c
#: ports/espressif/common-hal/audioi2sin/I2SIn.c shared-bindings/emmcio/EMMC.c
msgid "Peripheral in use"
msgstr ""

Expand Down Expand Up @@ -1477,6 +1480,7 @@ msgstr ""

#: ports/espressif/common-hal/espidf/__init__.c
#: ports/raspberrypi/common-hal/picogame/Display.c
#: shared-bindings/picogame/__init__.c
msgid "Operation or feature not supported"
msgstr ""

Expand Down Expand Up @@ -1519,7 +1523,7 @@ msgstr ""
#: ports/raspberrypi/common-hal/picodvi/Framebuffer_RP2350.c
#: ports/raspberrypi/common-hal/rp2pio/StateMachine.c
#: ports/raspberrypi/common-hal/usb_host/Port.c
#: shared-bindings/digitalio/DigitalInOut.c
#: shared-bindings/digitalio/DigitalInOut.c shared-bindings/emmcio/EMMC.c
#: shared-bindings/i2cioexpander/IOPin.c shared-bindings/microcontroller/Pin.c
#: shared-module/max3421e/Max3421E.c
msgid "%q in use"
Expand Down Expand Up @@ -1680,6 +1684,7 @@ msgstr ""

#: ports/espressif/common-hal/wifi/__init__.c
#: ports/raspberrypi/common-hal/wifi/__init__.c
#: ports/zephyr-cp/common-hal/wifi/Radio.c
msgid "Only IPv4 addresses supported"
msgstr ""

Expand All @@ -1692,6 +1697,7 @@ msgstr ""
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/I2C.c
#: ports/stm/common-hal/busio/SPI.c ports/stm/common-hal/busio/UART.c
#: ports/stm/common-hal/canio/CAN.c ports/stm/common-hal/sdioio/SDCard.c
#: shared-bindings/emmcio/EMMC.c
msgid "Hardware in use, try alternative pins"
msgstr ""

Expand Down Expand Up @@ -1818,7 +1824,7 @@ msgstr ""
#: ports/raspberrypi/bindings/cyw43/__init__.c py/argcheck.c py/objexcept.c
#: shared-bindings/bitmapfilter/__init__.c shared-bindings/canio/CAN.c
#: shared-bindings/digitalio/Pull.c shared-bindings/picogame/Sprite.c
#: shared-bindings/supervisor/__init__.c shared-module/audiofilters/Filter.c
#: shared-bindings/supervisor/__init__.c shared-module/audiofilters/__init__.c
#: shared-module/displayio/__init__.c shared-module/synthio/Synthesizer.c
msgid "%q must be of type %q or %q, not %q"
msgstr ""
Expand Down Expand Up @@ -1903,7 +1909,7 @@ msgstr ""
msgid "I2C peripheral in use"
msgstr ""

#: ports/raspberrypi/common-hal/busio/SPI.c
#: ports/raspberrypi/common-hal/busio/SPI.c shared-bindings/emmcio/EMMC.c
msgid "SPI peripheral in use"
msgstr ""

Expand Down Expand Up @@ -2355,7 +2361,7 @@ msgstr ""
msgid "%q length must be %d"
msgstr ""

#: py/argcheck.c shared-module/audiofilters/Filter.c
#: py/argcheck.c shared-module/audiofilters/__init__.c
msgid "%q in %q must be of type %q, not %q"
msgstr ""

Expand Down Expand Up @@ -3617,7 +3623,7 @@ msgstr ""
msgid "not a 128-bit UUID"
msgstr ""

#: shared-bindings/_bleio/__init__.c
#: shared-bindings/_bleio/__init__.c shared-bindings/emmcio/EMMC.c
#: shared-bindings/memorymonitor/AllocationSize.c
#: shared-bindings/pulseio/PulseIn.c shared-module/bitmaptools/__init__.c
#: shared-module/displayio/Bitmap.c shared-module/displayio/Group.c
Expand Down Expand Up @@ -3777,7 +3783,7 @@ msgstr ""
msgid "invalid destination buffer, must be an array of type: %c"
msgstr ""

#: shared-bindings/audioio/AudioOut.c
#: shared-bindings/audioio/AudioOut.c shared-bindings/emmcio/EMMC.c
msgid "%q and %q must be different"
msgstr ""

Expand Down Expand Up @@ -4000,6 +4006,10 @@ msgstr ""
msgid "offset must be >= 0"
msgstr ""

#: shared-bindings/emmcio/EMMC.c shared-bindings/i2cioexpander/IOExpander.c
msgid "address out of range"
msgstr ""

#: shared-bindings/epaperdisplay/EPaperDisplay.c
msgid "Refresh too soon"
msgstr ""
Expand All @@ -4016,10 +4026,6 @@ msgstr ""
msgid "Unsupported hash algorithm"
msgstr ""

#: shared-bindings/i2cioexpander/IOExpander.c
msgid "address out of range"
msgstr ""

#: shared-bindings/i2cioexpander/IOExpander.c
msgid "num_pins must be 8 or 16"
msgstr ""
Expand Down
9 changes: 9 additions & 0 deletions ports/nordic/common-hal/busio/SPI.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@
#include "nrfx_spim.h"
#include "nrf_gpio.h"

#if CIRCUITPY_EMMCIO
#include "common-hal/emmcio/EMMC.h"
#endif

#ifndef NRFX_SPIM3_ENABLED
#define NRFX_SPIM3_ENABLED (0)
#endif
Expand Down Expand Up @@ -122,6 +126,11 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self, const mcu_pin_obj_t *
// Find a free instance, with most desirable (highest freq and not shared) allocated first.
self->spim_peripheral = NULL;
for (size_t i = 0; i < MP_ARRAY_SIZE(spim_peripherals); i++) {
#if CIRCUITPY_EMMCIO
if (spim_peripherals[i].spim.p_reg == NRF_SPIM3 && emmcio_spim3_in_use()) {
continue;
}
#endif
if ((spim_peripherals[i].spim.p_reg->ENABLE & SPIM_ENABLE_ENABLE_Msk) == 0) {
self->spim_peripheral = &spim_peripherals[i];
break;
Expand Down
Loading
Loading