~aleteoryx/muditaos

9f10b446cbab96c0f0a3f8ec1369d62eb1e6a070 — Lucjan Bryndza 5 years ago bb06380
[EGD-5102] Fix warning errors in the BSP

Fix warning errors in the BSP module
M module-bsp/board/rt1051/bsp/audio/CodecMAX98090.cpp => module-bsp/board/rt1051/bsp/audio/CodecMAX98090.cpp +38 -38
@@ 31,15 31,15 @@ CodecRetCode CodecMAX98090::Start(const CodecParams &param)

    // Turn off device
    i2cAddr.subAddress                   = MAX98090_REG_DEVICE_SHUTDOWN;
    max98090_reg_shutdown_t dev_shutdown = {.shdn = 0};
    max98090_reg_shutdown_t dev_shutdown = {};
    i2c->Write(i2cAddr, (uint8_t *)&dev_shutdown, 1);

    max98090_reg_masterclock_quick_setup_t masterclock_setup = {0};
    max98090_reg_masterclock_quick_setup_t masterclock_setup = {};
    masterclock_setup.M12P288                                = 1;
    i2cAddr.subAddress                                       = MAX98090_REG_MASTER_CLOCK_QUICK_SETUP;
    i2c->Write(i2cAddr, (uint8_t *)&masterclock_setup, 1);

    max98090_reg_master_samplerate_quick_setup_t samplerate_setup = {0};
    max98090_reg_master_samplerate_quick_setup_t samplerate_setup = {};
    switch (params.sampleRate) {

    case CodecParamsMAX98090::SampleRate::Rate8KHz:


@@ 73,7 73,7 @@ CodecRetCode CodecMAX98090::Start(const CodecParams &param)
    i2c->Write(i2cAddr, (uint8_t *)&samplerate_setup, 1);

    // Sets up DAI for I2S master mode operation.
    max98090_reg_dai_quick_setup_t q_dai_setup = {0};
    max98090_reg_dai_quick_setup_t q_dai_setup = {};
    q_dai_setup.i2sm                           = 1;
    i2cAddr.subAddress                         = MAX98090_REG_DAI_QUICK_SETUP;
    i2c->Write(i2cAddr, (uint8_t *)&q_dai_setup, 1);


@@ 82,7 82,7 @@ CodecRetCode CodecMAX98090::Start(const CodecParams &param)
    if (params.outputPath != bsp::AudioDevice::OutputPath::None) {

        // Control HP performance
        max98090_reg_dachp_perfmode_t dacperf = {0};
        max98090_reg_dachp_perfmode_t dacperf = {};
        dacperf.dachp                         = 1;
        dacperf.perfmode                      = 0;
        i2cAddr.subAddress                    = MAX98090_REG_DACHP_PERF_MODE;


@@ 91,24 91,24 @@ CodecRetCode CodecMAX98090::Start(const CodecParams &param)
        switch (params.outputPath) {

        case bsp::AudioDevice::OutputPath::HeadphonesMono: {
            max98090_reg_playback_quick_setup_t q_playback_setup = {0};
            max98090_reg_playback_quick_setup_t q_playback_setup = {};
            q_playback_setup.dig2hp                              = 1;
            i2cAddr.subAddress                                   = MAX98090_REG_PLAYBACK_QUICK_SETUP;
            i2c->Write(i2cAddr, (uint8_t *)&q_playback_setup, 1);

            // Mix left DAC channel to left&right HP output
            max98090_reg_lhp_mixer_t lmixconf = {0};
            max98090_reg_lhp_mixer_t lmixconf = {};
            lmixconf.mixhpl                   = 1;
            i2cAddr.subAddress = MAX98090_REG_LHP_MIXER_CONF;
            i2c->Write(i2cAddr, (uint8_t *)&lmixconf, 1);

            max98090_reg_rhp_mixer_t rmixconf = {0};
            max98090_reg_rhp_mixer_t rmixconf = {};
            rmixconf.mixhpr                   = 1;
            i2cAddr.subAddress = MAX98090_REG_RHP_MIXER_CONF;
            i2c->Write(i2cAddr, (uint8_t *)&rmixconf, 1);

            // Use mixer outputs instead of direct DAC outputs
            max98090_reg_hpmix_conf_t mixconf = {0};
            max98090_reg_hpmix_conf_t mixconf = {};
            mixconf.mixhplsel                 = 1;
            mixconf.mixhprsel                 = 1;
            i2cAddr.subAddress                = MAX98090_REG_HP_MIX_CONF;


@@ 117,7 117,7 @@ CodecRetCode CodecMAX98090::Start(const CodecParams &param)
        } break;

        case bsp::AudioDevice::OutputPath::Headphones: {
            max98090_reg_playback_quick_setup_t q_playback_setup = {0};
            max98090_reg_playback_quick_setup_t q_playback_setup = {};
            q_playback_setup.dig2hp                              = 1;
            i2cAddr.subAddress = MAX98090_REG_PLAYBACK_QUICK_SETUP;
            i2c->Write(i2cAddr, (uint8_t *)&q_playback_setup, 1);


@@ 125,7 125,7 @@ CodecRetCode CodecMAX98090::Start(const CodecParams &param)
        } break;

        case bsp::AudioDevice::OutputPath::Earspeaker: {
            max98090_reg_playback_quick_setup_t q_playback_setup = {0};
            max98090_reg_playback_quick_setup_t q_playback_setup = {};
            q_playback_setup.dig2ear = 1;
            i2cAddr.subAddress       = MAX98090_REG_PLAYBACK_QUICK_SETUP;
            i2c->Write(i2cAddr, (uint8_t *)&q_playback_setup, 1);


@@ 135,7 135,7 @@ CodecRetCode CodecMAX98090::Start(const CodecParams &param)
        } break;

        case bsp::AudioDevice::OutputPath::Loudspeaker: {
            max98090_reg_playback_quick_setup_t q_playback_setup = {0};
            max98090_reg_playback_quick_setup_t q_playback_setup = {};
            q_playback_setup.dig2spk = 1;
            i2cAddr.subAddress                                   = MAX98090_REG_PLAYBACK_QUICK_SETUP;
            i2c->Write(i2cAddr, (uint8_t *)&q_playback_setup, 1);


@@ 145,7 145,7 @@ CodecRetCode CodecMAX98090::Start(const CodecParams &param)
            i2c->Modify(i2cAddr, mask, true, 1);

            // Turn off right speaker path
            max98090_reg_outputenable_t outputenable = {0};
            max98090_reg_outputenable_t outputenable = {};
            outputenable.dalen                       = 1;
            outputenable.splen                       = 1;
            i2cAddr.subAddress                       = MAX98090_REG_OUTPUT_ENABLE;


@@ 156,13 156,13 @@ CodecRetCode CodecMAX98090::Start(const CodecParams &param)
        } break;

        case bsp::AudioDevice::OutputPath::LoudspeakerMono: {
            max98090_reg_playback_quick_setup_t q_playback_setup = {0};
            max98090_reg_playback_quick_setup_t q_playback_setup = {};
            q_playback_setup.dig2spk                             = 1;
            i2cAddr.subAddress = MAX98090_REG_PLAYBACK_QUICK_SETUP;
            i2c->Write(i2cAddr, (uint8_t *)&q_playback_setup, 1);

            // Turn off right speaker path
            max98090_reg_outputenable_t outputenable = {0};
            max98090_reg_outputenable_t outputenable = {};
            outputenable.dalen                       = 1;
            outputenable.splen                       = 1;
            i2cAddr.subAddress                       = MAX98090_REG_OUTPUT_ENABLE;


@@ 182,15 182,15 @@ CodecRetCode CodecMAX98090::Start(const CodecParams &param)
        switch (params.inputPath) {

        case bsp::AudioDevice::InputPath::Headphones: {
            max98090_reg_input_to_record_quick_t q_input_setup = {0};
            max98090_reg_input_to_record_quick_t q_input_setup = {};
            q_input_setup.in34dan                              = 1;
            i2cAddr.subAddress                                 = MAX98090_REG_LINE_INPUT_TO_RECORD_QUICK;
            i2c->Write(i2cAddr, (uint8_t *)&q_input_setup, 1);
        } break;

        case bsp::AudioDevice::InputPath::Microphone: {
            max98090_reg_input_to_record_quick_t q_input_setup = {0};
            max98090_reg_digmic_enable_t digena                = {0};
            max98090_reg_input_to_record_quick_t q_input_setup = {};
            max98090_reg_digmic_enable_t digena                = {};

            // Enable left and right digital mic interface
            digena.digmicl = 1;


@@ 240,7 240,7 @@ CodecRetCode CodecMAX98090::Start(const CodecParams &param)
CodecRetCode CodecMAX98090::Pause()
{
    // Turn off device
    max98090_reg_shutdown_t dev_shutdown = {.shdn = 0};
    max98090_reg_shutdown_t dev_shutdown = {};
    i2cAddr.subAddress                   = MAX98090_REG_DEVICE_SHUTDOWN;
    i2c->Write(i2cAddr, (uint8_t *)&dev_shutdown, 1);



@@ 250,7 250,7 @@ CodecRetCode CodecMAX98090::Pause()
CodecRetCode CodecMAX98090::Resume()
{
    // Turn on device
    max98090_reg_shutdown_t dev_shutdown = {.shdn = 1};
    max98090_reg_shutdown_t dev_shutdown = {.unused = 0, .shdn = 1};
    i2cAddr.subAddress                   = MAX98090_REG_DEVICE_SHUTDOWN;
    i2c->Write(i2cAddr, (uint8_t *)&dev_shutdown, 1);



@@ 315,8 315,8 @@ CodecRetCode CodecMAX98090::SetOutputVolume(const float vol)
        // Scale input volume(range 0 - 100) to MAX98090 range(decibels hardcoded as specific hex values)
        constexpr float scale_factor     = .31f * 10.f;
        uint8_t volume                   = static_cast<float>(vol * scale_factor);
        max98090_reg_lhp_vol_ctrl_t lvol = {0};
        max98090_reg_rhp_vol_ctrl_t rvol = {0};
        max98090_reg_lhp_vol_ctrl_t lvol = {};
        max98090_reg_rhp_vol_ctrl_t rvol = {};

        lvol.hplm   = mute;
        rvol.hprm   = mute;


@@ 334,7 334,7 @@ CodecRetCode CodecMAX98090::SetOutputVolume(const float vol)
        // Scale input volume(range 0 - 100) to MAX98090 range(decibels hardcoded as specific hex values)
        constexpr float scale_factor     = .31f * 10.f;
        uint8_t volume                   = static_cast<float>(vol * scale_factor);
        max98090_reg_recv_vol_ctrl_t vol = {0};
        max98090_reg_recv_vol_ctrl_t vol = {};

        vol.rcvlm   = mute;
        vol.rcvlvol = volume;


@@ 349,8 349,8 @@ CodecRetCode CodecMAX98090::SetOutputVolume(const float vol)
        constexpr float scale_factor = .39f * 10.f;
        uint8_t volume               = static_cast<float>(vol * scale_factor) + 0x18;

        max98090_reg_lspk_vol_ctrl_t lvol = {0};
        max98090_reg_rspk_vol_ctrl_t rvol = {0};
        max98090_reg_lspk_vol_ctrl_t lvol = {};
        max98090_reg_rspk_vol_ctrl_t rvol = {};

        lvol.splm   = mute;
        rvol.sprm   = mute;


@@ 381,7 381,7 @@ CodecRetCode CodecMAX98090::SetInputGain(const float gain)
        gainToSet = 10;
    }

    max98090_reg_lrec_dig_gain_t lgain = {0};
    max98090_reg_lrec_dig_gain_t lgain = {};
    lgain.avl                          = 0xF;             // fine gain - 0xF: -12dB
    lgain.avlg                         = gainToSet * 0.7; // coarse gain (0.7 used as scaling factor)



@@ 389,7 389,7 @@ CodecRetCode CodecMAX98090::SetInputGain(const float gain)
    i2c->Write(i2cAddr, (uint8_t *)&lgain, 1);

    // coarse gain - 18dB, fine gain - 0dB
    max98090_reg_rrec_dig_gain_t rgain = {0};
    max98090_reg_rrec_dig_gain_t rgain = {};
    rgain.avr                          = 0xF;             // fine gain - 0xF: -12dB
    rgain.avrg                         = gainToSet * 0.7; // coarse gain (0.7 used as scaling factor)



@@ 426,7 426,7 @@ CodecRetCode CodecMAX98090::WriteFilterCoeff(const float coeff, const uint8_t ba

CodecRetCode CodecMAX98090::MicBias(const bool enable)
{
    max98090_reg_bias_mode_t biasmode = {0};
    max98090_reg_bias_mode_t biasmode = {};
    // BIAS created by bandgap reference
    biasmode.biasmode = 1;



@@ 444,9 444,9 @@ CodecRetCode CodecMAX98090::MicBias(const bool enable)

CodecRetCode CodecMAX98090::SetupEarspeakerEqualizer()
{
    qfilter_coefficients_t band1_filter = {0};
    qfilter_coefficients_t band2_filter = {0};
    qfilter_coefficients_t band3_filter = {0};
    qfilter_coefficients_t band1_filter = {};
    qfilter_coefficients_t band2_filter = {};
    qfilter_coefficients_t band3_filter = {};

    // Highpass,lowpass & flat filters don't use Gain parameter
    qfilter_CalculateCoeffs(FilterHighPass, 800, currentParams.GetSampleRateVal(), 0.707, 1, &band1_filter);


@@ 475,7 475,7 @@ CodecRetCode CodecMAX98090::SetupEarspeakerEqualizer()
    WriteFilterCoeff(band3_filter.a2, 0x70);

    // Enable 3-band filter
    max98090_reg_dsp_biquadfilter_enable_t filter = {0};
    max98090_reg_dsp_biquadfilter_enable_t filter = {};
    filter.eq3banden                              = 1;
    i2cAddr.subAddress                            = MAX98090_REG_DSP_BIQUAD_FILTER_ENABLE;
    i2c->Write(i2cAddr, (uint8_t *)&filter, 1);


@@ 485,9 485,9 @@ CodecRetCode CodecMAX98090::SetupEarspeakerEqualizer()

CodecRetCode CodecMAX98090::SetupLoudspeakerEqualizer()
{
    qfilter_coefficients_t band1_filter = {0};
    qfilter_coefficients_t band2_filter = {0};
    qfilter_coefficients_t band3_filter = {0};
    qfilter_coefficients_t band1_filter = {};
    qfilter_coefficients_t band2_filter = {};
    qfilter_coefficients_t band3_filter = {};

    // Highpass,lowpass & flat filters don't use Gain parameter
    qfilter_CalculateCoeffs(FilterHighPass, 500, currentParams.GetSampleRateVal(), 0.707, 1, &band1_filter);


@@ 516,7 516,7 @@ CodecRetCode CodecMAX98090::SetupLoudspeakerEqualizer()
    WriteFilterCoeff(band3_filter.a2, 0x70);

    // Enable 3-band filter
    max98090_reg_dsp_biquadfilter_enable_t filter = {0};
    max98090_reg_dsp_biquadfilter_enable_t filter = {};
    filter.eq3banden                              = 1;
    i2cAddr.subAddress                            = MAX98090_REG_DSP_BIQUAD_FILTER_ENABLE;
    i2c->Write(i2cAddr, (uint8_t *)&filter, 1);


@@ 528,13 528,13 @@ CodecRetCode CodecMAX98090::Reset()
{

    // Turn off device
    max98090_reg_shutdown_t dev_shutdown = {.shdn = 0};
    max98090_reg_shutdown_t dev_shutdown = {.unused = 0, .shdn = 0};

    i2cAddr.subAddress = MAX98090_REG_DEVICE_SHUTDOWN;
    i2c->Write(i2cAddr, (uint8_t *)&dev_shutdown, 1);

    // Set all registers to default state
    max98090_reg_swreset_t reset = {0};
    max98090_reg_swreset_t reset = {};
    reset.swreset                = 1;
    i2cAddr.subAddress           = MAX98090_REG_SWRESET;
    i2c->Write(i2cAddr, (uint8_t *)&reset, 1);

M module-bsp/board/rt1051/bsp/audio/RT1051Audiocodec.cpp => module-bsp/board/rt1051/bsp/audio/RT1051Audiocodec.cpp +2 -2
@@ 211,7 211,7 @@ namespace bsp

    void RT1051Audiocodec::InStart()
    {
        sai_transfer_format_t sai_format = {0};
        sai_transfer_format_t sai_format = {};

        /* Configure the audio format */
        sai_format.bitWidth           = saiInFormat.bitWidth;


@@ 253,7 253,7 @@ namespace bsp

    void RT1051Audiocodec::OutStart()
    {
        sai_transfer_format_t sai_format = {0};
        sai_transfer_format_t sai_format = {};

        /* Configure the audio format */
        sai_format.bitWidth           = saiOutFormat.bitWidth;

M module-bsp/board/rt1051/bsp/audio/RT1051BluetoothAudio.cpp => module-bsp/board/rt1051/bsp/audio/RT1051BluetoothAudio.cpp +1 -1
@@ 62,7 62,7 @@ namespace bsp
            if (framesFetched == 0) {
                break;
            }
            else if (framesFetched < inst->audioData.data.size()) {
            else if (size_t(framesFetched) < inst->audioData.data.size()) {
                std::fill(inst->audioData.data.begin() + framesFetched, inst->audioData.data.end(), 0);
            }


M module-bsp/board/rt1051/bsp/audio/RT1051CellularAudio.cpp => module-bsp/board/rt1051/bsp/audio/RT1051CellularAudio.cpp +2 -2
@@ 172,7 172,7 @@ namespace bsp

    void RT1051CellularAudio::InStart()
    {
        sai_transfer_format_t sai_format = {0};
        sai_transfer_format_t sai_format = {};

        /* Configure the audio format */
        sai_format.bitWidth           = saiInFormat.bitWidth;


@@ 214,7 214,7 @@ namespace bsp

    void RT1051CellularAudio::OutStart()
    {
        sai_transfer_format_t sai_format = {0};
        sai_transfer_format_t sai_format = {};

        /* Configure the audio format */
        sai_format.bitWidth           = saiOutFormat.bitWidth;

M module-bsp/board/rt1051/bsp/eMMC/fsl_mmc.c => module-bsp/board/rt1051/bsp/eMMC/fsl_mmc.c +20 -12
@@ 54,7 54,7 @@
 * @retval kStatus_SDMMC_TransferFailed Transfer failed.
 * @retval kStatus_Success Operate successfully.
 */
static status_t inline MMC_SelectCard(mmc_card_t *card, bool isSelected);
inline static status_t MMC_SelectCard(mmc_card_t *card, bool isSelected);

/*!
 * @brief Wait write process complete.


@@ 73,7 73,7 @@ static status_t MMC_WaitWriteComplete(mmc_card_t *card);
 * @retval kStatus_SDMMC_TransferFailed Transfer failed.
 * @retval kStatus_Success Operate successfully.
 */
static status_t inline MMC_SetBlockCount(mmc_card_t *card, uint32_t blockCount);
inline static status_t MMC_SetBlockCount(mmc_card_t *card, uint32_t blockCount);

/*!
 * @brief Send GO_IDLE command to reset all cards to idle state


@@ 82,7 82,7 @@ static status_t inline MMC_SetBlockCount(mmc_card_t *card, uint32_t blockCount);
 * @retval kStatus_SDMMC_TransferFailed Transfer failed.
 * @retval kStatus_Success Operate successfully.
 */
static status_t inline MMC_GoIdle(mmc_card_t *card);
inline static status_t MMC_GoIdle(mmc_card_t *card);

/*!
 * @brief Send STOP_TRANSMISSION command to card to stop ongoing data transferring.


@@ 101,7 101,7 @@ static status_t MMC_StopTransmission(mmc_card_t *card);
 * @retval kStatus_SDMMC_TransferFailed Transfer failed.
 * @retval kStatus_Success Operate successfully.
 */
static status_t inline MMC_SetBlockSize(mmc_card_t *card, uint32_t blockSize);
inline static status_t MMC_SetBlockSize(mmc_card_t *card, uint32_t blockSize);

/*!
 * @brief switch voltage.


@@ 203,7 203,7 @@ static status_t MMC_SendExtendedCsd(mmc_card_t *card, uint8_t *targetAddr, uint3
 * @param card Card descriptor.
 * @return The power class switch status.
 */
static status_t MMC_SetPowerClass(mmc_card_t *card);
static status_t MMC_SetPowerClass(mmc_card_t *card) __attribute__((used));

/*!
 * @brief Send test pattern to get the functional pin in the MMC bus


@@ 369,7 369,7 @@ static status_t MMC_CheckEraseGroupRange(mmc_card_t *card, uint32_t startGroup, 
 * @retval kStatus_SDMMC_TuningFail tuning fail.
 * @retval kStatus_SDMMC_TransferFailed transfer fail
 */
static status_t inline MMC_ExecuteTuning(mmc_card_t *card);
inline static status_t MMC_ExecuteTuning(mmc_card_t *card);

/*!
 * @brief Read data from specific MMC card


@@ 420,7 420,6 @@ static status_t MMC_Write(
static status_t MMC_Transfer(mmc_card_t *card, SDMMCHOST_TRANSFER *content, uint32_t retry);

static status_t MMC_SendIdentifyDevice(mmc_card_t *card, uint32_t arg);
static status_t MMC_SwitchToHS(mmc_card_t *card);

/*******************************************************************************
 * Variables


@@ 436,28 435,28 @@ extern uint32_t g_sdmmc[SDK_SIZEALIGN(SDMMC_GLOBAL_BUFFER_SIZE, SDMMC_DATA_BUFFE
/*******************************************************************************
 * Code
 ******************************************************************************/
static status_t inline MMC_SelectCard(mmc_card_t *card, bool isSelected)
inline static status_t MMC_SelectCard(mmc_card_t *card, bool isSelected)
{
    assert(card);

    return SDMMC_SelectCard(card->host.base, card->host.transfer, card->relativeAddress, isSelected);
}

static status_t inline MMC_SetBlockCount(mmc_card_t *card, uint32_t blockCount)
inline static status_t MMC_SetBlockCount(mmc_card_t *card, uint32_t blockCount)
{
    assert(card);

    return SDMMC_SetBlockCount(card->host.base, card->host.transfer, blockCount);
}

static status_t inline MMC_GoIdle(mmc_card_t *card)
inline static status_t MMC_GoIdle(mmc_card_t *card)
{
    assert(card);

    return SDMMC_GoIdle(card->host.base, card->host.transfer);
}

static status_t inline MMC_SetBlockSize(mmc_card_t *card, uint32_t blockSize)
inline static status_t MMC_SetBlockSize(mmc_card_t *card, uint32_t blockSize)
{
    assert(card);



@@ 579,6 578,7 @@ static status_t MMC_StopTransmission(mmc_card_t *card)
    return kStatus_Success;
}

static status_t MMC_SwitchVoltage(mmc_card_t *card, uint32_t *opCode) __attribute__((used));
static status_t MMC_SwitchVoltage(mmc_card_t *card, uint32_t *opCode)
{
    mmc_voltage_window_t tempVoltage = kMMC_VoltageWindowNone;


@@ 663,6 663,7 @@ static status_t MMC_SendIdentifyDevice(mmc_card_t *card, uint32_t arg)
    return kStatus_Success;
}

static status_t MMC_SendOperationCondition(mmc_card_t *card, uint32_t arg) __attribute((used));
static status_t MMC_SendOperationCondition(mmc_card_t *card, uint32_t arg)
{
    assert(card);


@@ 804,6 805,7 @@ static void MMC_DecodeCsd(mmc_card_t *card, uint32_t *rawCsd)
    card->blockSize = FSL_SDMMC_DEFAULT_BLOCK_SIZE;
}

static void MMC_SetMaxFrequency(mmc_card_t *card) __attribute__((used));
static void MMC_SetMaxFrequency(mmc_card_t *card)
{
    assert(card);


@@ 823,6 825,7 @@ static void MMC_SetMaxFrequency(mmc_card_t *card)
    card->busClock_Hz = SDMMCHOST_SET_CARD_CLOCK(card->host.base, card->host.sourceClock_Hz, maxBusClock_Hz);
}

static status_t MMC_SetMaxEraseUnitSize(mmc_card_t *card) __attribute__((used));
static status_t MMC_SetMaxEraseUnitSize(mmc_card_t *card)
{
    assert(card);


@@ 1320,6 1323,7 @@ static status_t MMC_SetMaxDataBusWidth(mmc_card_t *card, mmc_high_speed_timing_t
                return kStatus_SDMMC_SetDataBusWidthFailed;
            }
        }
        __attribute__((fallthrough));
    case kMMC_DataBusWidth4bitDDR:
        if ((SDMMCHOST_NOT_SUPPORT != kSDMMCHOST_Support4BitBusWidth) &&
            (card->flags & (kMMC_SupportHighSpeedDDR52MHZ180V300VFlag | kMMC_SupportHighSpeedDDR52MHZ120VFlag)) &&


@@ 1333,6 1337,7 @@ static status_t MMC_SetMaxDataBusWidth(mmc_card_t *card, mmc_high_speed_timing_t
                break;
            }
        }
        __attribute__((fallthrough));
    case kMMC_DataBusWidth8bit:
        if ((SDMMCHOST_NOT_SUPPORT != kSDMMCHOST_Support8BitBusWidth) &&
            ((targetTiming == kMMC_HighSpeedTiming) || (targetTiming == kMMC_HighSpeed200Timing))) {


@@ 1344,7 1349,7 @@ static status_t MMC_SetMaxDataBusWidth(mmc_card_t *card, mmc_high_speed_timing_t
                break;
            }
        }

        __attribute__((fallthrough));
    case kMMC_DataBusWidth4bit:
        if ((SDMMCHOST_NOT_SUPPORT != kSDMMCHOST_Support4BitBusWidth) &&
            ((targetTiming == kMMC_HighSpeedTiming) || (targetTiming == kMMC_HighSpeed200Timing))) {


@@ 1589,6 1594,7 @@ static status_t MMC_SelectBusTiming(mmc_card_t *card)
    switch (targetTiming) {
    case kMMC_HighSpeedTimingNone:
    case kMMC_HighSpeed400Timing:
        /* fall through */
        if ((card->flags & (kMMC_SupportHS400DDR200MHZ180VFlag | kMMC_SupportHS400DDR200MHZ120VFlag)) &&
            ((kSDMMCHOST_SupportHS400 != SDMMCHOST_NOT_SUPPORT))) {
            /* switch to HS200 perform tuning */


@@ 1601,6 1607,7 @@ static status_t MMC_SelectBusTiming(mmc_card_t *card)
            }
            break;
        }
        __attribute__((fallthrough));
    case kMMC_HighSpeed200Timing:
        if ((card->flags & (kMMC_SupportHS200200MHZ180VFlag | kMMC_SupportHS200200MHZ120VFlag)) &&
            ((kSDMMCHOST_SupportHS200 != SDMMCHOST_NOT_SUPPORT))) {


@@ 1609,6 1616,7 @@ static status_t MMC_SelectBusTiming(mmc_card_t *card)
            }
            break;
        }
        __attribute__((fallthrough));
    case kMMC_HighSpeedTiming:
        if (kStatus_Success != MMC_SwitchToHighSpeed(card)) {
            return kStatus_SDMMC_SwitchBusTimingFailed;

M module-bsp/board/rt1051/bsp/eink/ED028TC1.cpp => module-bsp/board/rt1051/bsp/eink/ED028TC1.cpp +1 -1
@@ 74,7 74,7 @@
//#endif

/// This is DMA handle for internal frame buffer memory-to-memory copying operation
static edma_handle_t s_einkMemcpyDma_handle;
static edma_handle_t s_einkMemcpyDma_handle __attribute__((used));

using namespace drivers;
using namespace magic_enum;

M module-bsp/board/rt1051/bsp/eink/bsp_eink.cpp => module-bsp/board/rt1051/bsp/eink/bsp_eink.cpp +8 -3
@@ 112,6 112,11 @@ static bsp_eink_driver_t BSP_EINK_LPSPI_EdmaDriverState = {
    &BSP_EINK_LPSPI_EdmaHandle,
    nullptr, // will be filled in init function
    nullptr, // will be filled in init function
    0,
    0,
    0,
    SPI_AUTOMATIC_CS,
    EventWaitRegistered,
};

static SemaphoreHandle_t bsp_eink_TransferComplete;


@@ 142,7 147,7 @@ static void s_LPSPI_MasterEdmaCallback(LPSPI_Type *base,
status_t BSP_EinkInit(bsp_eink_BusyEvent event)
{
    bsp_eink_driver_t *lpspi           = &BSP_EINK_LPSPI_EdmaDriverState;
    lpspi_edma_resource_t *dmaResource = lpspi->dmaResource;
    // lpspi_edma_resource_t *dmaResource = lpspi->dmaResource;

    // If was already created - free it
    if (bsp_eink_busySemaphore != NULL) {


@@ 297,7 302,7 @@ status_t BSP_EinkWriteData(void *txBuffer, uint32_t len, eink_spi_cs_config_e cs
    const uint32_t TX_TIMEOUT_MS = 1000;
    status_t tx_status           = 0;
    status_t status;
    lpspi_transfer_t xfer = {0};
    lpspi_transfer_t xfer = {};

    if (cs == SPI_AUTOMATIC_CS) {
        BSP_EinkWriteCS(BSP_Eink_CS_Clr);


@@ 384,7 389,7 @@ status_t BSP_EinkReadData(void *rxBuffer, uint32_t len, eink_spi_cs_config_e cs)
    const int RX_TIMEOUT_MS = 1000;
    status_t tx_status      = 0;
    status_t status;
    lpspi_transfer_t xfer = {0};
    lpspi_transfer_t xfer = {};

    xfer.txData      = NULL;
    xfer.rxData      = (uint8_t *)rxBuffer;

M module-bsp/board/rt1051/bsp/headset/headset.cpp => module-bsp/board/rt1051/bsp/headset/headset.cpp +3 -2
@@ 37,7 37,8 @@ namespace bsp

        static std::shared_ptr<drivers::DriverI2C> i2c;
        static std::shared_ptr<drivers::DriverGPIO> gpio;
        static drivers::I2CAddress i2cAddr = {.deviceAddress = HEADSET_I2C_ADDR, .subAddressSize = 0x01};
        static drivers::I2CAddress i2cAddr = {
            .deviceAddress = HEADSET_I2C_ADDR, .subAddress = 0, .subAddressSize = 0x01};
        static TimerHandle_t timerHandle;

        static xQueueHandle qHandleIrq = nullptr;


@@ 50,7 51,7 @@ namespace bsp
            bool ret = false;

            i2cAddr.subAddress = HEADSET_INT_REG_ADDR;
            auto err           = i2c->Read(i2cAddr, (uint8_t *)&reg, 1);
            i2c->Read(i2cAddr, (uint8_t *)&reg, 1);

            i2cAddr.subAddress = HEADSET_DET_RES_ADDR;
            i2c->Read(i2cAddr, (uint8_t *)&reg, 1);

M module-bsp/board/rt1051/bsp/keyboard/keyboard.cpp => module-bsp/board/rt1051/bsp/keyboard/keyboard.cpp +2 -2
@@ 26,8 26,8 @@ namespace bsp
    using namespace drivers;

    static std::shared_ptr<drivers::DriverI2C> i2c;
    static drivers::I2CAddress i2cAddr = {.deviceAddress  = TCA8418_I2C_ADDRESS,
                                          .subAddressSize = TCA8418_I2C_ADDRESS_SIZE};
    static drivers::I2CAddress i2cAddr = {
        .deviceAddress = TCA8418_I2C_ADDRESS, .subAddress = 0, .subAddressSize = TCA8418_I2C_ADDRESS_SIZE};
    static std::shared_ptr<DriverGPIO> gpio;

#define KEYBOARD_CONTACT_OSCILLATION_TIMEOUT_MS 20

M module-bsp/board/rt1051/bsp/keypad_backlight/keypad_backlight.cpp => module-bsp/board/rt1051/bsp/keypad_backlight/keypad_backlight.cpp +2 -1
@@ 24,7 24,8 @@ namespace bsp::keypad_backlight

        std::shared_ptr<drivers::DriverI2C> i2c;

        drivers::I2CAddress addr = {.deviceAddress = static_cast<uint32_t>(LP55281_DEVICE_ADDR), .subAddressSize = 1};
        drivers::I2CAddress addr = {
            .deviceAddress = static_cast<uint32_t>(LP55281_DEVICE_ADDR), .subAddress = 0, .subAddressSize = 1};

        constexpr std::array<LP55281_Registers, 4> usedOutputs = {LP55281_Registers::RED2,    // Red right button
                                                                  LP55281_Registers::GREEN3,  // Green left button

M module-bsp/board/rt1051/bsp/light_sensor/light_sensor.cpp => module-bsp/board/rt1051/bsp/light_sensor/light_sensor.cpp +3 -1
@@ 18,7 18,8 @@ namespace bsp::light_sensor
        std::shared_ptr<drivers::DriverI2C> i2c;
        xQueueHandle qHandleIrq = nullptr;

        drivers::I2CAddress addr = {.deviceAddress = static_cast<uint32_t>(LTR303ALS_DEVICE_ADDR), .subAddressSize = 1};
        drivers::I2CAddress addr = {
            .deviceAddress = static_cast<uint32_t>(LTR303ALS_DEVICE_ADDR), .subAddress = 0, .subAddressSize = 1};

        bool writeSingleRegister(std::uint32_t address, std::uint8_t *to_send)
        {


@@ 43,6 44,7 @@ namespace bsp::light_sensor
        constexpr inline std::uint16_t irqLevelUp  = 0xffff;
        constexpr inline std::uint16_t irqLevelLow = 0;

        void configureInterrupts() __attribute__((used));
        void configureInterrupts()
        {
            // Has to be done before sensor active mode

M module-bsp/board/rt1051/bsp/magnetometer/magnetometer.cpp => module-bsp/board/rt1051/bsp/magnetometer/magnetometer.cpp +5 -4
@@ 18,7 18,7 @@ using namespace utils;

static std::shared_ptr<drivers::DriverI2C> i2c;

static I2CAddress addr = {.deviceAddress = als31300::I2C_ADDRESS, .subAddressSize = 1};
static I2CAddress addr = {.deviceAddress = als31300::I2C_ADDRESS, .subAddress = 0, .subAddressSize = 1};

union i2c_buf_t
{


@@ 161,9 161,10 @@ namespace bsp

            // INTERRUPT PIN
            gpio->ClearPortInterrupts(1 << static_cast<uint32_t>(BoardDefinitions::MAGNETOMETER_IRQ));
            gpio->ConfPin(DriverGPIOPinParams{.dir     = DriverGPIOPinParams::Direction::Input,
                                              .irqMode = DriverGPIOPinParams::InterruptMode::IntFallingEdge,
                                              .pin     = static_cast<uint32_t>(BoardDefinitions::MAGNETOMETER_IRQ)});
            gpio->ConfPin(DriverGPIOPinParams{.dir      = DriverGPIOPinParams::Direction::Input,
                                              .irqMode  = DriverGPIOPinParams::InterruptMode::IntFallingEdge,
                                              .defLogic = 0,
                                              .pin      = static_cast<uint32_t>(BoardDefinitions::MAGNETOMETER_IRQ)});
            // NOTE: irq not yet enabled
            // this version uses timer to poll the sensor
            // the timer requests to read the magnetometer periodically

M module-bsp/board/rt1051/bsp/torch/torch.cpp => module-bsp/board/rt1051/bsp/torch/torch.cpp +1 -1
@@ 20,7 20,7 @@ namespace bsp
    {
        static xQueueHandle qHandleIrq = NULL;

        static I2CAddress addr = {.deviceAddress = 0x63, .subAddressSize = 1};
        static I2CAddress addr = {.deviceAddress = 0x63, .subAddress = 0, .subAddressSize = 1};

        std::shared_ptr<DriverGPIO> gpio;
        const unsigned short max_current_mA = 150;

M module-bsp/board/rt1051/bsp/usb => module-bsp/board/rt1051/bsp/usb +1 -1
@@ 1,1 1,1 @@
Subproject commit eb51f90b7cda303581e94d548c75bfbdda457df8
Subproject commit bd86bc1e7f464b81746bee08997f8f7adefb99d7

M module-bsp/board/rt1051/common/clock_config.cpp => module-bsp/board/rt1051/common/clock_config.cpp +1 -0
@@ 971,6 971,7 @@ void clkPLL4setup(uint8_t enabled)
        .postDivider = 1,   /* Divider after the PLL, should only be 1, 2, 4, 8, 16. */
        .numerator   = 77,  /* 30 bit numerator of fractional loop divider. */
        .denominator = 100, /* 30 bit denominator of fractional loop divider */
        .src         = 0,
    };
    if (enabled) {
        CLOCK_InitAudioPll(&audioPllConfig_BOARD_BootClockRUN);

M module-bsp/board/rt1051/common/startup_mimxrt1052.cpp => module-bsp/board/rt1051/common/startup_mimxrt1052.cpp +1 -1
@@ 1061,7 1061,7 @@ extern "C"
    WEAK_AV void HardFault_Handler_C(syslog_exception_stack_frame_t *frame __attribute__((unused)),
                                     uint32_t lr_value __attribute__((unused)))
    {
        static syslog_t syslog     = {0};
        static syslog_t syslog     = {};
        syslog.stackFrame          = *frame;
        syslog.registers.hfsr.all  = SCB->HFSR;
        syslog.registers.cfsr.all  = SCB->CFSR;

M module-bsp/board/rt1051/drivers/RT1051DriverDMA.cpp => module-bsp/board/rt1051/drivers/RT1051DriverDMA.cpp +5 -1
@@ 29,12 29,14 @@ namespace drivers
        switch (instance) {
        case DMAInstances::DMA_0: {
            base                    = DMA0;
            edma_config_t dmaConfig = {0};
            edma_config_t dmaConfig = {};

            EDMA_GetDefaultConfig(&dmaConfig);
            EDMA_Init(base, &dmaConfig);
            LOG_DEBUG("Init: DMA_0");
        } break;
        default:
            break;
        }
    }



@@ 44,6 46,8 @@ namespace drivers
        case DMAInstances::DMA_0:
            EDMA_Deinit(base);
            LOG_DEBUG("Deinit: DMA_0");
        default:
            break;
        }
    }


M module-bsp/board/rt1051/drivers/RT1051DriverDMAMux.cpp => module-bsp/board/rt1051/drivers/RT1051DriverDMAMux.cpp +5 -1
@@ 17,6 17,8 @@ namespace drivers
            DMAMUX_Init(base);
            LOG_DEBUG("Init: DMAMUX0");
        } break;
        default:
            break;
        }
    }



@@ 30,6 32,8 @@ namespace drivers
            DMAMUX_Deinit(DMAMUX);
            LOG_DEBUG("Deinit DMAMUX0");
        } break;
        default:
            break;
        }
    }



@@ 62,4 66,4 @@ namespace drivers
        }
    }

} // namespace drivers
\ No newline at end of file
} // namespace drivers

M module-bsp/board/rt1051/drivers/RT1051DriverGPIO.cpp => module-bsp/board/rt1051/drivers/RT1051DriverGPIO.cpp +2 -0
@@ 35,6 35,8 @@ namespace drivers
            base = GPIO5;
            name = "GPIO_5";
        } break;
        default:
            break;
        }

        LOG_DEBUG("Init: %s", name.c_str());

M module-bsp/board/rt1051/drivers/RT1051DriverI2C.cpp => module-bsp/board/rt1051/drivers/RT1051DriverI2C.cpp +5 -1
@@ 11,7 11,7 @@ namespace drivers
    RT1051DriverI2C::RT1051DriverI2C(const I2CInstances inst, const DriverI2CParams &params) : DriverI2C(params, inst)
    {

        lpi2c_master_config_t lpi2cConfig = {0};
        lpi2c_master_config_t lpi2cConfig = {};

        switch (instance) {
        case I2CInstances ::I2C1:


@@ 22,6 22,8 @@ namespace drivers
            base = LPI2C2;
            LOG_DEBUG("Init: I2C2");
            break;
        default:
            break;
        }
        LPI2C_MasterGetDefaultConfig(&lpi2cConfig);
        LPI2C_MasterInit(base, &lpi2cConfig, GetPerphSourceClock(PerphClock_I2C));


@@ 36,6 38,8 @@ namespace drivers
        case I2CInstances ::I2C2:
            LOG_DEBUG("Deinit: I2C2");
            break;
        default:
            break;
        }
        LPI2C_MasterDeinit(base);
    }

M module-bsp/board/rt1051/drivers/RT1051DriverPLL.cpp => module-bsp/board/rt1051/drivers/RT1051DriverPLL.cpp +4 -0
@@ 44,6 44,8 @@ namespace drivers
        case PLLInstances::OSC_24M: {
            // not used
        } break;
        default:
            break;
        }
        LOG_DEBUG("Init: %s", name.c_str());
    }


@@ 75,6 77,8 @@ namespace drivers
        case PLLInstances::OSC_24M: {
            // not used
        } break;
        default:
            break;
        }

        LOG_DEBUG("Deinit: %s", name.c_str());

M module-bsp/board/rt1051/drivers/RT1051DriverPWM.cpp => module-bsp/board/rt1051/drivers/RT1051DriverPWM.cpp +5 -1
@@ 12,7 12,7 @@ namespace drivers
        : DriverPWM(inst, mod, params)
    {

        pwm_config_t pwmConfig = {0};
        pwm_config_t pwmConfig = {};

        switch (instance) {
        case PWMInstances::PWM_1:


@@ 31,6 31,8 @@ namespace drivers
            base = PWM4;
            LOG_DEBUG("Init: PWM4");
            break;
        default:
            break;
        }

        switch (module) {


@@ 50,6 52,8 @@ namespace drivers
            pwmModule = kPWM_Module_3;
            LOG_DEBUG("Init: PWM module 3");
            break;
        default:
            break;
        }

        PWM_GetDefaultConfig(&pwmConfig);