Lines Matching full:i2s
54 static const char *TAG = "i2s(legacy)";
72 uint32_t sample_rate_hz; /*!< I2S sample rate */
99 * @brief I2S object instance
103 i2s_port_t i2s_num; /*!< I2S port number*/
104 int queue_size; /*!< I2S event queue size*/
105 QueueHandle_t i2s_queue; /*!< I2S queue handler*/
110 gdma_channel_handle_t rx_dma_chan; /*!< I2S rx gDMA channel handle*/
111 gdma_channel_handle_t tx_dma_chan; /*!< I2S tx gDMA channel handle*/
113 intr_handle_t i2s_isr_handle; /*!< I2S Interrupt handle*/
117 bool tx_desc_auto_clear; /*!< I2S auto clear tx descriptor on underflow */
118 bool use_apll; /*!< I2S use APLL clock */
119 int fixed_mclk; /*!< I2S fixed MLCK clock */
120 i2s_mclk_multiple_t mclk_multiple; /*!< The multiple of I2S master clock(MCLK) to sample rate */
125 i2s_hal_context_t hal; /*!< I2S hal context*/
137 // Record the component name that using I2S peripheral
140 // Global I2S object pointer
145 // Global spin lock for all i2s controllers
156 I2S DMA operation
269 // of previous data from tx descriptor on I2S line. in i2s_intr_handler_default()
349 /* Initial I2S module interrupt */ in i2s_dma_intr_init()
350 …er_default, p_i2s[i2s_num], &p_i2s[i2s_num]->i2s_isr_handle), TAG, "Register I2S Interrupt error"); in i2s_dma_intr_init()
369 * @brief I2S rx reset
371 * @param i2s_num I2S device number
476 I2S buffer operation
492 ESP_RETURN_ON_FALSE(dma_obj, ESP_ERR_INVALID_ARG, TAG, "I2S DMA object can't be NULL"); in i2s_delete_dma_buffer()
511 ESP_GOTO_ON_FALSE(dma_obj, ESP_ERR_INVALID_ARG, err, TAG, "I2S DMA object can't be NULL"); in i2s_alloc_dma_buffer()
551 ESP_RETURN_ON_FALSE(dma_obj, ESP_ERR_INVALID_ARG, TAG, "I2S DMA object can't be NULL"); in i2s_realloc_dma_buffer()
564 ESP_RETURN_ON_FALSE(p_i2s[i2s_num], ESP_ERR_INVALID_ARG, TAG, "I2S not initialized yet"); in i2s_destroy_dma_object()
621 ESP_LOGE(TAG, "I2S DMA object create failed, preparing to uninstall"); in i2s_create_dma_object()
628 I2S clock operation
675 /* Set I2S bit clock */ in i2s_calculate_adc_dac_clock()
677 /* Set I2S bit clock default division */ in i2s_calculate_adc_dac_clock()
684 /* Get I2S system clock by config source clock */ in i2s_calculate_adc_dac_clock()
686 …/* Get I2S master clock rough division, later will calculate the fine division parameters in HAL */ in i2s_calculate_adc_dac_clock()
704 /* Set I2S bit clock */ in i2s_calculate_pdm_tx_clock()
706 /* Set I2S bit clock default division */ in i2s_calculate_pdm_tx_clock()
713 /* Get I2S system clock by config source clock */ in i2s_calculate_pdm_tx_clock()
715 …/* Get I2S master clock rough division, later will calculate the fine division parameters in HAL */ in i2s_calculate_pdm_tx_clock()
731 /* Set I2S bit clock */ in i2s_calculate_pdm_rx_clock()
733 /* Set I2S bit clock default division */ in i2s_calculate_pdm_rx_clock()
740 /* Get I2S system clock by config source clock */ in i2s_calculate_pdm_rx_clock()
742 …/* Get I2S master clock rough division, later will calculate the fine division parameters in HAL */ in i2s_calculate_pdm_rx_clock()
770 /* Get I2S system clock by config source clock */ in i2s_calculate_common_clock()
772 …/* Get I2S master clock rough division, later will calculate the fine division parameters in HAL */ in i2s_calculate_common_clock()
817 I2S configuration
839 …ESP_RETURN_ON_FALSE((dac_mode < I2S_DAC_CHANNEL_MAX), ESP_ERR_INVALID_ARG, TAG, "i2s dac mode erro… in i2s_set_dac_mode()
882 …s_adc_unit != -1) && (_i2s_adc_channel != -1)), ESP_ERR_INVALID_ARG, TAG, "i2s ADC recover error, … in _i2s_adc_mode_recover()
888 …ESP_RETURN_ON_FALSE((adc_unit < ADC_UNIT_2), ESP_ERR_INVALID_ARG, TAG, "i2s ADC unit error, only s… in i2s_set_adc_mode()
900 ESP_ERR_INVALID_STATE, TAG, "i2s built-in adc not enabled"); in i2s_adc_enable()
913 ESP_ERR_INVALID_STATE, TAG, "i2s built-in adc not enabled"); in i2s_adc_disable()
924 /* Check the validity of i2s device number */ in i2s_check_cfg_validity()
926 …ESP_RETURN_ON_FALSE(p_i2s[i2s_num] == NULL, ESP_ERR_INVALID_STATE, TAG, "this i2s port is in use"); in i2s_check_cfg_validity()
927 ESP_RETURN_ON_FALSE(cfg, ESP_ERR_INVALID_ARG, TAG, "I2S configuration must not be NULL"); in i2s_check_cfg_validity()
929 …dma_desc_num >= 2 && cfg->dma_desc_num <= 128), ESP_ERR_INVALID_ARG, TAG, "I2S buffer count less t… in i2s_check_cfg_validity()
930 …_frame_num >= 8 && cfg->dma_frame_num <= 1024), ESP_ERR_INVALID_ARG, TAG, "I2S buffer length at mo… in i2s_check_cfg_validity()
936 …ESP_RETURN_ON_FALSE(i2s_num == I2S_NUM_0, ESP_ERR_INVALID_ARG, TAG, "I2S PDM mode only support on … in i2s_check_cfg_validity()
945 …ESP_RETURN_ON_FALSE(!(cfg->mode & I2S_MODE_PDM), ESP_ERR_INVALID_ARG, TAG, "I2S PDM mode not suppo… in i2s_check_cfg_validity()
951 …ESP_RETURN_ON_FALSE(i2s_num == I2S_NUM_0, ESP_ERR_INVALID_ARG, TAG, "I2S built-in ADC/DAC only sup… in i2s_check_cfg_validity()
955 …de & I2S_MODE_TX) || (cfg->mode & I2S_MODE_RX), ESP_ERR_INVALID_ARG, TAG, "I2S no TX/RX mode selec… in i2s_check_cfg_validity()
1042 …ESP_RETURN_ON_FALSE(p_i2s[i2s_num], ESP_ERR_INVALID_ARG, TAG, "I2S%d has not installed yet", i2s_n… in i2s_set_clk()
1044 …/* Acquire the lock before stop i2s, otherwise reading/writing operation will stuck on receiving t… in i2s_set_clk()
1052 /* Stop I2S */ in i2s_set_clk()
1106 ESP_RETURN_ON_ERROR(ret, TAG, "I2S%d tx DMA buffer malloc failed", i2s_num); in i2s_set_clk()
1112 ESP_RETURN_ON_ERROR(ret, TAG, "I2S%d rx DMA buffer malloc failed", i2s_num); in i2s_set_clk()
1118 /* I2S start */ in i2s_set_clk()
1148 ESP_RETURN_ON_FALSE(p_i2s[i2s_num], ESP_FAIL, TAG, "i2s has not installed yet"); in i2s_pcm_config()
1182 ESP_RETURN_ON_FALSE(p_i2s[i2s_num], ESP_FAIL, TAG, "i2s has not installed yet"); in i2s_set_pdm_rx_down_sample()
1183 …ESP_RETURN_ON_FALSE((p_i2s[i2s_num]->mode == I2S_COMM_MODE_PDM), ESP_ERR_INVALID_ARG, TAG, "i2s mo… in i2s_set_pdm_rx_down_sample()
1197 ESP_RETURN_ON_FALSE(p_i2s[i2s_num], ESP_FAIL, TAG, "i2s has not installed yet"); in i2s_set_pdm_tx_up_sample()
1199 ESP_ERR_INVALID_ARG, TAG, "i2s mode is not PDM mode"); in i2s_set_pdm_tx_up_sample()
1218 …ESP_RETURN_ON_ERROR(i2s_create_dma_object(i2s_num, &p_i2s[i2s_num]->tx), TAG, "I2S TX DMA object c… in i2s_dma_object_init()
1222 …ESP_RETURN_ON_ERROR(i2s_create_dma_object(i2s_num, &p_i2s[i2s_num]->rx), TAG, "I2S RX DMA object c… in i2s_dma_object_init()
1412 …(esp_pm_lock_create(pm_lock, 0, "i2s_driver", &p_i2s[i2s_num]->pm_lock), TAG, "I2S pm lock error"); in i2s_init_legacy()
1473 …ESP_RETURN_ON_ERROR(i2s_dma_intr_init(i2s_num, intr_alloc_flag), TAG, "I2S interrupt initailze fai… in i2s_init_legacy()
1474 ESP_RETURN_ON_ERROR(i2s_dma_object_init(i2s_num), TAG, "I2S dma object create failed"); in i2s_init_legacy()
1476 …ESP_RETURN_ON_ERROR(i2s_realloc_dma_buffer(i2s_num, p_i2s[i2s_num]->tx), TAG, "Allocate I2S dma tx… in i2s_init_legacy()
1479 …ESP_RETURN_ON_ERROR(i2s_realloc_dma_buffer(i2s_num, p_i2s[i2s_num]->rx), TAG, "Allocate I2S dma rx… in i2s_init_legacy()
1482 /* Initialize I2S DMA object */ in i2s_init_legacy()
1499 …ESP_RETURN_ON_FALSE(p_i2s[i2s_num], ESP_ERR_INVALID_STATE, TAG, "I2S port %d has not installed", i… in i2s_driver_uninstall()
1582 …ESP_RETURN_ON_ERROR(i2s_check_cfg_validity(i2s_num, i2s_config), TAG, "I2S configuration is invali… in i2s_driver_install()
1586 ESP_RETURN_ON_FALSE(i2s_obj, ESP_ERR_NO_MEM, TAG, "no mem for I2S driver"); in i2s_driver_install()
1589 ESP_LOGE(TAG, "register I2S object to platform failed"); in i2s_driver_install()
1597 ESP_GOTO_ON_ERROR(i2s_config_transfer(i2s_num, i2s_config), err, TAG, "I2S install failed"); in i2s_driver_install()
1603 …ESP_GOTO_ON_ERROR(i2s_init_legacy(i2s_num, i2s_config->intr_alloc_flags), err, TAG, "I2S init fail… in i2s_driver_install()
1605 /* Step 5: Initialise i2s event queue if user needs */ in i2s_driver_install()
1608 ESP_GOTO_ON_FALSE(i2s_obj->i2s_queue, ESP_ERR_NO_MEM, err, TAG, "I2S queue create failed"); in i2s_driver_install()
1615 /* Step 6: Start I2S for backward compatibility */ in i2s_driver_install()
1616 ESP_GOTO_ON_ERROR(i2s_start(i2s_num), err, TAG, "I2S start failed"); in i2s_driver_install()
1621 /* I2S install failed, prepare to uninstall */ in i2s_driver_install()
1771 I2S GPIO operation
1817 ESP_LOGD(TAG, "I2S%d, MCLK output by GPIO%d", i2s_num, gpio_num); in i2s_check_set_mclk()
1826 /* Clear I2S RX DMA buffer */ in i2s_zero_dma_buffer()
1833 /* Clear I2S TX DMA buffer */ in i2s_zero_dma_buffer()
1902 ESP_RETURN_ON_FALSE(id < SOC_I2S_NUM, ESP_ERR_INVALID_ARG, TAG, "invalid i2s port id"); in i2s_platform_acquire_occupation()
1917 ESP_RETURN_ON_FALSE(id < SOC_I2S_NUM, ESP_ERR_INVALID_ARG, TAG, "invalid i2s port id"); in i2s_platform_release_occupation()
1931 …l be called during start up, to check that the new i2s driver is not running along with the legacy…
1936 …/* If the new I2S driver is linked, the weak function will point to the actual function in the new… in check_i2s_driver_conflict()
1938 … ESP_EARLY_LOGE(TAG, "CONFLICT! The new i2s driver can't work along with the legacy i2s driver"); in check_i2s_driver_conflict()
1941 …ESP_EARLY_LOGW(TAG, "legacy i2s driver is deprecated, please migrate to use driver/i2s_std.h, driv… in check_i2s_driver_conflict()