11/*
22 * Copyright (c) 2016, Freescale Semiconductor, Inc.
3- * Copyright 2016-2021 NXP
3+ * Copyright 2016-2021, 2025 NXP
44 * All rights reserved.
55 *
66 * SPDX-License-Identifier: BSD-3-Clause
@@ -1222,11 +1222,11 @@ status_t USDHC_SetADMA1Descriptor(
12221222
12231223 uint32_t miniEntries , startEntries = 0UL ,
12241224 maxEntries = (admaTableWords * sizeof (uint32_t )) / sizeof (usdhc_adma1_descriptor_t );
1225- usdhc_adma1_descriptor_t * adma1EntryAddress = (usdhc_adma1_descriptor_t * )(uint32_t )(admaTable );
1225+ usdhc_adma1_descriptor_t * adma1EntryAddress = (usdhc_adma1_descriptor_t * )(uintptr_t )(admaTable );
12261226 uint32_t i , dmaBufferLen = 0UL ;
12271227 const uint32_t * data = dataBufferAddr ;
12281228
1229- if (((uint32_t )data % USDHC_ADMA1_ADDRESS_ALIGN ) != 0UL )
1229+ if (((uintptr_t )data % USDHC_ADMA1_ADDRESS_ALIGN ) != 0UL )
12301230 {
12311231 return kStatus_USDHC_DMADataAddrNotAlign ;
12321232 }
@@ -1277,10 +1277,10 @@ status_t USDHC_SetADMA1Descriptor(
12771277
12781278 adma1EntryAddress [i ] = (dmaBufferLen << USDHC_ADMA1_DESCRIPTOR_LENGTH_SHIFT );
12791279 adma1EntryAddress [i ] |= (uint32_t )kUSDHC_Adma1DescriptorTypeSetLength ;
1280- adma1EntryAddress [i + 1UL ] = (uint32_t )(data );
1280+ adma1EntryAddress [i + 1UL ] = (uintptr_t )(data );
12811281 adma1EntryAddress [i + 1UL ] |=
12821282 (uint32_t )kUSDHC_Adma1DescriptorTypeTransfer | (uint32_t )kUSDHC_Adma1DescriptorInterrupFlag ;
1283- data = (uint32_t * )((uint32_t )data + dmaBufferLen );
1283+ data = (uint32_t * )((uintptr_t )data + dmaBufferLen );
12841284 dataBytes -= dmaBufferLen ;
12851285 }
12861286 /* the end of the descriptor */
@@ -1309,11 +1309,11 @@ status_t USDHC_SetADMA2Descriptor(
13091309
13101310 uint32_t miniEntries , startEntries = 0UL ,
13111311 maxEntries = (admaTableWords * sizeof (uint32_t )) / sizeof (usdhc_adma2_descriptor_t );
1312- usdhc_adma2_descriptor_t * adma2EntryAddress = (usdhc_adma2_descriptor_t * )(uint32_t )(admaTable );
1312+ usdhc_adma2_descriptor_t * adma2EntryAddress = (usdhc_adma2_descriptor_t * )(uintptr_t )(admaTable );
13131313 uint32_t i , dmaBufferLen = 0UL ;
13141314 const uint32_t * data = dataBufferAddr ;
13151315
1316- if (((uint32_t )data % USDHC_ADMA2_ADDRESS_ALIGN ) != 0UL )
1316+ if (((uintptr_t )data % USDHC_ADMA2_ADDRESS_ALIGN ) != 0UL )
13171317 {
13181318 return kStatus_USDHC_DMADataAddrNotAlign ;
13191319 }
@@ -1371,13 +1371,17 @@ status_t USDHC_SetADMA2Descriptor(
13711371 }
13721372
13731373 /* Each descriptor for ADMA2 is 64-bit in length */
1374+ #if INTPTR_MAX == INT64_MAX
1375+ adma2EntryAddress [i ].address = (uintptr_t )((dataBytes == 0UL ) ? & s_usdhcBootDummy : data );
1376+ #else
13741377 adma2EntryAddress [i ].address = (dataBytes == 0UL ) ? & s_usdhcBootDummy : data ;
1378+ #endif
13751379 adma2EntryAddress [i ].attribute = (dmaBufferLen << USDHC_ADMA2_DESCRIPTOR_LENGTH_SHIFT );
13761380 adma2EntryAddress [i ].attribute |=
13771381 (dataBytes == 0UL ) ?
13781382 0UL :
13791383 ((uint32_t )kUSDHC_Adma2DescriptorTypeTransfer | (uint32_t )kUSDHC_Adma2DescriptorInterruptFlag );
1380- data = (uint32_t * )((uint32_t )data + dmaBufferLen );
1384+ data = (uint32_t * )((uintptr_t )data + dmaBufferLen );
13811385
13821386 if (dataBytes != 0UL )
13831387 {
@@ -1420,7 +1424,7 @@ status_t USDHC_SetInternalDmaConfig(USDHC_Type *base,
14201424 assert (dmaConfig != NULL );
14211425 assert (dataAddr != NULL );
14221426 assert ((NULL != dmaConfig -> admaTable ) &&
1423- (((USDHC_ADMA_TABLE_ADDRESS_ALIGN - 1U ) & (uint32_t )dmaConfig -> admaTable ) == 0UL ));
1427+ (((USDHC_ADMA_TABLE_ADDRESS_ALIGN - 1U ) & (uintptr_t )dmaConfig -> admaTable ) == 0UL ));
14241428
14251429#if FSL_FEATURE_USDHC_HAS_EXT_DMA
14261430 /* disable the external DMA if support */
@@ -1430,26 +1434,26 @@ status_t USDHC_SetInternalDmaConfig(USDHC_Type *base,
14301434 if (dmaConfig -> dmaMode == kUSDHC_DmaModeSimple )
14311435 {
14321436 /* check DMA data buffer address align or not */
1433- if (((uint32_t )dataAddr % USDHC_ADMA2_ADDRESS_ALIGN ) != 0UL )
1437+ if (((uintptr_t )dataAddr % USDHC_ADMA2_ADDRESS_ALIGN ) != 0UL )
14341438 {
14351439 return kStatus_USDHC_DMADataAddrNotAlign ;
14361440 }
14371441 /* in simple DMA mode if use auto CMD23, address should load to ADMA addr,
14381442 and block count should load to DS_ADDR*/
14391443 if (enAutoCmd23 )
14401444 {
1441- base -> ADMA_SYS_ADDR = USDHC_ADDR_CPU_2_DMA ((uint32_t )dataAddr );
1445+ base -> ADMA_SYS_ADDR = USDHC_ADDR_CPU_2_DMA ((uintptr_t )dataAddr );
14421446 }
14431447 else
14441448 {
1445- base -> DS_ADDR = USDHC_ADDR_CPU_2_DMA ((uint32_t )dataAddr );
1449+ base -> DS_ADDR = USDHC_ADDR_CPU_2_DMA ((uintptr_t )dataAddr );
14461450 }
14471451 }
14481452 else
14491453 {
14501454 /* When use ADMA, disable simple DMA */
14511455 base -> DS_ADDR = 0UL ;
1452- base -> ADMA_SYS_ADDR = USDHC_ADDR_CPU_2_DMA ((uint32_t )(dmaConfig -> admaTable ));
1456+ base -> ADMA_SYS_ADDR = USDHC_ADDR_CPU_2_DMA ((uintptr_t )(dmaConfig -> admaTable ));
14531457 }
14541458
14551459#if (defined(FSL_FEATURE_USDHC_HAS_NO_RW_BURST_LEN ) && FSL_FEATURE_USDHC_HAS_NO_RW_BURST_LEN )
@@ -1485,14 +1489,14 @@ status_t USDHC_SetAdmaTableConfig(USDHC_Type *base,
14851489{
14861490 assert (NULL != dmaConfig );
14871491 assert ((NULL != dmaConfig -> admaTable ) &&
1488- (((USDHC_ADMA_TABLE_ADDRESS_ALIGN - 1U ) & (uint32_t )dmaConfig -> admaTable ) == 0UL ));
1492+ (((USDHC_ADMA_TABLE_ADDRESS_ALIGN - 1U ) & (uintptr_t )dmaConfig -> admaTable ) == 0UL ));
14891493 assert (NULL != dataConfig );
14901494
14911495 status_t error = kStatus_Fail ;
14921496 uint32_t bootDummyOffset =
14931497 dataConfig -> dataType == (uint32_t )kUSDHC_TransferDataBootcontinous ? sizeof (uint32_t ) : 0UL ;
1494- const uint32_t * data = (const uint32_t * )USDHC_ADDR_CPU_2_DMA ((uint32_t )(
1495- (uint32_t )((dataConfig -> rxData == NULL ) ? dataConfig -> txData : dataConfig -> rxData ) + bootDummyOffset ));
1498+ const uint32_t * data = (const uint32_t * )USDHC_ADDR_CPU_2_DMA ((uintptr_t )(
1499+ (uintptr_t )((dataConfig -> rxData == NULL ) ? dataConfig -> txData : dataConfig -> rxData ) + bootDummyOffset ));
14961500 uint32_t blockSize = dataConfig -> blockSize * dataConfig -> blockCount - bootDummyOffset ;
14971501
14981502#if FSL_FEATURE_USDHC_HAS_EXT_DMA
@@ -1605,12 +1609,12 @@ status_t USDHC_TransferBlocking(USDHC_Type *base, usdhc_adma_config_t *dmaConfig
16051609 if (data -> txData != NULL )
16061610 {
16071611 /* clear the DCACHE */
1608- DCACHE_CleanByRange ((uint32_t )data -> txData , (data -> blockSize ) * (data -> blockCount ));
1612+ DCACHE_CleanByRange ((uintptr_t )data -> txData , (data -> blockSize ) * (data -> blockCount ));
16091613 }
16101614 else
16111615 {
16121616 /* clear the DCACHE */
1613- DCACHE_CleanInvalidateByRange ((uint32_t )data -> rxData , (data -> blockSize ) * (data -> blockCount ));
1617+ DCACHE_CleanInvalidateByRange ((uintptr_t )data -> rxData , (data -> blockSize ) * (data -> blockCount ));
16141618 }
16151619 }
16161620#endif
@@ -1926,12 +1930,12 @@ status_t USDHC_TransferNonBlocking(USDHC_Type *base,
19261930 if (data -> txData != NULL )
19271931 {
19281932 /* clear the DCACHE */
1929- DCACHE_CleanByRange ((uint32_t )data -> txData , (data -> blockSize ) * (data -> blockCount ));
1933+ DCACHE_CleanByRange ((uintptr_t )data -> txData , (data -> blockSize ) * (data -> blockCount ));
19301934 }
19311935 else
19321936 {
19331937 /* clear the DCACHE */
1934- DCACHE_CleanInvalidateByRange ((uint32_t )data -> rxData , (data -> blockSize ) * (data -> blockCount ));
1938+ DCACHE_CleanInvalidateByRange ((uintptr_t )data -> rxData , (data -> blockSize ) * (data -> blockCount ));
19351939 }
19361940 }
19371941#endif
@@ -2345,7 +2349,7 @@ static void USDHC_TransferHandleData(USDHC_Type *base, usdhc_handle_t *handle, u
23452349#if defined(FSL_SDK_ENABLE_DRIVER_CACHE_CONTROL ) && FSL_SDK_ENABLE_DRIVER_CACHE_CONTROL
23462350 if (handle -> data -> rxData != NULL )
23472351 {
2348- DCACHE_InvalidateByRange ((uint32_t )(handle -> data -> rxData ),
2352+ DCACHE_InvalidateByRange ((uintptr_t )(handle -> data -> rxData ),
23492353 (handle -> data -> blockSize ) * (handle -> data -> blockCount ));
23502354 }
23512355#endif
0 commit comments