From 3921520fede22582b26e3a04a7cfbdd502632916 Mon Sep 17 00:00:00 2001 From: Dimitrios Kouzis-Loukas Date: Wed, 8 Nov 2023 19:53:18 -0500 Subject: [PATCH] Issue #8570 fix --- ports/espressif/common-hal/audiobusio/I2SOut.c | 11 +++++++---- ports/espressif/common-hal/audiobusio/I2SOut.h | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ports/espressif/common-hal/audiobusio/I2SOut.c b/ports/espressif/common-hal/audiobusio/I2SOut.c index ec914db8ff..02474d2fb2 100644 --- a/ports/espressif/common-hal/audiobusio/I2SOut.c +++ b/ports/espressif/common-hal/audiobusio/I2SOut.c @@ -49,16 +49,13 @@ void common_hal_audiobusio_i2sout_construct(audiobusio_i2sout_obj_t *self, const mcu_pin_obj_t *bit_clock, const mcu_pin_obj_t *word_select, const mcu_pin_obj_t *data, const mcu_pin_obj_t *main_clock, bool left_justified) { - if (main_clock != NULL) { - mp_raise_NotImplementedError_varg(MP_ERROR_TEXT("%q"), MP_QSTR_main_clock); - } port_i2s_allocate_init(&self->i2s, left_justified); i2s_std_config_t i2s_config = { .clk_cfg = I2S_STD_CLK_DEFAULT_CONFIG(48000), .slot_cfg = I2S_STD_MSB_SLOT_DEFAULT_CONFIG(I2S_DATA_BIT_WIDTH_16BIT, I2S_SLOT_MODE_STEREO), .gpio_cfg = { - .mclk = I2S_GPIO_UNUSED, + .mclk = main_clock != NULL ? main_clock->number : I2S_GPIO_UNUSED, .bclk = bit_clock->number, .ws = word_select->number, .dout = data->number, @@ -68,6 +65,7 @@ void common_hal_audiobusio_i2sout_construct(audiobusio_i2sout_obj_t *self, CHECK_ESP_RESULT(i2s_channel_init_std_mode(self->i2s.handle, &i2s_config)); self->bit_clock = bit_clock; self->word_select = word_select; + self->mclk = main_clock; self->data = data; claim_pin(bit_clock); claim_pin(word_select); @@ -97,6 +95,11 @@ void common_hal_audiobusio_i2sout_deinit(audiobusio_i2sout_obj_t *self) { } self->word_select = NULL; + if (self->mclk) { + reset_pin_number(self->mclk->number); + } + self->mclk = NULL; + if (self->data) { reset_pin_number(self->data->number); } diff --git a/ports/espressif/common-hal/audiobusio/I2SOut.h b/ports/espressif/common-hal/audiobusio/I2SOut.h index 48ab26a42e..c638ced227 100644 --- a/ports/espressif/common-hal/audiobusio/I2SOut.h +++ b/ports/espressif/common-hal/audiobusio/I2SOut.h @@ -40,6 +40,7 @@ typedef struct { const mcu_pin_obj_t *bit_clock; const mcu_pin_obj_t *word_select; const mcu_pin_obj_t *data; + const mcu_pin_obj_t *mclk; } audiobusio_i2sout_obj_t; #endif