-
Notifications
You must be signed in to change notification settings - Fork 150
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'MCUX_2.14.0_MCXNx4x' into tmp_branch
Signed-off-by: Susan Su <[email protected]>
- Loading branch information
Showing
4,707 changed files
with
1,004,522 additions
and
664,759 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,245 @@ | ||
/* | ||
* Copyright 2022 NXP | ||
* All rights reserved. | ||
* | ||
* SPDX-License-Identifier: BSD-3-Clause | ||
*/ | ||
|
||
#include <stdint.h> | ||
#include "fsl_common.h" | ||
#include "fsl_debug_console.h" | ||
#include "board.h" | ||
#if defined(SDK_I2C_BASED_COMPONENT_USED) && SDK_I2C_BASED_COMPONENT_USED | ||
#include "fsl_lpi2c.h" | ||
#endif /* SDK_I2C_BASED_COMPONENT_USED */ | ||
#if defined(LPFLEXCOMM_INIT_NOT_USED_IN_DRIVER) && LPFLEXCOMM_INIT_NOT_USED_IN_DRIVER | ||
#include "fsl_lpflexcomm.h" | ||
#endif /* LPFLEXCOMM_INIT_NOT_USED_IN_DRIVER */ | ||
#include "fsl_spc.h" | ||
|
||
/******************************************************************************* | ||
* Variables | ||
******************************************************************************/ | ||
|
||
/******************************************************************************* | ||
* Code | ||
******************************************************************************/ | ||
/* Initialize debug console. */ | ||
void BOARD_InitDebugConsole(void) | ||
{ | ||
/* attach 12 MHz clock to FLEXCOMM0 (debug console) */ | ||
CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH); | ||
|
||
RESET_ClearPeripheralReset(BOARD_DEBUG_UART_RST); | ||
|
||
uint32_t uartClkSrcFreq = BOARD_DEBUG_UART_CLK_FREQ; | ||
|
||
#if defined(LPFLEXCOMM_INIT_NOT_USED_IN_DRIVER) && LPFLEXCOMM_INIT_NOT_USED_IN_DRIVER | ||
LP_FLEXCOMM_Init(BOARD_DEBUG_UART_INSTANCE, LP_FLEXCOMM_PERIPH_LPUART); | ||
#endif /* LPFLEXCOMM_INIT_NOT_USED_IN_DRIVER */ | ||
|
||
DbgConsole_Init(BOARD_DEBUG_UART_INSTANCE, BOARD_DEBUG_UART_BAUDRATE, BOARD_DEBUG_UART_TYPE, uartClkSrcFreq); | ||
} | ||
|
||
void BOARD_InitDebugConsole_Core1(void) | ||
{ | ||
/* attach 12 MHz clock to FLEXCOMM1 (debug console) */ | ||
// CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH_CORE1); | ||
|
||
RESET_ClearPeripheralReset(BOARD_DEBUG_UART_RST_CORE1); | ||
|
||
uint32_t uartClkSrcFreq = BOARD_DEBUG_UART_CLK_FREQ_CORE1; | ||
|
||
DbgConsole_Init(BOARD_DEBUG_UART_INSTANCE_CORE1, BOARD_DEBUG_UART_BAUDRATE_CORE1, BOARD_DEBUG_UART_TYPE_CORE1, | ||
uartClkSrcFreq); | ||
} | ||
|
||
#if defined(SDK_I2C_BASED_COMPONENT_USED) && SDK_I2C_BASED_COMPONENT_USED | ||
void BOARD_LPI2C_Init(LPI2C_Type *base, uint32_t clkSrc_Hz) | ||
{ | ||
lpi2c_master_config_t lpi2cConfig = {0}; | ||
|
||
/* | ||
* lpi2cConfig.debugEnable = false; | ||
* lpi2cConfig.ignoreAck = false; | ||
* lpi2cConfig.pinConfig = kLPI2C_2PinOpenDrain; | ||
* lpi2cConfig.baudRate_Hz = 100000U; | ||
* lpi2cConfig.busIdleTimeout_ns = 0; | ||
* lpi2cConfig.pinLowTimeout_ns = 0; | ||
* lpi2cConfig.sdaGlitchFilterWidth_ns = 0; | ||
* lpi2cConfig.sclGlitchFilterWidth_ns = 0; | ||
*/ | ||
LPI2C_MasterGetDefaultConfig(&lpi2cConfig); | ||
LPI2C_MasterInit(base, &lpi2cConfig, clkSrc_Hz); | ||
} | ||
|
||
status_t BOARD_LPI2C_Send(LPI2C_Type *base, | ||
uint8_t deviceAddress, | ||
uint32_t subAddress, | ||
uint8_t subAddressSize, | ||
uint8_t *txBuff, | ||
uint8_t txBuffSize) | ||
{ | ||
lpi2c_master_transfer_t xfer; | ||
|
||
xfer.flags = kLPI2C_TransferDefaultFlag; | ||
xfer.slaveAddress = deviceAddress; | ||
xfer.direction = kLPI2C_Write; | ||
xfer.subaddress = subAddress; | ||
xfer.subaddressSize = subAddressSize; | ||
xfer.data = txBuff; | ||
xfer.dataSize = txBuffSize; | ||
|
||
return LPI2C_MasterTransferBlocking(base, &xfer); | ||
} | ||
|
||
status_t BOARD_LPI2C_Receive(LPI2C_Type *base, | ||
uint8_t deviceAddress, | ||
uint32_t subAddress, | ||
uint8_t subAddressSize, | ||
uint8_t *rxBuff, | ||
uint8_t rxBuffSize) | ||
{ | ||
lpi2c_master_transfer_t xfer; | ||
|
||
xfer.flags = kLPI2C_TransferDefaultFlag; | ||
xfer.slaveAddress = deviceAddress; | ||
xfer.direction = kLPI2C_Read; | ||
xfer.subaddress = subAddress; | ||
xfer.subaddressSize = subAddressSize; | ||
xfer.data = rxBuff; | ||
xfer.dataSize = rxBuffSize; | ||
|
||
return LPI2C_MasterTransferBlocking(base, &xfer); | ||
} | ||
|
||
status_t BOARD_LPI2C_SendSCCB(LPI2C_Type *base, | ||
uint8_t deviceAddress, | ||
uint32_t subAddress, | ||
uint8_t subAddressSize, | ||
uint8_t *txBuff, | ||
uint8_t txBuffSize) | ||
{ | ||
return BOARD_LPI2C_Send(base, deviceAddress, subAddress, subAddressSize, txBuff, txBuffSize); | ||
} | ||
|
||
status_t BOARD_LPI2C_ReceiveSCCB(LPI2C_Type *base, | ||
uint8_t deviceAddress, | ||
uint32_t subAddress, | ||
uint8_t subAddressSize, | ||
uint8_t *rxBuff, | ||
uint8_t rxBuffSize) | ||
{ | ||
status_t status; | ||
lpi2c_master_transfer_t xfer; | ||
|
||
xfer.flags = kLPI2C_TransferDefaultFlag; | ||
xfer.slaveAddress = deviceAddress; | ||
xfer.direction = kLPI2C_Write; | ||
xfer.subaddress = subAddress; | ||
xfer.subaddressSize = subAddressSize; | ||
xfer.data = NULL; | ||
xfer.dataSize = 0; | ||
|
||
status = LPI2C_MasterTransferBlocking(base, &xfer); | ||
|
||
if (kStatus_Success == status) | ||
{ | ||
xfer.subaddressSize = 0; | ||
xfer.direction = kLPI2C_Read; | ||
xfer.data = rxBuff; | ||
xfer.dataSize = rxBuffSize; | ||
|
||
status = LPI2C_MasterTransferBlocking(base, &xfer); | ||
} | ||
|
||
return status; | ||
} | ||
|
||
void BOARD_Accel_I2C_Init(void) | ||
{ | ||
BOARD_LPI2C_Init(BOARD_ACCEL_I2C_BASEADDR, BOARD_ACCEL_I2C_CLOCK_FREQ); | ||
} | ||
|
||
status_t BOARD_Accel_I2C_Send(uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint32_t txBuff) | ||
{ | ||
uint8_t data = (uint8_t)txBuff; | ||
|
||
return BOARD_LPI2C_Send(BOARD_ACCEL_I2C_BASEADDR, deviceAddress, subAddress, subaddressSize, &data, 1); | ||
} | ||
|
||
status_t BOARD_Accel_I2C_Receive( | ||
uint8_t deviceAddress, uint32_t subAddress, uint8_t subaddressSize, uint8_t *rxBuff, uint8_t rxBuffSize) | ||
{ | ||
return BOARD_LPI2C_Receive(BOARD_ACCEL_I2C_BASEADDR, deviceAddress, subAddress, subaddressSize, rxBuff, rxBuffSize); | ||
} | ||
|
||
void BOARD_Codec_I2C_Init(void) | ||
{ | ||
BOARD_LPI2C_Init(BOARD_CODEC_I2C_BASEADDR, BOARD_CODEC_I2C_CLOCK_FREQ); | ||
} | ||
|
||
status_t BOARD_Codec_I2C_Send( | ||
uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, const uint8_t *txBuff, uint8_t txBuffSize) | ||
{ | ||
return BOARD_LPI2C_Send(BOARD_CODEC_I2C_BASEADDR, deviceAddress, subAddress, subAddressSize, (uint8_t *)txBuff, | ||
txBuffSize); | ||
} | ||
|
||
status_t BOARD_Codec_I2C_Receive( | ||
uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, uint8_t *rxBuff, uint8_t rxBuffSize) | ||
{ | ||
return BOARD_LPI2C_Receive(BOARD_CODEC_I2C_BASEADDR, deviceAddress, subAddress, subAddressSize, rxBuff, rxBuffSize); | ||
} | ||
|
||
void BOARD_Camera_I2C_Init(void) | ||
{ | ||
LP_FLEXCOMM_Init(BOARD_CAMERA_I2C_INSTANCE, LP_FLEXCOMM_PERIPH_LPI2C); | ||
BOARD_LPI2C_Init(BOARD_CAMERA_I2C_BASEADDR, BOARD_CAMERA_I2C_CLOCK_FREQ); | ||
} | ||
|
||
status_t BOARD_Camera_I2C_Send( | ||
uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, const uint8_t *txBuff, uint8_t txBuffSize) | ||
{ | ||
return BOARD_LPI2C_Send(BOARD_CAMERA_I2C_BASEADDR, deviceAddress, subAddress, subAddressSize, (uint8_t *)txBuff, | ||
txBuffSize); | ||
} | ||
|
||
status_t BOARD_Camera_I2C_Receive( | ||
uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, uint8_t *rxBuff, uint8_t rxBuffSize) | ||
{ | ||
return BOARD_LPI2C_Receive(BOARD_CAMERA_I2C_BASEADDR, deviceAddress, subAddress, subAddressSize, rxBuff, | ||
rxBuffSize); | ||
} | ||
|
||
status_t BOARD_Camera_I2C_SendSCCB( | ||
uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, const uint8_t *txBuff, uint8_t txBuffSize) | ||
{ | ||
return BOARD_LPI2C_SendSCCB(BOARD_CAMERA_I2C_BASEADDR, deviceAddress, subAddress, subAddressSize, (uint8_t *)txBuff, | ||
txBuffSize); | ||
} | ||
|
||
status_t BOARD_Camera_I2C_ReceiveSCCB( | ||
uint8_t deviceAddress, uint32_t subAddress, uint8_t subAddressSize, uint8_t *rxBuff, uint8_t rxBuffSize) | ||
{ | ||
return BOARD_LPI2C_ReceiveSCCB(BOARD_CAMERA_I2C_BASEADDR, deviceAddress, subAddress, subAddressSize, rxBuff, | ||
rxBuffSize); | ||
} | ||
|
||
#endif /* SDK_I2C_BASED_COMPONENT_USED */ | ||
|
||
/* Update Active mode voltage for OverDrive mode. */ | ||
void BOARD_PowerMode_OD(void) | ||
{ | ||
spc_active_mode_dcdc_option_t opt = { | ||
.DCDCVoltage = kSPC_DCDC_OverdriveVoltage, | ||
.DCDCDriveStrength = kSPC_DCDC_NormalDriveStrength, | ||
}; | ||
SPC_SetActiveModeDCDCRegulatorConfig(SPC0, &opt); | ||
|
||
spc_sram_voltage_config_t cfg = { | ||
.operateVoltage = kSPC_sramOperateAt1P2V, | ||
.requestVoltageUpdate = true, | ||
}; | ||
SPC_SetSRAMOperateVoltage(SPC0, &cfg); | ||
} |
Oops, something went wrong.