mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #12394 from miteshdedhia7/pr/bug-fix-misc
Fix SDIO communication issue on Cypress 1M boards and other minor fixespull/12405/head
commit
88438dfd6c
|
@ -250,7 +250,9 @@ nsapi_error_t WhdSTAInterface::connect()
|
|||
|
||||
// initialize wiced, this is noop if already init
|
||||
if (!_whd_emac.powered_up) {
|
||||
_whd_emac.power_up();
|
||||
if(!_whd_emac.power_up()) {
|
||||
return NSAPI_ERROR_DEVICE_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
res = whd_management_set_event_handler(_whd_emac.ifp, sta_link_change_events,
|
||||
|
@ -322,7 +324,9 @@ nsapi_error_t WhdSTAInterface::connect()
|
|||
void WhdSTAInterface::wifi_on()
|
||||
{
|
||||
if (!_whd_emac.powered_up) {
|
||||
_whd_emac.power_up();
|
||||
if(!_whd_emac.power_up()) {
|
||||
CY_ASSERT(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -384,11 +388,14 @@ int8_t WhdSTAInterface::get_rssi()
|
|||
|
||||
// initialize wiced, this is noop if already init
|
||||
if (!_whd_emac.powered_up) {
|
||||
_whd_emac.power_up();
|
||||
if(!_whd_emac.power_up()) {
|
||||
CY_ASSERT(false);
|
||||
}
|
||||
}
|
||||
|
||||
res = (whd_result_t)whd_wifi_get_rssi(_whd_emac.ifp, &rssi);
|
||||
if (res != 0) {
|
||||
CY_ASSERT(false);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -463,7 +470,9 @@ int WhdSTAInterface::internal_scan(WiFiAccessPoint *aps, unsigned count, scan_re
|
|||
|
||||
// initialize wiced, this is noop if already init
|
||||
if (!_whd_emac.powered_up) {
|
||||
_whd_emac.power_up();
|
||||
if(!_whd_emac.power_up()) {
|
||||
return NSAPI_ERROR_DEVICE_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
interal_scan_data.sema = new Semaphore();
|
||||
|
@ -476,7 +485,6 @@ int WhdSTAInterface::internal_scan(WiFiAccessPoint *aps, unsigned count, scan_re
|
|||
whd_result_t whd_res;
|
||||
int res;
|
||||
|
||||
|
||||
whd_res = (whd_result_t)whd_wifi_scan(_whd_emac.ifp, WHD_SCAN_TYPE_ACTIVE, WHD_BSS_TYPE_ANY,
|
||||
NULL, NULL, NULL, NULL, whd_scan_handler, &internal_scan_result, &interal_scan_data);
|
||||
if (whd_res != WHD_SUCCESS) {
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*
|
||||
********************************************************************************
|
||||
* \copyright
|
||||
* Copyright 2016-2019 Cypress Semiconductor Corporation
|
||||
* Copyright 2016-2020 Cypress Semiconductor Corporation
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
@ -111,7 +111,7 @@ cy_en_syspm_status_t SDIO_DeepSleepCallback(cy_stc_syspm_callback_params_t *para
|
|||
CY_UNUSED_PARAMETER(params);
|
||||
cy_en_syspm_status_t status = CY_SYSPM_FAIL;
|
||||
|
||||
switch (mode)
|
||||
switch (mode)
|
||||
{
|
||||
case CY_SYSPM_CHECK_READY:
|
||||
case CY_SYSPM_CHECK_FAIL:
|
||||
|
@ -656,7 +656,7 @@ en_sdio_result_t SDIO_SendCommandAndWait(stc_sdio_cmd_t *pstcCmd)
|
|||
cy_rslt_t result;
|
||||
|
||||
/* Initialize the semaphore. This is not done in init because init is called
|
||||
* in interrupt thread. cy_rtos_init_semaphore call is prohibited in
|
||||
* in interrupt thread. cy_rtos_init_semaphore call is prohibited in
|
||||
* interrupt thread.
|
||||
*/
|
||||
if(!sema_initialized)
|
||||
|
@ -770,16 +770,16 @@ en_sdio_result_t SDIO_SendCommandAndWait(stc_sdio_cmd_t *pstcCmd)
|
|||
|
||||
#ifdef CY_RTOS_AWARE
|
||||
/* Wait for the transfer to finish.
|
||||
* Acquire semaphore and wait until it will be released
|
||||
* Acquire semaphore and wait until it will be released
|
||||
* in SDIO_IRQ:
|
||||
* 1. sdio_transfer_finished_semaphore count is equal to
|
||||
* zero. cy_rtos_get_semaphore waits until semaphore
|
||||
* count is increased by cy_rtos_set_semaphore() in
|
||||
* 1. sdio_transfer_finished_semaphore count is equal to
|
||||
* zero. cy_rtos_get_semaphore waits until semaphore
|
||||
* count is increased by cy_rtos_set_semaphore() in
|
||||
* SDIO_IRQ.
|
||||
* 2. The cy_rtos_set_semaphore() increases
|
||||
* 2. The cy_rtos_set_semaphore() increases
|
||||
* sdio_transfer_finished_semaphore count.
|
||||
* 3. The cy_rtos_get_semaphore() function decreases
|
||||
* sdio_transfer_finished_semaphore back to zero
|
||||
* 3. The cy_rtos_get_semaphore() function decreases
|
||||
* sdio_transfer_finished_semaphore back to zero
|
||||
* and exit. Or timeout occurs
|
||||
*/
|
||||
result = cy_rtos_get_semaphore( &sdio_transfer_finished_semaphore, 10, false );
|
||||
|
@ -1080,7 +1080,12 @@ void SDIO_DisableSdClk(void)
|
|||
void SDIO_SetSdClkFrequency(uint32_t u32SdClkFreqHz)
|
||||
{
|
||||
uint16_t u16Div;
|
||||
u16Div = Cy_SysClk_ClkPeriGetFrequency() / u32SdClkFreqHz;
|
||||
/*
|
||||
* The UDB SDIO implemenation has a extra divider internally that divides the input clock to the UDB
|
||||
* by 2. The desired clock frequency is hence intentionally multiplied by 2 in order to get the required
|
||||
* SDIO operating frequency.
|
||||
*/
|
||||
u16Div = Cy_SysClk_ClkPeriGetFrequency() / (2 * u32SdClkFreqHz);
|
||||
Cy_SysClk_PeriphSetDivider(SDIO_HOST_Internal_Clock_DIV_TYPE, SDIO_HOST_Internal_Clock_DIV_NUM, (u16Div-1));
|
||||
}
|
||||
|
||||
|
@ -1247,10 +1252,10 @@ void SDIO_IRQ(void)
|
|||
{
|
||||
pfnCardInt_count++;
|
||||
}
|
||||
|
||||
|
||||
/* Execute card interrupt callback if neccesary */
|
||||
if (0 != pfnCardInt_count)
|
||||
{
|
||||
{
|
||||
if (NULL != gstcInternalData.pstcCallBacks.pfnCardIntCb)
|
||||
{
|
||||
gstcInternalData.pstcCallBacks.pfnCardIntCb();
|
||||
|
@ -1277,7 +1282,7 @@ void SDIO_IRQ(void)
|
|||
/* CRC was bad, set the flag */
|
||||
gstcInternalData.stcEvents.u8CRCError++;
|
||||
}
|
||||
|
||||
|
||||
/* Set the done flag */
|
||||
|
||||
#ifdef CY_RTOS_AWARE
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*
|
||||
********************************************************************************
|
||||
* \copyright
|
||||
* Copyright 2016-2019 Cypress Semiconductor Corporation
|
||||
* Copyright 2016-2020 Cypress Semiconductor Corporation
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*
|
||||
********************************************************************************
|
||||
* \copyright
|
||||
* Copyright 2016-2019 Cypress Semiconductor Corporation
|
||||
* Copyright 2016-2020 Cypress Semiconductor Corporation
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*
|
||||
********************************************************************************
|
||||
* \copyright
|
||||
* Copyright 2016-2019 Cypress Semiconductor Corporation
|
||||
* Copyright 2016-2020 Cypress Semiconductor Corporation
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*
|
||||
********************************************************************************
|
||||
* \copyright
|
||||
* Copyright 2016-2019 Cypress Semiconductor Corporation
|
||||
* Copyright 2016-2020 Cypress Semiconductor Corporation
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
@ -111,7 +111,7 @@ cy_en_syspm_status_t SDIO_DeepSleepCallback(cy_stc_syspm_callback_params_t *para
|
|||
CY_UNUSED_PARAMETER(params);
|
||||
cy_en_syspm_status_t status = CY_SYSPM_FAIL;
|
||||
|
||||
switch (mode)
|
||||
switch (mode)
|
||||
{
|
||||
case CY_SYSPM_CHECK_READY:
|
||||
case CY_SYSPM_CHECK_FAIL:
|
||||
|
@ -656,7 +656,7 @@ en_sdio_result_t SDIO_SendCommandAndWait(stc_sdio_cmd_t *pstcCmd)
|
|||
cy_rslt_t result;
|
||||
|
||||
/* Initialize the semaphore. This is not done in init because init is called
|
||||
* in interrupt thread. cy_rtos_init_semaphore call is prohibited in
|
||||
* in interrupt thread. cy_rtos_init_semaphore call is prohibited in
|
||||
* interrupt thread.
|
||||
*/
|
||||
if(!sema_initialized)
|
||||
|
@ -770,16 +770,16 @@ en_sdio_result_t SDIO_SendCommandAndWait(stc_sdio_cmd_t *pstcCmd)
|
|||
|
||||
#ifdef CY_RTOS_AWARE
|
||||
/* Wait for the transfer to finish.
|
||||
* Acquire semaphore and wait until it will be released
|
||||
* Acquire semaphore and wait until it will be released
|
||||
* in SDIO_IRQ:
|
||||
* 1. sdio_transfer_finished_semaphore count is equal to
|
||||
* zero. cy_rtos_get_semaphore waits until semaphore
|
||||
* count is increased by cy_rtos_set_semaphore() in
|
||||
* 1. sdio_transfer_finished_semaphore count is equal to
|
||||
* zero. cy_rtos_get_semaphore waits until semaphore
|
||||
* count is increased by cy_rtos_set_semaphore() in
|
||||
* SDIO_IRQ.
|
||||
* 2. The cy_rtos_set_semaphore() increases
|
||||
* 2. The cy_rtos_set_semaphore() increases
|
||||
* sdio_transfer_finished_semaphore count.
|
||||
* 3. The cy_rtos_get_semaphore() function decreases
|
||||
* sdio_transfer_finished_semaphore back to zero
|
||||
* 3. The cy_rtos_get_semaphore() function decreases
|
||||
* sdio_transfer_finished_semaphore back to zero
|
||||
* and exit. Or timeout occurs
|
||||
*/
|
||||
result = cy_rtos_get_semaphore( &sdio_transfer_finished_semaphore, 10, false );
|
||||
|
@ -1080,7 +1080,12 @@ void SDIO_DisableSdClk(void)
|
|||
void SDIO_SetSdClkFrequency(uint32_t u32SdClkFreqHz)
|
||||
{
|
||||
uint16_t u16Div;
|
||||
u16Div = Cy_SysClk_ClkPeriGetFrequency() / u32SdClkFreqHz;
|
||||
/*
|
||||
* The UDB SDIO implemenation has a extra divider internally that divides the input clock to the UDB
|
||||
* by 2. The desired clock frequency is hence intentionally multiplied by 2 in order to get the required
|
||||
* SDIO operating frequency.
|
||||
*/
|
||||
u16Div = Cy_SysClk_ClkPeriGetFrequency() / (2 * u32SdClkFreqHz);
|
||||
Cy_SysClk_PeriphSetDivider(SDIO_HOST_Internal_Clock_DIV_TYPE, SDIO_HOST_Internal_Clock_DIV_NUM, (u16Div-1));
|
||||
}
|
||||
|
||||
|
@ -1247,10 +1252,10 @@ void SDIO_IRQ(void)
|
|||
{
|
||||
pfnCardInt_count++;
|
||||
}
|
||||
|
||||
|
||||
/* Execute card interrupt callback if neccesary */
|
||||
if (0 != pfnCardInt_count)
|
||||
{
|
||||
{
|
||||
if (NULL != gstcInternalData.pstcCallBacks.pfnCardIntCb)
|
||||
{
|
||||
gstcInternalData.pstcCallBacks.pfnCardIntCb();
|
||||
|
@ -1277,7 +1282,7 @@ void SDIO_IRQ(void)
|
|||
/* CRC was bad, set the flag */
|
||||
gstcInternalData.stcEvents.u8CRCError++;
|
||||
}
|
||||
|
||||
|
||||
/* Set the done flag */
|
||||
|
||||
#ifdef CY_RTOS_AWARE
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*
|
||||
********************************************************************************
|
||||
* \copyright
|
||||
* Copyright 2016-2019 Cypress Semiconductor Corporation
|
||||
* Copyright 2016-2020 Cypress Semiconductor Corporation
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*
|
||||
********************************************************************************
|
||||
* \copyright
|
||||
* Copyright 2016-2019 Cypress Semiconductor Corporation
|
||||
* Copyright 2016-2020 Cypress Semiconductor Corporation
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*
|
||||
********************************************************************************
|
||||
* \copyright
|
||||
* Copyright 2016-2019 Cypress Semiconductor Corporation
|
||||
* Copyright 2016-2020 Cypress Semiconductor Corporation
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*
|
||||
********************************************************************************
|
||||
* \copyright
|
||||
* Copyright 2016-2019 Cypress Semiconductor Corporation
|
||||
* Copyright 2016-2020 Cypress Semiconductor Corporation
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
@ -111,7 +111,7 @@ cy_en_syspm_status_t SDIO_DeepSleepCallback(cy_stc_syspm_callback_params_t *para
|
|||
CY_UNUSED_PARAMETER(params);
|
||||
cy_en_syspm_status_t status = CY_SYSPM_FAIL;
|
||||
|
||||
switch (mode)
|
||||
switch (mode)
|
||||
{
|
||||
case CY_SYSPM_CHECK_READY:
|
||||
case CY_SYSPM_CHECK_FAIL:
|
||||
|
@ -656,7 +656,7 @@ en_sdio_result_t SDIO_SendCommandAndWait(stc_sdio_cmd_t *pstcCmd)
|
|||
cy_rslt_t result;
|
||||
|
||||
/* Initialize the semaphore. This is not done in init because init is called
|
||||
* in interrupt thread. cy_rtos_init_semaphore call is prohibited in
|
||||
* in interrupt thread. cy_rtos_init_semaphore call is prohibited in
|
||||
* interrupt thread.
|
||||
*/
|
||||
if(!sema_initialized)
|
||||
|
@ -770,16 +770,16 @@ en_sdio_result_t SDIO_SendCommandAndWait(stc_sdio_cmd_t *pstcCmd)
|
|||
|
||||
#ifdef CY_RTOS_AWARE
|
||||
/* Wait for the transfer to finish.
|
||||
* Acquire semaphore and wait until it will be released
|
||||
* Acquire semaphore and wait until it will be released
|
||||
* in SDIO_IRQ:
|
||||
* 1. sdio_transfer_finished_semaphore count is equal to
|
||||
* zero. cy_rtos_get_semaphore waits until semaphore
|
||||
* count is increased by cy_rtos_set_semaphore() in
|
||||
* 1. sdio_transfer_finished_semaphore count is equal to
|
||||
* zero. cy_rtos_get_semaphore waits until semaphore
|
||||
* count is increased by cy_rtos_set_semaphore() in
|
||||
* SDIO_IRQ.
|
||||
* 2. The cy_rtos_set_semaphore() increases
|
||||
* 2. The cy_rtos_set_semaphore() increases
|
||||
* sdio_transfer_finished_semaphore count.
|
||||
* 3. The cy_rtos_get_semaphore() function decreases
|
||||
* sdio_transfer_finished_semaphore back to zero
|
||||
* 3. The cy_rtos_get_semaphore() function decreases
|
||||
* sdio_transfer_finished_semaphore back to zero
|
||||
* and exit. Or timeout occurs
|
||||
*/
|
||||
result = cy_rtos_get_semaphore( &sdio_transfer_finished_semaphore, 10, false );
|
||||
|
@ -1080,7 +1080,12 @@ void SDIO_DisableSdClk(void)
|
|||
void SDIO_SetSdClkFrequency(uint32_t u32SdClkFreqHz)
|
||||
{
|
||||
uint16_t u16Div;
|
||||
u16Div = Cy_SysClk_ClkPeriGetFrequency() / u32SdClkFreqHz;
|
||||
/*
|
||||
* The UDB SDIO implemenation has a extra divider internally that divides the input clock to the UDB
|
||||
* by 2. The desired clock frequency is hence intentionally multiplied by 2 in order to get the required
|
||||
* SDIO operating frequency.
|
||||
*/
|
||||
u16Div = Cy_SysClk_ClkPeriGetFrequency() / (2 * u32SdClkFreqHz);
|
||||
Cy_SysClk_PeriphSetDivider(SDIO_HOST_Internal_Clock_DIV_TYPE, SDIO_HOST_Internal_Clock_DIV_NUM, (u16Div-1));
|
||||
}
|
||||
|
||||
|
@ -1247,10 +1252,10 @@ void SDIO_IRQ(void)
|
|||
{
|
||||
pfnCardInt_count++;
|
||||
}
|
||||
|
||||
|
||||
/* Execute card interrupt callback if neccesary */
|
||||
if (0 != pfnCardInt_count)
|
||||
{
|
||||
{
|
||||
if (NULL != gstcInternalData.pstcCallBacks.pfnCardIntCb)
|
||||
{
|
||||
gstcInternalData.pstcCallBacks.pfnCardIntCb();
|
||||
|
@ -1277,7 +1282,7 @@ void SDIO_IRQ(void)
|
|||
/* CRC was bad, set the flag */
|
||||
gstcInternalData.stcEvents.u8CRCError++;
|
||||
}
|
||||
|
||||
|
||||
/* Set the done flag */
|
||||
|
||||
#ifdef CY_RTOS_AWARE
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*
|
||||
********************************************************************************
|
||||
* \copyright
|
||||
* Copyright 2016-2019 Cypress Semiconductor Corporation
|
||||
* Copyright 2016-2020 Cypress Semiconductor Corporation
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*
|
||||
********************************************************************************
|
||||
* \copyright
|
||||
* Copyright 2016-2019 Cypress Semiconductor Corporation
|
||||
* Copyright 2016-2020 Cypress Semiconductor Corporation
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*
|
||||
********************************************************************************
|
||||
* \copyright
|
||||
* Copyright 2016-2019 Cypress Semiconductor Corporation
|
||||
* Copyright 2016-2020 Cypress Semiconductor Corporation
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*
|
||||
********************************************************************************
|
||||
* \copyright
|
||||
* Copyright 2016-2019 Cypress Semiconductor Corporation
|
||||
* Copyright 2016-2020 Cypress Semiconductor Corporation
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
@ -111,7 +111,7 @@ cy_en_syspm_status_t SDIO_DeepSleepCallback(cy_stc_syspm_callback_params_t *para
|
|||
CY_UNUSED_PARAMETER(params);
|
||||
cy_en_syspm_status_t status = CY_SYSPM_FAIL;
|
||||
|
||||
switch (mode)
|
||||
switch (mode)
|
||||
{
|
||||
case CY_SYSPM_CHECK_READY:
|
||||
case CY_SYSPM_CHECK_FAIL:
|
||||
|
@ -656,7 +656,7 @@ en_sdio_result_t SDIO_SendCommandAndWait(stc_sdio_cmd_t *pstcCmd)
|
|||
cy_rslt_t result;
|
||||
|
||||
/* Initialize the semaphore. This is not done in init because init is called
|
||||
* in interrupt thread. cy_rtos_init_semaphore call is prohibited in
|
||||
* in interrupt thread. cy_rtos_init_semaphore call is prohibited in
|
||||
* interrupt thread.
|
||||
*/
|
||||
if(!sema_initialized)
|
||||
|
@ -770,16 +770,16 @@ en_sdio_result_t SDIO_SendCommandAndWait(stc_sdio_cmd_t *pstcCmd)
|
|||
|
||||
#ifdef CY_RTOS_AWARE
|
||||
/* Wait for the transfer to finish.
|
||||
* Acquire semaphore and wait until it will be released
|
||||
* Acquire semaphore and wait until it will be released
|
||||
* in SDIO_IRQ:
|
||||
* 1. sdio_transfer_finished_semaphore count is equal to
|
||||
* zero. cy_rtos_get_semaphore waits until semaphore
|
||||
* count is increased by cy_rtos_set_semaphore() in
|
||||
* 1. sdio_transfer_finished_semaphore count is equal to
|
||||
* zero. cy_rtos_get_semaphore waits until semaphore
|
||||
* count is increased by cy_rtos_set_semaphore() in
|
||||
* SDIO_IRQ.
|
||||
* 2. The cy_rtos_set_semaphore() increases
|
||||
* 2. The cy_rtos_set_semaphore() increases
|
||||
* sdio_transfer_finished_semaphore count.
|
||||
* 3. The cy_rtos_get_semaphore() function decreases
|
||||
* sdio_transfer_finished_semaphore back to zero
|
||||
* 3. The cy_rtos_get_semaphore() function decreases
|
||||
* sdio_transfer_finished_semaphore back to zero
|
||||
* and exit. Or timeout occurs
|
||||
*/
|
||||
result = cy_rtos_get_semaphore( &sdio_transfer_finished_semaphore, 10, false );
|
||||
|
@ -1080,7 +1080,12 @@ void SDIO_DisableSdClk(void)
|
|||
void SDIO_SetSdClkFrequency(uint32_t u32SdClkFreqHz)
|
||||
{
|
||||
uint16_t u16Div;
|
||||
u16Div = Cy_SysClk_ClkPeriGetFrequency() / u32SdClkFreqHz;
|
||||
/*
|
||||
* The UDB SDIO implemenation has a extra divider internally that divides the input clock to the UDB
|
||||
* by 2. The desired clock frequency is hence intentionally multiplied by 2 in order to get the required
|
||||
* SDIO operating frequency.
|
||||
*/
|
||||
u16Div = Cy_SysClk_ClkPeriGetFrequency() / (2 * u32SdClkFreqHz);
|
||||
Cy_SysClk_PeriphSetDivider(SDIO_HOST_Internal_Clock_DIV_TYPE, SDIO_HOST_Internal_Clock_DIV_NUM, (u16Div-1));
|
||||
}
|
||||
|
||||
|
@ -1247,10 +1252,10 @@ void SDIO_IRQ(void)
|
|||
{
|
||||
pfnCardInt_count++;
|
||||
}
|
||||
|
||||
|
||||
/* Execute card interrupt callback if neccesary */
|
||||
if (0 != pfnCardInt_count)
|
||||
{
|
||||
{
|
||||
if (NULL != gstcInternalData.pstcCallBacks.pfnCardIntCb)
|
||||
{
|
||||
gstcInternalData.pstcCallBacks.pfnCardIntCb();
|
||||
|
@ -1277,7 +1282,7 @@ void SDIO_IRQ(void)
|
|||
/* CRC was bad, set the flag */
|
||||
gstcInternalData.stcEvents.u8CRCError++;
|
||||
}
|
||||
|
||||
|
||||
/* Set the done flag */
|
||||
|
||||
#ifdef CY_RTOS_AWARE
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
*
|
||||
********************************************************************************
|
||||
* \copyright
|
||||
* Copyright 2016-2019 Cypress Semiconductor Corporation
|
||||
* Copyright 2016-2020 Cypress Semiconductor Corporation
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*
|
||||
********************************************************************************
|
||||
* \copyright
|
||||
* Copyright 2016-2019 Cypress Semiconductor Corporation
|
||||
* Copyright 2016-2020 Cypress Semiconductor Corporation
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*
|
||||
********************************************************************************
|
||||
* \copyright
|
||||
* Copyright 2016-2019 Cypress Semiconductor Corporation
|
||||
* Copyright 2016-2020 Cypress Semiconductor Corporation
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
|
|
@ -13868,17 +13868,11 @@
|
|||
"ANALOGOUT",
|
||||
"QSPI"
|
||||
],
|
||||
"macros_remove": [
|
||||
"MBEDTLS_CONFIG_HW_SUPPORT"
|
||||
],
|
||||
"extra_labels_add": [
|
||||
"PSOC6_01",
|
||||
"MXCRYPTO_01",
|
||||
"CORDIO"
|
||||
],
|
||||
"extra_labels_remove": [
|
||||
"MXCRYPTO"
|
||||
],
|
||||
"macros_add": [
|
||||
"CY8C6247FDI_D52",
|
||||
"CYHAL_UDB_SDIO",
|
||||
|
|
Loading…
Reference in New Issue