From 00db6cb26c6c743789f4822416d2f71169d8ac08 Mon Sep 17 00:00:00 2001 From: NikhitaR-IFX Date: Thu, 12 Sep 2024 11:48:30 +0530 Subject: [PATCH] ports/psoc6: Fixes based on review comments. Signed-off-by: NikhitaR-IFX --- .github/workflows/ports_psoc6.yml | 3 ++- docs/psoc6/quickref.rst | 8 ++------ ports/psoc6/machine_pdm_pcm.c | 20 ++++++------------- ports/psoc6/mpconfigport.h | 1 + .../single => board_ext_hw/multi}/pdm_pcm.py | 5 +++++ .../multi}/pdm_pcm.py.exp | 0 tests/ports/psoc6/run_psoc6_tests.sh | 5 ++++- 7 files changed, 20 insertions(+), 22 deletions(-) rename tests/ports/psoc6/{board_only_hw/single => board_ext_hw/multi}/pdm_pcm.py (86%) rename tests/ports/psoc6/{board_only_hw/single => board_ext_hw/multi}/pdm_pcm.py.exp (100%) diff --git a/.github/workflows/ports_psoc6.yml b/.github/workflows/ports_psoc6.yml index ba92db3ca3bc..889501e11a17 100644 --- a/.github/workflows/ports_psoc6.yml +++ b/.github/workflows/ports_psoc6.yml @@ -71,7 +71,8 @@ jobs: - name: Run psoc6 tests timeout-minutes: 12 run: | - ./tests/ports/psoc6/run_psoc6_tests.sh --test-suite ci-tests --board ${{ matrix.board }} --hil ${{ runner.name }} + ./tests/ports/psoc6/run_psoc6_tests.sh --test-suite pdm_pcm --board ${{ matrix.board }} --hil ${{ runner.name }} +#./tests/ports/psoc6/run_psoc6_tests.sh --test-suite ci-tests --board ${{ matrix.board }} --hil ${{ runner.name }} - name: Container teardown if: failure() || success() run: | diff --git a/docs/psoc6/quickref.rst b/docs/psoc6/quickref.rst index 023025242d45..42a08530cbf5 100644 --- a/docs/psoc6/quickref.rst +++ b/docs/psoc6/quickref.rst @@ -590,8 +590,8 @@ PDM objects can be created and initialized using:: from machine import PDM_PCM from machine import Pin - clk_pin = Pin('P10_4') - data_pin = Pin('P10_5') + clk_pin = "P10_4" + data_pin = "P10_5" pdm_pcm = PDM_PCM( 0, @@ -647,10 +647,6 @@ Methods .. method:: PDM_PCM.gain(gain_left, gain_right) -.. method:: PDM_PCM.start() - -.. method:: PDM_PCM.stop() - Constants --------- diff --git a/ports/psoc6/machine_pdm_pcm.c b/ports/psoc6/machine_pdm_pcm.c index 9f7c35fc1cf6..17525dc937bc 100644 --- a/ports/psoc6/machine_pdm_pcm.c +++ b/ports/psoc6/machine_pdm_pcm.c @@ -3,7 +3,7 @@ * * The MIT License (MIT) * - * Copyright (c) 2022-2024 Infineon Technologies AG + * Copyright (c) 2024 Infineon Technologies AG * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -32,6 +32,8 @@ #include "modmachine.h" #include "mplogger.h" +#if MICROPY_PY_MACHINE_PDM_PCM + #define pdm_pcm_assert_raise_val(msg, ret) if (ret != CY_RSLT_SUCCESS) { \ mp_raise_msg_varg(&mp_type_ValueError, MP_ERROR_TEXT(msg), ret); \ } @@ -64,11 +66,6 @@ typedef enum { BITS_24 = 24 } pdm_pcm_word_length_t; -typedef enum { - RX, - TX -} pdm_pcm_op_mode_t; - // To be compatible with extmod typedef enum { MONO_LEFT = CYHAL_PDM_PCM_MODE_LEFT, @@ -88,7 +85,6 @@ typedef struct _machine_pdm_pcm_obj_t { cyhal_pdm_pcm_t pdm_pcm_obj; uint32_t clk; uint32_t data; - uint16_t pdm_pcm_op_mode; // always RX io_mode_t io_mode; format_t format; uint8_t bits; @@ -177,7 +173,7 @@ static mp_obj_t machine_pdm_pcm_make_new(const mp_obj_type_t *type, size_t n_pos // ======================================================================================= // Private functions -// Init clock + void pdm_pcm_audio_clock_init(uint32_t audio_clock_freq_hz) { cyhal_clock_t pll_clock; cy_rslt_t result; @@ -260,12 +256,8 @@ static machine_pdm_pcm_obj_t *mp_machine_pdm_pcm_make_new_instance(mp_int_t pdm_ return self; } -// Init helper static void mp_machine_pdm_pcm_init_helper(machine_pdm_pcm_obj_t *self, mp_arg_val_t *args) { - // Only RX mode supported in psoc6 - self->pdm_pcm_op_mode = RX; - // Assign pins self->clk = pin_addr_by_name(args[ARG_clk].u_obj); self->data = pin_addr_by_name(args[ARG_data].u_obj); @@ -317,8 +309,6 @@ static void mp_machine_pdm_pcm_deinit(machine_pdm_pcm_obj_t *self) { MP_STATE_PORT(machine_pdm_pcm_obj[self->pdm_pcm_id]) = NULL; } - - static const mp_rom_map_elem_t machine_pdm_pcm_locals_dict_table[] = { // Methods { MP_ROM_QSTR(MP_QSTR_init), MP_ROM_PTR(&machine_pdm_pcm_init_obj) }, @@ -353,3 +343,5 @@ MP_DEFINE_CONST_OBJ_TYPE( print, machine_pdm_pcm_print, locals_dict, &machine_pdm_pcm_locals_dict ); + +#endif // MICROPY_PY_MACHINE_PDM_PCM diff --git a/ports/psoc6/mpconfigport.h b/ports/psoc6/mpconfigport.h index c7b024ba7b10..9a17d5cc1a8a 100644 --- a/ports/psoc6/mpconfigport.h +++ b/ports/psoc6/mpconfigport.h @@ -150,6 +150,7 @@ #define MICROPY_PY_MACHINE_PSOC6_I2S (1) #define MICROPY_PY_MACHINE_I2S_INCLUDEFILE "ports/psoc6/machine_i2s.c" +#define MICROPY_PY_MACHINE_PDM_PCM (1) // VFS #define MICROPY_VFS (1) #define MICROPY_READER_VFS (1) diff --git a/tests/ports/psoc6/board_only_hw/single/pdm_pcm.py b/tests/ports/psoc6/board_ext_hw/multi/pdm_pcm.py similarity index 86% rename from tests/ports/psoc6/board_only_hw/single/pdm_pcm.py rename to tests/ports/psoc6/board_ext_hw/multi/pdm_pcm.py index e27e7833053c..0f8c2cf3cc01 100644 --- a/tests/ports/psoc6/board_only_hw/single/pdm_pcm.py +++ b/tests/ports/psoc6/board_ext_hw/multi/pdm_pcm.py @@ -6,6 +6,11 @@ if "CY8CPROTO-062-4343W" in board: clk_pin = "P10_4" data_pin = "P10_5" + +elif "CY8CPROTO-063-BLE" in board: + print("SKIP") + raise SystemExit + elif "CY8CKIT-062S2-AI" in board: clk_pin = "P10_4" data_pin = "P10_5" diff --git a/tests/ports/psoc6/board_only_hw/single/pdm_pcm.py.exp b/tests/ports/psoc6/board_ext_hw/multi/pdm_pcm.py.exp similarity index 100% rename from tests/ports/psoc6/board_only_hw/single/pdm_pcm.py.exp rename to tests/ports/psoc6/board_ext_hw/multi/pdm_pcm.py.exp diff --git a/tests/ports/psoc6/run_psoc6_tests.sh b/tests/ports/psoc6/run_psoc6_tests.sh index 925fadfd0ec3..bef8edc83b76 100755 --- a/tests/ports/psoc6/run_psoc6_tests.sh +++ b/tests/ports/psoc6/run_psoc6_tests.sh @@ -238,7 +238,7 @@ i2s_tests() { } pdm_pcm_tests() { - run_tests "pdm_pcm" ${dev_test} "${tests_psoc6_dir}/board_only_hw/single/pdm_pcm.py" + run_tests "pdm_pcm" ${dev_test} "${tests_psoc6_dir}/board_ext_hw/multi/pdm_pcm.py" } wdt_tests() { @@ -298,6 +298,9 @@ run_ci_tests() { dev_test=${devs_a[0]} pwm_tests + dev_test=${devs_a[0]} + pdm_pcm_tests + if [ "${board}" == "CY8CPROTO-062-4343W" ] || [ "${board}" == "CY8CPROTO-063-BLE" ]; then dev_test=${devs_a[0]} else