diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/Makefile.inc b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/Makefile.inc deleted file mode 100644 index cfd4e54..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/Makefile.inc +++ /dev/null @@ -1,55 +0,0 @@ -CFLAGS_INC += -I$(TOP)/PLAT/driver/board/$(TARGET)/inc \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/eeprom \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/camera \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/camera/cameraDev \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/codec \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/codec/codecDev \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/lcd/lcdDev \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/lcd \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/tp/tpDev \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/tp \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/ntc \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/exstorage \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/keypad - -ifeq ($(DRIVER_CODEC2601_ENABLE),y) -CFLAGS += -DCODEC_SC2601_ENABLE -endif - -libdriver-$(DRIVER_PLATCFG_ENABLE) += PLAT/driver/board/$(TARGET)/src/plat_config.o -libdriver-$(DRIVER_ECMAIN_ENABLE) += PLAT/driver/board/$(TARGET)/src/bsp.o -libdriverprivate-$(DRIVER_ECMAIN_ENABLE) += PLAT/driver/board/$(TARGET)/src/ec_main.o -libdriver-$(DRIVER_EEPROM_ENABLE) += PLAT/driver/board/$(TARGET)/src/eeprom/eepRom.o -libdriver-$(DRIVER_CAMERA_ENABLE) += PLAT/driver/board/$(TARGET)/src/camera/cameraDrv.o \ - PLAT/driver/board/$(TARGET)/src/camera/cameraDev/gc032A.o \ - PLAT/driver/board/$(TARGET)/src/camera/cameraDev/gc6153.o - -ifeq ($(DRIVER_CODEC_ENABLE), y) -libdriver-$(DRIVER_CODEC8311_ENABLE) += PLAT/driver/board/$(TARGET)/src/codec/codecDev/es8311.o -libdriver-$(DRIVER_CODEC8374_ENABLE) += PLAT/driver/board/$(TARGET)/src/codec/codecDev/es8374.o -libdriver-$(DRIVER_CODEC2601_ENABLE) += PLAT/driver/board/$(TARGET)/src/codec/codecDev/sc2601.o -libdriver-y +=PLAT/driver/board/$(TARGET)/src/codec/codecDrv.o -endif - -libdriver-$(DRIVER_KEYPAD_ENABLE) += PLAT/driver/board/$(TARGET)/src/keypad/keypad.o - -libdriver-$(DRIVER_LCD_ENABLE) += PLAT/driver/board/$(TARGET)/src/lcd/lcdComm.o \ - PLAT/driver/board/$(TARGET)/src/lcd/disFormat.o \ - PLAT/driver/board/$(TARGET)/src/lcd/lcdDrv.o - -ifeq ($(DRIVER_LCD_ENABLE), y) -libdriver-$(DRIVER_LCD_ST7789_ENABLE) += PLAT/driver/board/$(TARGET)/src/lcd/lcdDev/lcdDev_7789.o -libdriver-$(DRIVER_LCD_ST77903_ENABLE) += PLAT/driver/board/$(TARGET)/src/lcd/lcdDev/lcdDev_77903.o -libdriver-$(DRIVER_LCD_AXS15231_ENABLE) += PLAT/driver/board/$(TARGET)/src/lcd/lcdDev/lcdDev_15231.o -libdriver-$(DRIVER_LCD_CO5300_ENABLE) += PLAT/driver/board/$(TARGET)/src/lcd/lcdDev/lcdDev_5300.o -endif - -libdriver-$(DRIVER_TP_ENABLE) += PLAT/driver/board/$(TARGET)/src/tp/tpDrv.o \ - PLAT/driver/board/$(TARGET)/src/tp/tpComm.o - -libdriver-$(DRIVER_EXSTORAGE_ENABLE) += PLAT/driver/board/$(TARGET)/src/exstorage/ex_flash.o \ - PLAT/driver/board/$(TARGET)/src/exstorage/ex_storage.o - -ifeq ($(DRIVER_TP_ENABLE), y) -libdriver-$(DRIVER_TP_FT6336_ENABLE) += PLAT/driver/board/$(TARGET)/src/tp/tpDev/ft6336.o -endif \ No newline at end of file diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/bsp.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/bsp.h deleted file mode 100644 index abe3e4d..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/bsp.h +++ /dev/null @@ -1,104 +0,0 @@ -#ifndef BSP_H -#define BSP_H - -#ifdef __cplusplus -extern "C" { -#endif -#include "version.h" -#include "Driver_Common.h" -#include "Driver_I2C.h" -#include "Driver_SPI.h" -#include "Driver_USART.h" -#include "RTE_Device.h" -#include "pad.h" -#include "gpio.h" -#include "ic.h" -#include "dma.h" -#include "clock.h" - -#define STRING_EOL "\r\n" - -#if (defined TYPE_EC718S) -#define CHIP_TYPE "EC718S" -#elif (defined TYPE_EC718H) -#define CHIP_TYPE "EC718H" -#elif (defined TYPE_EC718P) -#define CHIP_TYPE "EC718P" -#elif (defined TYPE_EC718U) -#define CHIP_TYPE "EC718U" -#elif (defined TYPE_EC718PM) -#define CHIP_TYPE "EC718PM" -#elif (defined TYPE_EC718UM) -#define CHIP_TYPE "EC718UM" -#elif (defined TYPE_EC718SM) -#define CHIP_TYPE "EC718SM" -#elif (defined TYPE_EC718HM) -#define CHIP_TYPE "EC718HM" -#elif (defined TYPE_EC716S) -#define CHIP_TYPE "EC716S" -#elif (defined TYPE_EC716E) -#define CHIP_TYPE "EC716E" -#endif - -#define BOARD_NAME CHIP_TYPE"_EVK" - - -#define SDK_VERSION CHIP_TYPE"_SW_V"SDK_MAJOR_VERSION"."SDK_MINOR_VERSION"."SDK_PATCH_VERSION -#define EVB_VERSION CHIP_TYPE"_HW_V"EVB_MAJOR_VERSION"."EVB_MINOR_VERSION -#define VERSION_INFO "-- SDK Version: "SDK_VERSION" -- "STRING_EOL"-- EVB Version: "EVB_VERSION" -- "STRING_EOL - -#define BSP_HEADER STRING_EOL"-- Board: "BOARD_NAME " -- "STRING_EOL \ - VERSION_INFO \ - "-- Compiled: "__DATE__" "__TIME__" -- "STRING_EOL - -#define ATI_VERSION_INFO STRING_EOL"-- Board: "BOARD_NAME " -- "STRING_EOL \ - "-- SDK Version: "SDK_VERSION" -- "STRING_EOL - -#define SOFTVERSION "V"SDK_MAJOR_VERSION"."SDK_MINOR_VERSION"."SDK_PATCH_VERSION - - -#define CREATE_SYMBOL(name, port) name##port - -/** @brief UART port index - * | UART port | Hardware Flow Control | - * |-----------|-----------------------| - * | UART0 | Y | - * | UART1 | Y | - * | UART2 | N | - */ -typedef enum usart_port -{ - PORT_USART_0, /**< USART port 0. */ - PORT_USART_1, /**< USART port 1. */ - PORT_USART_2, /**< USART port 2. */ - PORT_USART_3, /**< USART port 3. */ - PORT_USART_MAX, /**< The total number of USART ports (invalid UART port number). */ - PORT_USART_INVALID /**< USART invalid. */ -} usart_port_t; - -extern ARM_DRIVER_USART *UsartPrintHandle; -extern ARM_DRIVER_USART *UsartUnilogHandle; -extern ARM_DRIVER_USART *UsartAtCmdHandle; - -/** @brief IRQ Callback functions - */ -typedef void (*IRQ_Callback_t)(); - - -uint8_t* getBuildInfo(void); -uint8_t* getATIVersionInfo(void); -uint8_t* getVersionInfo(void); -uint32_t getUnilogUartPort(void); -void getUnilogRamLogBuff(uint32_t *addr, uint32_t *len); -void FlushUnilogOutput(void); -void SetUnilogUart(usart_port_t port, uint32_t baudrate, bool startRecv); -void BSP_CommonInit(void); -void setOSState(uint8_t state); -uint8_t * getDebugDVersion(void); -void delay_us(uint32_t us); - -#ifdef __cplusplus -} -#endif - -#endif /* BSP_H */ diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/camera/cameraDev/gc032A.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/camera/cameraDev/gc032A.h deleted file mode 100644 index 9ad72aa..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/camera/cameraDev/gc032A.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef GC032A_H -#define GC032A_H - -#define GC032A_I2C_ADDR 0x21 - -uint16_t gc032aGetRegCnt(char* regName); - -#endif - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/camera/cameraDev/gc6153.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/camera/cameraDev/gc6153.h deleted file mode 100644 index e94f595..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/camera/cameraDev/gc6153.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef GC6153_H -#define GC6153_H - -#define GC6153_I2C_ADDR 0x40 - -uint16_t gc6153GetRegCnt(char* regName); - -#endif - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/camera/cameraDrv.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/camera/cameraDrv.h deleted file mode 100644 index 8c26f6a..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/camera/cameraDrv.h +++ /dev/null @@ -1,184 +0,0 @@ -#ifndef __CAMERA_DRV_H__ -#define __CAMERA_DRV_H__ - -#include "cspi.h" -#include "gc032A.h" -#include "gc6153.h" - -/** - \addtogroup cam_interface_gr - \{ - */ - -typedef struct -{ - uint8_t regAddr; ///< Sensor I2C register address - uint8_t regVal; ///< Sensor I2C register value -}camI2cCfg_t; - -typedef enum -{ - CAM_LSB_MODE = 0, ///< Little endian - CAM_MSB_MODE = 1, ///< Big endian -}endianMode_e; - -typedef enum -{ - WIRE_1 = 0, ///< 1 wire - WIRE_2 = 1, ///< 2 wire -}wireNum_e; - - -typedef enum -{ - SEQ_0 = 0, ///< rxd[0] 6 4 2 0 - ///< rxd[1] 7 5 3 1 - SEQ_1 = 1, ///< rxd[1] 6 4 2 0 - ///< rxd[0] 7 5 3 1 -}rxSeq_e; - -typedef enum -{ - CSPI_0 = 0, - CSPI_1 = 1, -}cspiInstance_e; - -typedef enum -{ - CSPI_START = 1, ///< cspi enable - CSPI_STOP = 0, ///< Cspi disable -}cspiStartStop_e; - -typedef enum -{ - CSPI_INT_ENABLE = 1, ///< cspi interrupt enable - CSPI_INT_DISABLE = 0, ///< Cspi interrupt disable -}cspiIntEnable_e; - - -typedef struct -{ - endianMode_e endianMode; ///< Endian mode - wireNum_e wireNum; ///< Wire numbers - rxSeq_e rxSeq; ///< Bit sequence in 2 wire mode - uint8_t cpol; - uint8_t cpha; - uint8_t ddrMode; - uint8_t wordIdSeq; - uint8_t yOnly; - uint8_t rowScaleRatio; - uint8_t colScaleRatio; - uint8_t scaleBytes; - uint8_t dummyAllowed; -}camParamCfg_t; - -typedef struct -{ - uint32_t enableForCamera : 1; // 0: isn't work for camera now; 1: is working for camera now - uint32_t enableForUsr : 1; // 0: isn't ready for usr; 1: is ready for usr - uint32_t workingForUsr : 1; // 0: usr has used this buf; 1: usr is using this buf - uint32_t camErrCnt : 3; // record camera err count - uint32_t rsvd : 26; - uint32_t timeStamp; - uint8_t data[320*240*2]; // can be configured -} CameraBuf_t; - -typedef void (*camCbEvent_fn) (uint32_t event); ///< Camera callback event. -typedef void (*camIrq_fn)(void); ///< Camera irq -typedef void (*camErrCb)(uint32_t stats); - - -/** - \brief Init camera, include pinMux, and enable clock. - \param[in] dataAddr Mem addr to store picture. - \param[in] uspCb usp cb. - \param[in] dmaCb dma cb. - \return -*/ -void camInit(void* dataAddr, cspiCbEvent_fn uspCb, void* dmaCb,camErrCb errCb); - -/** - \brief Receive the picture has been taken. - \param[out] dataIn The buffer which is used to store the picture. - \return -*/ -void camRecv(uint8_t * dataIn); - -/** - \brief Init sensor's registers. - \return -*/ -void camRegCfg(void); - -/** - \brief Write some parameters into the sensor. - \param[in] regInfo Sensor I2C addr and value. - \return -*/ -void camWriteReg(camI2cCfg_t* regInfo); - -/** - \brief Read from the sensor's I2C address. - \param[in] regAddr Sensor's I2C register address. - \return -*/ -uint8_t camReadReg(uint8_t regAddr); - -/** - \brief Start or stop Camera controller. - \param[in] startStop If true, start camera controller. If false, stop camera controller. - \return -*/ -void camStartStop(cspiStartStop_e startStop); - -/** - \brief Register irq for cspi. - \param[in] instance cspi0 or cspi1. - \param[in] irqCb irq cb. - \return -*/ -void camRegisterIRQ(cspiInstance_e instance, camIrq_fn irqCb); - -/** - \brief Get cspi status. - \param[in] instance cspi0 or cspi1. - \return -*/ -uint32_t camGetCspiStats(); - -/** - \brief Clear cspi interrupt status. - \param[in] instance cspi0 or cspi1. - \param[in] mask which bit needs to clear. - \return -*/ -void camClearIntStats(cspiInstance_e instance, uint32_t mask); - -/** - \brief Set memory addr which is used to store picture of camera. - \param[in] dataAddr data addr. - \return -*/ -void camSetMemAddr(uint32_t dataAddr); - -/** - \brief Enable or disable interrupt of cspi. - \param[in] intEnable interrupt enable or not. - \return -*/ -void cspiStartIntEnable(cspiIntEnable_e intEnable); -void cspiEndIntEnable(cspiIntEnable_e endIntEnable); -uint32_t camGetCspiInt(cspiInstance_e instance); -void cspi2LspiEnable(uint8_t enable); -void camRegisterErrStatsCb(camErrCb errCb); -int camCheckErrStats(); -#if (ENABLE_CAMERA_LDO == 1) -void camPowerOn(uint8_t ioInitVal); -#endif -void camGpioPulseCfg(uint8_t padAddr, uint8_t pinInstance, uint8_t pinNum); -void camGpioPulse(uint8_t pinInstance, uint8_t pinNum, uint32_t pulseDurationUs, uint8_t initialState, bool needLoop); -void camRegisterSlp1Cb(cspiSlp1Cb_fn cb); - -/** \} */ - -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/codec/codecDev/es8311.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/codec/codecDev/es8311.h deleted file mode 100644 index cae1cee..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/codec/codecDev/es8311.h +++ /dev/null @@ -1,280 +0,0 @@ -/****************************************************************************** - -*(C) Copyright 2018 EIGENCOMM International Ltd. - -* All Rights Reserved - -****************************************************************************** -* Filename: es8311.h -* -* Description: -* -* History: Rev1.0 2020-02-24 -* -* Notes: es8311 interface -* -******************************************************************************/ - - -#ifndef _CODEC_ES8311_H -#define _CODEC_ES8311_H - -/*----------------------------------------------------------------------------* - * INCLUDES * - *----------------------------------------------------------------------------*/ -#include "codecDrv.h" - -#ifdef __cplusplus -extern "C" { -#endif - - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ - - - -// ES8311_REGISTER NAME_REG_REGISTER ADDRESS -#define ES8311_RESET_REG00 0x00 /*reset digital,csm,clock manager etc.*/ - -// Clock Scheme Register definition -#define ES8311_CLK_MANAGER_REG01 0x01 // select clk src for mclk, enable clock for codec -#define ES8311_CLK_MANAGER_REG02 0x02 // clk divider and clk multiplier -#define ES8311_CLK_MANAGER_REG03 0x03 // adc fsmode and osr -#define ES8311_CLK_MANAGER_REG04 0x04 // dac osr -#define ES8311_CLK_MANAGER_REG05 0x05 // clk divier for adc and dac -#define ES8311_CLK_MANAGER_REG06 0x06 // bclk inverter and divider -#define ES8311_CLK_MANAGER_REG07 0x07 // tri-state, lrck divider -#define ES8311_CLK_MANAGER_REG08 0x08 // lrck divider - -// SDP -#define ES8311_SDPIN_REG09 0x09 // dac serial digital port */ -#define ES8311_SDPOUT_REG0A 0x0A // adc serial digital port */ - -// SYSTEM -#define ES8311_SYSTEM_REG0B 0x0B // system -#define ES8311_SYSTEM_REG0C 0x0C // system -#define ES8311_SYSTEM_REG0D 0x0D // system, power up/down -#define ES8311_SYSTEM_REG0E 0x0E // system, power up/down -#define ES8311_SYSTEM_REG0F 0x0F // system, low power -#define ES8311_SYSTEM_REG10 0x10 // system -#define ES8311_SYSTEM_REG11 0x11 // system -#define ES8311_SYSTEM_REG12 0x12 // system, Enable DAC -#define ES8311_SYSTEM_REG13 0x13 // system -#define ES8311_SYSTEM_REG14 0x14 // system, mic gain, select DMIC, select analog pga gain - -// ADC -#define ES8311_ADC_REG15 0x15 // ADC, adc ramp rate, dmic sense -#define ES8311_ADC_REG16 0x16 // ADC -#define ES8311_ADC_REG17 0x17 // ADC, mic volume -#define ES8311_ADC_REG18 0x18 // ADC, alc enable and winsize -#define ES8311_ADC_REG19 0x19 // ADC, alc maxlevel -#define ES8311_ADC_REG1A 0x1A // ADC, alc automute -#define ES8311_ADC_REG1B 0x1B // ADC, alc automute, adc hpf s1 -#define ES8311_ADC_REG1C 0x1C // ADC, equalizer, hpf s2 -#define ES8311_ADC_REG1D 0x1D // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG1E 0x1E // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG1F 0x1F // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG20 0x20 // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG21 0x21 // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG22 0x22 // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG23 0x23 // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG24 0x24 // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG25 0x25 // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG26 0x26 // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG27 0x27 // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG28 0x28 // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG29 0x29 // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG2A 0x2A // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG2B 0x2B // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG2C 0x2C // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG2D 0x2D // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG2E 0x2E // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG2F 0x2F // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG30 0x30 // ADC, 30-bit B0 coefficient for ADCEQ - -// DAC -#define ES8311_DAC_REG31 0x31 // DAC, mute -#define ES8311_DAC_REG32 0x32 // DAC, volume -#define ES8311_DAC_REG33 0x33 // DAC, offset -#define ES8311_DAC_REG34 0x34 // DAC, drc enable, drc winsize -#define ES8311_DAC_REG35 0x35 // DAC, drc maxlevel, minilevel -#define ES8311_DAC_REG37 0x37 // DAC, ramprate - -// GPIO -#define ES8311_GPIO_REG44 0x44 // GPIO, dac2adc for test -#define ES8311_GP_REG45 0x45 // GP CONTROL - -// CHIP -#define ES8311_CHD1_REGFD 0xFD // CHIP ID1 -#define ES8311_CHD2_REGFE 0xFE // CHIP ID2 -#define ES8311_CHVER_REGFF 0xFF // VERSION -#define ES8311_CHD1_REGFD 0xFD // CHIP ID1 - -#define ES8311_MAX_REGISTER 0xFF - - -/*----------------------------------------------------------------------------* -* DATA TYPE DEFINITION * -*----------------------------------------------------------------------------*/ - -extern HalCodecFuncList_t es8311DefaultHandle; - - -/*----------------------------------------------------------------------------* -* GLOBAL FUNCTIONS DECLEARATION * -*----------------------------------------------------------------------------*/ - - /** - \brief Enables or disables PA - \param[in] enable true/false - \return NULL - \note - */ -void es8311EnablePA(bool enable); - -/** - \brief Initialize ES8311 codec chip - \param[in] codec_cfg configuration of ES8311 - \return -CODEC_EOK -CODEC_INIT_ERR - \note - */ -HalCodecSts_e es8311Init(HalCodecCfg_t *codecCfg); - - /** - \brief Deinitialize ES8311 codec chip - \param[in] NULL - \return NULL - \note - */ -void es8311DeInit(void); - -/** - \brief start/stop ES8311 codec chip - \param[in] mode codec mode - \param[in] ctrlState start or stop decode or encode progress - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311StartStop(HalCodecMode_e mode, HalCodecCtrlState_e ctrlState); - -/** - \brief Configure ES8311 codec mode and I2S interface - \param[in] mode codec mode - \param[in] iface I2S config - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311Config(HalCodecMode_e mode, HalCodecIface_t *iface); - -/** - \brief Configure ES8311 DAC mute or not. Basically you can use this function to mute the output or unmute - \param[in] enable enable(1) or disable(0) - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311SetMute(HalCodecCfg_t* codecHalCfg, bool enable); - -/** - \brief Set voice volume - \param[in] volume: voice volume (0~100) - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311SetVolume(HalCodecCfg_t* codecHalCfg, int volume); - -/** - \brief Get voice volume - \param[out] *volume: voice volume (0~100) - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311GetVolume(HalCodecCfg_t* codecHalCfg, int *volume); - -/** - \brief Configure ES8311 I2S format - \param[in] mod: set ADC or DAC or both - \param[in] cfg: ES8388 I2S format - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311ConfigFmt(HalCodecIfaceFormat_e fmt); - -/** - \brief Configure ES8311 data sample bits - \param[in] mode: set ADC or DAC or both - \param[in] bits: bit number of per sample - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311SetBitsPerSample(HalCodecIfaceBits_e bits); - -/** - \brief Start ES8311 codec chip - \param[in] mode: set ADC or DAC or both - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311Start(HalCodecMode_e mode); - -/** - \brief Stop ES8311 codec chip - \param[in] mode: set ADC or DAC or both - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311Stop(HalCodecMode_e mode); - -/** - \brief Get ES8311 DAC mute status - \param[out] mute get mute - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311GetVoiceMute(int *mute); - -/** - \brief Set ES8311 mic gain and volume - \param[in] micGain db of mic gain, varies from 0~10, default is 8 - \param[in] micVolume micVolume, varies from 0~100, default is 75 - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311SetMicVolume(HalCodecCfg_t* codecHalCfg, uint8_t micGain, int micVolume); - -HalCodecSts_e es8311GetMicVolume(HalCodecCfg_t* codecHalCfg, uint8_t *micGain, int *micVolume); - - -/** - * @brief Print all ES8311 registers - * - * @return - * - void - */ -/** - \brief Print all ES8311 registers - \param[in] NULL - \return NULL - \note - */ -void es8311ReadAll(); - -/** - \brief get es8311 default config - \param[in] NULL - \return HalCodecCfg_t codecCfg - \note - */ -HalCodecCfg_t es8311GetDefaultCfg(); - -HalCodecSts_e es8311Resume(HalCodecMode_e mode); - - - -#ifdef __cplusplus -} -#endif - -#endif /* _CODEC_ES8311_H */ - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/codec/codecDev/es8374.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/codec/codecDev/es8374.h deleted file mode 100644 index 3e0dbb7..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/codec/codecDev/es8374.h +++ /dev/null @@ -1,262 +0,0 @@ -/****************************************************************************** - -*(C) Copyright 2018 EIGENCOMM International Ltd. - -* All Rights Reserved - -****************************************************************************** -* Filename: es8374.h -* -* Description: -* -* History: Rev1.0 2020-02-24 -* -* Notes: es8374 interface -* -******************************************************************************/ - - -#ifndef _CODEC_ES8374_H -#define _CODEC_ES8374_H - -/*----------------------------------------------------------------------------* - * INCLUDES * - *----------------------------------------------------------------------------*/ -#include "codecDrv.h" - -#ifdef __cplusplus -extern "C" { -#endif - -extern HalCodecFuncList_t es8374DefaultHandle; - - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ - - - -// ES8374_REG_ISTER NAME_REG_REGISTER ADDRESS -#define ES8374_REG_00 0x00 -#define ES8374_REG_01 0x01 -#define ES8374_REG_02 0x02 -#define ES8374_REG_03 0x03 -#define ES8374_REG_04 0x04 -#define ES8374_REG_05 0x05 -#define ES8374_REG_06 0x06 -#define ES8374_REG_07 0x07 -#define ES8374_REG_08 0x08 -#define ES8374_REG_09 0x09 -#define ES8374_REG_0A 0x0A -#define ES8374_REG_0B 0x0B -#define ES8374_REG_0C 0x0C -#define ES8374_REG_0D 0x0D -#define ES8374_REG_0E 0x0E -#define ES8374_REG_0F 0x0F -#define ES8374_REG_10 0x10 -#define ES8374_REG_11 0x11 -#define ES8374_REG_12 0x12 -#define ES8374_REG_13 0x13 -#define ES8374_REG_14 0x14 -#define ES8374_REG_15 0x15 -#define ES8374_REG_16 0x16 -#define ES8374_REG_17 0x17 -#define ES8374_REG_18 0x18 -#define ES8374_REG_19 0x19 -#define ES8374_REG_1A 0x1A -#define ES8374_REG_1B 0x1B -#define ES8374_REG_1C 0x1C -#define ES8374_REG_1D 0x1D -#define ES8374_REG_1E 0x1E -#define ES8374_REG_1F 0x1F -#define ES8374_REG_20 0x20 -#define ES8374_REG_21 0x21 -#define ES8374_REG_22 0x22 -#define ES8374_REG_23 0x23 -#define ES8374_REG_24 0x24 -#define ES8374_REG_25 0x25 -#define ES8374_REG_26 0x26 -#define ES8374_REG_27 0x27 -#define ES8374_REG_28 0x28 -#define ES8374_REG_29 0x29 -#define ES8374_REG_2A 0x2A -#define ES8374_REG_2B 0x2B -#define ES8374_REG_2C 0x2C -#define ES8374_REG_2D 0x2D -#define ES8374_REG_2E 0x2E -#define ES8374_REG_2F 0x2F -#define ES8374_REG_30 0x30 -#define ES8374_REG_31 0x31 -#define ES8374_REG_32 0x32 -#define ES8374_REG_33 0x33 -#define ES8374_REG_34 0x34 -#define ES8374_REG_35 0x35 -#define ES8374_REG_36 0x36 -#define ES8374_REG_37 0x37 -#define ES8374_REG_38 0x38 -#define ES8374_REG_6D 0x6D -#define ES8374_REG_6F 0x6F -#define ES8374_REG_72 0x72 - - -/*----------------------------------------------------------------------------* -* DATA TYPE DEFINITION * -*----------------------------------------------------------------------------*/ - -extern HalCodecFuncList_t es8374DefaultHandle; - - -/*----------------------------------------------------------------------------* -* GLOBAL FUNCTIONS DECLEARATION * -*----------------------------------------------------------------------------*/ - - /** - \brief Enables or disables PA - \param[in] enable true/false - \return NULL - \note - */ -void es8374EnablePA(bool enable); - -/** - \brief Initialize ES8374 codec chip - \param[in] codec_cfg configuration of ES8374 - \return -CODEC_EOK -CODEC_INIT_ERR - \note - */ -HalCodecSts_e es8374Init(HalCodecCfg_t *codecCfg); - - /** - \brief Deinitialize ES8374 codec chip - \param[in] NULL - \return NULL - \note - */ -void es8374DeInit(void); - -/** - \brief start/stop ES8374 codec chip - \param[in] mode codec mode - \param[in] ctrlState start or stop decode or encode progress - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374StartStop(HalCodecMode_e mode, HalCodecCtrlState_e ctrlState); - -/** - \brief Configure ES8374 codec mode and I2S interface - \param[in] mode codec mode - \param[in] iface I2S config - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374Config(HalCodecMode_e mode, HalCodecIface_t *iface); - -/** - \brief Configure ES8374 DAC mute or not. Basically you can use this function to mute the output or unmute - \param[in] enable enable(1) or disable(0) - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374SetMute(HalCodecCfg_t* codecHalCfg, bool enable); - -/** - \brief Set voice volume - \param[in] volume: voice volume (0~100) - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374SetVolume(HalCodecCfg_t* codecHalCfg, int volume); - -/** - \brief Get voice volume - \param[out] *volume: voice volume (0~100) - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374GetVolume(HalCodecCfg_t* codecHalCfg, int *volume); - -/** - \brief Configure ES8374 I2S format - \param[in] mod: set ADC or DAC or both - \param[in] cfg: ES8388 I2S format - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374ConfigFmt(HalCodecIfaceFormat_e fmt); - -/** - \brief Configure ES8374 data sample bits - \param[in] mode: set ADC or DAC or both - \param[in] bits: bit number of per sample - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374SetBitsPerSample(HalCodecIfaceBits_e bits); - -/** - \brief Start ES8374 codec chip - \param[in] mode: set ADC or DAC or both - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374Start(HalCodecModule_e mode); - -/** - \brief Stop ES8374 codec chip - \param[in] mode: set ADC or DAC or both - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374Stop(HalCodecModule_e mode); - -/** - \brief Get ES8374 DAC mute status - \param[out] mute get mute - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374GetVoiceMute(uint8_t *mute); - -/** - \brief Set ES8374 mic gain and volume - \param[in] not used - \param[in] micVolume micVolume, varies from 0~100, default is 75 - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374SetMicVolume(HalCodecCfg_t* codecHalCfg, uint8_t micGain, int micVolume); - -/** - * @brief Print all ES8374 registers - * - * @return - * - void - */ -/** - \brief Print all ES8374 registers - \param[in] NULL - \return NULL - \note - */ -void es8374ReadAll(); - -/** - \brief get es8374 default config - \param[in] NULL - \return HalCodecCfg_t codecCfg - \note - */ -HalCodecCfg_t es8374GetDefaultCfg(); - -HalCodecSts_e es8374Resume(HalCodecMode_e mode); - - - -#ifdef __cplusplus -} -#endif - -#endif /* _CODEC_ES8374_H */ - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/codec/codecDrv.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/codec/codecDrv.h deleted file mode 100644 index 3e7a8a0..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/codec/codecDrv.h +++ /dev/null @@ -1,425 +0,0 @@ -/****************************************************************************** - -*(C) Copyright 2018 EIGENCOMM International Ltd. - -* All Rights Reserved - -****************************************************************************** -* Filename: hal_codec.h -* -* Description: -* -* History: Rev1.0 2020-02-24 -* -* Notes: codec interface -* -******************************************************************************/ - - -#ifndef _CODEC_DRV_H -#define _CODEC_DRV_H - -/*----------------------------------------------------------------------------* - * INCLUDES * - *----------------------------------------------------------------------------*/ -#include "stdio.h" -#include "stdlib.h" -#include "ec7xx.h" -#include "string.h" -#include "Driver_Common.h" -#include "bsp.h" -#include "hal_i2c.h" -#ifdef FEATURE_OS_ENABLE -#include "osasys.h" -#include "cmsis_os2.h" -#endif -#include "slpman.h" -#include "exception_process.h" -#ifndef CHIP_EC618 -#include "mw_nvm_audio.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ -#define HAL_CODEC_VOL_SPEAKER_DEFAULT 65 -#define HAL_CODEC_MIC_GAIN_DEFAULT 8 -#define HAL_CODEC_VOL_MIC_DEFAULT 191 -#define HAL_CODEC_VOL_SPEAKER_GAIN_DEFAULT 8 - -// Codec I2C address -#define ES8388_IICADDR 0x11 -#define ES8311_IICADDR 0x18 -#define ES8374_IICADDR 0x10 -#define SC2601_IICADDR 0x18 - -#ifdef FEATURE_OS_ENABLE -#define HAL_CODEC_CHECK_NULL(a, format, b, ...) \ - if ((a) == 0) { \ - return b;\ - } - -#define DEBUG_PRINT(moduleId, subId, debugLevel, format, ...) ECPLAT_PRINTF(moduleId, subId, debugLevel, format, ##__VA_ARGS__) -#else -#define DEBUG_PRINT(moduleId, subId, debugLevel, format, ...) -#define HAL_CODEC_CHECK_NULL(a, format, b, ...) - -#endif - - -/** \brief CODEC_PA location */ -#define CODEC_PA_GPIO_INSTANCE (0) -#define CODEC_PA_GPIO_PIN (2) -#define CODEC_PA_PAD_INDEX (17) -#define CODEC_PA_PAD_ALT_FUNC (PAD_MUX_ALT0) - -#define DIRECTION_TX (0) -#define DIRECTION_RX (1) - - -/*----------------------------------------------------------------------------* -* DATA TYPE DEFINITION * -*----------------------------------------------------------------------------*/ -typedef struct -{ - bool isDmic; - bool isExPa; - int16_t exPaGain; - int16_t txDigGain; - int16_t txAnaGain; - - int16_t rxDigGain0; - int16_t rxAnaGain0; - int16_t rxDigGain50; - int16_t rxAnaGain50; - int16_t rxDigGain100; - int16_t rxAnaGain100; -}HalCodecTlvDefault_t; - - - -/* - * usr set codec volumn parameter -*/ -typedef struct _USR_SET_CODEC_VOLUMN -{ - UINT16 rxDigUsrSet; // bit15: flag; bit14~bit8: 1level; bit7~bit0: 2level - UINT16 rxAnaUsrSet; // bit15: flag; bit14~bit8: 1level; bit7~bit0: 2level -}MWNvmCfgUsrSetCodecVolumn; - -/* - * indicate usr whether set volumn in nv -*/ -typedef struct _VOLUMN_SET_FLAG -{ - UINT8 rxDigUsrSetFlag; - UINT8 rxAnaUsrSetFlag; - UINT8 txDigGainFlag; - UINT8 txAnaGainFlag; -}MWNvmCfgVolumnSetFlag; - - -typedef struct -{ - int slope; - int offset; - HalCodecTlvDefault_t defaultVal; -}HalCodecVolParam_t; - -typedef enum -{ - ES8311 = 0, - ES8374, - ES8388, - ES7148, - ES7149, - TM8211, - SC2601 -}HalCodecType_e; - -// codec status -typedef enum -{ - CODEC_EOK = 0, // operation completed successfull - CODEC_ERR = -1, // unspecified error: no other errno fits - CODEC_TIMEOUT = -2, // invalid argument(s) - CODEC_INIT_ERR = -3, // invalid argument(s) - CODEC_CFG_ERR = -4, // invalid argument(s) - CODEC_SET_VOLUME_ERR = -5, // invalid argument(s) - CODEC_START_ERR = -6, // invalid argument(s) - CODEC_START_I2C_ERR = -7, // invalid argument(s) - - CODEC_STATUS_RSVD = 0x7FFFFFFF -}HalCodecSts_e; - -// module gain -typedef enum -{ - MODULE_MIN = -1, - MODULE_ADC = 0x01, - MODULE_DAC = 0x02, - MODULE_ADC_DAC = 0x03, - MODULE_LINE = 0x04, - MODULE_MAX -}HalCodecModule_e; - -// Select media hal codec mode -typedef enum -{ - CODEC_MODE_ENCODE = 1, // select adc - CODEC_MODE_DECODE, // select dac - CODEC_MODE_BOTH, // select both adc and dac - CODEC_MODE_LINE_IN, // set adc channel -}HalCodecMode_e; - - -// Select adc channel for input mic signal -typedef enum -{ - CODEC_ADC_INPUT_LINE1 = 0x00, // mic input to adc channel 1 - CODEC_ADC_INPUT_LINE2, // mic input to adc channel 2 - CODEC_ADC_INPUT_ALL, // mic input to both channels of adc - CODEC_ADC_INPUT_DIFFERENCE, // mic input to adc difference channel -}HalAdcInput_e; - -// Select channel for dac output -typedef enum -{ - CODEC_DAC_OUTPUT_LINE1 = 0x00, // dac output signal to channel 1 - CODEC_DAC_OUTPUT_LINE2, // dac output signal to channel 2 - CODEC_DAC_OUTPUT_ALL, // dac output signal to both channels -}HalDacOutput_e; - - -// Select operating mode i.e. start or stop for audio codec chip -typedef enum -{ - CODEC_CTRL_STOP = 0x00, // set stop mode - CODEC_CTRL_START = 0x01, // set start mode - CODEC_CTRL_RESUME = 0x02, // set resume mode - CODEC_CTRL_POWERDONW = 0x03, // set powerdown mode -}HalCodecCtrlState_e; - -// Select I2S interface operating mode i.e. master or slave for audio codec chip -typedef enum -{ - CODEC_MODE_MASTER = 0x00, // set master mode - CODEC_MODE_SLAVE = 0x01, // set slave mode -}HalCodecIfaceMode_e; - -// Select I2S interface samples per second -typedef enum -{ - CODEC_08K_SAMPLES, // set to 8k samples per second - CODEC_16K_SAMPLES, // set to 16k samples in per second - CODEC_22K_SAMPLES, // set to 22.050k samples per second - CODEC_32K_SAMPLES, // set to 32k samples in per second - CODEC_44K_SAMPLES, // set to 44.1k samples per second - CODEC_48K_SAMPLES, // set to 48k samples per second -}HalCodecIfaceSample_e; - -// Select I2S interface number of bits per sample -typedef enum -{ - CODEC_BIT_LENGTH_16BITS = 0, // set 16 bits per sample - CODEC_BIT_LENGTH_24BITS = 2, // set 24 bits per sample - CODEC_BIT_LENGTH_32BITS = 3, // set 32 bits per sample -}HalCodecIfaceBits_e; - -// Select I2S interface format for audio codec chip -typedef enum -{ - CODEC_MSB_MODE, // set all left format */ - CODEC_LSB_MODE, // set all right format */ - CODEC_I2S_MODE, // set normal I2S format */ - CODEC_PCM_MODE, // set dsp/pcm format */ -}HalCodecIfaceFormat_e; - -// codec channel -typedef enum -{ - CODEC_MONO, - CODEC_DUAL, -}HalCodecChannel_e; - -// I2s interface configuration for audio codec chip -typedef struct -{ - HalCodecIfaceMode_e mode; // audio codec chip mode - HalCodecIfaceFormat_e fmt; // I2S interface format - HalCodecIfaceSample_e samples; // I2S interface samples per second - HalCodecIfaceBits_e bits; // i2s interface number of bits per sample - HalCodecChannel_e channel; // mono or dual channel - uint8_t polarity; -}HalCodecIface_t; - -// Configure media hal for initialization of audio codec chip -typedef struct -{ - HalAdcInput_e adcInput; // set adc channel - HalDacOutput_e dacOutput; // set dac channel - HalCodecMode_e codecMode; // select codec mode: adc, dac or both - HalCodecIface_t codecIface; // set I2S interface configuration - bool hasPA; - uint8_t codecDeviceType;// 0:HAND_SET 1:HEAD_SET_3_4_POLE 2:HEAD_SET 3:HANDS_OFF - uint8_t deviceMode; // 0: NB 1: WB - uint8_t direction; // 0: TX 1: RX - HalCodecVolParam_t codecVolParam; // each codec volume param, include slope and offset -}HalCodecCfg_t; - -typedef enum -{ - CODEC_NONE = 0, - CODEC_INIT = 1, - CODEC_START = 2, - CODEC_STANDBY = 3, - CODEC_RESUME = 4, - CODEC_POWER_DOWN = 5 -}HalCodecState_e; - -typedef struct -{ - uint16_t playState : 4; - uint16_t recordState : 4; - uint16_t playCnt : 4; - uint16_t recordCnt : 4; -}HalCodecState_t; - -// HAL codec func list -typedef struct -{ - uint8_t codecType; - HalCodecSts_e (*halCodecInitFunc)(HalCodecCfg_t *codec_cfg); // initialize codec - void (*halCodecDeinitFunc)(void); // deinitialize codec - HalCodecSts_e (*halCodecCtrlStateFunc)(HalCodecMode_e mode, HalCodecCtrlState_e ctrl_state); // control codec mode and state - HalCodecSts_e (*halCodecCfgIfaceFunc)(HalCodecMode_e mode, HalCodecIface_t *iface); // configure i2s interface - HalCodecSts_e (*halCodecSetMuteFunc) (HalCodecCfg_t* codecHalCfg, bool mute); // set codec mute - HalCodecSts_e (*halCodecSetVolumeFunc)(HalCodecCfg_t* codecHalCfg, int volume); // set codec volume - HalCodecSts_e (*halCodecGetVolumeFunc)(HalCodecCfg_t* codecHalCfg, int *volume); // get codec volume - HalCodecSts_e (*halCodecSetMicVolumeFunc)(HalCodecCfg_t* codecHalCfg, uint8_t micGain, int volume); // set codec mic gain and volume - HalCodecSts_e (*halCodecGetMicVolumeFunc)(HalCodecCfg_t* codecHalCfg, uint8_t* micGain, int *volume); // get codec mic gain and volume - void (*halCodecEnablePAFunc) (bool enable); // enable pa - void *halCodecLock; // semaphore of codec - void *handle; // handle of audio codec - HalCodecCfg_t (*halCodecGetDefaultCfg)(); -}HalCodecFuncList_t; - - -/*----------------------------------------------------------------------------* -* GLOBAL FUNCTIONS DECLEARATION * -*----------------------------------------------------------------------------*/ - - -/** - \brief Hal codec init - \param[in] codecHalCfg codec config - \param[in] codecHalFunc codecHal func list - \param[in] needLock need semaphore lock or not in codec HAL layer - \return HalCodecFuncList_t* codec funclist - \note - */ -HalCodecFuncList_t* halCodecInit(HalCodecCfg_t* codecHalCfg, HalCodecFuncList_t* codecHalFunc, bool needLock); - -/** - \brief HAL CODEC Deinit - \param[in] codecHalFunc codecHal func list - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e halCodecDeinit(HalCodecFuncList_t* codecHal); - -/** - \brief Hal codec start/stop control - \param[in] codecHalFunc codecHal func list - \param[in] mode codec mode - \param[in] codecStartStop codec start or stop - \param[in] needLock need semaphore lock or not in codec HAL layer - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e halCodecCtrlState(HalCodecFuncList_t* codecHal, HalCodecMode_e mode, HalCodecCtrlState_e codecStartStop, bool needLock); - -/** - \brief Hal codec interface config - \param[in] codecHalFunc codecHal func list - \param[in] mode codec mode - \param[in] iface codec interface - \param[in] needLock need semaphore lock or not in codec HAL layer - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e halCodecIfaceCfg(HalCodecFuncList_t* codecHal, HalCodecMode_e mode, HalCodecIface_t *iface, bool needLock); - -/** - \brief Hal codec set mute - \param[in] codecHalFunc codecHal func list - \param[in] mute codec set mute - \param[in] needLock need semaphore lock or not in codec HAL layer - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e halCodecSetMute(HalCodecFuncList_t* codecHal, HalCodecCfg_t* codecHalCfg, bool mute, bool needLock); - -#if 0 -/** - \brief Hal codec enable pa - \param[in] codecHalFunc codecHal func list - \param[in] enable codec enable/disable pa - \param[in] needLock need semaphore lock or not in codec HAL layer - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e halCodecEnablePA(HalCodecFuncList_t* codecHal, bool enable, bool needLock); -#endif - -/** - \brief Hal codec set volume - \param[in] codecHalFunc codecHal func list - \param[in] volume codec set volume - \param[in] needLock need semaphore lock or not in codec HAL layer - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e halCodecSetVolume(HalCodecFuncList_t* codecHal,HalCodecCfg_t* codecHalCfg, int volume, bool needLock); - -/** - \brief Hal codec get volume - \param[in] codecHalFunc codecHal func list - \param[out] volume codec get volume - \param[in] needLock need semaphore lock or not in codec HAL layer - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e halCodecGetVolume(HalCodecFuncList_t* codecHal, HalCodecCfg_t* codecHalCfg, int *volume, bool needLock); - -/** - \brief Hal codec set mic volume - \param[in] codecHalFunc codecHal func list - \param[in] micGain codec set mic gain - \param[in] micVolume codec set volume - \param[in] needLock need semaphore lock or not in codec HAL layer - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e halCodecSetMicVolume(HalCodecFuncList_t* codecHal, HalCodecCfg_t* codecHalCfg, uint8_t micGain, int micVolume, bool needLock); - -/** - \brief Hal codec get default config - \param[in] codecHalFunc codecHal func list - \return HalCodecCfg_t codec defalt config - \note - */ -HalCodecCfg_t halCodecGetDefaultCfg(HalCodecFuncList_t* codecHalFunc); - - - - -#ifdef __cplusplus -} -#endif - -#endif /* _CODEC_DRV_H */ diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/eeprom/eepRom.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/eeprom/eepRom.h deleted file mode 100644 index c038eb3..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/eeprom/eepRom.h +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2020-, Copyrigths of EigenComm Ltd. - * File name: eepRom.h - * Description: EC618 eepRom driver file - * History: Rev1.0 2020-12-17 - * - ****************************************************************************/ - -#ifndef _EEPROM_EC618_H -#define _EEPROM_EC618_H - -#include "ec7xx.h" -#include "Driver_Common.h" -#include "oneWire.h" - -/** - \addtogroup eepRom_interface_gr - \{ - */ - -/******************************************************************************* - * Definitions - ******************************************************************************/ - - - -/******************************************************************************* - * API - ******************************************************************************/ - - #ifdef __cplusplus - extern "C" { -#endif - - -/** \brief ROM Operation Command */ -#define ROM_READ_CMD 0x33 -#define ROM_MATCH_CMD 0x55 -#define ROM_SKIP_CMD 0xCC -#define ROM_SEARCH_CMD 0xF0 - -/** \brief Memory Operation Command */ -#define MEM_READ_CMD 0xF0 -#define SCRATCHPAD_READ_CMD 0xAA -#define SCRATCHPAD_WRITE_CMD 0x0F -#define SCRATCHPAD_COPY_CMD 0x55 - -/** \brief EEPROM Status */ -#define EEPROMDRV_OK (0) -#define EEPROMDRV_RESET_ERR (-1) -#define EEPROMDRV_RESETPD_ERR (-2) -#define EEPROMDRV_ROMREAD_ERR (-3) -#define EEPROMDRV_ROMMATCH_ERR (-4) -#define EEPROMDRV_ROMSKIP_ERR (-5) -#define EEPROMDRV_ROMSEARCH_ERR (-6) -#define EEPROMDRV_MEMREAD_ERR (-7) -#define EEPROMDRV_SCRATCHPADREAD_ERR (-8) -#define EEPROMDRV_SCRATCHPADWRITE_ERR (-9) -#define EEPROMDRV_SCRATCHPADCOPY_ERR (-10) - -/** - \fn int32_t eePromReadRom(uint8_t* romCode) - \brief EEPROM read ROM code - \param[out] romCode ROM infomation read back. - \return read ROM status - */ -int32_t eePromReadRom(uint8_t* romCode); - -/** - \fn eePromReadMem(uint8_t targetAddr, uint8_t len, uint8_t* buffer) - \brief EEPROM read memory. - \param[in] targetAddr The target address of EEPROM. - \param[in] len Length of this read. - \param[out] buffer Data read back. - \return read memory status - */ -int32_t eePromReadMem(uint8_t targetAddr, uint8_t len, uint8_t* buffer); - -/** - \fn int32_t eePromWriteMem(uint8_t targetAddr, uint8_t len, uint8_t* buffer) - \brief EEPROM write memory - \param[in] targetAddr The target address of EEPROM. - \param[in] len Length of this write. - \param[in] buffer Data needs to write into memory. - \return Write memory status - */ -int32_t eePromWriteMem(uint8_t targetAddr, uint8_t len, uint8_t* buffer); - -void eepRomInit(OwModeSel_e mode); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/exstorage/ex_flash.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/exstorage/ex_flash.h deleted file mode 100644 index a82d0a1..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/exstorage/ex_flash.h +++ /dev/null @@ -1,202 +0,0 @@ -/****************************************************************************** - -*(C) Copyright 2018 EIGENCOMM International Ltd. - -* All Rights Reserved - -****************************************************************************** -* Filename: -* -* Description: -* -* History: -* -* Notes: -* -******************************************************************************/ - -#ifndef __EX_FLASH_H__ -#define __EX_FLASH_H__ - - -/*----------------------------------------------------------------------------* - * INCLUDES * - *----------------------------------------------------------------------------*/ - - -#include -#include - - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ - - -/* EXFLASH Error codes */ -#define EXFLASH_OK ((uint8_t)0x00) -#define EXFLASH_ERROR ((uint8_t)0x01) -#define EXFLASH_BUSY ((uint8_t)0x02) -#define EXFLASH_NOT_SUPPORTED ((uint8_t)0x04) - - -#define PAGE_SIZE 256 -#define SECTOR_SIZE 4096 - -#define Dummy_Byte1 0xFF - - - - -/*********commands*******************************************/ - -/* Read Operations */ -#define READ_CMD 0x03 -#define FAST_READ_CMD 0x0B - - -/* Write Operations */ -#define WRITE_ENABLE_CMD 0x06 -#define WRITE_DISABLE_CMD 0x04 - -#define WRITE_VOLATILE_REG_CMD 0x50 - -/* Register Operations */ -#define READ_STATUS_REG1_CMD 0x05 -#define READ_STATUS_REG2_CMD 0x35 -#define WRITE_STATUS_REG1_CMD 0x01 -#define WRITE_STATUS_REG2_CMD 0x31 - -/* Program Operations */ -#define PAGE_PROG_CMD 0x02 -#define QUAD_INPUT_PAGE_PROG_CMD 0x32 - -/* Erase Operations */ -#define SECTOR_ERASE_CMD 0x20 -#define BLOCK_ERASE_32K_CMD 0x52 -#define BLOCK_ERASE_64K_CMD 0xD8 -#define CHIP_ERASE_CMD 0xC7//or 0x60 - - -/* Identification Operations */ -#define READ_ID_CMD 0x90 -#define DUAL_READ_ID_CMD 0x92 -#define QUAD_READ_ID_CMD 0x94 -#define READ_JEDEC_ID_CMD 0x9F - - -/*----------------------------------------------------------------------------* - * DATA TYPE DEFINITION * - *----------------------------------------------------------------------------*/ - - - -/*----------------------------------------------------------------------------* - * GLOBAL FUNCTIONS DECLEARATION * - *----------------------------------------------------------------------------*/ - - -/** - \fn exFlashChipErase(void) - \brief perform chip level erase, use with caution!! - \param[in] - \note -*/ -void exFlashChipErase(void); - -/** - \fn exFlashBlockErase(void) - \brief perform block level erase - \param[in] u32Data_Addr :Block first address to start erasing - u8mode :Erase mode 1=32K other=64K - \note -*/ -void exFlashBlockErase(uint32_t u32Erase_Addr, uint8_t u8mode); - -/** - \fn exFlashSectorErase(void) - \brief perform sector level erase, normally sector is 4K - \param[in] u32Data_Addr :Block first address to start erasing - \note -*/ -void exFlashSectorErase(uint32_t u32Erase_Addr); - - -/** - \fn exFlashRead(void) - \brief reading data of the specified length at the specified address - \param[in] u32ReadAddr Start reading address(24bit) - pu8Buffer Data storage buffer - u16NumByteToRead The number of bytes to read(max 65535) - \note -*/ -uint8_t exFlashRead(uint8_t *pu8Buffer, uint32_t u32ReadAddr, uint16_t u16NumByteToRead); - - -/** - \fn exFlashPagePro(void) - \brief starts writing data of up to 256 bytes at a specified address on one page (0~65535) - \param[in] u32ReadAddr Start reading address(24bit) - pu8Buffer:Data storage buffer - u16NumByteToWrite:The number of bytes to write (maximum 256), - * the number should not exceed the number of remaining bytes on the page!!! - \note -*/ -void exFlashPagePro(uint32_t u32WriteAddr, uint8_t *pu8Buffer, uint16_t u16NumByteToWrite); - - - -/** - \fn exFlashReadMDID(void) - \brief reading device ID from flash - \param[in] - \note -*/ -uint16_t exFlashReadMDID(void); - - - -/** - \fn exFlashErase(uint32_t eAddr, uint32_t size) - \brief Erases the flash region. use different erase cmd according to size - \param[in] eAddr addr to erase - size erase len - \note -*/ -uint8_t exFlashErase(uint32_t eAddr, uint32_t size); - - -/** - \fn exFlashWrite(uint8_t* pData, uint32_t WriteAddr, uint32_t Size) - \brief Writes an amount of data to the QSPI flash. - \param[in] pData: Data Pointer to write - WriteAddr: Write start address - Size: Size of data to write - \note -*/ -uint8_t exFlashWrite(uint8_t* pData, uint32_t WriteAddr, uint32_t Size); - - - - - -/** - \fn exFlashInit(void) - \brief init the external spi flash - \param[in] - \note -*/ -uint8_t exFlashInit(void); - -/** - \fn exFlashDeinit(void) - \brief deinit the external spi flash - \param[in] - \note -*/ -uint8_t exFlashDeinit(void); - - -#endif - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/exstorage/ex_storage.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/exstorage/ex_storage.h deleted file mode 100644 index 83857d8..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/exstorage/ex_storage.h +++ /dev/null @@ -1,176 +0,0 @@ -/****************************************************************************** - -*(C) Copyright 2018 EIGENCOMM International Ltd. - -* All Rights Reserved - -****************************************************************************** -* Filename: -* -* Description: -* -* History: -* -* Notes: -* -******************************************************************************/ - -#ifndef __EX_STORAGE_H__ -#define __EX_STORAGE_H__ - - -/*----------------------------------------------------------------------------* - * INCLUDES * - *----------------------------------------------------------------------------*/ - - -#include -#include - - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ - -#define EXSTO_OK 0 -#define EXSTO_EUNDEF -1 /* undefined error */ -#define EXSTO_EINIT -2 /* ex-storage init fail */ -#define EXSTO_EDEINIT -3 /* ex-storage deinit fail */ -#define EXSTO_EERASE -4 /* flash erase fail */ -#define EXSTO_EWRITE -5 /* flash write fail */ -#define EXSTO_EREAD -6 /* flash read fail */ -#define EXSTO_EMALLOC -7 /* memory alloc fail*/ -#define EXSTO_EOVRFLOW -8 /* data overflow */ - - - -typedef enum -{ - EXSTO_ZONE_BEGIN = 0, - EXSTO_ZONE_EF_DATA = EXSTO_ZONE_BEGIN, - EXSTO_ZONE_EF_RSVD, - EXSTO_ZONE_SD_DATA, - EXSTO_ZONE_SD_RSVD, - - EXSTO_ZONE_MAXNUM, - EXSTO_ZONE_UNDEF = 0xff -}ExStoZoneId_e; - -typedef uint32_t ExStoZoneId_bm; -#define EXSTO_BM_ZONE_EF_DATA (1 << EXSTO_ZONE_EF_DATA) -#define EXSTO_BM_ZONE_EF_RSVD (1 << EXSTO_ZONE_EF_RSVD) -#define EXSTO_BM_ZONE_SD_DATA (1 << EXSTO_ZONE_SD_DATA) -#define EXSTO_BM_ZONE_SD_RSVD (1 << EXSTO_ZONE_SD_RSVD) - - - - -/*----------------------------------------------------------------------------* - * DATA TYPE DEFINITION * - *----------------------------------------------------------------------------*/ - - - -/*----------------------------------------------------------------------------* - * GLOBAL FUNCTIONS DECLEARATION * - *----------------------------------------------------------------------------*/ - -/** - \fn uint8_t exStorageInit(void) - \brief init the external storage - \param[in] - \note -*/ -int32_t exStorageInit(void); - - - -/** - \fn int32_t exStorageDeinit(void) - \brief deinit the external storage - \param[in] - \note -*/ -int32_t exStorageDeinit(void); - - - -/** - \fn int32_t exStorageClear(uint32_t zid, uint32_t offset, uint32_t len) - \brief erase the area to be write - \param[in] zid resv for future use - offset erase start addr - len erase len - \note -*/ -int32_t exStorageClear(uint32_t zid, uint32_t offset, uint32_t len); - - - -/** - \fn int32_t exStorageWrite(uint32_t zid, uint32_t offset, uint8_t *buf, uint32_t bufLen) - \brief write data of the specified length at the specified address - \param[in] zid resv for future use - offset write start addr - buf write buf - bufLen write len - \note -*/ -int32_t exStorageWrite(uint32_t zid, uint32_t offset, uint8_t *buf, uint32_t bufLen); - - - -/** - \fn int32_t exStorageRead(uint32_t zid, uint32_t offset, uint8_t *buf, uint32_t bufLen) - \brief reading data of the specified length at the specified address - \param[in] zid resv for future use - offset read start addr - buf read buf - bufLen read len - \note -*/ -int32_t exStorageRead(uint32_t zid, uint32_t offset, uint8_t *buf, uint32_t bufLen); - -/** - * @brief exStorageGetZid(uint32_t addr, uint32_t *size, uint32_t *offset); - * @details get the es zid according starting address and size of the zone - * - * @param addr the starting addr of the zone - * @param size the size of the zone - * @param offset the offset to starting addr of the zone - * @return the zone ID. - */ -uint32_t exStorageGetZid(uint32_t addr, uint32_t *size, uint32_t *offset); - -/** - * @brief exStorageGetSize(uint32_t zid, uint8_t isOvhdExcl) - * @details get the nvm size of specific fota zone - * - * @param zid zone Id of fota nvm - * @param isOvhdExcl overhead size of the zone is excluded or not - * @return the size of zone. - */ -uint32_t exStorageGetSize(uint32_t zid, uint8_t isOvhdExcl); - -/** - * @brief exStorageVerifyPkg(uint32_t zid, uint8_t *hash, uint32_t pkgSize, uint32_t *pkgState) - * @details validate the data pkg - * - * @param pkgState the last state of data pkg - * @return 0 succ; < 0 failure with errno. - */ -int32_t exStorageVerifyPkg(uint32_t zid, uint8_t *hash, uint32_t pkgSize, uint32_t *pkgState); - -/** - * @brief exStorageGetUpdResult(uint32_t zid, int32_t *pkgState) - * @details get the updated result - * - * @param pkgState the last state of data pkg - * @return 0 succ; < 0 failure with errno. - */ -int32_t exStorageGetUpdResult(uint32_t zid, int32_t *pkgState); - - -#endif - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/keypad/keypad.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/keypad/keypad.h deleted file mode 100644 index 728c349..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/keypad/keypad.h +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2020-, Copyrigths of EigenComm Ltd. - * File name: tp.h - * Description: EC618 tp driver file - * History: Rev1.0 2020-12-17 - * - ****************************************************************************/ - -#ifndef _KEYPAD_EC718_H -#define _KEYPAD_EC718_H - -#include "ec7xx.h" -#include "Driver_Common.h" - -#include "kpc.h" -#include "kpc_defs.h" -/** - \addtogroup tp_interface_gr - \{ - */ - -/******************************************************************************* - * Definitions - ******************************************************************************/ -/** \brief KEYPAD location */ -// ROW PIN -/* GPIO27 */ -#define KEYPAD_ROW_0_PAD_INDEX (52) -#define KEYPAD_ROW_0_ALT_FUNC (PAD_MUX_ALT6) - -/* GPIO26 */ -#define KEYPAD_ROW_1_PAD_INDEX (51) -#define KEYPAD_ROW_1_ALT_FUNC (PAD_MUX_ALT6) - -/* GPIO25 */ -#define KEYPAD_ROW_2_PAD_INDEX (50) -#define KEYPAD_ROW_2_ALT_FUNC (PAD_MUX_ALT6) - -/* GPIO24 */ -#define KEYPAD_ROW_3_PAD_INDEX (49) -#define KEYPAD_ROW_3_ALT_FUNC (PAD_MUX_ALT6) - -/* GPIO23-AGPIO3 */ -#define KEYPAD_ROW_4_PAD_INDEX (48) -#define KEYPAD_ROW_4_ALT_FUNC (PAD_MUX_ALT6) - - -// COLUMNS PIN -/* GPIO13 */ -#define KEYPAD_COLUMN_0_PAD_INDEX (28) -#define KEYPAD_COLUMN_0_ALT_FUNC (PAD_MUX_ALT6) - -/* GPIO12 */ -#define KEYPAD_COLUMN_1_PAD_INDEX (27) -#define KEYPAD_COLUMN_1_ALT_FUNC (PAD_MUX_ALT6) - -/* GPIO20 */ -#define KEYPAD_COLUMN_2_PAD_INDEX (45) -#define KEYPAD_COLUMN_2_ALT_FUNC (PAD_MUX_ALT6) - -/* GPIO21 */ -#define KEYPAD_COLUMN_3_PAD_INDEX (46) -#define KEYPAD_COLUMN_3_ALT_FUNC (PAD_MUX_ALT6) - -#define ROWS (5) -#define COLUMNS (4) - - -/******************************************************************************* - * API - ******************************************************************************/ - - #ifdef __cplusplus - extern "C" { -#endif -void keypadInit(void); -void keypadScan(void); -void keypadLoop(void); -int32_t KPC_eventQueueRead(KpcReportEvent_t *eventPtr); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/keypad/kpc_defs.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/keypad/kpc_defs.h deleted file mode 100644 index df41ba4..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/keypad/kpc_defs.h +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2023-, Copyrigths of EigenComm Ltd. - * File name: kpc_defs.h - * Description: ec7xx keypad func code header file - * History: Rev1.0 2023-11-22 - * - ****************************************************************************/ -#ifndef _KPC_DEFS_H -#define _KPC_DEFS_H -#ifdef __cplusplus -extern "C" { -#endif - -#define OK_KEY_ROW (1) -#define OK_KEY_COLUMN (1) -#define OK_KEY_CODE (0xF2) - -#define CLEAR_KEY_ROW (2) -#define CLEAR_KEY_COLUMN (3) -#define CLEAR_KEY_CODE (0xF0) - -#define CANCEL_KEY_ROW (1) -#define CANCEL_KEY_COLUMN (3) -#define CANCEL_KEY_CODE (0xF1) - -#define UP_KEY_ROW (4) -#define UP_KEY_COLUMN (0) -#define UP_KEY_CODE (0xF3) - -#define DOWN_KEY_ROW (3) -#define DOWN_KEY_COLUMN (2) -#define DOWN_KEY_CODE (0xF4) - -#define F1_KEY_ROW (0) -#define F1_KEY_COLUMN (1) -#define F1_KEY_CODE (0xF5) - -#define F2_KEY_ROW (0) -#define F2_KEY_COLUMN (2) -#define F2_KEY_CODE (0xF6) - -#define NULL_KEY_CODE (0xFF) - -#define FUNC_KEY_ROW (3) -#define FUNC_KEY_COLUMN (2) -#define FUNC_KEY_CODE (0xFE) - -#define MENU_KEY_ROW (3) -#define MENU_KEY_COLUMN (0) -#define MENU_KEY_CODE (0xFD) - -#define FUNC_CODE_YES 'a' -#define FUNC_CODE_NO 'b' - -//在LCD V1.1和手机æ¿ä¸Šçš„menu yesæŒ‰é”®äº’æ¢ -#define FUNC_CODE_MENU 'm' -#define FUNC_CODE_BACK 'n' -#define FUNC_CODE_DIAL 'C' -#define FUNC_CODE_DIR_U 'U' -#define FUNC_CODE_DIR_D 'D' -#define FUNC_CODE_DIR_L 'L' -#define FUNC_CODE_DIR_R 'R' - -#ifdef __cplusplus -} -#endif -#endif \ No newline at end of file diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/README.md b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/README.md deleted file mode 100644 index d5a2ec5..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/README.md +++ /dev/null @@ -1,109 +0,0 @@ -# LCD - -```bash -├── lcdDev -| ├── disFormat.c -| ├── lcdComm.c -| ├── lcdDev_7796.c -| ├── lcdDev_3037.c -| └── lcdDev_7789.c -└── lcdDrv.c -``` - -* æ—¶é’Ÿæµ‹é‡æŽ¥å£ç”¨äºŽåˆ†æžæ‰§è¡Œè€—时,并将所有耗时存储到外部flash导出(格å¼ä¸ºcsv) - -```bash -uint32_t measure_execution(void (*func)(va_list), ...) -``` - -## LSPI - -## Interface - -* 3线Iåž‹ – SCLã€CSã€SDA - 3线1data 9bit SPI – åŠåŒå·¥ï¼Œåªæœ‰ä¸€æ ¹åŒå‘的数æ®çº¿ -* 3线IIåž‹ –SCLã€CSã€SDIã€SDO - 3线2data 9bit SPI – å…¨åŒå·¥ï¼Œæœ‰ç‹¬ç«‹çš„MOSIã€MISO -* 4线Iåž‹ – SCLã€DCXã€CSã€SDA - 4线1data 8bit SPI – åŠåŒå·¥ï¼Œåªæœ‰ä¸€æ ¹åŒå‘的数æ®çº¿ -* 4线IIåž‹ – SCLã€DCXã€CSã€SDIã€SDO - 4线2data 8bit SPI –全åŒå·¥ï¼Œæœ‰ç‹¬ç«‹çš„MOSIã€MISO - -**SCL对应LSPI CLK,DCX对应LSPI WRX,多数LCD没有SDO** - -```bash - lspiCtrl.busType = 1; // Interface II - lspiCtrl.line4 = 1; - lspiCtrl.data2Lane = 0; -``` - -## DataFormat - -* 相较很多LCDçš„æŽ¥æ”¶æ•°æ®æ ¼å¼ï¼ŒLSPI默认先å‘逿”¾ä½Žä½ï¼ˆå¤§ç«¯æ¨¡å¼ï¼Œbit0在低ä½ï¼‰ï¼Œæ‰€ä»¥ä¼šå¯¼è‡´é¢œè‰²å转,读出的数æ®ä¹Ÿä¼šå¤§å°ç«¯å转。 -* 如果采用32ä½å¯„存器长度,ä¸è¿›è¡Œæ•°æ®åŽ‹ç¼©ï¼Œæ˜¯æ— æ³•ä¿®æ³•æ•°æ®é¡ºåºçš„。 - -```bash - lspiDataFmt.wordSize = 15; - lspiDataFmt.txPack = 1; - lspiDataFmt.rxPack = 1; - lspiDataFmt.endianMode = 1; - lspiDataFmt.rxFifoEndianMode = 1; - lcdDrv->ctrl(LSPI_CTRL_DATA_FORMAT, 0); -``` - -在转æ¢ç¼–ç æ—¶ï¼Œå…¸åž‹æµç¨‹å¦‚å°†RGB565转æ¢ä¸ºYUV420的步骤: - -* å°†RGB565转æ¢ä¸ºRGB888 -* å°†RGB888转æ¢ä¸ºYUV444 -* å°†YUV444转æ¢ä¸ºYUV420 - -### 注æ„事项 - -* 1)使用DMA->LSPI需è¦ä½¿èƒ½ç›¸å…³æ—¶é’Ÿ -```bash - PSRAM_dmaAccessClkCtrl(true); -``` - -* 2)DMA传输RGB565奇数åƒç´ æ—¶æœ€åŽä¸€ä¸ªåƒç´ æ— æ³•输出,需è¦åœ¨å¡«å……DMAæ•°æ®æ—¶è¡¥ä¸€ä¸ªåƒç´ ï¼ˆRGB565 - 2bytes),而LSPI的传输长度ä¸éœ€è¦è¡¥ï¼Œè¿™æ ·å®žé™…传输的åƒç´ ä¸ä¼šå¤šå‡ºä¸€ä¸ªã€‚ - -## LCD - -| Driver | Interface | DataLane | Resolution | TransTime | FrameRate -| ------- | ------- | ------- | ------- | ------- | ------- | -| ST7789 | 4Wire-II | 1 | 240x320 | 24ms | 41 fps -| ST7789 | 4Wire-II | 2 | 240x320 | 14ms | 72 fps -| NV3037 | 4Wire-II | 2 | 320x480 | 27ms | 37 fps -| ST7796 | 4Wire-II | 1 | 320x480 | 41ms | 24 fps - -* 最高速率在LSPIé…ç½®51MHzæ—¶é’Ÿæ¡ä»¶ä¸‹æµ‹å¾—,相关é…ç½®**lspi.c** - -### ST7796S - -* 读数æ®çš„æ—¶é’ŸæŽ¨è12MHzï¼Œæ—¶é’Ÿå¤ªé«˜ä¼šå‡ºçŽ°æ•°æ®æ— æ³•å¯¹é½ -* 读å–LCD RAMæ•°æ®ä½¿ç”¨0x3E寄存器 -* MADCTL 0x36 / MADCTRå½±å“RGBæŽ’åˆ—é¡ºåº -* RDDST 0x09 (0x53) 写入和读出的数æ®å色 - -MADCTLå¯„å­˜å™¨æŽ§åˆ¶æ˜¾ç¤ºæ–¹å‘ -```bash -Bit D7 MY -0:Top to Bottom -1:Bottom to Top - -Bit D6 MX -0:Left to Right (MX=0 MEM RGB) -1:Right to Left (MX=1 MEM BGR) - -Bit D5 MV -1: Row/column exchange - -Bit D4 ML (Vertical Refresh Order) -0:LCD refresh Top to Bottom -1:LCD refresh Bottom to Top - -Bit D3 RGB -0:RGB -1:BGR - -Bit D2 MH (Horizontal Refresh Order) -0:Left to Right -1:Right to Left -``` - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/disFormat.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/disFormat.h deleted file mode 100644 index 2b6e707..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/disFormat.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef _DIS_FMT_H_ -#define _DIS_FMT_H_ -#ifdef __cplusplus -extern "C" { -#endif -void yuv422ToRgb565(const void *inbuf, void *outbuf, int width, int height); -void yuv420ToRgb565(const void* inbuf, void* outbuf, int width, int height); -void rgb565ToYuv422(const void *inbuf, void *outbuf, int width, int height); -void rgb565ToYuv420(const void* inbuf, void* outbuf, int width, int height); -void rgb565ToYCbCr(const void *inbuf, void *outbuf, int width, int height); -void yCbCrToRgb565(const void *inbuf, void *outbuf, int width, int height); -#ifdef __cplusplus -} -#endif -#endif /* _DIS_FMT_H_ */ - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/lcdComm.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/lcdComm.h deleted file mode 100644 index 744224d..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/lcdComm.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef _LCD_COMM_H -#define _LCD_COMM_H -#ifdef __cplusplus -extern "C" { -#endif -#include -#include -#include "ec7xx.h" -#include "bsp.h" -#include "lspi.h" - -#define DMA_BULK_NUM (1023*8) -#define DMA_DESC_MAX (160) // RGB888 man need big desc chain - - -void lcdWriteCmd(uint8_t cmd); -void lcdWriteData(uint8_t data); -void lcdInterfaceType(uint8_t type); -void lspiCmdSend(uint8_t cmd, uint8_t *data, uint8_t num); -void lspiReadReg(uint8_t addr,uint8_t *data,uint16_t num, uint8_t dummyCycleLen); -void lspiReadRam(uint32_t *data,uint32_t num); -void lcdDrvDelay(uint32_t ms); -void lspiFifoWrite(uint32_t data); - -#if (BK_USE_PWM == 1) -uint32_t millis(void); -uint8_t lcdPwmBkLevel(uint8_t level); -#endif - -#if (BK_USE_GPIO == 1) -void lcdGpioBkLevel(uint8_t level); -#endif - -typedef void (*lcdDmaCb)(uint32_t event); -typedef void (*lcdUspCb)(); - -int dmaInit(lcdDmaCb cb); -void lcdRst(uint32_t highUs, uint32_t lowUs); -void dmaStartStop(bool start); -int lspiDefaultCfg(lcdDrvFunc_t *lcd, lcdUspCb cb, uint32_t freq, uint8_t bpp); -int lcdDmaTrans(lcdDrvFunc_t *lcd, void *sourceAddress, uint32_t totalLength); -void lcdMspiSet(uint8_t enable, uint8_t addrLane, uint8_t dataLane, uint8_t instruction); -void lcdMspiHsyncSet(uint8_t hsyncAddr, uint8_t hsyncInst, uint16_t vbpNum, uint16_t vfpNum); -void lcdMspiVsyncSet(uint8_t vsyncEnable, uint8_t vsyncInst, uint8_t lspiDiv); -void lcdCsnHighCycleMin(uint8_t lspiDiv); - - -#ifdef __cplusplus -} -#endif -#endif /* LCDCOMM_H */ - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/lcdDev/lcdDev_15231.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/lcdDev/lcdDev_15231.h deleted file mode 100644 index 1ed6b90..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/lcdDev/lcdDev_15231.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef LCD_AXS15231_ -#define LCD_AXS15231_ - -#define AXS15231_BPP (16) // 12: 444; 16:565; 18:666 -#define AXS15231_WIDTH (320) -#define AXS15231_HEIGHT (480) -#define AXS15231_FREQ (51*1024*1024) -#define AXS15231_INTERFACE (SPI_3W_I) -#define AXS15231_TIME_OF_FRAME (149356) // us -#define AXS15231_TE_CYCLE (16742) // us -#define AXS15231_TE_WAIT_TIME (623) // us -#define AXS15231_X_OFFSET (0) -#define AXS15231_Y_OFFSET (0) - -#if (LCD_INTERFACE_8080 == 1) -#if (AXS15231_INTERFACE != INTERFACE_8080) -#error "Please choose 8080 interface for AXS15231_INTERFACE" -#endif -#elif (LCD_INTERFACE_SPI == 1) -#if ((AXS15231_INTERFACE != SPI_3W_I) && (AXS15231_INTERFACE != SPI_3W_II) && (AXS15231_INTERFACE != SPI_4W_I) && (AXS15231_INTERFACE != SPI_4W_II)) -#error "Please choose SPI interface for AXS15231_INTERFACE" -#endif -#endif - - -#undef LCD_WIDTH -#undef LCD_HEIGHT -#define LCD_HEIGHT (AXS15231_HEIGHT) -#define LCD_WIDTH (AXS15231_WIDTH) -#define LCD_BPP_USE (AXS15231_BPP) -#define LCD_INTERFACE (AXS15231_INTERFACE) -#define LCD_FREQ (AXS15231_FREQ) -#define LCD_X_OFFSET (AXS15231_X_OFFSET) -#define LCD_Y_OFFSET (AXS15231_Y_OFFSET) - -#define LCD_PIXEL (LCD_HEIGHT*LCD_WIDTH) -#define LCD_TIME_OF_FRAME (AXS15231_TIME_OF_FRAME) // us -#define LCD_TE_CYCLE (AXS15231_TE_CYCLE) // us -#define LCD_TE_WAIT_TIME (AXS15231_TE_WAIT_TIME) // us - -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/lcdDev/lcdDev_5300.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/lcdDev/lcdDev_5300.h deleted file mode 100644 index 880ab88..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/lcdDev/lcdDev_5300.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef LCD_CO5300_ -#define LCD_CO5300_ - -#define CO5300_BPP (16) // 16:565; 18:666 24:888 -#define CO5300_WIDTH (460) -#define CO5300_HEIGHT (460) -#define CO5300_FREQ (51*1024*1024) -#define CO5300_INTERFACE (MSPI_4W_II) -#define CO5300_TE_CYCLE (16327) // us -#define CO5300_TE_WAIT_TIME (425) // us -#define CO5300_X_OFFSET (0xa) -#define CO5300_Y_OFFSET (0) - -#if (ST8601_INTERFACE == MSPI_4W_II) -#if (LCD_INTERFACE_MSPI != 1) -#error "Please choose MSPI interface in RTE_Device.h" -#endif -#endif - - -#undef LCD_WIDTH -#undef LCD_HEIGHT -#define LCD_HEIGHT (CO5300_HEIGHT) -#define LCD_WIDTH (CO5300_WIDTH) -#define DEFAULT_INST (0x2) -#define LCD_BPP_USE (CO5300_BPP) -#define LCD_INTERFACE (CO5300_INTERFACE) -#define LCD_FREQ (CO5300_FREQ) -#define LCD_X_OFFSET (CO5300_X_OFFSET) -#define LCD_Y_OFFSET (CO5300_Y_OFFSET) - -#define LCD_PIXEL (LCD_HEIGHT*LCD_WIDTH) -#define LCD_TE_CYCLE (CO5300_TE_CYCLE) // us -#define LCD_TE_WAIT_TIME (CO5300_TE_WAIT_TIME) // us - -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/lcdDev/lcdDev_7789.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/lcdDev/lcdDev_7789.h deleted file mode 100644 index 8fec194..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/lcdDev/lcdDev_7789.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef LCD_ST7789_ -#define LCD_ST7789_ - -#define ST7789_BPP (16) // 12: 444; 16:565; 18:666 -#define ST7789_WIDTH (240) -#define ST7789_HEIGHT (320) -#define ST7789_FREQ (51*1024*1024) -#define ST7789_INTERFACE (SPI_4W_II) -#define ST7789_TIME_OF_FRAME (149356) // us -#define ST7789_TE_CYCLE (16742) // us -#define ST7789_TE_WAIT_TIME (623) // us -#define ST7789_X_OFFSET (0) -#define ST7789_Y_OFFSET (0) - -#if (LCD_INTERFACE_8080 == 1) -#if (ST7789_INTERFACE != INTERFACE_8080) -#error "Please choose 8080 interface for ST7789_INTERFACE" -#endif -#elif (LCD_INTERFACE_SPI == 1) -#if ((ST7789_INTERFACE != SPI_3W_I) && (ST7789_INTERFACE != SPI_3W_II) && (ST7789_INTERFACE != SPI_4W_I) && (ST7789_INTERFACE != SPI_4W_II)) -#error "Please choose SPI interface for ST7789_INTERFACE" -#endif -#endif - - -#undef LCD_WIDTH -#undef LCD_HEIGHT -#define LCD_HEIGHT (ST7789_HEIGHT) -#define LCD_WIDTH (ST7789_WIDTH) -#define LCD_BPP_USE (ST7789_BPP) -#define LCD_INTERFACE (ST7789_INTERFACE) -#define LCD_FREQ (ST7789_FREQ) -#define LCD_X_OFFSET (ST7789_X_OFFSET) -#define LCD_Y_OFFSET (ST7789_Y_OFFSET) - -#define LCD_PIXEL (LCD_HEIGHT*LCD_WIDTH) -#define LCD_FREQ (ST7789_FREQ) -#define LCD_TIME_OF_FRAME (ST7789_TIME_OF_FRAME) // us -#define LCD_TE_CYCLE (ST7789_TE_CYCLE) // us -#define LCD_TE_WAIT_TIME (ST7789_TE_WAIT_TIME) // us - -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/lcdDev/lcdDev_77903.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/lcdDev/lcdDev_77903.h deleted file mode 100644 index 99f3974..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/lcdDev/lcdDev_77903.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef LCD_ST77903_ -#define LCD_ST77903_ - -#define ST77903_BPP (16) // 16:565; 18:666 24:888 -#define ST77903_WIDTH (400) -#define ST77903_HEIGHT (400) -#define ST77903_FREQ (8*1024*1024) -#define ST77903_INTERFACE (MSPI_4W_II) -#define BIST_TEST (0) -#define ST77903_TIME_OF_FRAME (149356) // us -#define ST77903_TE_CYCLE (16742) // us -#define ST77903_TE_WAIT_TIME (623) // us -#define ST77903_X_OFFSET (0) -#define ST77903_Y_OFFSET (0) - -#if (ST77903_INTERFACE == MSPI_4W_II) -#if (LCD_INTERFACE_MSPI != 1) -#error "Please choose MSPI interface in RTE_Device.h" -#endif -#endif - - -#undef LCD_WIDTH -#undef LCD_HEIGHT -#define LCD_HEIGHT (ST77903_HEIGHT) -#define LCD_WIDTH (ST77903_WIDTH) -#define DEFAULT_INST (0xde) -#define LCD_BPP_USE (ST77903_BPP) -#define LCD_INTERFACE (ST77903_INTERFACE) -#define LCD_FREQ (ST77903_FREQ) -#define LCD_X_OFFSET (ST77903_X_OFFSET) -#define LCD_Y_OFFSET (ST77903_Y_OFFSET) - -#define LCD_PIXEL (LCD_HEIGHT*LCD_WIDTH) -#define LCD_TIME_OF_FRAME (ST77903_TIME_OF_FRAME) // us -#define LCD_TE_CYCLE (ST77903_TE_CYCLE) // us -#define LCD_TE_WAIT_TIME (ST77903_TE_WAIT_TIME) // us - - -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/lcdDrv.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/lcdDrv.h deleted file mode 100644 index 6516786..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/lcd/lcdDrv.h +++ /dev/null @@ -1,236 +0,0 @@ -#ifndef _LCD_DRV_H -#define _LCD_DRV_H -#ifdef __cplusplus -extern "C" { -#endif -#include -#include -#include "ec7xx.h" -#include "bsp.h" -#include "lspi.h" -#include "disFormat.h" - -#define LCD_COLOR565(r, g, b) (((r & 0xF8) << 8) | ((g & 0xFC) << 3) | ((b & 0xF8) >> 3)) - -#define RED (0x001f) -#define GREEN (0x07e0) -#define BLUE (0xf800) -#define WHITE (0xffff) -#define BLACK (0x0000) -#define YELLOW (0xffe0) -#define PURPLE (0x8010) -#define GOLDEN (0xFEA0) - -#define SPI_3W_I (0) -#define SPI_3W_II (1) -#define SPI_4W_I (2) -#define SPI_4W_II (3) -#define MSPI_4W_II (4) -#define INTERFACE_8080 (5) - - -#define LCD_RST_LOW do {GPIO_pinWrite(LSPI_RST_GPIO_INSTANCE, 1 << LSPI_RST_GPIO_PIN, 0);}while(0) -#define LCD_RST_HIGH do {GPIO_pinWrite(LSPI_RST_GPIO_INSTANCE, 1 << LSPI_RST_GPIO_PIN, 1 << LSPI_RST_GPIO_PIN);}while(0) - - - -typedef struct -{ - uint8_t cmd; - uint8_t len; - uint8_t data[32]; -}initLine_t; - - -typedef enum -{ - stopPreview = 0, - startPreview = 1, -}camPreviewStartStop_e; - -typedef enum -{ - cbForCam = 0, - cbForFill = 1, -}uspCbRole_e; - -typedef enum -{ - TE_RISE_EDGE = 0, - TE_FALL_EDGE = 1, -}teEdgeSel_e; - - -typedef enum -{ - /* @---> X - | - Y - */ - DIS_DIR_LRTB, /**< From left to right then from top to bottom, this consider as the original direction of the screen */ - - /* Y - | - @---> X - */ - DIS_DIR_LRBT, /**< From left to right then from bottom to top */ - - /* X <---@ - | - Y - */ - DIS_DIR_RLTB, /**< From right to left then from top to bottom */ - - /* Y - | - X <---@ - */ - DIS_DIR_RLBT, /**< From right to left then from bottom to top */ - - /* @---> Y - | - X - */ - DIS_DIR_TBLR, /**< From top to bottom then from left to right */ - - /* X - | - @---> Y - */ - DIS_DIR_BTLR, /**< From bottom to top then from left to right */ - - /* Y <---@ - | - X - */ - DIS_DIR_TBRL, /**< From top to bottom then from right to left */ - - /* X - | - Y <---@ - */ - DIS_DIR_BTRL, /**< From bottom to top then from right to left */ - - DIS_DIR_MAX, - /* Another way to represent rotation with 3 bit*/ - DIS_MIRROR_X = 0x40, /**< Mirror X-axis */ - DIS_MIRROR_Y = 0x20, /**< Mirror Y-axis */ - DIS_SWAP_XY = 0x80, /**< Swap XY axis */ -} DisDirection_e; - -typedef enum -{ - LCD_POWER_OFF = 0, - LCD_POWER_ON = 1 -}lcdPowerOnOff_e; - -typedef enum -{ - CAM_PREVIEW_SET_AUTO = 0, - CAM_PREVIEW_SET_MANUAL = 1 -}lcdPreviewModeSel_e; - -typedef struct -{ - uint16_t rowScaleFrac; - uint16_t colScaleFrac; - uint16_t tailorLeft; - uint16_t tailorRight; - uint16_t tailorTop; - uint16_t tailorBottom; -}lcdPreviewManulItem_t; - -typedef struct -{ - lcdPreviewModeSel_e previewModeSel; - lcdPreviewManulItem_t previewManulSet; -}lcdIoCtrl_t; - -typedef struct _lcdDrvFunc_t lcdDrvFunc_t; -typedef void (*lspiErrCb)(uint32_t stats); - -typedef struct _lcdDrvFunc_t -{ - uint32_t id; - uint16_t width; - uint16_t height; - uint32_t freq; - uint8_t bpp; - initLine_t *initRegTbl; - uint32_t initRegTblLen; - uint8_t dir; // vertical: 0; horizontal: 1; - - int (*init) (lcdDrvFunc_t *lcd, void* uspCb, void* dmaCb, uint32_t freq, uint8_t bpp); - void (*drawPoint) (lcdDrvFunc_t *lcd, uint16_t x, uint16_t y, uint32_t dataWrite); - uint32_t (*setWindow) (lcdDrvFunc_t *lcd, uint16_t sx, uint16_t ex, uint16_t sy, uint16_t ey); - int (*fill) (lcdDrvFunc_t *lcd, uint32_t fillLen, uint8_t *buf); - void (*backLight) (lcdDrvFunc_t *lcd, uint8_t level); - void (*powerOnOff) (lcdDrvFunc_t *lcd, lcdPowerOnOff_e onoff); - void (*startStop) (lcdDrvFunc_t *lcd, bool startOrStop); - void (*startStopPreview) (lcdDrvFunc_t *lcd, camPreviewStartStop_e previewStartStop); - void (*uspIrq4CamCb) (lcdDrvFunc_t *lcd); - void (*uspIrq4FillCb) (lcdDrvFunc_t *lcd); - void (*registerUspIrqCb) (lcdDrvFunc_t *lcd, uspCbRole_e who); - void (*unregisterUspIrqCb) (lcdDrvFunc_t *lcd, uspCbRole_e who); - int (*direction) (lcdDrvFunc_t *lcd, DisDirection_e dir); - int (*close) (lcdDrvFunc_t *lcd); -}lcdDrvFunc_t; - - -#if (LCD_ST7789_ENABLE == 1) -#include "lcdDev_7789.h" -extern lcdDrvFunc_t st7789Drv; -#elif (LCD_SH8601_ENABLE == 1) -#include "lcdDev_8601.h" -extern lcdDrvFunc_t sh8601Drv; -#elif (LCD_ST7571_ENABLE == 1) -#include "lcdDev_7571.h" -extern lcdDrvFunc_t st7571Drv; -#elif (LCD_ST7567_ENABLE == 1) -#include "lcdDev_7567.h" -extern lcdDrvFunc_t st7567Drv; -#elif (LCD_ST77903_ENABLE == 1) -#include "lcdDev_77903.h" -extern lcdDrvFunc_t st77903Drv; -#elif (LCD_GC9307_ENABLE == 1) -#include "lcdDev_9307.h" -extern lcdDrvFunc_t gc9307Drv; -#elif (LCD_AXS15231_ENABLE == 1) -#include "lcdDev_15231.h" -extern lcdDrvFunc_t axs15231Drv; -#elif (LCD_CO5300_ENABLE == 1) -#include "lcdDev_5300.h" -extern lcdDrvFunc_t co5300Drv; - -#endif - - -void lcdRegInit(uint32_t id); -lcdDrvFunc_t* lcdOpen(uint32_t id, void* uspCb, void* dmaCb); -int lcdClose(lcdDrvFunc_t *pdrv); -void lcdIoInit(bool isAonIO); -void lcdRegisterSlp1Cb(lcdSlp1Cb_fn cb); -int lcdDirection(lcdDrvFunc_t *pdrv, DisDirection_e dir); -int lcdFill(lcdDrvFunc_t *pdrv, uint32_t fillLen, uint8_t* buf); -void lcdDrawPoint(lcdDrvFunc_t *pdrv, uint16_t x, uint16_t y, uint32_t dataWrite); -void camPreview(lcdDrvFunc_t *pdrv, camPreviewStartStop_e previewStartStop); -void lcdBackLight(lcdDrvFunc_t *pdrv, uint8_t level); -uint32_t lcdSetWindow(lcdDrvFunc_t *pdrv, uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey); -void lspiRstAndClearFifo(); -void lspiRegisterErrStatsCb(lspiErrCb errCb); -void lspiCheckErrStats(); -void imageRotateColor(uint8_t* src, uint32_t width, uint32_t height, uint8_t* dst, uint8_t bpp); -void imageRotateGray(uint8_t* src, uint32_t width, uint32_t height, uint8_t* dst); -void yuv422ToRgb565_2(const void* inbuf, void* outbuf, int width, int height); -void lcdIoCtrl(lcdDrvFunc_t *lcd, lcdIoCtrl_t ioCtrl); -void lcdConfigReg(lcdDrvFunc_t *lcd, uint8_t cmd, uint8_t *data, uint8_t dataLen); -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) -void calTe(uint32_t totalBytes, uint16_t sy); -#else // 719 -void calTe(teEdgeSel_e teEdge, uint16_t xs, uint16_t ys, uint16_t xe, uint16_t ye); -#endif - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/ntc/ntc.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/ntc/ntc.h deleted file mode 100644 index 0bf8485..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/ntc/ntc.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef _NTC_H -#define _NTC_H - -#ifdef __cplusplus -extern "C" { -#endif - -/** - \brief Get NTC temperature - - Vref(AIO1 output 1200000 uV) - v - | - | - +-+ - | | - | | R = 10 Kohm - | | - +-+ - |--------->(AIO2) - +-+ - | | - | | Rntc - | | - +-+ - | - ----- - --- (GND) - - - - \param[in] adcInputVoltage ADC input voltage in unit of uV - \return temperature in unit of mili degree centigrade - */ -int32_t ntcGetTemperature(int32_t adcInputVoltage); - -#ifdef __cplusplus -} -#endif - -#endif /* _NTC_H */ diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/plat_config.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/plat_config.h deleted file mode 100644 index a12b8f0..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/plat_config.h +++ /dev/null @@ -1,852 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2019-, Copyrigths of EigenComm Ltd. - * File name: plat_config.h - * Description: platform configuration header file - * History: Rev1.0 2019-01-18 - * Rev1.1 2019-11-27 Reimplement file operations with OSA APIs(LFS wrapper), not directly using LFS APIs in case of file system replacement - * Rev1.2 2020-01-01 Separate plat config into two parts, FS and raw flash - * - ****************************************************************************/ - -#ifndef _PLAT_CONFIG_H -#define _PLAT_CONFIG_H - -#include "Driver_Common.h" -#include "cmsis_compiler.h" - -/******************************************************************************* - * Definitions - ******************************************************************************/ - - -//use FEATURE_PLAT_CFG_FS_SUP_USBNET_ATA not DFEATURE_USBNET_ATA_FOR_AP, the plat cfgfs structure is same for bootloader and ap -#ifndef FEATURE_PLAT_CFG_FS_SUP_USBNET_ATA - -#define FS_PLAT_CONFIG_FILE_CURRENT_VERSION (0) -#else -// the version 1 use scalable plat cfg fs data structure, it's more useful when then data config grows dynamically -#define FS_PLAT_CONFIG_FILE_CURRENT_VERSION (1) -#endif - -#define RAW_FLASH_PLAT_CONFIG_FILE_CURRENT_VERSION (1) - - - /** \brief config file header typedef */ -__PACKED_STRUCT _config_file_header -{ - uint16_t fileBodySize; /**< size of file body, in unit of byte */ - uint8_t version; /**< file version, this field shall be updated when file structure is changed */ - uint8_t checkSum; /**< check sum value of file body */ -}; -typedef struct _config_file_header config_file_header_t; - -/** \brief typedef of platform configuration stored in fs */ -typedef __PACKED_UNION _EPAT_atPortFrameFormat -{ - uint32_t wholeValue; - __PACKED_STRUCT _config - { - uint32_t dataBits : 3; - uint32_t parity : 2; - uint32_t stopBits : 2; - uint32_t flowControl : 3; - } config; -} atPortFrameFormat_t; - - - -// ulg port enum -typedef enum -{ - PLAT_CFG_ULG_PORT_USB=0, - PLAT_CFG_ULG_PORT_UART, - PLAT_CFG_ULG_PORT_MIX, - PLAT_CFG_ULG_PORT_SRAM, - PLAT_CFG_ULG_PORT_MAX -} PlatCfgUlgPort_e; - - - -#if (FS_PLAT_CONFIG_FILE_CURRENT_VERSION==0) -/*verion 0 orignal plat cfg, no change the data structure compare to released sdk, -so no merge needed when new sdk release, and plat cfg fs will also not change -when new sdk burned. */ - -/** \brief typedef of platform configuration stored in fs */ -typedef __PACKED_STRUCT _NVM_EPAT_plat_config -{ - /** PM on/off flag - * valid value: - * 0x504D5544 -- PM is disabled, "PMUD" - * 0x504D5545 -- PM is enabled, "PMUE" - */ - uint32_t enablePM; - - /** sleep mode - * valid value: - * 0 -- dummy - * 1 -- dummy - */ - uint8_t sleepMode; - - /** wait n ms before sleep, when wakeup from pad - * valid value: - * 0 -- do not wait - * x -- wait x ms - */ - uint32_t slpWaitTime; - - /** AT baudrate,for AP only - * should be equal to 'atPortBaudRate' in struct plat_config_raw_flash_t - */ - uint32_t atPortBaudRate; - - /** AT port frame format*/ - atPortFrameFormat_t atPortFrameFormat; - - /** ECQSCLK config - * valid value: - * 0 -- ECQSCLK set to 0 - * 1 -- ECQSCLK set to 1 - */ - uint8_t ecSclkCfg; - - -} plat_config_fs_t; - -#else -/*version 1, scalable plat cfg, two method to update the config data structure -1.The total data size for scalable area does not change when some new config data added, the reserved data array still have some bytes spare, -the added data just use one or some bytes of the reserved data array. -When the new config data added the upgrade is compatitble. and downgrade is also compatitble too. -If the new config data added is a automatical parameter, such as the usbNetAdaptResult, it's automatically setted by the UE connected with different Host Windows or Ubuntu. -If the new config data added is not a automatical parameter, it should be setted to a meaningful value otherwise when upgrade ,it may not work correctly as required by the default 0. - -In this case, the plat cfg fs data will not be overwrited to fs when both upgarde or downgrade initlal between the old/new sdk versions that plat cfg fs data size same . -it's more convenient for lightly upgrade or downgrade. - -2.The total data size for scalable area is increased when some new config data added. because the reserved data array has no some bytes spare, -Increase the scalable area with some bytes each time, such as each time 16 bytes(_NVM_PLATCFG_SCALE_UNIT_SZ) for example. use one or some of the increased bytes by new added parameter, -some other bytes defined as reserverd data array. -In this case, the plat cfg fs data will be writed when upgrade or downgrade ocurrs. - -Set recPrevArAllSzForUpg = scaleAreaAllSize - SCALE_AREA_SCALE_UNIT_SIZE - - -2.1 Upgarde from previous plat cfg fs structure to a new added parameter new plat cfg fs structure. -Provided condition: readed scalable area total size from plat cfg fs is not same with current scaleAreaAllSize real size - - -If the readed scalable area total size from plat cfg fs is same with recPrevArAllSzForUpg, then it's upgradable. -If not same with recPrevArAllSzForUpg, then it's not upgardable because may have a lot of difference between old/new versions. - -2.2 Downgrade from a new added parameter new plat cfg fs structure to an old plat cfg fs structure. -Provided condition: readed scalable area total size from plat cfg fs is not same with current scaleAreaAllSize var - -If the readed recPrevArAllSzForUpg from plat cfg fs is current scaleAreaAllSize real size, then it's downgradable. -If recPrevArAllSzForUpg not same with current scaleAreaAllSize real size, then it's not downgradable because may have a lot of difference between old/new versions. -*/ - -#define _NVM_PLATCFG_SCALE_UNIT_SZ 16 - - -// S 53 C 43 A 41 L 4C -#define PLAT_CFG_SCALE_START_MARK 0x4353 -#define PLAT_CFG_SCALE_END_MARK 0x4C41 - - - - -#define PLAT_CFG_GRP_CNT 1 -#define PLAT_CFG_FIX_BASE_SIZE 18 - -#define SCALE_AREA_GRP_UNIT_SIZE 16 -#define PLAT_CFG_GRP0_RSVBYTES_NUM 15 -#define PLAT_CFG_GRP0_TOKBYTES_NUM (SCALE_AREA_GRP_UNIT_SIZE-PLAT_CFG_GRP0_RSVBYTES_NUM) - - -#define PLAT_CFG_GRP_DATA_X(_TYPE_XX, __NAME_XX) _TYPE_XX __NAME_XX -#define PLAT_CFG_DATA_0(_TYPE_XX, __NAME_XX) PLAT_CFG_DATA_X(_TYPE_XX, __NAME_XX) - -#define PLAT_CFG_GRP_RSV_BYTE_X(__GRP_XX, __IDX_XX) uint8_t rsvBytes_##__GRP_XX##__IDX_XX - -#define PLAT_CFG_GRP0_ALL_TOK_BYTES() \ - uint8_t usbNetAdaptResult; - - -#define PLAT_CFG_GRP0_RSVBYTE_0() PLAT_CFG_GRP_RSV_BYTE_X(0, 0); -#define PLAT_CFG_GRP0_RSVBYTE_1() PLAT_CFG_GRP_RSV_BYTE_X(0, 1); -#define PLAT_CFG_GRP0_RSVBYTE_2() PLAT_CFG_GRP_RSV_BYTE_X(0, 2); -#define PLAT_CFG_GRP0_RSVBYTE_3() PLAT_CFG_GRP_RSV_BYTE_X(0, 3); -#define PLAT_CFG_GRP0_RSVBYTE_4() PLAT_CFG_GRP_RSV_BYTE_X(0, 4); -#define PLAT_CFG_GRP0_RSVBYTE_5() PLAT_CFG_GRP_RSV_BYTE_X(0, 5); -#define PLAT_CFG_GRP0_RSVBYTE_6() PLAT_CFG_GRP_RSV_BYTE_X(0, 6); -#define PLAT_CFG_GRP0_RSVBYTE_7() PLAT_CFG_GRP_RSV_BYTE_X(0, 7); -#define PLAT_CFG_GRP0_RSVBYTE_8() PLAT_CFG_GRP_RSV_BYTE_X(0, 8); -#define PLAT_CFG_GRP0_RSVBYTE_9() PLAT_CFG_GRP_RSV_BYTE_X(0, 9); -#define PLAT_CFG_GRP0_RSVBYTE_10() PLAT_CFG_GRP_RSV_BYTE_X(0, 10); -#define PLAT_CFG_GRP0_RSVBYTE_11() PLAT_CFG_GRP_RSV_BYTE_X(0, 11); -#define PLAT_CFG_GRP0_RSVBYTE_12() PLAT_CFG_GRP_RSV_BYTE_X(0, 12); -#define PLAT_CFG_GRP0_RSVBYTE_13() PLAT_CFG_GRP_RSV_BYTE_X(0, 13); -#define PLAT_CFG_GRP0_RSVBYTE_14() PLAT_CFG_GRP_RSV_BYTE_X(0, 14); -#define PLAT_CFG_GRP0_RSVBYTE_15() PLAT_CFG_GRP_RSV_BYTE_X(0, 15); - - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_0() PLAT_CFG_GRP0_RSVBYTE_0() - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_1() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_0() \ - PLAT_CFG_GRP0_RSVBYTE_1() - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_2() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_1() \ - PLAT_CFG_GRP0_RSVBYTE_2() - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_3() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_2() \ - PLAT_CFG_GRP0_RSVBYTE_3() - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_4() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_3() \ - PLAT_CFG_GRP0_RSVBYTE_4() - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_5() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_4 ()\ - PLAT_CFG_GRP0_RSVBYTE_5() - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_6() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_5() \ - PLAT_CFG_GRP0_RSVBYTE_6() - - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_7() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_6() \ - PLAT_CFG_GRP0_RSVBYTE_7() - - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_8() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_7() \ - PLAT_CFG_GRP0_RSVBYTE_8() - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_9() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_8() \ - PLAT_CFG_GRP0_RSVBYTE_9() - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_10() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_9() \ - PLAT_CFG_GRP0_RSVBYTE_10() - - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_11() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_10() \ - PLAT_CFG_GRP0_RSVBYTE_11() - - - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_12() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_11() \ - PLAT_CFG_GRP0_RSVBYTE_12() - - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_13() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_12() \ - PLAT_CFG_GRP0_RSVBYTE_13() - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_14() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_13() \ - PLAT_CFG_GRP0_RSVBYTE_14() - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_15() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_14() \ - PLAT_CFG_GRP0_RSVBYTE_15() - - -#if (PLAT_CFG_GRP0_RSVBYTES_NUM== 0) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==1) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_0() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==2) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_1() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==3) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_2() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==4) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_3() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==5) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_4() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==6) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_5() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==7) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_6() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==8) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_7() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM== 9) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_8() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==10) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_9() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==11) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_10) -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==12) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_11) -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==13) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_12() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==14) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_13() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==15) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_14() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==16) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_15() -#endif - - - -typedef __PACKED_STRUCT plat_cfg_sc_grp0_tok_tag { - PLAT_CFG_GRP0_ALL_TOK_BYTES() -}plat_cfg_sc_grp0_tok_st; - - -typedef __PACKED_STRUCT plat_cfg_sc_grp0_all_data_tag { - PLAT_CFG_GRP0_ALL_TOK_BYTES() - PLAT_CFG_GRP0_ALL_RSV_BYTES() -}plat_cfg_sc_grp0_all_data_st; - - -#define SIZE_OF_TYPE_EQUAL_TO_SZX(type_x, size_x) \ - static inline char size_of##type_x##_equal_to_##size_x(void) { \ - char __dummy1[sizeof(type_x) - size_x]; \ - char __dummy2[size_x-sizeof(type_x)]; \ - return __dummy1[-1]+__dummy2[-1]; \ - } - -#define SIZE_OF_TYPE_EQUAL_TO_CALX(type_x, cal_sz_x) \ - static inline char size_of##type_x##_equal_to_cal_sz_x(void) { \ - char __dummy1[sizeof(type_x) - (cal_sz_x)]; \ - char __dummy2[(cal_sz_x)-sizeof(type_x)]; \ - return __dummy1[-1]+__dummy2[-1]; \ - } - - - -typedef __PACKED_STRUCT _NVM_EPAT_plat_config -{ - /*do not change any variable function or name of base fix area if want to upgrade , - because when sync para from prev plat config scale fs the para may be syncd unmatched and used uncorrectly*/ - - /** PM on/off flag - * valid value: - * 0x504D5544 -- PM is disabled, "PMUD" - * 0x504D5545 -- PM is enabled, "PMUE" - */ - uint32_t enablePM; - - /** sleep mode - * valid value: - * 0 -- dummy - * 1 -- dummy - */ - uint8_t sleepMode; - - /** wait n ms before sleep, when wakeup from pad - * valid value: - * 0 -- do not wait - * x -- wait x ms - */ - uint32_t slpWaitTime; - - /** AT baudrate,for AP only - * should be equal to 'atPortBaudRate' in struct plat_config_raw_flash_t - */ - uint32_t atPortBaudRate; - - /** AT port frame format*/ - atPortFrameFormat_t atPortFrameFormat; - - /** ECQSCLK config - * valid value: - * 0 -- ECQSCLK set to 0 - * 1 -- ECQSCLK set to 1 - */ - uint8_t ecSclkCfg; - - - /*Mark for reserve bytes area*/ - uint16_t scaleAreaStartMark; - - /*scalable area data define*/ - /*do not change any variable function or name of used scale area data, - because when sync para from prev plat config scale fs the para may be syncd unmatched and used uncorrectly*/ - //scaleAreaPureData0 - //uint8_t usbNetAdaptResult;/* 7-4: Adapt valid, 3-0:adapt result*/ - - - //scaleAreaPureData1- scaleAreaPureDataX X=(SCALE_AREA_SCALE_UNIT_SIZE-1) - //uint8_t scaleAreaSpareBytes[SCALE_AREA_SCALED_SPARE_SZ]; - PLAT_CFG_GRP0_ALL_TOK_BYTES() - PLAT_CFG_GRP0_ALL_RSV_BYTES() - - uint16_t scaleAreaEndMark; - - //scalable area data structure version, added 1 by customer if sometimes need to upgrade from specific scalable area verson to another specific scalable area version, - //if not need specific upgrade, set to defautl 0 ro add 1 just for record - uint16_t recScaleAreaGrpNum; - - uint16_t recPrevArAllSzForUpg; - - //uint16_t scaleTimers; - uint16_t scaleAreaAllSize; -} plat_config_fs_t; - - - -#endif - -/** \brief typedef of platform configuration stored in raw flash --old v0*/ -__PACKED_STRUCT _plat_config_raw_flash_v0 -{ - /** action to perform when assert or hard fault occurs - * valid value: - * 0 -- dump full exception info to flash and EPAT tool then trapped in endless loop(while(1)) - * 1 -- print necessary exception info then reset - * 2 -- dump full exception info to flash then reset - * 3 -- dump full exception info to flash and EPAT tool then reset - * 4 -- reset directly - * 10 -- enable uart help dump and dump full exception info to flash and EPAT tool then trapped in endless loop(while(1)) - * 13 -- enable uart help dump and dump full exception info to flash and EPAT tool, and then reset - */ - uint8_t faultAction; - - /** port select for dump info output when exception occurs - * valid value: - * 0,1,2,3,(4) -- specify which port - * 0xff -- disable this function - */ - uint8_t uartDumpPort; - - /** WDT start/stop control - * valid value: - * 0 -- stop WDT - * 1 -- start WDT - */ - uint8_t startWDT; - - /** unilog on/off flag - * valid value: - * 0 -- unilog is disabled - * 1 -- only sw log is enabled - * 2 -- All log is enabled - */ - uint8_t logControl; - - /** uart baudrate for unilog output */ - uint32_t uartBaudRate; - - /** debug trace log level setting, refer to 'DebugTraceLevelType_e' */ - uint32_t logLevel; - - /** unilog output port select - * valid value: - * 0 -- USB - * 1 -- UART - * 2 -- MIX(for future use UART/USB dynamic select) - **/ - PlatCfgUlgPort_e logPortSel; - - /** RNDIS enum control - * valid value: - * 0 -- enable USB init and enum RNDIS - * 1 -- enable USB init but not enum RNDIS - * 2 -- disable USB init - */ - uint8_t usbCtrl; - - /** usb software trace control - * valid value: - * 0 -- disable all usb software trace - * 1 -- enable all usb software trace - * others -- misc usb software trace - */ - uint8_t usbSwTrace; - - - - /** USB sleep mask - * valid value: - * 0 -- usb should vote to enter sleep - * 1 -- do not consider usb vote before sleep - */ - uint8_t usbSlpMask; - - /** USB sleep thd - * valid value: - * set the minimal time to sleep, when usbSlpMask=1 - */ - uint16_t usbSlpThd; - - /** pwrkey mode - * valid value: - * 1 power key mode - * 0 normal key mode - */ - uint8_t pwrKeyMode; -}; - -// fota urc port type -typedef enum -{ - PLAT_CFG_FOTA_URC_PORT_USB=0, - PLAT_CFG_FOTA_URC_PORT_UART, - PLAT_CFG_FOTA_URC_PORT_MAXTYPE -} PlatCfgFotaUrcPortType_e; - -#define PLAT_CFG_FOTA_URC_USB_PORT_IDX_MIN 0 -#define PLAT_CFG_FOTA_URC_USB_PORT_IDX_MAX 2 - -#define PLAT_CFG_FOTA_URC_UART_PORT_IDX_MIN 0 -#define PLAT_CFG_FOTA_URC_UART_PORT_IDX_MAX 1 - - -#define PLAT_CFG_RAW_FLASH_RSVD_SIZE 16 - -/** \brief typedef of platform configuration stored in raw flash */ -__PACKED_STRUCT _plat_config_raw_flash -{ - /** action to perform when assert or hard fault occurs - * valid value: - * 0 -- dump full exception info to flash and EPAT tool then trapped in endless loop(while(1)) - * 1 -- print necessary exception info then reset - * 2 -- dump full exception info to flash then reset - * 3 -- dump full exception info to flash and EPAT tool then reset - * 4 -- reset directly - * 10 -- enable uart help dump and dump full exception info to flash and EPAT tool then trapped in endless loop(while(1)) - * 13 -- enable uart help dump and dump full exception info to flash and EPAT tool, and then reset - */ - uint8_t faultAction; - - /** port select for dump info output when exception occurs - * valid value: - * 0,1,2,3,(4) -- specify which port - * 0xff -- disable this function - */ - uint8_t uartDumpPort; - - - /** WDT start/stop control - * valid value: - * 0 -- stop WDT - * 1 -- start WDT - */ - uint8_t startWDT; - - /** unilog on/off flag - * valid value: - * 0 -- unilog is disabled - * 1 -- only sw log is enabled - * 2 -- All log is enabled - */ - uint8_t logControl; - - /** uart baudrate for unilog output */ - uint32_t uartBaudRate; - - /** debug trace log level setting, refer to 'DebugTraceLevelType_e' */ - uint32_t logLevel; - - /** unilog output port select - * valid value: - * 0 -- USB - * 1 -- UART - * 2 -- MIX(for future use UART/USB dynamic select) - **/ - PlatCfgUlgPort_e logPortSel; - - /** RNDIS enum control - * valid value: - * 0 -- enable USB init and enum RNDIS - * 1 -- enable USB init but not enum RNDIS - * 2 -- disable USB init - */ - uint8_t usbCtrl; - - /** usb software trace control - * valid value: - * 0 -- disable all usb software trace - * 1 -- enable all usb software trace - * others -- misc usb software trace - */ - uint8_t usbSwTrace; - - - - /** USB sleep mask - * valid value: - * 0 -- usb should vote to enter sleep - * 1 -- do not consider usb vote before sleep - */ - uint8_t usbSlpMask; - - /** USB sleep thd - * valid value: - * set the minimal time to sleep, when usbSlpMask=1 - */ - uint16_t usbSlpThd; - - /** pwrkey mode - * valid value: - * 1 power key mode - * 0 normal key mode - */ - uint8_t pwrKeyMode; - - /** USB VBUS MODE Enable,Disable Flag - * valid value: - * 0 -- usb vbus mode disable - * 1 -- usb vbus mode enable - */ - uint8_t usbVBUSModeEn; - - /** USB VBUS MODE Wakup Pad Index - * valid value: - * 0,1,2,3,4,5 PAD IDX FOR USB VBUS WKUP PAD - */ - uint8_t usbVBUSWkupPad; - - /** USB NET IF SEL - * valid value: - * 0----RNDIS,default - * 1----ECM - */ - uint8_t usbNet; - - /** USB VCOM EN bitmap - * valid value: - * bit0---vcom0 - * bit1---vcom1 - * ---- - * ---- - */ - uint8_t usbVcomEnBitMap; - - /** AT/fotaURC baudrate, for AP & BL*/ - uint32_t atPortBaudRate; - - /** FOTA control - * 0 -- disable FOTA - * 1 -- enable FOTA - **/ - uint8_t fotaCtrl; - - /** FOTA URC output port select - * valid value(Bit4-7): - * 0 -- USB - * 1 -- UART - ** - * valid value(Bit0-3): - * 0-2 -- USB - * 0-1 -- UART - **/ - uint8_t fotaUrcPortSel; - - /** FOTA USB URC output port control - * 0 -- disable USB URC output - * 1 -- enable USB URC output - **/ - uint8_t fotaUsbUrcCtrl; - - /** pmuInCdrx - * valid value: - * 0---- - * 1---- - */ - uint8_t pmuInCdrx; - - /** slpLimitEn - * valid value: - * 0---- disable - * 1---- enable - */ - uint8_t slpLimitEn; - - /** slpLimitTime - * valid value: - * 0---0xFFFFFFFF - */ - uint32_t slpLimitTime; - - /** logOwnerAndLevel - * valid value: - * 0---0xFFFFFFFF - */ - uint32_t logOwnerAndLevel; - - /** wfi mode, do not enter doze */ - uint8_t wfiMode; - - /** ECIDLEP config - * valid value: - * 0 -- print flag set to 0 - * 1 -- print flag set to 1 - */ - uint8_t apIdlePercentPrintMode; - - /** cpSlpTest - * 0: disable sleep test - * 1: CP deepslp - * 2: Doze+pll vote disable - * 3. Doze+pll vote enable - * 4: DFC+WFI - * 5: WFI DFC disable - * 6. while - */ - uint8_t cpSlpTest; - - /* 'PLAT_CFG_RAW_FLASH_RSVD_SIZE' bytes rsvd for future */ - uint8_t resv[PLAT_CFG_RAW_FLASH_RSVD_SIZE]; -}; - -typedef struct _plat_config_raw_flash plat_config_raw_flash_t;//current -typedef struct _plat_config_raw_flash_v0 plat_config_raw_flash_v0_t;//old v0 - -/** \brief typedef of platform info layout stored in raw flash */ -__PACKED_STRUCT _plat_info_layout -{ - config_file_header_t header; /**< raw flash plat config header */ - plat_config_raw_flash_t config; /**< raw flash plat config body */ - uint32_t fsAssertCount; /**< count for monitoring FS assert, when it reaches specific number, FS region will be re-formated */ -}; -typedef struct _plat_info_layout plat_info_layout_t; - -/** @brief List of platform configuration items used to set/get sepecific setting */ -typedef enum _plat_config_id -{ - PLAT_CONFIG_ITEM_FAULT_ACTION = 0, /**< faultAction item */ - PLAT_CONFIG_ITEM_UART_DUMP_PORT, /**< uartDumpPort item */ - PLAT_CONFIG_ITEM_START_WDT, /**< startWDT item */ - PLAT_CONFIG_ITEM_LOG_CONTROL, /**< logControl item */ - PLAT_CONFIG_ITEM_LOG_BAUDRATE, /**< uart baudrate for log output */ - PLAT_CONFIG_ITEM_LOG_LEVEL, /**< logLevel item */ - PLAT_CONFIG_ITEM_ENABLE_PM, /**< enablePM item */ - PLAT_CONFIG_ITEM_SLEEP_MODE, /**< sleepMode item */ - PLAT_CONFIG_ITEM_WAIT_SLEEP, /**< wait ms before sleep */ - PLAT_CONFIG_ITEM_AT_PORT_BAUDRATE, /**< AT port baudrate */ - PLAT_CONFIG_ITEM_AT_PORT_FRAME_FORMAT, /**< AT port frame format */ - PLAT_CONFIG_ITEM_ECSCLK_CFG, /**< ECSCLK config */ - PLAT_CONFIG_ITEM_LOG_PORT_SEL, /**< ULG output port select */ - PLAT_CONFIG_ITEM_USB_CTRL, /**< USB control */ - PLAT_CONFIG_ITEM_USB_SW_TRACE_FLAG, /**< USB control */ - PLAT_CONFIG_ITEM_USB_SLEEP_MASK, /**< USB Sleep Vote Mask */ - PLAT_CONFIG_ITEM_USB_SLEEP_THD, /**< USB Sleep Thread */ - PLAT_CONFIG_ITEM_PWRKEY_MODE, /**< PWRKEY Mode */ - PLAT_CONFIG_ITEM_USB_VBUS_MODE_EN, /**< USB VBUS MODE ENABLE, DISABLE*/ - PLAT_CONFIG_ITEM_USB_VBUS_WKUP_PAD, /**< USB VBUS MODE WKUP PAD INDEX*/ - PLAT_CONFIG_ITEM_USB_NET, /**< USB NET Select*/ - PLAT_CONFIG_ITEM_USBNET_ATA_RESULT, /*USB NET Autoadapt result */ - PLAT_CONFIG_ITEM_USB_VCOM_EN_BMP, /**< USB VCOM Enabled Bitmap*/ - PLAT_CONFIG_ITEM_FOTA_CONTROL, /**< FOTA URC Port control*/ - PLAT_CONFIG_ITEM_FOTA_URC_PORT_SEL, /**< FOTA URC Port Select*/ - PLAT_CONFIG_ITEM_FOTA_USB_URC_CONTROL, /**< FOTA USB URC control*/ - PLAT_CONFIG_ITEM_PMUINCDRX, /**< PMUINCDRX Select*/ - PLAT_CONFIG_ITEM_SLP_LIMIT_EN, /**< enable sleep time limit*/ - PLAT_CONFIG_ITEM_SLP_LIMIT_TIME, /**< set maximum sleep time in mili second*/ - PLAT_CONFIG_ITEM_WFI_MODE, /**< WFI Mode */ - PLAT_CONFIG_ITEM_IDLEPERCENT_PRINT_MODE, /**< PRINT IDLE PERCENT MODE */ - PLAT_CONFIG_ITEM_CPSLPTEST_MODE, /**< CP Sleep Mode Test */ - PLAT_CONFIG_ITEM_TOTAL_NUMBER, /**< total number of items */ - PLAT_CONFIG_ITEM_LOG_OWNER_AND_LEVEL, /**< log Owner and logLevel for this Owner item */ -} plat_config_id_t; - - -/******************************************************************************* - * API - ******************************************************************************/ - -#ifdef __cplusplus - extern "C" { -#endif - -/** - \fn void BSP_SavePlatConfigToFs(void) - \brief Save platform configuration into FS - \return void - */ -void BSP_SavePlatConfigToFs(void); - -/** - \fn void BSP_LoadPlatConfigFromFs(void) - \brief Load platform configuration from FS - \return void - */ -void BSP_LoadPlatConfigFromFs(void); - -/** - \fn plat_config_fs_t* BSP_GetFsPlatConfig(void) - \brief Get FS platform configuration variable pointer - \return pointer to internal platform configuration loaded from FS - */ -plat_config_fs_t* BSP_GetFsPlatConfig(void); - -/** - \fn void BSP_SavePlatConfigToRawFlash(void) - \brief Save platform configuration into raw flash - \return void - */ -void BSP_SavePlatConfigToRawFlash(void); - -/** - \fn void BSP_LoadPlatConfigFromRawFlash(void) - \brief Load platform configuration from raw flash - \return void - */ -void BSP_LoadPlatConfigFromRawFlash(void); - -/** - \fn plat_config_raw_flash_t* BSP_GetRawFlashPlatConfig(void) - \brief Get raw flash platform configuration variable pointer - \return pointer to internal platform configuration loaded from raw flash - */ -plat_config_raw_flash_t* BSP_GetRawFlashPlatConfig(void); - -/** - \fn uint32_t BSP_GetPlatConfigItemValue(plat_config_id_t id) - \brief Get value of specific platform configuration item - \param[in] id id of platform configuration item, \ref plat_config_id_t - \return value of current configuration item - */ -uint32_t BSP_GetPlatConfigItemValue(plat_config_id_t id); - -/** - \fn void BSP_SetPlatConfigItemValue(plat_config_id_t id, uint32_t value) - \brief Set value of specific platform configuration item - \param[in] id id of platform configuration item, \ref plat_config_id_t - \param[in] value value of configuration item to set - \return void - */ -void BSP_SetPlatConfigItemValue(plat_config_id_t id, uint32_t value); - -/** - \fn uint32_t BSP_GetFSAssertCount(void) - \brief Fetch current 'fsAssertCount' value from PLAT_INFO region - \return current fsAssertCount value - */ -uint32_t BSP_GetFSAssertCount(void); - -/** - \fn void BSP_SetFSAssertCount(uint32_t value); - \brief Update 'fsAssertCount' value - \param[in] value new value assigned to 'fsAssertCount' - \return void - \note Internal use only on FS assert occurs - */ -void BSP_SetFSAssertCount(uint32_t value); - -/** - \fn void BSP_SetFsPorDefaultValue(void); - \brief when por happened some data may retore to it's default - \return void - */ -void BSP_SetFsPorDefaultValue(void); - -/** - \fn void BSP_SetPlatCfgUsbNetATAItemVal(void); - \brief when USB net auto adapt enabled, to store the adapt result usb net type - \return void - */ -void BSP_SetPlatCfgUsbNetATAItemVal(uint32_t val); - -/** - \fn void BSP_GetPlatCfgUsbNetATAEnabled(void); - \brief when USB net type config equal to ATC_ECPCFG_USBNET_VAL_AUTOADAPT_TYPE auto adapt enabled, return 1, other return 0 - \return void - */ -uint32_t BSP_GetPlatCfgUsbNetATAEnabled(void); - - -#ifdef __cplusplus -} -#endif - -#endif /* _PLAT_CONFIG_H */ diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/tp/tpComm.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/tp/tpComm.h deleted file mode 100644 index 0a0d782..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/tp/tpComm.h +++ /dev/null @@ -1,32 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2023-, Copyrigths of EigenComm Ltd. - * File name: tpComm.h - * Description: ec7xx tpComm.h - * History: Rev1.0 2023-11-13 - * - ****************************************************************************/ -#ifndef _TP_COMM_H -#define _TP_COMM_H -#ifdef __cplusplus -extern "C" { -#endif - -#include "ec7xx.h" -#include "Driver_Common.h" -#include "bsp.h" - -typedef void (*tpIsrFunc)(uint32_t); -#define I2C_IO_MODE RTE_I2C0_IO_MODE - -extern ARM_DRIVER_I2C *i2cMasterDrv; - -void tpBusInit(void); -void tpRstInit(void); -void tpIsrInit(void *cb); -uint8_t tp_i2c_read(uint8_t dev_id, uint8_t reg_addr, uint16_t len, uint8_t *data); -uint8_t tp_i2c_send(uint8_t dev_id, uint8_t reg_addr, uint16_t len, uint8_t *data); -#ifdef __cplusplus -} -#endif -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/tp/tpDev/cst816.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/tp/tpDev/cst816.h deleted file mode 100644 index 84af382..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/tp/tpDev/cst816.h +++ /dev/null @@ -1,36 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2023-, Copyrigths of EigenComm Ltd. - * File name: CST816.h - * Description: CST816 driver file - * History: Rev1.0 2023-09-18 - * - ****************************************************************************/ -#ifndef _TP_CST816_H -#define _TP_CST816_H - #ifdef __cplusplus - extern "C" { -#endif - -#include "ec7xx.h" -#include "Driver_Common.h" - - -#define CST816_ADDR 0X15 - -#define CST816_GET_GESTUREID 0x01 -#define CST816_GET_FINGERNUM 0x02 -#define CST816_GET_LOC0 0x03 -#define CST816_GET_CHIPID 0xA7 - -/******************************************************************************* - * API - ******************************************************************************/ -uint8_t tp_cst816_scan(int16_t *pos); -void tp_cst816_init(void); - - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/tp/tpDev/ft6336.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/tp/tpDev/ft6336.h deleted file mode 100644 index 62fe2f6..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/tp/tpDev/ft6336.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef _TP_FT6336_H -#define _TP_FT6336_H -#ifdef __cplusplus -extern "C" { -#endif -#include "tpComm.h" - -/******************************************************************************* - * Definitions - ******************************************************************************/ - - -//I2C读写命令 -#define FT6336_ADDR 0x38 - -/********************************FT6336 部分寄存器定义***************************/ - -#define FT6336_GET_FINGERNUM 0x02 -#define FT6336_GET_LOC0 0x03 -#define FT6336_GET_LOC1 0x09 - -/******************************************************************************* - * API - ******************************************************************************/ - - - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/tp/tpDev/gt911.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/tp/tpDev/gt911.h deleted file mode 100644 index cf78939..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/tp/tpDev/gt911.h +++ /dev/null @@ -1,53 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2020-, Copyrigths of EigenComm Ltd. - * File name: GT911.h - * Description: EC7xx touchpanel driver file - * History: Rev1.0 2023-09-18 - * - ****************************************************************************/ - -#ifndef _TP_GT911_H -#define _TP_GT911_H - -#include "ec7xx.h" -#include "Driver_Common.h" - #ifdef __cplusplus - extern "C" { -#endif - - -//I2C读写命令 -// #define GT911_ADDR 0X5D -#define GT911_ADDR 0x14 //ç”±åˆå§‹åŒ–INT输出状æ€å†³å®š -/********************************GT911部分寄存器定义***************************/ -#define GT_CTRL_REG 0X8040 //GT911控制寄存器 -#define GT_CFGS_REG 0X8047 //é…置版本 -#define GT_X_MAX_LOW 0X8048 //X轴低字节 -#define GT_X_MAX_HOW 0X8049 //X轴高字节 -#define GT_Y_MAX_LOW 0X804A //Y轴低字节 -#define GT_Y_MAX_HOW 0X804B //Y轴高字节 -#define GT_TOUCH_NUM 0X804C //输出触摸点数1--10 - - -#define GT_CHECK_REG 0X80FF //GT911校验和寄存器 -#define GT_PID_REG 0X8140 //GT911产å“ID寄存器 - -#define GT_GSTID_REG 0X814E //当剿£€æµ‹åˆ°çš„触摸情况 -#define GT_TP1_REG 0X8150 //第一个触摸点数æ®åœ°å€ -#define GT_TP2_REG 0X8158 //第二个触摸点数æ®åœ°å€ -#define GT_TP3_REG 0X8160 //第三个触摸点数æ®åœ°å€ -#define GT_TP4_REG 0X8168 //第四个触摸点数æ®åœ°å€ -#define GT_TP5_REG 0X8170 //第五个触摸点数æ®åœ°å€ - -/******************************************************************************* - * API - ******************************************************************************/ - - - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/tp/tpDrv.h b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/tp/tpDrv.h deleted file mode 100644 index 38512d6..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/inc/tp/tpDrv.h +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2023-, Copyrigths of EigenComm Ltd. - * File name: tpDrv.h - * Description: ec7xx tpDrv - * History: Rev1.0 2023-09-18 - * - ****************************************************************************/ -#ifndef _TP_DRV_H -#define _TP_DRV_H -#ifdef __cplusplus -extern "C" { -#endif - -#include "tpComm.h" - -#define SUPPORT_TP_NUM (3) -#define INSTALL_TP_NUM (1) - -typedef struct -{ - uint16_t chipID; - int (*init)(void *cb); - int (*send)(void *tp); - int (*read)(void *tp); - int (*scan)(void *tp); -}tpDrvFunc_t; - -typedef struct -{ - uint16_t id; - uint32_t width; - uint32_t height; -}tpDrvPra_t; - -typedef struct -{ - char *name; ///< lcd's name used to configure its id, then use id to find its info, including driver function - uint16_t id; ///< every lcd's id should be different, no matter lcd's type is the same or not -}tpObj_t; - -typedef struct -{ - int handle; - tpObj_t *obj; - tpDrvPra_t *pra; - tpDrvFunc_t *drv; -}tpDev_t; - -int tpInit(void* tp_cb); -tpDev_t* tpOpen(char* name); -uint8_t tpScan(tpDev_t* tpDev); -void tpLoop(tpDev_t* tpDev,uint32_t timeout); -void tpData(int16_t* x,int16_t* y); -bool tpPressed(void); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/bsp.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/bsp.c deleted file mode 100644 index bc972b0..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/bsp.c +++ /dev/null @@ -1,505 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2018 Copyrigths of EigenComm Ltd. - * File name: bsp.c - * Description: - * History: - * - ****************************************************************************/ -#include -#include -#include -#include "Driver_Common.h" -#include "clock.h" -#include "bsp.h" -#include "system_ec7xx.h" -#include DEBUG_LOG_HEADER_FILE -#include "ec_string.h" -#include "mem_map.h" -#ifdef FEATURE_CCIO_ENABLE -#include "uart_device.h" -#endif -#include "dbversion.h" -#include "clock.h" -#include "hal_adcproxy.h" -#include "apmu_external.h" -#include "slpman.h" - -#define BSP_TEXT_SECTION SECTION_DEF_IMPL(.sect_bsp_text) -#define BSP_RODATA_SECTION SECTION_DEF_IMPL(.sect_bsp_rodata) -#define BSP_DATA_SECTION SECTION_DEF_IMPL(.sect_bsp_data) -#define BSP_BSS_SECTION SECTION_DEF_IMPL(.sect_bsp_bss) -#define FLASH_READ_GRANT_SIZE (16) -#define FLASH_READ_MAX_DELAY (10000)//10ms - - -extern ARM_DRIVER_USART Driver_USART0; -extern ARM_DRIVER_USART Driver_USART1; - -BSP_BSS_SECTION ARM_DRIVER_USART *UsartPrintHandle = NULL; -BSP_BSS_SECTION ARM_DRIVER_USART *UsartUnilogHandle = NULL; -BSP_BSS_SECTION ARM_DRIVER_USART *UsartAtCmdHandle = NULL; - -BSP_BSS_SECTION static uint8_t OSState = 0; // OSState = 0 os not start, OSState = 1 os started -BSP_BSS_SECTION static uint32_t gUartBaudrate[3]; // a copy for uart baud rate -extern void trimAdcSetGolbalVar(void); -#if defined CHIP_EC718 || defined CHIP_EC716 -extern void trimLdoAIOVadjSetGolbalVar(void); -#endif -#if defined CHIP_EC718 -extern void trimVadjVbatSenseSetGolbalVar(void); -#endif -extern void GPR_RmiErrCfg(bool en); -extern uint32_t GPR_RmiErrAddrGet(void); -extern uint8_t FLASH_XIPRead(uint8_t* pData, uint32_t ReadAddr, uint32_t Size); -extern uint8_t ShareInfoAPGetCPBusyFlag( void ); - - -void BSP_InitUartDriver(ARM_DRIVER_USART *drvHandler, - ARM_POWER_STATE powerMode, - uint32_t settings, - uint32_t baudRate, - ARM_USART_SignalEvent_t cb_event) -{ - if(drvHandler) - { - drvHandler->Initialize(cb_event); - drvHandler->PowerControl(powerMode); - drvHandler->Control(settings, baudRate); - } -} - -void BSP_DeinitUartDriver(ARM_DRIVER_USART *drvHandler) -{ - if(drvHandler) - { - drvHandler->PowerControl(ARM_POWER_OFF); - drvHandler->Uninitialize(); - } -} - -#if defined ( __GNUC__ ) - -/* - * retarget for _write implementation - * Parameter: ch: character will be out - */ -int io_putchar(int ch) -{ - if (UsartPrintHandle != NULL) - UsartPrintHandle->SendPolling((uint8_t*)&ch, 1); - return 0; -} - -/* - * retarget for _read implementation - * Parameter: ch: character will be read - */ -int io_getchar() -{ - uint8_t ch = 0; - if (UsartPrintHandle != NULL) - UsartPrintHandle->Receive(&ch, 1); - return (ch); -} - - -int fgetc(FILE *f) -{ - uint8_t ch = 0; - if (UsartPrintHandle != NULL) - UsartPrintHandle->Receive(&ch, 1); - return (ch); -} - -__attribute__((weak,noreturn)) -void __aeabi_assert (const char *expr, const char *file, int line) { - printf("Assert, expr:%s, file: %s, line: %d\r\n", expr, file, line); - while(1); -} - - -void __assert_func(const char *filename, int line, const char *assert_func, const char *expr) -{ - for(uint8_t i = 0; i<5; i++) - { - uniLogFlushOut(); - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, assert_func_1, P_ERROR, "Assert, expr:%s, file: %s, line: %d\r\n", expr, filename, line); - } - while(1); -} - - - -#elif defined (__CC_ARM) - -/* - * retarget for printf implementation - * Parameter: ch: character will be out - * f: not used - */ -int fputc(int ch, FILE *f) -{ - if (UsartPrintHandle != NULL) - UsartPrintHandle->SendPolling((uint8_t*)&ch,1); - return 0; -} - -/* - * retarget for scanf implementation - * Parameter: f: not used - */ -int fgetc(FILE *f) -{ - uint8_t ch = 0; - if (UsartPrintHandle != NULL) - UsartPrintHandle->Receive(&ch,1); - return (ch); -} - -__attribute__((weak,noreturn)) -void __aeabi_assert (const char *expr, const char *file, int line) { - printf("Assert, expr:%s, file: %s, line: %d\r\n", expr, file, line); - while(1); -} - -#endif - - - -uint32_t GET_PMU_RAWFLASH_OFFSET(void) -{ - return FLASH_MEM_BACKUP_ADDR; -} - - - -void setOSState(uint8_t state) -{ - OSState = state; -} - -PLAT_PA_RAMCODE uint8_t getOSState(void) //1 os started. 0 no OS or OS not started yet -{ - return OSState; -} - - -uint8_t* getBuildInfo(void) -{ - return (uint8_t *)BSP_HEADER; -} - -uint8_t* getVersionInfo(void) -{ - return (uint8_t *)VERSION_INFO; -} - -uint8_t* getATIVersionInfo(void) -{ - return (uint8_t *)ATI_VERSION_INFO; -} - -//move here since this is an common and opensource place -uint8_t* getDebugDVersion(void) -{ - return (uint8_t*)DB_VERSION_UNIQ_ID; -} - -extern void excepDump(uint32_t* start, uint32_t len); - -void cpCoreRegsDumpCheckHook(void) -{ - excepDump((uint32_t*)0x4f000000, 40); -} - -__attribute__ ((noinline)) uint32_t getUnilogUartPort(void) -{ - return UART_0_FOR_UNILOG; // Swith to UART_x_FOR_UNILOG if need to use other uart for unilog -} - -__attribute__ ((noinline)) void getUnilogRamLogBuff(uint32_t *addr, uint32_t *len) -{ -#ifdef FEATURE_EXCEPTION_FLASH_DUMP_ENABLE - ecGetUnilogDumpAddrAndLen(addr, len); -#else - *addr = 0; // suggest to be 16 bytes aligned, note this area shall not be initialized in boot phase - *len = 0; -#endif -} - -void setUartBaudRate(uint8_t idx, uint32_t baudRate) -{ - gUartBaudrate[idx] = baudRate; - - ECPLAT_PRINTF(UNILOG_PMU, setUartBaudRate_1, P_WARNING, "Set BaudRate = %d, %d, %d", gUartBaudrate[0], gUartBaudrate[1], gUartBaudrate[2]); -} - - -void FLASH_appRead(uint8_t *pData, uint32_t ReadAddr, uint32_t Size) -{ - uint32_t numOfReadTrunk = 0, i=0; - uint32_t waitLoop =0; - - numOfReadTrunk = (Size/FLASH_READ_GRANT_SIZE); - if(Size <= FLASH_READ_GRANT_SIZE) - { - FLASH_XIPRead(pData, ReadAddr, Size); - } - else - { - for(i=0; i=FLASH_READ_MAX_DELAY) - { - waitLoop = 0; - break; - } - } - FLASH_XIPRead(pData+i*FLASH_READ_GRANT_SIZE, ReadAddr+i*FLASH_READ_GRANT_SIZE, FLASH_READ_GRANT_SIZE); - - } - if((Size - i*FLASH_READ_GRANT_SIZE) != 0) - { - while(ShareInfoAPGetCPBusyFlag() == 1) - { - delay_us(1); - waitLoop ++; - if(waitLoop >=FLASH_READ_MAX_DELAY) - { - waitLoop = 0; - break; - } - } - FLASH_XIPRead(pData+i*FLASH_READ_GRANT_SIZE, ReadAddr+i*FLASH_READ_GRANT_SIZE, Size-i*FLASH_READ_GRANT_SIZE); - } - } -} - - -/** - \fn bool getCPWakeupType(void) - \brief wakeup cp in polling mode or int mode - in polling mode interrupt mask for 700us at most which may cause uart fifo overflow @ 921600. - in int mode, interrupt mask for less than 200us - \returns true: cp wakeup in int mode false: cp wakeup in polling mode -*/ -bool getCPWakeupType(void) // true: cp wakeup in int mode false: cp wakeup in polling mode -{ -#if 0 // just an example for customer to enable int mode - if((gUartBaudrate[0] == 921600) || (gUartBaudrate[1] == 921600) || (gUartBaudrate[2] == 921600)) - { - return true; - } - else - { - return false; - } -#else - return false; -#endif -} - -uint32_t getAPFlashLoadAddr(void) -{ - return AP_FLASH_LOAD_ADDR; -} - -/** - \fn void apmuNeedSlpWaitTimeInWakeupFlow(bool *bUartDelay, bool *bSlp1ExtIntDelay) - \brief give pmu module information to restart slpWaitTime in pmu flow - \param[out] bUartDelay: give a result to pmu module whether we need restart sleep wait timer when, (1)sleep failed with uart pending in all sleep mode (2)receive uart in sleep1 wakeup flow - \param[out] bSlp1ExtIntDelay: give a result to pmu module whether we need restart sleep wait timer when, (1) wakeup from sleep1 with external int pending - for sleep2/hib mode, restart slpWaitTime in BSP_CustomInit - \returns void -*/ -void apmuNeedSlpWaitTimeInWakeupFlow(bool *bUartDelay, bool *bSlp1ExtIntDelay) -{ - uint32_t xic0_latch = XIC_LatchIRQ(APXIC_0); - slpManWakeSrc_e wakeSrc = slpManGetWakeupSrc(); - - *bUartDelay = true; - *bSlp1ExtIntDelay = false; - - if((xic0_latch & (1<<(PXIC0_UART2_IRQn-32))) == 0) - { - if((xic0_latch & (1<<(PXIC0_UART1_IRQn-32))) == 0) - { - if((xic0_latch & (1<<(PXIC0_UART0_IRQn-32))) == 0) - { - *bUartDelay = false; - } - } - } - - if((WAKEUP_FROM_PAD == wakeSrc) || (WAKEUP_FROM_LPUART == wakeSrc)) - { - *bSlp1ExtIntDelay = true; - } -} - - -#ifdef UINILOG_FEATURE_ENABLE -/** - \fn void logToolCommandHandle(uint8_t *atcmd_buffer, uint32_t len) - \brief handle downlink command sent from unilog tool EPAT - if need to handle more command in future, add command-handler table - \param[in] event UART event, note used in this function - \param[in] cmd_buffer command received from UART - \param[in] len command length - \returns void -*/ -void logToolCommandHandle(uint32_t event, uint8_t *cmd_buffer, uint32_t len) -{ - (void)event; - - uint8_t * LogDbVserion=getDebugDVersion(); - - if(ec_strnstr((const char *)cmd_buffer, "^logversion", len)) - { - - ECPLAT_PRINTF(UNILOG_PLA_INTERNAL_CMD, get_log_version, P_SIG, "LOGVERSION:%s",LogDbVserion); - - } - else - { - - ECPLAT_PRINTF(UNILOG_PLA_STRING, get_log_version_1, P_ERROR, "%s", "invalid command from EPAT"); - - } - - return; - -} - - -/** - * unilog entity is removed for the reason of BSP small image. - * for more implementation details, pls refer to - * gCustSerlEntity[CUST_ENTITY_UNILOG] in ccio_provider.c - */ - -/* - * set unilog uart port - * Parameter: port: for unilog - * Parameter: baudrate: uart baudrate - */ - void SetUnilogUart(usart_port_t port, uint32_t baudrate, bool startRecv) -{ - ARM_POWER_STATE powerMode = ARM_POWER_FULL; - uint32_t ctrlSetting = ARM_USART_MODE_ASYNCHRONOUS | ARM_USART_DATA_BITS_8 | \ - ARM_USART_PARITY_NONE | ARM_USART_STOP_BITS_1 | \ - ARM_USART_FLOW_CONTROL_NONE; - - if (port == PORT_USART_0) - { -#if (RTE_UART0) - UsartUnilogHandle = &CREATE_SYMBOL(Driver_USART, 0); -#endif - } - else if (port == PORT_USART_1) - { -#if (RTE_UART1) - UsartUnilogHandle = &CREATE_SYMBOL(Driver_USART, 1); -#endif - } - - if (UsartUnilogHandle == NULL) return; - -#ifdef FEATURE_CCIO_ENABLE - UartDevConf_t uartDevConf; - UartHwConf_t *uartHwConf = &uartDevConf.hwConf; - - memset(&uartDevConf, 0, sizeof(UartDevConf_t)); - - uartHwConf->powerMode = powerMode; - uartHwConf->ctrlSetting = ctrlSetting; - uartHwConf->baudRate = baudrate; - - uartDevConf.drvHandler = UsartUnilogHandle; - uartDevConf.mainUsage = CSIO_DT_DIAG; - uartDevConf.speedType = CCIO_ST_HIGH; - uartDevConf.rbufFlags = CUST_RBUF_FOR_DIAG; - if(startRecv) - { - uartDevConf.bmCreateFlag = CCIO_TASK_FLAG_RX; - } - else - { - uartDevConf.bmCreateFlag = CCIO_TASK_FLAG_NONE; - } - - uartDevCreate(port, &uartDevConf); -#else - BSP_InitUartDriver(UsartUnilogHandle, powerMode, ctrlSetting, baudrate, NULL); -#endif -} - - -void GPR_rmiErrDetectIsr(void) -{ - volatile uint32_t rmiErrAddr; - rmiErrAddr = GPR_RmiErrAddrGet(); - - ECPLAT_PRINTF(UNILOG_PMU, GPR_rmiErrDetectIsr_1, P_WARNING, "Rmi Err Detect Address=0x%x", rmiErrAddr); -} - - -void GPR_rmiErrDetectInit(void) -{ - XIC_SetVector(PXIC0_RMIIF_TOERR_IRQn, &GPR_rmiErrDetectIsr); - XIC_EnableIRQ(PXIC0_RMIIF_TOERR_IRQn); - GPR_RmiErrCfg(true); -} - - -void FlushUnilogOutput(void) -{ - uniLogFlushOut(); - - if(UsartUnilogHandle == NULL) - return; - UsartUnilogHandle->Control(ARM_USART_CONTROL_FLUSH_TX, 0); -} -#endif - -void BSP_CommonInit(void) -{ - SystemCoreClockUpdate(); - - PAD_driverInit(); - - GPR_initialize(); - - trimAdcSetGolbalVar(); - - #if defined CHIP_EC718 || defined CHIP_EC716 - trimLdoAIOVadjSetGolbalVar(); - #endif - - #if defined CHIP_EC718 - trimVadjVbatSenseSetGolbalVar(); - #endif - - apmuInit(); - - //interrupt config - IC_PowupInit(); - - if(apmuGetAPBootFlag() == 0) // power on - { - apmuSetCPFastBoot(false); // set cp fast boot in case of cp dap wakeup - } - - cpADCInit(); // enable adc ref output, need stable time - - GPR_rmiErrDetectInit(); - - BOOT_TIMESTAMP_SET(1, 3); - -} - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/camera/cameraDev/gc032A.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/camera/cameraDev/gc032A.c deleted file mode 100644 index 06776b9..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/camera/cameraDev/gc032A.c +++ /dev/null @@ -1,1026 +0,0 @@ -#include "cameraDrv.h" -#include "sctdef.h" - -AP_PLAT_COMMON_DATA camI2cCfg_t gc032A_2ddrRegInfo[] = -{ - /*System*/ - {0xf3, 0x83}, //ff//1f//01 data output - {0xf5, 0x08}, - {0xf7, 0x01}, - {0xf8, 0x01}, ////hai: from 0x4->0x1 pll-div----frank - {0xf9, 0x4e}, - {0xfa, 0x00}, - {0xfc, 0x02}, - {0xfe, 0x02}, - {0x81, 0x03}, - - {0xfe, 0x00}, - {0x77, 0x64}, - {0x78, 0x40}, - {0x79, 0x60}, - /*Analog&Cisctl*/ - {0xfe, 0x00}, - {0x03, 0x01}, - {0x04, 0xcb}, - {0x05, 0x01}, - {0x06, 0xb2}, - {0x07, 0x00}, - {0x08, 0x10}, - - {0x0a, 0x00}, - {0x0c, 0x00}, - {0x0d, 0x01}, - {0x0e, 0xe8}, - {0x0f, 0x02}, - {0x10, 0x88}, - - {0x17, 0x54}, - {0x19, 0x08}, - {0x1a, 0x0a}, - {0x1f, 0x40}, - {0x20, 0x30}, - {0x2e, 0x80}, - {0x2f, 0x2b}, - {0x30, 0x1a}, - {0xfe, 0x02}, - {0x03, 0x02}, - {0x05, 0xd7}, - {0x06, 0x60}, - {0x08, 0x80}, - {0x12, 0x89}, - - /*SPI*/ - {0xfe, 0x03}, - {0x52, 0xba}, // hai: from 0xba -> 0x3A - {0x53, 0x24}, - {0x54, 0x20}, - {0x55, 0x00}, - {0x59, 0x1f}, // {0x59,0x10}, 20190627 scaler output error - {0x5a, 0x00}, //00 //yuv hai: from 0x40 to 0x00 - {0x5b, 0x80}, - {0x5c, 0x02}, - {0x5d, 0xe0}, - {0x5e, 0x01}, - {0x51, 0x03}, - {0x64, 0x04}, - {0xfe, 0x00}, - - /*blk*/ - {0xfe, 0x00}, - {0x18, 0x02}, - {0xfe, 0x02}, - {0x40, 0x22}, - {0x45, 0x00}, - {0x46, 0x00}, - {0x49, 0x20}, - {0x4b, 0x3c}, - {0x50, 0x20}, - {0x42, 0x10}, - - /*isp*/ - {0xfe, 0x01}, - {0x0a, 0xc5}, - {0x45, 0x00}, - {0xfe, 0x00}, - {0x40, 0xff}, - {0x41, 0x25}, - {0x42, 0xef}, - {0x43, 0x10}, - {0x44, 0x83}, // hai from 0x82 to 0x83 - {0x46, 0x22}, - {0x49, 0x03}, - {0x52, 0x02}, - {0x54, 0x00}, - {0xfe, 0x02}, - {0x22, 0xf6}, - - /*Shading*/ - {0xfe, 0x01}, - {0xc1, 0x38}, - {0xc2, 0x4c}, - {0xc3, 0x00}, - {0xc4, 0x2c}, - {0xc5, 0x24}, - {0xc6, 0x18}, - {0xc7, 0x28}, - {0xc8, 0x11}, - {0xc9, 0x15}, - {0xca, 0x20}, - {0xdc, 0x7a}, - {0xdd, 0xa0}, - {0xde, 0x80}, - {0xdf, 0x88}, - - /*AWB*/ /*20170110*/ - {0xfe, 0x01}, - {0x50, 0xc1}, - {0x56, 0x34}, - {0x58, 0x04}, - {0x65, 0x06}, - {0x66, 0x0f}, - {0x67, 0x04}, - {0x69, 0x20}, - {0x6a, 0x40}, - {0x6b, 0x81}, - {0x6d, 0x12}, - {0x6e, 0xc0}, - {0x7b, 0x2a}, - {0x7c, 0x0c}, - {0xfe, 0x01}, - {0x90, 0xe3}, - {0x91, 0xc2}, - {0x92, 0xff}, - {0x93, 0xe3}, - {0x95, 0x1c}, - {0x96, 0xff}, - {0x97, 0x44}, - {0x98, 0x1c}, - {0x9a, 0x44}, - {0x9b, 0x1c}, - {0x9c, 0x64}, - {0x9d, 0x44}, - {0x9f, 0x71}, - {0xa0, 0x64}, - {0xa1, 0x00}, - {0xa2, 0x00}, - {0x86, 0x00}, - {0x87, 0x00}, - {0x88, 0x00}, - {0x89, 0x00}, - {0xa4, 0xc2}, - {0xa5, 0x9b}, - {0xa6, 0xc8}, - {0xa7, 0x92}, - {0xa9, 0xc9}, - {0xaa, 0x96}, - {0xab, 0xa9}, - {0xac, 0x99}, - {0xae, 0xce}, - {0xaf, 0xa9}, - {0xb0, 0xcf}, - {0xb1, 0x9d}, - {0xb3, 0xcf}, - {0xb4, 0xac}, - {0xb5, 0x00}, - {0xb6, 0x00}, - {0x8b, 0x00}, - {0x8c, 0x00}, - {0x8d, 0x00}, - {0x8e, 0x00}, - {0x94, 0x55}, - {0x99, 0xa6}, - {0x9e, 0xaa}, - {0xa3, 0x0a}, - {0x8a, 0x00}, - {0xa8, 0x55}, - {0xad, 0x55}, - {0xb2, 0x55}, - {0xb7, 0x05}, - {0x8f, 0x00}, - {0xb8, 0xc7}, - {0xb9, 0xa0}, - - {0xfe, 0x01}, - {0xd0, 0x40}, - {0xd1, 0x00}, - {0xd2, 0x00}, - {0xd3, 0xfa}, - {0xd4, 0x4a}, - {0xd5, 0x02}, - - {0xd6, 0x44}, - {0xd7, 0xfa}, - {0xd8, 0x04}, - {0xd9, 0x08}, - {0xda, 0x5c}, - {0xdb, 0x02}, - {0xfe, 0x00}, - - /*Gamma*/ - {0xfe, 0x00}, - {0xba, 0x00}, - {0xbb, 0x04}, - {0xbc, 0x0a}, - {0xbd, 0x0e}, - {0xbe, 0x22}, - {0xbf, 0x30}, - {0xc0, 0x3d}, - {0xc1, 0x4a}, - {0xc2, 0x5d}, - {0xc3, 0x6b}, - {0xc4, 0x7a}, - {0xc5, 0x85}, - {0xc6, 0x90}, - {0xc7, 0xa5}, - {0xc8, 0xb5}, - {0xc9, 0xc2}, - {0xca, 0xcc}, - {0xcb, 0xd5}, - {0xcc, 0xde}, - {0xcd, 0xea}, - {0xce, 0xf5}, - {0xcf, 0xff}, - - /*Auto Gamma*/ - {0xfe, 0x00}, - {0x5a, 0x08}, - {0x5b, 0x0f}, - {0x5c, 0x15}, - {0x5d, 0x1c}, - {0x5e, 0x28}, - {0x5f, 0x36}, - {0x60, 0x45}, - {0x61, 0x51}, - {0x62, 0x6a}, - {0x63, 0x7d}, - {0x64, 0x8d}, - {0x65, 0x98}, - {0x66, 0xa2}, - {0x67, 0xb5}, - {0x68, 0xc3}, - {0x69, 0xcd}, - {0x6a, 0xd4}, - {0x6b, 0xdc}, - {0x6c, 0xe3}, - {0x6d, 0xf0}, - {0x6e, 0xf9}, - {0x6f, 0xff}, - - /*Gain*/ - {0xfe, 0x00}, - {0x70, 0x50}, - - /*AEC*/ - {0xfe, 0x00}, - {0x4f, 0x01}, - {0xfe, 0x01}, - {0x0c, 0x01}, - {0x0d, 0x00}, //08 add 20170110 - {0x12, 0xa0}, - {0x13, 0x38},//4a 3a hai: from 0x28 to 0x38 - {0x44, 0x04}, - {0x1f, 0x40}, - {0x20, 0x40}, - {0x23, 0x0a}, - {0x26, 0x9a}, - {0x3e, 0x20}, - {0x3f, 0x2d}, - {0x40, 0x40}, - {0x41, 0x5b}, - {0x42, 0x82}, - {0x43, 0xb7}, - {0x04, 0x0a}, - {0x02, 0x79}, - {0x03, 0xc0}, - - /*measure window*/ - {0xfe, 0x01}, - {0xcc, 0x08}, - {0xcd, 0x08}, - {0xce, 0xa4}, - {0xcf, 0xec}, - - /*DNDD*/ - {0xfe, 0x00}, - {0x81, 0xb8}, - {0x82, 0x04}, - {0x83, 0x10}, - {0x84, 0x01}, - {0x86, 0x50}, - {0x87, 0x18}, - {0x88, 0x10}, - {0x89, 0x70}, - {0x8a, 0x20}, - {0x8b, 0x10}, - {0x8c, 0x08}, - {0x8d, 0x0a}, - - /*Intpee*/ - {0xfe, 0x00}, - {0x8f, 0xaa}, - {0x90, 0x1c}, - {0x91, 0x52}, - {0x92, 0x03}, - {0x93, 0x03}, - {0x94, 0x08}, - {0x95, 0x6a}, - {0x97, 0x00}, - {0x98, 0x00}, - - /*ASDE*/ - {0xfe, 0x00}, - {0x9a, 0x30}, - {0x9b, 0x50}, - {0xa1, 0x30}, - {0xa2, 0x66}, - {0xa4, 0x28}, - {0xa5, 0x30}, - {0xaa, 0x28}, - {0xac, 0x32}, - - /*YCP*/ - {0xfe, 0x00}, - {0xd1, 0x3f}, - {0xd2, 0x3f}, - {0xd3, 0x38}, - {0xd6, 0xf4}, - {0xd7, 0x1d}, - {0xdd, 0x72}, - {0xde, 0x84}, - - {0xfe, 0x00}, - {0x05, 0x01}, - {0x06, 0xad}, - {0x07, 0x00}, - {0x08, 0x10}, - - {0xfe, 0x01}, - {0x25, 0x00}, - {0x26, 0x4d}, - - {0x27, 0x01}, - {0x28, 0xce}, //16.6fps - {0x29, 0x01}, - {0x2a, 0xce}, //12.5fps - {0x2b, 0x01}, - {0x2c, 0xce}, //10fps - {0x2d, 0x01}, - {0x2e, 0xce}, //8.33fps - {0x2f, 0x01}, - {0x30, 0xce}, //5.88fps - {0x31, 0x01}, - {0x32, 0xce}, //4.34fps - {0x33, 0x01}, - {0x34, 0xce}, //3.99fps - {0x3c, 0x10}, //{0x3c,0x00} - {0xfe, 0x00}, -}; - -AP_PLAT_COMMON_DATA camI2cCfg_t gc032A_2sdrRegInfo[] = -{ - {0xf3,0x83}, - {0xf5,0x0c}, - {0xf7,0x01},// gavin 20160820 - {0xf8,0x01}, - {0xf9,0x4e}, - {0xfa,0x10}, // gavin 20160820 - {0xfc,0x02}, - {0xfe,0x02}, - {0x81,0x03}, - {0xfe,0x00}, - {0x77,0x64}, - {0x78,0x40}, - {0x79,0x60}, - /*Analog&Cisctl*/ - {0xfe,0x00}, - {0x03,0x01}, - {0x04,0xc2}, - {0x05,0x01}, - {0x06,0xb8}, - {0x07,0x00}, - {0x08,0x08}, - {0x0a,0x00}, - {0x0c,0x00}, - {0x0d,0x01}, - {0x0e,0xe8}, - {0x0f,0x02}, - {0x10,0x88}, - {0x17,0x54}, - {0x19,0x08}, - {0x1a,0x0a}, - {0x1f,0x40}, - {0x20,0x30}, - {0x2e,0x80}, - {0x2f,0x2b}, - {0x30,0x1a}, - {0xfe,0x02}, - {0x03,0x02}, - {0x05,0xd7}, - {0x06,0x60}, - {0x08,0x80}, - {0x12,0x89}, - - /*SPI*/ - {0xfe,0x03}, - {0x51,0x01}, - {0x52,0x58}, // 0x58: ddr disable, LSB; 0xd8: ddr disable, MSB - {0x53,0x24}, // Disable CRC - {0x54,0x20}, - {0x55,0x00}, - {0x59,0x10}, - {0x5a,0x00}, - {0x5b,0x80}, - {0x5c,0x02}, - {0x5d,0xe0}, - {0x5e,0x01}, - {0x64,0x04}, //SCK Always OFF , gavin 20160820 - - /*blk*/ - {0xfe,0x00}, - {0x18,0x02}, - {0xfe,0x02}, - {0x40,0x22}, - {0x45,0x00}, - {0x46,0x00}, - {0x49,0x20}, - {0x4b,0x3c}, - {0x50,0x20}, - {0x42,0x10}, - - /*isp*/ - {0xfe,0x01}, - {0x0a,0xc5}, - {0x45,0x00}, - {0xfe,0x00}, - {0x40,0xff}, - {0x41,0x25}, - {0x42,0xcf}, - {0x43,0x10}, - {0x44,0x83}, - {0x46,0x22}, - {0x49,0x03}, - {0x52,0x02}, - {0x54,0x00}, - {0xfe,0x02}, - {0x22,0xf6}, - - /*Shading*/ - {0xfe,0x01}, - {0xc1,0x38}, - {0xc2,0x4c}, - {0xc3,0x00}, - {0xc4,0x32}, - {0xc5,0x24}, - {0xc6,0x16}, - {0xc7,0x08}, - {0xc8,0x08}, - {0xc9,0x00}, - {0xca,0x20}, - {0xdc,0x8a}, - {0xdd,0xa0}, - {0xde,0xa6}, - {0xdf,0x75}, - - /*AWB*//*20170110*/ - {0xfe, 0x01}, - {0x7c, 0x09}, - {0x65, 0x06}, - {0x7c, 0x08}, - {0x56, 0xf4}, - {0x66, 0x0f}, - {0x67, 0x84}, - {0x6b, 0x80}, - {0x6d, 0x12}, - {0x6e, 0xb0}, - {0xfe, 0x01}, - {0x90, 0x00}, - {0x91, 0x00}, - {0x92, 0xf4}, - {0x93, 0xd5}, - {0x95, 0x0f}, - {0x96, 0xf4}, - {0x97, 0x2d}, - {0x98, 0x0f}, - {0x9a, 0x2d}, - {0x9b, 0x0f}, - {0x9c, 0x59}, - {0x9d, 0x2d}, - {0x9f, 0x67}, - {0xa0, 0x59}, - {0xa1, 0x00}, - {0xa2, 0x00}, - {0x86, 0x00}, - {0x87, 0x00}, - {0x88, 0x00}, - {0x89, 0x00}, - {0xa4, 0x00}, - {0xa5, 0x00}, - {0xa6, 0xd4}, - {0xa7, 0x9f}, - {0xa9, 0xd4}, - {0xaa, 0x9f}, - {0xab, 0xac}, - {0xac, 0x9f}, - {0xae, 0xd4}, - {0xaf, 0xac}, - {0xb0, 0xd4}, - {0xb1, 0xa3}, - {0xb3, 0xd4}, - {0xb4, 0xac}, - {0xb5, 0x00}, - {0xb6, 0x00}, - {0x8b, 0x00}, - {0x8c, 0x00}, - {0x8d, 0x00}, - {0x8e, 0x00}, - {0x94, 0x50}, - {0x99, 0xa6}, - {0x9e, 0xaa}, - {0xa3, 0x0a}, - {0x8a, 0x00}, - {0xa8, 0x50}, - {0xad, 0x55}, - {0xb2, 0x55}, - {0xb7, 0x05}, - {0x8f, 0x00}, - {0xb8, 0xb3}, - {0xb9, 0xb6}, - - /*CC*/ - {0xfe,0x01}, - {0xd0,0x40}, - {0xd1,0xf8}, - {0xd2,0x00}, - {0xd3,0xfa}, - {0xd4,0x45}, - {0xd5,0x02}, - {0xd6,0x30}, - {0xd7,0xfa}, - {0xd8,0x08}, - {0xd9,0x08}, - {0xda,0x58}, - {0xdb,0x02}, - {0xfe,0x00}, - - /*Gamma*/ - {0xfe,0x00}, - {0xba,0x00}, - {0xbb,0x04}, - {0xbc,0x0a}, - {0xbd,0x0e}, - {0xbe,0x22}, - {0xbf,0x30}, - {0xc0,0x3d}, - {0xc1,0x4a}, - {0xc2,0x5d}, - {0xc3,0x6b}, - {0xc4,0x7a}, - {0xc5,0x85}, - {0xc6,0x90}, - {0xc7,0xa5}, - {0xc8,0xb5}, - {0xc9,0xc2}, - {0xca,0xcc}, - {0xcb,0xd5}, - {0xcc,0xde}, - {0xcd,0xea}, - {0xce,0xf5}, - {0xcf,0xff}, - - /*Auto Gamma*/ - {0xfe,0x00}, - {0x5a,0x08}, - {0x5b,0x0f}, - {0x5c,0x15}, - {0x5d,0x1c}, - {0x5e,0x28}, - {0x5f,0x36}, - {0x60,0x45}, - {0x61,0x51}, - {0x62,0x6a}, - {0x63,0x7d}, - {0x64,0x8d}, - {0x65,0x98}, - {0x66,0xa2}, - {0x67,0xb5}, - {0x68,0xc3}, - {0x69,0xcd}, - {0x6a,0xd4}, - {0x6b,0xdc}, - {0x6c,0xe3}, - {0x6d,0xf0}, - {0x6e,0xf9}, - {0x6f,0xff}, - - /*Gain*/ - {0xfe,0x00}, - {0x70,0x50}, - - /*AEC*/ - {0xfe,0x00}, - {0x4f,0x01}, - {0xfe,0x01}, - {0x0d,0x00},//08 add 20170110 - {0x12,0xa0}, - {0x13,0x3a}, - {0x44,0x04}, - {0x1f,0x30}, - {0x20,0x40}, - {0x26,0x9a}, - {0x3e,0x20}, - {0x3f,0x2d}, - {0x40,0x40}, - {0x41,0x5b}, - {0x42,0x82}, - {0x43,0xb7}, - {0x04,0x0a}, - {0x02,0x79}, - {0x03,0xc0}, - - /*measure window*/ - {0xfe,0x01}, - {0xcc,0x08}, - {0xcd,0x08}, - {0xce,0xa4}, - {0xcf,0xec}, - - /*DNDD*/ - {0xfe,0x00}, - {0x81,0xb8}, - {0x82,0x12}, - {0x83,0x0a}, - {0x84,0x01}, - {0x86,0x50}, - {0x87,0x18}, - {0x88,0x10}, - {0x89,0x70}, - {0x8a,0x20}, - {0x8b,0x10}, - {0x8c,0x08}, - {0x8d,0x0a}, - - /*Intpee*/ - {0xfe,0x00}, - {0x8f,0xaa}, - {0x90,0x9c}, - {0x91,0x52}, - {0x92,0x03}, - {0x93,0x03}, - {0x94,0x08}, - {0x95,0x44}, - {0x97,0x00}, - {0x98,0x00}, - - /*ASDE*/ - {0xfe,0x00}, - {0xa1,0x30}, - {0xa2,0x41}, - {0xa4,0x30}, - {0xa5,0x20}, - {0xaa,0x30}, - {0xac,0x32}, - - /*YCP*/ - {0xfe,0x00}, - {0xd1,0x3c}, - {0xd2,0x3c}, - {0xd3,0x38}, - {0xd6,0xf4}, - {0xd7,0x1d}, - {0xdd,0x73}, - {0xde,0x84}, - {0xfe,0x00}, - {0x05,0x01}, - {0x06,0xad}, - {0x07,0x00}, - {0x08,0x10}, - {0xfe,0x01}, - {0x25,0x00}, - {0x26,0x4d}, - {0x27,0x01}, - {0x28,0xce}, - {0x29,0x03}, - {0x2a,0x02}, - {0x2b,0x03}, - {0x2c,0x9c}, - {0x2d,0x04}, - {0x2e,0x36}, - {0x2f,0x04}, - {0x30,0xd0}, - {0x31,0x05}, - {0x32,0x6a}, - {0x33,0x06}, - {0x34,0x04}, - {0xfe,0x00}, -}; - -AP_PLAT_COMMON_DATA camI2cCfg_t gc032A_1sdrRegInfo[] = -{ - {0xf3,0x83}, //sync_output_en data_output_en - {0xf5,0x0c}, - {0xf7,0x01}, - {0xf8,0x01}, - {0xf9,0x4e}, - {0xfa,0x30}, - {0xfc,0x02}, - {0xfe,0x02}, - {0x81,0x03}, // doesn't show 0x81 addr - /*Analog*/ - {0xfe,0x00}, - {0x03,0x01}, // exposure high - {0x04,0xc2}, // exposure low - {0x05,0x01}, - {0x06,0x91}, - {0x07,0x00}, - {0x08,0x10}, - {0x0a,0x04}, - {0x0c,0x04}, - {0x0d,0x01}, - {0x0e,0xe8}, // height: 488 - {0x0f,0x02}, - {0x10,0x88}, // width: 652 VGA: 640*480 - {0x17,0x54}, - {0x19,0x04}, - {0x1a,0x0a}, - {0x1f,0x40}, - {0x20,0x30}, - {0x2e,0x80}, - {0x2f,0x2b}, - {0x30,0x1a}, - {0xfe,0x02}, - {0x03,0x02}, - {0x05,0xd7}, - {0x06,0x60}, - {0x08,0x80}, - {0x12,0x89}, - /*blk*/ - {0xfe,0x00}, - {0x18,0x02}, - {0xfe,0x02}, - {0x40,0x22}, - {0x45,0x00}, - {0x46,0x00}, - {0x49,0x20}, - {0x4b,0x3c}, - {0x50,0x20}, - {0x42,0x10}, - /*isp*/ - {0xfe,0x01}, - {0x0a,0xc5}, - {0x45,0x00}, - {0xfe,0x00}, - {0x40,0xff}, - {0x41,0x25}, - {0x42,0x83}, - {0x43,0x10}, - {0x44,0x83}, - {0x46,0x26}, - {0x49,0x03}, - {0x4f,0x01}, - {0xde,0x84}, - {0xfe,0x02}, - {0x22,0xf6}, - /*Shading*/ - {0xfe,0x00}, - {0x77,0x65}, - {0x78,0x40}, - {0x79,0x52}, - {0xfe,0x01}, - {0xc1,0x3c}, - {0xc2,0x50}, - {0xc3,0x00}, - {0xc4,0x32}, - {0xc5,0x24}, - {0xc6,0x16}, - {0xc7,0x08}, - {0xc8,0x08}, - {0xc9,0x00}, - {0xca,0x20}, - {0xdc,0x7a}, - {0xdd,0x7a}, - {0xde,0xa6}, - {0xdf,0x60}, - /*AWB*/ - {0xfe,0x01}, - {0x7c,0x09}, - {0x65,0x06}, - {0x7c,0x08}, - {0x56,0xf4}, - {0x66,0x0f}, - {0x67,0x84}, - {0x6b,0x80}, - {0x6d,0x12}, - {0x6e,0xb0}, - {0x86,0x00}, - {0x87,0x00}, - {0x88,0x00}, - {0x89,0x00}, - {0x8a,0x00}, - {0x8b,0x00}, - {0x8c,0x00}, - {0x8d,0x00}, - {0x8e,0x00}, - {0x8f,0x00}, - {0x90,0xef}, - {0x91,0xe1}, - {0x92,0x0c}, - {0x93,0xef}, - {0x94,0x65}, - {0x95,0x1f}, - {0x96,0x0c}, - {0x97,0x2d}, - {0x98,0x20}, - {0x99,0xaa}, - {0x9a,0x3f}, - {0x9b,0x2c}, - {0x9c,0x5f}, - {0x9d,0x3e}, - {0x9e,0xaa}, - {0x9f,0x67}, - {0xa0,0x60}, - {0xa1,0x00}, - {0xa2,0x00}, - {0xa3,0x0a}, - {0xa4,0xb6}, - {0xa5,0xac}, - {0xa6,0xc1}, - {0xa7,0xac}, - {0xa8,0x55}, - {0xa9,0xc3}, - {0xaa,0xa4}, - {0xab,0xba}, - {0xac,0xa8}, - {0xad,0x55}, - {0xae,0xc8}, - {0xaf,0xb9}, - {0xb0,0xd4}, - {0xb1,0xc3}, - {0xb2,0x55}, - {0xb3,0xd8}, - {0xb4,0xce}, - {0xb5,0x00}, - {0xb6,0x00}, - {0xb7,0x05}, - {0xb8,0xd6}, - {0xb9,0x8c}, - /*CC*/ - {0xfe,0x01}, - {0xd0,0x40}, - {0xd1,0xf8}, - {0xd2,0x00}, - {0xd3,0xfa}, - {0xd4,0x45}, - {0xd5,0x02}, - {0xd6,0x30}, - {0xd7,0xfa}, - {0xd8,0x08}, - {0xd9,0x08}, - {0xda,0x58}, - {0xdb,0x02}, - {0xfe,0x00}, - /*Gamma*/ - {0xfe,0x00}, - {0xba,0x00}, - {0xbb,0x04}, - {0xbc,0x0a}, - {0xbd,0x0e}, - {0xbe,0x22}, - {0xbf,0x30}, - {0xc0,0x3d}, - {0xc1,0x4a}, - {0xc2,0x5d}, - {0xc3,0x6b}, - {0xc4,0x7a}, - {0xc5,0x85}, - {0xc6,0x90}, - {0xc7,0xa5}, - {0xc8,0xb5}, - {0xc9,0xc2}, - {0xca,0xcc}, - {0xcb,0xd5}, - {0xcc,0xde}, - {0xcd,0xea}, - {0xce,0xf5}, - {0xcf,0xff}, - /*Auto Ga*/ - {0xfe,0x00}, - {0x5a,0x08}, - {0x5b,0x0f}, - {0x5c,0x15}, - {0x5d,0x1c}, - {0x5e,0x28}, - {0x5f,0x36}, - {0x60,0x45}, - {0x61,0x51}, - {0x62,0x6a}, - {0x63,0x7d}, - {0x64,0x8d}, - {0x65,0x98}, - {0x66,0xa2}, - {0x67,0xb5}, - {0x68,0xc3}, - {0x69,0xcd}, - {0x6a,0xd4}, - {0x6b,0xdc}, - {0x6c,0xe3}, - {0x6d,0xf0}, - {0x6e,0xf9}, - {0x6f,0xff}, - /*Gain*/ - {0xfe,0x00}, - {0x70,0x50}, - /*AEC*/ - {0xfe,0x00}, - {0x4f,0x01}, - {0xfe,0x01}, - {0x12,0xa0}, - {0x13,0x3a}, - {0x44,0x04}, - {0x1f,0x30}, - {0x20,0x40}, - {0x26,0x14}, - {0x27,0x01}, - {0x28,0xf4}, - {0x29,0x02}, - {0x2a,0x3a}, - {0x2b,0x02}, - {0x2c,0xac}, - {0x2d,0x02}, - {0x2e,0xf8}, - {0x2f,0x0b}, - {0x30,0x6e}, - {0x31,0x0e}, - {0x32,0x70}, - {0x33,0x12}, - {0x34,0x0c}, - {0x3c,0x00}, - {0x3e,0x20}, - {0x3f,0x2d}, - {0x40,0x40}, - {0x41,0x5b}, - {0x42,0x82}, - {0x43,0xb7}, - {0x04,0x0a}, - {0x02,0x79}, - {0x03,0xc0}, - /*measure*/ - {0xcc,0x08}, - {0xcd,0x08}, - {0xce,0xa4}, - {0xcf,0xec}, - /*DNDD*/ - {0xfe,0x00}, - {0x81,0xb8}, - {0x82,0x12}, - {0x83,0x0a}, - {0x84,0x01}, - {0x86,0x50}, - {0x87,0x18}, - {0x88,0x10}, - {0x89,0x70}, - {0x8a,0x20}, - {0x8b,0x10}, - {0x8c,0x08}, - {0x8d,0x0a}, - /*Intpee*/ - {0xfe,0x00}, - {0x8f,0xaa}, - {0x90,0x9c}, - {0x91,0x52}, - {0x92,0x03}, - {0x93,0x03}, - {0x94,0x08}, - {0x95,0x44}, - {0x97,0x00}, - {0x98,0x00}, - /*ASDE*/ - {0xfe,0x00}, - {0xa1,0x30}, - {0xa2,0x41}, - {0xa4,0x30}, - {0xa5,0x20}, - {0xaa,0x30}, - {0xac,0x32}, - /*YCP*/ - {0xfe,0x00}, - {0xd1,0x3c}, - {0xd2,0x3c}, - {0xd3,0x38}, - {0xd6,0xf4}, - {0xd7,0x1d}, - {0xdd,0x73}, - {0xde,0x84}, - /*SPI*/ - {0xfe,0x03}, // registers in REGF3 - {0x51,0x01}, - {0x52,0x0a}, // Y: 266 - {0x53,0x20}, // Ö»ÓÐ2bit£¬ÄÜÉè0x20? - {0x54,0x20}, // X: 0x220 = 544 - {0x55,0x00}, - {0x59,0x10}, - {0x5a,0x00}, // sync format£º - {0x5b,0x80}, - {0x5c,0x02}, // image width£º640 - {0x5d,0xe0}, - {0x5e,0x01}, // image height£º480 -}; - -uint16_t gc032aGetRegCnt(char* regName) -{ - if (strcmp(regName, "gc032a_2sdr") == 0) - { - return (sizeof(gc032A_2sdrRegInfo) / sizeof(gc032A_2sdrRegInfo[0])); - } - else if (strcmp(regName, "gc032a_1sdr") == 0) - { - return (sizeof(gc032A_1sdrRegInfo) / sizeof(gc032A_1sdrRegInfo[0])); - } - else if (strcmp(regName, "gc032a_2ddr") == 0) - { - return (sizeof(gc032A_2ddrRegInfo) / sizeof(gc032A_2ddrRegInfo[0])); - } - - return 0; -} - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/camera/cameraDev/gc6153.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/camera/cameraDev/gc6153.c deleted file mode 100644 index 389d6aa..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/camera/cameraDev/gc6153.c +++ /dev/null @@ -1,172 +0,0 @@ -#include "cameraDrv.h" -#include "sctdef.h" - -AP_PLAT_COMMON_DATA camI2cCfg_t gc6153_1sdrRegInfo[] = -{ - // SYS - {0xfe, 0xa0}, - {0xfe, 0xa0}, - {0xfe, 0xa0}, - {0xfa, 0x11}, - {0xfc, 0x00}, - {0xf6, 0x00}, - {0xfc, 0x12}, - - // ANALOG & CISCTL - {0xfe, 0x00}, - {0x01, 0x40}, - {0x02, 0x12}, - {0x0d, 0x40}, - {0x14, 0x7c}, // 0x7e - {0x16, 0x05}, // 0x05 - {0x17, 0x18}, // 0x18 - {0x1c, 0x31}, - {0x1d, 0xbb}, - {0x1f, 0x3f}, - {0x73, 0x20}, - {0x74, 0x71}, - {0x77, 0x22}, - {0x7a, 0x08}, - {0x11, 0x18}, - {0x13, 0x48}, - {0x12, 0xc8}, - {0x70, 0xc8}, - {0x7b, 0x18}, - {0x7d, 0x30}, - {0x7e, 0x02}, - - {0xfe, 0x10}, - {0xfe, 0x00}, - {0xfe, 0x00}, - {0xfe, 0x00}, - {0xfe, 0x00}, - {0xfe, 0x00}, - {0xfe, 0x10}, - {0xfe, 0x00}, - - {0x49, 0x61}, - {0x4a, 0x40}, - {0x4b, 0x58}, - - /*ISP*/ - {0xfe, 0x00}, - {0x39, 0x02}, - {0x3a, 0x80}, - {0x20, 0x7e}, - {0x26, 0xa7}, - - /*BLK*/ - {0x33, 0x10}, - {0x37, 0x06}, - {0x2a, 0x21}, - - /*GAIN*/ - {0x3f, 0x16}, - - /*DNDD*/ - {0x52, 0xa6}, - {0x53, 0x81}, - {0x54, 0x43}, - {0x56, 0x78}, - {0x57, 0xaa}, - {0x58, 0xff}, - - /*ASDE*/ - {0x5b, 0x60}, - {0x5c, 0x50}, - {0xab, 0x2a}, - {0xac, 0xb5}, - - /*INTPEE*/ - {0x5e, 0x06}, - {0x5f, 0x06}, - {0x60, 0x44}, - {0x61, 0xff}, - {0x62, 0x69}, - {0x63, 0x13}, - - /*CC*/ - {0x65, 0x13}, - {0x66, 0x26}, - {0x67, 0x07}, - {0x68, 0xf5}, - {0x69, 0xea}, - {0x6a, 0x21}, - {0x6b, 0x21}, - {0x6c, 0xe4}, - {0x6d, 0xfb}, - - /*YCP*/ - {0x81, 0x3b}, // 0 - {0x82, 0x3b}, // 0 : uyvy ºÚ°× - {0x83, 0x4b}, - {0x84, 0x90}, - {0x86, 0xf0}, - {0x87, 0x1d}, - {0x88, 0x16}, - {0x8d, 0x74}, - {0x8e, 0x25}, - - /*AEC*/ - {0x90, 0x36}, - {0x92, 0x43}, - {0x9d, 0x32}, - {0x9e, 0x81}, - {0x9f, 0xf4}, - {0xa0, 0xa0}, - {0xa1, 0x04}, - {0xa3, 0x2d}, - {0xa4, 0x01}, - - /*AWB*/ - {0xb0, 0xc2}, - {0xb1, 0x1e}, - {0xb2, 0x10}, - {0xb3, 0x20}, - {0xb4, 0x2d}, - {0xb5, 0x1b}, - {0xb6, 0x2e}, - {0xb8, 0x13}, - {0xba, 0x60}, - {0xbb, 0x62}, - {0xbd, 0x78}, - {0xbe, 0x55}, - {0xbf, 0xa0}, - {0xc4, 0xe7}, - {0xc5, 0x15}, - {0xc6, 0x16}, - {0xc7, 0xeb}, - {0xc8, 0xe4}, - {0xc9, 0x16}, - {0xca, 0x16}, - {0xcb, 0xe9}, - {0x22, 0xf8}, - - /*SPI*/ - {0xfe, 0x02}, - {0x01, 0x01}, - {0x02, 0x02}, - {0x03, 0x20}, - {0x04, 0x20}, - {0x0a, 0x00}, - {0x13, 0x10}, - {0x24, 0x00}, - {0x28, 0x03}, - {0xfe, 0x00}, - - /*OUTPUT*/ - {0xf2, 0x03}, - {0xfe, 0x00}, -}; - -uint16_t gc6153GetRegCnt(char* regName) -{ - if (strcmp(regName, "gc6153_1sdr") == 0) - { - return (sizeof(gc6153_1sdrRegInfo) / sizeof(gc6153_1sdrRegInfo[0])); - } - - return 0; -} - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/camera/cameraDrv.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/camera/cameraDrv.c deleted file mode 100644 index 8cc07ae..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/camera/cameraDrv.c +++ /dev/null @@ -1,669 +0,0 @@ -#include "cameraDrv.h" -#include "hal_i2c.h" -#include "sctdef.h" - -extern cspiDrvInterface_t cspiDrvInterface0; -extern cspiDrvInterface_t cspiDrvInterface1; - -extern camI2cCfg_t sp0A39Cfg[]; -extern camI2cCfg_t sp0821Cfg[]; -extern camI2cCfg_t gc6123Cfg[]; -extern camI2cCfg_t gc032ACfg[]; -extern camI2cCfg_t bf30a2Cfg[]; -extern cspiCtrl_t cspiCtrl; -extern cspiBinaryCtrl_t cspiBinaryCtrl; -extern cspiIntCtrl_t cspiIntCtrl; -extern cspiDataFmt_t cspiDataFmt; -extern cspiFrameProcLspi_t cspiFrameProcLspi; - -#define EIGEN_CSPI(n) ((CSPI_TypeDef *) (MP_USP0_BASE_ADDR + 0x1000*n)) -AP_PLAT_COMMON_BSS static camErrCb camErrStatsFunc; -AP_PLAT_COMMON_BSS static cspiCbEvent_fn userCamUspCb = NULL; -AP_PLAT_COMMON_BSS static cspiCbEvent_fn userCamDmaCb = NULL; -CameraBuf_t *camBuffBak; -void camDmaCb(uint32_t dmastatus); - -#if (CAMERA_ENABLE_GC032A) - #if (GC032A_2SDR) - char* regName = "gc032a_2sdr"; - #elif (GC032A_1SDR) - char* regName = "gc032a_1sdr"; - #elif (GC032A_2DDR) - char* regName = "gc032a_2ddr"; - #endif -#elif (CAMERA_ENABLE_GC6153) - #if (GC6153_1SDR) - char* regName = "gc6153_1sdr"; - #endif -#endif - -AP_PLAT_COMMON_BSS static uint8_t slaveAddr; -AP_PLAT_COMMON_BSS static uint16_t regCnt; -AP_PLAT_COMMON_BSS static camI2cCfg_t* regInfo = NULL; - -#if (RTE_CSPI1 == 1) -AP_PLAT_COMMON_DATA static cspiDrvInterface_t *cspiDrv = &CREATE_SYMBOL(cspiDrvInterface, 1); -#else -AP_PLAT_COMMON_DATA static cspiDrvInterface_t *cspiDrv = &CREATE_SYMBOL(cspiDrvInterface, 0); -#endif -extern void delay_us(uint32_t us); - -void findRegInfo(char* regName, uint8_t* slaveAddr, uint16_t* regCnt, camI2cCfg_t** regInfo) -{ - if (strcmp(regName, "gc032a_2sdr") == 0) - { - extern camI2cCfg_t gc032A_2sdrRegInfo[]; - *regInfo = gc032A_2sdrRegInfo; - *slaveAddr = GC032A_I2C_ADDR; - *regCnt = gc032aGetRegCnt(regName); - } - else if (strcmp(regName, "gc032a_1sdr") == 0) - { - extern camI2cCfg_t gc032A_1sdrRegInfo[]; - *regInfo = gc032A_1sdrRegInfo; - *slaveAddr = GC032A_I2C_ADDR; - *regCnt = gc032aGetRegCnt(regName); - } - else if (strcmp(regName, "gc032a_2ddr") == 0) - { - extern camI2cCfg_t gc032A_2ddrRegInfo[]; - *regInfo = gc032A_2ddrRegInfo; - *slaveAddr = GC032A_I2C_ADDR; - *regCnt = gc032aGetRegCnt(regName); - } - else if (strcmp(regName, "gc6153_1sdr") == 0) - { - extern camI2cCfg_t gc6153_1sdrRegInfo[]; - *regInfo = gc6153_1sdrRegInfo; - *slaveAddr = GC6153_I2C_ADDR; - *regCnt = gc6153GetRegCnt(regName); - } -} - -void camI2cInit() -{ - halI2cInit(true); - - // Backup some info about this sensor - findRegInfo(regName, &slaveAddr, ®Cnt, ®Info); -} - -void camI2cWrite(uint8_t slaveAddr, uint8_t regAddr, uint8_t regData, uint32_t num) -{ - uint8_t tempBuffer[2]; - - tempBuffer[0] = regAddr; - tempBuffer[1] = regData; - - uint8_t rxNack = 0; - halI2cWrite(slaveAddr, tempBuffer, num, &rxNack, true); - - if (rxNack == 1) - { - // if fail , write again - halI2cWrite(slaveAddr, tempBuffer, num, &rxNack, true); - } -} - -uint8_t camI2cRead(uint8_t slaveAddr, uint8_t regAddr) -{ - uint8_t readData; - halI2cRead(slaveAddr, regAddr, &readData, true); - return readData; -} - -uint8_t camReadReg(uint8_t regAddr) -{ - uint8_t recvData; - - recvData = camI2cRead(slaveAddr, regAddr); - return recvData; -} - -void camWriteReg(camI2cCfg_t* regInfo) -{ - camI2cWrite(slaveAddr, regInfo->regAddr, regInfo->regVal, 2); -} - -void camRegCfg() -{ - //uint8_t dataRead; - - camI2cInit(); - - // Configure all the registers about this sensor - for (int i=0; i < regCnt; i++) - { - camI2cWrite(slaveAddr, regInfo[i].regAddr, regInfo[i].regVal, 2); - delay_us(10000); // delay 10ms - -#if 0 - dataRead = camI2cRead(slaveAddr, regInfo[i].regAddr); - printf("reg addr=0x%02x, reg val=0x%02x\n", regInfo[i].regAddr, dataRead); - delay_us(15000); -#endif - } -} - -void camInterfaceCfg(camParamCfg_t* config) -{ - cspiDataFmt.endianMode = config->endianMode; - cspiCtrl.rxWid = config->wireNum; - cspiCtrl.rxdSeq = config->rxSeq; - cspiCtrl.cpol = config->cpol; - cspiCtrl.cpha = config->cpha; - cspiCtrl.ddrMode = config->ddrMode; - cspiBinaryCtrl.wordIdSeq = config->wordIdSeq; - cspiBinaryCtrl.dummyAllowed = config->dummyAllowed; - cspiCtrl.fillYonly = config->yOnly; - cspiCtrl.rowScaleRatio = config->rowScaleRatio; - cspiCtrl.colScaleRatio = config->colScaleRatio; - cspiCtrl.scaleBytes = config->scaleBytes; -} - -void camSetMemAddr(uint32_t dataAddr) -{ - cspiDrv->ctrl(CSPI_CTRL_MEM_ADDR , dataAddr); // register the recv memory -} - -#if (ENABLE_CAMERA_LDO == 1) -void camPowerOn(uint8_t ioInitVal) -{ - PadConfig_t padConfig; - PAD_getDefaultConfig(&padConfig); - padConfig.pullUpEnable = PAD_PULL_UP_DISABLE; - padConfig.pullDownEnable = PAD_PULL_DOWN_DISABLE; - padConfig.mux = CAM_PD_PAD_ALT_FUNC; - PAD_setPinConfig(CAM_PD_PAD_INDEX, &padConfig); - - GpioPinConfig_t config; - config.pinDirection = GPIO_DIRECTION_OUTPUT; - config.misc.initOutput = ioInitVal; - GPIO_pinConfig(CAM_PD_GPIO_INSTANCE, CAM_PD_GPIO_PIN, &config); -} -#endif - -static void camUspCb() -{ - uint32_t cspiStatus; - - cspiStatus = camGetCspiStats(); - - if (cspiStatus & ICL_STATS_FRAME_END_Msk) - { - CSPI1->STAS |= 0x3<<3; - CSPI1->STAS |= 0xf<<7; - CSPI1->STAS |= 0x3<<11; - CSPI1->DMACTL |= 1<<24; - - if (userCamUspCb) - { - userCamUspCb(cspiStatus); - } - - CSPI1->CBCTRL |= 2<<25; - } -} - - -void camInit(void* dataAddr, cspiCbEvent_fn uspCb, void* dmaCb,camErrCb errCb) -{ - camResolution_e camResolution; - camParamCfg_t camParamCfg; - IRQn_Type irqNum; - - #if (RTE_CSPI0 == 1) - irqNum = PXIC0_USP0_IRQn; - #elif (RTE_CSPI1 == 1) - irqNum = PXIC0_USP1_IRQn; - #endif - - camBuffBak = dataAddr; - camBuffBak[0].enableForCamera = 1; - camBuffBak[0].enableForUsr = 0; - camBuffBak[0].workingForUsr = 0; - - if(uspCb) - { - userCamUspCb = uspCb; - } - - if(errCb) - { - camErrStatsFunc = errCb; - } - - if(dmaCb) - { - userCamDmaCb = dmaCb; - } - - XIC_SetVector(irqNum, camUspCb); - XIC_EnableIRQ(irqNum); - -#if (CAMERA_ENABLE_GC032A) - #if (GC032A_2SDR) - camParamCfg.wireNum = WIRE_2; - camParamCfg.endianMode = CAM_LSB_MODE; - camParamCfg.rxSeq = SEQ_0; - camParamCfg.cpha = 0; - camParamCfg.cpol = 0; - camParamCfg.ddrMode = 0; - camParamCfg.wordIdSeq = 0; - camParamCfg.dummyAllowed = 0; - camResolution = CAM_CHAIN_COUNT; - #elif (GC032A_1SDR) - camParamCfg.wireNum = WIRE_1; - camParamCfg.endianMode = CAM_LSB_MODE; - camParamCfg.rxSeq = SEQ_0; - camParamCfg.cpha = 0; - camParamCfg.cpol = 0; - camParamCfg.ddrMode = 0; - camParamCfg.wordIdSeq = 0; - camParamCfg.dummyAllowed = 0; - camResolution = CAM_CHAIN_COUNT; - #elif (GC032A_2DDR) - camParamCfg.wireNum = WIRE_2; - camParamCfg.endianMode = CAM_MSB_MODE; - camParamCfg.rxSeq = SEQ_1; - camParamCfg.cpha = 1; - camParamCfg.cpol = 0; - camParamCfg.ddrMode = 1; - camParamCfg.wordIdSeq = 1; - camParamCfg.dummyAllowed = 1; - camResolution = CAM_CHAIN_COUNT; - #endif - - if (CAM_CHAIN_COUNT == CAM_8W_COLOR) - { - camParamCfg.yOnly = 0; - camParamCfg.rowScaleRatio = 1; - camParamCfg.colScaleRatio = 1; - camParamCfg.scaleBytes = 3; - } - else if (CAM_CHAIN_COUNT == CAM_8W_Y) - { - camParamCfg.yOnly = 1; - camParamCfg.rowScaleRatio = 1; - camParamCfg.colScaleRatio = 1; - camParamCfg.scaleBytes = 1; - } - else if (CAM_CHAIN_COUNT == CAM_30W_Y) - { - camParamCfg.yOnly = 1; - camParamCfg.rowScaleRatio = 0; - camParamCfg.colScaleRatio = 0; - camParamCfg.scaleBytes = 0; - } - else if (CAM_CHAIN_COUNT == CAM_30W_COLOR) - { - camParamCfg.yOnly = 0; - camParamCfg.rowScaleRatio = 0; - camParamCfg.colScaleRatio = 0; - camParamCfg.scaleBytes = 0; - } -#elif (CAMERA_ENABLE_GC6153) - #if (GC6153_1SDR) - camParamCfg.wireNum = WIRE_1; - #endif - camParamCfg.endianMode = CAM_LSB_MODE; - camParamCfg.rxSeq = SEQ_1; - camParamCfg.cpha = 1; - camParamCfg.cpol = 0; - camParamCfg.yOnly = 1; - camParamCfg.ddrMode = 0; - camParamCfg.wordIdSeq = 0; - camParamCfg.rowScaleRatio = 0; - camParamCfg.colScaleRatio = 0; - camParamCfg.scaleBytes = 0; - camResolution = CAM_CHAIN_COUNT; -#endif - - camInterfaceCfg(&camParamCfg); - - cspiDrv->ctrl(CSPI_CTRL_MEM_ADDR , (uint32_t)dataAddr); // register the recv memory - cspiDrv->powerCtrl(CSPI_POWER_FULL); - cspiDrv->init(camDmaCb); - cspiDrv->ctrl(CSPI_CTRL_DATA_FORMAT , 0); - cspiDrv->ctrl(CSPI_CTRL_RXTOR , 0); - cspiDrv->ctrl(CSPI_CTRL_FRAME_INFO0 , 0); - cspiDrv->ctrl(CSPI_CTRL_INT_CTRL , 0); - cspiDrv->ctrl(CSPI_CTRL_CSPICTL , 0); - cspiDrv->ctrl(CSPI_CTRL_DMA_CTRL , 0); - cspiDrv->ctrl(CSPI_CTRL_RESOLUTION_SET , camResolution); - cspiDrv->ctrl(CSPI_CTRL_BUS_SPEED, (camFrequence_e)CAM_25_5_M); - cspiDrv->ctrl(CSPI_BINARY_CTRL, 0); - cspiDrv->ctrl(CSPI_CTRL_AUTO_CG_CTRL, 0); - cspiDrv->ctrl(CSPI_FRAME_PROC_LSPI, 0); - cspiDrv->ctrl(CSPI_DELAY_CTRL, 0); -} - -void camStartStop(cspiStartStop_e startStop) -{ - cspiDrv->ctrl(CSPI_CTRL_START_STOP , (uint32_t)startStop); -} - -void cspiStartIntEnable(cspiIntEnable_e intEnable) -{ - if (intEnable) - { - cspiIntCtrl.frameStartIntEn |= intEnable; - } - else - { - cspiIntCtrl.frameStartIntEn &= intEnable; - } - cspiDrv->ctrl(CSPI_CTRL_INT_CTRL , 0); // cspi interrupt enable or disable -} - -void cspiEndIntEnable(cspiIntEnable_e endIntEnable) -{ - if (endIntEnable) - { - cspiIntCtrl.frameEndIntEn |= endIntEnable; - } - else - { - cspiIntCtrl.frameEndIntEn &= endIntEnable; - } - - cspiDrv->ctrl(CSPI_CTRL_INT_CTRL , 0); -} - -void cspi2LspiEnable(uint8_t enable) -{ - cspiFrameProcLspi.outEnLspi = enable; - cspiDrv->ctrl(CSPI_FRAME_PROC_LSPI, 0); -} - -void camFlush() -{ - cspiDrv->ctrl(CSPI_CTRL_FLUSH_RX_FIFO , 0); -} - -void camRegisterIRQ(cspiInstance_e instance, camIrq_fn irqCb) -{ - IRQn_Type irqNum; - - if (instance == CSPI_0) - { - irqNum = PXIC0_USP0_IRQn; - } - else - { - irqNum = PXIC0_USP1_IRQn; - } - - XIC_SetVector(irqNum, irqCb); - XIC_EnableIRQ(irqNum); -} - -PLAT_FM_RAMCODE void camRecv(uint8_t * dataAddr) -{ - cspiDrv->ctrl(CSPI_CTRL_MEM_ADDR , (uint32_t)dataAddr); - cspiDrv->recv(); -} - -uint32_t camGetCspiInt(cspiInstance_e instance) -{ - return EIGEN_CSPI(instance)->INTCTL; -} - -void camClearIntStats(cspiInstance_e instance, uint32_t mask) -{ - EIGEN_CSPI(instance)->STAS = mask; -} - -void camRegisterErrStatsCb(camErrCb errCb) -{ - camErrStatsFunc = errCb; -} - -uint32_t camGetCspiStats() -{ - uint32_t status = 0; - -#if (RTE_CSPI1 == 1) - status = EIGEN_CSPI(CSPI_1)->STAS; -#else - status = EIGEN_CSPI(CSPI_0)->STAS; -#endif - - return status; -} - -void camClearErrStats() -{ -#if (RTE_CSPI == 1) - CSPI1->STAS |= 0x3 << 3; - CSPI1->STAS |= 0xf << 7; - CSPI1->DMACTL |= 1 << 24; - CSPI1->CBCTRL |= 2 << 25; -#else - CSPI0->STAS |= 0x3 << 3; - CSPI0->STAS |= 0xf << 7; - CSPI0->DMACTL |= 1 << 24; - CSPI0->CBCTRL |= 2 << 25; -#endif -} - -int camCheckErrStats() -{ - uint32_t status = camGetCspiStats(); - - if ((status >> ICL_STATS_RX_OVERFLOW_Pos & 1) || - (status >> ICL_STATS_RX_DMA_ERR_Pos & 1) || - (status >> ICL_STATS_FS_ERR_Pos & 1)) { - - if (camErrStatsFunc) { - camErrStatsFunc(status); - } - - return -1; // has cspi error - } else { - return 0; - } -} - -void camGpioPulseCfg(uint8_t padAddr, uint8_t pinInstance, uint8_t pinNum) -{ - PadConfig_t padConfig; - PAD_getDefaultConfig(&padConfig); - - padConfig.mux = PAD_MUX_ALT0; - PAD_setPinConfig(padAddr, &padConfig); - - GpioPinConfig_t config; - config.pinDirection = GPIO_DIRECTION_OUTPUT; - config.misc.initOutput = 0; - - GPIO_pinConfig(pinInstance, pinNum, &config); -} - -void camGpioPulse(uint8_t pinInstance, uint8_t pinNum, uint32_t pulseDurationUs, uint8_t initialState, bool needLoop) -{ - GPIO_TypeDef *gpio = (GPIO_TypeDef*)(RMI_GPIO_BASE_ADDR + 0x1000*pinInstance); - - if (needLoop) - { - // for test gpio is good or not - while (1) - { - gpio->DATAOUT = ((~(1<DATAOUT = ((~(1<1 - gpio->DATAOUT = ((~(1<DATAOUT = ((~(1<0 - gpio->DATAOUT = ((~(1<DATAOUT = ((~(1<dbg_bc_h; - *sysTime = (hfnsfnshn >> 4) * 10 + (hfnsfnshn & 0xf); - - // CLOCK_clockDisable(PCLK_TMU); - RestoreIRQMask(mask); -} - -static uint8_t findNextCamBuf() -{ - int bypassIndex = -1; - uint8_t minIndex = 0; - uint32_t minValue = 0; - - for (int i = 0; i < 3; i++) - { - if (camBuffBak[i].workingForUsr == 1) - { - bypassIndex = i; - break; - } - } - - minIndex = (bypassIndex == 0) ? 1 : 0; - minValue = camBuffBak[minIndex].timeStamp; - - for (int i = (minIndex + 1); i < 3; i++) - { - if ((camBuffBak[i].timeStamp < minValue) && (camBuffBak[i].workingForUsr == 0)) - { - minValue = camBuffBak[i].timeStamp; - minIndex = i; - } - } - - return minIndex; -} - -void camDmaCb(uint32_t dmastatus) -{ -#if 1 -// #if (ENABLE_CAMERA_RING_BUF == 1) - int ret = 0; - for (int i = 0; i < 3; i++) - { - if ((camBuffBak[i].enableForCamera == 1) && (camBuffBak[i].workingForUsr == 0)) - { - // find out the current working buffer - if (camCheckErrStats() == 0) // qspi right - { - timeRead(&camBuffBak[i].timeStamp); - camBuffBak[i].enableForCamera = 0; - camBuffBak[i].enableForUsr = 1; - camBuffBak[i].workingForUsr = 0; - camBuffBak[i].camErrCnt = 0; - - ret = findNextCamBuf(); - // printf("next cam buf: %d\n", ret); - - #if (RTE_CSPI1 == 1) - CSPI1->CBCTRL |= 2 << 25; - #else - CSPI0->CBCTRL |= 2 << 25; - #endif - - camRecv(camBuffBak[ret].data); - camBuffBak[ret].enableForCamera = 1; - camBuffBak[ret].enableForUsr = 0; - camBuffBak[ret].workingForUsr = 0; - camBuffBak[ret].camErrCnt = 0; - } - else - { - // 1. clear cspl status - camClearErrStats(); - // 2. recv again - camRecv(camBuffBak[i].data); - camBuffBak[i].enableForCamera = 1; - camBuffBak[i].camErrCnt++; - camBuffBak[i].enableForUsr = 0; - camBuffBak[i].workingForUsr = 0; - - if (camBuffBak[i].camErrCnt == 5) - { - // send a msg - } - } - break; - } - } -#endif - if(userCamDmaCb){ - userCamDmaCb(dmastatus); - } -} - -static int8_t findUserEnableBuf() -{ - for (int i = 0; i < 3; i++) - { - if (camBuffBak[i].enableForUsr == 1) - return i; - } - return -1; -} - -int camPicTake() -{ - int minIndex = findUserEnableBuf(); - if (minIndex < 0) - return minIndex; - else - { - uint32_t minVal = camBuffBak[minIndex].timeStamp; - for (int i = (minIndex + 1); i < 3; i++) - { - if ((camBuffBak[i].timeStamp > 0) && (camBuffBak[i].timeStamp < minVal) && (camBuffBak[i].enableForUsr == 1)) - { - minVal = camBuffBak[i].timeStamp; - minIndex = i; - } - } - - uint32_t mask = SaveAndSetIRQMask(); - camBuffBak[minIndex].workingForUsr = 1; - RestoreIRQMask(mask); - - return minIndex; - } -} - -void camPicGive(uint8_t index) -{ - uint32_t mask = SaveAndSetIRQMask(); - camBuffBak[index].workingForUsr = 0; - camBuffBak[index].enableForUsr = 1; - RestoreIRQMask(mask); -} diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/codec/codecDev/es8311.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/codec/codecDev/es8311.c deleted file mode 100644 index b7dec74..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/codec/codecDev/es8311.c +++ /dev/null @@ -1,1134 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2019-, Copyrigths of EigenComm Ltd. - * File name: es8311.c - * Description: EC7xx es8311 file - * History: Rev1.0 2021-9-18 - * - ****************************************************************************/ - -#include "es8311.h" -#include "mw_nvm_audio.h" -#include "sctdef.h" - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ - -#define IS_DMIC 0 -#define USE_NV_VOLUME 1 -#define MCLK_DIV_FRE 256 - -#define ES8311_DEFAULT_CONFIG() \ -{ \ - .adcInput = CODEC_ADC_INPUT_LINE1, \ - .dacOutput = CODEC_DAC_OUTPUT_ALL, \ - .codecMode = CODEC_MODE_BOTH, \ - .codecIface = { \ - .mode = CODEC_MODE_SLAVE, \ - .fmt = CODEC_I2S_MODE, \ - .samples = CODEC_16K_SAMPLES, \ - .bits = CODEC_BIT_LENGTH_16BITS, \ - .channel = CODEC_MONO, \ - .polarity = 1, \ - }, \ -}; - - -/*----------------------------------------------------------------------------* - * DATA TYPE DEFINITION * - *----------------------------------------------------------------------------*/ - -// Clock coefficient structer -struct _coeffDiv -{ - uint32_t mclk; // mclk frequency - uint32_t rate; // sample rate - uint8_t preDiv; // the pre divider with range from 1 to 8 - uint8_t preMulti; // the pre multiplier with x1, x2, x4 and x8 selection - uint8_t adcDiv; // adcclk divider - uint8_t dacDiv; // dacclk divider - uint8_t fsMode; // double speed or single speed, =0, ss, =1, ds - uint8_t lrckH; // adclrck divider and daclrck divider - uint8_t lrckL; - uint8_t bclkDiv; // sclk divider - uint8_t adcOsr; // adc osr - uint8_t dacOsr; // dac osr -}; - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCTION DECLEARATION * - *----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------* - * GLOBAL VARIABLES * - *----------------------------------------------------------------------------*/ - -// 8311 func list -AP_PLAT_COMMON_DATA HalCodecFuncList_t es8311DefaultHandle = -{ - .codecType = ES8311, - .halCodecInitFunc = es8311Init, - .halCodecDeinitFunc = es8311DeInit, - .halCodecCtrlStateFunc = es8311StartStop, - .halCodecCfgIfaceFunc = es8311Config, - .halCodecSetMuteFunc = es8311SetMute, - .halCodecSetVolumeFunc = es8311SetVolume, - .halCodecGetVolumeFunc = es8311GetVolume, - .halCodecEnablePAFunc = es8311EnablePA, - .halCodecSetMicVolumeFunc = es8311SetMicVolume, - .halCodecGetMicVolumeFunc = es8311GetMicVolume, - .halCodecLock = NULL, - .handle = NULL, - .halCodecGetDefaultCfg = es8311GetDefaultCfg, -}; - -#if (USE_NV_VOLUME) -AP_PLAT_COMMON_BSS AudioParaCfgCodec_t mwNvmAudioCodec1; -AP_PLAT_COMMON_BSS MWNvmCfgUsrSetCodecVolumn usrCodecVolumn; -AP_PLAT_COMMON_BSS MWNvmCfgUsrSetCodecVolumn usrCodecVolumn2; -AP_PLAT_COMMON_BSS MWNvmCfgVolumnSetFlag volumeSetFlag; -AP_PLAT_COMMON_BSS MWNvmCfgVolumnSetFlag volumeSetFlag2; -#endif -extern void mwNvmCfgGetUsrCodecVolumn(UINT8 deviceType, MWNvmCfgUsrSetCodecVolumn *pUsrCodecVolumn); -extern void mwNvmCfgGetVolumnSetFlag(MWNvmCfgVolumnSetFlag *pVolumnSetFlag); -extern void mwNvmCfgSetAndSaveUsrCodecVolumn(UINT8 deviceType, UINT16 usrDigVolumn, UINT16 usrAnaVolumn); - -/*----------------------------------------------------------------------------* - * PRIVATE VARIABLES * - *----------------------------------------------------------------------------*/ - -// codec hifi mclk clock divider coefficients -static const struct _coeffDiv coeffDiv[] = -{ - //mclk rate preDiv mult adcDiv dacDiv fsMode lrch lrcl bckdiv adcOsr dacOsr - // 8k - {12288000, 8000 , 0x06, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {18432000, 8000 , 0x03, 0x02, 0x03, 0x03, 0x00, 0x05, 0xff, 0x18, 0x10, 0x20}, - {16384000, 8000 , 0x08, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {8192000 , 8000 , 0x04, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {6144000 , 8000 , 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {4096000 , 8000 , 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {3072000 , 8000 , 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {2048000 , 8000 , 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {1536000 , 8000 , 0x03, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {1024000 , 8000 , 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - - // 16k - {12288000, 16000, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {18432000, 16000, 0x03, 0x02, 0x03, 0x03, 0x00, 0x02, 0xff, 0x0c, 0x10, 0x20}, - {16384000, 16000, 0x04, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {8192000 , 16000, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {6144000 , 16000, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {4096000 , 16000, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {3072000 , 16000, 0x03, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {2048000 , 16000, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {1536000 , 16000, 0x03, 0x08, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {1024000 , 16000, 0x01, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - - // 22.05k - {11289600, 22050, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {5644800 , 22050, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {2822400 , 22050, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {1411200 , 22050, 0x01, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - - // 32k - {12288000, 32000, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {18432000, 32000, 0x03, 0x04, 0x03, 0x03, 0x00, 0x02, 0xff, 0x0c, 0x10, 0x10}, - {16384000, 32000, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {8192000 , 32000, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {6144000 , 32000, 0x03, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {4096000 , 32000, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {3072000 , 32000, 0x03, 0x08, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {2048000 , 32000, 0x01, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {1536000 , 32000, 0x03, 0x08, 0x01, 0x01, 0x01, 0x00, 0x7f, 0x02, 0x10, 0x10}, - {1024000 , 32000, 0x01, 0x08, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - - // 44.1k - {11289600, 44100, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {5644800 , 44100, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {2822400 , 44100, 0x01, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {1411200 , 44100, 0x01, 0x08, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - - // 48k - {12288000, 48000, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {18432000, 48000, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {6144000 , 48000, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {3072000 , 48000, 0x01, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {1536000 , 48000, 0x01, 0x08, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - - // 96k - {12288000, 96000, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {18432000, 96000, 0x03, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {6144000 , 96000, 0x01, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {3072000 , 96000, 0x01, 0x08, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {1536000 , 96000, 0x01, 0x08, 0x01, 0x01, 0x01, 0x00, 0x7f, 0x02, 0x10, 0x10}, -}; - -AP_PLAT_COMMON_BSS static uint8_t dacVolBak, adcVolBak; -AP_PLAT_COMMON_BSS static uint8_t micVolGainBak; -AP_PLAT_COMMON_BSS static bool isHasPA; -//static int slope, offset; -//static int gain0 = -955, gain100 = 320; // mul or divide 10 to a integer - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCS * - *----------------------------------------------------------------------------*/ - -static int32_t es8311WriteReg(uint8_t regAddr, uint16_t data) -{ - int32_t ret = 0; - uint8_t rxNack = 0; - uint8_t cmd[2] = {0}; - cmd[0] = regAddr; - cmd[1] = data & 0xff; - - ret = halI2cWrite(ES8311_IICADDR, cmd, 2, &rxNack, true); - - if (rxNack == 1) - { - // if fail , write again - ret = halI2cWrite(ES8311_IICADDR, cmd, 2, &rxNack, true); - } -#if 0 -#ifdef FEATURE_OS_ENABLE - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311WriteReg_1, P_DEBUG, "reg write: reg=%x, data=%x", regAddr, data); -#else - printf("reg write: reg=%02x, data=%02x\n", regAddr, data); -#endif -#endif - - return ret; -} - -static int32_t es8311ReadReg(uint8_t regAddr, uint8_t *retData) -{ - return halI2cRead(ES8311_IICADDR, regAddr, retData, true); -} - -static ARM_I2C_STATUS es8311GetStats() -{ - ARM_I2C_STATUS stats = {0}; - - halI2cGetStats(&stats, true); - return stats; -} - -static int getCoeff(uint32_t mclk, uint32_t rate) -{ - for (int i = 0; i < (sizeof(coeffDiv) / sizeof(coeffDiv[0])); i++) { - if (coeffDiv[i].rate == rate && coeffDiv[i].mclk == mclk) - return i; - } - return -1; -} - -// set es8311 dac mute or not. mute = 0, dac un-mute; mute = 1, dac mute -static void es8311Mute(HalCodecCfg_t* codecHalCfg, int mute) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311setmute_0, P_DEBUG, "Enter into es8311Mute(), mute = %d\n", mute); - es8311SetVolume(codecHalCfg, 0); -} - -// set es8311 into suspend mode -static void es8311Standby(uint8_t* dacVolB, uint8_t* adcVolB) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311suspend_0, P_DEBUG, "Enter into es8311 suspend"); - es8311ReadReg(ES8311_DAC_REG32, dacVolB); - es8311ReadReg(ES8311_ADC_REG17, adcVolB); - es8311WriteReg(ES8311_DAC_REG32, 0x00); - es8311WriteReg(ES8311_ADC_REG17, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG0E, 0xFF); - es8311WriteReg(ES8311_SYSTEM_REG12, 0x02); - es8311WriteReg(ES8311_SYSTEM_REG14, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG0D, 0xFA); - es8311WriteReg(ES8311_ADC_REG15, 0x00); - es8311WriteReg(ES8311_DAC_REG37, 0x08); - es8311WriteReg(ES8311_GP_REG45, 0x01); -} - -// set es8311 ADC into suspend mode -static void es8311AdcStandby(uint8_t* adcVolB, uint8_t* micGainB) -{ - es8311ReadReg(ES8311_ADC_REG17, adcVolB); - es8311ReadReg(ES8311_SYSTEM_REG14, micGainB); - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311suspend_1, P_DEBUG, "Enter es8311 adc suspend, adcVolB:0x%x, micGainB:0x%x", *adcVolB, *micGainB); - es8311WriteReg(ES8311_ADC_REG17, 0x00); - es8311WriteReg(ES8311_SDPOUT_REG0A, 0x40); - es8311WriteReg(ES8311_SYSTEM_REG0E, 0x7f); - es8311WriteReg(ES8311_SYSTEM_REG14, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG0D, 0x31); - es8311WriteReg(ES8311_ADC_REG15, 0x00); - es8311WriteReg(ES8311_DAC_REG37, 0x08); - es8311WriteReg(ES8311_RESET_REG00, 0x82); - es8311WriteReg(ES8311_CLK_MANAGER_REG01, 0x35); -} - -// set es8311 DAC into suspend mode -static void es8311DacStandby(uint8_t* dacVolB) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311suspend_2, P_DEBUG, "Enter into es8311 dac suspend"); - es8311ReadReg(ES8311_DAC_REG32, dacVolB); - es8311WriteReg(ES8311_DAC_REG32, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG0E, 0x0F); - es8311WriteReg(ES8311_SYSTEM_REG12, 0x02); - es8311WriteReg(ES8311_SYSTEM_REG0D, 0x09); - es8311WriteReg(ES8311_ADC_REG15, 0x00); - es8311WriteReg(ES8311_DAC_REG37, 0x08); - es8311WriteReg(ES8311_RESET_REG00, 0x81); - es8311WriteReg(ES8311_CLK_MANAGER_REG01, 0x3a); -} - -// set es8311 into resume mode -static HalCodecSts_e es8311AllResume() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311Resume_0, P_DEBUG, "Enter into es8311 resume"); - es8311WriteReg(ES8311_SYSTEM_REG0D, 0x01); - es8311WriteReg(ES8311_GP_REG45, 0x00); - es8311WriteReg(ES8311_CLK_MANAGER_REG01, 0x3F); - es8311WriteReg(ES8311_RESET_REG00, 0x80); -#ifdef FEATURE_OS_ENABLE - osDelay(1); -#else - delay_us(1000); -#endif - es8311WriteReg(ES8311_SYSTEM_REG0D, 0x01); - es8311WriteReg(ES8311_CLK_MANAGER_REG02, 0x00); - es8311WriteReg(ES8311_DAC_REG37, 0x08); - es8311WriteReg(ES8311_ADC_REG15, 0x40); - es8311WriteReg(ES8311_SYSTEM_REG14, micVolGainBak);//0x18); - es8311WriteReg(ES8311_SYSTEM_REG12, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG0E, 0x00); - es8311WriteReg(ES8311_DAC_REG32, dacVolBak); - es8311WriteReg(ES8311_ADC_REG17, adcVolBak); - - return CODEC_EOK; -} - -// set es8311 adc into resume mode -static HalCodecSts_e es8311AdcResume() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311Resume_1, P_DEBUG, "Enter into es8311 adc resume"); - es8311WriteReg(ES8311_SYSTEM_REG0D, 0x01); - es8311WriteReg(ES8311_CLK_MANAGER_REG01, 0x3F); - es8311WriteReg(ES8311_RESET_REG00, 0x80); -#ifdef FEATURE_OS_ENABLE - osDelay(1); -#else - delay_us(1000); -#endif - es8311WriteReg(ES8311_SYSTEM_REG0D, 0x01); - es8311WriteReg(ES8311_DAC_REG37, 0x08); - es8311WriteReg(ES8311_ADC_REG15, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG14, micVolGainBak);//0x18); - es8311WriteReg(ES8311_SYSTEM_REG0E, 0x02); - es8311WriteReg(ES8311_ADC_REG17, adcVolBak); -#ifdef FEATURE_OS_ENABLE - osDelay(50); -#else - delay_us(50*1000); -#endif - es8311WriteReg(ES8311_SDPOUT_REG0A, 0x00); - return CODEC_EOK; -} - -// set es8311 dac into resume mode -static HalCodecSts_e es8311DacResume() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311Resume_2, P_DEBUG, "Enter into es8311 dac resume"); - es8311WriteReg(ES8311_SYSTEM_REG0D, 0x01); - es8311WriteReg(ES8311_CLK_MANAGER_REG01, 0x3F); - es8311WriteReg(ES8311_RESET_REG00, 0x80); -#ifdef FEATURE_OS_ENABLE - osDelay(1); -#else - delay_us(1000); -#endif - es8311WriteReg(ES8311_SYSTEM_REG0D, 0x01); - es8311WriteReg(ES8311_DAC_REG37, 0x08); - es8311WriteReg(ES8311_ADC_REG15, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG12, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG0E, 0x02); - es8311WriteReg(ES8311_DAC_REG32, dacVolBak); - - return CODEC_EOK; -} - - -// set es8311 into powerdown mode -static HalCodecSts_e es8311PwrDown() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311pwrDown_0, P_DEBUG, "Enter into es8311 powerdown"); - es8311WriteReg(ES8311_DAC_REG32, 0x00); - es8311WriteReg(ES8311_ADC_REG17, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG0E, 0xff); - es8311WriteReg(ES8311_SYSTEM_REG12, 0x02); - es8311WriteReg(ES8311_SYSTEM_REG14, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG0D, 0xf9); - es8311WriteReg(ES8311_ADC_REG15, 0x00); - es8311WriteReg(ES8311_DAC_REG37, 0x08); - es8311WriteReg(ES8311_CLK_MANAGER_REG02, 0x10); - es8311WriteReg(ES8311_RESET_REG00, 0x00); -#ifdef FEATURE_OS_ENABLE - osDelay(1); -#else - delay_us(1000); -#endif - es8311WriteReg(ES8311_RESET_REG00, 0x1f); - es8311WriteReg(ES8311_CLK_MANAGER_REG01, 0x30); -#ifdef FEATURE_OS_ENABLE - osDelay(1); -#else - delay_us(1000); -#endif - es8311WriteReg(ES8311_CLK_MANAGER_REG01, 0x00); - es8311WriteReg(ES8311_GP_REG45, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG0D, 0xfc); - es8311WriteReg(ES8311_CLK_MANAGER_REG02, 0x00); - return CODEC_EOK; -} - - -/*----------------------------------------------------------------------------* - * GLOBAL FUNCTIONS * - *----------------------------------------------------------------------------*/ - -// enable pa power -void es8311EnablePA(bool enable) -{ - GPIO_pinWrite(CODEC_PA_GPIO_INSTANCE, 1 << CODEC_PA_GPIO_PIN, enable ? (1 << CODEC_PA_GPIO_PIN) : 0); -} - -HalCodecSts_e es8311Init(HalCodecCfg_t *codecCfg) -{ - uint8_t datmp, regv; - int coeff; - HalCodecSts_e ret = CODEC_EOK; - getCoeff(0,0); - - halI2cInit(true); - -#ifdef FEATURE_OS_ENABLE -#if (USE_NV_VOLUME) - AudioParaCfgCommon_t mAudioCfgCommon; - ecAudioCfgTlvStore *pMwNvmAudioCfg = NULL; - - // get default gain value - memset((char *)&mAudioCfgCommon, 0x0, sizeof(mAudioCfgCommon)); - mAudioCfgCommon.mode = codecCfg->deviceMode; - mAudioCfgCommon.device = codecCfg->codecDeviceType; - mAudioCfgCommon.direct = codecCfg->direction; - DEBUG_PRINT(UNILOG_PLA_MIDWARE, es8311DefaultCfg_0, P_WARNING, "mode: %d, device: %d, direct: %d", mAudioCfgCommon.mode, mAudioCfgCommon.device, mAudioCfgCommon.direct); - - // to get mic volumn and default 0/100 volume - pMwNvmAudioCfg = (ecAudioCfgTlvStore *)OsaAllocZeroMemory(sizeof(ecAudioCfgTlvStore)+ sizeof(AudioParaSphEQBiquard_t)*EC_ADCFG_SPEECH_EQ_BIQUARD_NUMB*EC_ADCFG_SPEECH_TX_NUMB - + sizeof(AudioParaSphEQBiquard_t)*EC_ADCFG_SPEECH_EQ_BIQUARD_NUMB*EC_ADCFG_SPEECH_RX_NUMB + sizeof(UINT16)*EC_ADCFG_SPEECH_ANS_EQ_BAND_NUMB*EC_ADCFG_SPEECH_RX_NUMB - + sizeof(UINT16)*EC_ADCFG_SPEECH_ANS_EQ_BAND_NUMB*EC_ADCFG_SPEECH_TX_NUMB); - if (FALSE == mwNvmAudioCfgRead(pMwNvmAudioCfg)) - { - DEBUG_PRINT(UNILOG_PLA_MIDWARE, es8311DefaultCfg_1, P_WARNING, "MW NVM Audio, Read Audio Storage memory failure, try again !"); - if (FALSE == mwNvmAudioCfgRead(pMwNvmAudioCfg)) - { - DEBUG_PRINT(UNILOG_PLA_MIDWARE, es8311DefaultCfg_2, P_WARNING, "MW NVM Audio, Read Audio Storage memory failure !"); - OsaFreeMemory(&pMwNvmAudioCfg); - return FALSE; - } - } - - mwNvmAudioCfgCodecGet(&mAudioCfgCommon, &mwNvmAudioCodec1, pMwNvmAudioCfg); - - if ((mwNvmAudioCodec1.rxDigGain0 == 0) && (mwNvmAudioCodec1.rxDigGain100 == 0)) - { - // this board hasn't calibrated, so use default db val - codecCfg->codecVolParam.defaultVal.rxDigGain0 = -955; - codecCfg->codecVolParam.defaultVal.rxDigGain100 = 320; - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_7, P_DEBUG, " this board hasn't calibrated"); - } - else - { - #if 0 - // this board has calibrated, so use new db val - remain = mwNvmAudioCodec1.rxDigGain0 % 5; - mwNvmAudioCodec1.rxDigGain0 -= remain; - - remain = mwNvmAudioCodec1.rxDigGain100 % 5; - mwNvmAudioCodec1.rxDigGain100 -= remain; - #endif - - // mwNvmAudioCodec1.rxDigGain0 ranges from 0~255 - codecCfg->codecVolParam.defaultVal.rxDigGain0 = -955 + 5 * mwNvmAudioCodec1.rxDigGain0; - codecCfg->codecVolParam.defaultVal.rxDigGain100 = -955 + 5 * mwNvmAudioCodec1.rxDigGain100; - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_8, P_DEBUG, " this board has calibrated, gain0:%d, gain100:%d", codecCfg->codecVolParam.defaultVal.rxDigGain0, codecCfg->codecVolParam.defaultVal.rxDigGain100); - } - - codecCfg->codecVolParam.offset = codecCfg->codecVolParam.defaultVal.rxDigGain0 * 128; - codecCfg->codecVolParam.slope = (codecCfg->codecVolParam.defaultVal.rxDigGain100 - codecCfg->codecVolParam.defaultVal.rxDigGain0) * 1024/100; - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_9, P_DEBUG, "offset: %d, slope:%d", codecCfg->codecVolParam.offset, codecCfg->codecVolParam.slope); - OsaFreeMemory(&pMwNvmAudioCfg); - - - mwNvmCfgGetUsrCodecVolumn(0, &usrCodecVolumn); - mwNvmCfgGetVolumnSetFlag(&volumeSetFlag); - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_10, P_DEBUG, "init get nv speaker vol. rxDigUsrSet:%d, rxAnaUsrSet:%d", usrCodecVolumn.rxDigUsrSet, usrCodecVolumn.rxAnaUsrSet); - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_11, P_DEBUG, "rxDigUsrSetFlag:%d, rxAnaUsrSetFlag:%d, txDigGainFlag%d, txAnaGainFlag:%d", volumeSetFlag.rxDigUsrSetFlag, volumeSetFlag.rxAnaUsrSetFlag, volumeSetFlag.txDigGainFlag, volumeSetFlag.txAnaGainFlag); -#endif -#endif - #if 0 - es8311WriteReg(ES8311_GP_REG45, 0x00); - es8311WriteReg(ES8311_CLK_MANAGER_REG01, 0x30); - es8311WriteReg(ES8311_CLK_MANAGER_REG02, 0x10); - - // 256 - es8311WriteReg(ES8311_CLK_MANAGER_REG02, 0x00); - es8311WriteReg(ES8311_CLK_MANAGER_REG03, 0x10); - es8311WriteReg(ES8311_ADC_REG16, 0x21); - es8311WriteReg(ES8311_CLK_MANAGER_REG04, 0x19); - es8311WriteReg(ES8311_CLK_MANAGER_REG05, 0x00); - - // clk - es8311WriteReg(ES8311_CLK_MANAGER_REG06, (0<<5) + 4 -1); - es8311WriteReg(ES8311_CLK_MANAGER_REG07, 0x00); - es8311WriteReg(ES8311_CLK_MANAGER_REG08, 0xff); - - // sdp - es8311WriteReg(ES8311_SDPIN_REG09, (0<<7) + 0x00 + (0x00<<2)); - es8311WriteReg(ES8311_SDPOUT_REG0A, 0x00 + (0x00<<2)); - - // system - es8311WriteReg(ES8311_SYSTEM_REG0B, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG0C, 0x00); - - es8311WriteReg(ES8311_SYSTEM_REG10, (0x1C*0) + (0x60*0x00) + 0x03); - es8311WriteReg(ES8311_SYSTEM_REG11, 0x7F); - es8311WriteReg(ES8311_RESET_REG00, 0x80); - es8311WriteReg(ES8311_SYSTEM_REG0D, 0x01); - es8311WriteReg(ES8311_CLK_MANAGER_REG01, 0x3F + (0x00<<7)); - es8311WriteReg(ES8311_SYSTEM_REG14, 0x18); - es8311WriteReg(ES8311_SYSTEM_REG12, 0x28); - es8311WriteReg(ES8311_SYSTEM_REG13, 0x00 + (0<<4)); - es8311WriteReg(ES8311_SYSTEM_REG0E, 0x02); - es8311WriteReg(ES8311_SYSTEM_REG0F, 0x44); - - // adc - es8311WriteReg(ES8311_ADC_REG15, 0x00); - es8311WriteReg(ES8311_ADC_REG1B, 0x0a); - es8311WriteReg(ES8311_ADC_REG1C, 0x6a); - - // dac - es8311WriteReg(ES8311_DAC_REG37, 0x48); - - // gpio - es8311WriteReg(ES8311_GPIO_REG44, (0 <<7)); - - - es8311WriteReg(ES8311_ADC_REG17, 0x88); - es8311WriteReg(ES8311_DAC_REG32, 0xf6); - - #else - HalCodecIface_t *i2sCfg = &(codecCfg->codecIface); - ret |= es8311WriteReg(ES8311_CLK_MANAGER_REG01, 0x3F); - - // Select clock source for internal mclk - es8311ReadReg(ES8311_CLK_MANAGER_REG01, ®v); - - // es8311 voltage check - ARM_I2C_STATUS i2sStats = {0}; - uint8_t i2cCheckCnt = 3; - do - { - i2sStats.rx_nack = 0; - i2sStats = es8311GetStats(); - } while ((i2sStats.rx_nack == 1) && i2cCheckCnt--); - - if (i2sStats.rx_nack == 1) - { - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_0, P_DEBUG, "I2C not impassable, check pull-up register or voltage!!!"); - return CODEC_START_I2C_ERR; - } - /////////////////////////////////////////////// - - regv &= 0x7F; - ret |= es8311WriteReg(ES8311_CLK_MANAGER_REG01, regv); - - // Set clock parammeters - int sampleFre = 0; - int mclkFre = 0; - switch (i2sCfg->samples) - { - case CODEC_08K_SAMPLES: - sampleFre = 8000; - break; - case CODEC_16K_SAMPLES: - sampleFre = 16000; - break; - case CODEC_22K_SAMPLES: - sampleFre = 22050; - break; - case CODEC_32K_SAMPLES: - sampleFre = 32000; - break; - case CODEC_44K_SAMPLES: - sampleFre = 44100; - break; - case CODEC_48K_SAMPLES: - sampleFre = 48000; - break; - default: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_1, P_DEBUG, "Unable to configure sample rate %dHz", sampleFre); - break; - } - mclkFre = sampleFre * MCLK_DIV_FRE; - coeff = getCoeff(mclkFre, sampleFre); - if (coeff < 0) - { - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_2, P_DEBUG, "Unable to configure sample rate %dHz with %dHz MCLK", sampleFre, mclkFre); - return CODEC_INIT_ERR; - } - - if (coeff >= 0) - { - //regv = es8311ReadReg(ES8311_CLK_MANAGER_REG02) & 0x07; - es8311ReadReg(ES8311_CLK_MANAGER_REG02, ®v); - regv = regv & 0x07; - regv |= (coeffDiv[coeff].preDiv - 1) << 5; - datmp = 0; - switch (coeffDiv[coeff].preMulti) - { - case 1: - datmp = 0; - break; - case 2: - datmp = 1; - break; - case 4: - datmp = 2; - break; - case 8: - datmp = 3; - break; - default: - break; - } - - regv |= (datmp) << 3; - ret |= es8311WriteReg(ES8311_CLK_MANAGER_REG02, regv); - - //regv = es8311ReadReg(ES8311_CLK_MANAGER_REG05) & 0x00; - es8311ReadReg(ES8311_CLK_MANAGER_REG05, ®v); - regv = regv & 0x00; - regv |= (coeffDiv[coeff].adcDiv - 1) << 4; - regv |= (coeffDiv[coeff].dacDiv - 1) << 0; - ret |= es8311WriteReg(ES8311_CLK_MANAGER_REG05, regv); - - //regv = es8311ReadReg(ES8311_CLK_MANAGER_REG03) & 0x80; - es8311ReadReg(ES8311_CLK_MANAGER_REG03, ®v); - regv = regv & 0x80; - regv |= coeffDiv[coeff].fsMode << 6; - regv |= coeffDiv[coeff].adcOsr << 0; - ret |= es8311WriteReg(ES8311_CLK_MANAGER_REG03, regv); - - //regv = es8311ReadReg(ES8311_CLK_MANAGER_REG04) & 0x80; - es8311ReadReg(ES8311_CLK_MANAGER_REG04, ®v); - regv = regv & 0x80; - regv |= coeffDiv[coeff].dacOsr << 0; - ret |= es8311WriteReg(ES8311_CLK_MANAGER_REG04, regv); - - //regv = es8311ReadReg(ES8311_CLK_MANAGER_REG07) & 0xC0; - es8311ReadReg(ES8311_CLK_MANAGER_REG07, ®v); - regv = regv & 0xc0; - regv |= coeffDiv[coeff].lrckH << 0; - ret |= es8311WriteReg(ES8311_CLK_MANAGER_REG07, regv); - - //regv = es8311ReadReg(ES8311_CLK_MANAGER_REG08) & 0x00; - es8311ReadReg(ES8311_CLK_MANAGER_REG08, ®v); - regv = regv & 0x00; - regv |= coeffDiv[coeff].lrckL << 0; - ret |= es8311WriteReg(ES8311_CLK_MANAGER_REG08, regv); - - //regv = es8311ReadReg(ES8311_CLK_MANAGER_REG06) & 0xE0; - es8311ReadReg(ES8311_CLK_MANAGER_REG06, ®v); - regv = regv & 0xe0; - if (coeffDiv[coeff].bclkDiv < 19) - { - regv |= (coeffDiv[coeff].bclkDiv - 1) << 0; - } - else - { - regv |= (coeffDiv[coeff].bclkDiv) << 0; - } - ret |= es8311WriteReg(ES8311_CLK_MANAGER_REG06, regv); - } - - ret |= es8311WriteReg(ES8311_RESET_REG00, 0x80); - - // Set Codec into Master or Slave mode - es8311ReadReg(ES8311_RESET_REG00, ®v); - - // Set master/slave audio interface - switch (i2sCfg->mode) - { - case CODEC_MODE_MASTER: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_3, P_DEBUG, "es8311 in master mode"); - regv |= 0x40; - break; - case CODEC_MODE_SLAVE: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_4, P_DEBUG, "es8311 in slave mode"); - regv &= 0xBF; - break; - default: - regv &= 0xBF; - } - ret |= es8311WriteReg(ES8311_RESET_REG00, regv); - - ret |= es8311WriteReg(ES8311_SYSTEM_REG13, 0x00/*0x10*/); - ret |= es8311WriteReg(ES8311_ADC_REG1B, 0x0A); - ret |= es8311WriteReg(ES8311_ADC_REG1C, 0x6A); - if (ret != CODEC_EOK) - { - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_5, P_DEBUG, "es8311 initialize failed"); - } - #endif - - if (codecCfg->hasPA) - { - isHasPA = codecCfg->hasPA; - - // GPIO function select - PadConfig_t padConfig = {0}; - GpioPinConfig_t pinConfig = {0}; - - PAD_getDefaultConfig(&padConfig); - padConfig.mux = PAD_MUX_ALT0; - PAD_setPinConfig(CODEC_PA_PAD_INDEX, &padConfig); - - - // CODEC_PA pin config - pinConfig.pinDirection = GPIO_DIRECTION_OUTPUT; - pinConfig.misc.initOutput = 0; // when codec has been init, PA should open - GPIO_pinConfig(CODEC_PA_GPIO_INSTANCE, CODEC_PA_GPIO_PIN, &pinConfig); - - // enable pa power - //es8311EnablePA(true); - } - - return CODEC_EOK; -} - -void es8311DeInit() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311DeInit_1, P_DEBUG, "ES8311 deinit"); - //es8311PwrDown(); - halI2cDeInit(true); -} - -HalCodecSts_e es8311ConfigFmt(HalCodecIfaceFormat_e fmt) -{ - HalCodecSts_e ret = CODEC_EOK; - uint8_t adcIface = 0, dacIface = 0; - es8311ReadReg(ES8311_SDPIN_REG09, &dacIface); - es8311ReadReg(ES8311_SDPOUT_REG0A, &adcIface); - switch (fmt) - { - case CODEC_MSB_MODE: - case CODEC_LSB_MODE: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311fmt_2, P_DEBUG, "ES8311 in left/right Format"); - adcIface &= 0xFC; - dacIface &= 0xFC; - adcIface |= 0x01; - dacIface |= 0x01; - break; - - case CODEC_I2S_MODE: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311fmt_1, P_DEBUG, "ES8311 in I2S Format"); - dacIface &= 0xFC; - adcIface &= 0xFC; - break; - - case CODEC_PCM_MODE: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311fmt_3, P_DEBUG, "ES8311 in pcm Format"); - adcIface &= 0xDC; - dacIface &= 0xDC; - adcIface |= 0x03; - dacIface |= 0x03; - break; - default: - dacIface &= 0xFC; - adcIface &= 0xFC; - break; - } - ret |= es8311WriteReg(ES8311_SDPIN_REG09, dacIface); - ret |= es8311WriteReg(ES8311_SDPOUT_REG0A, adcIface); - - return ret; -} - -HalCodecSts_e es8311SetBitsPerSample(HalCodecIfaceBits_e bits) -{ - HalCodecSts_e ret = CODEC_EOK; - uint8_t adc_iface = 0, dac_iface = 0; - es8311ReadReg(ES8311_SDPIN_REG09, &dac_iface); - es8311ReadReg(ES8311_SDPOUT_REG0A, &adc_iface); - switch (bits) - { - case CODEC_BIT_LENGTH_16BITS: - dac_iface |= 0x0c; - adc_iface |= 0x0c; - break; - case CODEC_BIT_LENGTH_24BITS: - dac_iface &= ~0x1c; - adc_iface &= ~0x1c; - break; - case CODEC_BIT_LENGTH_32BITS: - dac_iface |= 0x10; - adc_iface |= 0x10; - break; - default: - dac_iface |= 0x0c; - adc_iface |= 0x0c; - break; - - } - ret |= es8311WriteReg(ES8311_SDPIN_REG09, dac_iface); - ret |= es8311WriteReg(ES8311_SDPOUT_REG0A, adc_iface); - - return ret; -} - -HalCodecSts_e es8311Config(HalCodecMode_e mode, HalCodecIface_t *iface) -{ - int ret = CODEC_EOK; - ret |= es8311SetBitsPerSample(iface->bits); - ret |= es8311ConfigFmt(iface->fmt); - return ret; -} - -HalCodecSts_e es8311StartStop(HalCodecMode_e mode, HalCodecCtrlState_e ctrlState) -{ - HalCodecSts_e ret = CODEC_EOK; - - switch(ctrlState) - { - case CODEC_CTRL_START: - { - ret |= es8311Start(mode); - //if (isHasPA) - //{ - //es8311EnablePA(true); - //} - } - break; - - case CODEC_CTRL_STOP: - ret |= es8311Stop(mode); - break; - case CODEC_CTRL_RESUME: - ret |= es8311Resume(mode); - break; - case CODEC_CTRL_POWERDONW: - ret |= es8311PwrDown(mode); - break; - } - - - return ret; -} - -HalCodecSts_e es8311Start(HalCodecMode_e mode) -{ - HalCodecSts_e ret = CODEC_EOK; - uint8_t adcIface = 0, dacIface = 0; - - //dacIface = es8311ReadReg(ES8311_SDPIN_REG09) & 0xBF; - //adcIface = es8311ReadReg(ES8311_SDPOUT_REG0A) & 0xBF; - es8311ReadReg(ES8311_SDPIN_REG09, &dacIface); - dacIface = dacIface & 0xBF; - es8311ReadReg(ES8311_SDPOUT_REG0A, &adcIface); - adcIface = adcIface & 0xBF; - adcIface |= BIT(6); - dacIface |= BIT(6); - - if (mode == CODEC_MODE_ENCODE || mode == CODEC_MODE_BOTH) - { - adcIface &= ~(BIT(6)); - } - - if (mode == CODEC_MODE_DECODE || mode == CODEC_MODE_BOTH) - { - dacIface &= ~(BIT(6)); - } - - ret |= es8311WriteReg(ES8311_SDPIN_REG09, dacIface); - ret |= es8311WriteReg(ES8311_SDPOUT_REG0A, adcIface); - - // ret |= es8311WriteReg(ES8311_ADC_REG17, 0x88/*0xBF*/); - ret |= es8311WriteReg(ES8311_SYSTEM_REG0E, 0x02); - ret |= es8311WriteReg(ES8311_SYSTEM_REG12, 0x28/*0x00*/); - // ret |= es8311WriteReg(ES8311_SYSTEM_REG14, 0x18/*0x1A*/); - - // pdm dmic enable or disable - uint8_t regv = 0; - if (IS_DMIC) - { - es8311ReadReg(ES8311_SYSTEM_REG14, ®v); - regv |= 0x40; - ret |= es8311WriteReg(ES8311_SYSTEM_REG14, regv); - } - else - { - es8311ReadReg(ES8311_SYSTEM_REG14, ®v); - regv &= ~(0x40); - ret |= es8311WriteReg(ES8311_SYSTEM_REG14, regv); - } - // es8311WriteReg(ES8311_SYSTEM_REG14, 0x18); //add for debug - - ret |= es8311WriteReg(ES8311_SYSTEM_REG0D, 0x01); - ret |= es8311WriteReg(ES8311_ADC_REG15, 0x00/*0x40*/); - ret |= es8311WriteReg(ES8311_DAC_REG37, 0x48); - ret |= es8311WriteReg(ES8311_GP_REG45, 0x00); - - // set internal reference signal (ADCL + DACR) - ret |= es8311WriteReg(ES8311_GPIO_REG44, 0x00/*0x50*/); - - return ret; -} - -HalCodecSts_e es8311Stop(HalCodecMode_e mode) -{ - HalCodecSts_e ret = CODEC_EOK; - switch(mode) - { - case CODEC_MODE_ENCODE: - es8311AdcStandby(&adcVolBak, &micVolGainBak); - break; - - case CODEC_MODE_DECODE: - { - es8311DacStandby(&dacVolBak); - - // disable PA - if (isHasPA) - { - es8311EnablePA(false); - isHasPA = false; - } - } - break; - - case CODEC_MODE_BOTH: - es8311Standby(&dacVolBak, &adcVolBak); - break; - - default: - break; - } - - return ret; -} - -HalCodecSts_e es8311Resume(HalCodecMode_e mode) -{ - HalCodecSts_e ret = CODEC_EOK; - switch(mode) - { - case CODEC_MODE_ENCODE: - es8311AdcResume(); - break; - - case CODEC_MODE_DECODE: - { - es8311DacResume(); - - // enable PA - if (isHasPA) - { - es8311EnablePA(true); - } - } - break; - - case CODEC_MODE_BOTH: - es8311AllResume(); - break; - - default: - break; - } - - return ret; - -} - - -HalCodecSts_e es8311SetVolume(HalCodecCfg_t* codecHalCfg, int volume) -{ - HalCodecSts_e res = CODEC_EOK; - -#ifdef FEATURE_OS_ENABLE -#if (USE_NV_VOLUME) - //bool saveRet = true; - int calGainDb = 0; // calculated db, should divide 10 - uint8_t regValWrite = 0; -#endif -#endif - - if (volume <= 0) - { - //return es8311SetMute(1); - volume = 0; - } - - if (volume >= 100) - { - volume = 100; - } - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311SetVolume_1, P_DEBUG, "Es8311 Set volume:%d", volume); - -#if defined (FEATURE_OS_ENABLE) && (USE_NV_VOLUME == 1) - /* 1. get default tuning value - - 2. Gain[db] = volume[%] * slope/1024[db] + offset/128[db] - - offset = Gain[0] * 128 - slope = (Gain[100] - Gain[0]) * 1024 / 100 - - offset and slope should stored into NV - */ - - // 1. cal needed db value - calGainDb = (int)(volume * codecHalCfg->codecVolParam.slope/1024 + codecHalCfg->codecVolParam.offset/128); - - // 2. cal the writed reg val - regValWrite = (calGainDb - codecHalCfg->codecVolParam.defaultVal.rxDigGain0)/5; - - // 3. write into reg - res = es8311WriteReg(ES8311_DAC_REG32, regValWrite); - - // 4. write into nv - usrCodecVolumn.rxDigUsrSet &= ~0xff; - usrCodecVolumn.rxDigUsrSet |= volume; - mwNvmCfgSetAndSaveUsrCodecVolumn(0, usrCodecVolumn.rxDigUsrSet, usrCodecVolumn.rxAnaUsrSet); - - mwNvmCfgGetUsrCodecVolumn(0, &usrCodecVolumn2); - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311SetVolume_2, P_DEBUG, "rxDigUsrSet:%d, rxAnaUsrSet:%d", usrCodecVolumn2.rxDigUsrSet, usrCodecVolumn2.rxAnaUsrSet); -#else - int vol = volume * 2550 / 1000; // volume * (rxDigGain100 - rxDigGain0) / 100 - res = es8311WriteReg(ES8311_DAC_REG32, vol); -#endif - return res; -} - -HalCodecSts_e es8311GetVolume(HalCodecCfg_t* codecHalCfg, int *volume) -{ - HalCodecSts_e res = CODEC_EOK; - uint8_t regVal = 0; -#if (USE_NV_VOLUME) - //int calGainDb = 0; -#endif - - es8311ReadReg(ES8311_DAC_REG32, ®Val); - -#if (USE_NV_VOLUME) - //calGainDb = regVal*5 + codecHalCfg->codecVolParam.defaultVal.rxDigGain0; - //*volume = (calGainDb - codecHalCfg->codecVolParam.offset/128) * 1024 / codecHalCfg->codecVolParam.slope; - *volume = usrCodecVolumn.rxDigUsrSet & 0xff; -#else - *volume = regVal * 1000 / 2550; -#endif - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311getVolume_1, P_DEBUG, "Get volume:%d reg_value:0x%x", *volume, regVal); - return res; -} - -HalCodecSts_e es8311SetMute(HalCodecCfg_t* codecHalCfg, bool enable) -{ -#if 1 - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311setMute_1, P_DEBUG, "Es8311SetVoiceMute:%d", enable); - es8311Mute(codecHalCfg, enable); -#endif - return CODEC_EOK; -} - -HalCodecSts_e es8311GetVoiceMute(int *mute) -{ - HalCodecSts_e res = CODEC_EOK; - uint8_t reg = 0; - res = es8311ReadReg(ES8311_DAC_REG31, ®); - if (res == CODEC_EOK) - { - reg = (res & 0x20) >> 5; - } - *mute = reg; - return res; -} - -HalCodecSts_e es8311SetMicVolume(HalCodecCfg_t* codecHalCfg, uint8_t micGain, int micVolume) -{ - HalCodecSts_e res = CODEC_EOK; - - uint8_t regv = 0; - es8311ReadReg(ES8311_SYSTEM_REG14, ®v); - regv &= ~0xf; // clear low 4bits, maintain high 4bits, because high bits is dmic indication - regv |= (1<<4 | micGain); - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311SetMicVolume_2, P_DEBUG, "Es8311 reg set, micGain:%d, micVolume:%d", regv, micVolume); - res = es8311WriteReg(ES8311_SYSTEM_REG14, regv); - res = es8311WriteReg(ES8311_ADC_REG17, micVolume); - micVolGainBak = regv; - - return res; -} - -HalCodecSts_e es8311GetMicVolume(HalCodecCfg_t* codecHalCfg, uint8_t* micGain, int *micVolume) -{ - HalCodecSts_e res = CODEC_EOK; - - es8311ReadReg(ES8311_SYSTEM_REG14, micGain); - es8311ReadReg(ES8311_ADC_REG17, (uint8_t*)micVolume); - - #if 0 - *micVolume = mwNvmAudioCodec1.txDigGain & 0xff;//regVal * 1000 / 2550; - *micGain = mwNvmAudioCodec1.txAnaGain & 0xff;//regVal1 & 0xf; - #endif - - *micGain = *micGain & 0xf; - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311getMicVolume_1, P_DEBUG, "Get Mic gain:%d, mic volume:%d", *micGain, *micVolume); - return res; -} - - -void es8311ReadAll() -{ - uint8_t reg = 0; - -#ifdef FEATURE_OS_ENABLE - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311ReadAll_1, P_DEBUG, "now read 8311 all"); -#else - printf("now read 8311 all\n"); -#endif - - for (int i = 0; i < 0x4A; i++) - { - es8311ReadReg(i, ®); -#ifdef FEATURE_OS_ENABLE - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311ReadAll_2, P_DEBUG, "REG:%x, %x", reg, i); -#else - printf("reg = 0x%02x, val = 0x%02x\n", i, reg); -#endif - } - -#ifdef FEATURE_OS_ENABLE - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311ReadAll_3, P_DEBUG, "now read 8311 all end"); -#else - printf("now read 8311 all end\n"); -#endif -} - -HalCodecCfg_t es8311GetDefaultCfg() -{ - HalCodecCfg_t codecCfg = ES8311_DEFAULT_CONFIG(); - - return codecCfg; -} - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/codec/codecDev/es8374.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/codec/codecDev/es8374.c deleted file mode 100644 index d2dd5c4..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/codec/codecDev/es8374.c +++ /dev/null @@ -1,767 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2019-, Copyrigths of EigenComm Ltd. - * File name: es8374.c - * Description: EC7xx es8374 file - * History: Rev1.0 2021-9-18 - * - ****************************************************************************/ - -#include "es8374.h" -#include "sctdef.h" - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ - -//adcInput å•声é“ADC输入通é“选择是CH1(MIC1P/1N)还是CH2(MIC2P/2N) -//dacOutput å•声é“DAC输出通é“选择:默认选择0:L声é“,1:Rå£°é“ -//mode 产å“主从模å¼é€‰æ‹©:默认选择0为SlaveMode,打开为1选择MasterMode -//fmt æ•°æ®æ ¼å¼é€‰æ‹©,需è¦å’Œå®žé™…æ—¶åºåŒ¹é… -//bits æ•°æ®é•¿åº¦é€‰æ‹©,需è¦å’Œå®žé™…æ—¶åºåŒ¹é… -#define ES8374_DEFAULT_CONFIG() \ -{ \ - .adcInput = CODEC_ADC_INPUT_LINE2, \ - .dacOutput = CODEC_DAC_OUTPUT_LINE1, \ - .codecMode = CODEC_MODE_BOTH, \ - .codecIface = { \ - .mode = CODEC_MODE_SLAVE, \ - .fmt = CODEC_I2S_MODE, \ - .samples = CODEC_16K_SAMPLES, \ - .bits = CODEC_BIT_LENGTH_16BITS, \ - .channel = CODEC_MONO, \ - .polarity = 1, \ - }, \ -}; - -#define VDDSPK_5V0 0x2B -#define VDDSPK_4V2 0x2A -#define VDDSPK_3V3 0x29 - -#define RATIO 256 //实际Ratio=MCLK/LRCK比率,需è¦å’Œå®žé™…æ—¶é’Ÿæ¯”ä¾‹åŒ¹é… -#define SCLK_DIV 4 //SCLK分频选择:(选择范围1~18),SCLK=MCLK/SCLK_DIV,超过åŽéžç­‰æ¯”增加具体对应关系è§ç›¸åº”DS说明 -#define SCLK_INV 0 //é»˜è®¤å¯¹é½æ–¹å¼ä¸ºä¸‹é™æ²¿,1ä¸ºä¸Šå‡æ²¿å¯¹é½,需è¦å’Œå®žé™…æ—¶åºåŒ¹é… -#define VDDSPK_VOLTAGE VDDSPK_4V2 //SPK拟电压选择为4V2还是5V0,需è¦å’Œå®žé™…ç¡¬ä»¶åŒ¹é… -#define ADC_PGA_DF2SE_15DB 1 //ADC模拟固定15dB增益:默认选择关闭0,打开为1 -#define ADC_PGA_GAIN 3 //ADC模拟增益:(选择范围0~7),具体对应关系è§ç›¸åº”DS说明 -#define ADC_VOLUME_MAX 0 //ADC数字增益:(选择范围0~192),0:0DB,-0.5dB/Step -#define ADC_VOLUME_MIN 50 //ADC数字增益:(选择范围0~192),0:0DB,-0.5dB/Step -#define ADC_VOLUME_MUTE 192 //ADC数字增益:(选择范围0~192),0:0DB,-0.5dB/Step -#define ADC_VOLUME_DEFAULT ADC_VOLUME_MAX //ADC数字增益:(选择范围0~192),0:0DB,-0.5dB/Step -#define DAC_VOLUME_MAX 0 //DAC数字增益:(选择范围0~192),0:0DB,-0.5dB/Step -#define DAC_VOLUME_MIN 50 //DAC数字增益:(选择范围0~192),0:0DB,-0.5dB/Step -#define DAC_VOLUME_MUTE 192 //DAC数字增益:(选择范围0~192),0:0DB,-0.5dB/Step -#define DAC_VOLUME_DEFAULT DAC_VOLUME_MAX //DAC数字增益:(选择范围0~192),0:0DB,-0.5dB/Step -#define DMIC_SELON 0 //DMIC选择:默认选择关闭0,立体声打开为1,å•声é“需è¦é€‰æ‹©2为H,3为L -#define DMIC_GAIN 0 //DMIC增益:(选择范围0~1),6dB/Step -#define MICBIASOFF 0 //内部MICBIASåç½®:默认选择关闭1,å¼€å¯é…置为0 -#define PA_VOLUME_DEFAULT 7 //(0~7),(0db,1.5db,3db,4db,5db,6db,6.75db,7.5db) -//16K,8K采样率下é…ç½®PLL_SET_12288 = 1 å¯ä»¥æ”¹å–„音质,目å‰åªæ”¯æŒ256Ratio,å…¶ä»–å¾…æ›´æ–° -#define PLL_SET_12288 1 //PLL选择输入频率,å•ä½ä¸ºKHZ:外部输入XXXXKHZ内部PLL锿ˆ12M288 - -/*----------------------------------------------------------------------------* - * DATA TYPE DEFINITION * - *----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCTION DECLEARATION * - *----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------* - * GLOBAL VARIABLES * - *----------------------------------------------------------------------------*/ - -// 8374 func list -AP_PLAT_COMMON_DATA HalCodecFuncList_t es8374DefaultHandle = -{ - .codecType = ES8374, - .halCodecInitFunc = es8374Init, - .halCodecDeinitFunc = es8374DeInit, - .halCodecCtrlStateFunc = es8374StartStop, - .halCodecCfgIfaceFunc = es8374Config, - .halCodecSetMuteFunc = es8374SetMute, - .halCodecSetVolumeFunc = es8374SetVolume, - .halCodecGetVolumeFunc = es8374GetVolume, - //.halCodecEnablePAFunc = es8374EnablePA, - .halCodecSetMicVolumeFunc = es8374SetMicVolume, - .halCodecGetMicVolumeFunc = NULL, - .halCodecLock = NULL, - .handle = NULL, - .halCodecGetDefaultCfg = es8374GetDefaultCfg, -}; - - - -/*----------------------------------------------------------------------------* - * PRIVATE VARIABLES * - *----------------------------------------------------------------------------*/ - -AP_PLAT_COMMON_BSS static uint8_t dacVolBak, adcVolBak; -AP_PLAT_COMMON_BSS static bool isHasPA; -AP_PLAT_COMMON_DATA static uint8_t adcInput = 2; -AP_PLAT_COMMON_BSS static uint8_t dacOutput = 0; - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCS * - *----------------------------------------------------------------------------*/ - -static int32_t es8374WriteReg(uint8_t regAddr, uint16_t data) -{ - int32_t ret = 0; - uint8_t rxNack = 0; - - uint8_t cmd[2] = {0}; - cmd[0] = regAddr; - cmd[1] = data & 0xff; - - ret = halI2cWrite(ES8374_IICADDR, cmd, 2, &rxNack, false); - -#if 0 -#ifdef FEATURE_OS_ENABLE - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374WriteReg, P_DEBUG, "[ES8374] [%x] %x", regAddr, data); -#else - printf("[ES8374] [%02X] %02X\r\n", regAddr, data); -#endif -#endif - - return ret; -} - -static int32_t es8374ReadReg(uint8_t regAddr, uint8_t* retData) -{ - return halI2cRead(ES8374_IICADDR, regAddr, retData, false); -} - -// enable pa power -void es8374EnablePA(bool enable) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374EnablePA, P_DEBUG, "[ES8374] es8374EnablePA: enable=%d", enable); - -#if 0 - if (enable) - { - es8374WriteReg(ES8374_REG_1E, 0x20); // spk on - delay_us(1000); - es8374WriteReg(ES8374_REG_1E, 0xa0); // spk on - } - else - { - es8374WriteReg(ES8374_REG_1E, 0x20); - delay_us(1000); - es8374WriteReg(ES8374_REG_1C, 0x10); - es8374WriteReg(ES8374_REG_1D, 0x10); - es8374WriteReg(ES8374_REG_1E, 0x40); // spk off - } -#endif -} - - -// set es8374 into suspend mode - void es8374Standby(uint8_t* dacVolB, uint8_t* adcVolB)//待机é…ç½®--æ­é…es8374AllResume(void)//æ¢å¤é…ç½® -{ - es8374ReadReg(ES8374_REG_38, dacVolB); - es8374ReadReg(ES8374_REG_25, adcVolB); - - es8374WriteReg(ES8374_REG_38, 0xC0); - es8374WriteReg(ES8374_REG_25, 0xC0); - es8374WriteReg(ES8374_REG_28, 0x1C); - es8374WriteReg(ES8374_REG_36, 0x20); - es8374WriteReg(ES8374_REG_37, 0x20); - es8374WriteReg(ES8374_REG_6D, 0x00); - es8374WriteReg(ES8374_REG_09, 0x80); - es8374WriteReg(ES8374_REG_1A, 0x08); - es8374WriteReg(ES8374_REG_1E, 0x20); - delay_us(1000); - es8374WriteReg(ES8374_REG_1C, 0x10); - es8374WriteReg(ES8374_REG_1D, 0x10); - es8374WriteReg(ES8374_REG_1E, 0x40); - es8374WriteReg(ES8374_REG_24, 0x20); - es8374WriteReg(ES8374_REG_22, 0x00); - es8374WriteReg(ES8374_REG_21, 0xC0); - es8374WriteReg(ES8374_REG_15, 0xFF); - es8374WriteReg(ES8374_REG_14, 0x82); - es8374WriteReg(ES8374_REG_01, 0x03); - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374Standby, P_DEBUG, "[ES8374] es8374Standby: dacVolB=%d, adcVolB=%d", *dacVolB, *adcVolB); -} - -#if 1 -// set es8374 ADC into suspend mode - void es8374AdcStandby(uint8_t* adcVolB)//ADC待机é…ç½®--æ­é…es8374AdcResume -{ - es8374ReadReg(ES8374_REG_25, adcVolB); - - es8374WriteReg(ES8374_REG_25, 0xC0); - es8374WriteReg(ES8374_REG_15, 0x00); - es8374WriteReg(ES8374_REG_28, 0x1C); - es8374WriteReg(ES8374_REG_09, 0x80); - delay_us(5000); - es8374WriteReg(ES8374_REG_24, 0x20); - es8374WriteReg(ES8374_REG_21, 0xC0); - es8374WriteReg(ES8374_REG_15, 0x0C); - es8374WriteReg(ES8374_REG_01, 0x75); - -} - -// set es8374 DAC into suspend mode - void es8374DacStandby(uint8_t* dacVolB)//DAC待机é…ç½®--æ­é…es8374DacResume -{ - es8374ReadReg(ES8374_REG_38, dacVolB); - - es8374WriteReg(ES8374_REG_38, 0xC0); - es8374WriteReg(ES8374_REG_15, 0x00); - es8374WriteReg(ES8374_REG_36, 0x20); - es8374WriteReg(ES8374_REG_37, 0x20); - es8374WriteReg(ES8374_REG_6D, 0x00); - es8374WriteReg(ES8374_REG_09, 0x80); - es8374WriteReg(ES8374_REG_1A, 0x08); - es8374WriteReg(ES8374_REG_1E, 0x20); - delay_us(1000); - es8374WriteReg(ES8374_REG_1C, 0x10); - es8374WriteReg(ES8374_REG_1D, 0x10); - //es8374WriteReg(ES8374_REG_1E, 0x40); // spk off - es8374WriteReg(ES8374_REG_15, 0x62); - es8374WriteReg(ES8374_REG_01, 0x7A); - -} -#endif -#if 1 -// set es8374 adc into resume mode -static HalCodecSts_e es8374AdcResume(void)//ADCæ¢å¤é…ç½®--æ­é…es8374AdcStandby -{ - - es8374WriteReg(ES8374_REG_01, 0x7F); - es8374WriteReg(ES8374_REG_15, 0x00); - es8374WriteReg(ES8374_REG_21, (adcInput << 4) + (ADC_PGA_DF2SE_15DB << 2)); - es8374WriteReg(ES8374_REG_24, 0x08 + (DMIC_GAIN << 7) + DMIC_SELON); - es8374WriteReg(ES8374_REG_09, 0x41); - es8374WriteReg(ES8374_REG_28, 0x00); - es8374WriteReg(ES8374_REG_15, 0x40); - es8374WriteReg(ES8374_REG_25, adcVolBak); - - return CODEC_EOK; -} - -// set es8374 dac into resume mode -static HalCodecSts_e es8374DacResume(void)//DACæ¢å¤é…ç½®--æ­é…es8374DacStandby -{ - - es8374WriteReg(ES8374_REG_01, 0x7F); - es8374WriteReg(ES8374_REG_15, 0x00); - es8374WriteReg(ES8374_REG_21, 0x50); - es8374WriteReg(ES8374_REG_1E, 0x20); // spk on - delay_us(1000); - es8374WriteReg(ES8374_REG_1E, 0xa0); // spk on - es8374WriteReg(ES8374_REG_1D, VDDSPK_VOLTAGE); - es8374WriteReg(ES8374_REG_1C, 0x90); - es8374WriteReg(ES8374_REG_1A, 0xA0); - es8374WriteReg(ES8374_REG_09, 0x41); - es8374WriteReg(ES8374_REG_6D, 0x60); - es8374WriteReg(ES8374_REG_37, 0x00); - es8374WriteReg(ES8374_REG_36, (dacOutput << 6)); - es8374WriteReg(ES8374_REG_15, 0x40); - es8374WriteReg(ES8374_REG_38, dacVolBak); - - return CODEC_EOK; -} -#endif - - -// set es8374 into resume mode -static HalCodecSts_e es8374AllResume(void)//æ¢å¤é…ç½®(未下电)--æ­é…es8374Standby(void) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374AllResume, P_DEBUG, "[ES8374] es8374AllResume: dacVolBak=%d, adcVolBak=%d", dacVolBak, adcVolBak); - - es8374WriteReg(ES8374_REG_01, 0x7F); - es8374WriteReg(ES8374_REG_14, 0x8A + (MICBIASOFF << 4)); - es8374WriteReg(ES8374_REG_15, 0x00); - es8374WriteReg(ES8374_REG_21, 0x50); - es8374WriteReg(ES8374_REG_22, ADC_PGA_GAIN + (ADC_PGA_GAIN << 4)); - es8374WriteReg(ES8374_REG_21, (adcInput << 4) + (ADC_PGA_DF2SE_15DB << 2)); - es8374WriteReg(ES8374_REG_24, 0x08 + (DMIC_GAIN << 7) + DMIC_SELON); - es8374WriteReg(ES8374_REG_1E, 0x20); // spk on - delay_us(1000); - es8374WriteReg(ES8374_REG_1E, 0xa0); // spk on - es8374WriteReg(ES8374_REG_1D, VDDSPK_VOLTAGE); - es8374WriteReg(ES8374_REG_1C, 0x90); - es8374WriteReg(ES8374_REG_1A, 0xA0); - es8374WriteReg(ES8374_REG_09, 0x41); - es8374WriteReg(ES8374_REG_6D, 0x60); - es8374WriteReg(ES8374_REG_37, 0x00); - es8374WriteReg(ES8374_REG_36, (dacOutput << 6)); - es8374WriteReg(ES8374_REG_28, 0x00); - es8374WriteReg(ES8374_REG_15, 0x40); - es8374WriteReg(ES8374_REG_38, dacVolBak); - es8374WriteReg(ES8374_REG_25, adcVolBak); - - return CODEC_EOK; -} - - - -// set es8374 into powerdown mode -static HalCodecSts_e es8374PwrDown(HalCodecModule_e mode) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374PwrDown, P_DEBUG, "[ES8374] es8374PwrDown: mode=%d", mode); - - es8374WriteReg(ES8374_REG_38, 0xC0); - es8374WriteReg(ES8374_REG_25, 0xC0); - es8374WriteReg(ES8374_REG_15, 0x00); - es8374WriteReg(ES8374_REG_28, 0x1C); - es8374WriteReg(ES8374_REG_36, 0x20); - es8374WriteReg(ES8374_REG_37, 0x20); - es8374WriteReg(ES8374_REG_6D, 0x00); - es8374WriteReg(ES8374_REG_09, 0x80); - es8374WriteReg(ES8374_REG_1A, 0x08); - es8374WriteReg(ES8374_REG_1E, 0x20); - delay_us(1000); - es8374WriteReg(ES8374_REG_1C, 0x10); - es8374WriteReg(ES8374_REG_1D, 0x10); - es8374WriteReg(ES8374_REG_1E, 0x40); - es8374WriteReg(ES8374_REG_24, 0x20); - es8374WriteReg(ES8374_REG_22, 0x00); - es8374WriteReg(ES8374_REG_21, 0xC0); - es8374WriteReg(ES8374_REG_15, 0xFF); - es8374WriteReg(ES8374_REG_14, 0x16); - es8374WriteReg(ES8374_REG_01, 0x03); - - return CODEC_EOK; -} - - -/*----------------------------------------------------------------------------* - * GLOBAL FUNCTIONS * - *----------------------------------------------------------------------------*/ - - - -HalCodecSts_e es8374Init(HalCodecCfg_t *codecCfg) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374Init_1, P_DEBUG, "[ES8374] es8374Init_1: adcInput=%d, dacOutput=%d, codecMode=%d, hasPA=%d", - codecCfg->adcInput, codecCfg->dacOutput, codecCfg->codecMode, codecCfg->hasPA); - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374Init_2, P_DEBUG, "[ES8374] es8374Init_2: mode=%d, fmt=%d, samples=%d, bits=%d, channel=%d, polarity=%d", - codecCfg->codecIface.mode, codecCfg->codecIface.fmt, codecCfg->codecIface.samples, codecCfg->codecIface.bits, codecCfg->codecIface.channel, codecCfg->codecIface.polarity); - - //codecI2cInit(); - halI2cInit(false); - - switch (codecCfg->adcInput) - { - case CODEC_ADC_INPUT_LINE1: - adcInput = 1; - break; - - case CODEC_ADC_INPUT_LINE2: - adcInput = 2; - break; - - case CODEC_ADC_INPUT_ALL: - adcInput = 3; - break; - - case CODEC_ADC_INPUT_DIFFERENCE: - break; - - default: - break; - } - - switch (codecCfg->dacOutput) - { - case CODEC_DAC_OUTPUT_LINE1: - dacOutput = 0; - break; - - case CODEC_DAC_OUTPUT_LINE2: - dacOutput = 1; - break; - - case CODEC_DAC_OUTPUT_ALL: - break; - - default: - break; - } - - es8374WriteReg(ES8374_REG_00, 0x3F); //IC Rst start - es8374WriteReg(ES8374_REG_00, 0x03); //IC Rst stop - es8374WriteReg(ES8374_REG_01, 0x7F); //IC clk on - es8374WriteReg(ES8374_REG_02, 0x00); - es8374WriteReg(ES8374_REG_03, 0x20); - es8374WriteReg(ES8374_REG_04, 0x00); - es8374WriteReg(ES8374_REG_05, 0x11); //clk div set - if(PLL_SET_12288 == 1) - { - es8374WriteReg(ES8374_REG_6F, 0xA0); //pll set:mode enable - es8374WriteReg(ES8374_REG_72, 0x41); //pll set:mode set - es8374WriteReg(ES8374_REG_09, 0x01); //pll set:reset on ,set start - es8374WriteReg(ES8374_REG_0A, 0x8A); - es8374WriteReg(ES8374_REG_0B, 0x0C); - es8374WriteReg(ES8374_REG_0C, 0x00); - es8374WriteReg(ES8374_REG_0D, 0x00); - es8374WriteReg(ES8374_REG_0E, 0x00); - es8374WriteReg(ES8374_REG_09, 0x41); //pll set:reset off ,set stop - es8374WriteReg(ES8374_REG_02, 0x08); //pll set:use pll - es8374WriteReg(ES8374_REG_03, 0x30); //384 OSR - es8374WriteReg(ES8374_REG_04, 0x20); //384 OSR - } - es8374WriteReg(ES8374_REG_06, (RATIO >> 8)); //LRCK DIV - es8374WriteReg(ES8374_REG_07, (RATIO & 0xFF)); //LRCK DIV - es8374SetBitsPerSample(codecCfg->codecIface.bits); - es8374ConfigFmt(codecCfg->codecIface.fmt); - es8374WriteReg(ES8374_REG_0F, (((codecCfg->codecIface.mode == CODEC_MODE_SLAVE) ? 0 : 1) << 7) + (SCLK_INV<<5) + SCLK_DIV); - es8374WriteReg(ES8374_REG_24, 0x08 + (DMIC_GAIN << 7) + DMIC_SELON); //adc set - es8374WriteReg(ES8374_REG_36, (dacOutput << 6)); //dac set - es8374WriteReg(ES8374_REG_12, 0x30); //timming set - es8374WriteReg(ES8374_REG_13, 0x20); //timming set - es8374WriteReg(ES8374_REG_18, 0xFF); - es8374WriteReg(ES8374_REG_21, 0x50); - es8374WriteReg(ES8374_REG_22, ADC_PGA_GAIN + (ADC_PGA_GAIN << 4)); //adc set - es8374WriteReg(ES8374_REG_21, (adcInput << 4) + (ADC_PGA_DF2SE_15DB << 2)); - es8374WriteReg(ES8374_REG_00, 0x80); // IC START - delay_us(10000); - es8374WriteReg(ES8374_REG_14, 0x8A + (MICBIASOFF << 4)); - es8374WriteReg(ES8374_REG_15, 0x40); - es8374WriteReg(ES8374_REG_1A, 0xA0); // monoout set - es8374WriteReg(ES8374_REG_1B, 0x19); //5V 0DB - es8374WriteReg(ES8374_REG_1C, 0x90); - es8374WriteReg(ES8374_REG_1D, VDDSPK_VOLTAGE); //5V 0DB 8R=>1W - es8374WriteReg(ES8374_REG_1F, 0x00); // spk set - es8374WriteReg(ES8374_REG_20, 0x00); // spk set - es8374WriteReg(ES8374_REG_1E, 0x20); // spk on - delay_us(1000); - es8374WriteReg(ES8374_REG_1E, 0xa0); // spk on - es8374WriteReg(ES8374_REG_28, 0x00); // alc set - es8374WriteReg(ES8374_REG_25, ADC_VOLUME_DEFAULT); // ADCVOLUME on - es8374WriteReg(ES8374_REG_38, DAC_VOLUME_DEFAULT); // DACVOLUMEL on - es8374WriteReg(ES8374_REG_37, 0x00); // dac set - es8374WriteReg(ES8374_REG_6D, 0x60); // SEL:GPIO1=DMIC CLK OUT+SEL:GPIO2=PLL CLK OUT - - isHasPA = codecCfg->hasPA; - - return CODEC_EOK; -} - -void es8374DeInit() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374DeInit, P_DEBUG, "[ES8374] es8374DeInit"); - - halI2cDeInit(false); -} - -HalCodecSts_e es8374ConfigFmt(HalCodecIfaceFormat_e fmt) -{ - HalCodecSts_e ret = CODEC_EOK; - uint8_t adc = 0, dac = 0; - es8374ReadReg(ES8374_REG_10, &adc); - es8374ReadReg(ES8374_REG_11, &dac); - adc = adc & 0xdc; - dac = dac & 0xdc; - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374ConfigFmt, P_DEBUG, "[ES8374] es8374ConfigFmt: fmt=%d", fmt); - - switch (fmt) - { - case CODEC_MSB_MODE: - case CODEC_LSB_MODE: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374fmt_1, P_DEBUG, "[ES8374] left/right Format"); - adc |= 0x01; - dac |= 0x01; - break; - - case CODEC_I2S_MODE: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374fmt_2, P_DEBUG, "[ES8374] I2S Format"); - adc |= 0x00; - dac |= 0x00; - break; - - case CODEC_PCM_MODE: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374fmt_3, P_DEBUG, "[ES8374] pcm Format"); - adc |= 0x03; - dac |= 0x03; - break; - - default: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374fmt_5, P_DEBUG, "[ES8374] default Format (I2S)"); - adc |= 0x00; - dac |= 0x00; - break; - } - - ret |= es8374WriteReg(ES8374_REG_10, adc); - ret |= es8374WriteReg(ES8374_REG_11, dac); - - return ret; -} - -HalCodecSts_e es8374SetBitsPerSample(HalCodecIfaceBits_e bits) -{ - HalCodecSts_e ret = CODEC_EOK; - uint8_t adc = 0, dac = 0; - es8374ReadReg(ES8374_REG_10, &adc); - es8374ReadReg(ES8374_REG_11, &dac); - adc = adc & 0xe3; - dac = dac & 0xe3; - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374SetBitsPerSample, P_DEBUG, "[ES8374] es8374SetBitsPerSample: bits=%d", bits); - - switch (bits) - { - case CODEC_BIT_LENGTH_16BITS: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374SetBitsPerSample_1, P_DEBUG, "[ES8374] 16 bits"); - adc |= 0x0C; - dac |= 0x0C; - break; - - case CODEC_BIT_LENGTH_24BITS: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374SetBitsPerSample_2, P_DEBUG, "[ES8374] 24 bits"); - adc |= 0x00; - dac |= 0x00; - break; - - case CODEC_BIT_LENGTH_32BITS: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374SetBitsPerSample_3, P_DEBUG, "[ES8374] 32 bits"); - adc |= 0x10; - dac |= 0x10; - break; - - default: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374SetBitsPerSample_5, P_DEBUG, "[ES8374] default bit length (16 bits)"); - adc |= 0x0C; - dac |= 0x0C; - break; - } - - ret |= es8374WriteReg(ES8374_REG_10, adc); - ret |= es8374WriteReg(ES8374_REG_11, dac); - - return ret; -} - -HalCodecSts_e es8374Config(HalCodecMode_e mode, HalCodecIface_t *iface) -{ - HalCodecSts_e ret = CODEC_EOK; - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374Config, P_DEBUG, "[ES8374] es8374Config: mode=%d, bits=%d, fmt=%d", mode, iface->bits, iface->fmt); - - ret |= es8374SetBitsPerSample(iface->bits); - ret |= es8374ConfigFmt(iface->fmt); - - return ret; -} - -HalCodecSts_e es8374StartStop(HalCodecMode_e mode, HalCodecCtrlState_e ctrlState) -{ - HalCodecSts_e ret = CODEC_EOK; - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374StartStop, P_DEBUG, "[ES8374] es8374StartStop: mode=%d, ctrlState=%d", mode, ctrlState); - switch(ctrlState) - { - case CODEC_CTRL_START: - ret |= es8374Start(mode); - if (isHasPA) - { - //es8374EnablePA(true); - } - break; - case CODEC_CTRL_STOP: - ret |= es8374Stop(mode); - break; - case CODEC_CTRL_RESUME: - ret |= es8374Resume(mode); - break; - case CODEC_CTRL_POWERDONW: - ret |= es8374PwrDown(mode); - break; - } - - - return ret; -} - -HalCodecSts_e es8374Start(HalCodecModule_e mode) -{ - HalCodecSts_e ret = CODEC_EOK; - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374Start, P_DEBUG, "[ES8374] es8374Start: mode=%d", mode); - - return ret; -} - -HalCodecSts_e es8374Stop(HalCodecModule_e mode) -{ - HalCodecSts_e ret = CODEC_EOK; - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374Stop, P_DEBUG, "[ES8374] es8374Stop: mode=%d", mode); - switch(mode) - { - case CODEC_MODE_ENCODE: - es8374AdcStandby(&adcVolBak); - break; - - case CODEC_MODE_DECODE: - es8374DacStandby(&dacVolBak); - if (isHasPA) - { - delay_us(2000); - //es8374EnablePA(false); - } - break; - - case CODEC_MODE_BOTH: - es8374Standby(&dacVolBak, &adcVolBak); - break; - - default: - break; - } - - return ret; -} - -HalCodecSts_e es8374Resume(HalCodecMode_e mode) -{ - HalCodecSts_e ret = CODEC_EOK; - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374Resume, P_DEBUG, "[ES8374] es8374Resume: mode=%d", mode); - switch(mode) - { - case CODEC_MODE_ENCODE: - //es8374AllResume(); - - es8374AdcResume(); - break; - - case CODEC_MODE_DECODE: - //es8374AllResume(); - - es8374DacResume(); - if (isHasPA) - { - //es8374EnablePA(true); - } - break; - - case CODEC_MODE_BOTH: - es8374AllResume(); - break; - - default: - break; - } - - return ret; -} - -HalCodecSts_e es8374SetVolume(HalCodecCfg_t* codecHalCfg, int volume) -{ - uint8_t level = volume; - uint8_t value = DAC_VOLUME_MUTE; - - if (level > 0) - { - level = (level > 100) ? 100 : level; - value = DAC_VOLUME_MIN - (level * DAC_VOLUME_MIN / 100); - } - - es8374WriteReg(ES8374_REG_38, value); - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374SetVolume, P_DEBUG, "[ES8374] es8374SetVolume: volume=%d, level=%d, value=%d", volume, level, value); - - return CODEC_EOK; -} - -HalCodecSts_e es8374GetVolume(HalCodecCfg_t* codecHalCfg, int *volume) -{ - uint8_t level = 0; - uint8_t value = 0; - es8374ReadReg(ES8374_REG_38, &value); - - if (value <= DAC_VOLUME_MIN) - { - level = 100 - (value * 100 / DAC_VOLUME_MIN); - level = (level == 0) ? 1 : level; - } - - *volume = level; - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374GetVolume, P_DEBUG, "[ES8374] es8374GetVolume: value=%d, level=%d", value, level); - - return CODEC_EOK; -} - -HalCodecSts_e es8374SetMute(HalCodecCfg_t* codecHalCfg, bool enable) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374SetMute, P_DEBUG, "[ES8374] es8374SetMute: enable=%d", enable); - - if (enable == true) - { - es8374WriteReg(ES8374_REG_36, 0x20); - } - else - { - es8374WriteReg(ES8374_REG_36, (dacOutput << 6)); - } - - return CODEC_EOK; -} - -HalCodecSts_e es8374GetVoiceMute(uint8_t *mute) -{ - //*mute = (es8374ReadReg(ES8374_REG_36) >> 5) & 0x01; - es8374ReadReg(ES8374_REG_36, mute); - *mute = (*mute >> 5) & 0x01; - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374GetVoiceMute, P_DEBUG, "[ES8374] es8374GetVoiceMute: mute=%d", *mute); - - return CODEC_EOK; -} - -HalCodecSts_e es8374SetMicVolume(HalCodecCfg_t* codecHalCfg, uint8_t micGain, int micVolume) -{ - uint8_t level = micVolume; - uint8_t value = ADC_VOLUME_MUTE; - - if (level > 0) - { - level = (level > 100) ? 100 : level; - value = ADC_VOLUME_MIN - (level * ADC_VOLUME_MIN / 100); - } - - es8374WriteReg(ES8374_REG_25, value); - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374SetMicVolume, P_DEBUG, "[ES8374] es8374SetMicVolume: micVolume=%d, level=%d, value=%d", micVolume, level, value); - - return CODEC_EOK; -} - -void es8374ReadAll() -{ - uint8_t reg = 0; - -#ifdef FEATURE_OS_ENABLE - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374ReadAll_1, P_DEBUG, "[ES8374] es8374ReadAll Begin"); -#else - printf("[ES8374] es8374ReadAll Begin\r\n"); -#endif - - for (int i = 0; i < 0x6E; i++) - { - es8374ReadReg(i, ®); -#ifdef FEATURE_OS_ENABLE - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374ReadAll_2, P_DEBUG, "[ES8374] [%x] %x", reg, i); -#else - printf("[ES8374] [%02X] %02X\r\n", i, reg); -#endif - } - -#ifdef FEATURE_OS_ENABLE - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374ReadAll_3, P_DEBUG, "[ES8374] es8374ReadAll End"); -#else - printf("[ES8374] es8374ReadAll End\r\n"); -#endif -} - -HalCodecCfg_t es8374GetDefaultCfg() -{ - HalCodecCfg_t codecCfg = ES8374_DEFAULT_CONFIG(); - - return codecCfg; -} diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/codec/codecDev/sc2601.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/codec/codecDev/sc2601.c deleted file mode 100644 index 3d11fc4..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/codec/codecDev/sc2601.c +++ /dev/null @@ -1,1155 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2019-, Copyrigths of EigenComm Ltd. - * File name: sc2601.c - * Description: EC7xx sc2601 file - * History: Rev1.0 2021-9-18 - * - ****************************************************************************/ - -#include "sc2601.h" -#include "mw_nvm_audio.h" - - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ - -#define IS_DMIC 0 -#define USE_NV_VOLUME 1 -#define MCLK_DIV_FRE 256 - -#define SC2601_DEFAULT_CONFIG() \ -{ \ - .adcInput = CODEC_ADC_INPUT_LINE1, \ - .dacOutput = CODEC_DAC_OUTPUT_ALL, \ - .codecMode = CODEC_MODE_BOTH, \ - .codecIface = { \ - .mode = CODEC_MODE_SLAVE, \ - .fmt = CODEC_I2S_MODE, \ - .samples = CODEC_16K_SAMPLES, \ - .bits = CODEC_BIT_LENGTH_16BITS, \ - .channel = CODEC_MONO, \ - .polarity = 1, \ - }, \ -}; - - -/*----------------------------------------------------------------------------* - * DATA TYPE DEFINITION * - *----------------------------------------------------------------------------*/ - -// Clock coefficient structer -struct _coeffDiv -{ - uint32_t mclk; // mclk frequency - uint32_t rate; // sample rate - uint8_t preDiv; // the pre divider with range from 1 to 8 - uint8_t preMulti; // the pre multiplier with x1, x2, x4 and x8 selection - uint8_t adcDiv; // adcclk divider - uint8_t dacDiv; // dacclk divider - uint8_t fsMode; // double speed or single speed, =0, ss, =1, ds - uint8_t lrckH; // adclrck divider and daclrck divider - uint8_t lrckL; - uint8_t bclkDiv; // sclk divider - uint8_t adcOsr; // adc osr - uint8_t dacOsr; // dac osr -}; - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCTION DECLEARATION * - *----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------* - * GLOBAL VARIABLES * - *----------------------------------------------------------------------------*/ - -// 2601 func list -HalCodecFuncList_t sc2601DefaultHandle = -{ - .codecType = SC2601, - .halCodecInitFunc = sc2601Init, - .halCodecDeinitFunc = sc2601DeInit, - .halCodecCtrlStateFunc = sc2601StartStop, - .halCodecCfgIfaceFunc = sc2601Config, - .halCodecSetMuteFunc = sc2601SetMute, - .halCodecSetVolumeFunc = sc2601SetVolume, - .halCodecGetVolumeFunc = sc2601GetVolume, - //.halCodecEnablePAFunc = sc2601EnablePA, - .halCodecSetMicVolumeFunc = sc2601SetMicVolume, - .halCodecGetMicVolumeFunc = sc2601GetMicVolume, - .halCodecLock = NULL, - .handle = NULL, - .halCodecGetDefaultCfg = sc2601GetDefaultCfg, -}; - -#if (USE_NV_VOLUME) -extern AudioParaCfgCodec_t mwNvmAudioCodec1; -extern MWNvmCfgUsrSetCodecVolumn usrCodecVolumn; -extern MWNvmCfgUsrSetCodecVolumn usrCodecVolumn2; -extern MWNvmCfgVolumnSetFlag volumeSetFlag; -extern MWNvmCfgVolumnSetFlag volumeSetFlag2; -#endif -extern void mwNvmCfgGetUsrCodecVolumn(MWNvmCfgUsrSetCodecVolumn *pUsrCodecVolumn); -extern void mwNvmCfgGetVolumnSetFlag(MWNvmCfgVolumnSetFlag *pVolumnSetFlag); -extern void mwNvmCfgSetAndSaveUsrCodecVolumn(UINT16 usrDigVolumn, UINT16 usrAnaVolumn); - -/*----------------------------------------------------------------------------* - * PRIVATE VARIABLES * - *----------------------------------------------------------------------------*/ - -// codec hifi mclk clock divider coefficients -static const struct _coeffDiv coeffDiv[] = -{ - //mclk rate preDiv mult adcDiv dacDiv fsMode lrch lrcl bckdiv adcOsr dacOsr - // 8k - {12288000, 8000 , 0x06, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {18432000, 8000 , 0x03, 0x02, 0x03, 0x03, 0x00, 0x05, 0xff, 0x18, 0x10, 0x10}, - {16384000, 8000 , 0x08, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {8192000 , 8000 , 0x04, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {6144000 , 8000 , 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {4096000 , 8000 , 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {3072000 , 8000 , 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {2048000 , 8000 , 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {1536000 , 8000 , 0x03, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {1024000 , 8000 , 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - - // 16k - {12288000, 16000, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {18432000, 16000, 0x03, 0x02, 0x03, 0x03, 0x00, 0x02, 0xff, 0x0c, 0x10, 0x10}, - {16384000, 16000, 0x04, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {8192000 , 16000, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {6144000 , 16000, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {4096000 , 16000, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {3072000 , 16000, 0x03, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {2048000 , 16000, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {1536000 , 16000, 0x03, 0x08, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {1024000 , 16000, 0x01, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - - // 22.05k - {11289600, 22050, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {5644800 , 22050, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {2822400 , 22050, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {1411200 , 22050, 0x01, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - - // 32k - {12288000, 32000, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {18432000, 32000, 0x03, 0x04, 0x03, 0x03, 0x00, 0x02, 0xff, 0x0c, 0x10, 0x10}, - {16384000, 32000, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {8192000 , 32000, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {6144000 , 32000, 0x03, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {4096000 , 32000, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {3072000 , 32000, 0x03, 0x08, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {2048000 , 32000, 0x01, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {1536000 , 32000, 0x03, 0x08, 0x01, 0x01, 0x01, 0x00, 0x7f, 0x02, 0x10, 0x10}, - {1024000 , 32000, 0x01, 0x08, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - - // 44.1k - {11289600, 44100, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {5644800 , 44100, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {2822400 , 44100, 0x01, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {1411200 , 44100, 0x01, 0x08, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - - // 48k - {12288000, 48000, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {18432000, 48000, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {6144000 , 48000, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {3072000 , 48000, 0x01, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {1536000 , 48000, 0x01, 0x08, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - - // 96k - {12288000, 96000, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {18432000, 96000, 0x03, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {6144000 , 96000, 0x01, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {3072000 , 96000, 0x01, 0x08, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {1536000 , 96000, 0x01, 0x08, 0x01, 0x01, 0x01, 0x00, 0x7f, 0x02, 0x10, 0x10}, -}; - -static uint8_t dacVolBak, adcVolBak; -static uint8_t micVolGainBak; -static bool isHasPA; -//static int slope, offset; -//static int gain0 = -955, gain100 = 320; // mul or divide 10 to a integer - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCS * - *----------------------------------------------------------------------------*/ - -static int32_t sc2601WriteReg(uint8_t regAddr, uint16_t data) -{ - int32_t ret = 0; - uint8_t rxNack = 0; - uint8_t cmd[2] = {0}; - cmd[0] = regAddr; - cmd[1] = data & 0xff; - - ret = halI2cWrite(SC2601_IICADDR, cmd, 2, &rxNack, true); - - if (rxNack == 1) - { - // if fail , write again - ret = halI2cWrite(SC2601_IICADDR, cmd, 2, &rxNack, true); - } -#if 0 -#ifdef FEATURE_OS_ENABLE - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601WriteReg_1, P_DEBUG, "reg write: reg=%x, data=%x", regAddr, data); -#else - printf("reg write: reg=%02x, data=%02x\n", regAddr, data); -#endif -#endif - - return ret; -} - -static int32_t sc2601ReadReg(uint8_t regAddr, uint8_t *retData) -{ - return halI2cRead(SC2601_IICADDR, regAddr, retData, true); -} - -static ARM_I2C_STATUS sc2601GetStats() -{ - ARM_I2C_STATUS stats = {0}; - - halI2cGetStats(&stats, true); - return stats; -} - -static int getCoeff(uint32_t mclk, uint32_t rate) -{ - for (int i = 0; i < (sizeof(coeffDiv) / sizeof(coeffDiv[0])); i++) { - if (coeffDiv[i].rate == rate && coeffDiv[i].mclk == mclk) - return i; - } - return -1; -} - -// set sc2601 dac mute or not. mute = 0, dac un-mute; mute = 1, dac mute -static void sc2601Mute(HalCodecCfg_t* codecHalCfg, int mute) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601setmute_0, P_DEBUG, "Enter into sc2601Mute(), mute = %d\n", mute); - sc2601SetVolume(codecHalCfg, 0); -} - -// set sc2601 into suspend mode -static void sc2601Standby(uint8_t* dacVolB, uint8_t* adcVolB) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601suspend_0, P_DEBUG, "Enter into sc2601 suspend"); - sc2601ReadReg(SC2601_DAC_REG32, dacVolB); - sc2601ReadReg(SC2601_ADC_REG17, adcVolB); - sc2601WriteReg(SC2601_DAC_REG32, 0x00); - sc2601WriteReg(SC2601_ADC_REG17, 0x00); - sc2601WriteReg(SC2601_SYSTEM_REG0E, 0xFF); - sc2601WriteReg(SC2601_SYSTEM_REG12, 0x02); - sc2601WriteReg(SC2601_SYSTEM_REG14, 0x00); - sc2601WriteReg(SC2601_SYSTEM_REG0D, 0xFA); - sc2601WriteReg(SC2601_ADC_REG15, 0x00); - sc2601WriteReg(SC2601_DAC_REG37, 0x08); -} - -// set sc2601 ADC into suspend mode -static void sc2601AdcStandby(uint8_t* adcVolB, uint8_t* micGainB) -{ - sc2601ReadReg(SC2601_ADC_REG17, adcVolB); - sc2601ReadReg(SC2601_SYSTEM_REG14, micGainB); - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601suspend_1, P_DEBUG, "Enter sc2601 adc suspend, adcVolB:0x%x, micGainB:0x%x", *adcVolB, *micGainB); - sc2601WriteReg(SC2601_ADC_REG17, 0x00); - sc2601WriteReg(SC2601_SDPOUT_REG0A, 0x40); - sc2601WriteReg(SC2601_SYSTEM_REG0E, 0x7f); - sc2601WriteReg(SC2601_SYSTEM_REG14, 0x00); - sc2601WriteReg(SC2601_SYSTEM_REG0D, 0x31); - sc2601WriteReg(SC2601_ADC_REG15, 0x00); - sc2601WriteReg(SC2601_DAC_REG37, 0x08); - sc2601WriteReg(SC2601_RESET_REG00, 0x82); - sc2601WriteReg(SC2601_CLK_MANAGER_REG01, 0x35); -} - -// set sc2601 DAC into suspend mode -static void sc2601DacStandby(uint8_t* dacVolB) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601suspend_2, P_DEBUG, "Enter into sc2601 dac suspend"); - sc2601ReadReg(SC2601_DAC_REG32, dacVolB); - sc2601WriteReg(SC2601_DAC_REG32, 0x00); - sc2601WriteReg(SC2601_SYSTEM_REG0E, 0x0F); - sc2601WriteReg(SC2601_SYSTEM_REG12, 0x02); - sc2601WriteReg(SC2601_SYSTEM_REG0D, 0x09); - sc2601WriteReg(SC2601_ADC_REG15, 0x00); - sc2601WriteReg(SC2601_DAC_REG37, 0x08); - sc2601WriteReg(SC2601_RESET_REG00, 0x81); - sc2601WriteReg(SC2601_CLK_MANAGER_REG01, 0x3a); -} - -// set sc2601 into resume mode -static HalCodecSts_e sc2601AllResume() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601Resume_0, P_DEBUG, "Enter into sc2601 resume"); - sc2601WriteReg(SC2601_SYSTEM_REG0D, 0x01); - sc2601WriteReg(SC2601_CLK_MANAGER_REG01, 0x3F); - sc2601WriteReg(SC2601_RESET_REG00, 0x80); -#ifdef FEATURE_OS_ENABLE - osDelay(1); -#else - delay_us(1000); -#endif - sc2601WriteReg(SC2601_SYSTEM_REG0D, 0x01); - sc2601WriteReg(SC2601_CLK_MANAGER_REG02, 0x00); - sc2601WriteReg(SC2601_DAC_REG37, 0x08); - sc2601WriteReg(SC2601_ADC_REG15, 0x40); - sc2601WriteReg(SC2601_SYSTEM_REG14, micVolGainBak);//0x18); - sc2601WriteReg(SC2601_SYSTEM_REG12, 0x00); - sc2601WriteReg(SC2601_SYSTEM_REG0E, 0x00); - sc2601WriteReg(SC2601_DAC_REG32, dacVolBak); - sc2601WriteReg(SC2601_ADC_REG17, adcVolBak); - - return CODEC_EOK; -} - -// set sc2601 adc into resume mode -static HalCodecSts_e sc2601AdcResume() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601Resume_1, P_DEBUG, "Enter into sc2601 adc resume"); - sc2601WriteReg(SC2601_SYSTEM_REG0D, 0x01); - sc2601WriteReg(SC2601_CLK_MANAGER_REG01, 0x3F); - sc2601WriteReg(SC2601_RESET_REG00, 0x80); -#ifdef FEATURE_OS_ENABLE - osDelay(1); -#else - delay_us(1000); -#endif - sc2601WriteReg(SC2601_SYSTEM_REG0D, 0x01); - sc2601WriteReg(SC2601_DAC_REG37, 0x08); - sc2601WriteReg(SC2601_ADC_REG15, 0x00); - sc2601WriteReg(SC2601_SYSTEM_REG14, micVolGainBak);//0x18); - sc2601WriteReg(SC2601_SYSTEM_REG0E, 0x02); - sc2601WriteReg(SC2601_ADC_REG17, adcVolBak); -#ifdef FEATURE_OS_ENABLE - osDelay(50); -#else - delay_us(50*1000); -#endif - sc2601WriteReg(SC2601_SDPOUT_REG0A, 0x00); - return CODEC_EOK; -} - -// set sc2601 dac into resume mode -static HalCodecSts_e sc2601DacResume() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601Resume_2, P_DEBUG, "Enter into sc2601 dac resume"); - sc2601WriteReg(SC2601_SYSTEM_REG0D, 0x01); - sc2601WriteReg(SC2601_CLK_MANAGER_REG01, 0x3F); - sc2601WriteReg(SC2601_RESET_REG00, 0x80); -#ifdef FEATURE_OS_ENABLE - osDelay(1); -#else - delay_us(1000); -#endif - sc2601WriteReg(SC2601_SYSTEM_REG0D, 0x01); - sc2601WriteReg(SC2601_DAC_REG37, 0x08); - sc2601WriteReg(SC2601_ADC_REG15, 0x00); - sc2601WriteReg(SC2601_SYSTEM_REG12, 0x00); - sc2601WriteReg(SC2601_SYSTEM_REG0E, 0x02); - sc2601WriteReg(SC2601_DAC_REG32, dacVolBak); - - return CODEC_EOK; -} - - -// set sc2601 into powerdown mode -static HalCodecSts_e sc2601PwrDown() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601pwrDown_0, P_DEBUG, "Enter into sc2601 powerdown"); - sc2601WriteReg(SC2601_DAC_REG32, 0x00); - sc2601WriteReg(SC2601_ADC_REG17, 0x00); - sc2601WriteReg(SC2601_SYSTEM_REG0E, 0xff); - sc2601WriteReg(SC2601_SYSTEM_REG12, 0x02); - sc2601WriteReg(SC2601_SYSTEM_REG14, 0x00); - sc2601WriteReg(SC2601_SYSTEM_REG0D, 0xf9); - sc2601WriteReg(SC2601_ADC_REG15, 0x00); - sc2601WriteReg(SC2601_DAC_REG37, 0x08); - sc2601WriteReg(SC2601_CLK_MANAGER_REG02, 0x10); - sc2601WriteReg(SC2601_RESET_REG00, 0x00); -#ifdef FEATURE_OS_ENABLE - osDelay(1); -#else - delay_us(1000); -#endif - sc2601WriteReg(SC2601_RESET_REG00, 0x1f); - sc2601WriteReg(SC2601_CLK_MANAGER_REG01, 0x30); -#ifdef FEATURE_OS_ENABLE - osDelay(1); -#else - delay_us(1000); -#endif - sc2601WriteReg(SC2601_CLK_MANAGER_REG01, 0x00); - sc2601WriteReg(SC2601_SYSTEM_REG0D, 0xfc); - sc2601WriteReg(SC2601_CLK_MANAGER_REG02, 0x00); - return CODEC_EOK; -} - - -/*----------------------------------------------------------------------------* - * GLOBAL FUNCTIONS * - *----------------------------------------------------------------------------*/ - -// enable pa power -void sc2601EnablePA(bool enable) -{ - GPIO_pinWrite(CODEC_PA_GPIO_INSTANCE, 1 << CODEC_PA_GPIO_PIN, enable ? (1 << CODEC_PA_GPIO_PIN) : 0); -} - -static void suffixRegWrite(void) -{ - sc2601WriteReg(0x31, 0x20); - sc2601WriteReg(0x09, 0x40); - sc2601WriteReg(0x6e, 0x14); - sc2601WriteReg(0x71, 0x00); -#ifdef FEATURE_OS_ENABLE - osDelay(5); -#else - delay_us(5000); -#endif - sc2601WriteReg(0x00, 0x81); - sc2601WriteReg(0x00, 0x80); - delay_us(200); - sc2601WriteReg(0x09, 0x00); - sc2601WriteReg(0x71, 0x80); - sc2601WriteReg(0x31, 0x00); -} - -HalCodecSts_e sc2601Init(HalCodecCfg_t *codecCfg) -{ - uint8_t datmp, regv; - int coeff; - HalCodecSts_e ret = CODEC_EOK; - getCoeff(0,0); - - halI2cInit(true); - -#ifdef FEATURE_OS_ENABLE -#if (USE_NV_VOLUME) - AudioParaCfgCommon_t mAudioCfgCommon; - ecAudioCfgTlvStore *pMwNvmAudioCfg = NULL; - - // get default gain value - memset((char *)&mAudioCfgCommon, 0x0, sizeof(mAudioCfgCommon)); - mAudioCfgCommon.mode = codecCfg->deviceMode; - mAudioCfgCommon.device = codecCfg->codecDeviceType; - mAudioCfgCommon.direct = codecCfg->direction; - DEBUG_PRINT(UNILOG_PLA_MIDWARE, sc2601DefaultCfg_0, P_WARNING, "mode: %d, device: %d, direct: %d", mAudioCfgCommon.mode, mAudioCfgCommon.device, mAudioCfgCommon.direct); - - // to get mic volumn and default 0/100 volume - pMwNvmAudioCfg = (ecAudioCfgTlvStore *)OsaAllocZeroMemory(sizeof(ecAudioCfgTlvStore)+ sizeof(AudioParaSphEQBiquard_t)*EC_ADCFG_SPEECH_EQ_BIQUARD_NUMB*EC_ADCFG_SPEECH_TX_NUMB - + sizeof(AudioParaSphEQBiquard_t)*EC_ADCFG_SPEECH_EQ_BIQUARD_NUMB*EC_ADCFG_SPEECH_RX_NUMB + sizeof(UINT16)*EC_ADCFG_SPEECH_ANS_EQ_BAND_NUMB*EC_ADCFG_SPEECH_RX_NUMB - + sizeof(UINT16)*EC_ADCFG_SPEECH_ANS_EQ_BAND_NUMB*EC_ADCFG_SPEECH_TX_NUMB); - if (FALSE == mwNvmAudioCfgRead(pMwNvmAudioCfg)) - { - DEBUG_PRINT(UNILOG_PLA_MIDWARE, sc2601DefaultCfg_1, P_WARNING, "MW NVM Audio, Read Audio Storage memory failure, try again !"); - if (FALSE == mwNvmAudioCfgRead(pMwNvmAudioCfg)) - { - DEBUG_PRINT(UNILOG_PLA_MIDWARE, sc2601DefaultCfg_2, P_WARNING, "MW NVM Audio, Read Audio Storage memory failure !"); - OsaFreeMemory(&pMwNvmAudioCfg); - return FALSE; - } - } - - mwNvmAudioCfgCodecGet(&mAudioCfgCommon, &mwNvmAudioCodec1, pMwNvmAudioCfg); - - if ((mwNvmAudioCodec1.rxDigGain0 == 0) && (mwNvmAudioCodec1.rxDigGain100 == 0)) - { - // this board hasn't calibrated, so use default db val - codecCfg->codecVolParam.defaultVal.rxDigGain0 = -955; - codecCfg->codecVolParam.defaultVal.rxDigGain100 = 320; - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601init_7, P_DEBUG, " this board hasn't calibrated"); - } - else - { - #if 0 - // this board has calibrated, so use new db val - remain = mwNvmAudioCodec1.rxDigGain0 % 5; - mwNvmAudioCodec1.rxDigGain0 -= remain; - - remain = mwNvmAudioCodec1.rxDigGain100 % 5; - mwNvmAudioCodec1.rxDigGain100 -= remain; - #endif - - // mwNvmAudioCodec1.rxDigGain0 ranges from 0~255 - codecCfg->codecVolParam.defaultVal.rxDigGain0 = -955 + 5 * mwNvmAudioCodec1.rxDigGain0; - codecCfg->codecVolParam.defaultVal.rxDigGain100 = -955 + 5 * mwNvmAudioCodec1.rxDigGain100; - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601init_8, P_DEBUG, " this board has calibrated, gain0:%d, gain100:%d", codecCfg->codecVolParam.defaultVal.rxDigGain0, codecCfg->codecVolParam.defaultVal.rxDigGain100); - } - - codecCfg->codecVolParam.offset = codecCfg->codecVolParam.defaultVal.rxDigGain0 * 128; - codecCfg->codecVolParam.slope = (codecCfg->codecVolParam.defaultVal.rxDigGain100 - codecCfg->codecVolParam.defaultVal.rxDigGain0) * 1024/100; - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601init_9, P_DEBUG, "offset: %d, slope:%d", codecCfg->codecVolParam.offset, codecCfg->codecVolParam.slope); - OsaFreeMemory(&pMwNvmAudioCfg); - - - mwNvmCfgGetUsrCodecVolumn(&usrCodecVolumn); - mwNvmCfgGetVolumnSetFlag(&volumeSetFlag); - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601init_10, P_DEBUG, "init get nv speaker vol. rxDigUsrSet:%d, rxAnaUsrSet:%d", usrCodecVolumn.rxDigUsrSet, usrCodecVolumn.rxAnaUsrSet); - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601init_11, P_DEBUG, "rxDigUsrSetFlag:%d, rxAnaUsrSetFlag:%d, txDigGainFlag%d, txAnaGainFlag:%d", volumeSetFlag.rxDigUsrSetFlag, volumeSetFlag.rxAnaUsrSetFlag, volumeSetFlag.txDigGainFlag, volumeSetFlag.txAnaGainFlag); -#endif -#endif - #if 0 - sc2601WriteReg(0x31, 0x20); - sc2601WriteReg(0x01, 0x1f); - sc2601WriteReg(0x00, 0x80); - sc2601WriteReg(0x0d, 0x03); - sc2601WriteReg(0x0e, 0x02); - sc2601WriteReg(0x17, 0xef); - sc2601WriteReg(0x14, 0x19); - sc2601WriteReg(0x12, 0x00); - sc2601WriteReg(0x32, 0xaf); - sc2601WriteReg(0x67, 0x01); -#ifdef FEATURE_OS_ENABLE - osDelay(20); -#else - delay_us(20000); -#endif - sc2601WriteReg(0x09, 0x40); - sc2601WriteReg(0x6e, 0x14); - sc2601WriteReg(0x71, 0x00); -#ifdef FEATURE_OS_ENABLE - osDelay(5); -#else - delay_us(5000); -#endif - sc2601WriteReg(0x00, 0x81); - delay_us(200); - sc2601WriteReg(0x00, 0x80); - sc2601WriteReg(0x09, 0x00); - sc2601WriteReg(0x71, 0x80); - sc2601WriteReg(0x31, 0x00); - - #else - sc2601WriteReg(0x31, 0x20); - - HalCodecIface_t *i2sCfg = &(codecCfg->codecIface); - ret |= sc2601WriteReg(SC2601_CLK_MANAGER_REG01, 0x3F); - - // Select clock source for internal mclk - sc2601ReadReg(SC2601_CLK_MANAGER_REG01, ®v); - - // sc2601 voltage check - ARM_I2C_STATUS i2sStats = {0}; - uint8_t i2cCheckCnt = 3; - do - { - i2sStats.rx_nack = 0; - i2sStats = sc2601GetStats(); - } while ((i2sStats.rx_nack == 1) && i2cCheckCnt--); - - if (i2sStats.rx_nack == 1) - { - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601init_0, P_DEBUG, "I2C not impassable, check pull-up register or voltage!!!"); - return CODEC_START_I2C_ERR; - } - /////////////////////////////////////////////// - - regv &= 0x7F; - ret |= sc2601WriteReg(SC2601_CLK_MANAGER_REG01, regv); - - // Set clock parammeters - int sampleFre = 0; - int mclkFre = 0; - switch (i2sCfg->samples) - { - case CODEC_08K_SAMPLES: - sampleFre = 8000; - break; - case CODEC_16K_SAMPLES: - sampleFre = 16000; - break; - case CODEC_22K_SAMPLES: - sampleFre = 22050; - break; - case CODEC_32K_SAMPLES: - sampleFre = 32000; - break; - case CODEC_44K_SAMPLES: - sampleFre = 44100; - break; - case CODEC_48K_SAMPLES: - sampleFre = 48000; - break; - default: - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601init_1, P_DEBUG, "Unable to configure sample rate %dHz", sampleFre); - break; - } - mclkFre = sampleFre * MCLK_DIV_FRE; - coeff = getCoeff(mclkFre, sampleFre); - if (coeff < 0) - { - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601init_2, P_DEBUG, "Unable to configure sample rate %dHz with %dHz MCLK", sampleFre, mclkFre); - return CODEC_INIT_ERR; - } - - if (coeff >= 0) - { - //regv = sc2601ReadReg(SC2601_CLK_MANAGER_REG02) & 0x07; - sc2601ReadReg(SC2601_CLK_MANAGER_REG02, ®v); - regv = regv & 0x07; - regv |= (coeffDiv[coeff].preDiv - 1) << 5; - datmp = 0; - switch (coeffDiv[coeff].preMulti) - { - case 1: - datmp = 0; - break; - case 2: - datmp = 1; - break; - case 4: - datmp = 2; - break; - case 8: - datmp = 3; - break; - default: - break; - } - - regv |= (datmp) << 3; - ret |= sc2601WriteReg(SC2601_CLK_MANAGER_REG02, regv); - - //regv = sc2601ReadReg(SC2601_CLK_MANAGER_REG05) & 0x00; - sc2601ReadReg(SC2601_CLK_MANAGER_REG05, ®v); - regv = regv & 0x00; - regv |= (coeffDiv[coeff].adcDiv - 1) << 4; - regv |= (coeffDiv[coeff].dacDiv - 1) << 0; - ret |= sc2601WriteReg(SC2601_CLK_MANAGER_REG05, regv); - - //regv = sc2601ReadReg(SC2601_CLK_MANAGER_REG03) & 0x80; - sc2601ReadReg(SC2601_CLK_MANAGER_REG03, ®v); - regv = regv & 0x80; - regv |= coeffDiv[coeff].fsMode << 6; - regv |= coeffDiv[coeff].adcOsr << 0; - ret |= sc2601WriteReg(SC2601_CLK_MANAGER_REG03, regv); - - //regv = sc2601ReadReg(SC2601_CLK_MANAGER_REG04) & 0x80; - sc2601ReadReg(SC2601_CLK_MANAGER_REG04, ®v); - regv = regv & 0x80; - regv |= coeffDiv[coeff].dacOsr << 0; - ret |= sc2601WriteReg(SC2601_CLK_MANAGER_REG04, regv); - - //regv = sc2601ReadReg(SC2601_CLK_MANAGER_REG07) & 0xC0; - sc2601ReadReg(SC2601_CLK_MANAGER_REG07, ®v); - regv = regv & 0xc0; - regv |= coeffDiv[coeff].lrckH << 0; - ret |= sc2601WriteReg(SC2601_CLK_MANAGER_REG07, regv); - - //regv = sc2601ReadReg(SC2601_CLK_MANAGER_REG08) & 0x00; - sc2601ReadReg(SC2601_CLK_MANAGER_REG08, ®v); - regv = regv & 0x00; - regv |= coeffDiv[coeff].lrckL << 0; - ret |= sc2601WriteReg(SC2601_CLK_MANAGER_REG08, regv); - - //regv = sc2601ReadReg(SC2601_CLK_MANAGER_REG06) & 0xE0; - sc2601ReadReg(SC2601_CLK_MANAGER_REG06, ®v); - regv = regv & 0xe0; - if (coeffDiv[coeff].bclkDiv < 19) - { - regv |= (coeffDiv[coeff].bclkDiv - 1) << 0; - } - else - { - regv |= (coeffDiv[coeff].bclkDiv) << 0; - } - ret |= sc2601WriteReg(SC2601_CLK_MANAGER_REG06, regv); - } - - ret |= sc2601WriteReg(SC2601_RESET_REG00, 0x80); - - // Set Codec into Master or Slave mode - sc2601ReadReg(SC2601_RESET_REG00, ®v); - - // Set master/slave audio interface - switch (i2sCfg->mode) - { - case CODEC_MODE_MASTER: - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601init_3, P_DEBUG, "sc2601 in master mode"); - regv |= 0x40; - break; - case CODEC_MODE_SLAVE: - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601init_4, P_DEBUG, "sc2601 in slave mode"); - regv &= 0xBF; - break; - default: - regv &= 0xBF; - } - ret |= sc2601WriteReg(SC2601_RESET_REG00, regv); - - sc2601WriteReg(0x0d, 0x03); - sc2601WriteReg(0x7a, 0x20); - sc2601WriteReg(0x0e, 0x00); - sc2601WriteReg(0x17, 0xef); - sc2601WriteReg(0x14, 0x19); - sc2601WriteReg(0x12, 0x00); - sc2601WriteReg(0x32, 0xaf); - sc2601WriteReg(0x15, 0x10); - sc2601WriteReg(0x37, 0x18); -#ifdef FEATURE_OS_ENABLE - osDelay(192); -#else - delay_us(192000); -#endif - sc2601WriteReg(0x67, 0x01); -#ifdef FEATURE_OS_ENABLE - osDelay(20); -#else - delay_us(20000); -#endif - suffixRegWrite(); - - ret |= sc2601WriteReg(SC2601_SYSTEM_REG13, 0x00/*0x10*/); - ret |= sc2601WriteReg(SC2601_ADC_REG1B, 0x0A); - ret |= sc2601WriteReg(SC2601_ADC_REG1C, 0x6A); - if (ret != CODEC_EOK) - { - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601init_5, P_DEBUG, "sc2601 initialize failed"); - } - #endif - - if (codecCfg->hasPA) - { - isHasPA = codecCfg->hasPA; - - // GPIO function select - PadConfig_t padConfig = {0}; - GpioPinConfig_t pinConfig = {0}; - - PAD_getDefaultConfig(&padConfig); - padConfig.mux = PAD_MUX_ALT0; - PAD_setPinConfig(CODEC_PA_PAD_INDEX, &padConfig); - - - // CODEC_PA pin config - pinConfig.pinDirection = GPIO_DIRECTION_OUTPUT; - pinConfig.misc.initOutput = 0; // when codec has been init, PA should open - GPIO_pinConfig(CODEC_PA_GPIO_INSTANCE, CODEC_PA_GPIO_PIN, &pinConfig); - - // enable pa power - //sc2601EnablePA(true); - } - - return CODEC_EOK; -} - -void sc2601DeInit() -{ - //sc2601PwrDown(); - halI2cDeInit(true); -} - -HalCodecSts_e sc2601ConfigFmt(HalCodecIfaceFormat_e fmt) -{ - HalCodecSts_e ret = CODEC_EOK; - uint8_t adcIface = 0, dacIface = 0; - sc2601ReadReg(SC2601_SDPIN_REG09, &dacIface); - sc2601ReadReg(SC2601_SDPOUT_REG0A, &adcIface); - switch (fmt) - { - case CODEC_MSB_MODE: - case CODEC_LSB_MODE: - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601fmt_2, P_DEBUG, "SC2601 in left/right Format"); - adcIface &= 0xFC; - dacIface &= 0xFC; - adcIface |= 0x01; - dacIface |= 0x01; - break; - - case CODEC_I2S_MODE: - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601fmt_1, P_DEBUG, "SC2601 in I2S Format"); - dacIface &= 0xFC; - adcIface &= 0xFC; - break; - - case CODEC_PCM_MODE: - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601fmt_3, P_DEBUG, "SC2601 in pcm Format"); - adcIface &= 0xDC; - dacIface &= 0xDC; - adcIface |= 0x03; - dacIface |= 0x03; - break; - default: - dacIface &= 0xFC; - adcIface &= 0xFC; - break; - } - ret |= sc2601WriteReg(SC2601_SDPIN_REG09, dacIface); - ret |= sc2601WriteReg(SC2601_SDPOUT_REG0A, adcIface); - - return ret; -} - -HalCodecSts_e sc2601SetBitsPerSample(HalCodecIfaceBits_e bits) -{ - HalCodecSts_e ret = CODEC_EOK; - uint8_t adc_iface = 0, dac_iface = 0; - sc2601ReadReg(SC2601_SDPIN_REG09, &dac_iface); - sc2601ReadReg(SC2601_SDPOUT_REG0A, &adc_iface); - switch (bits) - { - case CODEC_BIT_LENGTH_16BITS: - dac_iface |= 0x0c; - adc_iface |= 0x0c; - break; - case CODEC_BIT_LENGTH_24BITS: - dac_iface &= ~0x1c; - adc_iface &= ~0x1c; - break; - case CODEC_BIT_LENGTH_32BITS: - dac_iface |= 0x10; - adc_iface |= 0x10; - break; - default: - dac_iface |= 0x0c; - adc_iface |= 0x0c; - break; - - } - ret |= sc2601WriteReg(SC2601_SDPIN_REG09, dac_iface); - ret |= sc2601WriteReg(SC2601_SDPOUT_REG0A, adc_iface); - - return ret; -} - -HalCodecSts_e sc2601Config(HalCodecMode_e mode, HalCodecIface_t *iface) -{ - int ret = CODEC_EOK; - ret |= sc2601SetBitsPerSample(iface->bits); - ret |= sc2601ConfigFmt(iface->fmt); - suffixRegWrite(); - return ret; -} - -HalCodecSts_e sc2601StartStop(HalCodecMode_e mode, HalCodecCtrlState_e ctrlState) -{ - HalCodecSts_e ret = CODEC_EOK; - - switch(ctrlState) - { - case CODEC_CTRL_START: - { - ret |= sc2601Start(mode); - suffixRegWrite(); - if (isHasPA) - { - sc2601EnablePA(true); - } - } - break; - - case CODEC_CTRL_STOP: - ret |= sc2601Stop(mode); - break; - case CODEC_CTRL_RESUME: - ret |= sc2601Resume(mode); - suffixRegWrite(); - break; - case CODEC_CTRL_POWERDONW: - ret |= sc2601PwrDown(mode); - break; - } - - - return ret; -} - -HalCodecSts_e sc2601Start(HalCodecMode_e mode) -{ - HalCodecSts_e ret = CODEC_EOK; - uint8_t adcIface = 0, dacIface = 0; - - //dacIface = sc2601ReadReg(SC2601_SDPIN_REG09) & 0xBF; - //adcIface = sc2601ReadReg(SC2601_SDPOUT_REG0A) & 0xBF; - sc2601ReadReg(SC2601_SDPIN_REG09, &dacIface); - dacIface = dacIface & 0xBF; - sc2601ReadReg(SC2601_SDPOUT_REG0A, &adcIface); - adcIface = adcIface & 0xBF; - adcIface |= BIT(6); - dacIface |= BIT(6); - - if (mode == CODEC_MODE_ENCODE || mode == CODEC_MODE_BOTH) - { - adcIface &= ~(BIT(6)); - } - - if (mode == CODEC_MODE_DECODE || mode == CODEC_MODE_BOTH) - { - dacIface &= ~(BIT(6)); - } - - ret |= sc2601WriteReg(SC2601_SDPIN_REG09, dacIface); - ret |= sc2601WriteReg(SC2601_SDPOUT_REG0A, adcIface); - - // ret |= sc2601WriteReg(SC2601_ADC_REG17, 0x88/*0xBF*/); - ret |= sc2601WriteReg(SC2601_SYSTEM_REG0E, 0x02); - ret |= sc2601WriteReg(SC2601_SYSTEM_REG12, 0x28/*0x00*/); - // ret |= sc2601WriteReg(SC2601_SYSTEM_REG14, 0x18/*0x1A*/); - - // pdm dmic enable or disable - uint8_t regv = 0; - if (IS_DMIC) - { - sc2601ReadReg(SC2601_SYSTEM_REG14, ®v); - regv |= 0x40; - ret |= sc2601WriteReg(SC2601_SYSTEM_REG14, regv); - } - else - { - sc2601ReadReg(SC2601_SYSTEM_REG14, ®v); - regv &= ~(0x40); - ret |= sc2601WriteReg(SC2601_SYSTEM_REG14, regv); - } - // sc2601WriteReg(SC2601_SYSTEM_REG14, 0x18); //add for debug - - ret |= sc2601WriteReg(SC2601_SYSTEM_REG0D, 0x01); - ret |= sc2601WriteReg(SC2601_ADC_REG15, 0x00/*0x40*/); - ret |= sc2601WriteReg(SC2601_DAC_REG37, 0x48); - - // set internal reference signal (ADCL + DACR) - ret |= sc2601WriteReg(SC2601_GPIO_REG44, 0x00/*0x50*/); - - return ret; -} - -HalCodecSts_e sc2601Stop(HalCodecMode_e mode) -{ - HalCodecSts_e ret = CODEC_EOK; - switch(mode) - { - case CODEC_MODE_ENCODE: - sc2601AdcStandby(&adcVolBak, &micVolGainBak); - break; - - case CODEC_MODE_DECODE: - { - sc2601DacStandby(&dacVolBak); - - // disable PA - if (isHasPA) - { - sc2601EnablePA(false); - } - } - break; - - case CODEC_MODE_BOTH: - sc2601Standby(&dacVolBak, &adcVolBak); - break; - - default: - break; - } - - return ret; -} - -HalCodecSts_e sc2601Resume(HalCodecMode_e mode) -{ - HalCodecSts_e ret = CODEC_EOK; - switch(mode) - { - case CODEC_MODE_ENCODE: - sc2601AdcResume(); - break; - - case CODEC_MODE_DECODE: - { - sc2601DacResume(); - // enable PA - if (isHasPA) - { - sc2601EnablePA(true); - } - } - break; - - case CODEC_MODE_BOTH: - sc2601AllResume(); - break; - - default: - break; - } - - return ret; - -} - - -HalCodecSts_e sc2601SetVolume(HalCodecCfg_t* codecHalCfg, int volume) -{ - HalCodecSts_e res = CODEC_EOK; - -#ifdef FEATURE_OS_ENABLE -#if (USE_NV_VOLUME) - //bool saveRet = true; - int calGainDb = 0; // calculated db, should divide 10 - uint8_t regValWrite = 0; -#endif -#endif - - if (volume <= 0) - { - //return sc2601SetMute(1); - volume = 0; - } - - if (volume >= 100) - { - volume = 100; - } - - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601SetVolume_1, P_DEBUG, "SC2601 Set volume:%d", volume); - -#if (USE_NV_VOLUME) -#ifdef FEATURE_OS_ENABLE - /* 1. get default tuning value - - 2. Gain[db] = volume[%] * slope/1024[db] + offset/128[db] - - offset = Gain[0] * 128 - slope = (Gain[100] - Gain[0]) * 1024 / 100 - - offset and slope should stored into NV - */ - - // 1. cal needed db value - calGainDb = (int)(volume * codecHalCfg->codecVolParam.slope/1024 + codecHalCfg->codecVolParam.offset/128); - - // 2. cal the writed reg val - regValWrite = (calGainDb - codecHalCfg->codecVolParam.defaultVal.rxDigGain0)/5; - - // 3. write into reg - res = sc2601WriteReg(SC2601_DAC_REG32, regValWrite); - - // 4. write into nv - usrCodecVolumn.rxDigUsrSet &= ~0xff; - usrCodecVolumn.rxDigUsrSet |= volume; - mwNvmCfgSetAndSaveUsrCodecVolumn(usrCodecVolumn.rxDigUsrSet, usrCodecVolumn.rxAnaUsrSet); - - mwNvmCfgGetUsrCodecVolumn(&usrCodecVolumn2); - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601SetVolume_2, P_DEBUG, "rxDigUsrSet:%d, rxAnaUsrSet:%d", usrCodecVolumn2.rxDigUsrSet, usrCodecVolumn2.rxAnaUsrSet); -#else - int vol = volume * 2550 / 1000; // volume * (rxDigGain100 - rxDigGain0) / 100 - res = sc2601WriteReg(SC2601_DAC_REG32, vol); -#endif -#endif - return res; -} - -HalCodecSts_e sc2601GetVolume(HalCodecCfg_t* codecHalCfg, int *volume) -{ - HalCodecSts_e res = CODEC_EOK; - uint8_t regVal = 0; -#if (USE_NV_VOLUME) - //int calGainDb = 0; -#endif - - sc2601ReadReg(SC2601_DAC_REG32, ®Val); - -#if (USE_NV_VOLUME) - //calGainDb = regVal*5 + codecHalCfg->codecVolParam.defaultVal.rxDigGain0; - //*volume = (calGainDb - codecHalCfg->codecVolParam.offset/128) * 1024 / codecHalCfg->codecVolParam.slope; - *volume = usrCodecVolumn.rxDigUsrSet & 0xff; -#else - *volume = regVal * 1000 / 2550; -#endif - - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601getVolume_1, P_DEBUG, "Get volume:%d reg_value:0x%x", *volume, regVal); - return res; -} - -HalCodecSts_e sc2601SetMute(HalCodecCfg_t* codecHalCfg, bool enable) -{ -#if 1 - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601setMute_1, P_DEBUG, "SC2601SetVoiceMute:%d", enable); - sc2601Mute(codecHalCfg, enable); -#endif - return CODEC_EOK; -} - -HalCodecSts_e sc2601GetVoiceMute(int *mute) -{ - HalCodecSts_e res = CODEC_EOK; - uint8_t reg = 0; - res = sc2601ReadReg(SC2601_DAC_REG31, ®); - if (res == CODEC_EOK) - { - reg = (res & 0x20) >> 5; - } - *mute = reg; - return res; -} - -HalCodecSts_e sc2601SetMicVolume(HalCodecCfg_t* codecHalCfg, uint8_t micGain, int micVolume) -{ - HalCodecSts_e res = CODEC_EOK; - - uint8_t regv = 0; - sc2601ReadReg(SC2601_SYSTEM_REG14, ®v); - regv &= ~0xf; // clear low 4bits, maintain high 4bits, because high bits is dmic indication - regv |= (1<<4 | micGain); - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601SetMicVolume_2, P_DEBUG, "SC2601 reg set, micGain:%d, micVolume:%d", regv, micVolume); - res = sc2601WriteReg(SC2601_SYSTEM_REG14, 0x19); //regv); //0x18 - res = sc2601WriteReg(SC2601_ADC_REG17, 0xef); //micVolume);//0xbf - micVolGainBak = regv; - - return res; -} - -HalCodecSts_e sc2601GetMicVolume(HalCodecCfg_t* codecHalCfg, uint8_t* micGain, int *micVolume) -{ - HalCodecSts_e res = CODEC_EOK; - - sc2601ReadReg(SC2601_SYSTEM_REG14, micGain); - sc2601ReadReg(SC2601_ADC_REG17, (uint8_t*)micVolume); - - #if 0 - *micVolume = mwNvmAudioCodec1.txDigGain & 0xff;//regVal * 1000 / 2550; - *micGain = mwNvmAudioCodec1.txAnaGain & 0xff;//regVal1 & 0xf; - #endif - - *micGain = *micGain & 0xf; - - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601getMicVolume_1, P_DEBUG, "Get Mic gain:%d, mic volume:%d", *micGain, *micVolume); - return res; -} - - -void sc2601ReadAll() -{ - uint8_t reg = 0; - -#ifdef FEATURE_OS_ENABLE - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601ReadAll_1, P_DEBUG, "now read 2601 all"); -#else - printf("now read 2601 all\n"); -#endif - - for (int i = 0; i < 0x4A; i++) - { - sc2601ReadReg(i, ®); -#ifdef FEATURE_OS_ENABLE - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601ReadAll_2, P_DEBUG, "REG:%x, %x", reg, i); -#else - printf("reg = 0x%02x, val = 0x%02x\n", i, reg); -#endif - } - -#ifdef FEATURE_OS_ENABLE - DEBUG_PRINT(UNILOG_PLA_DRIVER, sc2601ReadAll_3, P_DEBUG, "now read 2601 all end"); -#else - printf("now read 2601 all end\n"); -#endif -} - -HalCodecCfg_t sc2601GetDefaultCfg() -{ - HalCodecCfg_t codecCfg = SC2601_DEFAULT_CONFIG(); - - return codecCfg; -} - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/codec/codecDrv.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/codec/codecDrv.c deleted file mode 100644 index 0ae7d44..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/codec/codecDrv.c +++ /dev/null @@ -1,238 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2019-, Copyrigths of EigenComm Ltd. - * File name: hal_codec.c - * Description: EC7XX codec hal - * History: Rev1.0 2021-9-18 - * - ****************************************************************************/ - -#include "codecDrv.h" - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ - - -/*----------------------------------------------------------------------------* - * DATA TYPE DEFINITION * - *----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCTION DECLEARATION * - *----------------------------------------------------------------------------*/ - - -/*----------------------------------------------------------------------------* - * GLOBAL VARIABLES * - *----------------------------------------------------------------------------*/ -const AudioParaCfgCodec_t codecTlvDefaultVal = -{ - .isDmic = false, - .isExPa = true, - .exPaGain = 0, - .txDigGain = 0xbf, - .txAnaGain = 0x8, - - .rxDigGain0 = 0, - .rxAnaGain0 = 0, - .rxDigGain50 = 0, - .rxAnaGain50 = 0, - .rxDigGain100 = 0xff, - .rxAnaGain100 = 0xff, -}; - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCTIONS * - *----------------------------------------------------------------------------*/ - -#ifdef FEATURE_OS_ENABLE - -HalCodecSts_e halCodecLock(void* arg) -{ - osSemaphoreId_t codecLock = (osSemaphoreId_t)arg; - - if (osSemaphoreAcquire(codecLock, 1000) != osOK) - { - return CODEC_TIMEOUT; - } - return CODEC_EOK; -} - -HalCodecSts_e halCodecUnlock(void* arg) -{ - osSemaphoreId_t codecLock = (osSemaphoreId_t)arg; - - if (osSemaphoreRelease(codecLock) != osOK) - { - return CODEC_TIMEOUT; - } - return CODEC_EOK; -} - -HalCodecSts_e halCodecLockDestroy(void *arg) -{ - osSemaphoreId_t codecLock = (osSemaphoreId_t)arg; - - if (osSemaphoreDelete(codecLock) != osOK) - { - return CODEC_TIMEOUT; - } - return CODEC_EOK; -} - -#else - -HalCodecSts_e halCodecLock(void* arg) -{ - return CODEC_EOK; -} - -HalCodecSts_e halCodecUnlock(void* arg) -{ - return CODEC_EOK; -} - -HalCodecSts_e halCodecLockDestroy(void *arg) -{ - return CODEC_EOK; -} - -#endif - - -/*----------------------------------------------------------------------------* - * GLOBAL FUNCTIONS * - *----------------------------------------------------------------------------*/ - -HalCodecCfg_t halCodecGetDefaultCfg(HalCodecFuncList_t* codecHalFunc) -{ - return codecHalFunc->halCodecGetDefaultCfg(); -} - -HalCodecFuncList_t* halCodecInit(HalCodecCfg_t* codecHalCfg, HalCodecFuncList_t* codecHalFunc, bool needLock) -{ - HalCodecSts_e ret = CODEC_EOK; - HalCodecFuncList_t* codecHal = codecHalFunc; - -#ifdef FEATURE_OS_ENABLE - if (codecHal->halCodecLock == NULL) - { - codecHal->halCodecLock = osSemaphoreNew(1, 1, NULL); - if (codecHal->halCodecLock == PNULL) - { - DEBUG_PRINT(UNILOG_PLA_DRIVER, halCodecInit_0, P_WARNING, "codec hal can't create semaphore"); - return NULL; - } - } -#endif - - if (needLock) halCodecLock(codecHal->halCodecLock); - - ret |= codecHal->halCodecInitFunc(codecHalCfg); - if (ret != CODEC_EOK) - { - halCodecUnlock(codecHal->halCodecLock); - DEBUG_PRINT(UNILOG_PLA_DRIVER, halCodecInit_2, P_DEBUG, "codec init fail. ret=%d", ret); - EC_ASSERT(false, 0, 0, 0); - return NULL; - } - - codecHal->halCodecCfgIfaceFunc(codecHalCfg->codecMode, &codecHalCfg->codecIface); - - codecHal->handle = codecHal; - codecHalFunc->handle = codecHal; - if (needLock) halCodecUnlock(codecHal->halCodecLock); - return codecHal; -} - -HalCodecSts_e halCodecDeinit(HalCodecFuncList_t* codecHal) -{ - int32_t ret = CODEC_EOK; - - HAL_CODEC_CHECK_NULL(codecHal, "audio_hal handle is null", -1); - halCodecLockDestroy(codecHal->halCodecLock); - codecHal->halCodecDeinitFunc(); - codecHal->halCodecLock = NULL; - codecHal->handle = NULL; - codecHal = NULL; - return ret; -} - -HalCodecSts_e halCodecCtrlState(HalCodecFuncList_t* codecHal, HalCodecMode_e mode, HalCodecCtrlState_e codecStartStop, bool needLock) -{ - int32_t ret; - HAL_CODEC_CHECK_NULL(codecHal, "audio_hal handle is null", -1); - if (needLock) halCodecLock(codecHal->halCodecLock); - DEBUG_PRINT(UNILOG_PLA_DRIVER, halCodecCtrl_1, P_DEBUG, "codec mode=%d, startStop=%d", mode, codecStartStop); - ret = codecHal->halCodecCtrlStateFunc(mode, codecStartStop); - if (needLock) halCodecUnlock(codecHal->halCodecLock); - return ret; -} - -HalCodecSts_e halCodecIfaceCfg(HalCodecFuncList_t* codecHal, HalCodecMode_e mode, HalCodecIface_t *iface, bool needLock) -{ - int32_t ret = CODEC_EOK; - HAL_CODEC_CHECK_NULL(codecHal, "audio_hal handle is null", -1); - HAL_CODEC_CHECK_NULL(iface, "Get volume para is null", -1); - if (needLock) halCodecLock(codecHal->halCodecLock); - ret = codecHal->halCodecCfgIfaceFunc(mode, iface); - if (needLock) halCodecUnlock(codecHal->halCodecLock); - - return ret; -} - -HalCodecSts_e halCodecSetMute(HalCodecFuncList_t* codecHal, HalCodecCfg_t* codecHalCfg, bool mute, bool needLock) -{ - int32_t ret; - HAL_CODEC_CHECK_NULL(codecHal, "audio_hal handle is null", -1); - if (needLock) halCodecLock(codecHal->halCodecLock); - ret = codecHal->halCodecSetMuteFunc(codecHalCfg, mute); - if (needLock) halCodecUnlock(codecHal->halCodecLock); - return ret; -} - -#if 1 -HalCodecSts_e halCodecEnablePA(HalCodecFuncList_t* codecHal, bool enable, bool needLock) -{ - int32_t ret = CODEC_EOK; - HAL_CODEC_CHECK_NULL(codecHal, "audio_hal handle is null", -1); - if (needLock) halCodecLock(codecHal->halCodecLock); - codecHal->halCodecEnablePAFunc(enable); - if (needLock) halCodecUnlock(codecHal->halCodecLock); - return ret; -} -#endif - -HalCodecSts_e halCodecSetVolume(HalCodecFuncList_t* codecHal, HalCodecCfg_t* codecHalCfg, int volume, bool needLock) -{ - int32_t ret; - HAL_CODEC_CHECK_NULL(codecHal, "audio_hal handle is null", -1); - if (needLock) halCodecLock(codecHal->halCodecLock); - ret = codecHal->halCodecSetVolumeFunc(codecHalCfg, volume); - if (needLock) halCodecUnlock(codecHal->halCodecLock); - return ret; -} - -HalCodecSts_e halCodecGetVolume(HalCodecFuncList_t* codecHal, HalCodecCfg_t* codecHalCfg, int *volume, bool needLock) -{ - int32_t ret; - HAL_CODEC_CHECK_NULL(codecHal, "audio_hal handle is null", -1); - HAL_CODEC_CHECK_NULL(volume, "Get volume para is null", -1); - if (needLock) halCodecLock(codecHal->halCodecLock); - ret = codecHal->halCodecGetVolumeFunc(codecHalCfg, volume); - if (needLock) halCodecUnlock(codecHal->halCodecLock); - return ret; -} - -HalCodecSts_e halCodecSetMicVolume(HalCodecFuncList_t* codecHal, HalCodecCfg_t* codecHalCfg, uint8_t micGain, int volume, bool needLock) -{ - int32_t ret; - HAL_CODEC_CHECK_NULL(codecHal, "audio_hal handle is null", -1); - if (needLock) halCodecLock(codecHal->halCodecLock); - ret = codecHal->halCodecSetMicVolumeFunc(codecHalCfg, micGain, volume); - if (needLock) halCodecUnlock(codecHal->halCodecLock); - return ret; -} - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/eeprom/eepRom.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/eeprom/eepRom.c deleted file mode 100644 index 9967296..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/eeprom/eepRom.c +++ /dev/null @@ -1,315 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2020-, Copyrigths of EigenComm Ltd. - * File name: eepRom.c - * Description: EC618 eepRom ds2431 driver source file - * History: Rev1.0 2020-12-17 - * - ****************************************************************************/ -#include "ec7xx.h" -#include "bsp.h" -#include "eepRom.h" -#include "oneWire.h" -#include "string.h" -#include "stdio.h" - -extern void delay_us(uint32_t us); - -static uint16_t crc16Maxim(uint8_t *data, uint16_t len) -{ - uint8_t i; - uint16_t crc = 0; - while (len--) - { - crc ^= *data++; - for (i=0; i<8; ++i) - { - if (crc&1) - { - crc = (crc>>1) ^ 0xA001; - } - else - { - crc = crc>>1; - } - } - } - return ~crc; -} - - -int32_t writeScratchpad(uint8_t addr, uint8_t data[8]) -{ - uint8_t crcSrcData[11]; - uint16_t crcCalResult; - uint8_t crcReadData[2]; - - if ((data == NULL) || (addr > 0x8F)) - { - return EEPROMDRV_SCRATCHPADWRITE_ERR; - } - - if (owResetPd() != 0) - { - return EEPROMDRV_RESET_ERR; - } - - delay_us(140); // delay 200us - - owWriteByte(ROM_SKIP_CMD); - owWriteByte(SCRATCHPAD_WRITE_CMD); - owWriteByte(addr); - owWriteByte(0x00); - - crcSrcData[0] = SCRATCHPAD_WRITE_CMD; // before are right - crcSrcData[1] = addr; - crcSrcData[2] = 0x00; - for (int i=0; i<8; i++) - { - owWriteByte(data[i]); - crcSrcData[i+3] = data[i]; - } - - crcCalResult = crc16Maxim(crcSrcData, 11); // before are right - - owReadByte(crcReadData); - owReadByte(crcReadData+1); - - if (((crcReadData[1]<<8) | crcReadData[0]) != crcCalResult) - { - return EEPROMDRV_SCRATCHPADWRITE_ERR; - } - - return EEPROMDRV_OK; -} - -void readScratchpad(uint8_t dataBack[13]) -{ - if (owResetPd() != 0) - { - return; - } - - delay_us(140); // delay 200us - - owWriteByte(ROM_SKIP_CMD); - owWriteByte(SCRATCHPAD_READ_CMD); - - // first 3 bytes are: TA1, TA2, ES; Then 8 bytes data; Last are 2 bytes crc - for (int i=0; i<13; i++) - { - owReadByte(dataBack+i); - } -} - -int32_t copyScratchpad2Mem(uint16_t addr) -{ - uint8_t readData; - - if (owResetPd() != 0) - { - return EEPROMDRV_RESET_ERR; - } - - delay_us(140); // delay 200us - - owWriteByte(ROM_SKIP_CMD); - owWriteByte(SCRATCHPAD_COPY_CMD); - owWriteByte(addr); - owWriteByte(0x00); - owWriteByte(0x07); - - delay_us(140); // delay 200us - - owReadByte(&readData); - if (readData != 0xAA) - { - return EEPROMDRV_SCRATCHPADCOPY_ERR; - } - - return EEPROMDRV_OK; -} - -AP_PLAT_COMMON_BSS uint8_t dataBack[13]={0}; -int32_t dataCmp(uint8_t targetAddr, uint8_t* buffer, uint8_t len) -{ - // compare the data read from scratchpad - if (dataBack[0] != targetAddr) - { - return EEPROMDRV_SCRATCHPADWRITE_ERR; - } - - if (dataBack[1] != 0) - { - return EEPROMDRV_SCRATCHPADWRITE_ERR; - } - - if (dataBack[2] != 0x7) - { - return EEPROMDRV_SCRATCHPADWRITE_ERR; - } - - for (int j=0; j>=1; - } - - uint8_t dataRead; - for (i=0; i<8; i++) - { - owReadBit(&dataRead); - dataRead <<=1; - } -#endif - -#if 1 - int32_t result = owWriteByte(ROM_READ_CMD); - if (result < 0) - { - return EEPROMDRV_ROMREAD_ERR; - } - - for (int32_t i=0; i<8; i++) - { - owReadByte(romCode+i); - } -#endif - - return EEPROMDRV_OK; -} - -int32_t eePromReadMem(uint8_t targetAddr, uint8_t len, uint8_t* buffer) -{ - delay_us(3000); // wait unitl former write operations finish - - if (owResetPd() != 0) - { - return EEPROMDRV_RESET_ERR; - } - - delay_us(140); // delay 200us - - if (owWriteByte(ROM_SKIP_CMD) < 0) - { - return EEPROMDRV_ROMREAD_ERR; - } - - if (owWriteByte(MEM_READ_CMD) < 0) - { - return EEPROMDRV_ROMREAD_ERR; - } - - // write addr low byte - if (owWriteByte(targetAddr) < 0) - { - return EEPROMDRV_ROMREAD_ERR; - } - - // write addr high byte - if (owWriteByte(0) < 0) - { - return EEPROMDRV_ROMREAD_ERR; - } - - for (int i=0; i 0x88) - { - return EEPROMDRV_SCRATCHPADWRITE_ERR; - } - - while (len > 8) - { - for (i=0; i<8; i++) - { - tmp[i] = buffer[i+index]; - } - - len -= 8; - writeSctStats = writeScratchpad(targetAddr+index, tmp); - delay_us(3000); - readScratchpad(dataBack); - if (dataCmp(targetAddr+index, buffer+index, 8) != 0) - { - return EEPROMDRV_SCRATCHPADWRITE_ERR; - } - - copyScratchpad2Mem(targetAddr+index); - delay_us(3000); - memset(dataBack, 0, 13); - - index += 8; - } - - for (i=0; i -#include -#include -#include "bsp.h" -#include "ex_flash.h" -#include "sctdef.h" - - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ -#define TRANSFER_DATA_WIDTH (8) -#define SPI_SSN_GPIO_INSTANCE RTE_SPI0_SSN_GPIO_INSTANCE -#define SPI_SSN_GPIO_INDEX RTE_SPI0_SSN_GPIO_INDEX - - -/*----------------------------------------------------------------------------* - * DATA TYPE DEFINITION * - *----------------------------------------------------------------------------*/ - - - -/*----------------------------------------------------------------------------* - * GLOBAL VARIABLES * - *----------------------------------------------------------------------------*/ - -/** \brief driver instance declare */ -extern ARM_DRIVER_SPI Driver_SPI0; -AP_PLAT_COMMON_DATA static ARM_DRIVER_SPI *spiMasterDrv = &CREATE_SYMBOL(Driver_SPI, 0); -//volatile uint16_t gFid = 0; - - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCTION DECLEARATION * - *----------------------------------------------------------------------------*/ - -/** - \fn exSpiFlashIoIint(void) - \brief init SPI interface - \param[in] - \note - */ -static void exSpiFlashIoIint(void) -{ - // Initialize master spi - spiMasterDrv->Initialize(NULL); - // Power on - spiMasterDrv->PowerControl(ARM_POWER_FULL); - - // Configure master spi bus - spiMasterDrv->Control(ARM_SPI_MODE_MASTER | ARM_SPI_CPOL0_CPHA0 | ARM_SPI_DATA_BITS(TRANSFER_DATA_WIDTH) | - ARM_SPI_MSB_LSB | ARM_SPI_SS_MASTER_SW, 26000000U); -} - - -/** - \fn exSpiFlashIoDeIint(void) - \brief deinit SPI interface - \param[in] - \note - */ -static void exSpiFlashIoDeIint(void) -{ - // Initialize master spi - spiMasterDrv->Uninitialize(); - // Power on - spiMasterDrv->PowerControl(ARM_POWER_OFF); - -} - - - -/** - \fn exFlashSetSpiCsHigh(void) - \brief manual control CS PIN - \param[in] - \note - */ -static void exFlashSetSpiCsHigh(void) -{ - GPIO_pinWrite(SPI_SSN_GPIO_INSTANCE, 1 << SPI_SSN_GPIO_INDEX, 1 << SPI_SSN_GPIO_INDEX); -} - - - -/** - \fn exFlashSetSpiCsLow(void) - \brief manual control CS PIN - \param[in] - \note - */ -static void exFlashSetSpiCsLow(void) -{ - GPIO_pinWrite(SPI_SSN_GPIO_INSTANCE, 1 << SPI_SSN_GPIO_INDEX, 0); -} - - -/** - \fn exflashWrByte(void) - \brief Software SPI_Flash bus driver basic function, send a single byte to MOSI, - * and accept MISO data at the same time. used for both cmd/data send - \param[in] u8Data:Data sent on the MOSI data line - \note -*/ -static uint8_t exflashWrByte(uint8_t u8Data) -{ - uint8_t u8Out = 0; - - spiMasterDrv->Transfer(&u8Data, &u8Out, 1); - - return u8Out; -} - - - -/** - \fn exFlashWrEn(void) - \brief send wr en cmd to flash - \param[in] - \note - */ -static void exFlashWrEn(void) -{ - exFlashSetSpiCsLow(); - exflashWrByte(WRITE_ENABLE_CMD); - exFlashSetSpiCsHigh(); -} - - -/** - \fn exFlashWrDisen(void) - \brief send wr disen cmd to flash - \param[in] - \note - */ -static void exFlashWrDisen(void) -{ - exFlashSetSpiCsLow(); - exflashWrByte(WRITE_DISABLE_CMD); - exFlashSetSpiCsHigh(); -} - - - -/** - \fn exFlashPollingBusyFlag(void) - \brief read the BUSY field in flash reg and loop until done - \param[in] - \note - */ -static void exFlashPollingBusyFlag(void) -{ - uint8_t u8test; - exFlashSetSpiCsLow(); - - do - { - exflashWrByte(READ_STATUS_REG1_CMD); - u8test = exflashWrByte(Dummy_Byte1); - } while ((u8test & 0x01) == 0x01); - - exFlashSetSpiCsHigh(); -} - - - - - - - -/*----------------------------------------------------------------------------* - * GLOBAL FUNCTIONS * - *----------------------------------------------------------------------------*/ - - -/** - \fn exFlashChipErase(void) - \brief perform chip level erase, use with caution!! - \param[in] - \note -*/ -void exFlashChipErase(void) -{ - exFlashWrEn(); - exFlashPollingBusyFlag(); - exFlashSetSpiCsLow(); - exflashWrByte(CHIP_ERASE_CMD); - exFlashSetSpiCsHigh(); - exFlashPollingBusyFlag(); - exFlashWrDisen(); -} - - - -/** - \fn exFlashBlockErase(uint32_t u32Erase_Addr, uint8_t u8mode) - \brief perform block level erase - \param[in] u32Data_Addr :Block first address to start erasing - u8mode :Erase mode 1=32K other=64K - \note -*/ -void exFlashBlockErase(uint32_t u32Erase_Addr, uint8_t u8mode) -{ - exFlashWrEn(); - exFlashPollingBusyFlag(); - exFlashSetSpiCsLow(); - - if (u8mode == 1) - { - exflashWrByte(BLOCK_ERASE_32K_CMD); - } - else - { - exflashWrByte(BLOCK_ERASE_64K_CMD); - } - - exflashWrByte(u32Erase_Addr >> 16); - exflashWrByte(u32Erase_Addr >> 8); - exflashWrByte(u32Erase_Addr); - exFlashSetSpiCsHigh(); - exFlashPollingBusyFlag(); - exFlashWrDisen(); -} - - - -/** - \fn exFlashSectorErase(uint32_t u32Erase_Addr) - \brief perform sector level erase, normally sector is 4K - \param[in] u32Data_Addr :Block first address to start erasing - \note -*/ -void exFlashSectorErase(uint32_t u32Erase_Addr) -{ - exFlashWrEn(); - exFlashPollingBusyFlag(); - exFlashSetSpiCsLow(); - - exflashWrByte(SECTOR_ERASE_CMD); - - exflashWrByte(u32Erase_Addr >> 16); - exflashWrByte(u32Erase_Addr >> 8); - exflashWrByte(u32Erase_Addr); - exFlashSetSpiCsHigh(); - exFlashPollingBusyFlag(); - exFlashWrDisen(); -} - - - - - - -/** - \fn exFlashPagePro(void) - \brief starts writing data of up to 256 bytes at a specified address on one page (0~65535) - \param[in] u32ReadAddr Start reading address(24bit) - pu8Buffer:Data storage buffer - u16NumByteToWrite:The number of bytes to write (maximum 256), - * the number should not exceed the number of remaining bytes on the page!!! - \note -*/ -void exFlashPagePro(uint32_t u32WriteAddr, uint8_t *pu8Buffer, uint16_t u16NumByteToWrite) -{ - uint16_t i; - exFlashWrEn(); - exFlashSetSpiCsLow(); - exflashWrByte(PAGE_PROG_CMD); - exflashWrByte((uint8_t)((u32WriteAddr) >> 16)); - exflashWrByte((uint8_t)((u32WriteAddr) >> 8)); - exflashWrByte((uint8_t)u32WriteAddr); - - for (i = 0; i < u16NumByteToWrite; i++)exflashWrByte(pu8Buffer[i]); - - exFlashSetSpiCsHigh(); - exFlashPollingBusyFlag(); - exFlashWrDisen(); -} - - -/** - \fn exFlashReadMDID(void) - \brief reading device ID from flash - \param[in] - \note -*/ -uint16_t exFlashReadMDID(void) -{ - uint16_t u16Temp = 0; - /* Enable chip select */ - exFlashSetSpiCsLow(); - /* Send "RDID " instruction */ - exflashWrByte(READ_ID_CMD); - exflashWrByte(0x00); - exflashWrByte(0x00); - exflashWrByte(0x00); - /* Read a byte from the FLASH */ - u16Temp |= exflashWrByte(Dummy_Byte1) << 8; - u16Temp |= exflashWrByte(Dummy_Byte1); - /* Disable chip select */ - exFlashSetSpiCsHigh(); - return u16Temp; -} - - - - -/** - \fn uint8_t exFlashRead(uint8_t *pu8Buffer, uint32_t u32ReadAddr, uint16_t u16NumByteToRead) - \brief reading data of the specified length at the specified address - \param[in] u32ReadAddr Start reading address(24bit) - pu8Buffer Data storage buffer - u16NumByteToRead The number of bytes to read(max 65535) - \note -*/ -uint8_t exFlashRead(uint8_t *pu8Buffer, uint32_t u32ReadAddr, uint16_t u16NumByteToRead) -{ - uint16_t i; - exFlashSetSpiCsLow();/* Enable chip select */ - exflashWrByte(READ_CMD); - exflashWrByte(u32ReadAddr >> 16); - exflashWrByte(u32ReadAddr >> 8); - exflashWrByte(u32ReadAddr); - - for (i = 0; i < u16NumByteToRead; i++) - { - pu8Buffer[i] = exflashWrByte(Dummy_Byte1); //Read one byte - } - - exFlashSetSpiCsHigh();/* Disable chip select */ - - return EXFLASH_OK; -} - - - -/** - \fn exFlashErase(uint32_t eAddr, uint32_t size) - \brief Erases the flash region. use different erase cmd according to size - \param[in] eAddr addr to erase - size erase len - \note -*/ -uint8_t exFlashErase(uint32_t eAddr, uint32_t size) -{ - uint32_t offsetAddress; - uint32_t remainLen; - uint32_t currEraseSize; - - - if ((eAddr&0xfff) !=0) - { - return EXFLASH_ERROR; - } - - offsetAddress = eAddr; - remainLen = size; - - while(remainLen > 0) - { - if (((offsetAddress&0xffff) ==0) && (remainLen >=0x10000)) - { - exFlashBlockErase(offsetAddress,0); - remainLen -= 0x10000; - currEraseSize = 0x10000; - } - else if (((offsetAddress&0x7fff) ==0)&& (remainLen >=0x8000)) - { - exFlashBlockErase(offsetAddress,1); - remainLen-=0x8000; - currEraseSize = 0x8000; - } - else - { - exFlashSectorErase(offsetAddress); - currEraseSize = (remainLen >= 0x1000) ? 0x1000 : remainLen; - remainLen -= currEraseSize; - } - - offsetAddress += currEraseSize; - } - - return EXFLASH_OK; -} - - - - -/** - \fn exFlashWrite(uint8_t* pData, uint32_t WriteAddr, uint32_t size) - \brief Writes an amount of data to the QSPI flash. - \param[in] pData: Data Pointer to write - WriteAddr: Write start address - Size: Size of data to write - \note -*/ -uint8_t exFlashWrite(uint8_t* pData, uint32_t WriteAddr, uint32_t size) -{ - uint32_t end_addr, current_size, current_addr; - //uint32_t irqMask; - - // Calculation of the size between the write address and the end of the page - //write non-aligned bytes first - current_size = PAGE_SIZE - (WriteAddr%PAGE_SIZE); - - // Check if the size of the data is less than the remaining place in the page - if (current_size > size) - { - current_size = size; - } - - // Initialize the adress variables - current_addr = WriteAddr; - end_addr = WriteAddr + size; - - // Perform the write page by page - do - { - //irqMask = SaveAndSetIRQMask(); - - exFlashPagePro(current_addr,pData,current_size); - - // Update the address and size variables for next page programming - current_addr += current_size; - pData += current_size; - current_size = ((current_addr + PAGE_SIZE) > end_addr) ? (end_addr - current_addr) : PAGE_SIZE; - - //RestoreIRQMask(irqMask); - } while (current_addr < end_addr); - - return EXFLASH_OK; -} - - - - -/** - \fn exFlashInit(void) - \brief init the external spi flash - \param[in] - \note -*/ -uint8_t exFlashInit(void) -{ - - exSpiFlashIoIint(); - //gFid = exFlashReadMDID(); - - return EXFLASH_OK; -} - - -/** - \fn exFlashDeinit(void) - \brief deinit the external spi flash - \param[in] - \note -*/ -uint8_t exFlashDeinit(void) -{ - exSpiFlashIoDeIint(); - return EXFLASH_OK; -} - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/exstorage/ex_storage.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/exstorage/ex_storage.c deleted file mode 100644 index 38968c4..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/exstorage/ex_storage.c +++ /dev/null @@ -1,530 +0,0 @@ -/****************************************************************************** - -*(C) Copyright 2018 EIGENCOMM International Ltd. - -* All Rights Reserved - -****************************************************************************** -* Filename: -* -* Description: -* -* History: initiated by xxxx -* -* Notes: -* -******************************************************************************/ - -/*----------------------------------------------------------------------------* - * INCLUDES * - *----------------------------------------------------------------------------*/ - -#include -#include -#include -#include -#include DEBUG_LOG_HEADER_FILE - -#include "mem_map.h" -#include "bsp.h" -#include "ex_flash.h" -#include "ex_storage.h" -#include "cmsis_os2.h" -#include "mw_aal_hash.h" - - - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ - -#define EXSTO_EF_DATA_ADDR (EF_DATA_LOAD_ADDR) -#define EXSTO_EF_DATA_SIZE (EF_DATA_LOAD_SIZE) - - -/*----------------------------------------------------------------------------* - * DATA TYPE DEFINITION * - *----------------------------------------------------------------------------*/ -typedef struct -{ - uint32_t handle; /* starting addr @NFS, otherwise fd @FS */ - uint32_t size; - uint32_t overhead; /* reserved zone size for a special purpose */ - uint32_t extras; /* some supplementary info */ -}ExStoZone_t; - -typedef struct -{ - ExStoZoneId_bm bmZoneId; - ExStoZone_t zone[EXSTO_ZONE_MAXNUM]; -}ExStoZoneMan_t; - - - -/*----------------------------------------------------------------------------* - * GLOBAL VARIABLES * - *----------------------------------------------------------------------------*/ - - -AP_PLAT_COMMON_BSS static ExStoZoneMan_t gExStoZoneMan; - - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCTION DECLEARATION * - *----------------------------------------------------------------------------*/ - - - -/*----------------------------------------------------------------------------* - * GLOBAL FUNCTIONS * - *----------------------------------------------------------------------------*/ - - -/** - \fn uint8_t exStorageInit(void) - \brief init the external storage - \param[in] - \note -*/ -int32_t exStorageInit(void) -{ - gExStoZoneMan.bmZoneId |= EXSTO_BM_ZONE_EF_DATA; - gExStoZoneMan.zone[EXSTO_ZONE_EF_DATA].handle = EXSTO_EF_DATA_ADDR; - gExStoZoneMan.zone[EXSTO_ZONE_EF_DATA].size = EXSTO_EF_DATA_SIZE; - gExStoZoneMan.zone[EXSTO_ZONE_EF_DATA].overhead = 0; - gExStoZoneMan.zone[EXSTO_ZONE_EF_DATA].extras = 0; - - if(exFlashInit() == EXFLASH_OK) - return EXSTO_OK; - else - return EXSTO_EINIT; -} - - -/** - \fn int32_t exStorageDeinit(void) - \brief deinit the external storage - \param[in] - \note -*/ -int32_t exStorageDeinit(void) -{ - memset(&gExStoZoneMan, 0, sizeof(ExStoZoneMan_t)); - - if(exFlashDeinit() == EXFLASH_OK) - return EXSTO_OK; - else - return EXSTO_EDEINIT; -} - - -/** - \fn int32_t exStorageClear(uint32_t zid, uint32_t offset, uint32_t len) - \brief erase the area to be write - \param[in] zid resv for future use - offset erase start addr - len erase len - \note -*/ -int32_t exStorageClear(uint32_t zid, uint32_t offset, uint32_t len) -{ - uint32_t currLen = len; - - if(zid >= EXSTO_ZONE_MAXNUM) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_CLEAR_0, P_WARNING, "clr: invalid zoneId(%d)! max(%d)\n", - zid, EXSTO_ZONE_MAXNUM); -#endif - return EXSTO_EUNDEF; - } - - if(!(gExStoZoneMan.bmZoneId & (1 << zid))) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_CLEAR_1, P_WARNING, "clr: no exSto zone(%d)! bmZoneId(0x%x)\n", - zid, gExStoZoneMan.bmZoneId); -#endif - return EXSTO_EERASE; - } - - if(currLen > gExStoZoneMan.zone[zid].size) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_CLEAR_2, P_WARNING, "clr zone(%d): len(%d) overflowed! set it max(%d)!\n", - zid, currLen, gExStoZoneMan.zone[zid].size); -#endif - currLen = gExStoZoneMan.zone[zid].size; - } - - if(offset >= gExStoZoneMan.zone[zid].size) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_CLEAR_3, P_ERROR, "clr zone(%d): invalid offset(%d)! max(%d)\n", - zid, offset, gExStoZoneMan.zone[zid].size); -#endif - return EXSTO_EOVRFLOW; - } - - if(exFlashErase(gExStoZoneMan.zone[zid].handle + offset, len) == EXFLASH_OK) - return EXSTO_OK; - else - return EXSTO_EERASE; -} - - -/** - \fn int32_t exStorageWrite(uint32_t zid, uint32_t offset, uint8_t *buf, uint32_t bufLen) - \brief write data of the specified length at the specified address - \param[in] zid resv for future use - offset write start addr - buf write buf - bufLen write len - \note -*/ -int32_t exStorageWrite(uint32_t zid, uint32_t offset, uint8_t *buf, uint32_t bufLen) -{ - uint32_t currLen = bufLen; - uint8_t *rdPtr = NULL; - int32_t ret = 0; - - if(zid >= EXSTO_ZONE_MAXNUM) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_WRITE_0, P_WARNING, "wr: invalid zoneId(%d)! max(%d)\n", - zid, EXSTO_ZONE_MAXNUM); -#endif - return EXSTO_EUNDEF; - } - - if(!(gExStoZoneMan.bmZoneId & (1 << zid))) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_WRITE_1, P_WARNING, "wr: no exSto zone(%d)! bmZoneId(0x%x)\n", - zid, gExStoZoneMan.bmZoneId); -#endif - return EXSTO_EWRITE; - } - - if(currLen > gExStoZoneMan.zone[zid].size) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_WRITE_2, P_WARNING, "wr zone(%d): len(%d) overflowed! set it max(%d)!\n", - zid, currLen, gExStoZoneMan.zone[zid].size); -#endif - currLen = gExStoZoneMan.zone[zid].size; - } - - if(offset >= gExStoZoneMan.zone[zid].size) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_WRITE_3, P_ERROR, "wr zone(%d): invalid offset(%d)! max(%d)\n", - zid, offset, gExStoZoneMan.zone[zid].size); -#endif - return EXSTO_EOVRFLOW; - } - - //step1 write to flash - if(exFlashWrite(buf, gExStoZoneMan.zone[zid].handle + offset, currLen) != EXFLASH_OK) - return EXSTO_EWRITE; - - //step2 read back and check - rdPtr = mallocEc(currLen); - if(rdPtr == NULL) - { - return EXSTO_EMALLOC; - } - - if(exFlashRead(rdPtr, gExStoZoneMan.zone[zid].handle + offset, currLen) != EXFLASH_OK) - return EXSTO_EREAD; - - ret = memcmp(buf,rdPtr,currLen); - freeEc(rdPtr); - - return ret ? EXSTO_EWRITE : EXSTO_OK; -} - - -/** - \fn int32_t exStorageRead(uint32_t zid, uint32_t offset, uint8_t *buf, uint32_t bufLen) - \brief reading data of the specified length at the specified address - \param[in] zid resv for future use - offset read start addr - buf read buf - bufLen read len - \note -*/ -int32_t exStorageRead(uint32_t zid, uint32_t offset, uint8_t *buf, uint32_t bufLen) -{ - uint32_t currLen = bufLen; - - if(zid >= EXSTO_ZONE_MAXNUM) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_READ_0, P_WARNING, "rd: invalid zoneId(%d)! max(%d)\n", - zid, EXSTO_ZONE_MAXNUM); -#endif - return EXSTO_EUNDEF; - } - - if(!(gExStoZoneMan.bmZoneId & (1 << zid))) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_READ_1, P_WARNING, "rd: no exSto zone(%d)! bmZoneId(0x%x)\n", - zid, gExStoZoneMan.bmZoneId); -#endif - return EXSTO_EWRITE; - } - - if(currLen > gExStoZoneMan.zone[zid].size) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_READ_2, P_WARNING, "rd zone(%d): len(%d) overflowed! set it max(%d)!\n", - zid, currLen, gExStoZoneMan.zone[zid].size); -#endif - currLen = gExStoZoneMan.zone[zid].size; - } - - if(offset >= gExStoZoneMan.zone[zid].size) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_READ_3, P_ERROR, "rd zone(%d): invalid offset(%d)! max(%d)\n", - zid, offset, gExStoZoneMan.zone[zid].size); -#endif - return EXSTO_EOVRFLOW; - } - - if(exFlashRead(buf, gExStoZoneMan.zone[zid].handle + offset, currLen) == EXFLASH_OK) - return EXSTO_OK; - else - return EXSTO_EREAD; -} - -/** - * @brief exStorageGetZid(uint32_t addr, uint32_t *size, uint32_t *offset); - * @details get the es zid according starting address and size of the zone - * - * @param addr the starting addr of the zone - * @param size the size of the zone - * @param offset the offset to starting addr of the zone - * @return the zone ID. - */ -uint32_t exStorageGetZid(uint32_t addr, uint32_t *size, uint32_t *offset) -{ - uint32_t zid = EXSTO_ZONE_EF_DATA; - uint32_t zsz = EXSTO_EF_DATA_SIZE; - - if(!size) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_GET_ZID_1, P_ERROR, "get zid: null size ptr!\n"); -#endif - goto GET_ZID_END; - } - - if(!addr && !(*size)) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_GET_ZID_2, P_SIG, "get zid: set it default(%d: %d)!\n", zid, zsz); -#endif - goto GET_ZID_END; - } - - switch(addr) - { - case EXSTO_EF_DATA_ADDR: - { - zid = EXSTO_ZONE_EF_DATA; - zsz = EXSTO_EF_DATA_SIZE; - break; - } - - default: - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_GET_ZID_3, P_WARNING, "get zid: unknown starting addr(0x%x)!\n", addr); -#endif - break; - } - } - -GET_ZID_END: - if(!(*size)) - { - *size = zsz; - } - else - { - if(*size != zsz) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_GET_ZID_4, P_WARNING, "get zid: in_size(%d) != zone_size(%d)!\n", *size, zsz); -#endif - } - } - - if(offset) *offset = 0; - - return zid; -} - - -/** - * @brief exStorageGetSize(uint32_t zid, uint8_t isOvhdExcl) - * @details get the nvm size of specific exstorage zone - * - * @param zid zone Id of exstorage zone - * @param isOvhdExcl overhead size of the zone is excluded or not - * @return the size of zone. - */ -uint32_t exStorageGetSize(uint32_t zid, uint8_t isOvhdExcl) -{ - if(zid >= EXSTO_ZONE_MAXNUM) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_GET_SZ_0, P_WARNING, "get size: invalid zoneId(%d)! max(%d)\n", - zid, EXSTO_ZONE_MAXNUM); -#endif - return EXSTO_EUNDEF; - } - - if(!(gExStoZoneMan.bmZoneId & (1 << zid))) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_GET_SZ_1, P_WARNING, "get size: no exSto zone(%d)! bmZoneId(0x%x)\n", - zid, gExStoZoneMan.bmZoneId); -#endif - return EXSTO_EWRITE; - } - - return (gExStoZoneMan.zone[zid].size - (isOvhdExcl ? gExStoZoneMan.zone[zid].overhead : 0)); -} - - -/** - * @brief exStorageVerifyPkg(uint32_t *pkgState) - * @details validate the data pkg - * - * @param pkgState the last state of data pkg - * @return 0 succ; < 0 failure with errno. - */ -int32_t exStorageVerifyPkg(uint32_t zid, uint8_t *hash, uint32_t pkgSize, uint32_t *pkgState) -{ - int32_t retCode = EXSTO_EUNDEF; - uint8_t *buffer = NULL; - uint8_t isLast = 0; - uint32_t offset = 0; - uint32_t readSize = 0; - uint32_t remnSize = pkgSize; - uint32_t stepSize = 4096; - uint8_t outHash[32] = {0}; - MwAalSha256Ctx_t sha256; - - /* no need to verify the pkg */ - if(!hash) return EXSTO_OK; - - if(zid >= EXSTO_ZONE_MAXNUM) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_VERIFY_PKG_1, P_WARNING, "verify pkg: invalid zoneId(%d)! max(%d)\n", - zid, EXSTO_ZONE_MAXNUM); -#endif - return EXSTO_EUNDEF; - } - - if(!(gExStoZoneMan.bmZoneId & (1 << zid))) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_VERIFY_PKG_2, P_WARNING, "verify pkg: no exSto zone(%d)! bmZoneId(0x%x)\n", - zid, gExStoZoneMan.bmZoneId); -#endif - return EXSTO_EWRITE; - } - - mwAalInitSha256(&sha256, 0); - - buffer = (uint8_t*)mallocEc(stepSize); - if(buffer == NULL) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_VERIFY_PKG_3, P_WARNING, "verify pkg: zone(%d) malloc(%d) failure!\n", - zid, stepSize); -#endif - goto VERIFY_PKG_END; - } - - - for(offset = 0; offset < pkgSize; offset += readSize) - { - if(remnSize > stepSize) - { - isLast = 0; - readSize = stepSize; - } - else - { - isLast = 1; - readSize = remnSize; - } - remnSize -= readSize; - - if(EXSTO_OK != exStorageRead(zid, offset, buffer, readSize)) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_VERIFY_PKG_4, P_WARNING, "zid(%d) flash read failure!\n", zid); -#endif - goto VERIFY_PKG_END; - } - - if(0 != mwAalUpdateSha256(&sha256, buffer, outHash, readSize, isLast)) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_VERIFY_PKG_5, P_ERROR, "zid(%d) flash sha256sum fail!\n", zid); -#endif - goto VERIFY_PKG_END; - } - } - - if(memcmp(outHash, hash, 32)) - { -#ifndef BL_FOTA_USE_EXT_STORAGE - ECPLAT_DUMP(UNILOG_PLA_DRIVER, EX_VERIFY_PKG_6, P_WARNING, "input hash: ", 32, hash); - ECPLAT_DUMP(UNILOG_PLA_DRIVER, EX_VERIFY_PKG_7, P_WARNING, "calc hash : ", 32, outHash); -#endif - } - else - { - retCode = EXSTO_OK; - } - -VERIFY_PKG_END: - if(buffer) freeEc(buffer); - - mwAalDeinitSha256(&sha256); - - if(pkgState) - { - *pkgState = 0; - } - - return retCode; -} - -/** - * @brief exStorageGetUpdResult(uint32_t zid, int32_t *pkgState) - * @details get the updated result - * - * @param pkgState the last state of data pkg - * @return 0 succ; < 0 failure with errno. - */ -int32_t exStorageGetUpdResult(uint32_t zid, int32_t *pkgState) -{ - if(pkgState) - { - *pkgState = 0; - } - - return 1; -} - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/keypad/keypad.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/keypad/keypad.c deleted file mode 100644 index 7ee19d1..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/keypad/keypad.c +++ /dev/null @@ -1,231 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2020-, Copyrigths of EigenComm Ltd. - * File name: keypad.c - * Description: EC618 keypad driver source file - * History: Rev1.0 2020-12-17 - * - ****************************************************************************/ -#include -#include -#include "ostask.h" -#include "osasys.h" -#include "bsp.h" -#include "bsp_custom.h" -#include "ec7xx.h" -#include "keypad.h" -#include "kpc.h" -#include "timer.h" -#ifdef FEATURE_SUBSYS_SYSLOG_ENABLE -#include "syslog.h" -#endif -#define KPC_TRACE(subId, argLen, format, ...) \ - ECOMM_TRACE(UNILOG_KPC, subId, P_VALUE, argLen, format, ##__VA_ARGS__) - -#define KPC_EVENT_QUEUE_SIZE (64) -osSemaphoreId_t kpcSemaphore = NULL; - -const uint8_t keyCodes[ROWS][COLUMNS] = -{ - {FUNC_CODE_YES, FUNC_CODE_DIR_U, FUNC_CODE_DIR_D,FUNC_CODE_DIR_L}, - {'1', '2', '3', FUNC_CODE_MENU}, - {'4', '5', '6', FUNC_CODE_BACK}, - {'7', '8', '9', FUNC_CODE_DIAL}, - {'*', '0', '#', FUNC_CODE_DIR_R}, // '*' '#'æ˜¯éžæ‰“å°å­—符 -}; - - -/** - \brief KPC event report queue typedef - */ -typedef struct -{ - KpcReportEvent_t events[KPC_EVENT_QUEUE_SIZE]; - uint32_t head; - uint32_t tail; -} KpcEventQueue_t; - -static KpcEventQueue_t gKpcEventQueue; - -static void KPC_eventQueueInit(void) -{ - memset(&gKpcEventQueue, 0, sizeof(gKpcEventQueue)); -} - -int32_t KPC_eventQueueRead(KpcReportEvent_t *eventPtr) -{ - uint32_t mask; - - mask = SaveAndSetIRQMask(); - - if(gKpcEventQueue.tail == gKpcEventQueue.head) - { - // queue is empty - RestoreIRQMask(mask); - - return -1; - } - - *eventPtr = gKpcEventQueue.events[gKpcEventQueue.head]; - gKpcEventQueue.head = (gKpcEventQueue.head + 1) % KPC_EVENT_QUEUE_SIZE; - - RestoreIRQMask(mask); - - return 0; -} - -// no need to perform atomic access since this function is called only in ISR -static int32_t KPC_eventQueueWrite(KpcReportEvent_t* eventPtr) -{ - if(((gKpcEventQueue.tail + 1) % KPC_EVENT_QUEUE_SIZE) == gKpcEventQueue.head) - { - // queue is full, need to handle - return -1; - } - - gKpcEventQueue.events[gKpcEventQueue.tail] = *eventPtr; - gKpcEventQueue.tail = (gKpcEventQueue.tail + 1) % KPC_EVENT_QUEUE_SIZE; - - return 0; -} - - -/** - \fn void KPC_callback() - \brief KPC interrupt service routine - \return -*/ -void KPC_callback(KpcReportEvent_t event) -{ - if(KPC_eventQueueWrite(&event) == -1) - { - // Queue is full - } - #ifdef FEATURE_SUBSYS_INPUT_ENABLE - inputNotify(); - #endif - if (kpcSemaphore != NULL) - { - osSemaphoreRelease(kpcSemaphore); - } -} - - -void keypadScan(void) -{ - if(kpcSemaphore!=NULL) - { - KpcReportEvent_t event; - if(KPC_eventQueueRead(&event) != -1) - { - // SYSLOG_INFO("r%d,c%d,%c\r\n",event.row,event.column,keyCodes[event.row][event.column]); - if(event.value == KPC_REPORT_KEY_RELEASE) - { - printf("key R-%c\r\n", keyCodes[event.row][event.column]); - // KPC_TRACE(keyPadRelease, 3, "r%d,c%d,%c",event.row,event.column,keyCodes[event.row][event.column]); - } - else if(event.value == KPC_REPORT_KEY_PRESS) - { - printf("key P-%c\r\n", keyCodes[event.row][event.column]); - // KPC_TRACE(keyPadPressed, 3, "r%d,c%d,%c",event.row,event.column,keyCodes[event.row][event.column]); - } - } - } -} - -void keypadLoop(void) -{ - osSemaphoreAcquire(kpcSemaphore, osWaitForever); - keypadScan(); -} - -void keypadInit(void) -{ - if(kpcSemaphore != NULL){ - osSemaphoreDelete(kpcSemaphore); - } - kpcSemaphore = osSemaphoreNew(1, 1, NULL); - - PadConfig_t padConfig; - PAD_getDefaultConfig(&padConfig); - padConfig.pullSelect = PAD_PULL_AUTO; - padConfig.pullUpEnable = PAD_PULL_UP_DISABLE; - padConfig.pullDownEnable = PAD_PULL_DOWN_DISABLE; - - padConfig.mux = KEYPAD_ROW_0_ALT_FUNC; - PAD_setPinConfig(KEYPAD_ROW_0_PAD_INDEX, &padConfig); - - padConfig.mux = KEYPAD_ROW_1_ALT_FUNC; - PAD_setPinConfig(KEYPAD_ROW_1_PAD_INDEX, &padConfig); - - padConfig.mux = KEYPAD_ROW_2_ALT_FUNC; - PAD_setPinConfig(KEYPAD_ROW_2_PAD_INDEX, &padConfig); - - padConfig.mux = KEYPAD_ROW_3_ALT_FUNC; - PAD_setPinConfig(KEYPAD_ROW_3_PAD_INDEX, &padConfig); - - padConfig.mux = KEYPAD_ROW_4_ALT_FUNC; - PAD_setPinConfig(KEYPAD_ROW_4_PAD_INDEX, &padConfig); - - padConfig.pullSelect = PAD_PULL_INTERNAL; - padConfig.pullUpEnable = PAD_PULL_UP_ENABLE; - padConfig.pullDownEnable = PAD_PULL_DOWN_DISABLE; - - padConfig.mux = KEYPAD_COLUMN_0_ALT_FUNC; - PAD_setPinConfig(KEYPAD_COLUMN_0_PAD_INDEX, &padConfig); - - padConfig.mux = KEYPAD_COLUMN_1_ALT_FUNC; - PAD_setPinConfig(KEYPAD_COLUMN_1_PAD_INDEX, &padConfig); - - padConfig.mux = KEYPAD_COLUMN_2_ALT_FUNC; - PAD_setPinConfig(KEYPAD_COLUMN_2_PAD_INDEX, &padConfig); - - padConfig.mux = KEYPAD_COLUMN_3_ALT_FUNC; - PAD_setPinConfig(KEYPAD_COLUMN_3_PAD_INDEX, &padConfig); - - // KpcReportEvent_t event; - KpcConfig_t kpcConfig; - KPC_getDefaultConfig(&kpcConfig); - //kpcConfig.debounceConfig.debounceClkDivRatio = KPC_DEBOUNCE_CLK_DIV_RATIO_16; - kpcConfig.validRowMask = KPC_ROW_ALL; - //KPC_ROW_4 | KPC_ROW_3 | KPC_ROW_2 | KPC_ROW_1 | KPC_ROW_0; - kpcConfig.validColumnMask = KPC_COLUMN_3 | KPC_COLUMN_2 | KPC_COLUMN_1 | KPC_COLUMN_0; - - // 240ms (6*40ms) autorepeat delay - kpcConfig.autoRepeat.delay = 6; - KPC_deInit(); - KPC_init(&kpcConfig, KPC_callback); - KPC_eventQueueInit(); - KPC_startScan(); -} -#ifdef FEATURE_SUBSYS_GUI_LVGL_ENABLE -#include "lv_port_indev.h" -void keypad_read(lv_indev_drv_t * drv, lv_indev_data_t * data) { - KpcReportEvent_t event; - if(KPC_eventQueueRead(&event) != -1) - { - if(event.value == KPC_REPORT_KEY_RELEASE) - { - data->state = LV_INDEV_STATE_REL; - } - else if(event.value == KPC_REPORT_KEY_PRESS){ - data->state = LV_INDEV_STATE_PR ; - switch(keyCodes[event.row][event.column]) { - case FUNC_CODE_DIR_U: - data->key = LV_KEY_UP; - break; - case FUNC_CODE_DIR_D: - data->key = LV_KEY_DOWN; - break; - case FUNC_CODE_DIR_L: - data->key = LV_KEY_LEFT; - break; - case FUNC_CODE_DIR_R: - data->key = LV_KEY_RIGHT; - break; - } - } - // SYSLOG_INFO("%d,%d,%c\r\n",data->state,data->key,keyCodes[event.row][event.column]); - } -} -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/lcd/disFormat.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/lcd/disFormat.c deleted file mode 100644 index dd63bee..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/lcd/disFormat.c +++ /dev/null @@ -1,284 +0,0 @@ -#include -#include -#include -#include -#include -#include "bsp.h" -#include "bsp_custom.h" -#include "lcdDrv.h" -#include "lcdComm.h" -/** - \fn - \brief - \return -*/ -void yuv422ToRgb565(const void* inbuf, void* outbuf, int width, int height) -{ - const uint8_t* yuv422_buf = (const uint8_t*)inbuf; - uint16_t* rgb565_buf = (uint16_t*)outbuf; - - for (int row = 0; row < height; row++) { - for (int col = 0; col < width; col++) { - // Extract Y, U, and V components - int y = *yuv422_buf++; - int u = *yuv422_buf++; - int v = *yuv422_buf++; - - // Convert YUV to RGB - int r = y + ((v - 128) * 1404) / 1000; - int g = y - ((u - 128) * 343) / 1000 - ((v - 128) * 711) / 1000; - int b = y + ((u - 128) * 1772) / 1000; - - // Clamp RGB values to the valid range - r = (r < 0) ? 0 : ((r > 255) ? 255 : r); - g = (g < 0) ? 0 : ((g > 255) ? 255 : g); - b = (b < 0) ? 0 : ((b > 255) ? 255 : b); - - // Convert RGB to 565 format - uint16_t r5 = (r * 249 + 1014) >> 11; - uint16_t g6 = (g * 253 + 505) >> 10; - uint16_t b5 = (b * 249 + 1014) >> 11; - - // Combine RGB components into a 16-bit value - uint16_t rgb565 = (r5 << 11) | (g6 << 5) | b5; - - // Store the RGB565 value in the output buffer - *rgb565_buf++ = rgb565; - } - } -} -/** - \fn - \brief - \return -*/ -void yuv420ToRgb565(const void* inbuf, void* outbuf, int width, int height) { - const uint8_t* yuv420_buf = (const uint8_t*)inbuf; - uint16_t* rgb565_buf = (uint16_t*)outbuf; - - int y_size = width * height; - int uv_size = y_size / 4; - const uint8_t* y_plane = yuv420_buf; - const uint8_t* u_plane = yuv420_buf + y_size; - const uint8_t* v_plane = u_plane + uv_size; - - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - int y_index = y * width + x; - int uv_index = (y / 2) * (width / 2) + (x / 2); - - // Extract Y, U, and V components - int yy = y_plane[y_index]; - int uu = u_plane[uv_index] - 128; - int vv = v_plane[uv_index] - 128; - - // Convert YUV to RGB - int r = yy + vv + ((vv * 103) >> 8); - int g = yy - ((uu * 88) >> 8) - ((vv * 183) >> 8); - int b = yy + uu + ((uu * 198) >> 8); - - // Clamp RGB values to the valid range - r = (r < 0) ? 0 : ((r > 255) ? 255 : r); - g = (g < 0) ? 0 : ((g > 255) ? 255 : g); - b = (b < 0) ? 0 : ((b > 255) ? 255 : b); - - // Convert RGB to 565 format - uint16_t r5 = (r * 249 + 1014) >> 11; - uint16_t g6 = (g * 253 + 505) >> 10; - uint16_t b5 = (b * 249 + 1014) >> 11; - - // Combine RGB components into a 16-bit value - uint16_t rgb565 = (r5 << 11) | (g6 << 5) | b5; - - // Store the RGB565 value in the output buffer - *rgb565_buf++ = rgb565; - } - } -} -/** - \fn - \brief - \return -*/ -void rgb565ToYuv422(const void* inbuf, void* outbuf, int width, int height) { - const uint16_t* rgb565 = (const uint16_t*)inbuf; - uint8_t* yuv422 = (uint8_t*)outbuf; - - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - uint16_t rgb = *rgb565++; - uint8_t r = (rgb >> 11) & 0x1F; - uint8_t g = (rgb >> 5) & 0x3F; - uint8_t b = rgb & 0x1F; - - // Convert RGB to YUV - int yy = ((66 * r + 129 * g + 25 * b + 128) >> 8) + 16; - int uu = ((-38 * r - 74 * g + 112 * b + 128) >> 8) + 128; - int vv = ((112 * r - 94 * g - 18 * b + 128) >> 8) + 128; - - // Clamp YUV values to the valid range - yy = (yy < 0) ? 0 : ((yy > 255) ? 255 : yy); - uu = (uu < 0) ? 0 : ((uu > 255) ? 255 : uu); - vv = (vv < 0) ? 0 : ((vv > 255) ? 255 : vv); - - // Store YUV values - *yuv422++ = yy; - if (x % 2 == 0) { - *yuv422++ = uu; - *yuv422++ = vv; - } - } - } -} -/** - \fn - \brief - \return -*/ -void rgb565ToYuv420(const void* inbuf, void* outbuf, int width, int height) { - const uint16_t* rgb565 = (const uint16_t*)inbuf; - uint8_t* yuv420 = (uint8_t*)outbuf; - uint8_t* yplane = yuv420; - uint8_t* uplane = yuv420 + width * height; - uint8_t* vplane = uplane + ((width + 1) / 2) * ((height + 1) / 2); - - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - uint16_t rgb = *rgb565++; - uint8_t r = (rgb >> 11) & 0x1F; - uint8_t g = (rgb >> 5) & 0x3F; - uint8_t b = rgb & 0x1F; - - // Convert RGB to YUV - int yy = ((66 * r + 129 * g + 25 * b + 128) >> 8) + 16; - int uu = ((-38 * r - 74 * g + 112 * b + 128) >> 8) + 128; - int vv = ((112 * r - 94 * g - 18 * b + 128) >> 8) + 128; - - // Clamp YUV values to the valid range - yy = (yy < 0) ? 0 : ((yy > 255) ? 255 : yy); - uu = (uu < 0) ? 0 : ((uu > 255) ? 255 : uu); - vv = (vv < 0) ? 0 : ((vv > 255) ? 255 : vv); - - // Store YUV values - *yplane++ = yy; - if (y % 2 == 0 && x % 2 == 0) { - *uplane++ = uu; - if (x < width - 1) { - *vplane++ = vv; - } - } - } - } -} - -/** - \fn - \brief - \return -*/ - -// Define RGB565 and YCbCr pixel structures -typedef struct { - uint16_t rgb; // 5 bits for R, 6 bits for G, 5 bits for B -} RGB565Pixel; - -// Define RGB888 and YCbCr pixel structures -typedef struct { - uint8_t r; - uint8_t g; - uint8_t b; -} RGB888Pixel; - -typedef struct { - uint8_t y; - uint8_t cb; - uint8_t cr; -} YCbCrPixel; - -// Function to convert RGB565 to RGB888 -RGB888Pixel rgb565ToRgb888(RGB565Pixel rgb565) { - RGB888Pixel rgb888; - rgb888.r = (rgb565.rgb >> 11) & 0x1F; // Red component - rgb888.g = (rgb565.rgb >> 5) & 0x3F; // Green component - rgb888.b = rgb565.rgb & 0x1F; // Blue component - - // Scale up to 8 bits - rgb888.r = (rgb888.r << 3) | (rgb888.r >> 2); - rgb888.g = (rgb888.g << 2) | (rgb888.g >> 4); - rgb888.b = (rgb888.b << 3) | (rgb888.b >> 2); - - return rgb888; -} - -// Function to convert RGB888 to YCbCr -YCbCrPixel rgb888ToYCbCr(RGB888Pixel rgb888) { - YCbCrPixel ycbcr; - ycbcr.y = (uint8_t)( 0.299 * rgb888.r + 0.587 * rgb888.g + 0.114 * rgb888.b); - ycbcr.cb = (uint8_t)(-0.169 * rgb888.r - 0.331 * rgb888.g + 0.500 * rgb888.b + 128); - ycbcr.cr = (uint8_t)( 0.500 * rgb888.r - 0.419 * rgb888.g - 0.081 * rgb888.b + 128); - return ycbcr; -} - -// Function to convert RGB565 to YCbCr -void rgb565ToYCbCr(const void* inbuf, void* outbuf, int width, int height) { - const RGB565Pixel* inRGB565 = (const RGB565Pixel*)inbuf; - YCbCrPixel* outYCbCr = (YCbCrPixel*)outbuf; - - for (int y = 0; y < height; ++y) { - for (int x = 0; x < width; ++x) { - RGB565Pixel rgb565 = inRGB565[y * width + x]; - - // Convert RGB565 to RGB888 - RGB888Pixel rgb888 = rgb565ToRgb888(rgb565); - - // Convert RGB888 to YCbCr - YCbCrPixel ycbcr = rgb888ToYCbCr(rgb888); - - // Store YCbCr in the output buffer - outYCbCr[y * width + x] = ycbcr; - } - } -} - -// Function to convert YCbCr to RGB888 -RGB888Pixel yCbCrToRgb888(YCbCrPixel ycbcr) { - RGB888Pixel rgb888; - int r = ycbcr.y + ((ycbcr.cr - 128) * 1.402); - int g = ycbcr.y - ((ycbcr.cb - 128) * 0.344) - ((ycbcr.cr - 128) * 0.714); - int b = ycbcr.y + ((ycbcr.cb - 128) * 1.772); - - // Clamp the RGB values to the valid range [0, 255] - rgb888.r = (r < 0) ? 0 : ((r > 255) ? 255 : r); - rgb888.g = (g < 0) ? 0 : ((g > 255) ? 255 : g); - rgb888.b = (b < 0) ? 0 : ((b > 255) ? 255 : b); - - return rgb888; -} - -// Function to convert RGB888 to RGB565 -RGB565Pixel rgb888ToRgb565(RGB888Pixel rgb888) { - RGB565Pixel rgb565; - rgb565.rgb = ((rgb888.r >> 3) << 11) | ((rgb888.g >> 2) << 5) | (rgb888.b >> 3); - return rgb565; -} - -// Function to convert YCbCr to RGB565 -void yCbCrToRgb565(const void* inbuf, void* outbuf, int width, int height) { - const YCbCrPixel* inYCbCr = (const YCbCrPixel*)inbuf; - RGB565Pixel* outRGB565 = (RGB565Pixel*)outbuf; - - for (int y = 0; y < height; ++y) { - for (int x = 0; x < width; ++x) { - YCbCrPixel ycbcr = inYCbCr[y * width + x]; - - // Convert YCbCr to RGB888 - RGB888Pixel rgb888 = yCbCrToRgb888(ycbcr); - - // Convert RGB888 to RGB565 - RGB565Pixel rgb565 = rgb888ToRgb565(rgb888); - - // Store RGB565 in the output buffer - outRGB565[y * width + x] = rgb565; - } - } -} \ No newline at end of file diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/lcd/lcdComm.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/lcd/lcdComm.c deleted file mode 100644 index 6fd00bd..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/lcd/lcdComm.c +++ /dev/null @@ -1,754 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#include "bsp.h" -#include "bsp_custom.h" -#include "lspi.h" -#include "lcdDrv.h" -#include "lcdComm.h" -#include "timer.h" -#ifdef FEATURE_OS_ENABLE -#include "osasys.h" -#include "cmsis_os2.h" -#endif -#include "sctdef.h" - - -extern void slpManAONIOPowerOn(void); -AP_PLAT_COMMON_DATA lspiDrvInterface_t *lcdDrv = &lspiDrvInterface2; -AP_PLAT_COMMON_BSS int32_t lcdDmaTxCh = 0; -AP_PLAT_COMMON_BSS static lcdUspCb userUspCb = NULL; -AP_PLAT_COMMON_BSS static lcdUspCb userDmaCb = NULL; -PLAT_FM_ZI DmaDescriptor_t __ALIGNED(16) lcdDmaTxDesc[DMA_DESC_MAX]; -extern lcdDrvFunc_t* lcdDevHandle; -AP_PLAT_COMMON_DATA DmaTransferConfig_t lcdDmaTxCfg = -{ - NULL, - (void *)&(LSPI2->TFIFO), - DMA_FLOW_CONTROL_TARGET, - DMA_ADDRESS_INCREMENT_SOURCE, - DMA_DATA_WIDTH_FOUR_BYTES, - DMA_BURST_32_BYTES, - DMA_BULK_NUM -}; - -void lcdDrvDelay(uint32_t ms) -{ -#ifdef FEATURE_OS_ENABLE - if (ms < 1) - { - osDelay(1); - } - else - { - osDelay(ms); - } -#else - extern void delay_us(uint32_t us); - delay_us(ms*1000); -#endif -} - -static void uspIrqCb(void) -{ - LSPI2->STAS |= (1<<31); - if (lcdDevHandle->uspIrq4CamCb) - { - lcdDevHandle->uspIrq4CamCb(lcdDevHandle); - } - - if (lcdDevHandle->uspIrq4FillCb) - { - lcdDevHandle->uspIrq4FillCb(lcdDevHandle); - } - - if (userUspCb) - { - userUspCb(); - } -} - -static void dmaIrqCb(uint32_t event) -{ - switch(event) - { - case DMA_EVENT_END: - { - //isFrameDmaWaiting = false; - - if(userDmaCb) - { - userDmaCb(event); - } - - break; - } - - case DMA_EVENT_ERROR: - break; - default: - break; - } -} - -int dmaInit(lcdDmaCb cb) -{ - if (lcdDmaTxCh) - { - DMA_closeChannel(DMA_INSTANCE_MP,lcdDmaTxCh); - } - - lcdDmaTxCh = DMA_openChannel(DMA_INSTANCE_MP); - if (ARM_DMA_ERROR_CHANNEL_ALLOC == lcdDmaTxCh) - { - EC_ASSERT(0,0,0,0); - } - - if(cb) - { - userDmaCb = cb; - } - - DMA_setChannelRequestSource(DMA_INSTANCE_MP, lcdDmaTxCh, DMA_REQUEST_USP2_TX); - DMA_rigisterChannelCallback(DMA_INSTANCE_MP, lcdDmaTxCh, dmaIrqCb); - DMA_enableChannelInterrupts(DMA_INSTANCE_MP, lcdDmaTxCh, DMA_END_INTERRUPT_ENABLE); - return lcdDmaTxCh; -} - -void dmaStartStop(bool start) -{ - if(start) - { - DMA_loadChannelDescriptorAndRun(DMA_INSTANCE_MP, lcdDmaTxCh, lcdDmaTxDesc); - } - else - { - DMA_stopChannel(DMA_INSTANCE_MP, lcdDmaTxCh, false); - } -} - -void lcdEnable() -{ - lspiBusSel.lspiBusEn = 1; // choose lspi bus - lspiCtrl.enable = 1; - lcdDrv->ctrl(LSPI_CTRL_BUS_SEL, 0); - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); -} - - -#if defined TYPE_EC718M - -void lcdMspiSet(uint8_t enable, uint8_t addrLane, uint8_t dataLane, uint8_t instruction) -{ - lspiMspiCtrl.mspiEn = enable; - lspiMspiCtrl.mspiAddrLane = addrLane; - lspiMspiCtrl.mspiDataLane = dataLane; - lspiMspiCtrl.mspiInst = instruction; - lcdDrv->ctrl(LSPI_MSPI_CTRL, 0); -} - -void lcdMspiHsyncSet(uint8_t hsyncAddr, uint8_t hsyncInst, uint16_t vbpNum, uint16_t vfpNum) -{ - lspiVsyncCtrl.hsyncAddr = hsyncAddr; - lspiVsyncCtrl.hsyncInst = hsyncInst; - lspiVsyncCtrl.vbp = vbpNum; - lspi8080Ctrl.vfp = vfpNum; - lcdDrv->ctrl(LSPI_VSYNC_CTRL, 0); - lcdDrv->ctrl(LSPI_8080_CTRL, 0); -} - -void lcdMspiVsyncSet(uint8_t vsyncEnable, uint8_t vsyncInst, uint8_t lspiDiv) -{ - lspiMspiCtrl.mspiVsyncEn = vsyncEnable; - lspiMspiCtrl.mspiInst = vsyncInst; - lspiMspiCtrl.vsyncLineCycle = (40000*70)/(1000*lspiDiv) + 100; - lcdDrv->ctrl(LSPI_MSPI_CTRL, 0); -} - -void lcdCsnHighCycleMin(uint8_t lspiDiv) -{ - lspiCmdAddr.csnHighCycleMin = (500*70)/(1000*lspiDiv) + 10; - lcdDrv->ctrl(LSPI_CTRL_CMD_ADDR, 0); -} -#endif - -void lcdInterfaceType(uint8_t type) -{ -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) - switch(type) - { - case SPI_3W_I: - lspiCtrl.busType = 0; - lspiCtrl.line4 = 0; - break; - case SPI_3W_II: - lspiCtrl.busType = 1; - lspiCtrl.line4 = 0; - break; - case SPI_4W_I: - lspiCtrl.busType = 0; - lspiCtrl.line4 = 1; - break; - case SPI_4W_II: - lspiCtrl.busType = 1; - lspiCtrl.line4 = 1; - break; - default: - lspiCtrl.busType = 1; - lspiCtrl.line4 = 1; - } - -#if (SPI_2_DATA_LANE == 1) - lspiCtrl.data2Lane = 1; -#endif - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - -#else // CHIP 719 - switch(type) - { - case SPI_3W_I: - lspiCmdAddr.busType = 0; - lspiCtrl.line4 = 0; - break; - case SPI_3W_II: - lspiCmdAddr.busType = 1; - lspiCtrl.line4 = 0; - break; - case SPI_4W_I: - lspiCmdAddr.busType = 0; - lspiCtrl.line4 = 1; - break; - case SPI_4W_II: - lspiCmdAddr.busType = 1; - lspiCtrl.line4 = 1; - break; - case MSPI_4W_II: - #if (LCD_INTERFACE_MSPI == 1) - lcdMspiSet(1, 0, 0, DEFAULT_INST); - #endif - break; - case INTERFACE_8080: - // config cpol cpha - *(uint32_t*)0x4d042028 |= (1<<4) | (1<<5); - lspi8080Ctrl.lspi8080En = 1; - break; - default: - lspiCmdAddr.busType = 1; - lspiCtrl.line4 = 1; - } - -#if (SPI_2_DATA_LANE == 1) - lspiCtrl.dspiEn = 1; - lspiCtrl.dspiCfg = 2; -#endif - - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - lcdDrv->ctrl(LSPI_CTRL_CMD_ADDR, 0); - lcdDrv->ctrl(LSPI_8080_CTRL, 0); -#endif -} - -int lspiDefaultCfg(lcdDrvFunc_t *lcd, lcdUspCb cb, uint32_t freq, uint8_t bpp) -{ - lcdDrv->init(); - lcdDrv->powerCtrl(LSPI_POWER_FULL); - - lcdDrv->ctrl(LSPI_CTRL_BUS_SPEED, freq); - lspiCtrl.datSrc = 1; // 0: data from camera; 1: data from memory - - switch (bpp) - { - case 12: // rgb444 - { - lspiCtrl.colorModeIn = 3; // RGB565 - lspiCtrl.colorModeOut = 0; // RGB444 - } - break; - - case 16: // rgb565 - { - lspiCtrl.colorModeIn = 3; // RGB565 - lspiCtrl.colorModeOut = 1; // RGB565 - } - break; - - case 18: // rgb666 - { - lspiCtrl.colorModeIn = 3; // RGB565 - lspiCtrl.colorModeOut = 2; // RGB565 - } - break; - -#if defined TYPE_EC718M - case 24: // rgb888 - { - lspiCtrl.colorModeIn = 4; // RGB888 - lspiCtrl.colorModeOut = 6; // RGB888 - } - break; -#endif - case 1: - break; - - case 2: - break; - - case 8: - break; - - default: - EC_ASSERT(0,0,0,0); - break; - } - - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); -#if defined TYPE_EC718M - lcdDrv->ctrl(LSPI_PRE_PARA0_CTRL, 0); - lcdDrv->ctrl(LSPI_POST_PARA0_CTRL, 0); -#endif - lcdEnable(); - - if(cb) - { - userUspCb = cb; - lspiIntCtrl.lspiRamWrEndEn = 1; - lcdDrv->ctrl(LSPI_CTRL_INT_CTRL, 0); - XIC_SetVector(PXIC0_USP2_IRQn, uspIrqCb); - XIC_EnableIRQ(PXIC0_USP2_IRQn); - } - - lspiDataFmt.wordSize = 31; - lspiDataFmt.txPack = 0; - lspiInfo.frameHeight = lcd->height; // frame input height - lspiInfo.frameWidth = lcd->width; // frame input width - lspiFrameInfoOut.frameHeightOut = lcd->height; // frame output height - lspiFrameInfoOut.frameWidthOut = lcd->width; // frame output width - lcdDrv->ctrl(LSPI_CTRL_DATA_FORMAT, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO_OUT, 0); - return 0; -} - -int lcdDmaTrans(lcdDrvFunc_t *lcd, void *sourceAddress, uint32_t totalLength) -{ - uint32_t res = 0, patch = 0; - int dmaChainCnt = 0, ret = 0; - - if(lcd == NULL || sourceAddress == NULL) - { - EC_ASSERT(0,0,0,0); - } - - res = totalLength; - - if( totalLength % 4) - { - res += (4 - totalLength%4); - } - - // step1: config lspi - lspiDmaCtrl.txDmaReqEn = 1; - lspiDmaCtrl.dmaWorkWaitCycle = 15; - lcdDrv->ctrl(LSPI_CTRL_DMA_CTRL, 0); - lspiCmdCtrl.wrRdn = 1; // 1: wr 0: rd - lspiCmdCtrl.ramWr = 1; // start ramwr -#if (defined TYPE_EC718M) - #if (SPI_2_DATA_LANE == 1) - lspiCmdCtrl.ramWrHaltMode = 0; - #else - lspiCmdCtrl.ramWrHaltMode = 1; // maintain cs as low between cmd and data - #endif -#endif - -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) - uint32_t tmp = 0; - - #if (SPI_2_DATA_LANE == 1) - tmp = res/2; - #endif - - if (tmp >= 0x3ffff) - { - lspiCmdCtrl.dataLen = 0x3ffff; // infinate - } - else - { - #if (SPI_2_DATA_LANE == 1) - lspiCmdCtrl.dataLen = res/2; - #else - lspiCmdCtrl.dataLen = res; - #endif - } -#elif (defined TYPE_EC718M) - if (totalLength >= 0x3fffff) - { - lspiCmdCtrl.dataLen = 0x3fffff; // infinate - } - else - { - #if (SPI_2_DATA_LANE == 1) - lspiCmdCtrl.dataLen = res/2; - #else - if (lcd->bpp == 24) - { - lspiCmdCtrl.dataLen = res/(lcd->bpp/8+1); - } - else - { - lspiCmdCtrl.dataLen = res/(lcd->bpp/8); - } - #endif - } -#endif - - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - - // step2: config DMA - lcdDmaTxCfg.totalLength = DMA_BULK_NUM; - lcdDmaTxCfg.addressIncrement = DMA_ADDRESS_INCREMENT_SOURCE; - lcdDmaTxCfg.targetAddress = (void *)&(LSPI2->TFIFO); - lcdDmaTxCfg.sourceAddress = (void *)sourceAddress; - - patch = DMA_BULK_NUM - res%DMA_BULK_NUM; - dmaChainCnt = (res + patch) / DMA_BULK_NUM; - uint32_t package = DMA_BULK_NUM; - - if (patch % dmaChainCnt == 0) - { - package -= (patch / dmaChainCnt); - lcdDmaTxCfg.totalLength = package; - DMA_buildDescriptorChain(lcdDmaTxDesc, &lcdDmaTxCfg, dmaChainCnt, true, true, true); - ret += dmaChainCnt; - res -= dmaChainCnt * package; - } - else - { - dmaChainCnt -= 1; - res -= dmaChainCnt * DMA_BULK_NUM; - lcdDmaTxCfg.totalLength = res; - DMA_buildDescriptorChain(lcdDmaTxDesc, &lcdDmaTxCfg, 1, false, false, false); - - lcdDmaTxCfg.sourceAddress = (void *)sourceAddress + ret * DMA_BULK_NUM + res; - lcdDmaTxCfg.totalLength = DMA_BULK_NUM; - DMA_buildDescriptorChain(lcdDmaTxDesc+1, &lcdDmaTxCfg, dmaChainCnt, true, true, true); - ret += dmaChainCnt; - } - - //GPIO_pinWrite(0, 1 << 12, 0); - dmaStartStop(true); - return ret; -} - -void lspiFifoWrite(uint32_t data) -{ - lspiDmaCtrl.txDmaReqEn = 0; - lcdDrv->ctrl(LSPI_CTRL_DMA_CTRL, 0); - - lspiCmdCtrl.wrRdn = 1; // 1: wr 0: rd - lspiCmdCtrl.ramWr = 1; - lspiCmdCtrl.dataLen = 2; - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - LSPI2->STAS |= (1<<31); - - if(lspiDataFmt.txFifoEndianMode) - { - LSPI2->TFIFO = (data >> 16)|(data << 16); - } - else - { - LSPI2->TFIFO = data; - } -} - -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) -static void leftShift1Bit(uint8_t *data, uint8_t dataLen) -{ - #define READ_REG_MSB 0x80 - #define READ_REG_LSB 0x01 - - for (int i = 1; i <= dataLen; i++) - { - data[i-1] = data[i-1] << 1; - - if (i < dataLen && data[i] & READ_REG_MSB) - { - data[i-1] = data[i-1] | READ_REG_LSB; - } - } -} -#endif - -// dataLen includes dummyLen -void lspiReadReg(uint8_t addr, uint8_t *data, uint16_t dataLen, uint8_t dummyCycleLen) -{ - if( data == NULL) return; - -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) - uint8_t index=0, remainder=0, outputLen=dataLen, tmp1[20]={0}; - - #if (LCD_AXS15231_ENABLE == 1) - PadConfig_t config1; - // config gpio36 - PAD_getDefaultConfig(&config1); - config1.mux = RTE_USP2_DIN_FUNC; - PAD_setPinConfig(RTE_USP2_DIN_PAD_ADDR, &config1); - lspiCtrl.busType = 1; // 0: type1, sda inout; 1:type2, sda input, sdo output - #endif - - lspiCmdAddr.addr = addr; - lspiCmdCtrl.wrRdn = 0; // 1: wr 0: rd - lspiCmdCtrl.dataLen = dataLen; - lcdDrv->ctrl(LSPI_CTRL_CMD_ADDR, 0); - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - while (!LSPI2->LSPI_STAT); - - for (int i = 0; i < dataLen; i++) - { - tmp1[i] = LSPI2->RFIFO; - } - - if (dummyCycleLen > 0) - { - index = dummyCycleLen / 8; - remainder = dummyCycleLen % 8; - outputLen = dataLen - (index + ((remainder > 0)? 1 : 0)); - - memcpy(&tmp1[0], &tmp1[index], outputLen + ((remainder > 0)? 1 : 0)); - - for (int j = 0; j < remainder; j++) - { - leftShift1Bit(tmp1, outputLen+1); - } - } - - memcpy(data, tmp1, outputLen); - -#elif (defined TYPE_EC718M) - uint32_t dummyRead; - - if (LCD_INTERFACE == MSPI_4W_II) - { - #if (LCD_INTERFACE_MSPI == 1) - // read test - lcdMspiSet(1, 0, 0, 0x03); // 1wire read: 0x03 - - // config gpio36 - //PadConfig_t config; - PadConfig_t config2; - PAD_getDefaultConfig(&config2); - config2.mux = RTE_USP2_SDI_FUNC; - PAD_setPinConfig(RTE_USP2_SDI_PAD_ADDR, &config2); - - lspiCmdAddr.addr = addr; - //lspiCmdAddr.busType = 1; - lspiCmdCtrl.wrRdn = 0; // 1: wr 0: rd - lspiCmdCtrl.rdatDummyCycle = dummyCycleLen; - lspiCmdCtrl.dataLen = 1; - lcdDrv->ctrl(LSPI_CTRL_CMD_ADDR, 0); - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - - while ((LSPI2->LSPI_STAT & LSPI_STATS_RX_FIFO_LEVEL_Msk) == 0); - - for (int j = 0; j < dummyCycleLen/8; j++) - { - dummyRead = LSPI2->RFIFO; - (void)dummyRead; - } - - for (int i = 0; i < dataLen; i++) - { - data[i] = LSPI2->RFIFO; - } - #endif - } - else - { - lspiCmdAddr.addr = addr; - lspiCmdCtrl.wrRdn = 0; // 1: wr 0: rd - lspiCmdCtrl.rdatDummyCycle = dummyCycleLen; - lspiCmdCtrl.dataLen = dataLen; - lcdDrv->ctrl(LSPI_CTRL_CMD_ADDR, 0); - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - while (!LSPI2->LSPI_STAT); - - for (int j = 0; j < dummyCycleLen/8; j++) - { - dummyRead = LSPI2->RFIFO; - (void)dummyRead; - } - - for (int i = 0; i < dataLen; i++) - { - data[i] = LSPI2->RFIFO; - } - } -#endif -} - -void lspiReadRam(uint32_t *data, uint32_t dataLen) -{ - if (data == NULL) return; - -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) - - lspiCmdAddr.addr = 0x3E; // RDMEMC - lspiCmdCtrl.wrRdn = 0; - lspiCmdCtrl.rdatDummyCycle = 1; - lspiCmdCtrl.dataLen = dataLen+1; - lcdDrv->ctrl(LSPI_CTRL_CMD_ADDR, 0); - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - while (!LSPI2->LSPI_STAT); - uint32_t dummy = LSPI2->RFIFO; - (void)dummy; - for (int i = 0; i < dataLen; i++) - { - data[i] = LSPI2->RFIFO; - } -#elif (defined TYPE_EC718M) - -#endif -} - -void lcdWriteData(uint8_t data) -{ - lcdDrv->prepareSend(data); -} - -void lcdWriteCmd(uint8_t cmd) -{ - lspiCmdAddr.addr = cmd; - lcdDrv->ctrl(LSPI_CTRL_CMD_ADDR, 0); -} - -void lspiCmdSend(uint8_t cmd, uint8_t *data, uint8_t dataLen) -{ - lspiCmdAddr.addr = cmd; - lcdDrv->ctrl(LSPI_CTRL_CMD_ADDR, 0); - - for (uint8_t i = 0; i < dataLen; i++) - { - lcdDrv->prepareSend(data[i]); - } - lcdDrv->send(NULL, 0); -} - -void lcdRst(uint32_t highMs, uint32_t lowMs) -{ - LCD_RST_LOW; - lcdDrvDelay(lowMs); - LCD_RST_HIGH; - lcdDrvDelay(highMs); -} - - -#if (BK_USE_GPIO == 1) -void lcdGpioBkLevel(uint8_t level) -{ - if (level > 0) - { - GPIO_pinWrite(LCD_BK_GPIO_INSTANCE, 1 << LCD_BK_GPIO_PIN, 1 << LCD_BK_GPIO_PIN); - - } - else - { - GPIO_pinWrite(LCD_BK_GPIO_INSTANCE, 1 << LCD_BK_GPIO_PIN, 0); - } -} -#endif - -#if (BK_USE_PWM == 1) -AP_PLAT_COMMON_BSS volatile static uint32_t gpwmCnt = 0; -AP_PLAT_COMMON_BSS static bool isPwmOn = false; - -uint32_t millis(void) -{ - return gpwmCnt; -} - -static void pwmISR(void) -{ - if (TIMER_getInterruptFlags(LCD_PWM_INSTANCE) & TIMER_MATCH0_INTERRUPT_FLAG) - { - TIMER_clearInterruptFlags(LCD_PWM_INSTANCE, TIMER_MATCH0_INTERRUPT_FLAG); - gpwmCnt++; - - #ifdef FEATURE_SUBSYS_GUI_LVGL_ENABLE - lv_tick_inc(1); - #elif FEATURE_SUBSYS_GUI_LVGL9_ENABLE - lv_tick_inc(1); - #endif - } -} - -// level: 0~100 -uint8_t lcdPwmBkLevel(uint8_t level) -{ - if (level == 0) - { - TIMER_stop(LCD_PWM_INSTANCE); - isPwmOn = false; - goto END; - } - - if (level > 100) - { - level = 100; - } - - // turn on TIMER first - if (!isPwmOn) - { - TIMER_start(LCD_PWM_INSTANCE); - isPwmOn = true; - } - - TIMER_updatePwmDutyCycle(LCD_PWM_INSTANCE, level); - -END: - return level; -} - -void lcdPwmBkInit(void) -{ - PadConfig_t config; - PAD_getDefaultConfig(&config); - config.mux = LCD_PWM_PAD_ALT_SEL; - config.driveStrength = PAD_DRIVE_STRENGTH_LOW; - PAD_setPinConfig(LCD_PWM_OUT_PAD, &config); - CLOCK_setClockSrc(LCD_PWM_CLOCK_ID, LCD_PWM_CLOCK_SOURCE); - CLOCK_setClockDiv(LCD_PWM_CLOCK_ID, 1); - TIMER_driverInit(); - TimerPwmConfig_t gLcdPwmConfig; - gLcdPwmConfig.pwmFreq_HZ = 1000; - gLcdPwmConfig.srcClock_HZ = GPR_getClockFreq(LCD_PWM_CLOCK_ID); - gLcdPwmConfig.stopOption = TIMER_PWM_STOP_LOW; - gLcdPwmConfig.dutyCyclePercent = 0; - - TIMER_setupPwm(LCD_PWM_INSTANCE, &gLcdPwmConfig); - - TIMER_interruptConfig(LCD_PWM_INSTANCE, TIMER_MATCH0_INTERRUPT, TIMER_INTERRUPT_LEVEL); - TIMER_interruptConfig(LCD_PWM_INSTANCE, TIMER_MATCH1_INTERRUPT, TIMER_INTERRUPT_DISABLE); - TIMER_interruptConfig(LCD_PWM_INSTANCE, TIMER_MATCH2_INTERRUPT, TIMER_INTERRUPT_DISABLE); - - XIC_SetVector(LCD_PWM_INSTANCE_IRQ, pwmISR); - XIC_EnableIRQ(LCD_PWM_INSTANCE_IRQ); -} - -void lcdPwmBkDeInit(void) -{ - TIMER_stop(LCD_PWM_INSTANCE); - TIMER_deInit(LCD_PWM_INSTANCE); -} -#else -uint32_t millis(void) -{ - return osKernelGetTickCount(); -} - -#endif - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/lcd/lcdDev/lcdDev_15231.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/lcd/lcdDev/lcdDev_15231.c deleted file mode 100644 index 2d89594..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/lcd/lcdDev/lcdDev_15231.c +++ /dev/null @@ -1,483 +0,0 @@ -#include "bsp.h" -#include "lcdDrv.h" -#include "lcdComm.h" -#include "lcdDev_15231.h" -#include "sctdef.h" - -#define LCD_MADCTL 0x36 - - -extern lspiDrvInterface_t *lcdDrv; -//static uint8_t s_MADCTL = 0x0; -AP_PLAT_COMMON_BSS static uint16_t previewWidth; -AP_PLAT_COMMON_BSS static uint16_t previewHeight; -AP_PLAT_COMMON_BSS static uint32_t fillLen; -extern lcdIoCtrl_t lcdIoCtrlParam; - -AP_PLAT_COMMON_DATA static initLine_t initTable15231[] = -{ -#if 1 - {0xBB, 8, {0x00,0x00,0x00,0x00,0x00,0x00,0x5A,0xA5}}, - {0xA0, 17, {0xC0,0x10,0x00,0x02,0x00,0x00,0x64,0x3F,0x20,0x05,0x3F,0x3F,0x00,0x00,0x00,0x00,0x00}}, - {0xA2, 31, {0x31,0x3C,0x29,0x14,0xFF,0xA6,0xCB,0xE0,0x40,0x19,0x80,0x80,0x80,0x20,0xf9,0x10,0x02,0xff,0xff,0xF0,0x90,0x01,0x32,0xA0,0x91,0x40,0x20,0x7F,0xFF,0x00,0x14}}, - {0xD0, 30, {0xE0,0x40,0x51,0x24,0x08,0x05,0x10,0x01,0x04,0x14,0xC2,0x42,0x22,0x22,0xAA,0x03,0x10,0x12,0x60,0x14,0x1E,0x51,0x15,0x00,0xFF,0x10,0x00,0x03,0x3D,0x12}}, - {0xA3, 22, {0xA0,0x06,0xAa,0x00,0x08,0x02,0x0A,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x55,0x55}}, - {0xA4, 16, {0x85,0x85,0x95,0x82,0xAF,0xED,0xED,0x80,0x10,0x30,0x40,0x40,0x20,0x50,0x60,0x35}}, - {0xC1, 30, {0x33,0x04,0x02,0x02,0x71,0x05,0x27,0x55,0x02,0x00,0x41,0x00,0x53,0xFF,0xFF,0xFF,0x4F,0x52,0x00,0x4F,0x52,0x00,0x45,0x3B,0x0B,0x02,0x0D,0x00,0xFF,0x40}}, - {0xC3, 11, {0x00,0x00,0x00,0x50,0x03,0x00,0x00,0x00,0x01,0x80,0x01}}, - {0xC4, 29, {0x00,0x24,0x33,0x80,0x00,0xea,0x64,0x32,0xC8,0x64,0xC8,0x32,0x90,0x90,0x11,0x06,0xDC,0xFA,0x00,0x00,0x80,0xFE,0x10,0x10,0x00,0x0A,0x0A,0x44,0x50}}, - {0xC5, 23, {0x18,0x00,0x00,0x03,0xFE,0x50,0x38,0x20,0x30,0x10,0x88,0xDE,0x0D,0x08,0x0F,0x0F,0x01,0x50,0x38,0x20,0x10,0x10,0x00}}, - {0xC6, 20, {0x05,0x0A,0x05,0x0A,0x00,0xE0,0x2E,0x0B,0x12,0x22,0x12,0x22,0x01,0x03,0x00,0x02,0x6A,0x18,0xC8,0x22}}, - {0xC7, 27, {0x50,0x32,0x28,0x00,0xa2,0x80,0x8f,0x00,0x80,0xff,0x07,0x11,0x9c,0x67,0xff,0x28,0x0c,0x0d,0x0e,0x0f,0x01,0x01,0x01,0x01,0x3F,0x07,0xFF}}, - {0xC9, 4, {0x33,0x44,0x44,0x01}}, - {0xCF, 27, {0x2C,0x1E,0x88,0x58,0x13,0x18,0x56,0x18,0x1E,0x68,0x88,0x00,0x65,0x09,0x22,0xC4,0x0C,0x77,0x22,0x44,0xAA,0x55,0x08,0x08,0x12,0xA0,0x08}}, - {0xD5, 30, {0x38,0x38,0x89,0x01,0x35,0x04,0x92,0x6F,0x04,0x92,0x6F,0x04,0x08,0x6A,0x04,0x46,0x03,0x03,0x03,0x03,0x00,0x01,0x03,0x00,0xE0,0x51,0xa1,0x00,0x00,0x00}}, - {0xD6, 30, {0x10,0x32,0x54,0x76,0x98,0xBA,0xDC,0xFE,0x93,0x00,0x01,0x83,0x07,0x07,0x00,0x07,0x07,0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x00,0x84,0x00,0x20,0x01,0x00}}, - {0xD7, 19, {0x03,0x01,0x0b,0x09,0x0f,0x0d,0x1E,0x1F,0x18,0x1d,0x1f,0x19,0x38,0x38,0x04,0x00,0x1d,0x40,0x1F}}, - {0xD8, 12, {0x02,0x00,0x0a,0x08,0x0e,0x0c,0x1E,0x1F,0x18,0x1d,0x1f,0x19}}, - {0xD9, 12, {0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F}}, - {0xDD, 12, {0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F}}, - {0xDF, 8, {0x44,0x73,0x4B,0x69,0x00,0x0A,0x02,0x90}}, - {0xE0, 17, {0x3B,0x00,0x0f,0x14,0x0c,0x03,0x11,0x26,0x4b,0x21,0x0d,0x36,0x13,0x2a,0x2f,0x28,0x0D}}, - {0xE1, 17, {0x37,0x00,0x0f,0x14,0x0b,0x03,0x11,0x26,0x4b,0x21,0x0d,0x36,0x13,0x2a,0x2D,0x28,0x0F}}, - {0xE2, 17, {0x3B,0x07,0x12,0x18,0x0E,0x0D,0x17,0x35,0x44,0x32,0x0C,0x14,0x14,0x36,0x3A,0x0F,0x0D}}, - {0xE3, 17, {0x37,0x07,0x12,0x18,0x0E,0x0D,0x17,0x35,0x44,0x32,0x0C,0x14,0x14,0x36,0x32,0x2F,0x0F}}, - {0xE4, 17, {0x3B,0x07,0x12,0x18,0x0E,0x0D,0x17,0x39,0x44,0x2E,0x0C,0x14,0x14,0x36,0x3A,0x2F,0x0D}}, - {0xE5, 17, {0x37,0x07,0x12,0x18,0x0E,0x0D,0x17,0x39,0x44,0x2E,0x0C,0x14,0x14,0x36,0x3A,0x2F,0x0F}}, - {0xBB, 8, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - {0x11, 1, {0}}, - {0x29, 1, {0}}, -#endif - {0xff, 1, {120}}, - - //{0xbb, 8, {0x00,0x00,0x00,0x00,0x00,0x00,0x5a,0xa5}}, - //{0xa0, 1, {0x29}}, -}; - -/* - sx: start x - sy: start y - ex: end x - ey: end y -*/ -static uint32_t axs15231AddrSet(lcdDrvFunc_t *lcd, uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey) -{ - uint8_t set_x_cmd[] = {sx>>8, sx, ex>>8, ex}; - lspiCmdSend(0x2A, set_x_cmd, sizeof(set_x_cmd)); - previewWidth = ex - sx + 1; - - uint8_t set_y_cmd[] = {sy>>8, sy, ey>>8, ey}; - lspiCmdSend(0x2B, set_y_cmd, sizeof(set_y_cmd)); - previewHeight = ey - sy + 1; - - lcdWriteCmd(0x2C); - - fillLen = (ey-sy+1) * (ex-sx+1) * (AXS15231_BPP/8); - return fillLen; -} - - -void axs15231HandleUspIrq4Cam(lcdDrvFunc_t *lcd) -{ - lspiCtrl.enable = 0; - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - - LSPI2->DMACTL |= 1<<25; // tx fifo - - lspiCtrl.enable = 1; - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - - lspiCmdCtrl.wrRdn = 1; // 1: wr 0: rd - lspiCmdCtrl.ramWr = 1; // start ramwr -#if (SPI_2_DATA_LANE == 1) - lspiCmdCtrl.dataLen = fillLen/2; // 2 datalane is pixel num -#else - lspiCmdCtrl.dataLen = AXS15231_WIDTH*AXS15231_HEIGHT*2; // pixel * bpp/8 -#endif - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); -} - -void axs15231HandleUspIrq4Fill(lcdDrvFunc_t *lcd) -{ -} - - -static int axs15231Init(lcdDrvFunc_t *lcd, void* uspCb, void *dmaCb, uint32_t freq, uint8_t bpp) -{ - lcdIoInit(true); - dmaInit(dmaCb); - lspiDefaultCfg(lcd, uspCb, freq, bpp); - lcdRst(100, 100); - lcdInterfaceType(AXS15231_INTERFACE); - lcdRegInit(0x15231); - - #if 0 // test read id - uint8_t data = 0x29; - uint32_t read1523113[40] = {0x1, 0x2, 0x3}; - lspiReadReg(0xda, read1523113, 3, 0); - - uint32_t read15231[5] = {0x1, 0x2, 0x3}; - - lspiCmdSend(0xa0, &data, 1); - lspiReadReg(0x0c, read15231, 4, 0); - - uint32_t read1523112[5] = {0x1, 0x2, 0x3}; - lspiCmdSend(0xa0, &data, 1); - lspiReadReg(0x52, read1523112, 5, 0); - #endif - return 0; -} - -#if 0 -static int axs15231Direction(lcdDrvFunc_t *lcd,DisDirection_e Dir) -{ - switch(Dir) - { - case DIS_MIRROR_X: - s_MADCTL ^= BIT(6); - break; - case DIS_MIRROR_Y: - s_MADCTL ^= BIT(7); - break; - case DIS_SWAP_XY: - s_MADCTL ^= 0xC0; - break; - case DIS_DIR_LRTB: - s_MADCTL &= ~(BIT(2)); - s_MADCTL &= ~(BIT(4)); - s_MADCTL &= ~(BIT(5)); - break; - case DIS_DIR_LRBT: - s_MADCTL &= ~(BIT(2)); - s_MADCTL &= ~(BIT(5)); - s_MADCTL |= BIT(4); - break; - case DIS_DIR_RLTB: - s_MADCTL &= ~(BIT(4)); - s_MADCTL &= ~(BIT(5)); - s_MADCTL |= BIT(2); - break; - case DIS_DIR_RLBT: - s_MADCTL &= ~(BIT(5)); - s_MADCTL |= BIT(4); - s_MADCTL |= BIT(2); - break; - case DIS_DIR_TBLR: - s_MADCTL &= ~(BIT(2)); - s_MADCTL &= ~(BIT(4)); - s_MADCTL |= BIT(5); - break; - case DIS_DIR_BTLR: - s_MADCTL &= ~(BIT(2)); - s_MADCTL |= BIT(4); - s_MADCTL |= BIT(5); - break; - case DIS_DIR_TBRL: - s_MADCTL &= ~(BIT(4)); - s_MADCTL |= BIT(2); - s_MADCTL |= BIT(5); - break; - case DIS_DIR_BTRL: - s_MADCTL |= BIT(2); - s_MADCTL |= BIT(4); - s_MADCTL |= BIT(5); - break; - } - - lspiCmdSend(LCD_MADCTL, &s_MADCTL, 1); - return s_MADCTL; -} -#endif - -static void axs15231BackLight(lcdDrvFunc_t *lcd, uint8_t level) -{ -#if (BK_USE_GPIO == 1) - lcdGpioBkLevel(level); -#elif (BK_USE_PWM == 1) - lcdPwmBkLevel(level); -#endif -} - -static void axs15231PowerOnOff(lcdDrvFunc_t *lcd, lcdPowerOnOff_e onoff) -{ -#if (ENABLE_LDO == 1) - if (onoff == LCD_POWER_ON) - { - // power on - GPIO_pinWrite(LCD_EN_GPIO_INSTANCE, 1 << LCD_EN_GPIO_PIN, 1 << LCD_EN_GPIO_PIN); - } - else - { - // power off - GPIO_pinWrite(LCD_EN_GPIO_INSTANCE, 1 << LCD_EN_GPIO_PIN, 0); - } -#endif -} - - - - -static void axs15231StartStop(lcdDrvFunc_t *lcd, bool startOrStop) -{ - dmaStartStop(startOrStop); -} - -static int axs15231Fill(lcdDrvFunc_t *lcd, uint32_t fillLen, uint8_t *buf) -{ - return lcdDmaTrans(lcd, buf, fillLen); -} - -static void axs15231DrawPoint(lcdDrvFunc_t *lcd, uint16_t x, uint16_t y, uint32_t dataWrite) -{ - axs15231AddrSet(lcd, x, y, x, y); - lspiFifoWrite(dataWrite); - return; -} - -static void axs15231RegisterUspIrqCb(lcdDrvFunc_t *lcd, uspCbRole_e who) -{ - (who == cbForCam)? (lcd->uspIrq4CamCb = axs15231HandleUspIrq4Cam) : (lcd->uspIrq4FillCb = axs15231HandleUspIrq4Fill); -} - -static void axs15231UnRegisterUspIrqCb(lcdDrvFunc_t *lcd, uspCbRole_e who) -{ - (who == cbForCam)? (lcd->uspIrq4CamCb = NULL) : (lcd->uspIrq4FillCb = NULL); -} - - -static void axs15231CamPreviewStartStop(lcdDrvFunc_t *lcd, camPreviewStartStop_e previewStartStop) -{ - uint8_t divVal = 0; - uint16_t divRemain = 0; - -#if (defined TYPE_EC718M) // chip 719 - if (previewStartStop) - { - axs15231UnRegisterUspIrqCb(lcd, cbForFill); - axs15231RegisterUspIrqCb(lcd, cbForCam); - - lspiDataFmt.wordSize = 7; - lspiDataFmt.txPack = 0; - lcdDrv->ctrl(LSPI_CTRL_DATA_FORMAT, 0); - - lspiInfo.frameHeight = PIC_SRC_HEIGHT; // frame input height - lspiInfo.frameWidth = PIC_SRC_WIDTH; // frame input width - lspiFrameInfoOut.frameHeightOut = previewHeight; // frame output height - lspiFrameInfoOut.frameWidthOut = previewWidth; // frame output width - - if ((previewHeight > PIC_SRC_HEIGHT) || (previewWidth > PIC_SRC_WIDTH)) - { - EC_ASSERT(0,0,0,0); - } - - if (lcdIoCtrlParam.previewModeSel == CAM_PREVIEW_SET_AUTO) - { - divVal = lspiInfo.frameHeight / lspiFrameInfoOut.frameHeightOut; - divRemain = lspiInfo.frameHeight % lspiFrameInfoOut.frameHeightOut; - lspiTailorInfo0.tailorTop = divRemain/2; - lspiTailorInfo0.tailorBottom = divRemain/2; - EC_ASSERT(divVal, lspiInfo.frameHeight, lspiFrameInfoOut.frameHeightOut, 0); - lspiScaleInfo.colScaleFrac = (divVal==1)? 0 : (128/divVal); - - divVal = lspiInfo.frameWidth / lspiFrameInfoOut.frameWidthOut; - divRemain = lspiInfo.frameWidth % lspiFrameInfoOut.frameWidthOut; - lspiTailorInfo.tailorLeft = divRemain/2; - lspiTailorInfo.tailorRight = divRemain/2; - EC_ASSERT(divVal, lspiInfo.frameWidth, lspiFrameInfoOut.frameWidthOut, 0); - lspiScaleInfo.rowScaleFrac = (divVal==1)? 0 : (128/divVal); - } - else - { - lspiScaleInfo.rowScaleFrac = lcdIoCtrlParam.previewManulSet.rowScaleFrac; - lspiScaleInfo.colScaleFrac = lcdIoCtrlParam.previewManulSet.colScaleFrac; - lspiTailorInfo.tailorLeft = lcdIoCtrlParam.previewManulSet.tailorLeft; - lspiTailorInfo.tailorRight = lcdIoCtrlParam.previewManulSet.tailorRight; - lspiTailorInfo0.tailorBottom = lcdIoCtrlParam.previewManulSet.tailorBottom; - lspiTailorInfo0.tailorTop = lcdIoCtrlParam.previewManulSet.tailorTop; - } - - lcdDrv->ctrl(LSPI_CTRL_SCALE_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_TAILOR_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO_OUT, 0); - - lspiCtrl.datSrc = 0; // 0: data from camera; 1: data from memory - lspiCtrl.colorModeIn = 0; // YUV422, every item is 8bit - lspiCtrl.colorModeOut = 1; // RGB565 - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - - lspiCmdCtrl.wrRdn = 1; // 1: wr 0: rd - lspiCmdCtrl.ramWr = 1; // start ramwr - #if (SPI_2_DATA_LANE == 1) - lspiCmdCtrl.dataLen = fillLen/2; // 2 datalane is pixel num - #else - lspiCmdCtrl.dataLen = AXS15231_WIDTH*AXS15231_HEIGHT*2; // pixel * bpp/8 - #endif - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - } -#else // chip 718 - if (previewStartStop) - { - axs15231UnRegisterUspIrqCb(lcd, cbForFill); - axs15231RegisterUspIrqCb(lcd, cbForCam); - - lspiDataFmt.wordSize = 7; - lspiDataFmt.txPack = 0; - lcdDrv->ctrl(LSPI_CTRL_DATA_FORMAT, 0); - - lspiInfo.frameHeight = PIC_SRC_HEIGHT; // frame input height - lspiInfo.frameWidth = PIC_SRC_WIDTH; // frame input width - lspiFrameInfoOut.frameHeightOut = previewHeight; // frame output height - lspiFrameInfoOut.frameWidthOut = previewWidth; // frame output width - - if ((previewHeight > PIC_SRC_HEIGHT) || (previewWidth > PIC_SRC_WIDTH)) - { - EC_ASSERT(0,0,0,0); - } - - if (lcdIoCtrlParam.previewModeSel == CAM_PREVIEW_SET_AUTO) - { - divVal = lspiInfo.frameHeight / lspiFrameInfoOut.frameHeightOut; - divRemain = lspiInfo.frameHeight % lspiFrameInfoOut.frameHeightOut; - lspiTailorInfo0.tailorTop = divRemain/2; - lspiTailorInfo0.tailorBottom = divRemain/2; - EC_ASSERT(divVal, lspiInfo.frameHeight, lspiFrameInfoOut.frameHeightOut, 0); - lspiScaleInfo.colScaleFrac = (divVal==1)? 0 : (128/divVal); - - divVal = lspiInfo.frameWidth / lspiFrameInfoOut.frameWidthOut; - divRemain = lspiInfo.frameWidth % lspiFrameInfoOut.frameWidthOut; - lspiTailorInfo.tailorLeft = divRemain/2; - lspiTailorInfo.tailorRight = divRemain/2; - EC_ASSERT(divVal, lspiInfo.frameWidth, lspiFrameInfoOut.frameWidthOut, 0); - lspiScaleInfo.rowScaleFrac = (divVal==1)? 0 : (128/divVal); - } - else - { - lspiScaleInfo.rowScaleFrac = lcdIoCtrlParam.previewManulSet.rowScaleFrac; - lspiScaleInfo.colScaleFrac = lcdIoCtrlParam.previewManulSet.colScaleFrac; - lspiTailorInfo.tailorLeft = lcdIoCtrlParam.previewManulSet.tailorLeft; - lspiTailorInfo.tailorRight = lcdIoCtrlParam.previewManulSet.tailorRight; - lspiTailorInfo0.tailorBottom = lcdIoCtrlParam.previewManulSet.tailorBottom; - lspiTailorInfo0.tailorTop = lcdIoCtrlParam.previewManulSet.tailorTop; - } - - lcdDrv->ctrl(LSPI_CTRL_SCALE_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_TAILOR_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO_OUT, 0); - - lspiCtrl.datSrc = 0; // 0: data from camera; 1: data from memory - lspiCtrl.colorModeIn = 0; // YUV422, every item is 8bit - lspiCtrl.colorModeOut = 1; // RGB565 - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - - lspiCmdCtrl.wrRdn = 1; // 1: wr 0: rd - lspiCmdCtrl.ramWr = 1; // start ramwr -#if (SPI_2_DATA_LANE == 1) - lspiCmdCtrl.dataLen = fillLen/2; // 2 datalane is pixel num -#else - lspiCmdCtrl.dataLen = AXS15231_WIDTH*AXS15231_HEIGHT*2; // pixel * bpp/8 -#endif - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - } -#endif - else - { - axs15231UnRegisterUspIrqCb(lcd, cbForCam); - axs15231RegisterUspIrqCb(lcd, cbForFill); - - lspiDmaCtrl.txDmaReqEn = 0; - lspiDataFmt.wordSize = 31; - lspiDataFmt.txPack = 0; - lspiInfo.frameHeight = lcd->height; // frame input height - lspiInfo.frameWidth = lcd->width; // frame input width - lspiFrameInfoOut.frameHeightOut = lcd->height; // frame output height - lspiFrameInfoOut.frameWidthOut = lcd->width; // frame output width - lspiCtrl.colorModeIn = 3; // rgb565 - lspiCtrl.colorModeOut = 1; // rgb565 - lspiCtrl.datSrc = 1; // 0: data from camera; 1: data from memory - lspiScaleInfo.rowScaleFrac = 0; - lspiScaleInfo.colScaleFrac = 0; - lspiTailorInfo.tailorLeft = 0; // frame output height - lspiTailorInfo.tailorRight = 0; // frame output width - lspiTailorInfo0.tailorBottom = 0; - lspiTailorInfo0.tailorTop = 0; - lcdDrv->ctrl(LSPI_CTRL_SCALE_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_TAILOR_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - lcdDrv->ctrl(LSPI_CTRL_DATA_FORMAT, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_DMA_CTRL, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO_OUT, 0); - lcdDrv->ctrl(LSPI_CTRL_TAILOR_INFO0, 0); - - // before send first cmd/data to lcd, clear unnessary status - if (((LSPI2->STAS >> 27)& 0x1) > 0) - { - LSPI2->STAS |= 1<<27; - } - - if (((LSPI2->STAS >> 28)& 0x1) > 0) - { - LSPI2->STAS |= 1<<28; - } - -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) - if (((LSPI2->STAS >> 13)& 0x3f) > 0) -#else // 719 - if (((LSPI2->LSPI_STAT >> 8)& 0x3f) > 0) -#endif - { - LSPI2->DMACTL |= 1<<25; - } - - LSPI2->DMACTL |= 1<<24; // clear rx fifo - - // write first dummy cmd to lcd. It's nessary to clear lspi fifo - lcdWriteCmd(0xff); - lcdWriteData(0x00); - lcdDrv->send(NULL, 0); - -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) - if (((LSPI2->STAS >> 13)& 0x3f) > 0) -#else // 719 - if (((LSPI2->LSPI_STAT >> 8)& 0x3f) > 0) -#endif - { - LSPI2->DMACTL |= 1<<25; - } - } -} - -static int axs15231Close(lcdDrvFunc_t *lcd) -{ - return 0; -} - -AP_PLAT_COMMON_DATA lcdDrvFunc_t axs15231Drv = -{ - .id = 0x15231, - .width = AXS15231_WIDTH, - .height = AXS15231_HEIGHT, - .freq = AXS15231_FREQ, - .bpp = AXS15231_BPP, - .initRegTbl = initTable15231, - .initRegTblLen = sizeof(initTable15231)/sizeof(initLine_t), - .dir = 0, - - .init = axs15231Init, - .drawPoint = axs15231DrawPoint, - .setWindow = axs15231AddrSet, - .fill = axs15231Fill, - .backLight = axs15231BackLight, - .powerOnOff = axs15231PowerOnOff, - .startStop = axs15231StartStop, - .startStopPreview = axs15231CamPreviewStartStop, - .uspIrq4CamCb = NULL, - .uspIrq4FillCb = NULL, - .registerUspIrqCb = axs15231RegisterUspIrqCb, - .unregisterUspIrqCb = axs15231UnRegisterUspIrqCb, - .direction = NULL, - .close = axs15231Close, -}; - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/lcd/lcdDev/lcdDev_5300.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/lcd/lcdDev/lcdDev_5300.c deleted file mode 100644 index 8d2d63f..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/lcd/lcdDev/lcdDev_5300.c +++ /dev/null @@ -1,324 +0,0 @@ -#include "bsp.h" -#include "lcdDrv.h" -#include "lcdComm.h" -#include "lcdDev_5300.h" -#include "sctdef.h" - -extern lspiDrvInterface_t *lcdDrv; -AP_PLAT_COMMON_BSS static uint8_t co5300SetXCmd[4] = {0}; -AP_PLAT_COMMON_BSS static uint8_t co5300SetYCmd[4] = {0}; - -#define PRE_CMD_ENABLE 0 -#define TEST_IRQ_NUM 1 - - -static const initLine_t initTable5300[] = -{ - {0xfe, 0, {}}, - {0xc4, 1, {0x80}}, -#if (CO5300_BPP == 16) - {0x3a, 1, {0x55}}, // rgb565 -#elif (CO5300_BPP == 18) - {0x3a, 1, {0x6}}, // rgb666 -#elif (CO5300_BPP == 24) - {0x3a, 1, {0x77}}, // rgb888 -#endif - {0xff, 1, {20}}, - {0x35, 1, {0x00}}, - {0xff, 1, {20}}, - {0x53, 1, {0x20}}, - {0xff, 1, {20}}, - {0x51, 1, {0xff}}, - {0xff, 1, {20}}, - {0x63, 1, {0xff}}, - {0xff, 1, {20}}, - {0x2a, 4, {0x0, 0x0a, 0x01, 0xd5}}, - {0xff, 1, {20}}, - {0x2b, 4, {0x0, 0x0, 0x01, 0xcb}}, - {0xff, 1, {20}}, - {0x11, 0, {}}, - {0xff, 1, {60}}, - {0x29, 0, {}}, -}; - -void co5300HandleUspIrq4Cam(lcdDrvFunc_t *lcd) -{ -#if (PRE_CMD_ENABLE) - LSPI2->STAS |= (1<<13); -#endif - -#if (!PRE_CMD_ENABLE) - lspiCtrl.enable = 0; - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - - LSPI2->DMACTL |= 1<<25; // tx fifo - - lspiCtrl.enable = 1; - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - - lspiCmdCtrl.wrRdn = 1; // 1: wr 0: rd - lspiCmdCtrl.ramWr = 1; // start ramwr - lspiCmdCtrl.ramWrHaltMode = 1; // maintain cs as low between cmd and data - lspiCmdCtrl.dataLen = LCD_WIDTH*LCD_HEIGHT; // infinite data, used in camera to lspi - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - - if (LSPI2->STAS & LSPI_STATS_TX_FIFO_LEVEL_Msk) - { - printf("tx error"); - } - - if ((LSPI2->STAS & 1<<1) != 0) - { - printf("tx overflow"); - } -#endif -} - -void co5300HandleUspIrq4Fill(lcdDrvFunc_t *lcd) -{ - //GPIO_pinWrite(0, 1 << 3, 0); - //GPIO_pinWrite(0, 1 << 3, 1 << 3); - - printf("enter fill\n"); -} - - -static int co5300Init(lcdDrvFunc_t *lcd, void* uspCb, void *dmaCb, uint32_t freq, uint8_t bpp) -{ - lcdIoInit(false); - lcdRst(200, 200); - dmaInit(dmaCb); - lspiDefaultCfg(lcd, uspCb, freq, bpp); - lcdInterfaceType(CO5300_INTERFACE); - lcdRegInit(0x5300); - -#if (TEST_IRQ_NUM) - lspiIntCtrl.ramWrIntCtrl = 1; - lspiIntCtrl.ramWrIntCtrlEn = 1; -#endif - lcdDrv->ctrl(LSPI_CTRL_INT_CTRL, 0); - - - #if 0 // test read id - uint32_t read5300[3] = {0}; - lspiReadReg(0xda, read5300, 1, 0); - lspiReadReg(0xdb, read5300+1, 1, 0); - lspiReadReg(0xdc, read5300+2, 1, 0); - #endif - return 0; -} - -static void co5300BackLight(lcdDrvFunc_t *lcd, uint8_t level) -{ -#if (BK_USE_GPIO == 1) - lcdGpioBkLevel(level); -#elif (BK_USE_PWM == 1) - lcdPwmBkLevel(level); -#endif -} - -/* - sx: start x - sy: start y - ex: end x - ey: end y -*/ -static uint32_t co5300AddrSet(lcdDrvFunc_t *lcd, uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey) -{ - uint32_t len = 0; - - lcdMspiSet(1, 0, 0, 0x02); // 1wire: 0x02; 4wire: 0x32 - - sx += LCD_X_OFFSET; - ex += LCD_X_OFFSET; - sy += LCD_Y_OFFSET; - ey += LCD_Y_OFFSET; - - co5300SetXCmd[0] = sx>>8; - co5300SetXCmd[1] = sx; - co5300SetXCmd[2] = ex>>8; - co5300SetXCmd[3] = ex; - lspiCmdSend(0x2A, co5300SetXCmd, sizeof(co5300SetXCmd)); - - co5300SetYCmd[0] = sy>>8; - co5300SetYCmd[1] = sy; - co5300SetYCmd[2] = ey>>8; - co5300SetYCmd[3] = ey; - lspiCmdSend(0x2B, co5300SetYCmd, sizeof(co5300SetYCmd)); - - if (CO5300_BPP == 24) - { - len = (ey-sy+1) * (ex-sx+1) * (CO5300_BPP/8+1); - } - else - { - len = (ey-sy+1) * (ex-sx+1) * (CO5300_BPP/8); - } - - // send 0x2c - lcdMspiSet(1, 0, 2, 0x32); // 1wire: 0x02; 4wire: 0x32 - lcdWriteCmd(0x2c); - - return len; -} - -static void co5300StartStop(lcdDrvFunc_t *lcd, bool startOrStop) -{ - dmaStartStop(startOrStop); -} - -static void co5300RegisterUspIrqCb(lcdDrvFunc_t *lcd, uspCbRole_e who) -{ - if (lcd == NULL) - { - EC_ASSERT(0,0,0,0); - } - - (who == cbForCam)? (lcd->uspIrq4CamCb = co5300HandleUspIrq4Cam) : (lcd->uspIrq4FillCb = co5300HandleUspIrq4Fill); -} - -static void co5300UnRegisterUspIrqCb(lcdDrvFunc_t *lcd, uspCbRole_e who) -{ - if (lcd == NULL) - { - EC_ASSERT(0,0,0,0); - } - - (who == cbForCam)? (lcd->uspIrq4CamCb = NULL) : (lcd->uspIrq4FillCb = NULL); -} - -static int co5300Fill(lcdDrvFunc_t *lcd, uint32_t fillLen, uint8_t *buf) -{ - return lcdDmaTrans(lcd, buf, fillLen); -} - -static void co5300DrawPoint(lcdDrvFunc_t *lcd, uint16_t x, uint16_t y, uint32_t dataWrite) -{ - co5300AddrSet(lcd, x, y, x, y); - lspiFifoWrite(dataWrite); - return; -} - -static void co5300CamPreviewStartStop(lcdDrvFunc_t *lcd, camPreviewStartStop_e previewStartStop) -{ - if (previewStartStop) - { - co5300UnRegisterUspIrqCb(lcd, cbForFill); - co5300RegisterUspIrqCb(lcd, cbForCam); - -#if (CAMERA_ENABLE_BF30A2) - -#elif (CAMERA_ENABLE_GC032A) - lspiScaleInfo.rowScaleFrac = 0; - lspiScaleInfo.colScaleFrac = 0; - lcdDrv->ctrl(LSPI_CTRL_SCALE_INFO, 0); - - lspiTailorInfo.tailorLeft = (PIC_SRC_WIDTH - CO5300_WIDTH)/2; - lspiTailorInfo.tailorRight = (PIC_SRC_WIDTH - CO5300_WIDTH)/2; - lspiTailorInfo0.tailorBottom = (PIC_SRC_HEIGHT - CO5300_HEIGHT)/2; - lspiTailorInfo0.tailorTop = (PIC_SRC_HEIGHT - CO5300_HEIGHT)/2; - lcdDrv->ctrl(LSPI_CTRL_TAILOR_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_TAILOR_INFO0, 0); - - lspiDataFmt.wordSize = 7; - lspiDataFmt.txPack = 0; - lcdDrv->ctrl(LSPI_CTRL_DATA_FORMAT, 0); - - // lcd size - lspiInfo.frameHeight = PIC_SRC_HEIGHT; // frame input height - lspiInfo.frameWidth = PIC_SRC_WIDTH; // frame input width - lspiFrameInfoOut.frameHeightOut = CO5300_HEIGHT; // frame output height - lspiFrameInfoOut.frameWidthOut = CO5300_WIDTH; // frame output width - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO_OUT, 0); - - lspiScaleInfo.rowScaleFrac = 0; - lspiScaleInfo.colScaleFrac = 0; - lcdDrv->ctrl(LSPI_CTRL_SCALE_INFO, 0); - - lspiDmaCtrl.txDmaReqEn = 0; - lcdDrv->ctrl(LSPI_CTRL_DMA_CTRL, 0); - - #if (PRE_CMD_ENABLE) - //lspiIntCtrl.ramWrIntCtrlEn = 1; - #else - lspiIntCtrl.lspiRamWrEndEn = 1; - #endif - lcdDrv->ctrl(LSPI_CTRL_INT_CTRL, 0); - - LSPI2->DMACTL |= 1<<24; // flush dma - LSPI2->DMACTL |= 1<<25; - - lspiMspiCtrl.mspiInst = 0x32; // 1wire: 0x02; 4wire: 0x32 - lspiMspiCtrl.mspiAddrLane = 0; - lspiMspiCtrl.mspiDataLane = 2; - lcdDrv->ctrl(LSPI_MSPI_CTRL, 0); - - lspiCtrl.enable = 1; - lspiCtrl.datSrc = 0; // 0: data from camera; 1: data from memory - lspiCtrl.colorModeIn = 0; // YUV422, every item is 8bit. 1:y only - lspiCtrl.colorModeOut = 1; // RGB565 - lspiCmdAddr.busType = 1; // Interface II - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - - #if PRE_CMD_ENABLE - lspiCmdAddr.addr = 0x2c; - lspiCmdAddr.csnHighCycleMin = 0xa; - lcdDrv->ctrl(LSPI_CTRL_CMD_ADDR, 0); - - lspiPreParam0.lspiCmd0PreEn = 1; - lspiPreParam0.lspiCmd1PreEn = 1; - lspiPreParam0.lspiCmd0PreParaLen = 4; - lspiPreParam0.lspiCmd1PreParaLen = 4; - lspiPreParam2.lspiCmd0PrePara = set_x_cmd[0] | (set_x_cmd[1]<<8) | (set_x_cmd[2]<<16) | (set_x_cmd[3]<<24); - lspiPreParam3.lspiCmd1PrePara = set_y_cmd[0] | (set_y_cmd[1]<<8) | (set_y_cmd[2]<<16) | (set_y_cmd[3]<<24); - lcdDrv->ctrl(LSPI_CTRL_CMD_ADDR, 0); - #endif - - lspiCmdCtrl.wrRdn = 1; // 1: wr 0: rd - lspiCmdCtrl.ramWr = 1; // start ramwr - lspiCmdCtrl.ramWrHaltMode = 1; // maintain cs as low between cmd and data - #if PRE_CMD_ENABLE - lspiCmdCtrl.dataLen = 0x3fffff; - #else - lspiCmdCtrl.dataLen = CO5300_HEIGHT * CO5300_WIDTH; - #endif - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - -#elif (CAMERA_ENABLE_GC6153) - -#endif - } -} - -static int co5300Close(lcdDrvFunc_t *lcd) -{ - return 0; -} - -AP_PLAT_COMMON_DATA lcdDrvFunc_t co5300Drv = -{ - .id = 0x5300, - .width = CO5300_WIDTH, - .height = CO5300_HEIGHT, - .freq = CO5300_FREQ, - .bpp = CO5300_BPP, - .initRegTbl = initTable5300, - .initRegTblLen = sizeof(initTable5300)/sizeof(initLine_t), - .dir = 0, - - .init = co5300Init, - .drawPoint = co5300DrawPoint, - .setWindow = co5300AddrSet, - .fill = co5300Fill, - .backLight = co5300BackLight, - .startStop = co5300StartStop, - .startStopPreview = co5300CamPreviewStartStop, - .uspIrq4CamCb = NULL, - .uspIrq4FillCb = NULL, - .registerUspIrqCb = co5300RegisterUspIrqCb, - .unregisterUspIrqCb = co5300UnRegisterUspIrqCb, - .direction = NULL, - .close = co5300Close, -}; - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/lcd/lcdDev/lcdDev_7789.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/lcd/lcdDev/lcdDev_7789.c deleted file mode 100644 index 83557c4..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/lcd/lcdDev/lcdDev_7789.c +++ /dev/null @@ -1,431 +0,0 @@ -#include "bsp.h" -#include "lcdDrv.h" -#include "lcdComm.h" -#include "lcdDev_7789.h" -#include "sctdef.h" - -#define LCD_MADCTL 0x36 - -extern lspiDrvInterface_t *lcdDrv; -//static uint8_t s_MADCTL = 0x0; -AP_PLAT_COMMON_BSS static uint16_t previewWidth; -AP_PLAT_COMMON_BSS static uint16_t previewHeight; -extern lcdIoCtrl_t lcdIoCtrlParam; - -AP_PLAT_COMMON_DATA static initLine_t initTable7789[] = -{ - {0x11, 1, {0}}, - {0xff, 1, {120}}, -#if FEATURE_SUBSYS_WATCH_ENABLE - {0x36, 1, {0x08}}, -#else - {0x36, 1, {0}}, -#endif - {0x21, 1, {0}}, // display inverse -#if (ST7789_BPP == 16) - {0x3a, 1, {5}}, // rgb565 -#elif (ST7789_BPP == 12) - {0x3a, 1, {3}}, // rgb444 -#elif (ST7789_BPP == 18) - {0x3a, 1, {6}}, // rgb666 -#endif - {0x35, 1, {0}}, // te on -#if (SPI_2_DATA_LANE == 1) - {0xe7, 1, {0x10}}, -#endif - {0xb2, 5, {0x0c, 0x0c, 0x00, 0x33, 0x33}}, // rate - {0xb7, 1, {0x35}}, - {0xbb, 1, {0x20}}, - {0xc0, 1, {0x2c}}, - {0xc2, 1, {0x01}}, - {0xc3, 1, {0x0b}}, - {0xc4, 1, {0x20}}, - {0xc6, 1, {0x0f}}, - {0xd0, 2, {0xa4, 0xa1}}, // pwctr - {0xe0, 14, {0xd0,0x03,0x09,0x0e,0x11,0x3d,0x47,0x55,0x53,0x1a,0x16,0x14,0x1f,0x22}}, //Positive voltage gamma - {0xe1, 14, {0xd0,0x02,0x08,0x0d,0x12,0x2c,0x43,0x55,0x53,0x1e,0x1b,0x19,0x20,0x22}}, //Negative voltage gamma - {0x29, 1, {0x00}}, -}; - -void st7789HandleUspIrq4Cam(lcdDrvFunc_t *lcd) -{ - -} - -void st7789HandleUspIrq4Fill(lcdDrvFunc_t *lcd) -{ -} - - -static int st7789Init(lcdDrvFunc_t *lcd, void* uspCb, void *dmaCb, uint32_t freq, uint8_t bpp) -{ - lcdIoInit(false); - lcdRst(10, 10); - dmaInit(dmaCb); - lspiDefaultCfg(lcd, uspCb, freq, bpp); - lcdInterfaceType(ST7789_INTERFACE); - lcdRegInit(0x7789); - - #if 0 // test read id - uint32_t read7789[3] = {0}; - lspiReadReg(0x04, read7789, 3, 0); - #endif - return 0; -} - -#if 0 -static int st7789Direction(lcdDrvFunc_t *lcd,DisDirection_e Dir) -{ - switch(Dir) - { - case DIS_MIRROR_X: - s_MADCTL ^= BIT(6); - break; - case DIS_MIRROR_Y: - s_MADCTL ^= BIT(7); - break; - case DIS_SWAP_XY: - s_MADCTL ^= 0xC0; - break; - case DIS_DIR_LRTB: - s_MADCTL &= ~(BIT(2)); - s_MADCTL &= ~(BIT(4)); - s_MADCTL &= ~(BIT(5)); - break; - case DIS_DIR_LRBT: - s_MADCTL &= ~(BIT(2)); - s_MADCTL &= ~(BIT(5)); - s_MADCTL |= BIT(4); - break; - case DIS_DIR_RLTB: - s_MADCTL &= ~(BIT(4)); - s_MADCTL &= ~(BIT(5)); - s_MADCTL |= BIT(2); - break; - case DIS_DIR_RLBT: - s_MADCTL &= ~(BIT(5)); - s_MADCTL |= BIT(4); - s_MADCTL |= BIT(2); - break; - case DIS_DIR_TBLR: - s_MADCTL &= ~(BIT(2)); - s_MADCTL &= ~(BIT(4)); - s_MADCTL |= BIT(5); - break; - case DIS_DIR_BTLR: - s_MADCTL &= ~(BIT(2)); - s_MADCTL |= BIT(4); - s_MADCTL |= BIT(5); - break; - case DIS_DIR_TBRL: - s_MADCTL &= ~(BIT(4)); - s_MADCTL |= BIT(2); - s_MADCTL |= BIT(5); - break; - case DIS_DIR_BTRL: - s_MADCTL |= BIT(2); - s_MADCTL |= BIT(4); - s_MADCTL |= BIT(5); - break; - case DIS_DIR_MAX: - break; - } - - lspiCmdSend(LCD_MADCTL, &s_MADCTL, 1); - return s_MADCTL; -} -#endif - -static void st7789BackLight(lcdDrvFunc_t *lcd, uint8_t level) -{ -#if (BK_USE_GPIO == 1) - lcdGpioBkLevel(level); -#elif (BK_USE_PWM == 1) - lcdPwmBkLevel(level); -#endif -} - -/* - sx: start x - sy: start y - ex: end x - ey: end y -*/ -static uint32_t st7789AddrSet(lcdDrvFunc_t *lcd, uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey) -{ - uint8_t set_x_cmd[] = {sx>>8, sx, ex>>8, ex}; - lspiCmdSend(0x2A, set_x_cmd, sizeof(set_x_cmd)); - previewWidth = ex - sx + 1; - - uint8_t set_y_cmd[] = {sy>>8, sy, ey>>8, ey}; - lspiCmdSend(0x2B, set_y_cmd, sizeof(set_y_cmd)); - previewHeight = ey - sy + 1; - - lcdWriteCmd(0x2C); - - return (ey-sy+1) * (ex-sx+1) * (ST7789_BPP/8); -} - -static void st7789StartStop(lcdDrvFunc_t *lcd, bool startOrStop) -{ - dmaStartStop(startOrStop); -} - -static int st7789Fill(lcdDrvFunc_t *lcd, uint32_t fillLen, uint8_t *buf) -{ - return lcdDmaTrans(lcd, buf, fillLen); -} - -static void st7789DrawPoint(lcdDrvFunc_t *lcd, uint16_t x, uint16_t y, uint32_t dataWrite) -{ - lspiFifoWrite(dataWrite); - return; -} - -static void st7789RegisterUspIrqCb(lcdDrvFunc_t *lcd, uspCbRole_e who) -{ - if (lcd == NULL) - { - EC_ASSERT(0,0,0,0); - } - - (who == cbForCam)? (lcd->uspIrq4CamCb = st7789HandleUspIrq4Cam) : (lcd->uspIrq4FillCb = st7789HandleUspIrq4Fill); -} - -static void st7789UnRegisterUspIrqCb(lcdDrvFunc_t *lcd, uspCbRole_e who) -{ - if (lcd == NULL) - { - EC_ASSERT(0,0,0,0); - } - - (who == cbForCam)? (lcd->uspIrq4CamCb = NULL) : (lcd->uspIrq4FillCb = NULL); -} - -static void st7789CamPreviewStartStop(lcdDrvFunc_t *lcd, camPreviewStartStop_e previewStartStop) -{ - uint8_t divVal = 0; - uint16_t divRemain = 0; - -#if defined TYPE_EC718M - if (previewStartStop) - { - st7789RegisterUspIrqCb(lcd, cbForCam); - st7789UnRegisterUspIrqCb(lcd, cbForFill); - - lspiDataFmt.wordSize = 7; - lspiDataFmt.txPack = 0; - lcdDrv->ctrl(LSPI_CTRL_DATA_FORMAT, 0); - - lspiDmaCtrl.txDmaReqEn = 0; - lcdDrv->ctrl(LSPI_CTRL_DMA_CTRL, 0); - - lspiInfo.frameHeight = PIC_SRC_HEIGHT; // frame input height - lspiInfo.frameWidth = PIC_SRC_WIDTH; // frame input width - lspiFrameInfoOut.frameHeightOut = previewHeight; // frame output height - lspiFrameInfoOut.frameWidthOut = previewWidth; // frame output width - - if ((previewHeight > PIC_SRC_HEIGHT) || (previewWidth > PIC_SRC_WIDTH)) - { - EC_ASSERT(0,0,0,0); - } - - if (lcdIoCtrlParam.previewModeSel == CAM_PREVIEW_SET_AUTO) - { - divVal = lspiInfo.frameHeight / lspiFrameInfoOut.frameHeightOut; - divRemain = lspiInfo.frameHeight % lspiFrameInfoOut.frameHeightOut; - lspiTailorInfo0.tailorTop = divRemain/2; - lspiTailorInfo0.tailorBottom = divRemain/2; - EC_ASSERT(divVal, lspiInfo.frameHeight, lspiFrameInfoOut.frameHeightOut, 0); - lspiScaleInfo.colScaleFrac = (divVal==1)? 0 : (128/divVal); - - divVal = lspiInfo.frameWidth / lspiFrameInfoOut.frameWidthOut; - divRemain = lspiInfo.frameWidth % lspiFrameInfoOut.frameWidthOut; - lspiTailorInfo.tailorLeft = divRemain/2; - lspiTailorInfo.tailorRight = divRemain/2; - EC_ASSERT(divVal, lspiInfo.frameWidth, lspiFrameInfoOut.frameWidthOut, 0); - lspiScaleInfo.rowScaleFrac = (divVal==1)? 0 : (128/divVal); - } - else - { - lspiScaleInfo.rowScaleFrac = lcdIoCtrlParam.previewManulSet.rowScaleFrac; - lspiScaleInfo.colScaleFrac = lcdIoCtrlParam.previewManulSet.colScaleFrac; - lspiTailorInfo.tailorLeft = lcdIoCtrlParam.previewManulSet.tailorLeft; - lspiTailorInfo.tailorRight = lcdIoCtrlParam.previewManulSet.tailorRight; - lspiTailorInfo0.tailorBottom = lcdIoCtrlParam.previewManulSet.tailorBottom; - lspiTailorInfo0.tailorTop = lcdIoCtrlParam.previewManulSet.tailorTop; - } - - lcdDrv->ctrl(LSPI_CTRL_SCALE_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_TAILOR_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO_OUT, 0); - - lspiCtrl.datSrc = 0; // 0: data from camera; 1: data from memory - lspiCtrl.colorModeIn = 0; // YUV422, every item is 8bit - lspiCtrl.colorModeOut = 1; // RGB565 - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - - lspiCmdCtrl.wrRdn = 1; // 1: wr 0: rd - lspiCmdCtrl.ramWr = 1; // start ramwr - lspiCmdCtrl.dataLen = 0x3fffff; // infinite data, used in camera to lspi - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - } -#else // CHIP 718 - if (previewStartStop) - { - st7789RegisterUspIrqCb(lcd, cbForCam); - st7789UnRegisterUspIrqCb(lcd, cbForFill); - - lspiDataFmt.wordSize = 7; - lspiDataFmt.txPack = 0; - lcdDrv->ctrl(LSPI_CTRL_DATA_FORMAT, 0); - - lspiDmaCtrl.txDmaReqEn = 0; - lcdDrv->ctrl(LSPI_CTRL_DMA_CTRL, 0); - - lspiInfo.frameHeight = PIC_SRC_HEIGHT; // frame input height - lspiInfo.frameWidth = PIC_SRC_WIDTH; // frame input width - lspiFrameInfoOut.frameHeightOut = previewHeight; // frame output height - lspiFrameInfoOut.frameWidthOut = previewWidth; // frame output width - - if ((previewHeight > PIC_SRC_HEIGHT) || (previewWidth > PIC_SRC_WIDTH)) - { - EC_ASSERT(0,0,0,0); - } - - if (lcdIoCtrlParam.previewModeSel == CAM_PREVIEW_SET_AUTO) - { - divVal = lspiInfo.frameHeight / lspiFrameInfoOut.frameHeightOut; - divRemain = lspiInfo.frameHeight % lspiFrameInfoOut.frameHeightOut; - lspiTailorInfo0.tailorTop = divRemain/2; - lspiTailorInfo0.tailorBottom = divRemain/2; - EC_ASSERT(divVal, lspiInfo.frameHeight, lspiFrameInfoOut.frameHeightOut, 0); - lspiScaleInfo.colScaleFrac = (divVal==1)? 0 : (128/divVal); - - divVal = lspiInfo.frameWidth / lspiFrameInfoOut.frameWidthOut; - divRemain = lspiInfo.frameWidth % lspiFrameInfoOut.frameWidthOut; - lspiTailorInfo.tailorLeft = divRemain/2; - lspiTailorInfo.tailorRight = divRemain/2; - EC_ASSERT(divVal, lspiInfo.frameWidth, lspiFrameInfoOut.frameWidthOut, 0); - lspiScaleInfo.rowScaleFrac = (divVal==1)? 0 : (128/divVal); - } - else - { - lspiScaleInfo.rowScaleFrac = lcdIoCtrlParam.previewManulSet.rowScaleFrac; - lspiScaleInfo.colScaleFrac = lcdIoCtrlParam.previewManulSet.colScaleFrac; - lspiTailorInfo.tailorLeft = lcdIoCtrlParam.previewManulSet.tailorLeft; - lspiTailorInfo.tailorRight = lcdIoCtrlParam.previewManulSet.tailorRight; - lspiTailorInfo0.tailorBottom = lcdIoCtrlParam.previewManulSet.tailorBottom; - lspiTailorInfo0.tailorTop = lcdIoCtrlParam.previewManulSet.tailorTop; - } - - lcdDrv->ctrl(LSPI_CTRL_SCALE_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_TAILOR_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO_OUT, 0); - - lspiCtrl.datSrc = 0; // 0: data from camera; 1: data from memory - lspiCtrl.colorModeIn = 0; // YUV422, every item is 8bit - lspiCtrl.colorModeOut = 1; // RGB565 - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - - lspiCmdCtrl.wrRdn = 1; // 1: wr 0: rd - lspiCmdCtrl.ramWr = 1; // start ramwr - lspiCmdCtrl.dataLen = 0x3fffff; // infinite data, used in camera to lspi - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - } -#endif - else - { - lspiDmaCtrl.txDmaReqEn = 0; - lspiDataFmt.wordSize = 31; - lspiDataFmt.txPack = 0; - lspiInfo.frameHeight = lcd->height; // frame input height - lspiInfo.frameWidth = lcd->width; // frame input width - lspiFrameInfoOut.frameHeightOut = lcd->height; // frame output height - lspiFrameInfoOut.frameWidthOut = lcd->width; // frame output width - lspiCtrl.colorModeIn = 3; // rgb565 - lspiCtrl.colorModeOut = 1; // rgb565 - lspiCtrl.datSrc = 1; // 0: data from camera; 1: data from memory - lspiScaleInfo.rowScaleFrac = 0; - lspiScaleInfo.colScaleFrac = 0; - lspiTailorInfo.tailorLeft = 0; // frame output height - lspiTailorInfo.tailorRight = 0; // frame output width - lcdDrv->ctrl(LSPI_CTRL_SCALE_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_TAILOR_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - lcdDrv->ctrl(LSPI_CTRL_DATA_FORMAT, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_DMA_CTRL, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO_OUT, 0); - - // before send first cmd/data to lcd, clear unnessary status - if (((LSPI2->STAS >> 27)& 0x1) > 0) - { - LSPI2->STAS |= 1<<27; - } - - if (((LSPI2->STAS >> 28)& 0x1) > 0) - { - LSPI2->STAS |= 1<<28; - } - -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) - if (((LSPI2->STAS >> 13)& 0x3f) > 0) -#else // 719 - if (((LSPI2->LSPI_STAT >> 8)& 0x3f) > 0) -#endif - { - LSPI2->DMACTL |= 1<<25; - } - - LSPI2->DMACTL |= 1<<24; // clear rx fifo - - // write first dummy cmd to lcd. It's nessary to clear lspi fifo - lcdWriteCmd(0xff); - lcdWriteData(0x00); - lcdDrv->send(NULL, 0); - -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) - if (((LSPI2->STAS >> 13)& 0x3f) > 0) -#else // 719 - if (((LSPI2->LSPI_STAT >> 8)& 0x3f) > 0) -#endif - { - LSPI2->DMACTL |= 1<<25; - } - } -} - -static int st7789Close(lcdDrvFunc_t *lcd) -{ - return 0; -} - -AP_PLAT_COMMON_DATA lcdDrvFunc_t st7789Drv = -{ - .id = 0x7789, - .width = ST7789_WIDTH, - .height = ST7789_HEIGHT, - .freq = ST7789_FREQ, - .bpp = ST7789_BPP, - .initRegTbl = initTable7789, - .initRegTblLen = sizeof(initTable7789)/sizeof(initLine_t), - .dir = 0, - - .init = st7789Init, - .drawPoint = st7789DrawPoint, - .setWindow = st7789AddrSet, - .fill = st7789Fill, - .backLight = st7789BackLight, - .startStop = st7789StartStop, - .startStopPreview = st7789CamPreviewStartStop, - .uspIrq4CamCb = NULL, - .uspIrq4FillCb = NULL, - .registerUspIrqCb = st7789RegisterUspIrqCb, - .unregisterUspIrqCb = st7789UnRegisterUspIrqCb, - .direction = NULL, - .close = st7789Close, -}; - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/lcd/lcdDev/lcdDev_77903.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/lcd/lcdDev/lcdDev_77903.c deleted file mode 100644 index 71507b6..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/lcd/lcdDev/lcdDev_77903.c +++ /dev/null @@ -1,238 +0,0 @@ -#include "bsp.h" -#include "lcdDrv.h" -#include "lcdComm.h" -#include "lcdDev_77903.h" -#include "sctdef.h" - -extern lspiDrvInterface_t *lcdDrv; - -static const initLine_t initTable77903[] = -{ - {0xf0, 1, {0xc3}}, - {0xf0, 1, {0x96}}, - {0xf0, 1, {0xa5}}, - {0xc1, 4, {0x00,0x08,0xae,0x13}}, - {0xc2, 4, {0x00,0x08,0xa5,0x13}}, - {0xc3, 4, {0x44,0x04,0x44,0x04}}, - {0xc4, 4, {0x44,0x04,0x44,0x04}}, - {0xc5, 1, {0x51}}, - {0xd6, 1, {0x0}}, - {0xd7, 1, {0x0}}, - {0xe0, 14,{0xd2,0x07,0x0c,0x0a,0x09,0x26,0x34,0x44,0x4b,0x19,0x14,0x14,0x2d,0x33}}, - {0xe1, 14,{0xd2,0x07,0x0c,0x09,0x08,0x25,0x33,0x44,0x4a,0x19,0x14,0x13,0x2d,0x33}}, - {0xe5, 14,{0xbd,0xf5,0xc1,0x33,0x22,0x25,0x10,0x55,0x55,0x55,0x55,0x55,0x55,0x55}}, - {0xe6, 14,{0xbd,0xf5,0xc1,0x33,0x22,0x25,0x10,0x55,0x55,0x55,0x55,0x55,0x55,0x55}}, - {0xec, 6, {0x00,0x55,0x00,0x00,0x00,0x08}}, - {0x36, 1, {0x0c}}, -#if (ST77903_BPP == 16) - {0x3a, 1, {5}}, // rgb565 -#elif (ST77903_BPP == 24) - {0x3a, 1, {7}}, // rgb888 -#elif (ST77903_BPP == 18) - {0x3a, 1, {6}}, // rgb666 -#endif - {0xb2, 1, {0x09}}, - {0xb3, 1, {0x01}}, - {0xb4, 1, {0x01}}, - {0xb5, 4, {0x00,0x08,0x00,0x08}}, - {0xb6, 2, {0xc7,0x31}}, - {0xa4, 2, {0xc0,0x63}}, - {0xa5, 9, {0x00,0x00,0x00,0x00,0x00,0x15,0x2a,0xba,0x02}}, - {0xa6, 9, {0x00,0x00,0x00,0x00,0x00,0x15,0x2a,0xba,0x02}}, - {0xba, 7, {0x1a,0x0a,0x45,0x00,0x23,0x01,0x00}}, - {0xbb, 8, {0x00,0x24,0x00,0x2f,0x83,0x07,0x18,0x00}}, - {0xbd, 11,{0x22,0x11,0xff,0xff,0x55,0x44,0x77,0x66,0xff,0xff,0x0f}}, - {0xff, 1, {200}}, - {0xed, 1, {0xc3}}, - {0xe4, 3, {0x40,0x0f,0x2f}}, - {0x21, 0, {}}, - {0x11, 0, {}}, - {0x29, 0, {}}, - - {0xf0, 1, {0xc3}}, - {0xf0, 1, {0x96}}, - -#if (BIST_TEST == 1) - {0xb0, 1, {0xa5}}, - {0xcc, 9, {0x40,0x00,0x3f,0x00,0x14,0x14,0x20,0x20,0x03}}, -#endif -}; - -void st77903HandleUspIrq4Cam(lcdDrvFunc_t *lcd) -{ - -} - -void st77903HandleUspIrq4Fill(lcdDrvFunc_t *lcd) -{ -} - -static int st77903Init(lcdDrvFunc_t *lcd, void* uspCb, void *dmaCb, uint32_t freq, uint8_t bpp) -{ - lcdIoInit(false); - lcdRst(10, 10); - dmaInit(dmaCb); - lspiDefaultCfg(lcd, uspCb, freq, bpp); - lcdInterfaceType(ST77903_INTERFACE); - lcdRegInit(0x77903); - lcdMspiHsyncSet(0x60, 0xde, 6, 6); - lcdWriteCmd(0x61); - lcdMspiSet(1, 0, 2, DEFAULT_INST); - lcdMspiVsyncSet(1, 0xde, lspiDiv); - lcdCsnHighCycleMin(lspiDiv); - return 0; -} - -static void st77903BackLight(lcdDrvFunc_t *lcd, uint8_t level) -{ -#if (BK_USE_GPIO == 1) - lcdGpioBkLevel(level); -#elif (BK_USE_PWM == 1) - lcdPwmBkLevel(level); -#endif -} - -/* - sx: start x - sy: start y - ex: end x - ey: end y -*/ -static uint32_t st77903AddrSet(lcdDrvFunc_t *lcd, uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey) -{ - uint32_t len = 0; -#if 0 // how to set the coordinate? - uint8_t set_x_cmd[] = {sx>>8, sx, ex>>8, ex}; - lspiCmdSend(0x2A, set_x_cmd, sizeof(set_x_cmd)); - - uint8_t set_y_cmd[] = {sy>>8, sy, ey>>8, ey}; - lspiCmdSend(0x2B, set_y_cmd, sizeof(set_y_cmd)); - - lcdWriteCmd(0x2C); -#endif - - if (ST77903_BPP == 24) - { - len = (ey-sy+1) * (ex-sx+1) * (ST77903_BPP/8+1); - } - else - { - len = (ey-sy+1) * (ex-sx+1) * (ST77903_BPP/8); - } - - return len; -} - -static void st77903StartStop(lcdDrvFunc_t *lcd, bool startOrStop) -{ - dmaStartStop(startOrStop); -} - -static int st77903Fill(lcdDrvFunc_t *lcd, uint32_t fillLen, uint8_t *buf) -{ - return lcdDmaTrans(lcd, buf, fillLen); -} - -static void st77903DrawPoint(lcdDrvFunc_t *lcd, uint16_t x, uint16_t y, uint32_t dataWrite) -{ - st77903AddrSet(lcd, x, y, x, y); - lspiFifoWrite(dataWrite); - return; -} - -static void st77903RegisterUspIrqCb(lcdDrvFunc_t *lcd, uspCbRole_e who) -{ - if (lcd == NULL) - { - EC_ASSERT(0,0,0,0); - } - - (who == cbForCam)? (lcd->uspIrq4CamCb = st77903HandleUspIrq4Cam) : (lcd->uspIrq4FillCb = st77903HandleUspIrq4Fill); -} - -static void st77903UnRegisterUspIrqCb(lcdDrvFunc_t *lcd, uspCbRole_e who) -{ - if (lcd == NULL) - { - EC_ASSERT(0,0,0,0); - } - - (who == cbForCam)? (lcd->uspIrq4CamCb = NULL) : (lcd->uspIrq4FillCb = NULL); -} - -static void st77903CamPreviewStartStop(lcdDrvFunc_t *lcd, camPreviewStartStop_e previewStartStop) -{ - if (previewStartStop) - { - st77903UnRegisterUspIrqCb(lcd, cbForFill); - st77903RegisterUspIrqCb(lcd, cbForCam); - -#if (CAMERA_ENABLE_BF30A2) - -#elif (CAMERA_ENABLE_GC032A) - // preview - lcdWriteCmd(0x36); - // lcdWriteData(0x00);// 0: normal; 0x20: reverse, mirror image 0x40: x mirror - lcdWriteData(0xa0); - lcdDrv->send(NULL, 0); - - lcdWriteCmd(0x2C); - st77903AddrSet(lcd, 0, 0, 320-1, 240-1); - - lspiDataFmt.wordSize = 7; - lspiDataFmt.txPack = 0; - lcdDrv->ctrl(LSPI_CTRL_DATA_FORMAT, 0); - - // lcd size - lspiInfo.frameHeight = 480; // frame input height - lspiInfo.frameWidth = 640; // frame input width - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO, 0); - - lspiFrameInfoOut.frameHeightOut =320;//lcd->pra->height;//320; // frame output height - lspiFrameInfoOut.frameWidthOut = 240;//lcd->pra->width;//240; // frame output width - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO_OUT, 0); - - // lspiScaleInfo.rowScaleFrac =128; - // lspiScaleInfo.colScaleFrac = 128; - - lspiScaleInfo.rowScaleFrac =64; - lspiScaleInfo.colScaleFrac = 64; - lcdDrv->ctrl(LSPI_CTRL_SCALE_INFO, 0); -#elif (CAMERA_ENABLE_GC6153) - -#endif - - } -} - -static int st77903Close(lcdDrvFunc_t *lcd) -{ - return 0; -} - -AP_PLAT_COMMON_DATA lcdDrvFunc_t st77903Drv = -{ - .id = 0x77903, - .width = ST77903_WIDTH, - .height = ST77903_HEIGHT, - .freq = ST77903_FREQ, - .bpp = ST77903_BPP, - .initRegTbl = initTable77903, - .initRegTblLen = sizeof(initTable77903)/sizeof(initLine_t), - .dir = 0, - - .init = st77903Init, - .drawPoint = st77903DrawPoint, - .setWindow = st77903AddrSet, - .fill = st77903Fill, - .backLight = st77903BackLight, - .startStop = st77903StartStop, - .startStopPreview = st77903CamPreviewStartStop, - .uspIrq4CamCb = NULL, - .uspIrq4FillCb = NULL, - .registerUspIrqCb = st77903RegisterUspIrqCb, - .unregisterUspIrqCb = st77903UnRegisterUspIrqCb, - .direction = NULL, - .close = st77903Close, -}; - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/lcd/lcdDrv.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/lcd/lcdDrv.c deleted file mode 100644 index 3022a92..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/lcd/lcdDrv.c +++ /dev/null @@ -1,560 +0,0 @@ -#include -#include -#include "bsp.h" -#include "bsp_custom.h" -#include "lcdDrv.h" -#ifdef FEATURE_SUBSYS_SYSLOG_ENABLE -#include "syslog.h" -#endif -#include "sctdef.h" - -extern void lcdDrvDelay(uint32_t us); -extern void lspiCmdSend(uint8_t cmd,uint8_t *data,uint8_t allbytes); -AP_PLAT_COMMON_DATA static lspiDrvInterface_t *lcdDrv1 = &lspiDrvInterface2; -AP_PLAT_COMMON_BSS static lspiErrCb lspiErrStatsFunc; -AP_PLAT_COMMON_BSS lcdDrvFunc_t* lcdDevHandle; -AP_PLAT_COMMON_BSS lcdIoCtrl_t lcdIoCtrlParam; - - -AP_PLAT_COMMON_DATA lcdDrvFunc_t* lcdDrvList[] = -{ -#if (LCD_ST7789_ENABLE == 1) - &st7789Drv, -#elif (LCD_ST77903_ENABLE == 1) - &st77903Drv, -#elif (LCD_AXS15231_ENABLE == 1) - &axs15231Drv, -#elif (LCD_CO5300_ENABLE == 1) - &co5300Drv, -#endif -}; - -lcdDrvFunc_t* lcdOpen(uint32_t id, void* uspCb, void* dmaCb) -{ - lcdDrvFunc_t *pDrvFunc = NULL; - - uint8_t drvListLen = sizeof(lcdDrvList) / sizeof(lcdDrvFunc_t*); - if (drvListLen > 0) - { - for (uint8_t i = 0; i < drvListLen; i++) - { - if (id == lcdDrvList[i]->id) - { - pDrvFunc = lcdDrvList[i]; - pDrvFunc->init(pDrvFunc, uspCb, dmaCb, pDrvFunc->freq, pDrvFunc->bpp); - lcdDevHandle = pDrvFunc; -#ifdef PHONE_APP - static bool firstBoot = true; - if (firstBoot == true) - { - firstBoot = false; - pDrvFunc->fill(pDrvFunc, pDrvFunc->setWindow(pDrvFunc, 0, 0, LCD_WIDTH-1, LCD_HEIGHT-1), (uint8_t *)(PKGFLXRAW1_LOGO_LNA + 4)); - osDelay(30); - } -#else -#ifdef LCD_INIT_PAGE_LNA - pDrvFunc->fill(pDrvFunc, pDrvFunc->setWindow(pDrvFunc, 0, 0, LCD_WIDTH-1, LCD_HEIGHT-1), (uint8_t *)(LCD_INIT_PAGE_LNA + 4)); - osDelay(30); -#endif -#endif - return pDrvFunc; - } - } - } - - return NULL; -} - -void lcdRegisterSlp1Cb(lcdSlp1Cb_fn cb) -{ - lcdSlp1CbFn = cb; -} - - -void lcdIoInit(bool isAonIO) -{ - if (isAonIO) - { - slpManAONIOPowerOn(); - } - - PadConfig_t config; - GpioPinConfig_t gpioCfg; - PAD_getDefaultConfig(&config); - - // 1. rst pin init - config.mux = LSPI_RST_PAD_ALT_FUNC; - PAD_setPinConfig(LSPI_RST_GPIO_ADDR, &config); - gpioCfg.pinDirection = GPIO_DIRECTION_OUTPUT; - gpioCfg.misc.initOutput = 1; - GPIO_pinConfig(LSPI_RST_GPIO_INSTANCE, LSPI_RST_GPIO_PIN, &gpioCfg); - - // 2. backLight init -#if (BK_USE_GPIO == 1) - config.mux = LCD_BK_PAD_ALT_FUNC; - PAD_setPinConfig(LCD_BK_PAD_INDEX, &config); - gpioCfg.pinDirection = GPIO_DIRECTION_OUTPUT; - gpioCfg.misc.initOutput = 0; - GPIO_pinConfig(LCD_BK_GPIO_INSTANCE, LCD_BK_GPIO_PIN, &gpioCfg); -#elif (BK_USE_PWM == 1) - lcdPwmBkInit(); -#endif - - // 3. ldo pin init -#if (ENABLE_LDO == 1) - config.mux = LCD_EN_PAD_ALT_FUNC; - PAD_setPinConfig(LCD_EN_PAD_INDEX, &config); - gpioCfg.pinDirection = GPIO_DIRECTION_OUTPUT; - gpioCfg.misc.initOutput = 1; - GPIO_pinConfig(LCD_EN_GPIO_INSTANCE, LCD_EN_GPIO_PIN, &gpioCfg); -#endif - - // 4. te init -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) - // 4.1 718 te init -#else - // 4.2 719 te init - #ifdef LCD_TE_GPIO_PIN - config.mux = LCD_TE_PAD_ALT_FUNC; - PAD_setPinConfig(LCD_TE_PAD_INDEX, &config); - #endif -#endif - - // test fill one frame need how much time - #if 0 - config.mux = PAD_MUX_ALT0; - PAD_setPinConfig(27, &config); - gpioCfg.pinDirection = GPIO_DIRECTION_OUTPUT; - gpioCfg.misc.initOutput = 1; - GPIO_pinConfig(0, 12, &gpioCfg); - #endif -} - - -void lcdRegInit(uint32_t id) -{ - initLine_t *init = NULL; - uint8_t drvListLen = sizeof(lcdDrvList) / sizeof(lcdDrvFunc_t*); - - if (drvListLen > 0) - { - for (uint8_t i = 0; i < drvListLen; i++) - { - if (id == lcdDrvList[i]->id) - { - init = lcdDrvList[i]->initRegTbl; - - for (int j = 0; j < lcdDrvList[i]->initRegTblLen; j++) - { - if (init->cmd == 0xff) - { - lcdDrvDelay(init->data[0]); - } - else - { - lspiCmdSend(init->cmd, init->data, init->len); - } - - init++; - } - } - } - } -} - -int lcdClose(lcdDrvFunc_t *pdev) -{ - if (pdev == NULL) return 1; - - pdev->close(pdev); - pdev = NULL; - - return 0; -} - - -int lcdDirection(lcdDrvFunc_t *lcd, DisDirection_e dir) -{ - if (lcd == NULL) - { - return -1; - } - - return lcd->direction(lcd,dir); -} - -void camPreview(lcdDrvFunc_t *lcd, camPreviewStartStop_e previewStartStop) -{ - if (lcd == NULL) - { - return; - } - - lcd->startStopPreview(lcd, previewStartStop); -} - - -void lcdDrawPoint(lcdDrvFunc_t *lcd, uint16_t x, uint16_t y, uint32_t dataWrite) -{ - if (lcd == NULL) - { - return; - } - - return lcd->drawPoint(lcd, x, y, dataWrite); -} - - - -/** - * \brief Fills an area of the LCD with the data from a buffer. - * - * This function fills an area of the LCD specified by the start and end coordinates - * with the data from a buffer. The DMA trunk length parameter is not used in this - * function and is mentioned in the comment as not being used. - * - * \param lcd A pointer to the LCD device structure. - * \param sx The starting x-coordinate for the fill operation. - * \param sy The starting y-coordinate for the fill operation. - * \param ex The ending x-coordinate for the fill operation. - * \param ey The ending y-coordinate for the fill operation. - * \param buf A pointer to the buffer containing the data to be filled into the LCD. - * \param dmaTrunkLength The length of the DMA trunk, which is not used in this function. - * - * \return Returns the result of the fill operation from the LCD driver. - * Returns 0xffffffff if the `lcd` pointer is `NULL`. - */ -uint32_t lcdSetWindow(lcdDrvFunc_t *lcd, uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey) -{ - if (lcd == NULL) - { - return 0xffffffff; - } - - return lcd->setWindow(lcd, sx, sy, ex, ey); -} - -int lcdFill(lcdDrvFunc_t *lcd, uint32_t fillLen, uint8_t* buf) -{ - if (lcd == NULL) - { - return -1; - } - - return lcd->fill(lcd, fillLen, buf); -} - -// level: 0 ~ 100 -void lcdBackLight(lcdDrvFunc_t *lcd, uint8_t level) -{ - if (lcd == NULL) - { - return; - } - return lcd->backLight(lcd, level); -} - -void lcdPowerOnOff(lcdDrvFunc_t *lcd, lcdPowerOnOff_e onoff) -{ - if (lcd == NULL) - { - return; - } - return lcd->powerOnOff(lcd, onoff); -} - - -void lspiRstAndClearFifo() -{ - lspiCtrl.enable = 0; - lcdDrv1->ctrl(LSPI_CTRL_CTRL, 0); - - GPR_swReset(RST_FCLK_USP2); - LSPI2->DMACTL |= 1<<25; // clear tx fifo - LSPI2->STAS |= 1; - - lspiCtrl.enable = 1; - lcdDrv1->ctrl(LSPI_CTRL_CTRL, 0); -} - -void lspiRegisterErrStatsCb(lspiErrCb errCb) -{ - lspiErrStatsFunc = errCb; -} - -void lspiCheckErrStats() -{ - if (!lspiErrStatsFunc) - { - return; - } - - // check lspi error status and give cb to user - uint32_t status = LSPI2->STAS; - - if ( (status | ICL_STATS_TX_UNDERRUN_RUN_Msk) || - (status | ICL_STATS_TX_DMA_ERR_Msk) || - (status | ICL_STATS_RX_OVERFLOW_Msk) || - (status | ICL_STATS_RX_DMA_ERR_Msk) || - (status | ICL_STATS_RX_FIFO_TIMEOUT_Msk) || - (status | ICL_STATS_FS_ERR_Msk) || - (status | ICL_STATS_CSPI_BUS_TIMEOUT_Msk) || - (status | ICL_STATS_RX_FIFO_TIMEOUT_Msk) - ) - { - lspiErrStatsFunc(status); - } - - return; -} - -void imageRotateColor(uint8_t* src, uint32_t width, uint32_t height, uint8_t* dst, uint8_t bpp) -{ - int i, j, bytePerLine, tmp, i2; - - bytePerLine = width * bpp / 8; - for (i = 0; i < width; i++) - { - i2 = i*bpp / 8; - for (j = 0; j < height; j++) - { - tmp = (height - 1 - j) * bytePerLine + i2; - *dst++ = src[tmp]; - *dst++ = src[tmp+1]; - } - } -} - -void imageRotateGray(uint8_t* src, uint32_t width, uint32_t height, uint8_t* dst) -{ - for (int i= 0; i < width; i++) - { - for (int j = 0; j < height; j++) - { - dst[i*height + j] = src[(height-1-j) * width + i]; - } - } -} - -#define RANGE_LIMIT(x) (x > 255 ? 255 : (x < 0 ? 0 : x)) -void yuv422ToRgb565_2(const void* inbuf, void* outbuf, int width, int height) -{ - int rows, cols; - int y, u, v, r, g, b; - unsigned char *yuv_buf; - unsigned short *rgb_buf; - int y_pos,u_pos,v_pos; - - yuv_buf = (unsigned char *)inbuf; - rgb_buf = (unsigned short *)outbuf; - - y_pos = 0; - u_pos = 1; - v_pos = 3; - - for (rows = 0; rows < height; rows++) - { - for (cols = 0; cols < width; cols++) - { - y = yuv_buf[y_pos]; - u = yuv_buf[u_pos] - 128; - v = yuv_buf[v_pos] - 128; - - // R = Y + 1.402*(V-128) - // G = Y - 0.34414*(U-128) - // B = Y + 1.772*(U-128) - r = RANGE_LIMIT(y + v + ((v * 103) >> 8)); - g = RANGE_LIMIT(y - ((u * 88) >> 8) - ((v * 183) >> 8)); - b = RANGE_LIMIT(y + u + ((u * 198) >> 8)); - - *rgb_buf++ = (((r & 0xf8) << 8) | ((g & 0xfc) << 3) | ((b & 0xf8) >> 3)); - - y_pos += 2; - - if (cols & 0x01) - { - u_pos += 4; - v_pos += 4; - } - } - } -} - -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) -void calTe(uint32_t totalBytes, uint16_t sy) -{ - //uint32_t timeStampApp= 0; - uint32_t teRunTimeMs = 0; - uint16_t yte = 0; - //uint32_t controllerBytesPerMs = 480*320*2/28; - uint16_t waitTimeMs = 0; - - // cal te -#if 0 - timeStampApp = TIMER_getCount(0); - - if (timeStampApp < timeStampTe) - { - teRunTimeMs = (26000 - timeStampTe + timeStampApp) / 1000; - } - else - { - teRunTimeMs = (timeStampApp - timeStampTe) / 1000; - } -#else -#if (BK_USE_PWM == 1) - teRunTimeMs = millis(); -#endif -#endif - if (teRunTimeMs > 16) - { - teRunTimeMs = 0; - } - - yte = teRunTimeMs * 40 - 1; - - - - if (teRunTimeMs > 6) - { - if (sy > yte) - { - waitTimeMs = (sy-yte)/40; - if (waitTimeMs == 0) - { - waitTimeMs = 1; // at least 1ms - } - -#ifdef FEATURE_OS_ENABLE - osDelay(waitTimeMs); -#endif - dmaStartStop(true); - } - else - { - if (sy >= (480/2)) - { - dmaStartStop(true); - } - else - { - waitTimeMs = 16 - teRunTimeMs + sy/40; // +1 -#ifdef FEATURE_OS_ENABLE - osDelay(waitTimeMs); -#endif - dmaStartStop(true); - } - } - } - else - { - if (sy > yte) - { - waitTimeMs = (sy-yte)/40; - if (waitTimeMs == 0) - { - waitTimeMs = 1; // at least 1ms - } - -#ifdef FEATURE_OS_ENABLE - osDelay(waitTimeMs); -#endif - dmaStartStop(true); - } - else - { - if (totalBytes > ((16-teRunTimeMs+12)*40*320*2)) - { - // must wait te irq - //osDelay(16-teRunTimeMs); - //osEventFlagsWait(lcdEvtHandle, 0x4, osFlagsWaitAll, osWaitForever); // in te gpio isr release - dmaStartStop(true); - } - else - { - dmaStartStop(true); - } - } - } -} - -#else // chip 719 -void calTe(teEdgeSel_e teEdge, uint16_t xs, uint16_t ys, uint16_t xe, uint16_t ye) -{ - uint32_t tlspi=0, te=0, tw=0, tlcd=0, ta=0, tgaps=0, tgape=0, pos0=0, pos1=0; - xs += LCD_X_OFFSET; - xe += LCD_X_OFFSET; - ys += LCD_Y_OFFSET; - ye += LCD_Y_OFFSET; - -#if (LCD_INTERFACE_SPI == 1) - tlspi = 24 * (LCD_FREQ / (51*1024*1024)) * (LCD_PIXEL / (320*240)) * 1000; // us -#elif (LCD_INTERFACE_MSPI == 1) - if (LCD_FREQ == 51*1024*1024) - { - tlspi = 16600; // 51M, 16.6ms - } - else if (LCD_FREQ == 6*1024*1024) - { - tlspi = 148000; // 6M, 148ms - } -#elif (LCD_INTERFACE_8080 == 1) - -#endif - - te = LCD_TE_CYCLE; - tw = LCD_TE_WAIT_TIME; - tlcd = te - tw; - ta = (ye - ys + 1) * (xe - xs + 1) / LCD_PIXEL * tlspi ; - tgaps = ys * tlcd / LCD_HEIGHT; - tgape = ye * tlcd / LCD_HEIGHT; - - if (ta < (tgape - tgaps)) - { - pos1 = tgaps; - pos0 = tgape - ta; - } - else if (((tgape - tgaps) <= ta) && (ta <= tgape)) - { - pos1 = tgape - ta; - pos0 = tgaps; - } - else if ((tgape < ta) && (ta <= tgape + tw)) - { - pos1 = 0; - pos0 = tgaps; - } - else if (((tgape + tw) < ta) && (ta <= (tgape + tw + tlcd - tgaps))) - { - pos0 = tgaps; - pos1 = tlcd + tgape + tw - ta; - } - else if (ta > (tgape + tw + tlcd - tgaps)) - { - EC_ASSERT(0,0,0,0); - } - - lspiTeParam0.lspiTeEn = 1; - lspiTeParam0.lspiTeEdgeSel = teEdge; - lspiTeParam0.lspiTePos0 = pos0*LCD_FREQ/1000000; - lspiTeParam1.lspiTePos1 = pos1*LCD_FREQ/1000000; - lcdDrv1->ctrl(LSPI_TE_CTRL, 0); - -} -#endif - -void lcdIoCtrl(lcdDrvFunc_t *lcd, lcdIoCtrl_t ioCtrl) -{ - if (lcd == NULL) - { - return; - } - - lcdIoCtrlParam = ioCtrl; -} - -void lcdConfigReg(lcdDrvFunc_t *lcd, uint8_t cmd, uint8_t *data, uint8_t dataLen) -{ - lspiCmdSend(cmd, data, dataLen); -} - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/ntc/ntc.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/ntc/ntc.c deleted file mode 100644 index 90eca19..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/ntc/ntc.c +++ /dev/null @@ -1,170 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2018 Copyrigths of EigenComm Ltd. - * File name: ntc.c - * Description: - * History: - * - ****************************************************************************/ -#include -#include "ntc.h" - -#define NCP15XH103F03RC - -#if defined(NCP15XH103F03RC) -static const int32_t gNTCLut[65] = { - 253347, // T:253.35 Rntc:0.0k ADC code:0 Input voltage:0uV - 187444, // T:187.44 Rntc:0.159k ADC code:64 Input voltage:18750uV - 149195, // T:149.2 Rntc:0.323k ADC code:128 Input voltage:37500uV - 128368, // T:128.37 Rntc:0.492k ADC code:192 Input voltage:56250uV - 115301, // T:115.3 Rntc:0.667k ADC code:256 Input voltage:75000uV - 105493, // T:105.49 Rntc:0.847k ADC code:320 Input voltage:93750uV - 97670, // T:97.67 Rntc:1.034k ADC code:384 Input voltage:112500uV - 91187, // T:91.19 Rntc:1.228k ADC code:448 Input voltage:131250uV - 85596, // T:85.6 Rntc:1.429k ADC code:512 Input voltage:150000uV - 80693, // T:80.69 Rntc:1.636k ADC code:576 Input voltage:168750uV - 76336, // T:76.34 Rntc:1.852k ADC code:640 Input voltage:187500uV - 72403, // T:72.4 Rntc:2.075k ADC code:704 Input voltage:206250uV - 68803, // T:68.8 Rntc:2.308k ADC code:768 Input voltage:225000uV - 65478, // T:65.48 Rntc:2.549k ADC code:832 Input voltage:243750uV - 62389, // T:62.39 Rntc:2.8k ADC code:896 Input voltage:262500uV - 59508, // T:59.51 Rntc:3.061k ADC code:960 Input voltage:281250uV - 56829, // T:56.83 Rntc:3.333k ADC code:1024 Input voltage:300000uV - 54289, // T:54.29 Rntc:3.617k ADC code:1088 Input voltage:318750uV - 51869, // T:51.87 Rntc:3.913k ADC code:1152 Input voltage:337500uV - 49556, // T:49.56 Rntc:4.222k ADC code:1216 Input voltage:356250uV - 47337, // T:47.34 Rntc:4.545k ADC code:1280 Input voltage:375000uV - 45200, // T:45.2 Rntc:4.884k ADC code:1344 Input voltage:393750uV - 43135, // T:43.14 Rntc:5.238k ADC code:1408 Input voltage:412500uV - 41134, // T:41.13 Rntc:5.61k ADC code:1472 Input voltage:431250uV - 39186, // T:39.19 Rntc:6.0k ADC code:1536 Input voltage:450000uV - 37287, // T:37.29 Rntc:6.41k ADC code:1600 Input voltage:468750uV - 35433, // T:35.43 Rntc:6.842k ADC code:1664 Input voltage:487500uV - 33620, // T:33.62 Rntc:7.297k ADC code:1728 Input voltage:506250uV - 31842, // T:31.84 Rntc:7.778k ADC code:1792 Input voltage:525000uV - 30095, // T:30.1 Rntc:8.286k ADC code:1856 Input voltage:543750uV - 28377, // T:28.38 Rntc:8.824k ADC code:1920 Input voltage:562500uV - 26680, // T:26.68 Rntc:9.394k ADC code:1984 Input voltage:581250uV - 25000, // T:25.0 Rntc:10.0k ADC code:2048 Input voltage:600000uV - 23332, // T:23.33 Rntc:10.645k ADC code:2112 Input voltage:618750uV - 21675, // T:21.68 Rntc:11.333k ADC code:2176 Input voltage:637500uV - 20024, // T:20.02 Rntc:12.069k ADC code:2240 Input voltage:656250uV - 18382, // T:18.38 Rntc:12.857k ADC code:2304 Input voltage:675000uV - 16741, // T:16.74 Rntc:13.704k ADC code:2368 Input voltage:693750uV - 15100, // T:15.1 Rntc:14.615k ADC code:2432 Input voltage:712500uV - 13455, // T:13.46 Rntc:15.6k ADC code:2496 Input voltage:731250uV - 11801, // T:11.8 Rntc:16.667k ADC code:2560 Input voltage:750000uV - 10137, // T:10.14 Rntc:17.826k ADC code:2624 Input voltage:768750uV - 8454, // T:8.45 Rntc:19.091k ADC code:2688 Input voltage:787500uV - 6750, // T:6.75 Rntc:20.476k ADC code:2752 Input voltage:806250uV - 5022, // T:5.02 Rntc:22.0k ADC code:2816 Input voltage:825000uV - 3265, // T:3.27 Rntc:23.684k ADC code:2880 Input voltage:843750uV - 1472, // T:1.47 Rntc:25.556k ADC code:2944 Input voltage:862500uV - -361, // T:-0.36 Rntc:27.647k ADC code:3008 Input voltage:881250uV - -2238, // T:-2.24 Rntc:30.0k ADC code:3072 Input voltage:900000uV - -4171, // T:-4.17 Rntc:32.667k ADC code:3136 Input voltage:918750uV - -6170, // T:-6.17 Rntc:35.714k ADC code:3200 Input voltage:937500uV - -8248, // T:-8.25 Rntc:39.231k ADC code:3264 Input voltage:956250uV - -10419, // T:-10.42 Rntc:43.333k ADC code:3328 Input voltage:975000uV - -12711, // T:-12.71 Rntc:48.182k ADC code:3392 Input voltage:993750uV - -15137, // T:-15.14 Rntc:54.0k ADC code:3456 Input voltage:1012500uV - -17727, // T:-17.73 Rntc:61.111k ADC code:3520 Input voltage:1031250uV - -20519, // T:-20.52 Rntc:70.0k ADC code:3584 Input voltage:1050000uV - -23562, // T:-23.56 Rntc:81.429k ADC code:3648 Input voltage:1068750uV - -26937, // T:-26.94 Rntc:96.667k ADC code:3712 Input voltage:1087500uV - -30762, // T:-30.76 Rntc:118.0k ADC code:3776 Input voltage:1106250uV - -35224, // T:-35.22 Rntc:150.0k ADC code:3840 Input voltage:1125000uV - -40677, // T:-40.68 Rntc:203.333k ADC code:3904 Input voltage:1143750uV - -47755, // T:-47.76 Rntc:310.0k ADC code:3968 Input voltage:1162500uV - -57225, // T:-57.23 Rntc:630.0k ADC code:4032 Input voltage:1181250uV - -69859, // T:-69.86 Rntc:10000.0k ADC code:4096 Input voltage:1200000uV -}; -#elif defined(NCP15WF104F03RC) -static const int32_t gNTCLut[65] = { - 175093, // T:175.09 Rntc:0.0k ADC code:0 Input voltage:0uV - 140197, // T:140.2 Rntc:1.587k ADC code:64 Input voltage:18750uV - 116573, // T:116.57 Rntc:3.226k ADC code:128 Input voltage:37500uV - 102838, // T:102.84 Rntc:4.918k ADC code:192 Input voltage:56250uV - 93457, // T:93.46 Rntc:6.667k ADC code:256 Input voltage:75000uV - 86333, // T:86.33 Rntc:8.475k ADC code:320 Input voltage:93750uV - 80598, // T:80.6 Rntc:10.345k ADC code:384 Input voltage:112500uV - 75787, // T:75.79 Rntc:12.281k ADC code:448 Input voltage:131250uV - 71646, // T:71.65 Rntc:14.286k ADC code:512 Input voltage:150000uV - 67994, // T:67.99 Rntc:16.364k ADC code:576 Input voltage:168750uV - 64720, // T:64.72 Rntc:18.519k ADC code:640 Input voltage:187500uV - 61757, // T:61.76 Rntc:20.755k ADC code:704 Input voltage:206250uV - 59039, // T:59.04 Rntc:23.077k ADC code:768 Input voltage:225000uV - 56524, // T:56.52 Rntc:25.49k ADC code:832 Input voltage:243750uV - 54178, // T:54.18 Rntc:28.0k ADC code:896 Input voltage:262500uV - 51977, // T:51.98 Rntc:30.612k ADC code:960 Input voltage:281250uV - 49898, // T:49.9 Rntc:33.333k ADC code:1024 Input voltage:300000uV - 47928, // T:47.93 Rntc:36.17k ADC code:1088 Input voltage:318750uV - 46050, // T:46.05 Rntc:39.13k ADC code:1152 Input voltage:337500uV - 44250, // T:44.25 Rntc:42.222k ADC code:1216 Input voltage:356250uV - 42521, // T:42.52 Rntc:45.455k ADC code:1280 Input voltage:375000uV - 40853, // T:40.85 Rntc:48.837k ADC code:1344 Input voltage:393750uV - 39240, // T:39.24 Rntc:52.381k ADC code:1408 Input voltage:412500uV - 37676, // T:37.68 Rntc:56.098k ADC code:1472 Input voltage:431250uV - 36155, // T:36.16 Rntc:60.0k ADC code:1536 Input voltage:450000uV - 34671, // T:34.67 Rntc:64.103k ADC code:1600 Input voltage:468750uV - 33220, // T:33.22 Rntc:68.421k ADC code:1664 Input voltage:487500uV - 31797, // T:31.8 Rntc:72.973k ADC code:1728 Input voltage:506250uV - 30400, // T:30.4 Rntc:77.778k ADC code:1792 Input voltage:525000uV - 29025, // T:29.03 Rntc:82.857k ADC code:1856 Input voltage:543750uV - 27669, // T:27.67 Rntc:88.235k ADC code:1920 Input voltage:562500uV - 26328, // T:26.33 Rntc:93.939k ADC code:1984 Input voltage:581250uV - 24999, // T:25.0 Rntc:100.0k ADC code:2048 Input voltage:600000uV - 23681, // T:23.68 Rntc:106.452k ADC code:2112 Input voltage:618750uV - 22370, // T:22.37 Rntc:113.333k ADC code:2176 Input voltage:637500uV - 21064, // T:21.06 Rntc:120.69k ADC code:2240 Input voltage:656250uV - 19760, // T:19.76 Rntc:128.571k ADC code:2304 Input voltage:675000uV - 18455, // T:18.46 Rntc:137.037k ADC code:2368 Input voltage:693750uV - 17148, // T:17.15 Rntc:146.154k ADC code:2432 Input voltage:712500uV - 15835, // T:15.84 Rntc:156.0k ADC code:2496 Input voltage:731250uV - 14513, // T:14.51 Rntc:166.667k ADC code:2560 Input voltage:750000uV - 13179, // T:13.18 Rntc:178.261k ADC code:2624 Input voltage:768750uV - 11830, // T:11.83 Rntc:190.909k ADC code:2688 Input voltage:787500uV - 10463, // T:10.46 Rntc:204.762k ADC code:2752 Input voltage:806250uV - 9074, // T:9.07 Rntc:220.0k ADC code:2816 Input voltage:825000uV - 7658, // T:7.66 Rntc:236.842k ADC code:2880 Input voltage:843750uV - 6211, // T:6.21 Rntc:255.556k ADC code:2944 Input voltage:862500uV - 4728, // T:4.73 Rntc:276.471k ADC code:3008 Input voltage:881250uV - 3202, // T:3.2 Rntc:300.0k ADC code:3072 Input voltage:900000uV - 1626, // T:1.63 Rntc:326.667k ADC code:3136 Input voltage:918750uV - -6, // T:-0.01 Rntc:357.143k ADC code:3200 Input voltage:937500uV - -1710, // T:-1.71 Rntc:392.308k ADC code:3264 Input voltage:956250uV - -3495, // T:-3.5 Rntc:433.333k ADC code:3328 Input voltage:975000uV - -5376, // T:-5.38 Rntc:481.818k ADC code:3392 Input voltage:993750uV - -7371, // T:-7.37 Rntc:540.0k ADC code:3456 Input voltage:1012500uV - -9506, // T:-9.51 Rntc:611.111k ADC code:3520 Input voltage:1031250uV - -11819, // T:-11.82 Rntc:700.0k ADC code:3584 Input voltage:1050000uV - -14354, // T:-14.35 Rntc:814.286k ADC code:3648 Input voltage:1068750uV - -17179, // T:-17.18 Rntc:966.667k ADC code:3712 Input voltage:1087500uV - -20397, // T:-20.4 Rntc:1180.0k ADC code:3776 Input voltage:1106250uV - -24176, // T:-24.18 Rntc:1500.0k ADC code:3840 Input voltage:1125000uV - -28836, // T:-28.84 Rntc:2033.333k ADC code:3904 Input voltage:1143750uV - -35053, // T:-35.05 Rntc:3100.0k ADC code:3968 Input voltage:1162500uV - -44840, // T:-44.84 Rntc:6300.0k ADC code:4032 Input voltage:1181250uV - -63302, // T:-63.3 Rntc:100000.0k ADC code:4096 Input voltage:1200000uV -}; - -#else -#error "NTC type is not defined" -#endif - - -int32_t ntcGetTemperature(int32_t adcInputVoltage) -{ - if(adcInputVoltage <= 1200000) - { - int32_t step = 1200000 >> 6; - int32_t i = adcInputVoltage / step; - return gNTCLut[i] + ((int32_t)((gNTCLut[i + 1] - gNTCLut[i]) * (adcInputVoltage - (i * step))) / step); - } - else - { - return -256000; - } -} - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/plat_config.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/plat_config.c deleted file mode 100644 index c92de72..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/plat_config.c +++ /dev/null @@ -1,1518 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2019-, Copyrigths of EigenComm Ltd. - * File name: plat_config.c - * Description: platform configuration source file - * History: - * - ****************************************************************************/ - -#include -#include -#include -#include "ec7xx.h" -#include "plat_config.h" -#include "exception_process.h" -#include "sctdef.h" -#ifdef FEATURE_BOOTLOADER_PROJECT_ENABLE -#include "debug_trace.h" -#include "common.h" -#else -#include DEBUG_LOG_HEADER_FILE -#include "osasys.h" - -#define PLAT_CONFIG_FS_ENABLE -#endif - -#define PLATCONFIG_TEXT_SECTION SECTION_DEF_IMPL(.sect_platconfig_text) -#define PLATCONFIG_RODATA_SECTION SECTION_DEF_IMPL(.sect_platconfig_rodata) -#define PLATCONFIG_DATA_SECTION SECTION_DEF_IMPL(.sect_platconfig_data) -#define PLATCONFIG_BSS_SECTION SECTION_DEF_IMPL(.sect_platconfig_bss) - - - -/** \brief config file version - * \note when the order of struct \ref plat_config_fs_t and \ref plat_config_raw_flash_t field has changed, - * for example, from 1,2,3 to 1,3,2, update version to refresh flash, - * in other cases(add more fields or remove some fields from struct \ref plat_config_fs_t), it's not a must to update - */ - -// external API declarations -extern uint8_t FLASH_eraseSafe(uint32_t SectorAddress, uint32_t Size); -extern uint8_t FLASH_writeSafe(uint8_t* pData, uint32_t WriteAddr, uint32_t Size); -extern uint8_t FLASH_eraseSector(uint32_t BlockAddress); -extern uint8_t FLASH_write(uint8_t* pData, uint32_t WriteAddr, uint32_t Size); -extern uint8_t getOSState(void); - - -/** - \fn uint8_t BSP_CalcCrcValue(const uint8_t *buf, uint16_t bufSize) - \brief Calculate the "CRC" value of data buffer - \param[in] buf buffer pointer - \param[in] bufSize buffer size - \returns crcValue -*/ -PLAT_BL_CIRAM_FLASH_TEXT static uint8_t BSP_CalcCrcValue(const uint8_t *buf, uint16_t bufSize) -{ - uint32_t i = bufSize; - uint32_t a = 1, b = 0; - - EC_ASSERT(buf != NULL && bufSize > 0, buf, bufSize, 0); - - for (i = bufSize; i > 0; ) - { - a += (uint32_t)(buf[--i]); - b += a; - } - - return (uint8_t)(((a>>24)&0xFF)^((a>>16)&0xFF)^((a>>8)&0xFF)^((a)&0xFF)^ - ((b>>24)&0xFF)^((b>>16)&0xFF)^((b>>8)&0xFF)^((b)&0xFF)^ - (bufSize&0xFF)); -} - - -#ifdef PLAT_CONFIG_FS_ENABLE -PLATCONFIG_BSS_SECTION static uint8_t g_fsPlatConfigInitFlag = 0; -PLATCONFIG_BSS_SECTION static plat_config_fs_t g_fsPlatConfig; - -#if (FS_PLAT_CONFIG_FILE_CURRENT_VERSION==0) -/** - \fn void BSP_SetDefaultFsPlatConfig(void) - \brief set default value of "g_fsPlatConfig" - \return void -*/ -static void BSP_SetDefaultFsPlatConfig(void) -{ - g_fsPlatConfigInitFlag = 1; - - memset(&g_fsPlatConfig, 0x0, sizeof(g_fsPlatConfig)); - g_fsPlatConfig.atPortBaudRate = 115200; -} - -void BSP_LoadPlatConfigFromFs(void) -{ - OSAFILE fp = PNULL; - UINT32 readCount = 0; - UINT8 crcCheck = 0; - config_file_header_t fileHeader; - - /* - * open NVM file - */ - fp = OsaFopen("plat_config", "rb"); //read only - if (fp == PNULL) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_LoadPlatConfig_1, P_ERROR, - "Can't open 'plat_config' file, use the defult value"); - - BSP_SetDefaultFsPlatConfig(); - BSP_SavePlatConfigToFs(); - - return; - } - - /* - * read file header - */ - readCount = OsaFread(&fileHeader, sizeof(config_file_header_t), 1, fp); - if (readCount != 1) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_LoadPlatConfig_2, P_ERROR, - "Can't read 'plat_config' file header, use the defult value"); - - OsaFclose(fp); - - BSP_SetDefaultFsPlatConfig(); - BSP_SavePlatConfigToFs(); - - return; - } - - /* - * read file body, check validation and handle compatiblity issue - */ - if(fileHeader.version != FS_PLAT_CONFIG_FILE_CURRENT_VERSION) - { - if(fileHeader.version == 0) - { - } - // handle future version below - else if(0) - { - - } - else - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_LoadPlatConfig_5, P_ERROR, - "'plat_config' version:%d not right, use the defult value", fileHeader.version); - - OsaFclose(fp); - - BSP_SetDefaultFsPlatConfig(); - BSP_SavePlatConfigToFs(); - } - } - else - { - if(fileHeader.fileBodySize != sizeof(g_fsPlatConfig)) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_LoadPlatConfig_3, P_ERROR, - "'plat_config' version:%d file body size not right: (%u/%u), use the defult value", - fileHeader.version, fileHeader.fileBodySize, sizeof(plat_config_fs_t)); - - OsaFclose(fp); - - BSP_SetDefaultFsPlatConfig(); - BSP_SavePlatConfigToFs(); - } - else - { - readCount = OsaFread(&g_fsPlatConfig, sizeof(g_fsPlatConfig), 1, fp); - crcCheck = BSP_CalcCrcValue((uint8_t *)&g_fsPlatConfig, sizeof(g_fsPlatConfig)); - - OsaFclose(fp); - - if (readCount != 1 || crcCheck != fileHeader.checkSum) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_LoadPlatConfig_4, P_ERROR, - "Can't read 'plat_config' version:%d file body, or body not right, (%u/%u), use the defult value", - fileHeader.version, crcCheck, fileHeader.checkSum); - - BSP_SetDefaultFsPlatConfig(); - BSP_SavePlatConfigToFs(); - } - else - { - g_fsPlatConfigInitFlag = 1; - } - } - - } - - return; -} -#endif - -#if (FS_PLAT_CONFIG_FILE_CURRENT_VERSION>=1) - - - - -#define PLAT_CFG_SCALE_CONTROL_SIZE() (sizeof(g_fsPlatConfig.scaleAreaStartMark) + \ - sizeof(g_fsPlatConfig.scaleAreaEndMark) + \ - sizeof(g_fsPlatConfig.recScaleAreaGrpNum) + \ - sizeof(g_fsPlatConfig.recPrevArAllSzForUpg) + \ - sizeof(g_fsPlatConfig.scaleAreaAllSize)) - -#define PLAT_CFG_SCALE_CTRL_TAIL_SIZE() (sizeof(g_fsPlatConfig.scaleAreaEndMark) + \ - sizeof(g_fsPlatConfig.recScaleAreaGrpNum) + \ - sizeof(g_fsPlatConfig.recPrevArAllSzForUpg) + \ - sizeof(g_fsPlatConfig.scaleAreaAllSize)) - - - -#if (PLAT_CFG_GRP_CNT==1) -//CHECK the size align to grp unit -SIZE_OF_TYPE_EQUAL_TO_SZX(plat_cfg_sc_grp0_all_data_st, SCALE_AREA_GRP_UNIT_SIZE) - -//CHECK the size of plat_config_fs_t legal -SIZE_OF_TYPE_EQUAL_TO_CALX(plat_config_fs_t, PLAT_CFG_FIX_BASE_SIZE+PLAT_CFG_SCALE_CONTROL_SIZE()+SCALE_AREA_GRP_UNIT_SIZE*PLAT_CFG_GRP_CNT) -#else - -#error "plat cfg fs, scale area mode, group more then 1, add size check here" -#endif - - - -#define PLAT_CFG_SCALE_LOAD_FAST_PASS 1 - -#define PLAT_CFG_SCALE_LOAD_DEFAULT_ERR 2 - -#define PLAT_CFG_SCALE_LOAD_DWNGRADE_ERR 3 - -#define PLAT_CFG_SCALE_LOAD_SEEK_ERR 4 -#define PLAT_CFG_SCALE_LOAD_READ_ERR 5 - -#define PLAT_CFG_SCALE_LOAD_CRC_ERR 6 - -#define PLAT_CFG_SCALE_LOAD_BASESZ_ERR 7 -#define PLAT_CFG_SCALE_LOAD_SCALESZ_ERR 8 - -#define PLAT_CFG_SCALE_LOAD_MARKSTART_ERR 9 -#define PLAT_CFG_SCALE_LOAD_MARKEND_ERR 10 - - - -static void BSP_SetFsPlatCfgScalArCtrl(void) -{ - uint16_t cur_fixedBaseSize; - uint16_t cur_scaleAreaAllSize; - cur_fixedBaseSize = (uint8_t*)(&(g_fsPlatConfig.scaleAreaStartMark)) - (uint8_t*)(&(g_fsPlatConfig)); - cur_scaleAreaAllSize = sizeof(g_fsPlatConfig) -cur_fixedBaseSize; - - - g_fsPlatConfig.scaleAreaStartMark = PLAT_CFG_SCALE_START_MARK; - - //scalable area pure data already copied when upgrade or download, do not overwrited here - //g_fsPlatConfig.usbNetAdaptResult = 0; - g_fsPlatConfig.scaleAreaEndMark = PLAT_CFG_SCALE_END_MARK; - //g_fsPlatConfig.scaleAreaVerNum = 0; - - g_fsPlatConfig.scaleAreaEndMark = PLAT_CFG_SCALE_END_MARK; - g_fsPlatConfig.scaleAreaAllSize = cur_scaleAreaAllSize; - - //record previous scaleAreaAllSize before update to current plat cfg scalable area size - //current g_fsPlatConfig.scaleAreaAllSize == SCALE_AREA_SCALE_UNIT_SIZE, default0, no need set - //if (g_fsPlatConfig.scaleAreaAllSize >SCALE_AREA_SCALE_UNIT_SIZE) - //{ - // g_fsPlatConfig.recPrevArAllSzForUpg = g_fsPlatConfig.scaleAreaAllSize-SCALE_AREA_SCALE_UNIT_SIZE; - //} - #if (PLAT_CFG_GRP_CNT>=1) - g_fsPlatConfig.recScaleAreaGrpNum = PLAT_CFG_GRP_CNT -1; - #else - #error "plat cfg fs scale mode, area group number should large then 1" - #endif - - if (g_fsPlatConfig.scaleAreaAllSize >= (SCALE_AREA_GRP_UNIT_SIZE+ PLAT_CFG_SCALE_CONTROL_SIZE())) - { - g_fsPlatConfig.recPrevArAllSzForUpg = g_fsPlatConfig.scaleAreaAllSize-SCALE_AREA_GRP_UNIT_SIZE - PLAT_CFG_SCALE_CONTROL_SIZE(); - } - else - { - g_fsPlatConfig.recPrevArAllSzForUpg = 0; - } -} - - -#define CALC_BUF_SIZE 64 -PLAT_BL_CIRAM_FLASH_TEXT static uint8_t BSP_RdAndCalcCrcValue(OSAFILE fp, config_file_header_t *pfHead) -{ - UINT32 readCount = 0; - uint8_t Crc8; - uint32_t i ; - uint16_t bufSize; - uint32_t a = 1, b = 0; - uint16_t RestCalDataSz = pfHead->fileBodySize; - uint8_t buf[CALC_BUF_SIZE]; - - readCount = OsaFread(&buf, sizeof(buf), 1, fp); - while(RestCalDataSz>0) - { - if (RestCalDataSz >= CALC_BUF_SIZE) - { - bufSize = CALC_BUF_SIZE; - } - else - { - bufSize = RestCalDataSz; - } - RestCalDataSz -= bufSize; - if (OsaFseek(fp, sizeof(config_file_header_t)+RestCalDataSz, SEEK_SET)!=0) - { - return PLAT_CFG_SCALE_LOAD_SEEK_ERR; - } - - readCount = OsaFread(&buf, bufSize, 1, fp); - if (readCount!=1) - { - return PLAT_CFG_SCALE_LOAD_READ_ERR; - } - - for (i = bufSize; i > 0; ) - { - a += (uint32_t)(buf[--i]); - b += a; - } - - } - - //for (i = bufSize; i > 0; ) - //{ - // a += (uint32_t)(buf[--i]); - // b += a; - //} - Crc8 = (uint8_t)(((a>>24)&0xFF)^((a>>16)&0xFF)^((a>>8)&0xFF)^((a)&0xFF)^ - ((b>>24)&0xFF)^((b>>16)&0xFF)^((b>>8)&0xFF)^((b)&0xFF)^ - (bufSize&0xFF)); - if (pfHead->checkSum!=Crc8) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_RdAndCalcCrcValue_1, P_ERROR, - "plat_config crc not match, (%u/%u), ", Crc8, pfHead->checkSum); - return PLAT_CFG_SCALE_LOAD_CRC_ERR; - } - return 0; -} - - -/** - \fn void BSP_SetDefaultFsPlatConfig(void) - \brief set default value of "g_fsPlatConfig" - \return void -*/ -static void BSP_SetDefaultFsPlatConfig(void) -{ - //uint16_t cur_fixedBaseSize; - //uint16_t cur_scaleAreaAllSize; - - g_fsPlatConfigInitFlag = 1; - - memset(&g_fsPlatConfig, 0x0, sizeof(g_fsPlatConfig)); - //cur_fixedBaseSize = (uint8_t*)(&(g_fsPlatConfig.scaleAreaStartMark)) - (uint8_t*)(&(g_fsPlatConfig)); - //cur_scaleAreaAllSize = sizeof(g_fsPlatConfig) -cur_fixedBaseSize; - - g_fsPlatConfig.atPortBaudRate = 115200; - BSP_SetFsPlatCfgScalArCtrl(); - //g_fsPlatConfig.scaleAreaStartMark = PLAT_CFG_SCALE_START_MARK; - //g_fsPlatConfig.usbNetAdaptResult = 0; - //g_fsPlatConfig.scaleAreaEndMark = PLAT_CFG_SCALE_END_MARK; - //g_fsPlatConfig.scaleAreaVerNum = 0; - - - //g_fsPlatConfig.scaleAreaEndMark = PLAT_CFG_SCALE_END_MARK; - - //g_fsPlatConfig.scaleAreaAllSize = cur_scaleAreaAllSize; - //record previous scaleAreaAllSize before update to current plat cfg scalable area size - //current g_fsPlatConfig.scaleAreaAllSize == SCALE_AREA_SCALE_UNIT_SIZE, default0, no need set - //if (g_fsPlatConfig.scaleAreaAllSize >SCALE_AREA_SCALE_UNIT_SIZE) - //{ - // g_fsPlatConfig.recPrevArAllSzForUpg = g_fsPlatConfig.scaleAreaAllSize-SCALE_AREA_SCALE_UNIT_SIZE; - //} - -} - -void BSP_LoadPlatConfigFromFs(void) -{ - OSAFILE fp = PNULL; - UINT32 readCount = 0; - UINT8 crcCheck = 0; - config_file_header_t fileHeader; - - uint16_t cur_fixedBaseSize; - uint16_t cur_scaleAreaAllSize; - - uint16_t loaded_scaleAreaAllSize; - uint16_t loaded_scaleAreaStartMark; - uint16_t loaded_scaleAreaEndMark; - - uint16_t loaded_fixedBaseSize; - uint16_t loaded_recPrevArAllSzForUpg; - - uint8_t loadStat = PLAT_CFG_SCALE_LOAD_DEFAULT_ERR; - - uint8_t* p_g_fsPlatConfig; - - cur_fixedBaseSize = (uint8_t*)(&(g_fsPlatConfig.scaleAreaStartMark)) - (uint8_t*)(&(g_fsPlatConfig)); - cur_scaleAreaAllSize = sizeof(g_fsPlatConfig) -cur_fixedBaseSize; - - - BSP_SetDefaultFsPlatConfig(); - - /* - * open NVM file - */ - fp = OsaFopen("plat_config", "rb"); //read only - if (fp == PNULL) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_LoadPlatConfig_1, P_ERROR, - "Can't open 'plat_config' file, use the defult value"); - //Called - //BSP_SetDefaultFsPlatConfig(); - BSP_SavePlatConfigToFs(); - - return; - } - - /* - * read file header - */ - readCount = OsaFread(&fileHeader, sizeof(config_file_header_t), 1, fp); - if (readCount != 1) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_LoadPlatConfig_2, P_ERROR, - "Can't read 'plat_config' file header, use the defult value"); - - OsaFclose(fp); - //Called at start - //BSP_SetDefaultFsPlatConfig(); - BSP_SavePlatConfigToFs(); - - return; - } - - - /* - * read file body, check validation and handle compatiblity issue - */ - if(fileHeader.version != FS_PLAT_CONFIG_FILE_CURRENT_VERSION) - { - if(fileHeader.version == 0) - { - //memset(&g_fsPlatConfig, 0x0, sizeof(g_fsPlatConfig)); - if (cur_fixedBaseSize== fileHeader.fileBodySize) - { - //cur seek pos sizeof(config_file_header_t) - readCount = OsaFread(&g_fsPlatConfig, fileHeader.fileBodySize, 1, fp); - - if (readCount!=1) - { - //unlikely, reload all default data - BSP_SetDefaultFsPlatConfig(); - } - else - { - //already called in BSP_SetDefaultFsPlatConfig - //BSP_SetFsPlatCfgScalArCtrl(); - //g_fsPlatConfig.scaleAreaStartMark = PLAT_CFG_SCALE_START_MARK; - //g_fsPlatConfig.scaleAreaEndMark = PLAT_CFG_SCALE_END_MARK; - //the scaleAreaAllSize should final set to cur_scaleAreaAllSize - //g_fsPlatConfig.scaleAreaAllSize = cur_scaleAreaAllSize; - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_LoadPlatConfig_3, P_INFO, - "'plat_config' version 0, upgrade to plat config scale version %d", FS_PLAT_CONFIG_FILE_CURRENT_VERSION); - } - - } - //Called at start - //else { - // BSP_SetDefaultFsPlatConfig(); - //} - - OsaFclose(fp); - BSP_SavePlatConfigToFs(); - } - // handle future version below - else if(0) - { - - } - else - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_LoadPlatConfig_4, P_ERROR, - "'plat_config' version:%d not right, use the defult value", fileHeader.version); - - OsaFclose(fp); - //Called at start - //BSP_SetDefaultFsPlatConfig(); - BSP_SavePlatConfigToFs(); - } - } - else - { - //scalable update - - //Called at start - //BSP_SetDefaultFsPlatConfig(); - - //cur_fixedBaseSize = (uint8_t*)(&(g_fsPlatConfig.scalabeAreaMark)) - (uint8_t*)(&(g_fsPlatConfig)); - //pure scalable data area = sizeof(g_fsPlatConfig) - cur_fixedBaseSize- PLAT_CFG_SCALE_CONTROL_SIZE(); - - do { - - - if (fileHeader.fileBodySize>sizeof(g_fsPlatConfig)) - { - - // Dwngrade crc check - if (BSP_RdAndCalcCrcValue(fp, &fileHeader) != 0) - { - loadStat = PLAT_CFG_SCALE_LOAD_CRC_ERR; - break; - } - - ////////////////////////////////branch for downgrade start //////////////////////////////////////////////////////////////////////////////////// - // scaleAreaStartMark, scaleAreaPureData0-scaleAreaPureDataX, scaleAreaEndMark, recScaleAreaGrpNum , recPrevArAllSzForUpg,scaleAreaAllSize - //seek to loaded_scaleAreaEndMark - if (OsaFseek(fp, sizeof(config_file_header_t) + fileHeader.fileBodySize \ - - sizeof(g_fsPlatConfig.scaleAreaEndMark) \ - -sizeof(g_fsPlatConfig.recScaleAreaGrpNum) \ - -sizeof(loaded_recPrevArAllSzForUpg) \ - -sizeof(loaded_scaleAreaAllSize), \ - SEEK_SET)!=0) - { - loadStat = PLAT_CFG_SCALE_LOAD_SEEK_ERR; - break; - } - - - readCount = OsaFread(&loaded_scaleAreaEndMark, sizeof(loaded_scaleAreaEndMark), 1, fp); - if (readCount!=1) - { - loadStat = PLAT_CFG_SCALE_LOAD_READ_ERR; - break; - } - - if (loaded_scaleAreaEndMark!=PLAT_CFG_SCALE_END_MARK) - { - loadStat = PLAT_CFG_SCALE_LOAD_MARKEND_ERR; - break; - } - - if (OsaFseek(fp, sizeof(config_file_header_t) + fileHeader.fileBodySize \ - -sizeof(loaded_recPrevArAllSzForUpg) \ - -sizeof(loaded_scaleAreaAllSize), \ - SEEK_SET)!=0) - { - loadStat = PLAT_CFG_SCALE_LOAD_SEEK_ERR; - break; - } - - readCount = OsaFread(&loaded_recPrevArAllSzForUpg, sizeof(loaded_recPrevArAllSzForUpg), 1, fp); - if (readCount!=1) - { - loadStat = PLAT_CFG_SCALE_LOAD_READ_ERR; - break; - } - readCount = OsaFread(&loaded_scaleAreaAllSize, sizeof(loaded_scaleAreaAllSize), 1, fp); - if (readCount!=1) - { - loadStat = PLAT_CFG_SCALE_LOAD_READ_ERR; - break; - } - if ((loaded_recPrevArAllSzForUpg!=cur_scaleAreaAllSize) ||(loaded_recPrevArAllSzForUpg > loaded_scaleAreaAllSize)) - { - loadStat = PLAT_CFG_SCALE_LOAD_DWNGRADE_ERR; - break; - } - - loaded_fixedBaseSize = fileHeader.fileBodySize -loaded_scaleAreaAllSize; - if (loaded_fixedBaseSize!=cur_fixedBaseSize) - { - loadStat = PLAT_CFG_SCALE_LOAD_BASESZ_ERR; - break; - } - - //branch for dowgrade, seek to sizeof(config_file_header_t) - if (OsaFseek(fp, sizeof(config_file_header_t), SEEK_SET)!=0) - { - loadStat = PLAT_CFG_SCALE_LOAD_SEEK_ERR; - break; - } - - // loaded layout loaded_fixedBaseSize, loaded_scaleAreaStartMark, loaded_scaleAreaPureData0-loaded_scaleAreaPureDataX - // real_read_X=cur_fixedBaseSize-PLAT_CFG_SCALE_CONTROL_SIZE - // - - readCount = OsaFread(&g_fsPlatConfig, cur_fixedBaseSize + cur_scaleAreaAllSize - PLAT_CFG_SCALE_CTRL_TAIL_SIZE(), 1, fp); - if (readCount!=1) - { - loadStat = PLAT_CFG_SCALE_LOAD_READ_ERR; - break; - } - - if (g_fsPlatConfig.scaleAreaStartMark!=PLAT_CFG_SCALE_START_MARK) - { - loadStat = PLAT_CFG_SCALE_LOAD_MARKSTART_ERR; - break; - } - - BSP_SetFsPlatCfgScalArCtrl(); - loadStat = 0; - //all valid data will be loaded to g_fsPlatConfig - //fileHeader.fileBodySize == loaded_fixedBaseSize + loaded_scaleAreaAllSize; - //sizeof(g_fsPlatConfig) == cur_fixedBaseSize + cur_scaleAreaAllSize - break; - - ////////////////////////////////branch for downgrade end /////////////////////////////////////////////////////////////////////////////// - } - - ////////////////////////////////branch for upgrade end //////////////////////////////////////////////////////////////////////////////////// - //cur seek pos sizeof(config_file_header_t) - readCount = OsaFread(&g_fsPlatConfig, fileHeader.fileBodySize, 1, fp); - if (readCount!=1) - { - loadStat = PLAT_CFG_SCALE_LOAD_READ_ERR; - break; - } - p_g_fsPlatConfig = (uint8_t*)(&g_fsPlatConfig); - - crcCheck = BSP_CalcCrcValue(p_g_fsPlatConfig, fileHeader.fileBodySize); - - - if (crcCheck != fileHeader.checkSum) - { - loadStat = PLAT_CFG_SCALE_LOAD_CRC_ERR; - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_LoadPlatConfig_6, P_ERROR, - "Can't read 'plat_config' crc not match, (%u/%u), ", crcCheck, fileHeader.checkSum); - break; - } - - if(fileHeader.fileBodySize == sizeof(g_fsPlatConfig)) - { - loadStat = PLAT_CFG_SCALE_LOAD_FAST_PASS; - break; - } - - //init loaded_scaleAreaAllSize from p_g_fsPlatConfig +fileBodySize - 2 bytes - loaded_scaleAreaAllSize = *((uint16_t*)(p_g_fsPlatConfig + fileHeader.fileBodySize- sizeof(g_fsPlatConfig.scaleAreaAllSize))); - loaded_fixedBaseSize = fileHeader.fileBodySize -loaded_scaleAreaAllSize; - if (loaded_fixedBaseSize!=cur_fixedBaseSize) - { - loadStat = PLAT_CFG_SCALE_LOAD_BASESZ_ERR; - break; - } - - if(loaded_scaleAreaAllSize< PLAT_CFG_SCALE_CONTROL_SIZE()) - { - loadStat = PLAT_CFG_SCALE_LOAD_SCALESZ_ERR; - break; - } - - //start mark loc same to cur g_fsPlatConfig.scaleAreaStartMark - loaded_scaleAreaStartMark = g_fsPlatConfig.scaleAreaStartMark; - loaded_scaleAreaEndMark = *((uint16_t*)(p_g_fsPlatConfig + fileHeader.fileBodySize - -PLAT_CFG_SCALE_CTRL_TAIL_SIZE())); - - - if (loaded_scaleAreaStartMark!=PLAT_CFG_SCALE_START_MARK) - { - loadStat = PLAT_CFG_SCALE_LOAD_MARKSTART_ERR; - break; - } - - if (loaded_scaleAreaEndMark!=PLAT_CFG_SCALE_END_MARK) - { - loadStat = PLAT_CFG_SCALE_LOAD_MARKEND_ERR; - break; - } - - - BSP_SetFsPlatCfgScalArCtrl(); - loadStat = 0; - - }while(0); - - if(loadStat==0) - { - //update - //give cond: fileHeader.fileBodySize<=sizeof(g_fsPlatConfig) - // cur_fixedBaseSize == loaded_fixedBaseSize - // sizeof(g_fsPlatConfig) == cur_scaleAreaAllSize + cur_fixedBaseSize; - // fileHeader.fileBodySize == (loaded_scaleAreaAllSize + loaded_fixedBaseSize); - //if cur_scaleAreaAllSize -#include -#include "bsp.h" -#include "bsp_custom.h" -#include "osasys.h" -#include "ostask.h" -#include "slpman.h" -#include "tpComm.h" -#include "sctdef.h" -#ifdef FEATURE_SUBSYS_SYSLOG_ENABLE -#include "syslog.h" -#endif -#ifdef FEATURE_SUBSYS_OPENHAL_ENABLE -#include "api_comm.h" -AP_PLAT_COMMON_BSS uint32_t tp_irq_padId = 0; -AP_PLAT_COMMON_BSS uint32_t tp_irq_PinId = 0; -AP_PLAT_COMMON_BSS uint32_t tp_i2c_usrId = 0; -#endif -extern ARM_DRIVER_I2C Driver_I2C0; -AP_PLAT_COMMON_DATA ARM_DRIVER_I2C *i2cMasterDrv = &CREATE_SYMBOL(Driver_I2C, 0); -/** - \fn - \brief - \return -*/ -#ifndef FEATURE_SUBSYS_OPENHAL_ENABLE -AP_PLAT_COMMON_BSS static tpIsrFunc tpIsrCb = NULL; -void tpGpioIsr(uint32_t index) -{ - uint16_t portIrqMask = GPIO_saveAndSetIrqMask(TP_IRQ_GPIO_INSTANCE); - if (GPIO_getInterruptFlags(TP_IRQ_GPIO_INSTANCE) & (1 << TP_IRQ_GPIO_PIN)){ - GPIO_clearInterruptFlags(TP_IRQ_GPIO_INSTANCE, 1 << TP_IRQ_GPIO_PIN); - if(tpIsrCb != NULL){ - tpIsrCb(index); - } - } - GPIO_restoreIrqMask(TP_IRQ_GPIO_INSTANCE, portIrqMask); -} -#endif -/** - \fn - \brief - \return -*/ -void tpIsrInit(void *cb) -{ - PadConfig_t padConfig = {0}; - PAD_getDefaultConfig(&padConfig); - padConfig.pullUpEnable = PAD_PULL_UP_DISABLE; - padConfig.pullDownEnable = PAD_PULL_DOWN_DISABLE; - padConfig.mux = TP_IRQ_PAD_ALT_FUNC; - #ifdef FEATURE_SUBSYS_OPENHAL_ENABLE - tp_irq_padId = api_pad_create(TP_IRQ_PAD_INDEX, &padConfig); - api_pad_open(tp_irq_padId,NULL,0); - #else - PAD_setPinConfig(TP_IRQ_PAD_INDEX, &padConfig); - #endif - GpioPinConfig_t pinConfig = {0}; - pinConfig.pinDirection = GPIO_DIRECTION_INPUT; - pinConfig.misc.interruptConfig = GPIO_INTERRUPT_RISING_EDGE; - #ifdef FEATURE_SUBSYS_OPENHAL_ENABLE - tp_irq_PinId = api_gpio_create((TP_IRQ_GPIO_INSTANCE*16+TP_IRQ_GPIO_PIN), &pinConfig); - api_gpio_open(tp_irq_PinId,NULL,0); - api_gpio_ioctl(tp_irq_PinId,OPEN_GPIO_IOCTL_ISR_CB,cb); - #else - tpIsrCb = cb; - GPIO_pinConfig(TP_IRQ_GPIO_INSTANCE, TP_IRQ_GPIO_PIN, &pinConfig); - XIC_SetVector(PXIC1_GPIO_IRQn, tpGpioIsr); - XIC_EnableIRQ(PXIC1_GPIO_IRQn); - #endif - // SYSLOG_PRINT(SL_INFO, "tpirq[%x],[%x]\r\n",tp_irq_PinId,tp_i2c_usrId); -} -/** - \fn - \brief - \return -*/ -void tpRstInit(void) -{ - #ifdef TP_RST_GPIO_PIN - PadConfig_t padConfig = {0}; - PAD_getDefaultConfig(&padConfig); - padConfig.pullUpEnable = PAD_PULL_UP_DISABLE; - padConfig.pullDownEnable = PAD_PULL_DOWN_DISABLE; - padConfig.mux = TP_RST_PAD_ALT_FUNC; - PAD_setPinConfig(TP_RST_PAD_INDEX, &padConfig); - - GpioPinConfig_t gpioCfg = {0}; - gpioCfg.pinDirection = GPIO_DIRECTION_OUTPUT; - gpioCfg.misc.initOutput = 1; - GPIO_pinConfig(TP_RST_GPIO_INSTANCE, TP_RST_GPIO_PIN, &gpioCfg); - #endif -} -/** - \fn - \brief - \return -*/ -void tpBusInit(void) -{ - #ifdef FEATURE_SUBSYS_OPENHAL_ENABLE - tp_i2c_usrId = api_i2c_create(0,NULL); - api_i2c_open(tp_i2c_usrId,NULL,0); - // SYSLOG_PRINT(SL_INFO, "0x%X\r\n",tp_i2c_usrId); - #else - i2cMasterDrv->Uninitialize(); - i2cMasterDrv->Initialize(NULL); - i2cMasterDrv->PowerControl(ARM_POWER_FULL); - i2cMasterDrv->Control(ARM_I2C_BUS_SPEED, ARM_I2C_BUS_SPEED_FAST); - i2cMasterDrv->Control(ARM_I2C_BUS_CLEAR, 0); - #endif - // TP_TRACE(tpBusInit, 1, "I2C_IO_MODE:%d",I2C_IO_MODE); -} -/** - \fn - \brief - \return -*/ -void tpBusDeInit(void) -{ - i2cMasterDrv->Uninitialize(); -} -/** - \fn - \brief - \return -*/ -uint8_t tp_i2c_read(uint8_t dev_id, uint8_t reg_addr, uint16_t len, uint8_t *data) -{ - i2cMasterDrv->MasterTransmit(dev_id, ®_addr, 1, true); - i2cMasterDrv->MasterReceive(dev_id, data, len, false); - return 0; -} -/** - \fn - \brief - \return -*/ -uint8_t tp_i2c_send(uint8_t dev_id, uint8_t reg_addr, uint16_t len, uint8_t *data) -{ - uint8_t * tempBuffer = callocEc(len+1,sizeof(char)); - memcpy(tempBuffer+1,data,len); - tempBuffer[0] = reg_addr; - i2cMasterDrv->MasterTransmit(dev_id, tempBuffer, len+1, false); - freeEc(tempBuffer); - return 0; -} - -#endif \ No newline at end of file diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/tp/tpDev/ft6336.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/tp/tpDev/ft6336.c deleted file mode 100644 index 962c397..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/tp/tpDev/ft6336.c +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2024-, Copyrigths of EigenComm Ltd. - * File name: ft6336.c - * Description: ec7xx ft6336 driver source file - * History: Rev1.1 2024-03-08 - * - ****************************************************************************/ -#ifdef FEATURE_TP_FT6336_ENABLE -#include -#include -#include "tpDrv.h" -#include "tpComm.h" -#include "ft6336.h" -#ifdef FEATURE_SUBSYS_SYSLOG_ENABLE -#include "syslog.h" -#endif -#include "sctdef.h" - -/** - \fn - \brief - \return -*/ -int tp_ft6336_send(uint8_t regAddr, uint8_t* buf,uint8_t len) -{ - return tp_i2c_send(FT6336_ADDR, regAddr, len, buf); -} -/** - \fn - \brief - \return -*/ -int tp_ft6336_read(uint8_t regAddr, uint8_t* buf,uint8_t len) -{ - return tp_i2c_read(FT6336_ADDR, regAddr, len, buf); -} - -/** - \fn - \brief - \return -*/ -uint8_t tp_ft6336_scan(int16_t *pos) -{ - uint8_t temp[8]={0}; - uint8_t fingerNum = 0; - tp_ft6336_read(FT6336_GET_FINGERNUM,&fingerNum,1); - if(fingerNum) - { - tp_ft6336_read(FT6336_GET_LOC0,temp,4); - pos[0]=((uint16_t)(temp[0]&0x0F)<<8)+temp[1]; - pos[1]=(((uint16_t)(temp[2]&0x0F)<<8)+temp[3]); - // printf("x1:%d,y1:%d\r\n",pos[0], pos[1]); - if(fingerNum>1) - { - tp_ft6336_read(FT6336_GET_LOC1,&temp[4],4); - pos[2]=((uint16_t)(temp[4]&0x0F)<<8)+temp[5]; - pos[3]=(((uint16_t)(temp[6]&0x0F)<<8)+temp[7]); - } - } - return fingerNum; -} -/** - \fn - \brief - \return -*/ - -static int tp_ft6336_init(void* cb) -{ - SYSLOG_INFO("ID\r\n"); - return 0; -} -/** - \fn - \brief - \return -*/ -AP_PLAT_COMMON_DATA tpDrvFunc_t ft6336Drv = -{ - .init = tp_ft6336_init, - .send = tp_ft6336_send, - .read = tp_ft6336_read, - .scan = tp_ft6336_scan, -}; -/** - \fn - \brief - \return -*/ -AP_PLAT_COMMON_DATA tpDrvPra_t ft6336Pra = -{ - .id = 0x6336, - .width = 240, - .height = 320, -}; -#endif \ No newline at end of file diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/tp/tpDrv.c b/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/tp/tpDrv.c deleted file mode 100644 index c0427e5..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_ref_1h00/src/tp/tpDrv.c +++ /dev/null @@ -1,232 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2023-, Copyrigths of EigenComm Ltd. - * File name: tpDrv.c - * Description: ec7xx tpDrv driver source file - * History: Rev1.0 2023-09-18 - * - ****************************************************************************/ -#ifdef FEATURE_DRIVER_TP_ENABLE -#include -#include -#include "bsp.h" -#include "bsp_custom.h" -#include "osasys.h" -#include "ostask.h" -#include "slpman.h" -#include "tpDrv.h" - -#ifdef FEATURE_SUBSYS_SYSLOG_ENABLE -#include "syslog.h" -#endif - -#ifdef FEATURE_TP_FT6336_ENABLE -#include "ft6336.h" -extern tpDrvFunc_t ft6336Drv; -extern tpDrvPra_t ft6336Pra; -#endif -#ifdef FEATURE_TP_CST816_ENABLE -#include "cst816.h" -extern tpDrvFunc_t cst816Drv; -extern tpDrvPra_t cst816Pra; -#endif -#ifdef FEATURE_TP_GT911_ENABLE -#include "gt911.h" -extern tpDrvFunc_t gt911Drv; -extern tpDrvPra_t gt911Pra; -#endif -#include "sctdef.h" - -AP_PLAT_COMMON_BSS static tpDev_t tpDevList[SUPPORT_TP_NUM] ; -AP_PLAT_COMMON_DATA static tpObj_t tpObjList[SUPPORT_TP_NUM] = -{ - {"ft6336", 0x6336}, - {"cst816", 0x816}, - {"gt911", 0x911}, -}; - -AP_PLAT_COMMON_BSS int16_t xy_pos[4]={0}; -AP_PLAT_COMMON_BSS int16_t last_xy_pos[4]={0}; -AP_PLAT_COMMON_BSS static bool is_pressed = false; -#ifndef FEATURE_SUBSYS_INPUT_ENABLE -AP_PLAT_COMMON_BSS static osSemaphoreId_t tpSemaphore = NULL; -#endif - -#define TP_TRACE(subId, argLen, format, ...) \ - ECOMM_TRACE(UNILOG_TP, subId, P_VALUE, argLen, format, ##__VA_ARGS__) -/** - \fn - \brief - \return -*/ -void tpIsrCallback(uint32_t data) -{ - #ifdef FEATURE_SUBSYS_INPUT_ENABLE - inputNotify(); - #else - if (tpSemaphore != NULL) - { - osSemaphoreRelease(tpSemaphore); - } - #endif -} -/** - \fn - \brief - \return -*/ -bool tpPressed(void) -{ - // SYSLOG_INFO("get\r\n"); - return is_pressed; -} -/** - \fn - \brief - \return -*/ -uint8_t tpScan(tpDev_t* tpDev) -{ - uint8_t fingers = 0; - if (tpDev!=NULL) fingers = tpDev->drv->scan(xy_pos); - if(fingers) - { - if(xy_pos[0]!=last_xy_pos[0] || xy_pos[1]!=last_xy_pos[1]) - { - is_pressed = true; - TP_TRACE(tpScan, 5, "%d,%d->%d,%d->%d",fingers,last_xy_pos[0],xy_pos[0],last_xy_pos[1],xy_pos[1]); - SYSLOG_INFO("[%d]%d->%d,%d->%d\r\n",fingers,last_xy_pos[0],xy_pos[0],last_xy_pos[1],xy_pos[1]); - memcpy(last_xy_pos,xy_pos,sizeof(xy_pos)); - } - } - return fingers; -} -/** - \fn - \brief - \return -*/ -void tpData(int16_t* x,int16_t* y) -{ - if(is_pressed) - { - *x=xy_pos[0]; - *y=xy_pos[1]; - is_pressed = false; - // SYSLOG_INFO("clean\r\n"); - } -} - - -/** - \fn - \brief - \return -*/ -void tpLoop(tpDev_t* tpDev,uint32_t timeout) -{ - #ifndef FEATURE_SUBSYS_INPUT_ENABLE - osSemaphoreAcquire(tpSemaphore, timeout); - #else - osDelay(timeout); - #endif - tpScan(tpDev); -} -/** - \fn - \brief - \return -*/ -static uint8_t tpFind(tpDev_t *tpList) -{ - uint8_t cnt = 0; - if (tpList == NULL) return SUPPORT_TP_NUM; - for (uint8_t i = 0; i < SUPPORT_TP_NUM; i++) - { - tpDev_t *pdev = NULL; - memset(tpList + cnt, 0, sizeof(tpDev_t)); - #ifdef FEATURE_TP_FT6336_ENABLE - if (tpObjList[i].id == ft6336Pra.id) - { - pdev = tpList + cnt; - cnt++; - pdev->pra = &ft6336Pra; - pdev->drv = &ft6336Drv; - pdev->obj = &tpObjList[i]; - } - #endif - #ifdef FEATURE_TP_CST816_ENABLE - if (tpObjList[i].id == cst816Pra.id) - { - pdev = tpList + cnt; - cnt++; - pdev->pra = &cst816Pra; - pdev->drv = &cst816Drv; - pdev->obj = &tpObjList[i]; - } - #endif - #ifdef FEATURE_TP_GT911_ENABLE - if (tpObjList[i].id == gt911Pra.id) - { - pdev = tpList + cnt; - cnt++; - pdev->pra = >911Pra; - pdev->drv = >911Drv; - pdev->obj = &tpObjList[i]; - } - #endif - } - // Return the count of populated LCD devices - return cnt; -} -/** - \fn - \brief - \return -*/ -int tpInit(void* tp_cb) -{ - uint8_t num = tpFind(tpDevList); - if (num > INSTALL_TP_NUM) num = INSTALL_TP_NUM; - if(num){ - #ifndef FEATURE_SUBSYS_INPUT_ENABLE - if(tpSemaphore != NULL){ - osSemaphoreDelete(tpSemaphore); - } - tpSemaphore = osSemaphoreNew(1, 1, NULL); - #endif - tpBusInit(); - tpRstInit(); - } - for (uint8_t i = 0; i < num; i++) - { - if (tpDevList[i].obj->id) - { - tpDev_t *pdev = &tpDevList[i]; - pdev->drv->init(tp_cb); - } - } - if(num) tpIsrInit(tpIsrCallback); - return num; -} -/** - \fn - \brief - \return -*/ -tpDev_t* tpOpen(char* name) -{ - if(name == NULL) return NULL; - for (uint8_t i = 0; i < INSTALL_TP_NUM; i++) - { - tpDev_t *pdev = &tpDevList[i]; - // SYSLOG_INFO("0x%X,%s,%s\r\n",pdev->obj->id,pdev->obj->name,name); - if (pdev->obj->id != 0 && strcasecmp(name, pdev->obj->name) == 0) - { - SYSLOG_INFO("%d:0x%X,%s\r\n",i,pdev->obj->id,pdev->obj->name); - return pdev; - } - } - return NULL; -} -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/Makefile.inc b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/Makefile.inc deleted file mode 100644 index f139f1a..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/Makefile.inc +++ /dev/null @@ -1,50 +0,0 @@ -CFLAGS_INC += -I$(TOP)/PLAT/driver/board/$(TARGET)/inc \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/eeprom \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/camera \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/camera/cameraDev \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/codec \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/codec/codecDev \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/lcd/lcdDev \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/lcd \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/tp/tpDev \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/tp \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/ntc \ - -I$(TOP)/PLAT/driver/board/$(TARGET)/inc/exstorage - -libdriver-$(DRIVER_PLATCFG_ENABLE) += PLAT/driver/board/$(TARGET)/src/plat_config.o -libdriver-$(DRIVER_ECMAIN_ENABLE) += PLAT/driver/board/$(TARGET)/src/bsp.o -libdriverprivate-$(DRIVER_ECMAIN_ENABLE) += PLAT/driver/board/$(TARGET)/src/ec_main.o -libdriver-$(DRIVER_EEPROM_ENABLE) += PLAT/driver/board/$(TARGET)/src/eeprom/eepRom.o -libdriver-$(DRIVER_CAMERA_ENABLE) += PLAT/driver/board/$(TARGET)/src/camera/cameraDrv.o \ - PLAT/driver/board/$(TARGET)/src/camera/cameraDev/gc032A.o \ - PLAT/driver/board/$(TARGET)/src/camera/cameraDev/gc6153.o - -ifeq ($(DRIVER_CODEC_ENABLE), y) -libdriver-$(DRIVER_CODEC8311_ENABLE) += PLAT/driver/board/$(TARGET)/src/codec/codecDev/es8311.o -libdriver-$(DRIVER_CODEC8374_ENABLE) += PLAT/driver/board/$(TARGET)/src/codec/codecDev/es8374.o -libdriver-$(DRIVER_CODEC8211_ENABLE) += PLAT/driver/board/$(TARGET)/src/codec/codecDev/tm8211.o -libdriver-$(DRIVER_CODEC7111_ENABLE) += PLAT/driver/board/$(TARGET)/src/codec/codecDev/es7111.o -libdriver-$(DRIVER_CODEC7149_ENABLE) += PLAT/driver/board/$(TARGET)/src/codec/codecDev/es7149.o -libdriver-y +=PLAT/driver/board/$(TARGET)/src/codec/codecDrv.o -endif - -libdriver-$(DRIVER_LCD_ENABLE) += PLAT/driver/board/$(TARGET)/src/lcd/lcdComm.o \ - PLAT/driver/board/$(TARGET)/src/lcd/disFormat.o \ - PLAT/driver/board/$(TARGET)/src/lcd/lcdDrv.o - -ifeq ($(DRIVER_LCD_ENABLE), y) -libdriver-$(DRIVER_LCD_ST7789_ENABLE) += PLAT/driver/board/$(TARGET)/src/lcd/lcdDev/lcdDev_7789.o -libdriver-$(DRIVER_LCD_ST77903_ENABLE) += PLAT/driver/board/$(TARGET)/src/lcd/lcdDev/lcdDev_77903.o -libdriver-$(DRIVER_LCD_AXS15231_ENABLE) += PLAT/driver/board/$(TARGET)/src/lcd/lcdDev/lcdDev_15231.o -libdriver-$(DRIVER_LCD_CO5300_ENABLE) += PLAT/driver/board/$(TARGET)/src/lcd/lcdDev/lcdDev_5300.o -endif - -libdriver-$(DRIVER_TP_ENABLE) += PLAT/driver/board/$(TARGET)/src/tp/tpDrv.o \ - PLAT/driver/board/$(TARGET)/src/tp/tpComm.o - -libdriver-$(DRIVER_EXSTORAGE_ENABLE) += PLAT/driver/board/$(TARGET)/src/exstorage/ex_flash.o \ - PLAT/driver/board/$(TARGET)/src/exstorage/ex_storage.o - -ifeq ($(DRIVER_TP_ENABLE), y) -libdriver-$(DRIVER_TP_FT6336_ENABLE) += PLAT/driver/board/$(TARGET)/src/tp/tpDev/ft6336.o -endif \ No newline at end of file diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/bsp.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/bsp.h deleted file mode 100644 index abe3e4d..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/bsp.h +++ /dev/null @@ -1,104 +0,0 @@ -#ifndef BSP_H -#define BSP_H - -#ifdef __cplusplus -extern "C" { -#endif -#include "version.h" -#include "Driver_Common.h" -#include "Driver_I2C.h" -#include "Driver_SPI.h" -#include "Driver_USART.h" -#include "RTE_Device.h" -#include "pad.h" -#include "gpio.h" -#include "ic.h" -#include "dma.h" -#include "clock.h" - -#define STRING_EOL "\r\n" - -#if (defined TYPE_EC718S) -#define CHIP_TYPE "EC718S" -#elif (defined TYPE_EC718H) -#define CHIP_TYPE "EC718H" -#elif (defined TYPE_EC718P) -#define CHIP_TYPE "EC718P" -#elif (defined TYPE_EC718U) -#define CHIP_TYPE "EC718U" -#elif (defined TYPE_EC718PM) -#define CHIP_TYPE "EC718PM" -#elif (defined TYPE_EC718UM) -#define CHIP_TYPE "EC718UM" -#elif (defined TYPE_EC718SM) -#define CHIP_TYPE "EC718SM" -#elif (defined TYPE_EC718HM) -#define CHIP_TYPE "EC718HM" -#elif (defined TYPE_EC716S) -#define CHIP_TYPE "EC716S" -#elif (defined TYPE_EC716E) -#define CHIP_TYPE "EC716E" -#endif - -#define BOARD_NAME CHIP_TYPE"_EVK" - - -#define SDK_VERSION CHIP_TYPE"_SW_V"SDK_MAJOR_VERSION"."SDK_MINOR_VERSION"."SDK_PATCH_VERSION -#define EVB_VERSION CHIP_TYPE"_HW_V"EVB_MAJOR_VERSION"."EVB_MINOR_VERSION -#define VERSION_INFO "-- SDK Version: "SDK_VERSION" -- "STRING_EOL"-- EVB Version: "EVB_VERSION" -- "STRING_EOL - -#define BSP_HEADER STRING_EOL"-- Board: "BOARD_NAME " -- "STRING_EOL \ - VERSION_INFO \ - "-- Compiled: "__DATE__" "__TIME__" -- "STRING_EOL - -#define ATI_VERSION_INFO STRING_EOL"-- Board: "BOARD_NAME " -- "STRING_EOL \ - "-- SDK Version: "SDK_VERSION" -- "STRING_EOL - -#define SOFTVERSION "V"SDK_MAJOR_VERSION"."SDK_MINOR_VERSION"."SDK_PATCH_VERSION - - -#define CREATE_SYMBOL(name, port) name##port - -/** @brief UART port index - * | UART port | Hardware Flow Control | - * |-----------|-----------------------| - * | UART0 | Y | - * | UART1 | Y | - * | UART2 | N | - */ -typedef enum usart_port -{ - PORT_USART_0, /**< USART port 0. */ - PORT_USART_1, /**< USART port 1. */ - PORT_USART_2, /**< USART port 2. */ - PORT_USART_3, /**< USART port 3. */ - PORT_USART_MAX, /**< The total number of USART ports (invalid UART port number). */ - PORT_USART_INVALID /**< USART invalid. */ -} usart_port_t; - -extern ARM_DRIVER_USART *UsartPrintHandle; -extern ARM_DRIVER_USART *UsartUnilogHandle; -extern ARM_DRIVER_USART *UsartAtCmdHandle; - -/** @brief IRQ Callback functions - */ -typedef void (*IRQ_Callback_t)(); - - -uint8_t* getBuildInfo(void); -uint8_t* getATIVersionInfo(void); -uint8_t* getVersionInfo(void); -uint32_t getUnilogUartPort(void); -void getUnilogRamLogBuff(uint32_t *addr, uint32_t *len); -void FlushUnilogOutput(void); -void SetUnilogUart(usart_port_t port, uint32_t baudrate, bool startRecv); -void BSP_CommonInit(void); -void setOSState(uint8_t state); -uint8_t * getDebugDVersion(void); -void delay_us(uint32_t us); - -#ifdef __cplusplus -} -#endif - -#endif /* BSP_H */ diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/camera/cameraDev/gc032A.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/camera/cameraDev/gc032A.h deleted file mode 100644 index 9ad72aa..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/camera/cameraDev/gc032A.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef GC032A_H -#define GC032A_H - -#define GC032A_I2C_ADDR 0x21 - -uint16_t gc032aGetRegCnt(char* regName); - -#endif - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/camera/cameraDev/gc6153.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/camera/cameraDev/gc6153.h deleted file mode 100644 index e94f595..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/camera/cameraDev/gc6153.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef GC6153_H -#define GC6153_H - -#define GC6153_I2C_ADDR 0x40 - -uint16_t gc6153GetRegCnt(char* regName); - -#endif - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/camera/cameraDrv.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/camera/cameraDrv.h deleted file mode 100644 index 25aa879..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/camera/cameraDrv.h +++ /dev/null @@ -1,173 +0,0 @@ -#ifndef __CAMERA_DRV_H__ -#define __CAMERA_DRV_H__ - -#include "cspi.h" -#include "gc032A.h" -#include "gc6153.h" - -/** - \addtogroup cam_interface_gr - \{ - */ - -typedef struct -{ - uint8_t regAddr; ///< Sensor I2C register address - uint8_t regVal; ///< Sensor I2C register value -}camI2cCfg_t; - -typedef enum -{ - CAM_LSB_MODE = 0, ///< Little endian - CAM_MSB_MODE = 1, ///< Big endian -}endianMode_e; - -typedef enum -{ - WIRE_1 = 0, ///< 1 wire - WIRE_2 = 1, ///< 2 wire -}wireNum_e; - - -typedef enum -{ - SEQ_0 = 0, ///< rxd[0] 6 4 2 0 - ///< rxd[1] 7 5 3 1 - SEQ_1 = 1, ///< rxd[1] 6 4 2 0 - ///< rxd[0] 7 5 3 1 -}rxSeq_e; - -typedef enum -{ - CSPI_0 = 0, - CSPI_1 = 1, -}cspiInstance_e; - -typedef enum -{ - CSPI_START = 1, ///< cspi enable - CSPI_STOP = 0, ///< Cspi disable -}cspiStartStop_e; - -typedef enum -{ - CSPI_INT_ENABLE = 1, ///< cspi interrupt enable - CSPI_INT_DISABLE = 0, ///< Cspi interrupt disable -}cspiIntEnable_e; - - -typedef struct -{ - endianMode_e endianMode; ///< Endian mode - wireNum_e wireNum; ///< Wire numbers - rxSeq_e rxSeq; ///< Bit sequence in 2 wire mode - uint8_t cpol; - uint8_t cpha; - uint8_t ddrMode; - uint8_t wordIdSeq; - uint8_t yOnly; - uint8_t rowScaleRatio; - uint8_t colScaleRatio; - uint8_t scaleBytes; - uint8_t dummyAllowed; -}camParamCfg_t; - -typedef void (*camCbEvent_fn) (uint32_t event); ///< Camera callback event. -typedef void (*camIrq_fn)(void); ///< Camera irq -typedef void (*camErrCb)(uint32_t stats); - - -/** - \brief Init camera, include pinMux, and enable clock. - \param[in] dataAddr Mem addr to store picture. - \param[in] uspCb usp cb. - \param[in] dmaCb dma cb. - \return -*/ -void camInit(void* dataAddr, cspiCbEvent_fn uspCb, void* dmaCb); - -/** - \brief Receive the picture has been taken. - \param[out] dataIn The buffer which is used to store the picture. - \return -*/ -void camRecv(uint8_t * dataIn); - -/** - \brief Init sensor's registers. - \return -*/ -void camRegCfg(void); - -/** - \brief Write some parameters into the sensor. - \param[in] regInfo Sensor I2C addr and value. - \return -*/ -void camWriteReg(camI2cCfg_t* regInfo); - -/** - \brief Read from the sensor's I2C address. - \param[in] regAddr Sensor's I2C register address. - \return -*/ -uint8_t camReadReg(uint8_t regAddr); - -/** - \brief Start or stop Camera controller. - \param[in] startStop If true, start camera controller. If false, stop camera controller. - \return -*/ -void camStartStop(cspiStartStop_e startStop); - -/** - \brief Register irq for cspi. - \param[in] instance cspi0 or cspi1. - \param[in] irqCb irq cb. - \return -*/ -void camRegisterIRQ(cspiInstance_e instance, camIrq_fn irqCb); - -/** - \brief Get cspi status. - \param[in] instance cspi0 or cspi1. - \return -*/ -uint32_t camGetCspiStats(cspiInstance_e instance); - -/** - \brief Clear cspi interrupt status. - \param[in] instance cspi0 or cspi1. - \param[in] mask which bit needs to clear. - \return -*/ -void camClearIntStats(cspiInstance_e instance, uint32_t mask); - -/** - \brief Set memory addr which is used to store picture of camera. - \param[in] dataAddr data addr. - \return -*/ -void camSetMemAddr(uint32_t dataAddr); - -/** - \brief Enable or disable interrupt of cspi. - \param[in] intEnable interrupt enable or not. - \return -*/ -void cspiStartIntEnable(cspiIntEnable_e intEnable); -void cspiEndIntEnable(cspiIntEnable_e endIntEnable); -uint32_t camGetCspiInt(cspiInstance_e instance); -void cspi2LspiEnable(uint8_t enable); -void camRegisterErrStatsCb(camErrCb errCb); -void camCheckErrStats(); -#if (ENABLE_CAMERA_LDO == 1) -void camPowerOn(uint8_t ioInitVal); -#endif -void camGpioPulseCfg(uint8_t padAddr, uint8_t pinInstance, uint8_t pinNum); -void camGpioPulse(uint8_t pinInstance, uint8_t pinNum, uint32_t pulseDurationUs, uint8_t initialState, bool needLoop); -void camRegisterSlp1Cb(cspiSlp1Cb_fn cb); - -/** \} */ - -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/codec/codecDev/es7111.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/codec/codecDev/es7111.h deleted file mode 100644 index 65329ca..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/codec/codecDev/es7111.h +++ /dev/null @@ -1,191 +0,0 @@ -/****************************************************************************** - -*(C) Copyright 2018 EIGENCOMM International Ltd. - -* All Rights Reserved - -****************************************************************************** -* Filename: es7111.h -* -* Description: -* -* History: Rev1.0 2020-02-24 -* -* Notes: es7111 interface -* -******************************************************************************/ - - -#ifndef _CODEC_ES7111_H -#define _CODEC_ES7111_H - -/*----------------------------------------------------------------------------* - * INCLUDES * - *----------------------------------------------------------------------------*/ -#include "codecDrv.h" - -#ifdef __cplusplus -extern "C" { -#endif - - -/*----------------------------------------------------------------------------* -* DATA TYPE DEFINITION * -*----------------------------------------------------------------------------*/ - -extern HalCodecFuncList_t es7111DefaultHandle; - - -/*----------------------------------------------------------------------------* -* GLOBAL FUNCTIONS DECLEARATION * -*----------------------------------------------------------------------------*/ - - /** - \brief Enables or disables PA - \param[in] enable true/false - \return NULL - \note - */ -void es7111EnablePA(bool enable); - -/** - \brief Initialize ES7111 codec chip - \param[in] codec_cfg configuration of ES7111 - \return -CODEC_EOK -CODEC_INIT_ERR - \note - */ -HalCodecSts_e es7111Init(HalCodecCfg_t *codecCfg); - - /** - \brief Deinitialize ES7111 codec chip - \param[in] NULL - \return NULL - \note - */ -void es7111DeInit(void); - -/** - \brief start/stop ES7111 codec chip - \param[in] mode codec mode - \param[in] ctrlState start or stop decode or encode progress - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7111StartStop(HalCodecMode_e mode, HalCodecCtrlState_e ctrlState); - -/** - \brief Configure ES7111 codec mode and I2S interface - \param[in] mode codec mode - \param[in] iface I2S config - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7111Config(HalCodecMode_e mode, HalCodecIface_t *iface); - -/** - \brief Configure ES7111 DAC mute or not. Basically you can use this function to mute the output or unmute - \param[in] enable enable(1) or disable(0) - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7111SetMute(bool enable); - -/** - \brief Set voice volume - \param[in] volume: voice volume (0~100) - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7111SetVolume(int volume); - -/** - \brief Get voice volume - \param[out] *volume: voice volume (0~100) - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7111GetVolume(int *volume); - -/** - \brief Configure ES7111 I2S format - \param[in] mod: set ADC or DAC or both - \param[in] cfg: ES8388 I2S format - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7111ConfigFmt(HalCodecIfaceFormat_e fmt); - -/** - \brief Configure ES7111 data sample bits - \param[in] mode: set ADC or DAC or both - \param[in] bits: bit number of per sample - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7111SetBitsPerSample(HalCodecIfaceBits_e bits); - -/** - \brief Start ES7111 codec chip - \param[in] mode: set ADC or DAC or both - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7111Start(HalCodecMode_e mode); - -/** - \brief Stop ES7111 codec chip - \param[in] mode: set ADC or DAC or both - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7111Stop(HalCodecMode_e mode); - -/** - \brief Get ES7111 DAC mute status - \param[out] mute get mute - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7111GetVoiceMute(int *mute); - -/** - \brief Set ES7111 mic gain and volume - \param[in] micGain db of mic gain, varies from 0~10, default is 8 - \param[in] micVolume micVolume, varies from 0~100, default is 75 - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7111SetMicVolume(uint8_t micGain, int micVolume); - -/** - * @brief Print all ES7111 registers - * - * @return - * - void - */ -/** - \brief Print all ES7111 registers - \param[in] NULL - \return NULL - \note - */ -void es7111ReadAll(); - -/** - \brief get es7111 default config - \param[in] NULL - \return HalCodecCfg_t codecCfg - \note - */ -HalCodecCfg_t es7111GetDefaultCfg(); - -HalCodecSts_e es7111Resume(HalCodecMode_e mode); - - - -#ifdef __cplusplus -} -#endif - -#endif /* _CODEC_ES7111_H */ - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/codec/codecDev/es7149.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/codec/codecDev/es7149.h deleted file mode 100644 index 8ff9b5e..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/codec/codecDev/es7149.h +++ /dev/null @@ -1,191 +0,0 @@ -/****************************************************************************** - -*(C) Copyright 2018 EIGENCOMM International Ltd. - -* All Rights Reserved - -****************************************************************************** -* Filename: es7149.h -* -* Description: -* -* History: Rev1.0 2020-02-24 -* -* Notes: es7149 interface -* -******************************************************************************/ - - -#ifndef _CODEC_ES7149_H -#define _CODEC_ES7149_H - -/*----------------------------------------------------------------------------* - * INCLUDES * - *----------------------------------------------------------------------------*/ -#include "codecDrv.h" - -#ifdef __cplusplus -extern "C" { -#endif - - -/*----------------------------------------------------------------------------* -* DATA TYPE DEFINITION * -*----------------------------------------------------------------------------*/ - -extern HalCodecFuncList_t es7149DefaultHandle; - - -/*----------------------------------------------------------------------------* -* GLOBAL FUNCTIONS DECLEARATION * -*----------------------------------------------------------------------------*/ - - /** - \brief Enables or disables PA - \param[in] enable true/false - \return NULL - \note - */ -void es7149EnablePA(bool enable); - -/** - \brief Initialize ES7149 codec chip - \param[in] codec_cfg configuration of ES7149 - \return -CODEC_EOK -CODEC_INIT_ERR - \note - */ -HalCodecSts_e es7149Init(HalCodecCfg_t *codecCfg); - - /** - \brief Deinitialize ES7149 codec chip - \param[in] NULL - \return NULL - \note - */ -void es7149DeInit(void); - -/** - \brief start/stop ES7149 codec chip - \param[in] mode codec mode - \param[in] ctrlState start or stop decode or encode progress - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7149StartStop(HalCodecMode_e mode, HalCodecCtrlState_e ctrlState); - -/** - \brief Configure ES7149 codec mode and I2S interface - \param[in] mode codec mode - \param[in] iface I2S config - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7149Config(HalCodecMode_e mode, HalCodecIface_t *iface); - -/** - \brief Configure ES7149 DAC mute or not. Basically you can use this function to mute the output or unmute - \param[in] enable enable(1) or disable(0) - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7149SetMute(bool enable); - -/** - \brief Set voice volume - \param[in] volume: voice volume (0~100) - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7149SetVolume(int volume); - -/** - \brief Get voice volume - \param[out] *volume: voice volume (0~100) - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7149GetVolume(int *volume); - -/** - \brief Configure ES7149 I2S format - \param[in] mod: set ADC or DAC or both - \param[in] cfg: ES8388 I2S format - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7149ConfigFmt(HalCodecIfaceFormat_e fmt); - -/** - \brief Configure ES7149 data sample bits - \param[in] mode: set ADC or DAC or both - \param[in] bits: bit number of per sample - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7149SetBitsPerSample(HalCodecIfaceBits_e bits); - -/** - \brief Start ES7149 codec chip - \param[in] mode: set ADC or DAC or both - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7149Start(HalCodecMode_e mode); - -/** - \brief Stop ES7149 codec chip - \param[in] mode: set ADC or DAC or both - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7149Stop(HalCodecMode_e mode); - -/** - \brief Get ES7149 DAC mute status - \param[out] mute get mute - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7149GetVoiceMute(int *mute); - -/** - \brief Set ES7149 mic gain and volume - \param[in] micGain db of mic gain, varies from 0~10, default is 8 - \param[in] micVolume micVolume, varies from 0~100, default is 75 - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es7149SetMicVolume(uint8_t micGain, int micVolume); - -/** - * @brief Print all ES7149 registers - * - * @return - * - void - */ -/** - \brief Print all ES7149 registers - \param[in] NULL - \return NULL - \note - */ -void es7149ReadAll(); - -/** - \brief get es7149 default config - \param[in] NULL - \return HalCodecCfg_t codecCfg - \note - */ -HalCodecCfg_t es7149GetDefaultCfg(); - -HalCodecSts_e es7149Resume(HalCodecMode_e mode); - - - -#ifdef __cplusplus -} -#endif - -#endif /* _CODEC_ES7149_H */ - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/codec/codecDev/es8311.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/codec/codecDev/es8311.h deleted file mode 100644 index cae1cee..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/codec/codecDev/es8311.h +++ /dev/null @@ -1,280 +0,0 @@ -/****************************************************************************** - -*(C) Copyright 2018 EIGENCOMM International Ltd. - -* All Rights Reserved - -****************************************************************************** -* Filename: es8311.h -* -* Description: -* -* History: Rev1.0 2020-02-24 -* -* Notes: es8311 interface -* -******************************************************************************/ - - -#ifndef _CODEC_ES8311_H -#define _CODEC_ES8311_H - -/*----------------------------------------------------------------------------* - * INCLUDES * - *----------------------------------------------------------------------------*/ -#include "codecDrv.h" - -#ifdef __cplusplus -extern "C" { -#endif - - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ - - - -// ES8311_REGISTER NAME_REG_REGISTER ADDRESS -#define ES8311_RESET_REG00 0x00 /*reset digital,csm,clock manager etc.*/ - -// Clock Scheme Register definition -#define ES8311_CLK_MANAGER_REG01 0x01 // select clk src for mclk, enable clock for codec -#define ES8311_CLK_MANAGER_REG02 0x02 // clk divider and clk multiplier -#define ES8311_CLK_MANAGER_REG03 0x03 // adc fsmode and osr -#define ES8311_CLK_MANAGER_REG04 0x04 // dac osr -#define ES8311_CLK_MANAGER_REG05 0x05 // clk divier for adc and dac -#define ES8311_CLK_MANAGER_REG06 0x06 // bclk inverter and divider -#define ES8311_CLK_MANAGER_REG07 0x07 // tri-state, lrck divider -#define ES8311_CLK_MANAGER_REG08 0x08 // lrck divider - -// SDP -#define ES8311_SDPIN_REG09 0x09 // dac serial digital port */ -#define ES8311_SDPOUT_REG0A 0x0A // adc serial digital port */ - -// SYSTEM -#define ES8311_SYSTEM_REG0B 0x0B // system -#define ES8311_SYSTEM_REG0C 0x0C // system -#define ES8311_SYSTEM_REG0D 0x0D // system, power up/down -#define ES8311_SYSTEM_REG0E 0x0E // system, power up/down -#define ES8311_SYSTEM_REG0F 0x0F // system, low power -#define ES8311_SYSTEM_REG10 0x10 // system -#define ES8311_SYSTEM_REG11 0x11 // system -#define ES8311_SYSTEM_REG12 0x12 // system, Enable DAC -#define ES8311_SYSTEM_REG13 0x13 // system -#define ES8311_SYSTEM_REG14 0x14 // system, mic gain, select DMIC, select analog pga gain - -// ADC -#define ES8311_ADC_REG15 0x15 // ADC, adc ramp rate, dmic sense -#define ES8311_ADC_REG16 0x16 // ADC -#define ES8311_ADC_REG17 0x17 // ADC, mic volume -#define ES8311_ADC_REG18 0x18 // ADC, alc enable and winsize -#define ES8311_ADC_REG19 0x19 // ADC, alc maxlevel -#define ES8311_ADC_REG1A 0x1A // ADC, alc automute -#define ES8311_ADC_REG1B 0x1B // ADC, alc automute, adc hpf s1 -#define ES8311_ADC_REG1C 0x1C // ADC, equalizer, hpf s2 -#define ES8311_ADC_REG1D 0x1D // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG1E 0x1E // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG1F 0x1F // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG20 0x20 // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG21 0x21 // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG22 0x22 // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG23 0x23 // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG24 0x24 // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG25 0x25 // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG26 0x26 // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG27 0x27 // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG28 0x28 // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG29 0x29 // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG2A 0x2A // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG2B 0x2B // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG2C 0x2C // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG2D 0x2D // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG2E 0x2E // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG2F 0x2F // ADC, 30-bit B0 coefficient for ADCEQ -#define ES8311_ADC_REG30 0x30 // ADC, 30-bit B0 coefficient for ADCEQ - -// DAC -#define ES8311_DAC_REG31 0x31 // DAC, mute -#define ES8311_DAC_REG32 0x32 // DAC, volume -#define ES8311_DAC_REG33 0x33 // DAC, offset -#define ES8311_DAC_REG34 0x34 // DAC, drc enable, drc winsize -#define ES8311_DAC_REG35 0x35 // DAC, drc maxlevel, minilevel -#define ES8311_DAC_REG37 0x37 // DAC, ramprate - -// GPIO -#define ES8311_GPIO_REG44 0x44 // GPIO, dac2adc for test -#define ES8311_GP_REG45 0x45 // GP CONTROL - -// CHIP -#define ES8311_CHD1_REGFD 0xFD // CHIP ID1 -#define ES8311_CHD2_REGFE 0xFE // CHIP ID2 -#define ES8311_CHVER_REGFF 0xFF // VERSION -#define ES8311_CHD1_REGFD 0xFD // CHIP ID1 - -#define ES8311_MAX_REGISTER 0xFF - - -/*----------------------------------------------------------------------------* -* DATA TYPE DEFINITION * -*----------------------------------------------------------------------------*/ - -extern HalCodecFuncList_t es8311DefaultHandle; - - -/*----------------------------------------------------------------------------* -* GLOBAL FUNCTIONS DECLEARATION * -*----------------------------------------------------------------------------*/ - - /** - \brief Enables or disables PA - \param[in] enable true/false - \return NULL - \note - */ -void es8311EnablePA(bool enable); - -/** - \brief Initialize ES8311 codec chip - \param[in] codec_cfg configuration of ES8311 - \return -CODEC_EOK -CODEC_INIT_ERR - \note - */ -HalCodecSts_e es8311Init(HalCodecCfg_t *codecCfg); - - /** - \brief Deinitialize ES8311 codec chip - \param[in] NULL - \return NULL - \note - */ -void es8311DeInit(void); - -/** - \brief start/stop ES8311 codec chip - \param[in] mode codec mode - \param[in] ctrlState start or stop decode or encode progress - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311StartStop(HalCodecMode_e mode, HalCodecCtrlState_e ctrlState); - -/** - \brief Configure ES8311 codec mode and I2S interface - \param[in] mode codec mode - \param[in] iface I2S config - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311Config(HalCodecMode_e mode, HalCodecIface_t *iface); - -/** - \brief Configure ES8311 DAC mute or not. Basically you can use this function to mute the output or unmute - \param[in] enable enable(1) or disable(0) - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311SetMute(HalCodecCfg_t* codecHalCfg, bool enable); - -/** - \brief Set voice volume - \param[in] volume: voice volume (0~100) - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311SetVolume(HalCodecCfg_t* codecHalCfg, int volume); - -/** - \brief Get voice volume - \param[out] *volume: voice volume (0~100) - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311GetVolume(HalCodecCfg_t* codecHalCfg, int *volume); - -/** - \brief Configure ES8311 I2S format - \param[in] mod: set ADC or DAC or both - \param[in] cfg: ES8388 I2S format - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311ConfigFmt(HalCodecIfaceFormat_e fmt); - -/** - \brief Configure ES8311 data sample bits - \param[in] mode: set ADC or DAC or both - \param[in] bits: bit number of per sample - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311SetBitsPerSample(HalCodecIfaceBits_e bits); - -/** - \brief Start ES8311 codec chip - \param[in] mode: set ADC or DAC or both - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311Start(HalCodecMode_e mode); - -/** - \brief Stop ES8311 codec chip - \param[in] mode: set ADC or DAC or both - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311Stop(HalCodecMode_e mode); - -/** - \brief Get ES8311 DAC mute status - \param[out] mute get mute - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311GetVoiceMute(int *mute); - -/** - \brief Set ES8311 mic gain and volume - \param[in] micGain db of mic gain, varies from 0~10, default is 8 - \param[in] micVolume micVolume, varies from 0~100, default is 75 - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8311SetMicVolume(HalCodecCfg_t* codecHalCfg, uint8_t micGain, int micVolume); - -HalCodecSts_e es8311GetMicVolume(HalCodecCfg_t* codecHalCfg, uint8_t *micGain, int *micVolume); - - -/** - * @brief Print all ES8311 registers - * - * @return - * - void - */ -/** - \brief Print all ES8311 registers - \param[in] NULL - \return NULL - \note - */ -void es8311ReadAll(); - -/** - \brief get es8311 default config - \param[in] NULL - \return HalCodecCfg_t codecCfg - \note - */ -HalCodecCfg_t es8311GetDefaultCfg(); - -HalCodecSts_e es8311Resume(HalCodecMode_e mode); - - - -#ifdef __cplusplus -} -#endif - -#endif /* _CODEC_ES8311_H */ - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/codec/codecDev/es8374.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/codec/codecDev/es8374.h deleted file mode 100644 index 3e0dbb7..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/codec/codecDev/es8374.h +++ /dev/null @@ -1,262 +0,0 @@ -/****************************************************************************** - -*(C) Copyright 2018 EIGENCOMM International Ltd. - -* All Rights Reserved - -****************************************************************************** -* Filename: es8374.h -* -* Description: -* -* History: Rev1.0 2020-02-24 -* -* Notes: es8374 interface -* -******************************************************************************/ - - -#ifndef _CODEC_ES8374_H -#define _CODEC_ES8374_H - -/*----------------------------------------------------------------------------* - * INCLUDES * - *----------------------------------------------------------------------------*/ -#include "codecDrv.h" - -#ifdef __cplusplus -extern "C" { -#endif - -extern HalCodecFuncList_t es8374DefaultHandle; - - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ - - - -// ES8374_REG_ISTER NAME_REG_REGISTER ADDRESS -#define ES8374_REG_00 0x00 -#define ES8374_REG_01 0x01 -#define ES8374_REG_02 0x02 -#define ES8374_REG_03 0x03 -#define ES8374_REG_04 0x04 -#define ES8374_REG_05 0x05 -#define ES8374_REG_06 0x06 -#define ES8374_REG_07 0x07 -#define ES8374_REG_08 0x08 -#define ES8374_REG_09 0x09 -#define ES8374_REG_0A 0x0A -#define ES8374_REG_0B 0x0B -#define ES8374_REG_0C 0x0C -#define ES8374_REG_0D 0x0D -#define ES8374_REG_0E 0x0E -#define ES8374_REG_0F 0x0F -#define ES8374_REG_10 0x10 -#define ES8374_REG_11 0x11 -#define ES8374_REG_12 0x12 -#define ES8374_REG_13 0x13 -#define ES8374_REG_14 0x14 -#define ES8374_REG_15 0x15 -#define ES8374_REG_16 0x16 -#define ES8374_REG_17 0x17 -#define ES8374_REG_18 0x18 -#define ES8374_REG_19 0x19 -#define ES8374_REG_1A 0x1A -#define ES8374_REG_1B 0x1B -#define ES8374_REG_1C 0x1C -#define ES8374_REG_1D 0x1D -#define ES8374_REG_1E 0x1E -#define ES8374_REG_1F 0x1F -#define ES8374_REG_20 0x20 -#define ES8374_REG_21 0x21 -#define ES8374_REG_22 0x22 -#define ES8374_REG_23 0x23 -#define ES8374_REG_24 0x24 -#define ES8374_REG_25 0x25 -#define ES8374_REG_26 0x26 -#define ES8374_REG_27 0x27 -#define ES8374_REG_28 0x28 -#define ES8374_REG_29 0x29 -#define ES8374_REG_2A 0x2A -#define ES8374_REG_2B 0x2B -#define ES8374_REG_2C 0x2C -#define ES8374_REG_2D 0x2D -#define ES8374_REG_2E 0x2E -#define ES8374_REG_2F 0x2F -#define ES8374_REG_30 0x30 -#define ES8374_REG_31 0x31 -#define ES8374_REG_32 0x32 -#define ES8374_REG_33 0x33 -#define ES8374_REG_34 0x34 -#define ES8374_REG_35 0x35 -#define ES8374_REG_36 0x36 -#define ES8374_REG_37 0x37 -#define ES8374_REG_38 0x38 -#define ES8374_REG_6D 0x6D -#define ES8374_REG_6F 0x6F -#define ES8374_REG_72 0x72 - - -/*----------------------------------------------------------------------------* -* DATA TYPE DEFINITION * -*----------------------------------------------------------------------------*/ - -extern HalCodecFuncList_t es8374DefaultHandle; - - -/*----------------------------------------------------------------------------* -* GLOBAL FUNCTIONS DECLEARATION * -*----------------------------------------------------------------------------*/ - - /** - \brief Enables or disables PA - \param[in] enable true/false - \return NULL - \note - */ -void es8374EnablePA(bool enable); - -/** - \brief Initialize ES8374 codec chip - \param[in] codec_cfg configuration of ES8374 - \return -CODEC_EOK -CODEC_INIT_ERR - \note - */ -HalCodecSts_e es8374Init(HalCodecCfg_t *codecCfg); - - /** - \brief Deinitialize ES8374 codec chip - \param[in] NULL - \return NULL - \note - */ -void es8374DeInit(void); - -/** - \brief start/stop ES8374 codec chip - \param[in] mode codec mode - \param[in] ctrlState start or stop decode or encode progress - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374StartStop(HalCodecMode_e mode, HalCodecCtrlState_e ctrlState); - -/** - \brief Configure ES8374 codec mode and I2S interface - \param[in] mode codec mode - \param[in] iface I2S config - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374Config(HalCodecMode_e mode, HalCodecIface_t *iface); - -/** - \brief Configure ES8374 DAC mute or not. Basically you can use this function to mute the output or unmute - \param[in] enable enable(1) or disable(0) - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374SetMute(HalCodecCfg_t* codecHalCfg, bool enable); - -/** - \brief Set voice volume - \param[in] volume: voice volume (0~100) - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374SetVolume(HalCodecCfg_t* codecHalCfg, int volume); - -/** - \brief Get voice volume - \param[out] *volume: voice volume (0~100) - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374GetVolume(HalCodecCfg_t* codecHalCfg, int *volume); - -/** - \brief Configure ES8374 I2S format - \param[in] mod: set ADC or DAC or both - \param[in] cfg: ES8388 I2S format - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374ConfigFmt(HalCodecIfaceFormat_e fmt); - -/** - \brief Configure ES8374 data sample bits - \param[in] mode: set ADC or DAC or both - \param[in] bits: bit number of per sample - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374SetBitsPerSample(HalCodecIfaceBits_e bits); - -/** - \brief Start ES8374 codec chip - \param[in] mode: set ADC or DAC or both - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374Start(HalCodecModule_e mode); - -/** - \brief Stop ES8374 codec chip - \param[in] mode: set ADC or DAC or both - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374Stop(HalCodecModule_e mode); - -/** - \brief Get ES8374 DAC mute status - \param[out] mute get mute - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374GetVoiceMute(uint8_t *mute); - -/** - \brief Set ES8374 mic gain and volume - \param[in] not used - \param[in] micVolume micVolume, varies from 0~100, default is 75 - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e es8374SetMicVolume(HalCodecCfg_t* codecHalCfg, uint8_t micGain, int micVolume); - -/** - * @brief Print all ES8374 registers - * - * @return - * - void - */ -/** - \brief Print all ES8374 registers - \param[in] NULL - \return NULL - \note - */ -void es8374ReadAll(); - -/** - \brief get es8374 default config - \param[in] NULL - \return HalCodecCfg_t codecCfg - \note - */ -HalCodecCfg_t es8374GetDefaultCfg(); - -HalCodecSts_e es8374Resume(HalCodecMode_e mode); - - - -#ifdef __cplusplus -} -#endif - -#endif /* _CODEC_ES8374_H */ - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/codec/codecDev/tm8211.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/codec/codecDev/tm8211.h deleted file mode 100644 index 1d8a20d..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/codec/codecDev/tm8211.h +++ /dev/null @@ -1,191 +0,0 @@ -/****************************************************************************** - -*(C) Copyright 2018 EIGENCOMM International Ltd. - -* All Rights Reserved - -****************************************************************************** -* Filename: tm8211.h -* -* Description: -* -* History: Rev1.0 2020-02-24 -* -* Notes: tm8211 interface -* -******************************************************************************/ - - -#ifndef _CODEC_TM8211_H -#define _CODEC_TM8211_H - -/*----------------------------------------------------------------------------* - * INCLUDES * - *----------------------------------------------------------------------------*/ -#include "codecDrv.h" - -#ifdef __cplusplus -extern "C" { -#endif - - -/*----------------------------------------------------------------------------* -* DATA TYPE DEFINITION * -*----------------------------------------------------------------------------*/ - -extern HalCodecFuncList_t tm8211DefaultHandle; - - -/*----------------------------------------------------------------------------* -* GLOBAL FUNCTIONS DECLEARATION * -*----------------------------------------------------------------------------*/ - - /** - \brief Enables or disables PA - \param[in] enable true/false - \return NULL - \note - */ -void tm8211EnablePA(bool enable); - -/** - \brief Initialize TM8211 codec chip - \param[in] codec_cfg configuration of TM8211 - \return -CODEC_EOK -CODEC_INIT_ERR - \note - */ -HalCodecSts_e tm8211Init(HalCodecCfg_t *codecCfg); - - /** - \brief Deinitialize TM8211 codec chip - \param[in] NULL - \return NULL - \note - */ -void tm8211DeInit(void); - -/** - \brief start/stop TM8211 codec chip - \param[in] mode codec mode - \param[in] ctrlState start or stop decode or encode progress - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e tm8211StartStop(HalCodecMode_e mode, HalCodecCtrlState_e ctrlState); - -/** - \brief Configure TM8211 codec mode and I2S interface - \param[in] mode codec mode - \param[in] iface I2S config - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e tm8211Config(HalCodecMode_e mode, HalCodecIface_t *iface); - -/** - \brief Configure TM8211 DAC mute or not. Basically you can use this function to mute the output or unmute - \param[in] enable enable(1) or disable(0) - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e tm8211SetMute(bool enable); - -/** - \brief Set voice volume - \param[in] volume: voice volume (0~100) - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e tm8211SetVolume(int volume); - -/** - \brief Get voice volume - \param[out] *volume: voice volume (0~100) - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e tm8211GetVolume(int *volume); - -/** - \brief Configure TM8211 I2S format - \param[in] mod: set ADC or DAC or both - \param[in] cfg: ES8388 I2S format - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e tm8211ConfigFmt(HalCodecIfaceFormat_e fmt); - -/** - \brief Configure TM8211 data sample bits - \param[in] mode: set ADC or DAC or both - \param[in] bits: bit number of per sample - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e tm8211SetBitsPerSample(HalCodecIfaceBits_e bits); - -/** - \brief Start TM8211 codec chip - \param[in] mode: set ADC or DAC or both - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e tm8211Start(HalCodecMode_e mode); - -/** - \brief Stop TM8211 codec chip - \param[in] mode: set ADC or DAC or both - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e tm8211Stop(HalCodecMode_e mode); - -/** - \brief Get TM8211 DAC mute status - \param[out] mute get mute - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e tm8211GetVoiceMute(int *mute); - -/** - \brief Set TM8211 mic gain and volume - \param[in] micGain db of mic gain, varies from 0~10, default is 8 - \param[in] micVolume micVolume, varies from 0~100, default is 75 - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e tm8211SetMicVolume(uint8_t micGain, int micVolume); - -/** - * @brief Print all TM8211 registers - * - * @return - * - void - */ -/** - \brief Print all TM8211 registers - \param[in] NULL - \return NULL - \note - */ -void tm8211ReadAll(); - -/** - \brief get tm8211 default config - \param[in] NULL - \return HalCodecCfg_t codecCfg - \note - */ -HalCodecCfg_t tm8211GetDefaultCfg(); - -HalCodecSts_e tm8211Resume(HalCodecMode_e mode); - - - -#ifdef __cplusplus -} -#endif - -#endif /* _CODEC_TM8211_H */ - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/codec/codecDrv.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/codec/codecDrv.h deleted file mode 100644 index 3bbb90a..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/codec/codecDrv.h +++ /dev/null @@ -1,424 +0,0 @@ -/****************************************************************************** - -*(C) Copyright 2018 EIGENCOMM International Ltd. - -* All Rights Reserved - -****************************************************************************** -* Filename: hal_codec.h -* -* Description: -* -* History: Rev1.0 2020-02-24 -* -* Notes: codec interface -* -******************************************************************************/ - - -#ifndef _CODEC_DRV_H -#define _CODEC_DRV_H - -/*----------------------------------------------------------------------------* - * INCLUDES * - *----------------------------------------------------------------------------*/ -#include "stdio.h" -#include "stdlib.h" -#include "ec7xx.h" -#include "string.h" -#include "Driver_Common.h" -#include "bsp.h" -#include "hal_i2c.h" -#ifdef FEATURE_OS_ENABLE -#include "osasys.h" -#include "cmsis_os2.h" -#endif -#include "slpman.h" -#include "exception_process.h" -#ifndef CHIP_EC618 -#include "mw_nvm_audio.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ -#define HAL_CODEC_VOL_SPEAKER_DEFAULT 65 -#define HAL_CODEC_MIC_GAIN_DEFAULT 8 -#define HAL_CODEC_VOL_MIC_DEFAULT 191 -#define HAL_CODEC_VOL_SPEAKER_GAIN_DEFAULT 8 - -// Codec I2C address -#define ES8388_IICADDR 0x11 -#define ES8311_IICADDR 0x18 -#define ES8374_IICADDR 0x10 - -#ifdef FEATURE_OS_ENABLE -#define HAL_CODEC_CHECK_NULL(a, format, b, ...) \ - if ((a) == 0) { \ - return b;\ - } - -#define DEBUG_PRINT(moduleId, subId, debugLevel, format, ...) ECPLAT_PRINTF(moduleId, subId, debugLevel, format, ##__VA_ARGS__) -#else -#define DEBUG_PRINT(moduleId, subId, debugLevel, format, ...) -#define HAL_CODEC_CHECK_NULL(a, format, b, ...) - -#endif - - -/** \brief CODEC_PA location */ -#define CODEC_PA_GPIO_INSTANCE (0) -#define CODEC_PA_GPIO_PIN (2) -#define CODEC_PA_PAD_INDEX (17) -#define CODEC_PA_PAD_ALT_FUNC (PAD_MUX_ALT0) - -#define DIRECTION_TX (0) -#define DIRECTION_RX (1) - - -/*----------------------------------------------------------------------------* -* DATA TYPE DEFINITION * -*----------------------------------------------------------------------------*/ -typedef struct -{ - bool isDmic; - bool isExPa; - int16_t exPaGain; - int16_t txDigGain; - int16_t txAnaGain; - - int16_t rxDigGain0; - int16_t rxAnaGain0; - int16_t rxDigGain50; - int16_t rxAnaGain50; - int16_t rxDigGain100; - int16_t rxAnaGain100; -}HalCodecTlvDefault_t; - - - -/* - * usr set codec volumn parameter -*/ -typedef struct _USR_SET_CODEC_VOLUMN -{ - UINT16 rxDigUsrSet; // bit15: flag; bit14~bit8: 1level; bit7~bit0: 2level - UINT16 rxAnaUsrSet; // bit15: flag; bit14~bit8: 1level; bit7~bit0: 2level -}MWNvmCfgUsrSetCodecVolumn; - -/* - * indicate usr whether set volumn in nv -*/ -typedef struct _VOLUMN_SET_FLAG -{ - UINT8 rxDigUsrSetFlag; - UINT8 rxAnaUsrSetFlag; - UINT8 txDigGainFlag; - UINT8 txAnaGainFlag; -}MWNvmCfgVolumnSetFlag; - - -typedef struct -{ - int slope; - int offset; - HalCodecTlvDefault_t defaultVal; -}HalCodecVolParam_t; - -typedef enum -{ - ES8311 = 0, - ES8374, - ES8388, - ES7148, - ES7149, - ES7111, - TM8211 -}HalCodecType_e; - -// codec status -typedef enum -{ - CODEC_EOK = 0, // operation completed successfull - CODEC_ERR = -1, // unspecified error: no other errno fits - CODEC_TIMEOUT = -2, // invalid argument(s) - CODEC_INIT_ERR = -3, // invalid argument(s) - CODEC_CFG_ERR = -4, // invalid argument(s) - CODEC_SET_VOLUME_ERR = -5, // invalid argument(s) - CODEC_START_ERR = -6, // invalid argument(s) - CODEC_START_I2C_ERR = -7, // invalid argument(s) - - CODEC_STATUS_RSVD = 0x7FFFFFFF -}HalCodecSts_e; - -// module gain -typedef enum -{ - MODULE_MIN = -1, - MODULE_ADC = 0x01, - MODULE_DAC = 0x02, - MODULE_ADC_DAC = 0x03, - MODULE_LINE = 0x04, - MODULE_MAX -}HalCodecModule_e; - -// Select media hal codec mode -typedef enum -{ - CODEC_MODE_ENCODE = 1, // select adc - CODEC_MODE_DECODE, // select dac - CODEC_MODE_BOTH, // select both adc and dac - CODEC_MODE_LINE_IN, // set adc channel -}HalCodecMode_e; - - -// Select adc channel for input mic signal -typedef enum -{ - CODEC_ADC_INPUT_LINE1 = 0x00, // mic input to adc channel 1 - CODEC_ADC_INPUT_LINE2, // mic input to adc channel 2 - CODEC_ADC_INPUT_ALL, // mic input to both channels of adc - CODEC_ADC_INPUT_DIFFERENCE, // mic input to adc difference channel -}HalAdcInput_e; - -// Select channel for dac output -typedef enum -{ - CODEC_DAC_OUTPUT_LINE1 = 0x00, // dac output signal to channel 1 - CODEC_DAC_OUTPUT_LINE2, // dac output signal to channel 2 - CODEC_DAC_OUTPUT_ALL, // dac output signal to both channels -}HalDacOutput_e; - - -// Select operating mode i.e. start or stop for audio codec chip -typedef enum -{ - CODEC_CTRL_STOP = 0x00, // set stop mode - CODEC_CTRL_START = 0x01, // set start mode - CODEC_CTRL_RESUME = 0x02, // set resume mode - CODEC_CTRL_POWERDONW = 0x03, // set powerdown mode -}HalCodecCtrlState_e; - -// Select I2S interface operating mode i.e. master or slave for audio codec chip -typedef enum -{ - CODEC_MODE_MASTER = 0x00, // set master mode - CODEC_MODE_SLAVE = 0x01, // set slave mode -}HalCodecIfaceMode_e; - -// Select I2S interface samples per second -typedef enum -{ - CODEC_08K_SAMPLES, // set to 8k samples per second - CODEC_16K_SAMPLES, // set to 16k samples in per second - CODEC_22K_SAMPLES, // set to 22.050k samples per second - CODEC_32K_SAMPLES, // set to 32k samples in per second - CODEC_44K_SAMPLES, // set to 44.1k samples per second - CODEC_48K_SAMPLES, // set to 48k samples per second -}HalCodecIfaceSample_e; - -// Select I2S interface number of bits per sample -typedef enum -{ - CODEC_BIT_LENGTH_16BITS = 0, // set 16 bits per sample - CODEC_BIT_LENGTH_24BITS = 2, // set 24 bits per sample - CODEC_BIT_LENGTH_32BITS = 3, // set 32 bits per sample -}HalCodecIfaceBits_e; - -// Select I2S interface format for audio codec chip -typedef enum -{ - CODEC_MSB_MODE, // set all left format */ - CODEC_LSB_MODE, // set all right format */ - CODEC_I2S_MODE, // set normal I2S format */ - CODEC_PCM_MODE, // set dsp/pcm format */ -}HalCodecIfaceFormat_e; - -// codec channel -typedef enum -{ - CODEC_MONO, - CODEC_DUAL, -}HalCodecChannel_e; - -// I2s interface configuration for audio codec chip -typedef struct -{ - HalCodecIfaceMode_e mode; // audio codec chip mode - HalCodecIfaceFormat_e fmt; // I2S interface format - HalCodecIfaceSample_e samples; // I2S interface samples per second - HalCodecIfaceBits_e bits; // i2s interface number of bits per sample - HalCodecChannel_e channel; // mono or dual channel - uint8_t polarity; -}HalCodecIface_t; - -// Configure media hal for initialization of audio codec chip -typedef struct -{ - HalAdcInput_e adcInput; // set adc channel - HalDacOutput_e dacOutput; // set dac channel - HalCodecMode_e codecMode; // select codec mode: adc, dac or both - HalCodecIface_t codecIface; // set I2S interface configuration - bool hasPA; - uint8_t codecDeviceType;// 0:HAND_SET 1:HEAD_SET_3_4_POLE 2:HEAD_SET 3:HANDS_OFF - uint8_t deviceMode; // 0: NB 1: WB - uint8_t direction; // 0: TX 1: RX - HalCodecVolParam_t codecVolParam; // each codec volume param, include slope and offset -}HalCodecCfg_t; - -typedef enum -{ - CODEC_NONE = 0, - CODEC_INIT = 1, - CODEC_START = 2, - CODEC_STANDBY = 3, - CODEC_RESUME = 4, - CODEC_POWER_DOWN = 5 -}HalCodecState_e; - -typedef struct -{ - uint16_t playState : 4; - uint16_t recordState : 4; - uint16_t playCnt : 4; - uint16_t recordCnt : 4; -}HalCodecState_t; - -// HAL codec func list -typedef struct -{ - uint8_t codecType; - HalCodecSts_e (*halCodecInitFunc)(HalCodecCfg_t *codec_cfg); // initialize codec - void (*halCodecDeinitFunc)(void); // deinitialize codec - HalCodecSts_e (*halCodecCtrlStateFunc)(HalCodecMode_e mode, HalCodecCtrlState_e ctrl_state); // control codec mode and state - HalCodecSts_e (*halCodecCfgIfaceFunc)(HalCodecMode_e mode, HalCodecIface_t *iface); // configure i2s interface - HalCodecSts_e (*halCodecSetMuteFunc) (HalCodecCfg_t* codecHalCfg, bool mute); // set codec mute - HalCodecSts_e (*halCodecSetVolumeFunc)(HalCodecCfg_t* codecHalCfg, int volume); // set codec volume - HalCodecSts_e (*halCodecGetVolumeFunc)(HalCodecCfg_t* codecHalCfg, int *volume); // get codec volume - HalCodecSts_e (*halCodecSetMicVolumeFunc)(HalCodecCfg_t* codecHalCfg, uint8_t micGain, int volume); // set codec mic gain and volume - HalCodecSts_e (*halCodecGetMicVolumeFunc)(HalCodecCfg_t* codecHalCfg, uint8_t* micGain, int *volume); // get codec mic gain and volume - void (*halCodecEnablePAFunc) (bool enable); // enable pa - void *halCodecLock; // semaphore of codec - void *handle; // handle of audio codec - HalCodecCfg_t (*halCodecGetDefaultCfg)(); -}HalCodecFuncList_t; - - -/*----------------------------------------------------------------------------* -* GLOBAL FUNCTIONS DECLEARATION * -*----------------------------------------------------------------------------*/ - - -/** - \brief Hal codec init - \param[in] codecHalCfg codec config - \param[in] codecHalFunc codecHal func list - \param[in] needLock need semaphore lock or not in codec HAL layer - \return HalCodecFuncList_t* codec funclist - \note - */ -HalCodecFuncList_t* halCodecInit(HalCodecCfg_t* codecHalCfg, HalCodecFuncList_t* codecHalFunc, bool needLock); - -/** - \brief HAL CODEC Deinit - \param[in] codecHalFunc codecHal func list - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e halCodecDeinit(HalCodecFuncList_t* codecHal); - -/** - \brief Hal codec start/stop control - \param[in] codecHalFunc codecHal func list - \param[in] mode codec mode - \param[in] codecStartStop codec start or stop - \param[in] needLock need semaphore lock or not in codec HAL layer - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e halCodecCtrlState(HalCodecFuncList_t* codecHal, HalCodecMode_e mode, HalCodecCtrlState_e codecStartStop, bool needLock); - -/** - \brief Hal codec interface config - \param[in] codecHalFunc codecHal func list - \param[in] mode codec mode - \param[in] iface codec interface - \param[in] needLock need semaphore lock or not in codec HAL layer - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e halCodecIfaceCfg(HalCodecFuncList_t* codecHal, HalCodecMode_e mode, HalCodecIface_t *iface, bool needLock); - -/** - \brief Hal codec set mute - \param[in] codecHalFunc codecHal func list - \param[in] mute codec set mute - \param[in] needLock need semaphore lock or not in codec HAL layer - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e halCodecSetMute(HalCodecFuncList_t* codecHal, HalCodecCfg_t* codecHalCfg, bool mute, bool needLock); - -#if 0 -/** - \brief Hal codec enable pa - \param[in] codecHalFunc codecHal func list - \param[in] enable codec enable/disable pa - \param[in] needLock need semaphore lock or not in codec HAL layer - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e halCodecEnablePA(HalCodecFuncList_t* codecHal, bool enable, bool needLock); -#endif - -/** - \brief Hal codec set volume - \param[in] codecHalFunc codecHal func list - \param[in] volume codec set volume - \param[in] needLock need semaphore lock or not in codec HAL layer - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e halCodecSetVolume(HalCodecFuncList_t* codecHal,HalCodecCfg_t* codecHalCfg, int volume, bool needLock); - -/** - \brief Hal codec get volume - \param[in] codecHalFunc codecHal func list - \param[out] volume codec get volume - \param[in] needLock need semaphore lock or not in codec HAL layer - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e halCodecGetVolume(HalCodecFuncList_t* codecHal, HalCodecCfg_t* codecHalCfg, int *volume, bool needLock); - -/** - \brief Hal codec set mic volume - \param[in] codecHalFunc codecHal func list - \param[in] micGain codec set mic gain - \param[in] micVolume codec set volume - \param[in] needLock need semaphore lock or not in codec HAL layer - \return -CODEC_EOK -CODEC_ERR - \note - */ -HalCodecSts_e halCodecSetMicVolume(HalCodecFuncList_t* codecHal, HalCodecCfg_t* codecHalCfg, uint8_t micGain, int micVolume, bool needLock); - -/** - \brief Hal codec get default config - \param[in] codecHalFunc codecHal func list - \return HalCodecCfg_t codec defalt config - \note - */ -HalCodecCfg_t halCodecGetDefaultCfg(HalCodecFuncList_t* codecHalFunc); - - - - -#ifdef __cplusplus -} -#endif - -#endif /* _CODEC_DRV_H */ diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/eeprom/eepRom.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/eeprom/eepRom.h deleted file mode 100644 index c038eb3..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/eeprom/eepRom.h +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2020-, Copyrigths of EigenComm Ltd. - * File name: eepRom.h - * Description: EC618 eepRom driver file - * History: Rev1.0 2020-12-17 - * - ****************************************************************************/ - -#ifndef _EEPROM_EC618_H -#define _EEPROM_EC618_H - -#include "ec7xx.h" -#include "Driver_Common.h" -#include "oneWire.h" - -/** - \addtogroup eepRom_interface_gr - \{ - */ - -/******************************************************************************* - * Definitions - ******************************************************************************/ - - - -/******************************************************************************* - * API - ******************************************************************************/ - - #ifdef __cplusplus - extern "C" { -#endif - - -/** \brief ROM Operation Command */ -#define ROM_READ_CMD 0x33 -#define ROM_MATCH_CMD 0x55 -#define ROM_SKIP_CMD 0xCC -#define ROM_SEARCH_CMD 0xF0 - -/** \brief Memory Operation Command */ -#define MEM_READ_CMD 0xF0 -#define SCRATCHPAD_READ_CMD 0xAA -#define SCRATCHPAD_WRITE_CMD 0x0F -#define SCRATCHPAD_COPY_CMD 0x55 - -/** \brief EEPROM Status */ -#define EEPROMDRV_OK (0) -#define EEPROMDRV_RESET_ERR (-1) -#define EEPROMDRV_RESETPD_ERR (-2) -#define EEPROMDRV_ROMREAD_ERR (-3) -#define EEPROMDRV_ROMMATCH_ERR (-4) -#define EEPROMDRV_ROMSKIP_ERR (-5) -#define EEPROMDRV_ROMSEARCH_ERR (-6) -#define EEPROMDRV_MEMREAD_ERR (-7) -#define EEPROMDRV_SCRATCHPADREAD_ERR (-8) -#define EEPROMDRV_SCRATCHPADWRITE_ERR (-9) -#define EEPROMDRV_SCRATCHPADCOPY_ERR (-10) - -/** - \fn int32_t eePromReadRom(uint8_t* romCode) - \brief EEPROM read ROM code - \param[out] romCode ROM infomation read back. - \return read ROM status - */ -int32_t eePromReadRom(uint8_t* romCode); - -/** - \fn eePromReadMem(uint8_t targetAddr, uint8_t len, uint8_t* buffer) - \brief EEPROM read memory. - \param[in] targetAddr The target address of EEPROM. - \param[in] len Length of this read. - \param[out] buffer Data read back. - \return read memory status - */ -int32_t eePromReadMem(uint8_t targetAddr, uint8_t len, uint8_t* buffer); - -/** - \fn int32_t eePromWriteMem(uint8_t targetAddr, uint8_t len, uint8_t* buffer) - \brief EEPROM write memory - \param[in] targetAddr The target address of EEPROM. - \param[in] len Length of this write. - \param[in] buffer Data needs to write into memory. - \return Write memory status - */ -int32_t eePromWriteMem(uint8_t targetAddr, uint8_t len, uint8_t* buffer); - -void eepRomInit(OwModeSel_e mode); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/exstorage/ex_flash.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/exstorage/ex_flash.h deleted file mode 100644 index a82d0a1..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/exstorage/ex_flash.h +++ /dev/null @@ -1,202 +0,0 @@ -/****************************************************************************** - -*(C) Copyright 2018 EIGENCOMM International Ltd. - -* All Rights Reserved - -****************************************************************************** -* Filename: -* -* Description: -* -* History: -* -* Notes: -* -******************************************************************************/ - -#ifndef __EX_FLASH_H__ -#define __EX_FLASH_H__ - - -/*----------------------------------------------------------------------------* - * INCLUDES * - *----------------------------------------------------------------------------*/ - - -#include -#include - - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ - - -/* EXFLASH Error codes */ -#define EXFLASH_OK ((uint8_t)0x00) -#define EXFLASH_ERROR ((uint8_t)0x01) -#define EXFLASH_BUSY ((uint8_t)0x02) -#define EXFLASH_NOT_SUPPORTED ((uint8_t)0x04) - - -#define PAGE_SIZE 256 -#define SECTOR_SIZE 4096 - -#define Dummy_Byte1 0xFF - - - - -/*********commands*******************************************/ - -/* Read Operations */ -#define READ_CMD 0x03 -#define FAST_READ_CMD 0x0B - - -/* Write Operations */ -#define WRITE_ENABLE_CMD 0x06 -#define WRITE_DISABLE_CMD 0x04 - -#define WRITE_VOLATILE_REG_CMD 0x50 - -/* Register Operations */ -#define READ_STATUS_REG1_CMD 0x05 -#define READ_STATUS_REG2_CMD 0x35 -#define WRITE_STATUS_REG1_CMD 0x01 -#define WRITE_STATUS_REG2_CMD 0x31 - -/* Program Operations */ -#define PAGE_PROG_CMD 0x02 -#define QUAD_INPUT_PAGE_PROG_CMD 0x32 - -/* Erase Operations */ -#define SECTOR_ERASE_CMD 0x20 -#define BLOCK_ERASE_32K_CMD 0x52 -#define BLOCK_ERASE_64K_CMD 0xD8 -#define CHIP_ERASE_CMD 0xC7//or 0x60 - - -/* Identification Operations */ -#define READ_ID_CMD 0x90 -#define DUAL_READ_ID_CMD 0x92 -#define QUAD_READ_ID_CMD 0x94 -#define READ_JEDEC_ID_CMD 0x9F - - -/*----------------------------------------------------------------------------* - * DATA TYPE DEFINITION * - *----------------------------------------------------------------------------*/ - - - -/*----------------------------------------------------------------------------* - * GLOBAL FUNCTIONS DECLEARATION * - *----------------------------------------------------------------------------*/ - - -/** - \fn exFlashChipErase(void) - \brief perform chip level erase, use with caution!! - \param[in] - \note -*/ -void exFlashChipErase(void); - -/** - \fn exFlashBlockErase(void) - \brief perform block level erase - \param[in] u32Data_Addr :Block first address to start erasing - u8mode :Erase mode 1=32K other=64K - \note -*/ -void exFlashBlockErase(uint32_t u32Erase_Addr, uint8_t u8mode); - -/** - \fn exFlashSectorErase(void) - \brief perform sector level erase, normally sector is 4K - \param[in] u32Data_Addr :Block first address to start erasing - \note -*/ -void exFlashSectorErase(uint32_t u32Erase_Addr); - - -/** - \fn exFlashRead(void) - \brief reading data of the specified length at the specified address - \param[in] u32ReadAddr Start reading address(24bit) - pu8Buffer Data storage buffer - u16NumByteToRead The number of bytes to read(max 65535) - \note -*/ -uint8_t exFlashRead(uint8_t *pu8Buffer, uint32_t u32ReadAddr, uint16_t u16NumByteToRead); - - -/** - \fn exFlashPagePro(void) - \brief starts writing data of up to 256 bytes at a specified address on one page (0~65535) - \param[in] u32ReadAddr Start reading address(24bit) - pu8Buffer:Data storage buffer - u16NumByteToWrite:The number of bytes to write (maximum 256), - * the number should not exceed the number of remaining bytes on the page!!! - \note -*/ -void exFlashPagePro(uint32_t u32WriteAddr, uint8_t *pu8Buffer, uint16_t u16NumByteToWrite); - - - -/** - \fn exFlashReadMDID(void) - \brief reading device ID from flash - \param[in] - \note -*/ -uint16_t exFlashReadMDID(void); - - - -/** - \fn exFlashErase(uint32_t eAddr, uint32_t size) - \brief Erases the flash region. use different erase cmd according to size - \param[in] eAddr addr to erase - size erase len - \note -*/ -uint8_t exFlashErase(uint32_t eAddr, uint32_t size); - - -/** - \fn exFlashWrite(uint8_t* pData, uint32_t WriteAddr, uint32_t Size) - \brief Writes an amount of data to the QSPI flash. - \param[in] pData: Data Pointer to write - WriteAddr: Write start address - Size: Size of data to write - \note -*/ -uint8_t exFlashWrite(uint8_t* pData, uint32_t WriteAddr, uint32_t Size); - - - - - -/** - \fn exFlashInit(void) - \brief init the external spi flash - \param[in] - \note -*/ -uint8_t exFlashInit(void); - -/** - \fn exFlashDeinit(void) - \brief deinit the external spi flash - \param[in] - \note -*/ -uint8_t exFlashDeinit(void); - - -#endif - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/exstorage/ex_storage.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/exstorage/ex_storage.h deleted file mode 100644 index 83857d8..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/exstorage/ex_storage.h +++ /dev/null @@ -1,176 +0,0 @@ -/****************************************************************************** - -*(C) Copyright 2018 EIGENCOMM International Ltd. - -* All Rights Reserved - -****************************************************************************** -* Filename: -* -* Description: -* -* History: -* -* Notes: -* -******************************************************************************/ - -#ifndef __EX_STORAGE_H__ -#define __EX_STORAGE_H__ - - -/*----------------------------------------------------------------------------* - * INCLUDES * - *----------------------------------------------------------------------------*/ - - -#include -#include - - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ - -#define EXSTO_OK 0 -#define EXSTO_EUNDEF -1 /* undefined error */ -#define EXSTO_EINIT -2 /* ex-storage init fail */ -#define EXSTO_EDEINIT -3 /* ex-storage deinit fail */ -#define EXSTO_EERASE -4 /* flash erase fail */ -#define EXSTO_EWRITE -5 /* flash write fail */ -#define EXSTO_EREAD -6 /* flash read fail */ -#define EXSTO_EMALLOC -7 /* memory alloc fail*/ -#define EXSTO_EOVRFLOW -8 /* data overflow */ - - - -typedef enum -{ - EXSTO_ZONE_BEGIN = 0, - EXSTO_ZONE_EF_DATA = EXSTO_ZONE_BEGIN, - EXSTO_ZONE_EF_RSVD, - EXSTO_ZONE_SD_DATA, - EXSTO_ZONE_SD_RSVD, - - EXSTO_ZONE_MAXNUM, - EXSTO_ZONE_UNDEF = 0xff -}ExStoZoneId_e; - -typedef uint32_t ExStoZoneId_bm; -#define EXSTO_BM_ZONE_EF_DATA (1 << EXSTO_ZONE_EF_DATA) -#define EXSTO_BM_ZONE_EF_RSVD (1 << EXSTO_ZONE_EF_RSVD) -#define EXSTO_BM_ZONE_SD_DATA (1 << EXSTO_ZONE_SD_DATA) -#define EXSTO_BM_ZONE_SD_RSVD (1 << EXSTO_ZONE_SD_RSVD) - - - - -/*----------------------------------------------------------------------------* - * DATA TYPE DEFINITION * - *----------------------------------------------------------------------------*/ - - - -/*----------------------------------------------------------------------------* - * GLOBAL FUNCTIONS DECLEARATION * - *----------------------------------------------------------------------------*/ - -/** - \fn uint8_t exStorageInit(void) - \brief init the external storage - \param[in] - \note -*/ -int32_t exStorageInit(void); - - - -/** - \fn int32_t exStorageDeinit(void) - \brief deinit the external storage - \param[in] - \note -*/ -int32_t exStorageDeinit(void); - - - -/** - \fn int32_t exStorageClear(uint32_t zid, uint32_t offset, uint32_t len) - \brief erase the area to be write - \param[in] zid resv for future use - offset erase start addr - len erase len - \note -*/ -int32_t exStorageClear(uint32_t zid, uint32_t offset, uint32_t len); - - - -/** - \fn int32_t exStorageWrite(uint32_t zid, uint32_t offset, uint8_t *buf, uint32_t bufLen) - \brief write data of the specified length at the specified address - \param[in] zid resv for future use - offset write start addr - buf write buf - bufLen write len - \note -*/ -int32_t exStorageWrite(uint32_t zid, uint32_t offset, uint8_t *buf, uint32_t bufLen); - - - -/** - \fn int32_t exStorageRead(uint32_t zid, uint32_t offset, uint8_t *buf, uint32_t bufLen) - \brief reading data of the specified length at the specified address - \param[in] zid resv for future use - offset read start addr - buf read buf - bufLen read len - \note -*/ -int32_t exStorageRead(uint32_t zid, uint32_t offset, uint8_t *buf, uint32_t bufLen); - -/** - * @brief exStorageGetZid(uint32_t addr, uint32_t *size, uint32_t *offset); - * @details get the es zid according starting address and size of the zone - * - * @param addr the starting addr of the zone - * @param size the size of the zone - * @param offset the offset to starting addr of the zone - * @return the zone ID. - */ -uint32_t exStorageGetZid(uint32_t addr, uint32_t *size, uint32_t *offset); - -/** - * @brief exStorageGetSize(uint32_t zid, uint8_t isOvhdExcl) - * @details get the nvm size of specific fota zone - * - * @param zid zone Id of fota nvm - * @param isOvhdExcl overhead size of the zone is excluded or not - * @return the size of zone. - */ -uint32_t exStorageGetSize(uint32_t zid, uint8_t isOvhdExcl); - -/** - * @brief exStorageVerifyPkg(uint32_t zid, uint8_t *hash, uint32_t pkgSize, uint32_t *pkgState) - * @details validate the data pkg - * - * @param pkgState the last state of data pkg - * @return 0 succ; < 0 failure with errno. - */ -int32_t exStorageVerifyPkg(uint32_t zid, uint8_t *hash, uint32_t pkgSize, uint32_t *pkgState); - -/** - * @brief exStorageGetUpdResult(uint32_t zid, int32_t *pkgState) - * @details get the updated result - * - * @param pkgState the last state of data pkg - * @return 0 succ; < 0 failure with errno. - */ -int32_t exStorageGetUpdResult(uint32_t zid, int32_t *pkgState); - - -#endif - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/README.md b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/README.md deleted file mode 100644 index d5a2ec5..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/README.md +++ /dev/null @@ -1,109 +0,0 @@ -# LCD - -```bash -├── lcdDev -| ├── disFormat.c -| ├── lcdComm.c -| ├── lcdDev_7796.c -| ├── lcdDev_3037.c -| └── lcdDev_7789.c -└── lcdDrv.c -``` - -* æ—¶é’Ÿæµ‹é‡æŽ¥å£ç”¨äºŽåˆ†æžæ‰§è¡Œè€—时,并将所有耗时存储到外部flash导出(格å¼ä¸ºcsv) - -```bash -uint32_t measure_execution(void (*func)(va_list), ...) -``` - -## LSPI - -## Interface - -* 3线Iåž‹ – SCLã€CSã€SDA - 3线1data 9bit SPI – åŠåŒå·¥ï¼Œåªæœ‰ä¸€æ ¹åŒå‘的数æ®çº¿ -* 3线IIåž‹ –SCLã€CSã€SDIã€SDO - 3线2data 9bit SPI – å…¨åŒå·¥ï¼Œæœ‰ç‹¬ç«‹çš„MOSIã€MISO -* 4线Iåž‹ – SCLã€DCXã€CSã€SDA - 4线1data 8bit SPI – åŠåŒå·¥ï¼Œåªæœ‰ä¸€æ ¹åŒå‘的数æ®çº¿ -* 4线IIåž‹ – SCLã€DCXã€CSã€SDIã€SDO - 4线2data 8bit SPI –全åŒå·¥ï¼Œæœ‰ç‹¬ç«‹çš„MOSIã€MISO - -**SCL对应LSPI CLK,DCX对应LSPI WRX,多数LCD没有SDO** - -```bash - lspiCtrl.busType = 1; // Interface II - lspiCtrl.line4 = 1; - lspiCtrl.data2Lane = 0; -``` - -## DataFormat - -* 相较很多LCDçš„æŽ¥æ”¶æ•°æ®æ ¼å¼ï¼ŒLSPI默认先å‘逿”¾ä½Žä½ï¼ˆå¤§ç«¯æ¨¡å¼ï¼Œbit0在低ä½ï¼‰ï¼Œæ‰€ä»¥ä¼šå¯¼è‡´é¢œè‰²å转,读出的数æ®ä¹Ÿä¼šå¤§å°ç«¯å转。 -* 如果采用32ä½å¯„存器长度,ä¸è¿›è¡Œæ•°æ®åŽ‹ç¼©ï¼Œæ˜¯æ— æ³•ä¿®æ³•æ•°æ®é¡ºåºçš„。 - -```bash - lspiDataFmt.wordSize = 15; - lspiDataFmt.txPack = 1; - lspiDataFmt.rxPack = 1; - lspiDataFmt.endianMode = 1; - lspiDataFmt.rxFifoEndianMode = 1; - lcdDrv->ctrl(LSPI_CTRL_DATA_FORMAT, 0); -``` - -在转æ¢ç¼–ç æ—¶ï¼Œå…¸åž‹æµç¨‹å¦‚å°†RGB565转æ¢ä¸ºYUV420的步骤: - -* å°†RGB565转æ¢ä¸ºRGB888 -* å°†RGB888转æ¢ä¸ºYUV444 -* å°†YUV444转æ¢ä¸ºYUV420 - -### 注æ„事项 - -* 1)使用DMA->LSPI需è¦ä½¿èƒ½ç›¸å…³æ—¶é’Ÿ -```bash - PSRAM_dmaAccessClkCtrl(true); -``` - -* 2)DMA传输RGB565奇数åƒç´ æ—¶æœ€åŽä¸€ä¸ªåƒç´ æ— æ³•输出,需è¦åœ¨å¡«å……DMAæ•°æ®æ—¶è¡¥ä¸€ä¸ªåƒç´ ï¼ˆRGB565 - 2bytes),而LSPI的传输长度ä¸éœ€è¦è¡¥ï¼Œè¿™æ ·å®žé™…传输的åƒç´ ä¸ä¼šå¤šå‡ºä¸€ä¸ªã€‚ - -## LCD - -| Driver | Interface | DataLane | Resolution | TransTime | FrameRate -| ------- | ------- | ------- | ------- | ------- | ------- | -| ST7789 | 4Wire-II | 1 | 240x320 | 24ms | 41 fps -| ST7789 | 4Wire-II | 2 | 240x320 | 14ms | 72 fps -| NV3037 | 4Wire-II | 2 | 320x480 | 27ms | 37 fps -| ST7796 | 4Wire-II | 1 | 320x480 | 41ms | 24 fps - -* 最高速率在LSPIé…ç½®51MHzæ—¶é’Ÿæ¡ä»¶ä¸‹æµ‹å¾—,相关é…ç½®**lspi.c** - -### ST7796S - -* 读数æ®çš„æ—¶é’ŸæŽ¨è12MHzï¼Œæ—¶é’Ÿå¤ªé«˜ä¼šå‡ºçŽ°æ•°æ®æ— æ³•å¯¹é½ -* 读å–LCD RAMæ•°æ®ä½¿ç”¨0x3E寄存器 -* MADCTL 0x36 / MADCTRå½±å“RGBæŽ’åˆ—é¡ºåº -* RDDST 0x09 (0x53) 写入和读出的数æ®å色 - -MADCTLå¯„å­˜å™¨æŽ§åˆ¶æ˜¾ç¤ºæ–¹å‘ -```bash -Bit D7 MY -0:Top to Bottom -1:Bottom to Top - -Bit D6 MX -0:Left to Right (MX=0 MEM RGB) -1:Right to Left (MX=1 MEM BGR) - -Bit D5 MV -1: Row/column exchange - -Bit D4 ML (Vertical Refresh Order) -0:LCD refresh Top to Bottom -1:LCD refresh Bottom to Top - -Bit D3 RGB -0:RGB -1:BGR - -Bit D2 MH (Horizontal Refresh Order) -0:Left to Right -1:Right to Left -``` - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/disFormat.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/disFormat.h deleted file mode 100644 index 2b6e707..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/disFormat.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef _DIS_FMT_H_ -#define _DIS_FMT_H_ -#ifdef __cplusplus -extern "C" { -#endif -void yuv422ToRgb565(const void *inbuf, void *outbuf, int width, int height); -void yuv420ToRgb565(const void* inbuf, void* outbuf, int width, int height); -void rgb565ToYuv422(const void *inbuf, void *outbuf, int width, int height); -void rgb565ToYuv420(const void* inbuf, void* outbuf, int width, int height); -void rgb565ToYCbCr(const void *inbuf, void *outbuf, int width, int height); -void yCbCrToRgb565(const void *inbuf, void *outbuf, int width, int height); -#ifdef __cplusplus -} -#endif -#endif /* _DIS_FMT_H_ */ - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdComm.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdComm.h deleted file mode 100644 index 744224d..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdComm.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef _LCD_COMM_H -#define _LCD_COMM_H -#ifdef __cplusplus -extern "C" { -#endif -#include -#include -#include "ec7xx.h" -#include "bsp.h" -#include "lspi.h" - -#define DMA_BULK_NUM (1023*8) -#define DMA_DESC_MAX (160) // RGB888 man need big desc chain - - -void lcdWriteCmd(uint8_t cmd); -void lcdWriteData(uint8_t data); -void lcdInterfaceType(uint8_t type); -void lspiCmdSend(uint8_t cmd, uint8_t *data, uint8_t num); -void lspiReadReg(uint8_t addr,uint8_t *data,uint16_t num, uint8_t dummyCycleLen); -void lspiReadRam(uint32_t *data,uint32_t num); -void lcdDrvDelay(uint32_t ms); -void lspiFifoWrite(uint32_t data); - -#if (BK_USE_PWM == 1) -uint32_t millis(void); -uint8_t lcdPwmBkLevel(uint8_t level); -#endif - -#if (BK_USE_GPIO == 1) -void lcdGpioBkLevel(uint8_t level); -#endif - -typedef void (*lcdDmaCb)(uint32_t event); -typedef void (*lcdUspCb)(); - -int dmaInit(lcdDmaCb cb); -void lcdRst(uint32_t highUs, uint32_t lowUs); -void dmaStartStop(bool start); -int lspiDefaultCfg(lcdDrvFunc_t *lcd, lcdUspCb cb, uint32_t freq, uint8_t bpp); -int lcdDmaTrans(lcdDrvFunc_t *lcd, void *sourceAddress, uint32_t totalLength); -void lcdMspiSet(uint8_t enable, uint8_t addrLane, uint8_t dataLane, uint8_t instruction); -void lcdMspiHsyncSet(uint8_t hsyncAddr, uint8_t hsyncInst, uint16_t vbpNum, uint16_t vfpNum); -void lcdMspiVsyncSet(uint8_t vsyncEnable, uint8_t vsyncInst, uint8_t lspiDiv); -void lcdCsnHighCycleMin(uint8_t lspiDiv); - - -#ifdef __cplusplus -} -#endif -#endif /* LCDCOMM_H */ - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_15231.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_15231.h deleted file mode 100644 index 1ed6b90..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_15231.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef LCD_AXS15231_ -#define LCD_AXS15231_ - -#define AXS15231_BPP (16) // 12: 444; 16:565; 18:666 -#define AXS15231_WIDTH (320) -#define AXS15231_HEIGHT (480) -#define AXS15231_FREQ (51*1024*1024) -#define AXS15231_INTERFACE (SPI_3W_I) -#define AXS15231_TIME_OF_FRAME (149356) // us -#define AXS15231_TE_CYCLE (16742) // us -#define AXS15231_TE_WAIT_TIME (623) // us -#define AXS15231_X_OFFSET (0) -#define AXS15231_Y_OFFSET (0) - -#if (LCD_INTERFACE_8080 == 1) -#if (AXS15231_INTERFACE != INTERFACE_8080) -#error "Please choose 8080 interface for AXS15231_INTERFACE" -#endif -#elif (LCD_INTERFACE_SPI == 1) -#if ((AXS15231_INTERFACE != SPI_3W_I) && (AXS15231_INTERFACE != SPI_3W_II) && (AXS15231_INTERFACE != SPI_4W_I) && (AXS15231_INTERFACE != SPI_4W_II)) -#error "Please choose SPI interface for AXS15231_INTERFACE" -#endif -#endif - - -#undef LCD_WIDTH -#undef LCD_HEIGHT -#define LCD_HEIGHT (AXS15231_HEIGHT) -#define LCD_WIDTH (AXS15231_WIDTH) -#define LCD_BPP_USE (AXS15231_BPP) -#define LCD_INTERFACE (AXS15231_INTERFACE) -#define LCD_FREQ (AXS15231_FREQ) -#define LCD_X_OFFSET (AXS15231_X_OFFSET) -#define LCD_Y_OFFSET (AXS15231_Y_OFFSET) - -#define LCD_PIXEL (LCD_HEIGHT*LCD_WIDTH) -#define LCD_TIME_OF_FRAME (AXS15231_TIME_OF_FRAME) // us -#define LCD_TE_CYCLE (AXS15231_TE_CYCLE) // us -#define LCD_TE_WAIT_TIME (AXS15231_TE_WAIT_TIME) // us - -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_3037.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_3037.h deleted file mode 100644 index 8427578..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_3037.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef LCD_NV3037_H_ -#define LCD_NV3037_H_ - -#define LCD_NV3037 -#define LCD_NAME "NV3037" -#define LCD_BPP 16 - -#ifndef LCD_WIDTH_3037 -#define LCD_WIDTH_3037 320 -#undef LCD_WIDTH -#define LCD_WIDTH LCD_WIDTH_3037 -#endif - -#ifndef LCD_HEIGHT_3037 -#define LCD_HEIGHT_3037 480 -#undef LCD_HEIGHT -#define LCD_HEIGHT LCD_HEIGHT_3037 -#endif - -#ifndef LCD_SPI_DATA_LANE -#define LCD_SPI_DATA_LANE 2 -#endif -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_5300.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_5300.h deleted file mode 100644 index 880ab88..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_5300.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef LCD_CO5300_ -#define LCD_CO5300_ - -#define CO5300_BPP (16) // 16:565; 18:666 24:888 -#define CO5300_WIDTH (460) -#define CO5300_HEIGHT (460) -#define CO5300_FREQ (51*1024*1024) -#define CO5300_INTERFACE (MSPI_4W_II) -#define CO5300_TE_CYCLE (16327) // us -#define CO5300_TE_WAIT_TIME (425) // us -#define CO5300_X_OFFSET (0xa) -#define CO5300_Y_OFFSET (0) - -#if (ST8601_INTERFACE == MSPI_4W_II) -#if (LCD_INTERFACE_MSPI != 1) -#error "Please choose MSPI interface in RTE_Device.h" -#endif -#endif - - -#undef LCD_WIDTH -#undef LCD_HEIGHT -#define LCD_HEIGHT (CO5300_HEIGHT) -#define LCD_WIDTH (CO5300_WIDTH) -#define DEFAULT_INST (0x2) -#define LCD_BPP_USE (CO5300_BPP) -#define LCD_INTERFACE (CO5300_INTERFACE) -#define LCD_FREQ (CO5300_FREQ) -#define LCD_X_OFFSET (CO5300_X_OFFSET) -#define LCD_Y_OFFSET (CO5300_Y_OFFSET) - -#define LCD_PIXEL (LCD_HEIGHT*LCD_WIDTH) -#define LCD_TE_CYCLE (CO5300_TE_CYCLE) // us -#define LCD_TE_WAIT_TIME (CO5300_TE_WAIT_TIME) // us - -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_7567.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_7567.h deleted file mode 100644 index 4403873..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_7567.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef LCDDEV_7567_H -#define LCDDEV_7567_H - - -#include "lcdDrv.h" - -#define HEIGHT_7567 (64) -#define WIDTH_7567 (128) - - - -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_7571.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_7571.h deleted file mode 100644 index 759a4f6..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_7571.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef LCDDEV_7571_H -#define LCDDEV_7571_H - - -#include "lcdDrv.h" - -#define HEIGHT_7571 (128) -#define WIDTH_7571 (128) - - - -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_7789.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_7789.h deleted file mode 100644 index 8fec194..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_7789.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef LCD_ST7789_ -#define LCD_ST7789_ - -#define ST7789_BPP (16) // 12: 444; 16:565; 18:666 -#define ST7789_WIDTH (240) -#define ST7789_HEIGHT (320) -#define ST7789_FREQ (51*1024*1024) -#define ST7789_INTERFACE (SPI_4W_II) -#define ST7789_TIME_OF_FRAME (149356) // us -#define ST7789_TE_CYCLE (16742) // us -#define ST7789_TE_WAIT_TIME (623) // us -#define ST7789_X_OFFSET (0) -#define ST7789_Y_OFFSET (0) - -#if (LCD_INTERFACE_8080 == 1) -#if (ST7789_INTERFACE != INTERFACE_8080) -#error "Please choose 8080 interface for ST7789_INTERFACE" -#endif -#elif (LCD_INTERFACE_SPI == 1) -#if ((ST7789_INTERFACE != SPI_3W_I) && (ST7789_INTERFACE != SPI_3W_II) && (ST7789_INTERFACE != SPI_4W_I) && (ST7789_INTERFACE != SPI_4W_II)) -#error "Please choose SPI interface for ST7789_INTERFACE" -#endif -#endif - - -#undef LCD_WIDTH -#undef LCD_HEIGHT -#define LCD_HEIGHT (ST7789_HEIGHT) -#define LCD_WIDTH (ST7789_WIDTH) -#define LCD_BPP_USE (ST7789_BPP) -#define LCD_INTERFACE (ST7789_INTERFACE) -#define LCD_FREQ (ST7789_FREQ) -#define LCD_X_OFFSET (ST7789_X_OFFSET) -#define LCD_Y_OFFSET (ST7789_Y_OFFSET) - -#define LCD_PIXEL (LCD_HEIGHT*LCD_WIDTH) -#define LCD_FREQ (ST7789_FREQ) -#define LCD_TIME_OF_FRAME (ST7789_TIME_OF_FRAME) // us -#define LCD_TE_CYCLE (ST7789_TE_CYCLE) // us -#define LCD_TE_WAIT_TIME (ST7789_TE_WAIT_TIME) // us - -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_77903.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_77903.h deleted file mode 100644 index 99f3974..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_77903.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef LCD_ST77903_ -#define LCD_ST77903_ - -#define ST77903_BPP (16) // 16:565; 18:666 24:888 -#define ST77903_WIDTH (400) -#define ST77903_HEIGHT (400) -#define ST77903_FREQ (8*1024*1024) -#define ST77903_INTERFACE (MSPI_4W_II) -#define BIST_TEST (0) -#define ST77903_TIME_OF_FRAME (149356) // us -#define ST77903_TE_CYCLE (16742) // us -#define ST77903_TE_WAIT_TIME (623) // us -#define ST77903_X_OFFSET (0) -#define ST77903_Y_OFFSET (0) - -#if (ST77903_INTERFACE == MSPI_4W_II) -#if (LCD_INTERFACE_MSPI != 1) -#error "Please choose MSPI interface in RTE_Device.h" -#endif -#endif - - -#undef LCD_WIDTH -#undef LCD_HEIGHT -#define LCD_HEIGHT (ST77903_HEIGHT) -#define LCD_WIDTH (ST77903_WIDTH) -#define DEFAULT_INST (0xde) -#define LCD_BPP_USE (ST77903_BPP) -#define LCD_INTERFACE (ST77903_INTERFACE) -#define LCD_FREQ (ST77903_FREQ) -#define LCD_X_OFFSET (ST77903_X_OFFSET) -#define LCD_Y_OFFSET (ST77903_Y_OFFSET) - -#define LCD_PIXEL (LCD_HEIGHT*LCD_WIDTH) -#define LCD_TIME_OF_FRAME (ST77903_TIME_OF_FRAME) // us -#define LCD_TE_CYCLE (ST77903_TE_CYCLE) // us -#define LCD_TE_WAIT_TIME (ST77903_TE_WAIT_TIME) // us - - -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_7796.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_7796.h deleted file mode 100644 index 9148e80..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_7796.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef LCD_ST7796_H -#define LCD_ST7796_H - -#define LCD_ST7796 -#define LCD_NAME "ST7796" -#define LCD_BPP 16 - -#ifndef LCD_WIDTH_7796 -#define LCD_WIDTH_7796 320 -#undef LCD_WIDTH -#define LCD_WIDTH LCD_WIDTH_7796 -#endif - -#ifndef LCD_HEIGHT_7796 -#define LCD_HEIGHT_7796 480 -#undef LCD_HEIGHT -#define LCD_HEIGHT LCD_HEIGHT_7796 -#endif - -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_8601.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_8601.h deleted file mode 100644 index 58b5a2e..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_8601.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef LCD_SH8601_ -#define LCD_SH8601_ - -#define SH8601_BPP (16) // 16:565; 18:666 24:888 -#define SH8601_WIDTH (466) -#define SH8601_HEIGHT (466) -#define SH8601_FREQ (8*1024*1024) -#define SH8601_INTERFACE (MSPI_4W_II) -#define SH8601_TIME_OF_FRAME (167331) // us -#define SH8601_TE_CYCLE (16742) // us -#define SH8601_TE_WAIT_TIME (623) // us -#define SH8601_X_OFFSET (0) -#define SH8601_Y_OFFSET (0) - -#if (ST8601_INTERFACE == MSPI_4W_II) -#if (LCD_INTERFACE_MSPI != 1) -#error "Please choose MSPI interface in RTE_Device.h" -#endif -#endif - - -#undef LCD_WIDTH -#undef LCD_HEIGHT -#define LCD_HEIGHT (SH8601_HEIGHT) -#define LCD_WIDTH (SH8601_WIDTH) -#define DEFAULT_INST (0x2) -#define LCD_BPP_USE (SH8601_BPP) -#define LCD_INTERFACE (SH8601_INTERFACE) -#define LCD_FREQ (SH8601_FREQ) -#define LCD_X_OFFSET (SH8601_X_OFFSET) -#define LCD_Y_OFFSET (SH8601_Y_OFFSET) - -#define LCD_PIXEL (LCD_HEIGHT*LCD_WIDTH) -#define LCD_TIME_OF_FRAME (SH8601_TIME_OF_FRAME) // us -#define LCD_TE_CYCLE (SH8601_TE_CYCLE) // us -#define LCD_TE_WAIT_TIME (SH8601_TE_WAIT_TIME) // us - -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_9307.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_9307.h deleted file mode 100644 index f56d04b..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDev/lcdDev_9307.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef LCD_GC9307_ -#define LCD_GC9307_ - -#define GC9307_BPP (16) // 12: 444; 16:565; 18:666 -#define GC9307_WIDTH (240) -#define GC9307_HEIGHT (320) -#define GC9307_FREQ (51*1024*1024) -#define GC9307_INTERFACE (SPI_4W_I) -#define GC9307_TIME_OF_FRAME (149356) // us -#define GC9307_TE_CYCLE (16742) // us -#define GC9307_TE_WAIT_TIME (623) // us -#define GC9307_X_OFFSET (0) -#define GC9307_Y_OFFSET (0) - -#if (LCD_INTERFACE_8080 == 1) -#if (GC9307_INTERFACE != INTERFACE_8080) -#error "Please choose 8080 interface for GC9307_INTERFACE" -#endif -#elif (LCD_INTERFACE_SPI == 1) -#if ((GC9307_INTERFACE != SPI_3W_I) && (GC9307_INTERFACE != SPI_3W_II) && (GC9307_INTERFACE != SPI_4W_I) && (GC9307_INTERFACE != SPI_4W_II)) -#error "Please choose SPI interface for GC9307_INTERFACE" -#endif -#endif - - -#undef LCD_WIDTH -#undef LCD_HEIGHT -#define LCD_HEIGHT (GC9307_HEIGHT) -#define LCD_WIDTH (GC9307_WIDTH) -#define LCD_BPP_USE (GC9307_BPP) -#define LCD_INTERFACE (GC9307_INTERFACE) -#define LCD_X_OFFSET (GC9307_X_OFFSET) -#define LCD_Y_OFFSET (GC9307_Y_OFFSET) - -#define LCD_PIXEL (LCD_HEIGHT*LCD_WIDTH) -#define LCD_TIME_OF_FRAME (GC9307_TIME_OF_FRAME) // us -#define LCD_TE_CYCLE (GC9307_TE_CYCLE) // us -#define LCD_TE_WAIT_TIME (GC9307_TE_WAIT_TIME) // us - -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDrv.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDrv.h deleted file mode 100644 index 6516786..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/lcd/lcdDrv.h +++ /dev/null @@ -1,236 +0,0 @@ -#ifndef _LCD_DRV_H -#define _LCD_DRV_H -#ifdef __cplusplus -extern "C" { -#endif -#include -#include -#include "ec7xx.h" -#include "bsp.h" -#include "lspi.h" -#include "disFormat.h" - -#define LCD_COLOR565(r, g, b) (((r & 0xF8) << 8) | ((g & 0xFC) << 3) | ((b & 0xF8) >> 3)) - -#define RED (0x001f) -#define GREEN (0x07e0) -#define BLUE (0xf800) -#define WHITE (0xffff) -#define BLACK (0x0000) -#define YELLOW (0xffe0) -#define PURPLE (0x8010) -#define GOLDEN (0xFEA0) - -#define SPI_3W_I (0) -#define SPI_3W_II (1) -#define SPI_4W_I (2) -#define SPI_4W_II (3) -#define MSPI_4W_II (4) -#define INTERFACE_8080 (5) - - -#define LCD_RST_LOW do {GPIO_pinWrite(LSPI_RST_GPIO_INSTANCE, 1 << LSPI_RST_GPIO_PIN, 0);}while(0) -#define LCD_RST_HIGH do {GPIO_pinWrite(LSPI_RST_GPIO_INSTANCE, 1 << LSPI_RST_GPIO_PIN, 1 << LSPI_RST_GPIO_PIN);}while(0) - - - -typedef struct -{ - uint8_t cmd; - uint8_t len; - uint8_t data[32]; -}initLine_t; - - -typedef enum -{ - stopPreview = 0, - startPreview = 1, -}camPreviewStartStop_e; - -typedef enum -{ - cbForCam = 0, - cbForFill = 1, -}uspCbRole_e; - -typedef enum -{ - TE_RISE_EDGE = 0, - TE_FALL_EDGE = 1, -}teEdgeSel_e; - - -typedef enum -{ - /* @---> X - | - Y - */ - DIS_DIR_LRTB, /**< From left to right then from top to bottom, this consider as the original direction of the screen */ - - /* Y - | - @---> X - */ - DIS_DIR_LRBT, /**< From left to right then from bottom to top */ - - /* X <---@ - | - Y - */ - DIS_DIR_RLTB, /**< From right to left then from top to bottom */ - - /* Y - | - X <---@ - */ - DIS_DIR_RLBT, /**< From right to left then from bottom to top */ - - /* @---> Y - | - X - */ - DIS_DIR_TBLR, /**< From top to bottom then from left to right */ - - /* X - | - @---> Y - */ - DIS_DIR_BTLR, /**< From bottom to top then from left to right */ - - /* Y <---@ - | - X - */ - DIS_DIR_TBRL, /**< From top to bottom then from right to left */ - - /* X - | - Y <---@ - */ - DIS_DIR_BTRL, /**< From bottom to top then from right to left */ - - DIS_DIR_MAX, - /* Another way to represent rotation with 3 bit*/ - DIS_MIRROR_X = 0x40, /**< Mirror X-axis */ - DIS_MIRROR_Y = 0x20, /**< Mirror Y-axis */ - DIS_SWAP_XY = 0x80, /**< Swap XY axis */ -} DisDirection_e; - -typedef enum -{ - LCD_POWER_OFF = 0, - LCD_POWER_ON = 1 -}lcdPowerOnOff_e; - -typedef enum -{ - CAM_PREVIEW_SET_AUTO = 0, - CAM_PREVIEW_SET_MANUAL = 1 -}lcdPreviewModeSel_e; - -typedef struct -{ - uint16_t rowScaleFrac; - uint16_t colScaleFrac; - uint16_t tailorLeft; - uint16_t tailorRight; - uint16_t tailorTop; - uint16_t tailorBottom; -}lcdPreviewManulItem_t; - -typedef struct -{ - lcdPreviewModeSel_e previewModeSel; - lcdPreviewManulItem_t previewManulSet; -}lcdIoCtrl_t; - -typedef struct _lcdDrvFunc_t lcdDrvFunc_t; -typedef void (*lspiErrCb)(uint32_t stats); - -typedef struct _lcdDrvFunc_t -{ - uint32_t id; - uint16_t width; - uint16_t height; - uint32_t freq; - uint8_t bpp; - initLine_t *initRegTbl; - uint32_t initRegTblLen; - uint8_t dir; // vertical: 0; horizontal: 1; - - int (*init) (lcdDrvFunc_t *lcd, void* uspCb, void* dmaCb, uint32_t freq, uint8_t bpp); - void (*drawPoint) (lcdDrvFunc_t *lcd, uint16_t x, uint16_t y, uint32_t dataWrite); - uint32_t (*setWindow) (lcdDrvFunc_t *lcd, uint16_t sx, uint16_t ex, uint16_t sy, uint16_t ey); - int (*fill) (lcdDrvFunc_t *lcd, uint32_t fillLen, uint8_t *buf); - void (*backLight) (lcdDrvFunc_t *lcd, uint8_t level); - void (*powerOnOff) (lcdDrvFunc_t *lcd, lcdPowerOnOff_e onoff); - void (*startStop) (lcdDrvFunc_t *lcd, bool startOrStop); - void (*startStopPreview) (lcdDrvFunc_t *lcd, camPreviewStartStop_e previewStartStop); - void (*uspIrq4CamCb) (lcdDrvFunc_t *lcd); - void (*uspIrq4FillCb) (lcdDrvFunc_t *lcd); - void (*registerUspIrqCb) (lcdDrvFunc_t *lcd, uspCbRole_e who); - void (*unregisterUspIrqCb) (lcdDrvFunc_t *lcd, uspCbRole_e who); - int (*direction) (lcdDrvFunc_t *lcd, DisDirection_e dir); - int (*close) (lcdDrvFunc_t *lcd); -}lcdDrvFunc_t; - - -#if (LCD_ST7789_ENABLE == 1) -#include "lcdDev_7789.h" -extern lcdDrvFunc_t st7789Drv; -#elif (LCD_SH8601_ENABLE == 1) -#include "lcdDev_8601.h" -extern lcdDrvFunc_t sh8601Drv; -#elif (LCD_ST7571_ENABLE == 1) -#include "lcdDev_7571.h" -extern lcdDrvFunc_t st7571Drv; -#elif (LCD_ST7567_ENABLE == 1) -#include "lcdDev_7567.h" -extern lcdDrvFunc_t st7567Drv; -#elif (LCD_ST77903_ENABLE == 1) -#include "lcdDev_77903.h" -extern lcdDrvFunc_t st77903Drv; -#elif (LCD_GC9307_ENABLE == 1) -#include "lcdDev_9307.h" -extern lcdDrvFunc_t gc9307Drv; -#elif (LCD_AXS15231_ENABLE == 1) -#include "lcdDev_15231.h" -extern lcdDrvFunc_t axs15231Drv; -#elif (LCD_CO5300_ENABLE == 1) -#include "lcdDev_5300.h" -extern lcdDrvFunc_t co5300Drv; - -#endif - - -void lcdRegInit(uint32_t id); -lcdDrvFunc_t* lcdOpen(uint32_t id, void* uspCb, void* dmaCb); -int lcdClose(lcdDrvFunc_t *pdrv); -void lcdIoInit(bool isAonIO); -void lcdRegisterSlp1Cb(lcdSlp1Cb_fn cb); -int lcdDirection(lcdDrvFunc_t *pdrv, DisDirection_e dir); -int lcdFill(lcdDrvFunc_t *pdrv, uint32_t fillLen, uint8_t* buf); -void lcdDrawPoint(lcdDrvFunc_t *pdrv, uint16_t x, uint16_t y, uint32_t dataWrite); -void camPreview(lcdDrvFunc_t *pdrv, camPreviewStartStop_e previewStartStop); -void lcdBackLight(lcdDrvFunc_t *pdrv, uint8_t level); -uint32_t lcdSetWindow(lcdDrvFunc_t *pdrv, uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey); -void lspiRstAndClearFifo(); -void lspiRegisterErrStatsCb(lspiErrCb errCb); -void lspiCheckErrStats(); -void imageRotateColor(uint8_t* src, uint32_t width, uint32_t height, uint8_t* dst, uint8_t bpp); -void imageRotateGray(uint8_t* src, uint32_t width, uint32_t height, uint8_t* dst); -void yuv422ToRgb565_2(const void* inbuf, void* outbuf, int width, int height); -void lcdIoCtrl(lcdDrvFunc_t *lcd, lcdIoCtrl_t ioCtrl); -void lcdConfigReg(lcdDrvFunc_t *lcd, uint8_t cmd, uint8_t *data, uint8_t dataLen); -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) -void calTe(uint32_t totalBytes, uint16_t sy); -#else // 719 -void calTe(teEdgeSel_e teEdge, uint16_t xs, uint16_t ys, uint16_t xe, uint16_t ye); -#endif - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/ntc/ntc.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/ntc/ntc.h deleted file mode 100644 index 0bf8485..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/ntc/ntc.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef _NTC_H -#define _NTC_H - -#ifdef __cplusplus -extern "C" { -#endif - -/** - \brief Get NTC temperature - - Vref(AIO1 output 1200000 uV) - v - | - | - +-+ - | | - | | R = 10 Kohm - | | - +-+ - |--------->(AIO2) - +-+ - | | - | | Rntc - | | - +-+ - | - ----- - --- (GND) - - - - \param[in] adcInputVoltage ADC input voltage in unit of uV - \return temperature in unit of mili degree centigrade - */ -int32_t ntcGetTemperature(int32_t adcInputVoltage); - -#ifdef __cplusplus -} -#endif - -#endif /* _NTC_H */ diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/plat_config.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/plat_config.h deleted file mode 100644 index a12b8f0..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/plat_config.h +++ /dev/null @@ -1,852 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2019-, Copyrigths of EigenComm Ltd. - * File name: plat_config.h - * Description: platform configuration header file - * History: Rev1.0 2019-01-18 - * Rev1.1 2019-11-27 Reimplement file operations with OSA APIs(LFS wrapper), not directly using LFS APIs in case of file system replacement - * Rev1.2 2020-01-01 Separate plat config into two parts, FS and raw flash - * - ****************************************************************************/ - -#ifndef _PLAT_CONFIG_H -#define _PLAT_CONFIG_H - -#include "Driver_Common.h" -#include "cmsis_compiler.h" - -/******************************************************************************* - * Definitions - ******************************************************************************/ - - -//use FEATURE_PLAT_CFG_FS_SUP_USBNET_ATA not DFEATURE_USBNET_ATA_FOR_AP, the plat cfgfs structure is same for bootloader and ap -#ifndef FEATURE_PLAT_CFG_FS_SUP_USBNET_ATA - -#define FS_PLAT_CONFIG_FILE_CURRENT_VERSION (0) -#else -// the version 1 use scalable plat cfg fs data structure, it's more useful when then data config grows dynamically -#define FS_PLAT_CONFIG_FILE_CURRENT_VERSION (1) -#endif - -#define RAW_FLASH_PLAT_CONFIG_FILE_CURRENT_VERSION (1) - - - /** \brief config file header typedef */ -__PACKED_STRUCT _config_file_header -{ - uint16_t fileBodySize; /**< size of file body, in unit of byte */ - uint8_t version; /**< file version, this field shall be updated when file structure is changed */ - uint8_t checkSum; /**< check sum value of file body */ -}; -typedef struct _config_file_header config_file_header_t; - -/** \brief typedef of platform configuration stored in fs */ -typedef __PACKED_UNION _EPAT_atPortFrameFormat -{ - uint32_t wholeValue; - __PACKED_STRUCT _config - { - uint32_t dataBits : 3; - uint32_t parity : 2; - uint32_t stopBits : 2; - uint32_t flowControl : 3; - } config; -} atPortFrameFormat_t; - - - -// ulg port enum -typedef enum -{ - PLAT_CFG_ULG_PORT_USB=0, - PLAT_CFG_ULG_PORT_UART, - PLAT_CFG_ULG_PORT_MIX, - PLAT_CFG_ULG_PORT_SRAM, - PLAT_CFG_ULG_PORT_MAX -} PlatCfgUlgPort_e; - - - -#if (FS_PLAT_CONFIG_FILE_CURRENT_VERSION==0) -/*verion 0 orignal plat cfg, no change the data structure compare to released sdk, -so no merge needed when new sdk release, and plat cfg fs will also not change -when new sdk burned. */ - -/** \brief typedef of platform configuration stored in fs */ -typedef __PACKED_STRUCT _NVM_EPAT_plat_config -{ - /** PM on/off flag - * valid value: - * 0x504D5544 -- PM is disabled, "PMUD" - * 0x504D5545 -- PM is enabled, "PMUE" - */ - uint32_t enablePM; - - /** sleep mode - * valid value: - * 0 -- dummy - * 1 -- dummy - */ - uint8_t sleepMode; - - /** wait n ms before sleep, when wakeup from pad - * valid value: - * 0 -- do not wait - * x -- wait x ms - */ - uint32_t slpWaitTime; - - /** AT baudrate,for AP only - * should be equal to 'atPortBaudRate' in struct plat_config_raw_flash_t - */ - uint32_t atPortBaudRate; - - /** AT port frame format*/ - atPortFrameFormat_t atPortFrameFormat; - - /** ECQSCLK config - * valid value: - * 0 -- ECQSCLK set to 0 - * 1 -- ECQSCLK set to 1 - */ - uint8_t ecSclkCfg; - - -} plat_config_fs_t; - -#else -/*version 1, scalable plat cfg, two method to update the config data structure -1.The total data size for scalable area does not change when some new config data added, the reserved data array still have some bytes spare, -the added data just use one or some bytes of the reserved data array. -When the new config data added the upgrade is compatitble. and downgrade is also compatitble too. -If the new config data added is a automatical parameter, such as the usbNetAdaptResult, it's automatically setted by the UE connected with different Host Windows or Ubuntu. -If the new config data added is not a automatical parameter, it should be setted to a meaningful value otherwise when upgrade ,it may not work correctly as required by the default 0. - -In this case, the plat cfg fs data will not be overwrited to fs when both upgarde or downgrade initlal between the old/new sdk versions that plat cfg fs data size same . -it's more convenient for lightly upgrade or downgrade. - -2.The total data size for scalable area is increased when some new config data added. because the reserved data array has no some bytes spare, -Increase the scalable area with some bytes each time, such as each time 16 bytes(_NVM_PLATCFG_SCALE_UNIT_SZ) for example. use one or some of the increased bytes by new added parameter, -some other bytes defined as reserverd data array. -In this case, the plat cfg fs data will be writed when upgrade or downgrade ocurrs. - -Set recPrevArAllSzForUpg = scaleAreaAllSize - SCALE_AREA_SCALE_UNIT_SIZE - - -2.1 Upgarde from previous plat cfg fs structure to a new added parameter new plat cfg fs structure. -Provided condition: readed scalable area total size from plat cfg fs is not same with current scaleAreaAllSize real size - - -If the readed scalable area total size from plat cfg fs is same with recPrevArAllSzForUpg, then it's upgradable. -If not same with recPrevArAllSzForUpg, then it's not upgardable because may have a lot of difference between old/new versions. - -2.2 Downgrade from a new added parameter new plat cfg fs structure to an old plat cfg fs structure. -Provided condition: readed scalable area total size from plat cfg fs is not same with current scaleAreaAllSize var - -If the readed recPrevArAllSzForUpg from plat cfg fs is current scaleAreaAllSize real size, then it's downgradable. -If recPrevArAllSzForUpg not same with current scaleAreaAllSize real size, then it's not downgradable because may have a lot of difference between old/new versions. -*/ - -#define _NVM_PLATCFG_SCALE_UNIT_SZ 16 - - -// S 53 C 43 A 41 L 4C -#define PLAT_CFG_SCALE_START_MARK 0x4353 -#define PLAT_CFG_SCALE_END_MARK 0x4C41 - - - - -#define PLAT_CFG_GRP_CNT 1 -#define PLAT_CFG_FIX_BASE_SIZE 18 - -#define SCALE_AREA_GRP_UNIT_SIZE 16 -#define PLAT_CFG_GRP0_RSVBYTES_NUM 15 -#define PLAT_CFG_GRP0_TOKBYTES_NUM (SCALE_AREA_GRP_UNIT_SIZE-PLAT_CFG_GRP0_RSVBYTES_NUM) - - -#define PLAT_CFG_GRP_DATA_X(_TYPE_XX, __NAME_XX) _TYPE_XX __NAME_XX -#define PLAT_CFG_DATA_0(_TYPE_XX, __NAME_XX) PLAT_CFG_DATA_X(_TYPE_XX, __NAME_XX) - -#define PLAT_CFG_GRP_RSV_BYTE_X(__GRP_XX, __IDX_XX) uint8_t rsvBytes_##__GRP_XX##__IDX_XX - -#define PLAT_CFG_GRP0_ALL_TOK_BYTES() \ - uint8_t usbNetAdaptResult; - - -#define PLAT_CFG_GRP0_RSVBYTE_0() PLAT_CFG_GRP_RSV_BYTE_X(0, 0); -#define PLAT_CFG_GRP0_RSVBYTE_1() PLAT_CFG_GRP_RSV_BYTE_X(0, 1); -#define PLAT_CFG_GRP0_RSVBYTE_2() PLAT_CFG_GRP_RSV_BYTE_X(0, 2); -#define PLAT_CFG_GRP0_RSVBYTE_3() PLAT_CFG_GRP_RSV_BYTE_X(0, 3); -#define PLAT_CFG_GRP0_RSVBYTE_4() PLAT_CFG_GRP_RSV_BYTE_X(0, 4); -#define PLAT_CFG_GRP0_RSVBYTE_5() PLAT_CFG_GRP_RSV_BYTE_X(0, 5); -#define PLAT_CFG_GRP0_RSVBYTE_6() PLAT_CFG_GRP_RSV_BYTE_X(0, 6); -#define PLAT_CFG_GRP0_RSVBYTE_7() PLAT_CFG_GRP_RSV_BYTE_X(0, 7); -#define PLAT_CFG_GRP0_RSVBYTE_8() PLAT_CFG_GRP_RSV_BYTE_X(0, 8); -#define PLAT_CFG_GRP0_RSVBYTE_9() PLAT_CFG_GRP_RSV_BYTE_X(0, 9); -#define PLAT_CFG_GRP0_RSVBYTE_10() PLAT_CFG_GRP_RSV_BYTE_X(0, 10); -#define PLAT_CFG_GRP0_RSVBYTE_11() PLAT_CFG_GRP_RSV_BYTE_X(0, 11); -#define PLAT_CFG_GRP0_RSVBYTE_12() PLAT_CFG_GRP_RSV_BYTE_X(0, 12); -#define PLAT_CFG_GRP0_RSVBYTE_13() PLAT_CFG_GRP_RSV_BYTE_X(0, 13); -#define PLAT_CFG_GRP0_RSVBYTE_14() PLAT_CFG_GRP_RSV_BYTE_X(0, 14); -#define PLAT_CFG_GRP0_RSVBYTE_15() PLAT_CFG_GRP_RSV_BYTE_X(0, 15); - - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_0() PLAT_CFG_GRP0_RSVBYTE_0() - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_1() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_0() \ - PLAT_CFG_GRP0_RSVBYTE_1() - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_2() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_1() \ - PLAT_CFG_GRP0_RSVBYTE_2() - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_3() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_2() \ - PLAT_CFG_GRP0_RSVBYTE_3() - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_4() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_3() \ - PLAT_CFG_GRP0_RSVBYTE_4() - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_5() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_4 ()\ - PLAT_CFG_GRP0_RSVBYTE_5() - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_6() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_5() \ - PLAT_CFG_GRP0_RSVBYTE_6() - - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_7() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_6() \ - PLAT_CFG_GRP0_RSVBYTE_7() - - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_8() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_7() \ - PLAT_CFG_GRP0_RSVBYTE_8() - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_9() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_8() \ - PLAT_CFG_GRP0_RSVBYTE_9() - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_10() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_9() \ - PLAT_CFG_GRP0_RSVBYTE_10() - - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_11() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_10() \ - PLAT_CFG_GRP0_RSVBYTE_11() - - - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_12() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_11() \ - PLAT_CFG_GRP0_RSVBYTE_12() - - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_13() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_12() \ - PLAT_CFG_GRP0_RSVBYTE_13() - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_14() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_13() \ - PLAT_CFG_GRP0_RSVBYTE_14() - -#define PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_15() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_14() \ - PLAT_CFG_GRP0_RSVBYTE_15() - - -#if (PLAT_CFG_GRP0_RSVBYTES_NUM== 0) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==1) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_0() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==2) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_1() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==3) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_2() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==4) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_3() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==5) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_4() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==6) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_5() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==7) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_6() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==8) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_7() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM== 9) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_8() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==10) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_9() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==11) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_10) -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==12) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_11) -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==13) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_12() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==14) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_13() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==15) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_14() -#elif (PLAT_CFG_GRP0_RSVBYTES_NUM==16) -#define PLAT_CFG_GRP0_ALL_RSV_BYTES() PLAT_CFG_GRP0_RANGE_RSV_BYTES_0_15() -#endif - - - -typedef __PACKED_STRUCT plat_cfg_sc_grp0_tok_tag { - PLAT_CFG_GRP0_ALL_TOK_BYTES() -}plat_cfg_sc_grp0_tok_st; - - -typedef __PACKED_STRUCT plat_cfg_sc_grp0_all_data_tag { - PLAT_CFG_GRP0_ALL_TOK_BYTES() - PLAT_CFG_GRP0_ALL_RSV_BYTES() -}plat_cfg_sc_grp0_all_data_st; - - -#define SIZE_OF_TYPE_EQUAL_TO_SZX(type_x, size_x) \ - static inline char size_of##type_x##_equal_to_##size_x(void) { \ - char __dummy1[sizeof(type_x) - size_x]; \ - char __dummy2[size_x-sizeof(type_x)]; \ - return __dummy1[-1]+__dummy2[-1]; \ - } - -#define SIZE_OF_TYPE_EQUAL_TO_CALX(type_x, cal_sz_x) \ - static inline char size_of##type_x##_equal_to_cal_sz_x(void) { \ - char __dummy1[sizeof(type_x) - (cal_sz_x)]; \ - char __dummy2[(cal_sz_x)-sizeof(type_x)]; \ - return __dummy1[-1]+__dummy2[-1]; \ - } - - - -typedef __PACKED_STRUCT _NVM_EPAT_plat_config -{ - /*do not change any variable function or name of base fix area if want to upgrade , - because when sync para from prev plat config scale fs the para may be syncd unmatched and used uncorrectly*/ - - /** PM on/off flag - * valid value: - * 0x504D5544 -- PM is disabled, "PMUD" - * 0x504D5545 -- PM is enabled, "PMUE" - */ - uint32_t enablePM; - - /** sleep mode - * valid value: - * 0 -- dummy - * 1 -- dummy - */ - uint8_t sleepMode; - - /** wait n ms before sleep, when wakeup from pad - * valid value: - * 0 -- do not wait - * x -- wait x ms - */ - uint32_t slpWaitTime; - - /** AT baudrate,for AP only - * should be equal to 'atPortBaudRate' in struct plat_config_raw_flash_t - */ - uint32_t atPortBaudRate; - - /** AT port frame format*/ - atPortFrameFormat_t atPortFrameFormat; - - /** ECQSCLK config - * valid value: - * 0 -- ECQSCLK set to 0 - * 1 -- ECQSCLK set to 1 - */ - uint8_t ecSclkCfg; - - - /*Mark for reserve bytes area*/ - uint16_t scaleAreaStartMark; - - /*scalable area data define*/ - /*do not change any variable function or name of used scale area data, - because when sync para from prev plat config scale fs the para may be syncd unmatched and used uncorrectly*/ - //scaleAreaPureData0 - //uint8_t usbNetAdaptResult;/* 7-4: Adapt valid, 3-0:adapt result*/ - - - //scaleAreaPureData1- scaleAreaPureDataX X=(SCALE_AREA_SCALE_UNIT_SIZE-1) - //uint8_t scaleAreaSpareBytes[SCALE_AREA_SCALED_SPARE_SZ]; - PLAT_CFG_GRP0_ALL_TOK_BYTES() - PLAT_CFG_GRP0_ALL_RSV_BYTES() - - uint16_t scaleAreaEndMark; - - //scalable area data structure version, added 1 by customer if sometimes need to upgrade from specific scalable area verson to another specific scalable area version, - //if not need specific upgrade, set to defautl 0 ro add 1 just for record - uint16_t recScaleAreaGrpNum; - - uint16_t recPrevArAllSzForUpg; - - //uint16_t scaleTimers; - uint16_t scaleAreaAllSize; -} plat_config_fs_t; - - - -#endif - -/** \brief typedef of platform configuration stored in raw flash --old v0*/ -__PACKED_STRUCT _plat_config_raw_flash_v0 -{ - /** action to perform when assert or hard fault occurs - * valid value: - * 0 -- dump full exception info to flash and EPAT tool then trapped in endless loop(while(1)) - * 1 -- print necessary exception info then reset - * 2 -- dump full exception info to flash then reset - * 3 -- dump full exception info to flash and EPAT tool then reset - * 4 -- reset directly - * 10 -- enable uart help dump and dump full exception info to flash and EPAT tool then trapped in endless loop(while(1)) - * 13 -- enable uart help dump and dump full exception info to flash and EPAT tool, and then reset - */ - uint8_t faultAction; - - /** port select for dump info output when exception occurs - * valid value: - * 0,1,2,3,(4) -- specify which port - * 0xff -- disable this function - */ - uint8_t uartDumpPort; - - /** WDT start/stop control - * valid value: - * 0 -- stop WDT - * 1 -- start WDT - */ - uint8_t startWDT; - - /** unilog on/off flag - * valid value: - * 0 -- unilog is disabled - * 1 -- only sw log is enabled - * 2 -- All log is enabled - */ - uint8_t logControl; - - /** uart baudrate for unilog output */ - uint32_t uartBaudRate; - - /** debug trace log level setting, refer to 'DebugTraceLevelType_e' */ - uint32_t logLevel; - - /** unilog output port select - * valid value: - * 0 -- USB - * 1 -- UART - * 2 -- MIX(for future use UART/USB dynamic select) - **/ - PlatCfgUlgPort_e logPortSel; - - /** RNDIS enum control - * valid value: - * 0 -- enable USB init and enum RNDIS - * 1 -- enable USB init but not enum RNDIS - * 2 -- disable USB init - */ - uint8_t usbCtrl; - - /** usb software trace control - * valid value: - * 0 -- disable all usb software trace - * 1 -- enable all usb software trace - * others -- misc usb software trace - */ - uint8_t usbSwTrace; - - - - /** USB sleep mask - * valid value: - * 0 -- usb should vote to enter sleep - * 1 -- do not consider usb vote before sleep - */ - uint8_t usbSlpMask; - - /** USB sleep thd - * valid value: - * set the minimal time to sleep, when usbSlpMask=1 - */ - uint16_t usbSlpThd; - - /** pwrkey mode - * valid value: - * 1 power key mode - * 0 normal key mode - */ - uint8_t pwrKeyMode; -}; - -// fota urc port type -typedef enum -{ - PLAT_CFG_FOTA_URC_PORT_USB=0, - PLAT_CFG_FOTA_URC_PORT_UART, - PLAT_CFG_FOTA_URC_PORT_MAXTYPE -} PlatCfgFotaUrcPortType_e; - -#define PLAT_CFG_FOTA_URC_USB_PORT_IDX_MIN 0 -#define PLAT_CFG_FOTA_URC_USB_PORT_IDX_MAX 2 - -#define PLAT_CFG_FOTA_URC_UART_PORT_IDX_MIN 0 -#define PLAT_CFG_FOTA_URC_UART_PORT_IDX_MAX 1 - - -#define PLAT_CFG_RAW_FLASH_RSVD_SIZE 16 - -/** \brief typedef of platform configuration stored in raw flash */ -__PACKED_STRUCT _plat_config_raw_flash -{ - /** action to perform when assert or hard fault occurs - * valid value: - * 0 -- dump full exception info to flash and EPAT tool then trapped in endless loop(while(1)) - * 1 -- print necessary exception info then reset - * 2 -- dump full exception info to flash then reset - * 3 -- dump full exception info to flash and EPAT tool then reset - * 4 -- reset directly - * 10 -- enable uart help dump and dump full exception info to flash and EPAT tool then trapped in endless loop(while(1)) - * 13 -- enable uart help dump and dump full exception info to flash and EPAT tool, and then reset - */ - uint8_t faultAction; - - /** port select for dump info output when exception occurs - * valid value: - * 0,1,2,3,(4) -- specify which port - * 0xff -- disable this function - */ - uint8_t uartDumpPort; - - - /** WDT start/stop control - * valid value: - * 0 -- stop WDT - * 1 -- start WDT - */ - uint8_t startWDT; - - /** unilog on/off flag - * valid value: - * 0 -- unilog is disabled - * 1 -- only sw log is enabled - * 2 -- All log is enabled - */ - uint8_t logControl; - - /** uart baudrate for unilog output */ - uint32_t uartBaudRate; - - /** debug trace log level setting, refer to 'DebugTraceLevelType_e' */ - uint32_t logLevel; - - /** unilog output port select - * valid value: - * 0 -- USB - * 1 -- UART - * 2 -- MIX(for future use UART/USB dynamic select) - **/ - PlatCfgUlgPort_e logPortSel; - - /** RNDIS enum control - * valid value: - * 0 -- enable USB init and enum RNDIS - * 1 -- enable USB init but not enum RNDIS - * 2 -- disable USB init - */ - uint8_t usbCtrl; - - /** usb software trace control - * valid value: - * 0 -- disable all usb software trace - * 1 -- enable all usb software trace - * others -- misc usb software trace - */ - uint8_t usbSwTrace; - - - - /** USB sleep mask - * valid value: - * 0 -- usb should vote to enter sleep - * 1 -- do not consider usb vote before sleep - */ - uint8_t usbSlpMask; - - /** USB sleep thd - * valid value: - * set the minimal time to sleep, when usbSlpMask=1 - */ - uint16_t usbSlpThd; - - /** pwrkey mode - * valid value: - * 1 power key mode - * 0 normal key mode - */ - uint8_t pwrKeyMode; - - /** USB VBUS MODE Enable,Disable Flag - * valid value: - * 0 -- usb vbus mode disable - * 1 -- usb vbus mode enable - */ - uint8_t usbVBUSModeEn; - - /** USB VBUS MODE Wakup Pad Index - * valid value: - * 0,1,2,3,4,5 PAD IDX FOR USB VBUS WKUP PAD - */ - uint8_t usbVBUSWkupPad; - - /** USB NET IF SEL - * valid value: - * 0----RNDIS,default - * 1----ECM - */ - uint8_t usbNet; - - /** USB VCOM EN bitmap - * valid value: - * bit0---vcom0 - * bit1---vcom1 - * ---- - * ---- - */ - uint8_t usbVcomEnBitMap; - - /** AT/fotaURC baudrate, for AP & BL*/ - uint32_t atPortBaudRate; - - /** FOTA control - * 0 -- disable FOTA - * 1 -- enable FOTA - **/ - uint8_t fotaCtrl; - - /** FOTA URC output port select - * valid value(Bit4-7): - * 0 -- USB - * 1 -- UART - ** - * valid value(Bit0-3): - * 0-2 -- USB - * 0-1 -- UART - **/ - uint8_t fotaUrcPortSel; - - /** FOTA USB URC output port control - * 0 -- disable USB URC output - * 1 -- enable USB URC output - **/ - uint8_t fotaUsbUrcCtrl; - - /** pmuInCdrx - * valid value: - * 0---- - * 1---- - */ - uint8_t pmuInCdrx; - - /** slpLimitEn - * valid value: - * 0---- disable - * 1---- enable - */ - uint8_t slpLimitEn; - - /** slpLimitTime - * valid value: - * 0---0xFFFFFFFF - */ - uint32_t slpLimitTime; - - /** logOwnerAndLevel - * valid value: - * 0---0xFFFFFFFF - */ - uint32_t logOwnerAndLevel; - - /** wfi mode, do not enter doze */ - uint8_t wfiMode; - - /** ECIDLEP config - * valid value: - * 0 -- print flag set to 0 - * 1 -- print flag set to 1 - */ - uint8_t apIdlePercentPrintMode; - - /** cpSlpTest - * 0: disable sleep test - * 1: CP deepslp - * 2: Doze+pll vote disable - * 3. Doze+pll vote enable - * 4: DFC+WFI - * 5: WFI DFC disable - * 6. while - */ - uint8_t cpSlpTest; - - /* 'PLAT_CFG_RAW_FLASH_RSVD_SIZE' bytes rsvd for future */ - uint8_t resv[PLAT_CFG_RAW_FLASH_RSVD_SIZE]; -}; - -typedef struct _plat_config_raw_flash plat_config_raw_flash_t;//current -typedef struct _plat_config_raw_flash_v0 plat_config_raw_flash_v0_t;//old v0 - -/** \brief typedef of platform info layout stored in raw flash */ -__PACKED_STRUCT _plat_info_layout -{ - config_file_header_t header; /**< raw flash plat config header */ - plat_config_raw_flash_t config; /**< raw flash plat config body */ - uint32_t fsAssertCount; /**< count for monitoring FS assert, when it reaches specific number, FS region will be re-formated */ -}; -typedef struct _plat_info_layout plat_info_layout_t; - -/** @brief List of platform configuration items used to set/get sepecific setting */ -typedef enum _plat_config_id -{ - PLAT_CONFIG_ITEM_FAULT_ACTION = 0, /**< faultAction item */ - PLAT_CONFIG_ITEM_UART_DUMP_PORT, /**< uartDumpPort item */ - PLAT_CONFIG_ITEM_START_WDT, /**< startWDT item */ - PLAT_CONFIG_ITEM_LOG_CONTROL, /**< logControl item */ - PLAT_CONFIG_ITEM_LOG_BAUDRATE, /**< uart baudrate for log output */ - PLAT_CONFIG_ITEM_LOG_LEVEL, /**< logLevel item */ - PLAT_CONFIG_ITEM_ENABLE_PM, /**< enablePM item */ - PLAT_CONFIG_ITEM_SLEEP_MODE, /**< sleepMode item */ - PLAT_CONFIG_ITEM_WAIT_SLEEP, /**< wait ms before sleep */ - PLAT_CONFIG_ITEM_AT_PORT_BAUDRATE, /**< AT port baudrate */ - PLAT_CONFIG_ITEM_AT_PORT_FRAME_FORMAT, /**< AT port frame format */ - PLAT_CONFIG_ITEM_ECSCLK_CFG, /**< ECSCLK config */ - PLAT_CONFIG_ITEM_LOG_PORT_SEL, /**< ULG output port select */ - PLAT_CONFIG_ITEM_USB_CTRL, /**< USB control */ - PLAT_CONFIG_ITEM_USB_SW_TRACE_FLAG, /**< USB control */ - PLAT_CONFIG_ITEM_USB_SLEEP_MASK, /**< USB Sleep Vote Mask */ - PLAT_CONFIG_ITEM_USB_SLEEP_THD, /**< USB Sleep Thread */ - PLAT_CONFIG_ITEM_PWRKEY_MODE, /**< PWRKEY Mode */ - PLAT_CONFIG_ITEM_USB_VBUS_MODE_EN, /**< USB VBUS MODE ENABLE, DISABLE*/ - PLAT_CONFIG_ITEM_USB_VBUS_WKUP_PAD, /**< USB VBUS MODE WKUP PAD INDEX*/ - PLAT_CONFIG_ITEM_USB_NET, /**< USB NET Select*/ - PLAT_CONFIG_ITEM_USBNET_ATA_RESULT, /*USB NET Autoadapt result */ - PLAT_CONFIG_ITEM_USB_VCOM_EN_BMP, /**< USB VCOM Enabled Bitmap*/ - PLAT_CONFIG_ITEM_FOTA_CONTROL, /**< FOTA URC Port control*/ - PLAT_CONFIG_ITEM_FOTA_URC_PORT_SEL, /**< FOTA URC Port Select*/ - PLAT_CONFIG_ITEM_FOTA_USB_URC_CONTROL, /**< FOTA USB URC control*/ - PLAT_CONFIG_ITEM_PMUINCDRX, /**< PMUINCDRX Select*/ - PLAT_CONFIG_ITEM_SLP_LIMIT_EN, /**< enable sleep time limit*/ - PLAT_CONFIG_ITEM_SLP_LIMIT_TIME, /**< set maximum sleep time in mili second*/ - PLAT_CONFIG_ITEM_WFI_MODE, /**< WFI Mode */ - PLAT_CONFIG_ITEM_IDLEPERCENT_PRINT_MODE, /**< PRINT IDLE PERCENT MODE */ - PLAT_CONFIG_ITEM_CPSLPTEST_MODE, /**< CP Sleep Mode Test */ - PLAT_CONFIG_ITEM_TOTAL_NUMBER, /**< total number of items */ - PLAT_CONFIG_ITEM_LOG_OWNER_AND_LEVEL, /**< log Owner and logLevel for this Owner item */ -} plat_config_id_t; - - -/******************************************************************************* - * API - ******************************************************************************/ - -#ifdef __cplusplus - extern "C" { -#endif - -/** - \fn void BSP_SavePlatConfigToFs(void) - \brief Save platform configuration into FS - \return void - */ -void BSP_SavePlatConfigToFs(void); - -/** - \fn void BSP_LoadPlatConfigFromFs(void) - \brief Load platform configuration from FS - \return void - */ -void BSP_LoadPlatConfigFromFs(void); - -/** - \fn plat_config_fs_t* BSP_GetFsPlatConfig(void) - \brief Get FS platform configuration variable pointer - \return pointer to internal platform configuration loaded from FS - */ -plat_config_fs_t* BSP_GetFsPlatConfig(void); - -/** - \fn void BSP_SavePlatConfigToRawFlash(void) - \brief Save platform configuration into raw flash - \return void - */ -void BSP_SavePlatConfigToRawFlash(void); - -/** - \fn void BSP_LoadPlatConfigFromRawFlash(void) - \brief Load platform configuration from raw flash - \return void - */ -void BSP_LoadPlatConfigFromRawFlash(void); - -/** - \fn plat_config_raw_flash_t* BSP_GetRawFlashPlatConfig(void) - \brief Get raw flash platform configuration variable pointer - \return pointer to internal platform configuration loaded from raw flash - */ -plat_config_raw_flash_t* BSP_GetRawFlashPlatConfig(void); - -/** - \fn uint32_t BSP_GetPlatConfigItemValue(plat_config_id_t id) - \brief Get value of specific platform configuration item - \param[in] id id of platform configuration item, \ref plat_config_id_t - \return value of current configuration item - */ -uint32_t BSP_GetPlatConfigItemValue(plat_config_id_t id); - -/** - \fn void BSP_SetPlatConfigItemValue(plat_config_id_t id, uint32_t value) - \brief Set value of specific platform configuration item - \param[in] id id of platform configuration item, \ref plat_config_id_t - \param[in] value value of configuration item to set - \return void - */ -void BSP_SetPlatConfigItemValue(plat_config_id_t id, uint32_t value); - -/** - \fn uint32_t BSP_GetFSAssertCount(void) - \brief Fetch current 'fsAssertCount' value from PLAT_INFO region - \return current fsAssertCount value - */ -uint32_t BSP_GetFSAssertCount(void); - -/** - \fn void BSP_SetFSAssertCount(uint32_t value); - \brief Update 'fsAssertCount' value - \param[in] value new value assigned to 'fsAssertCount' - \return void - \note Internal use only on FS assert occurs - */ -void BSP_SetFSAssertCount(uint32_t value); - -/** - \fn void BSP_SetFsPorDefaultValue(void); - \brief when por happened some data may retore to it's default - \return void - */ -void BSP_SetFsPorDefaultValue(void); - -/** - \fn void BSP_SetPlatCfgUsbNetATAItemVal(void); - \brief when USB net auto adapt enabled, to store the adapt result usb net type - \return void - */ -void BSP_SetPlatCfgUsbNetATAItemVal(uint32_t val); - -/** - \fn void BSP_GetPlatCfgUsbNetATAEnabled(void); - \brief when USB net type config equal to ATC_ECPCFG_USBNET_VAL_AUTOADAPT_TYPE auto adapt enabled, return 1, other return 0 - \return void - */ -uint32_t BSP_GetPlatCfgUsbNetATAEnabled(void); - - -#ifdef __cplusplus -} -#endif - -#endif /* _PLAT_CONFIG_H */ diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/tp/tpComm.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/tp/tpComm.h deleted file mode 100644 index 0a0d782..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/tp/tpComm.h +++ /dev/null @@ -1,32 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2023-, Copyrigths of EigenComm Ltd. - * File name: tpComm.h - * Description: ec7xx tpComm.h - * History: Rev1.0 2023-11-13 - * - ****************************************************************************/ -#ifndef _TP_COMM_H -#define _TP_COMM_H -#ifdef __cplusplus -extern "C" { -#endif - -#include "ec7xx.h" -#include "Driver_Common.h" -#include "bsp.h" - -typedef void (*tpIsrFunc)(uint32_t); -#define I2C_IO_MODE RTE_I2C0_IO_MODE - -extern ARM_DRIVER_I2C *i2cMasterDrv; - -void tpBusInit(void); -void tpRstInit(void); -void tpIsrInit(void *cb); -uint8_t tp_i2c_read(uint8_t dev_id, uint8_t reg_addr, uint16_t len, uint8_t *data); -uint8_t tp_i2c_send(uint8_t dev_id, uint8_t reg_addr, uint16_t len, uint8_t *data); -#ifdef __cplusplus -} -#endif -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/tp/tpDev/cst816.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/tp/tpDev/cst816.h deleted file mode 100644 index 84af382..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/tp/tpDev/cst816.h +++ /dev/null @@ -1,36 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2023-, Copyrigths of EigenComm Ltd. - * File name: CST816.h - * Description: CST816 driver file - * History: Rev1.0 2023-09-18 - * - ****************************************************************************/ -#ifndef _TP_CST816_H -#define _TP_CST816_H - #ifdef __cplusplus - extern "C" { -#endif - -#include "ec7xx.h" -#include "Driver_Common.h" - - -#define CST816_ADDR 0X15 - -#define CST816_GET_GESTUREID 0x01 -#define CST816_GET_FINGERNUM 0x02 -#define CST816_GET_LOC0 0x03 -#define CST816_GET_CHIPID 0xA7 - -/******************************************************************************* - * API - ******************************************************************************/ -uint8_t tp_cst816_scan(int16_t *pos); -void tp_cst816_init(void); - - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/tp/tpDev/ft6336.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/tp/tpDev/ft6336.h deleted file mode 100644 index 62fe2f6..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/tp/tpDev/ft6336.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef _TP_FT6336_H -#define _TP_FT6336_H -#ifdef __cplusplus -extern "C" { -#endif -#include "tpComm.h" - -/******************************************************************************* - * Definitions - ******************************************************************************/ - - -//I2C读写命令 -#define FT6336_ADDR 0x38 - -/********************************FT6336 部分寄存器定义***************************/ - -#define FT6336_GET_FINGERNUM 0x02 -#define FT6336_GET_LOC0 0x03 -#define FT6336_GET_LOC1 0x09 - -/******************************************************************************* - * API - ******************************************************************************/ - - - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/tp/tpDev/gt911.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/tp/tpDev/gt911.h deleted file mode 100644 index cf78939..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/tp/tpDev/gt911.h +++ /dev/null @@ -1,53 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2020-, Copyrigths of EigenComm Ltd. - * File name: GT911.h - * Description: EC7xx touchpanel driver file - * History: Rev1.0 2023-09-18 - * - ****************************************************************************/ - -#ifndef _TP_GT911_H -#define _TP_GT911_H - -#include "ec7xx.h" -#include "Driver_Common.h" - #ifdef __cplusplus - extern "C" { -#endif - - -//I2C读写命令 -// #define GT911_ADDR 0X5D -#define GT911_ADDR 0x14 //ç”±åˆå§‹åŒ–INT输出状æ€å†³å®š -/********************************GT911部分寄存器定义***************************/ -#define GT_CTRL_REG 0X8040 //GT911控制寄存器 -#define GT_CFGS_REG 0X8047 //é…置版本 -#define GT_X_MAX_LOW 0X8048 //X轴低字节 -#define GT_X_MAX_HOW 0X8049 //X轴高字节 -#define GT_Y_MAX_LOW 0X804A //Y轴低字节 -#define GT_Y_MAX_HOW 0X804B //Y轴高字节 -#define GT_TOUCH_NUM 0X804C //输出触摸点数1--10 - - -#define GT_CHECK_REG 0X80FF //GT911校验和寄存器 -#define GT_PID_REG 0X8140 //GT911产å“ID寄存器 - -#define GT_GSTID_REG 0X814E //当剿£€æµ‹åˆ°çš„触摸情况 -#define GT_TP1_REG 0X8150 //第一个触摸点数æ®åœ°å€ -#define GT_TP2_REG 0X8158 //第二个触摸点数æ®åœ°å€ -#define GT_TP3_REG 0X8160 //第三个触摸点数æ®åœ°å€ -#define GT_TP4_REG 0X8168 //第四个触摸点数æ®åœ°å€ -#define GT_TP5_REG 0X8170 //第五个触摸点数æ®åœ°å€ - -/******************************************************************************* - * API - ******************************************************************************/ - - - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/tp/tpDrv.h b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/tp/tpDrv.h deleted file mode 100644 index 38512d6..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/inc/tp/tpDrv.h +++ /dev/null @@ -1,60 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2023-, Copyrigths of EigenComm Ltd. - * File name: tpDrv.h - * Description: ec7xx tpDrv - * History: Rev1.0 2023-09-18 - * - ****************************************************************************/ -#ifndef _TP_DRV_H -#define _TP_DRV_H -#ifdef __cplusplus -extern "C" { -#endif - -#include "tpComm.h" - -#define SUPPORT_TP_NUM (3) -#define INSTALL_TP_NUM (1) - -typedef struct -{ - uint16_t chipID; - int (*init)(void *cb); - int (*send)(void *tp); - int (*read)(void *tp); - int (*scan)(void *tp); -}tpDrvFunc_t; - -typedef struct -{ - uint16_t id; - uint32_t width; - uint32_t height; -}tpDrvPra_t; - -typedef struct -{ - char *name; ///< lcd's name used to configure its id, then use id to find its info, including driver function - uint16_t id; ///< every lcd's id should be different, no matter lcd's type is the same or not -}tpObj_t; - -typedef struct -{ - int handle; - tpObj_t *obj; - tpDrvPra_t *pra; - tpDrvFunc_t *drv; -}tpDev_t; - -int tpInit(void* tp_cb); -tpDev_t* tpOpen(char* name); -uint8_t tpScan(tpDev_t* tpDev); -void tpLoop(tpDev_t* tpDev,uint32_t timeout); -void tpData(int16_t* x,int16_t* y); -bool tpPressed(void); - -#ifdef __cplusplus -} -#endif -#endif diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/bsp.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/bsp.c deleted file mode 100644 index bc972b0..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/bsp.c +++ /dev/null @@ -1,505 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2018 Copyrigths of EigenComm Ltd. - * File name: bsp.c - * Description: - * History: - * - ****************************************************************************/ -#include -#include -#include -#include "Driver_Common.h" -#include "clock.h" -#include "bsp.h" -#include "system_ec7xx.h" -#include DEBUG_LOG_HEADER_FILE -#include "ec_string.h" -#include "mem_map.h" -#ifdef FEATURE_CCIO_ENABLE -#include "uart_device.h" -#endif -#include "dbversion.h" -#include "clock.h" -#include "hal_adcproxy.h" -#include "apmu_external.h" -#include "slpman.h" - -#define BSP_TEXT_SECTION SECTION_DEF_IMPL(.sect_bsp_text) -#define BSP_RODATA_SECTION SECTION_DEF_IMPL(.sect_bsp_rodata) -#define BSP_DATA_SECTION SECTION_DEF_IMPL(.sect_bsp_data) -#define BSP_BSS_SECTION SECTION_DEF_IMPL(.sect_bsp_bss) -#define FLASH_READ_GRANT_SIZE (16) -#define FLASH_READ_MAX_DELAY (10000)//10ms - - -extern ARM_DRIVER_USART Driver_USART0; -extern ARM_DRIVER_USART Driver_USART1; - -BSP_BSS_SECTION ARM_DRIVER_USART *UsartPrintHandle = NULL; -BSP_BSS_SECTION ARM_DRIVER_USART *UsartUnilogHandle = NULL; -BSP_BSS_SECTION ARM_DRIVER_USART *UsartAtCmdHandle = NULL; - -BSP_BSS_SECTION static uint8_t OSState = 0; // OSState = 0 os not start, OSState = 1 os started -BSP_BSS_SECTION static uint32_t gUartBaudrate[3]; // a copy for uart baud rate -extern void trimAdcSetGolbalVar(void); -#if defined CHIP_EC718 || defined CHIP_EC716 -extern void trimLdoAIOVadjSetGolbalVar(void); -#endif -#if defined CHIP_EC718 -extern void trimVadjVbatSenseSetGolbalVar(void); -#endif -extern void GPR_RmiErrCfg(bool en); -extern uint32_t GPR_RmiErrAddrGet(void); -extern uint8_t FLASH_XIPRead(uint8_t* pData, uint32_t ReadAddr, uint32_t Size); -extern uint8_t ShareInfoAPGetCPBusyFlag( void ); - - -void BSP_InitUartDriver(ARM_DRIVER_USART *drvHandler, - ARM_POWER_STATE powerMode, - uint32_t settings, - uint32_t baudRate, - ARM_USART_SignalEvent_t cb_event) -{ - if(drvHandler) - { - drvHandler->Initialize(cb_event); - drvHandler->PowerControl(powerMode); - drvHandler->Control(settings, baudRate); - } -} - -void BSP_DeinitUartDriver(ARM_DRIVER_USART *drvHandler) -{ - if(drvHandler) - { - drvHandler->PowerControl(ARM_POWER_OFF); - drvHandler->Uninitialize(); - } -} - -#if defined ( __GNUC__ ) - -/* - * retarget for _write implementation - * Parameter: ch: character will be out - */ -int io_putchar(int ch) -{ - if (UsartPrintHandle != NULL) - UsartPrintHandle->SendPolling((uint8_t*)&ch, 1); - return 0; -} - -/* - * retarget for _read implementation - * Parameter: ch: character will be read - */ -int io_getchar() -{ - uint8_t ch = 0; - if (UsartPrintHandle != NULL) - UsartPrintHandle->Receive(&ch, 1); - return (ch); -} - - -int fgetc(FILE *f) -{ - uint8_t ch = 0; - if (UsartPrintHandle != NULL) - UsartPrintHandle->Receive(&ch, 1); - return (ch); -} - -__attribute__((weak,noreturn)) -void __aeabi_assert (const char *expr, const char *file, int line) { - printf("Assert, expr:%s, file: %s, line: %d\r\n", expr, file, line); - while(1); -} - - -void __assert_func(const char *filename, int line, const char *assert_func, const char *expr) -{ - for(uint8_t i = 0; i<5; i++) - { - uniLogFlushOut(); - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, assert_func_1, P_ERROR, "Assert, expr:%s, file: %s, line: %d\r\n", expr, filename, line); - } - while(1); -} - - - -#elif defined (__CC_ARM) - -/* - * retarget for printf implementation - * Parameter: ch: character will be out - * f: not used - */ -int fputc(int ch, FILE *f) -{ - if (UsartPrintHandle != NULL) - UsartPrintHandle->SendPolling((uint8_t*)&ch,1); - return 0; -} - -/* - * retarget for scanf implementation - * Parameter: f: not used - */ -int fgetc(FILE *f) -{ - uint8_t ch = 0; - if (UsartPrintHandle != NULL) - UsartPrintHandle->Receive(&ch,1); - return (ch); -} - -__attribute__((weak,noreturn)) -void __aeabi_assert (const char *expr, const char *file, int line) { - printf("Assert, expr:%s, file: %s, line: %d\r\n", expr, file, line); - while(1); -} - -#endif - - - -uint32_t GET_PMU_RAWFLASH_OFFSET(void) -{ - return FLASH_MEM_BACKUP_ADDR; -} - - - -void setOSState(uint8_t state) -{ - OSState = state; -} - -PLAT_PA_RAMCODE uint8_t getOSState(void) //1 os started. 0 no OS or OS not started yet -{ - return OSState; -} - - -uint8_t* getBuildInfo(void) -{ - return (uint8_t *)BSP_HEADER; -} - -uint8_t* getVersionInfo(void) -{ - return (uint8_t *)VERSION_INFO; -} - -uint8_t* getATIVersionInfo(void) -{ - return (uint8_t *)ATI_VERSION_INFO; -} - -//move here since this is an common and opensource place -uint8_t* getDebugDVersion(void) -{ - return (uint8_t*)DB_VERSION_UNIQ_ID; -} - -extern void excepDump(uint32_t* start, uint32_t len); - -void cpCoreRegsDumpCheckHook(void) -{ - excepDump((uint32_t*)0x4f000000, 40); -} - -__attribute__ ((noinline)) uint32_t getUnilogUartPort(void) -{ - return UART_0_FOR_UNILOG; // Swith to UART_x_FOR_UNILOG if need to use other uart for unilog -} - -__attribute__ ((noinline)) void getUnilogRamLogBuff(uint32_t *addr, uint32_t *len) -{ -#ifdef FEATURE_EXCEPTION_FLASH_DUMP_ENABLE - ecGetUnilogDumpAddrAndLen(addr, len); -#else - *addr = 0; // suggest to be 16 bytes aligned, note this area shall not be initialized in boot phase - *len = 0; -#endif -} - -void setUartBaudRate(uint8_t idx, uint32_t baudRate) -{ - gUartBaudrate[idx] = baudRate; - - ECPLAT_PRINTF(UNILOG_PMU, setUartBaudRate_1, P_WARNING, "Set BaudRate = %d, %d, %d", gUartBaudrate[0], gUartBaudrate[1], gUartBaudrate[2]); -} - - -void FLASH_appRead(uint8_t *pData, uint32_t ReadAddr, uint32_t Size) -{ - uint32_t numOfReadTrunk = 0, i=0; - uint32_t waitLoop =0; - - numOfReadTrunk = (Size/FLASH_READ_GRANT_SIZE); - if(Size <= FLASH_READ_GRANT_SIZE) - { - FLASH_XIPRead(pData, ReadAddr, Size); - } - else - { - for(i=0; i=FLASH_READ_MAX_DELAY) - { - waitLoop = 0; - break; - } - } - FLASH_XIPRead(pData+i*FLASH_READ_GRANT_SIZE, ReadAddr+i*FLASH_READ_GRANT_SIZE, FLASH_READ_GRANT_SIZE); - - } - if((Size - i*FLASH_READ_GRANT_SIZE) != 0) - { - while(ShareInfoAPGetCPBusyFlag() == 1) - { - delay_us(1); - waitLoop ++; - if(waitLoop >=FLASH_READ_MAX_DELAY) - { - waitLoop = 0; - break; - } - } - FLASH_XIPRead(pData+i*FLASH_READ_GRANT_SIZE, ReadAddr+i*FLASH_READ_GRANT_SIZE, Size-i*FLASH_READ_GRANT_SIZE); - } - } -} - - -/** - \fn bool getCPWakeupType(void) - \brief wakeup cp in polling mode or int mode - in polling mode interrupt mask for 700us at most which may cause uart fifo overflow @ 921600. - in int mode, interrupt mask for less than 200us - \returns true: cp wakeup in int mode false: cp wakeup in polling mode -*/ -bool getCPWakeupType(void) // true: cp wakeup in int mode false: cp wakeup in polling mode -{ -#if 0 // just an example for customer to enable int mode - if((gUartBaudrate[0] == 921600) || (gUartBaudrate[1] == 921600) || (gUartBaudrate[2] == 921600)) - { - return true; - } - else - { - return false; - } -#else - return false; -#endif -} - -uint32_t getAPFlashLoadAddr(void) -{ - return AP_FLASH_LOAD_ADDR; -} - -/** - \fn void apmuNeedSlpWaitTimeInWakeupFlow(bool *bUartDelay, bool *bSlp1ExtIntDelay) - \brief give pmu module information to restart slpWaitTime in pmu flow - \param[out] bUartDelay: give a result to pmu module whether we need restart sleep wait timer when, (1)sleep failed with uart pending in all sleep mode (2)receive uart in sleep1 wakeup flow - \param[out] bSlp1ExtIntDelay: give a result to pmu module whether we need restart sleep wait timer when, (1) wakeup from sleep1 with external int pending - for sleep2/hib mode, restart slpWaitTime in BSP_CustomInit - \returns void -*/ -void apmuNeedSlpWaitTimeInWakeupFlow(bool *bUartDelay, bool *bSlp1ExtIntDelay) -{ - uint32_t xic0_latch = XIC_LatchIRQ(APXIC_0); - slpManWakeSrc_e wakeSrc = slpManGetWakeupSrc(); - - *bUartDelay = true; - *bSlp1ExtIntDelay = false; - - if((xic0_latch & (1<<(PXIC0_UART2_IRQn-32))) == 0) - { - if((xic0_latch & (1<<(PXIC0_UART1_IRQn-32))) == 0) - { - if((xic0_latch & (1<<(PXIC0_UART0_IRQn-32))) == 0) - { - *bUartDelay = false; - } - } - } - - if((WAKEUP_FROM_PAD == wakeSrc) || (WAKEUP_FROM_LPUART == wakeSrc)) - { - *bSlp1ExtIntDelay = true; - } -} - - -#ifdef UINILOG_FEATURE_ENABLE -/** - \fn void logToolCommandHandle(uint8_t *atcmd_buffer, uint32_t len) - \brief handle downlink command sent from unilog tool EPAT - if need to handle more command in future, add command-handler table - \param[in] event UART event, note used in this function - \param[in] cmd_buffer command received from UART - \param[in] len command length - \returns void -*/ -void logToolCommandHandle(uint32_t event, uint8_t *cmd_buffer, uint32_t len) -{ - (void)event; - - uint8_t * LogDbVserion=getDebugDVersion(); - - if(ec_strnstr((const char *)cmd_buffer, "^logversion", len)) - { - - ECPLAT_PRINTF(UNILOG_PLA_INTERNAL_CMD, get_log_version, P_SIG, "LOGVERSION:%s",LogDbVserion); - - } - else - { - - ECPLAT_PRINTF(UNILOG_PLA_STRING, get_log_version_1, P_ERROR, "%s", "invalid command from EPAT"); - - } - - return; - -} - - -/** - * unilog entity is removed for the reason of BSP small image. - * for more implementation details, pls refer to - * gCustSerlEntity[CUST_ENTITY_UNILOG] in ccio_provider.c - */ - -/* - * set unilog uart port - * Parameter: port: for unilog - * Parameter: baudrate: uart baudrate - */ - void SetUnilogUart(usart_port_t port, uint32_t baudrate, bool startRecv) -{ - ARM_POWER_STATE powerMode = ARM_POWER_FULL; - uint32_t ctrlSetting = ARM_USART_MODE_ASYNCHRONOUS | ARM_USART_DATA_BITS_8 | \ - ARM_USART_PARITY_NONE | ARM_USART_STOP_BITS_1 | \ - ARM_USART_FLOW_CONTROL_NONE; - - if (port == PORT_USART_0) - { -#if (RTE_UART0) - UsartUnilogHandle = &CREATE_SYMBOL(Driver_USART, 0); -#endif - } - else if (port == PORT_USART_1) - { -#if (RTE_UART1) - UsartUnilogHandle = &CREATE_SYMBOL(Driver_USART, 1); -#endif - } - - if (UsartUnilogHandle == NULL) return; - -#ifdef FEATURE_CCIO_ENABLE - UartDevConf_t uartDevConf; - UartHwConf_t *uartHwConf = &uartDevConf.hwConf; - - memset(&uartDevConf, 0, sizeof(UartDevConf_t)); - - uartHwConf->powerMode = powerMode; - uartHwConf->ctrlSetting = ctrlSetting; - uartHwConf->baudRate = baudrate; - - uartDevConf.drvHandler = UsartUnilogHandle; - uartDevConf.mainUsage = CSIO_DT_DIAG; - uartDevConf.speedType = CCIO_ST_HIGH; - uartDevConf.rbufFlags = CUST_RBUF_FOR_DIAG; - if(startRecv) - { - uartDevConf.bmCreateFlag = CCIO_TASK_FLAG_RX; - } - else - { - uartDevConf.bmCreateFlag = CCIO_TASK_FLAG_NONE; - } - - uartDevCreate(port, &uartDevConf); -#else - BSP_InitUartDriver(UsartUnilogHandle, powerMode, ctrlSetting, baudrate, NULL); -#endif -} - - -void GPR_rmiErrDetectIsr(void) -{ - volatile uint32_t rmiErrAddr; - rmiErrAddr = GPR_RmiErrAddrGet(); - - ECPLAT_PRINTF(UNILOG_PMU, GPR_rmiErrDetectIsr_1, P_WARNING, "Rmi Err Detect Address=0x%x", rmiErrAddr); -} - - -void GPR_rmiErrDetectInit(void) -{ - XIC_SetVector(PXIC0_RMIIF_TOERR_IRQn, &GPR_rmiErrDetectIsr); - XIC_EnableIRQ(PXIC0_RMIIF_TOERR_IRQn); - GPR_RmiErrCfg(true); -} - - -void FlushUnilogOutput(void) -{ - uniLogFlushOut(); - - if(UsartUnilogHandle == NULL) - return; - UsartUnilogHandle->Control(ARM_USART_CONTROL_FLUSH_TX, 0); -} -#endif - -void BSP_CommonInit(void) -{ - SystemCoreClockUpdate(); - - PAD_driverInit(); - - GPR_initialize(); - - trimAdcSetGolbalVar(); - - #if defined CHIP_EC718 || defined CHIP_EC716 - trimLdoAIOVadjSetGolbalVar(); - #endif - - #if defined CHIP_EC718 - trimVadjVbatSenseSetGolbalVar(); - #endif - - apmuInit(); - - //interrupt config - IC_PowupInit(); - - if(apmuGetAPBootFlag() == 0) // power on - { - apmuSetCPFastBoot(false); // set cp fast boot in case of cp dap wakeup - } - - cpADCInit(); // enable adc ref output, need stable time - - GPR_rmiErrDetectInit(); - - BOOT_TIMESTAMP_SET(1, 3); - -} - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/camera/cameraDev/gc032A.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/camera/cameraDev/gc032A.c deleted file mode 100644 index 06776b9..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/camera/cameraDev/gc032A.c +++ /dev/null @@ -1,1026 +0,0 @@ -#include "cameraDrv.h" -#include "sctdef.h" - -AP_PLAT_COMMON_DATA camI2cCfg_t gc032A_2ddrRegInfo[] = -{ - /*System*/ - {0xf3, 0x83}, //ff//1f//01 data output - {0xf5, 0x08}, - {0xf7, 0x01}, - {0xf8, 0x01}, ////hai: from 0x4->0x1 pll-div----frank - {0xf9, 0x4e}, - {0xfa, 0x00}, - {0xfc, 0x02}, - {0xfe, 0x02}, - {0x81, 0x03}, - - {0xfe, 0x00}, - {0x77, 0x64}, - {0x78, 0x40}, - {0x79, 0x60}, - /*Analog&Cisctl*/ - {0xfe, 0x00}, - {0x03, 0x01}, - {0x04, 0xcb}, - {0x05, 0x01}, - {0x06, 0xb2}, - {0x07, 0x00}, - {0x08, 0x10}, - - {0x0a, 0x00}, - {0x0c, 0x00}, - {0x0d, 0x01}, - {0x0e, 0xe8}, - {0x0f, 0x02}, - {0x10, 0x88}, - - {0x17, 0x54}, - {0x19, 0x08}, - {0x1a, 0x0a}, - {0x1f, 0x40}, - {0x20, 0x30}, - {0x2e, 0x80}, - {0x2f, 0x2b}, - {0x30, 0x1a}, - {0xfe, 0x02}, - {0x03, 0x02}, - {0x05, 0xd7}, - {0x06, 0x60}, - {0x08, 0x80}, - {0x12, 0x89}, - - /*SPI*/ - {0xfe, 0x03}, - {0x52, 0xba}, // hai: from 0xba -> 0x3A - {0x53, 0x24}, - {0x54, 0x20}, - {0x55, 0x00}, - {0x59, 0x1f}, // {0x59,0x10}, 20190627 scaler output error - {0x5a, 0x00}, //00 //yuv hai: from 0x40 to 0x00 - {0x5b, 0x80}, - {0x5c, 0x02}, - {0x5d, 0xe0}, - {0x5e, 0x01}, - {0x51, 0x03}, - {0x64, 0x04}, - {0xfe, 0x00}, - - /*blk*/ - {0xfe, 0x00}, - {0x18, 0x02}, - {0xfe, 0x02}, - {0x40, 0x22}, - {0x45, 0x00}, - {0x46, 0x00}, - {0x49, 0x20}, - {0x4b, 0x3c}, - {0x50, 0x20}, - {0x42, 0x10}, - - /*isp*/ - {0xfe, 0x01}, - {0x0a, 0xc5}, - {0x45, 0x00}, - {0xfe, 0x00}, - {0x40, 0xff}, - {0x41, 0x25}, - {0x42, 0xef}, - {0x43, 0x10}, - {0x44, 0x83}, // hai from 0x82 to 0x83 - {0x46, 0x22}, - {0x49, 0x03}, - {0x52, 0x02}, - {0x54, 0x00}, - {0xfe, 0x02}, - {0x22, 0xf6}, - - /*Shading*/ - {0xfe, 0x01}, - {0xc1, 0x38}, - {0xc2, 0x4c}, - {0xc3, 0x00}, - {0xc4, 0x2c}, - {0xc5, 0x24}, - {0xc6, 0x18}, - {0xc7, 0x28}, - {0xc8, 0x11}, - {0xc9, 0x15}, - {0xca, 0x20}, - {0xdc, 0x7a}, - {0xdd, 0xa0}, - {0xde, 0x80}, - {0xdf, 0x88}, - - /*AWB*/ /*20170110*/ - {0xfe, 0x01}, - {0x50, 0xc1}, - {0x56, 0x34}, - {0x58, 0x04}, - {0x65, 0x06}, - {0x66, 0x0f}, - {0x67, 0x04}, - {0x69, 0x20}, - {0x6a, 0x40}, - {0x6b, 0x81}, - {0x6d, 0x12}, - {0x6e, 0xc0}, - {0x7b, 0x2a}, - {0x7c, 0x0c}, - {0xfe, 0x01}, - {0x90, 0xe3}, - {0x91, 0xc2}, - {0x92, 0xff}, - {0x93, 0xe3}, - {0x95, 0x1c}, - {0x96, 0xff}, - {0x97, 0x44}, - {0x98, 0x1c}, - {0x9a, 0x44}, - {0x9b, 0x1c}, - {0x9c, 0x64}, - {0x9d, 0x44}, - {0x9f, 0x71}, - {0xa0, 0x64}, - {0xa1, 0x00}, - {0xa2, 0x00}, - {0x86, 0x00}, - {0x87, 0x00}, - {0x88, 0x00}, - {0x89, 0x00}, - {0xa4, 0xc2}, - {0xa5, 0x9b}, - {0xa6, 0xc8}, - {0xa7, 0x92}, - {0xa9, 0xc9}, - {0xaa, 0x96}, - {0xab, 0xa9}, - {0xac, 0x99}, - {0xae, 0xce}, - {0xaf, 0xa9}, - {0xb0, 0xcf}, - {0xb1, 0x9d}, - {0xb3, 0xcf}, - {0xb4, 0xac}, - {0xb5, 0x00}, - {0xb6, 0x00}, - {0x8b, 0x00}, - {0x8c, 0x00}, - {0x8d, 0x00}, - {0x8e, 0x00}, - {0x94, 0x55}, - {0x99, 0xa6}, - {0x9e, 0xaa}, - {0xa3, 0x0a}, - {0x8a, 0x00}, - {0xa8, 0x55}, - {0xad, 0x55}, - {0xb2, 0x55}, - {0xb7, 0x05}, - {0x8f, 0x00}, - {0xb8, 0xc7}, - {0xb9, 0xa0}, - - {0xfe, 0x01}, - {0xd0, 0x40}, - {0xd1, 0x00}, - {0xd2, 0x00}, - {0xd3, 0xfa}, - {0xd4, 0x4a}, - {0xd5, 0x02}, - - {0xd6, 0x44}, - {0xd7, 0xfa}, - {0xd8, 0x04}, - {0xd9, 0x08}, - {0xda, 0x5c}, - {0xdb, 0x02}, - {0xfe, 0x00}, - - /*Gamma*/ - {0xfe, 0x00}, - {0xba, 0x00}, - {0xbb, 0x04}, - {0xbc, 0x0a}, - {0xbd, 0x0e}, - {0xbe, 0x22}, - {0xbf, 0x30}, - {0xc0, 0x3d}, - {0xc1, 0x4a}, - {0xc2, 0x5d}, - {0xc3, 0x6b}, - {0xc4, 0x7a}, - {0xc5, 0x85}, - {0xc6, 0x90}, - {0xc7, 0xa5}, - {0xc8, 0xb5}, - {0xc9, 0xc2}, - {0xca, 0xcc}, - {0xcb, 0xd5}, - {0xcc, 0xde}, - {0xcd, 0xea}, - {0xce, 0xf5}, - {0xcf, 0xff}, - - /*Auto Gamma*/ - {0xfe, 0x00}, - {0x5a, 0x08}, - {0x5b, 0x0f}, - {0x5c, 0x15}, - {0x5d, 0x1c}, - {0x5e, 0x28}, - {0x5f, 0x36}, - {0x60, 0x45}, - {0x61, 0x51}, - {0x62, 0x6a}, - {0x63, 0x7d}, - {0x64, 0x8d}, - {0x65, 0x98}, - {0x66, 0xa2}, - {0x67, 0xb5}, - {0x68, 0xc3}, - {0x69, 0xcd}, - {0x6a, 0xd4}, - {0x6b, 0xdc}, - {0x6c, 0xe3}, - {0x6d, 0xf0}, - {0x6e, 0xf9}, - {0x6f, 0xff}, - - /*Gain*/ - {0xfe, 0x00}, - {0x70, 0x50}, - - /*AEC*/ - {0xfe, 0x00}, - {0x4f, 0x01}, - {0xfe, 0x01}, - {0x0c, 0x01}, - {0x0d, 0x00}, //08 add 20170110 - {0x12, 0xa0}, - {0x13, 0x38},//4a 3a hai: from 0x28 to 0x38 - {0x44, 0x04}, - {0x1f, 0x40}, - {0x20, 0x40}, - {0x23, 0x0a}, - {0x26, 0x9a}, - {0x3e, 0x20}, - {0x3f, 0x2d}, - {0x40, 0x40}, - {0x41, 0x5b}, - {0x42, 0x82}, - {0x43, 0xb7}, - {0x04, 0x0a}, - {0x02, 0x79}, - {0x03, 0xc0}, - - /*measure window*/ - {0xfe, 0x01}, - {0xcc, 0x08}, - {0xcd, 0x08}, - {0xce, 0xa4}, - {0xcf, 0xec}, - - /*DNDD*/ - {0xfe, 0x00}, - {0x81, 0xb8}, - {0x82, 0x04}, - {0x83, 0x10}, - {0x84, 0x01}, - {0x86, 0x50}, - {0x87, 0x18}, - {0x88, 0x10}, - {0x89, 0x70}, - {0x8a, 0x20}, - {0x8b, 0x10}, - {0x8c, 0x08}, - {0x8d, 0x0a}, - - /*Intpee*/ - {0xfe, 0x00}, - {0x8f, 0xaa}, - {0x90, 0x1c}, - {0x91, 0x52}, - {0x92, 0x03}, - {0x93, 0x03}, - {0x94, 0x08}, - {0x95, 0x6a}, - {0x97, 0x00}, - {0x98, 0x00}, - - /*ASDE*/ - {0xfe, 0x00}, - {0x9a, 0x30}, - {0x9b, 0x50}, - {0xa1, 0x30}, - {0xa2, 0x66}, - {0xa4, 0x28}, - {0xa5, 0x30}, - {0xaa, 0x28}, - {0xac, 0x32}, - - /*YCP*/ - {0xfe, 0x00}, - {0xd1, 0x3f}, - {0xd2, 0x3f}, - {0xd3, 0x38}, - {0xd6, 0xf4}, - {0xd7, 0x1d}, - {0xdd, 0x72}, - {0xde, 0x84}, - - {0xfe, 0x00}, - {0x05, 0x01}, - {0x06, 0xad}, - {0x07, 0x00}, - {0x08, 0x10}, - - {0xfe, 0x01}, - {0x25, 0x00}, - {0x26, 0x4d}, - - {0x27, 0x01}, - {0x28, 0xce}, //16.6fps - {0x29, 0x01}, - {0x2a, 0xce}, //12.5fps - {0x2b, 0x01}, - {0x2c, 0xce}, //10fps - {0x2d, 0x01}, - {0x2e, 0xce}, //8.33fps - {0x2f, 0x01}, - {0x30, 0xce}, //5.88fps - {0x31, 0x01}, - {0x32, 0xce}, //4.34fps - {0x33, 0x01}, - {0x34, 0xce}, //3.99fps - {0x3c, 0x10}, //{0x3c,0x00} - {0xfe, 0x00}, -}; - -AP_PLAT_COMMON_DATA camI2cCfg_t gc032A_2sdrRegInfo[] = -{ - {0xf3,0x83}, - {0xf5,0x0c}, - {0xf7,0x01},// gavin 20160820 - {0xf8,0x01}, - {0xf9,0x4e}, - {0xfa,0x10}, // gavin 20160820 - {0xfc,0x02}, - {0xfe,0x02}, - {0x81,0x03}, - {0xfe,0x00}, - {0x77,0x64}, - {0x78,0x40}, - {0x79,0x60}, - /*Analog&Cisctl*/ - {0xfe,0x00}, - {0x03,0x01}, - {0x04,0xc2}, - {0x05,0x01}, - {0x06,0xb8}, - {0x07,0x00}, - {0x08,0x08}, - {0x0a,0x00}, - {0x0c,0x00}, - {0x0d,0x01}, - {0x0e,0xe8}, - {0x0f,0x02}, - {0x10,0x88}, - {0x17,0x54}, - {0x19,0x08}, - {0x1a,0x0a}, - {0x1f,0x40}, - {0x20,0x30}, - {0x2e,0x80}, - {0x2f,0x2b}, - {0x30,0x1a}, - {0xfe,0x02}, - {0x03,0x02}, - {0x05,0xd7}, - {0x06,0x60}, - {0x08,0x80}, - {0x12,0x89}, - - /*SPI*/ - {0xfe,0x03}, - {0x51,0x01}, - {0x52,0x58}, // 0x58: ddr disable, LSB; 0xd8: ddr disable, MSB - {0x53,0x24}, // Disable CRC - {0x54,0x20}, - {0x55,0x00}, - {0x59,0x10}, - {0x5a,0x00}, - {0x5b,0x80}, - {0x5c,0x02}, - {0x5d,0xe0}, - {0x5e,0x01}, - {0x64,0x04}, //SCK Always OFF , gavin 20160820 - - /*blk*/ - {0xfe,0x00}, - {0x18,0x02}, - {0xfe,0x02}, - {0x40,0x22}, - {0x45,0x00}, - {0x46,0x00}, - {0x49,0x20}, - {0x4b,0x3c}, - {0x50,0x20}, - {0x42,0x10}, - - /*isp*/ - {0xfe,0x01}, - {0x0a,0xc5}, - {0x45,0x00}, - {0xfe,0x00}, - {0x40,0xff}, - {0x41,0x25}, - {0x42,0xcf}, - {0x43,0x10}, - {0x44,0x83}, - {0x46,0x22}, - {0x49,0x03}, - {0x52,0x02}, - {0x54,0x00}, - {0xfe,0x02}, - {0x22,0xf6}, - - /*Shading*/ - {0xfe,0x01}, - {0xc1,0x38}, - {0xc2,0x4c}, - {0xc3,0x00}, - {0xc4,0x32}, - {0xc5,0x24}, - {0xc6,0x16}, - {0xc7,0x08}, - {0xc8,0x08}, - {0xc9,0x00}, - {0xca,0x20}, - {0xdc,0x8a}, - {0xdd,0xa0}, - {0xde,0xa6}, - {0xdf,0x75}, - - /*AWB*//*20170110*/ - {0xfe, 0x01}, - {0x7c, 0x09}, - {0x65, 0x06}, - {0x7c, 0x08}, - {0x56, 0xf4}, - {0x66, 0x0f}, - {0x67, 0x84}, - {0x6b, 0x80}, - {0x6d, 0x12}, - {0x6e, 0xb0}, - {0xfe, 0x01}, - {0x90, 0x00}, - {0x91, 0x00}, - {0x92, 0xf4}, - {0x93, 0xd5}, - {0x95, 0x0f}, - {0x96, 0xf4}, - {0x97, 0x2d}, - {0x98, 0x0f}, - {0x9a, 0x2d}, - {0x9b, 0x0f}, - {0x9c, 0x59}, - {0x9d, 0x2d}, - {0x9f, 0x67}, - {0xa0, 0x59}, - {0xa1, 0x00}, - {0xa2, 0x00}, - {0x86, 0x00}, - {0x87, 0x00}, - {0x88, 0x00}, - {0x89, 0x00}, - {0xa4, 0x00}, - {0xa5, 0x00}, - {0xa6, 0xd4}, - {0xa7, 0x9f}, - {0xa9, 0xd4}, - {0xaa, 0x9f}, - {0xab, 0xac}, - {0xac, 0x9f}, - {0xae, 0xd4}, - {0xaf, 0xac}, - {0xb0, 0xd4}, - {0xb1, 0xa3}, - {0xb3, 0xd4}, - {0xb4, 0xac}, - {0xb5, 0x00}, - {0xb6, 0x00}, - {0x8b, 0x00}, - {0x8c, 0x00}, - {0x8d, 0x00}, - {0x8e, 0x00}, - {0x94, 0x50}, - {0x99, 0xa6}, - {0x9e, 0xaa}, - {0xa3, 0x0a}, - {0x8a, 0x00}, - {0xa8, 0x50}, - {0xad, 0x55}, - {0xb2, 0x55}, - {0xb7, 0x05}, - {0x8f, 0x00}, - {0xb8, 0xb3}, - {0xb9, 0xb6}, - - /*CC*/ - {0xfe,0x01}, - {0xd0,0x40}, - {0xd1,0xf8}, - {0xd2,0x00}, - {0xd3,0xfa}, - {0xd4,0x45}, - {0xd5,0x02}, - {0xd6,0x30}, - {0xd7,0xfa}, - {0xd8,0x08}, - {0xd9,0x08}, - {0xda,0x58}, - {0xdb,0x02}, - {0xfe,0x00}, - - /*Gamma*/ - {0xfe,0x00}, - {0xba,0x00}, - {0xbb,0x04}, - {0xbc,0x0a}, - {0xbd,0x0e}, - {0xbe,0x22}, - {0xbf,0x30}, - {0xc0,0x3d}, - {0xc1,0x4a}, - {0xc2,0x5d}, - {0xc3,0x6b}, - {0xc4,0x7a}, - {0xc5,0x85}, - {0xc6,0x90}, - {0xc7,0xa5}, - {0xc8,0xb5}, - {0xc9,0xc2}, - {0xca,0xcc}, - {0xcb,0xd5}, - {0xcc,0xde}, - {0xcd,0xea}, - {0xce,0xf5}, - {0xcf,0xff}, - - /*Auto Gamma*/ - {0xfe,0x00}, - {0x5a,0x08}, - {0x5b,0x0f}, - {0x5c,0x15}, - {0x5d,0x1c}, - {0x5e,0x28}, - {0x5f,0x36}, - {0x60,0x45}, - {0x61,0x51}, - {0x62,0x6a}, - {0x63,0x7d}, - {0x64,0x8d}, - {0x65,0x98}, - {0x66,0xa2}, - {0x67,0xb5}, - {0x68,0xc3}, - {0x69,0xcd}, - {0x6a,0xd4}, - {0x6b,0xdc}, - {0x6c,0xe3}, - {0x6d,0xf0}, - {0x6e,0xf9}, - {0x6f,0xff}, - - /*Gain*/ - {0xfe,0x00}, - {0x70,0x50}, - - /*AEC*/ - {0xfe,0x00}, - {0x4f,0x01}, - {0xfe,0x01}, - {0x0d,0x00},//08 add 20170110 - {0x12,0xa0}, - {0x13,0x3a}, - {0x44,0x04}, - {0x1f,0x30}, - {0x20,0x40}, - {0x26,0x9a}, - {0x3e,0x20}, - {0x3f,0x2d}, - {0x40,0x40}, - {0x41,0x5b}, - {0x42,0x82}, - {0x43,0xb7}, - {0x04,0x0a}, - {0x02,0x79}, - {0x03,0xc0}, - - /*measure window*/ - {0xfe,0x01}, - {0xcc,0x08}, - {0xcd,0x08}, - {0xce,0xa4}, - {0xcf,0xec}, - - /*DNDD*/ - {0xfe,0x00}, - {0x81,0xb8}, - {0x82,0x12}, - {0x83,0x0a}, - {0x84,0x01}, - {0x86,0x50}, - {0x87,0x18}, - {0x88,0x10}, - {0x89,0x70}, - {0x8a,0x20}, - {0x8b,0x10}, - {0x8c,0x08}, - {0x8d,0x0a}, - - /*Intpee*/ - {0xfe,0x00}, - {0x8f,0xaa}, - {0x90,0x9c}, - {0x91,0x52}, - {0x92,0x03}, - {0x93,0x03}, - {0x94,0x08}, - {0x95,0x44}, - {0x97,0x00}, - {0x98,0x00}, - - /*ASDE*/ - {0xfe,0x00}, - {0xa1,0x30}, - {0xa2,0x41}, - {0xa4,0x30}, - {0xa5,0x20}, - {0xaa,0x30}, - {0xac,0x32}, - - /*YCP*/ - {0xfe,0x00}, - {0xd1,0x3c}, - {0xd2,0x3c}, - {0xd3,0x38}, - {0xd6,0xf4}, - {0xd7,0x1d}, - {0xdd,0x73}, - {0xde,0x84}, - {0xfe,0x00}, - {0x05,0x01}, - {0x06,0xad}, - {0x07,0x00}, - {0x08,0x10}, - {0xfe,0x01}, - {0x25,0x00}, - {0x26,0x4d}, - {0x27,0x01}, - {0x28,0xce}, - {0x29,0x03}, - {0x2a,0x02}, - {0x2b,0x03}, - {0x2c,0x9c}, - {0x2d,0x04}, - {0x2e,0x36}, - {0x2f,0x04}, - {0x30,0xd0}, - {0x31,0x05}, - {0x32,0x6a}, - {0x33,0x06}, - {0x34,0x04}, - {0xfe,0x00}, -}; - -AP_PLAT_COMMON_DATA camI2cCfg_t gc032A_1sdrRegInfo[] = -{ - {0xf3,0x83}, //sync_output_en data_output_en - {0xf5,0x0c}, - {0xf7,0x01}, - {0xf8,0x01}, - {0xf9,0x4e}, - {0xfa,0x30}, - {0xfc,0x02}, - {0xfe,0x02}, - {0x81,0x03}, // doesn't show 0x81 addr - /*Analog*/ - {0xfe,0x00}, - {0x03,0x01}, // exposure high - {0x04,0xc2}, // exposure low - {0x05,0x01}, - {0x06,0x91}, - {0x07,0x00}, - {0x08,0x10}, - {0x0a,0x04}, - {0x0c,0x04}, - {0x0d,0x01}, - {0x0e,0xe8}, // height: 488 - {0x0f,0x02}, - {0x10,0x88}, // width: 652 VGA: 640*480 - {0x17,0x54}, - {0x19,0x04}, - {0x1a,0x0a}, - {0x1f,0x40}, - {0x20,0x30}, - {0x2e,0x80}, - {0x2f,0x2b}, - {0x30,0x1a}, - {0xfe,0x02}, - {0x03,0x02}, - {0x05,0xd7}, - {0x06,0x60}, - {0x08,0x80}, - {0x12,0x89}, - /*blk*/ - {0xfe,0x00}, - {0x18,0x02}, - {0xfe,0x02}, - {0x40,0x22}, - {0x45,0x00}, - {0x46,0x00}, - {0x49,0x20}, - {0x4b,0x3c}, - {0x50,0x20}, - {0x42,0x10}, - /*isp*/ - {0xfe,0x01}, - {0x0a,0xc5}, - {0x45,0x00}, - {0xfe,0x00}, - {0x40,0xff}, - {0x41,0x25}, - {0x42,0x83}, - {0x43,0x10}, - {0x44,0x83}, - {0x46,0x26}, - {0x49,0x03}, - {0x4f,0x01}, - {0xde,0x84}, - {0xfe,0x02}, - {0x22,0xf6}, - /*Shading*/ - {0xfe,0x00}, - {0x77,0x65}, - {0x78,0x40}, - {0x79,0x52}, - {0xfe,0x01}, - {0xc1,0x3c}, - {0xc2,0x50}, - {0xc3,0x00}, - {0xc4,0x32}, - {0xc5,0x24}, - {0xc6,0x16}, - {0xc7,0x08}, - {0xc8,0x08}, - {0xc9,0x00}, - {0xca,0x20}, - {0xdc,0x7a}, - {0xdd,0x7a}, - {0xde,0xa6}, - {0xdf,0x60}, - /*AWB*/ - {0xfe,0x01}, - {0x7c,0x09}, - {0x65,0x06}, - {0x7c,0x08}, - {0x56,0xf4}, - {0x66,0x0f}, - {0x67,0x84}, - {0x6b,0x80}, - {0x6d,0x12}, - {0x6e,0xb0}, - {0x86,0x00}, - {0x87,0x00}, - {0x88,0x00}, - {0x89,0x00}, - {0x8a,0x00}, - {0x8b,0x00}, - {0x8c,0x00}, - {0x8d,0x00}, - {0x8e,0x00}, - {0x8f,0x00}, - {0x90,0xef}, - {0x91,0xe1}, - {0x92,0x0c}, - {0x93,0xef}, - {0x94,0x65}, - {0x95,0x1f}, - {0x96,0x0c}, - {0x97,0x2d}, - {0x98,0x20}, - {0x99,0xaa}, - {0x9a,0x3f}, - {0x9b,0x2c}, - {0x9c,0x5f}, - {0x9d,0x3e}, - {0x9e,0xaa}, - {0x9f,0x67}, - {0xa0,0x60}, - {0xa1,0x00}, - {0xa2,0x00}, - {0xa3,0x0a}, - {0xa4,0xb6}, - {0xa5,0xac}, - {0xa6,0xc1}, - {0xa7,0xac}, - {0xa8,0x55}, - {0xa9,0xc3}, - {0xaa,0xa4}, - {0xab,0xba}, - {0xac,0xa8}, - {0xad,0x55}, - {0xae,0xc8}, - {0xaf,0xb9}, - {0xb0,0xd4}, - {0xb1,0xc3}, - {0xb2,0x55}, - {0xb3,0xd8}, - {0xb4,0xce}, - {0xb5,0x00}, - {0xb6,0x00}, - {0xb7,0x05}, - {0xb8,0xd6}, - {0xb9,0x8c}, - /*CC*/ - {0xfe,0x01}, - {0xd0,0x40}, - {0xd1,0xf8}, - {0xd2,0x00}, - {0xd3,0xfa}, - {0xd4,0x45}, - {0xd5,0x02}, - {0xd6,0x30}, - {0xd7,0xfa}, - {0xd8,0x08}, - {0xd9,0x08}, - {0xda,0x58}, - {0xdb,0x02}, - {0xfe,0x00}, - /*Gamma*/ - {0xfe,0x00}, - {0xba,0x00}, - {0xbb,0x04}, - {0xbc,0x0a}, - {0xbd,0x0e}, - {0xbe,0x22}, - {0xbf,0x30}, - {0xc0,0x3d}, - {0xc1,0x4a}, - {0xc2,0x5d}, - {0xc3,0x6b}, - {0xc4,0x7a}, - {0xc5,0x85}, - {0xc6,0x90}, - {0xc7,0xa5}, - {0xc8,0xb5}, - {0xc9,0xc2}, - {0xca,0xcc}, - {0xcb,0xd5}, - {0xcc,0xde}, - {0xcd,0xea}, - {0xce,0xf5}, - {0xcf,0xff}, - /*Auto Ga*/ - {0xfe,0x00}, - {0x5a,0x08}, - {0x5b,0x0f}, - {0x5c,0x15}, - {0x5d,0x1c}, - {0x5e,0x28}, - {0x5f,0x36}, - {0x60,0x45}, - {0x61,0x51}, - {0x62,0x6a}, - {0x63,0x7d}, - {0x64,0x8d}, - {0x65,0x98}, - {0x66,0xa2}, - {0x67,0xb5}, - {0x68,0xc3}, - {0x69,0xcd}, - {0x6a,0xd4}, - {0x6b,0xdc}, - {0x6c,0xe3}, - {0x6d,0xf0}, - {0x6e,0xf9}, - {0x6f,0xff}, - /*Gain*/ - {0xfe,0x00}, - {0x70,0x50}, - /*AEC*/ - {0xfe,0x00}, - {0x4f,0x01}, - {0xfe,0x01}, - {0x12,0xa0}, - {0x13,0x3a}, - {0x44,0x04}, - {0x1f,0x30}, - {0x20,0x40}, - {0x26,0x14}, - {0x27,0x01}, - {0x28,0xf4}, - {0x29,0x02}, - {0x2a,0x3a}, - {0x2b,0x02}, - {0x2c,0xac}, - {0x2d,0x02}, - {0x2e,0xf8}, - {0x2f,0x0b}, - {0x30,0x6e}, - {0x31,0x0e}, - {0x32,0x70}, - {0x33,0x12}, - {0x34,0x0c}, - {0x3c,0x00}, - {0x3e,0x20}, - {0x3f,0x2d}, - {0x40,0x40}, - {0x41,0x5b}, - {0x42,0x82}, - {0x43,0xb7}, - {0x04,0x0a}, - {0x02,0x79}, - {0x03,0xc0}, - /*measure*/ - {0xcc,0x08}, - {0xcd,0x08}, - {0xce,0xa4}, - {0xcf,0xec}, - /*DNDD*/ - {0xfe,0x00}, - {0x81,0xb8}, - {0x82,0x12}, - {0x83,0x0a}, - {0x84,0x01}, - {0x86,0x50}, - {0x87,0x18}, - {0x88,0x10}, - {0x89,0x70}, - {0x8a,0x20}, - {0x8b,0x10}, - {0x8c,0x08}, - {0x8d,0x0a}, - /*Intpee*/ - {0xfe,0x00}, - {0x8f,0xaa}, - {0x90,0x9c}, - {0x91,0x52}, - {0x92,0x03}, - {0x93,0x03}, - {0x94,0x08}, - {0x95,0x44}, - {0x97,0x00}, - {0x98,0x00}, - /*ASDE*/ - {0xfe,0x00}, - {0xa1,0x30}, - {0xa2,0x41}, - {0xa4,0x30}, - {0xa5,0x20}, - {0xaa,0x30}, - {0xac,0x32}, - /*YCP*/ - {0xfe,0x00}, - {0xd1,0x3c}, - {0xd2,0x3c}, - {0xd3,0x38}, - {0xd6,0xf4}, - {0xd7,0x1d}, - {0xdd,0x73}, - {0xde,0x84}, - /*SPI*/ - {0xfe,0x03}, // registers in REGF3 - {0x51,0x01}, - {0x52,0x0a}, // Y: 266 - {0x53,0x20}, // Ö»ÓÐ2bit£¬ÄÜÉè0x20? - {0x54,0x20}, // X: 0x220 = 544 - {0x55,0x00}, - {0x59,0x10}, - {0x5a,0x00}, // sync format£º - {0x5b,0x80}, - {0x5c,0x02}, // image width£º640 - {0x5d,0xe0}, - {0x5e,0x01}, // image height£º480 -}; - -uint16_t gc032aGetRegCnt(char* regName) -{ - if (strcmp(regName, "gc032a_2sdr") == 0) - { - return (sizeof(gc032A_2sdrRegInfo) / sizeof(gc032A_2sdrRegInfo[0])); - } - else if (strcmp(regName, "gc032a_1sdr") == 0) - { - return (sizeof(gc032A_1sdrRegInfo) / sizeof(gc032A_1sdrRegInfo[0])); - } - else if (strcmp(regName, "gc032a_2ddr") == 0) - { - return (sizeof(gc032A_2ddrRegInfo) / sizeof(gc032A_2ddrRegInfo[0])); - } - - return 0; -} - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/camera/cameraDev/gc6153.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/camera/cameraDev/gc6153.c deleted file mode 100644 index 389d6aa..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/camera/cameraDev/gc6153.c +++ /dev/null @@ -1,172 +0,0 @@ -#include "cameraDrv.h" -#include "sctdef.h" - -AP_PLAT_COMMON_DATA camI2cCfg_t gc6153_1sdrRegInfo[] = -{ - // SYS - {0xfe, 0xa0}, - {0xfe, 0xa0}, - {0xfe, 0xa0}, - {0xfa, 0x11}, - {0xfc, 0x00}, - {0xf6, 0x00}, - {0xfc, 0x12}, - - // ANALOG & CISCTL - {0xfe, 0x00}, - {0x01, 0x40}, - {0x02, 0x12}, - {0x0d, 0x40}, - {0x14, 0x7c}, // 0x7e - {0x16, 0x05}, // 0x05 - {0x17, 0x18}, // 0x18 - {0x1c, 0x31}, - {0x1d, 0xbb}, - {0x1f, 0x3f}, - {0x73, 0x20}, - {0x74, 0x71}, - {0x77, 0x22}, - {0x7a, 0x08}, - {0x11, 0x18}, - {0x13, 0x48}, - {0x12, 0xc8}, - {0x70, 0xc8}, - {0x7b, 0x18}, - {0x7d, 0x30}, - {0x7e, 0x02}, - - {0xfe, 0x10}, - {0xfe, 0x00}, - {0xfe, 0x00}, - {0xfe, 0x00}, - {0xfe, 0x00}, - {0xfe, 0x00}, - {0xfe, 0x10}, - {0xfe, 0x00}, - - {0x49, 0x61}, - {0x4a, 0x40}, - {0x4b, 0x58}, - - /*ISP*/ - {0xfe, 0x00}, - {0x39, 0x02}, - {0x3a, 0x80}, - {0x20, 0x7e}, - {0x26, 0xa7}, - - /*BLK*/ - {0x33, 0x10}, - {0x37, 0x06}, - {0x2a, 0x21}, - - /*GAIN*/ - {0x3f, 0x16}, - - /*DNDD*/ - {0x52, 0xa6}, - {0x53, 0x81}, - {0x54, 0x43}, - {0x56, 0x78}, - {0x57, 0xaa}, - {0x58, 0xff}, - - /*ASDE*/ - {0x5b, 0x60}, - {0x5c, 0x50}, - {0xab, 0x2a}, - {0xac, 0xb5}, - - /*INTPEE*/ - {0x5e, 0x06}, - {0x5f, 0x06}, - {0x60, 0x44}, - {0x61, 0xff}, - {0x62, 0x69}, - {0x63, 0x13}, - - /*CC*/ - {0x65, 0x13}, - {0x66, 0x26}, - {0x67, 0x07}, - {0x68, 0xf5}, - {0x69, 0xea}, - {0x6a, 0x21}, - {0x6b, 0x21}, - {0x6c, 0xe4}, - {0x6d, 0xfb}, - - /*YCP*/ - {0x81, 0x3b}, // 0 - {0x82, 0x3b}, // 0 : uyvy ºÚ°× - {0x83, 0x4b}, - {0x84, 0x90}, - {0x86, 0xf0}, - {0x87, 0x1d}, - {0x88, 0x16}, - {0x8d, 0x74}, - {0x8e, 0x25}, - - /*AEC*/ - {0x90, 0x36}, - {0x92, 0x43}, - {0x9d, 0x32}, - {0x9e, 0x81}, - {0x9f, 0xf4}, - {0xa0, 0xa0}, - {0xa1, 0x04}, - {0xa3, 0x2d}, - {0xa4, 0x01}, - - /*AWB*/ - {0xb0, 0xc2}, - {0xb1, 0x1e}, - {0xb2, 0x10}, - {0xb3, 0x20}, - {0xb4, 0x2d}, - {0xb5, 0x1b}, - {0xb6, 0x2e}, - {0xb8, 0x13}, - {0xba, 0x60}, - {0xbb, 0x62}, - {0xbd, 0x78}, - {0xbe, 0x55}, - {0xbf, 0xa0}, - {0xc4, 0xe7}, - {0xc5, 0x15}, - {0xc6, 0x16}, - {0xc7, 0xeb}, - {0xc8, 0xe4}, - {0xc9, 0x16}, - {0xca, 0x16}, - {0xcb, 0xe9}, - {0x22, 0xf8}, - - /*SPI*/ - {0xfe, 0x02}, - {0x01, 0x01}, - {0x02, 0x02}, - {0x03, 0x20}, - {0x04, 0x20}, - {0x0a, 0x00}, - {0x13, 0x10}, - {0x24, 0x00}, - {0x28, 0x03}, - {0xfe, 0x00}, - - /*OUTPUT*/ - {0xf2, 0x03}, - {0xfe, 0x00}, -}; - -uint16_t gc6153GetRegCnt(char* regName) -{ - if (strcmp(regName, "gc6153_1sdr") == 0) - { - return (sizeof(gc6153_1sdrRegInfo) / sizeof(gc6153_1sdrRegInfo[0])); - } - - return 0; -} - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/camera/cameraDrv.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/camera/cameraDrv.c deleted file mode 100644 index 2bbc2c0..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/camera/cameraDrv.c +++ /dev/null @@ -1,495 +0,0 @@ -#include "cameraDrv.h" -#include "hal_i2c.h" -#include "sctdef.h" - -extern cspiDrvInterface_t cspiDrvInterface0; -extern cspiDrvInterface_t cspiDrvInterface1; - -extern camI2cCfg_t sp0A39Cfg[]; -extern camI2cCfg_t sp0821Cfg[]; -extern camI2cCfg_t gc6123Cfg[]; -extern camI2cCfg_t gc032ACfg[]; -extern camI2cCfg_t bf30a2Cfg[]; -extern cspiCtrl_t cspiCtrl; -extern cspiBinaryCtrl_t cspiBinaryCtrl; -extern cspiIntCtrl_t cspiIntCtrl; -extern cspiDataFmt_t cspiDataFmt; -extern cspiFrameProcLspi_t cspiFrameProcLspi; - -#define EIGEN_CSPI(n) ((CSPI_TypeDef *) (MP_USP0_BASE_ADDR + 0x1000*n)) -AP_PLAT_COMMON_BSS static camErrCb camErrStatsFunc; -AP_PLAT_COMMON_BSS static cspiCbEvent_fn userCamUspCb = NULL; - - -#if (CAMERA_ENABLE_GC032A) - #if (GC032A_2SDR) - char* regName = "gc032a_2sdr"; - #elif (GC032A_1SDR) - char* regName = "gc032a_1sdr"; - #elif (GC032A_2DDR) - char* regName = "gc032a_2ddr"; - #endif -#elif (CAMERA_ENABLE_GC6153) - #if (GC6153_1SDR) - char* regName = "gc6153_1sdr"; - #endif -#endif - -AP_PLAT_COMMON_BSS static uint8_t slaveAddr; -AP_PLAT_COMMON_BSS static uint16_t regCnt; -AP_PLAT_COMMON_BSS static camI2cCfg_t* regInfo = NULL; - -#if (RTE_CSPI1 == 1) -AP_PLAT_COMMON_DATA static cspiDrvInterface_t *cspiDrv = &CREATE_SYMBOL(cspiDrvInterface, 1); -#else -AP_PLAT_COMMON_DATA static cspiDrvInterface_t *cspiDrv = &CREATE_SYMBOL(cspiDrvInterface, 0); -#endif -extern void delay_us(uint32_t us); - -void findRegInfo(char* regName, uint8_t* slaveAddr, uint16_t* regCnt, camI2cCfg_t** regInfo) -{ - if (strcmp(regName, "gc032a_2sdr") == 0) - { - extern camI2cCfg_t gc032A_2sdrRegInfo[]; - *regInfo = gc032A_2sdrRegInfo; - *slaveAddr = GC032A_I2C_ADDR; - *regCnt = gc032aGetRegCnt(regName); - } - else if (strcmp(regName, "gc032a_1sdr") == 0) - { - extern camI2cCfg_t gc032A_1sdrRegInfo[]; - *regInfo = gc032A_1sdrRegInfo; - *slaveAddr = GC032A_I2C_ADDR; - *regCnt = gc032aGetRegCnt(regName); - } - else if (strcmp(regName, "gc032a_2ddr") == 0) - { - extern camI2cCfg_t gc032A_2ddrRegInfo[]; - *regInfo = gc032A_2ddrRegInfo; - *slaveAddr = GC032A_I2C_ADDR; - *regCnt = gc032aGetRegCnt(regName); - } - else if (strcmp(regName, "gc6153_1sdr") == 0) - { - extern camI2cCfg_t gc6153_1sdrRegInfo[]; - *regInfo = gc6153_1sdrRegInfo; - *slaveAddr = GC6153_I2C_ADDR; - *regCnt = gc6153GetRegCnt(regName); - } -} - -void camI2cInit() -{ - halI2cInit(true); - - // Backup some info about this sensor - findRegInfo(regName, &slaveAddr, ®Cnt, ®Info); -} - -void camI2cWrite(uint8_t slaveAddr, uint8_t regAddr, uint8_t regData, uint32_t num) -{ - uint8_t tempBuffer[2]; - - tempBuffer[0] = regAddr; - tempBuffer[1] = regData; - - uint8_t rxNack = 0; - halI2cWrite(slaveAddr, tempBuffer, num, &rxNack, true); - - if (rxNack == 1) - { - // if fail , write again - halI2cWrite(slaveAddr, tempBuffer, num, &rxNack, true); - } -} - -uint8_t camI2cRead(uint8_t slaveAddr, uint8_t regAddr) -{ - uint8_t readData; - halI2cRead(slaveAddr, regAddr, &readData, true); - return readData; -} - -uint8_t camReadReg(uint8_t regAddr) -{ - uint8_t recvData; - - recvData = camI2cRead(slaveAddr, regAddr); - return recvData; -} - -void camWriteReg(camI2cCfg_t* regInfo) -{ - camI2cWrite(slaveAddr, regInfo->regAddr, regInfo->regVal, 2); -} - -void camRegCfg() -{ - //uint8_t dataRead; - - camI2cInit(); - - // Configure all the registers about this sensor - for (int i=0; i < regCnt; i++) - { - camI2cWrite(slaveAddr, regInfo[i].regAddr, regInfo[i].regVal, 2); - delay_us(10000); // delay 10ms - -#if 0 - dataRead = camI2cRead(slaveAddr, regInfo[i].regAddr); - printf("reg addr=0x%02x, reg val=0x%02x\n", regInfo[i].regAddr, dataRead); - delay_us(15000); -#endif - } -} - -void camInterfaceCfg(camParamCfg_t* config) -{ - cspiDataFmt.endianMode = config->endianMode; - cspiCtrl.rxWid = config->wireNum; - cspiCtrl.rxdSeq = config->rxSeq; - cspiCtrl.cpol = config->cpol; - cspiCtrl.cpha = config->cpha; - cspiCtrl.ddrMode = config->ddrMode; - cspiBinaryCtrl.wordIdSeq = config->wordIdSeq; - cspiBinaryCtrl.dummyAllowed = config->dummyAllowed; - cspiCtrl.fillYonly = config->yOnly; - cspiCtrl.rowScaleRatio = config->rowScaleRatio; - cspiCtrl.colScaleRatio = config->colScaleRatio; - cspiCtrl.scaleBytes = config->scaleBytes; -} - -void camSetMemAddr(uint32_t dataAddr) -{ - cspiDrv->ctrl(CSPI_CTRL_MEM_ADDR , dataAddr); // register the recv memory -} - -#if (ENABLE_CAMERA_LDO == 1) -void camPowerOn(uint8_t ioInitVal) -{ - PadConfig_t padConfig; - PAD_getDefaultConfig(&padConfig); - padConfig.pullUpEnable = PAD_PULL_UP_DISABLE; - padConfig.pullDownEnable = PAD_PULL_DOWN_DISABLE; - padConfig.mux = CAM_PD_PAD_ALT_FUNC; - PAD_setPinConfig(CAM_PD_PAD_INDEX, &padConfig); - - GpioPinConfig_t config; - config.pinDirection = GPIO_DIRECTION_OUTPUT; - config.misc.initOutput = ioInitVal; - GPIO_pinConfig(CAM_PD_GPIO_INSTANCE, CAM_PD_GPIO_PIN, &config); -} -#endif - -static void camUspCb() -{ - uint32_t cspiStatus; - - #if (RTE_CSPI0 == 1) - cspiStatus = camGetCspiStats(CSPI_0); - #elif (RTE_CSPI1 == 1) - cspiStatus = camGetCspiStats(CSPI_1); - #endif - - if (cspiStatus & ICL_STATS_FRAME_END_Msk) - { - CSPI1->STAS |= 0x3<<3; - CSPI1->STAS |= 0xf<<7; - CSPI1->STAS |= 0x3<<11; - CSPI1->DMACTL |= 1<<24; - - if (userCamUspCb) - { - userCamUspCb(cspiStatus); - } - - CSPI1->CBCTRL |= 2<<25; - } -} - - -void camInit(void* dataAddr, cspiCbEvent_fn uspCb, void* dmaCb) -{ - camResolution_e camResolution; - camParamCfg_t camParamCfg; - IRQn_Type irqNum; - - #if (RTE_CSPI0 == 1) - irqNum = PXIC0_USP0_IRQn; - #elif (RTE_CSPI1 == 1) - irqNum = PXIC0_USP1_IRQn; - #endif - - if(uspCb) - { - userCamUspCb = uspCb; - } - - XIC_SetVector(irqNum, camUspCb); - XIC_EnableIRQ(irqNum); - -#if (CAMERA_ENABLE_GC032A) - #if (GC032A_2SDR) - camParamCfg.wireNum = WIRE_2; - camParamCfg.endianMode = CAM_LSB_MODE; - camParamCfg.rxSeq = SEQ_0; - camParamCfg.cpha = 0; - camParamCfg.cpol = 0; - camParamCfg.ddrMode = 0; - camParamCfg.wordIdSeq = 0; - camParamCfg.dummyAllowed = 0; - camResolution = CAM_CHAIN_COUNT; - #elif (GC032A_1SDR) - camParamCfg.wireNum = WIRE_1; - camParamCfg.endianMode = CAM_LSB_MODE; - camParamCfg.rxSeq = SEQ_0; - camParamCfg.cpha = 0; - camParamCfg.cpol = 0; - camParamCfg.ddrMode = 0; - camParamCfg.wordIdSeq = 0; - camParamCfg.dummyAllowed = 0; - camResolution = CAM_CHAIN_COUNT; - #elif (GC032A_2DDR) - camParamCfg.wireNum = WIRE_2; - camParamCfg.endianMode = CAM_MSB_MODE; - camParamCfg.rxSeq = SEQ_1; - camParamCfg.cpha = 1; - camParamCfg.cpol = 0; - camParamCfg.ddrMode = 1; - camParamCfg.wordIdSeq = 1; - camParamCfg.dummyAllowed = 1; - camResolution = CAM_CHAIN_COUNT; - #endif - - if (CAM_CHAIN_COUNT == CAM_8W_COLOR) - { - camParamCfg.yOnly = 0; - camParamCfg.rowScaleRatio = 1; - camParamCfg.colScaleRatio = 1; - camParamCfg.scaleBytes = 3; - } - else if (CAM_CHAIN_COUNT == CAM_8W_Y) - { - camParamCfg.yOnly = 1; - camParamCfg.rowScaleRatio = 1; - camParamCfg.colScaleRatio = 1; - camParamCfg.scaleBytes = 1; - } - else if (CAM_CHAIN_COUNT == CAM_30W_Y) - { - camParamCfg.yOnly = 1; - camParamCfg.rowScaleRatio = 0; - camParamCfg.colScaleRatio = 0; - camParamCfg.scaleBytes = 0; - } - else if (CAM_CHAIN_COUNT == CAM_30W_COLOR) - { - camParamCfg.yOnly = 0; - camParamCfg.rowScaleRatio = 0; - camParamCfg.colScaleRatio = 0; - camParamCfg.scaleBytes = 0; - } -#elif (CAMERA_ENABLE_GC6153) - #if (GC6153_1SDR) - camParamCfg.wireNum = WIRE_1; - #endif - camParamCfg.endianMode = CAM_LSB_MODE; - camParamCfg.rxSeq = SEQ_1; - camParamCfg.cpha = 1; - camParamCfg.cpol = 0; - camParamCfg.yOnly = 1; - camParamCfg.ddrMode = 0; - camParamCfg.wordIdSeq = 0; - camParamCfg.rowScaleRatio = 0; - camParamCfg.colScaleRatio = 0; - camParamCfg.scaleBytes = 0; - camResolution = CAM_CHAIN_COUNT; -#endif - - camInterfaceCfg(&camParamCfg); - - cspiDrv->ctrl(CSPI_CTRL_MEM_ADDR , (uint32_t)dataAddr); // register the recv memory - cspiDrv->powerCtrl(CSPI_POWER_FULL); - cspiDrv->init(dmaCb); - cspiDrv->ctrl(CSPI_CTRL_DATA_FORMAT , 0); - cspiDrv->ctrl(CSPI_CTRL_RXTOR , 0); - cspiDrv->ctrl(CSPI_CTRL_FRAME_INFO0 , 0); - cspiDrv->ctrl(CSPI_CTRL_INT_CTRL , 0); - cspiDrv->ctrl(CSPI_CTRL_CSPICTL , 0); - cspiDrv->ctrl(CSPI_CTRL_DMA_CTRL , 0); - cspiDrv->ctrl(CSPI_CTRL_RESOLUTION_SET , camResolution); - cspiDrv->ctrl(CSPI_CTRL_BUS_SPEED, (camFrequence_e)CAM_25_5_M); - cspiDrv->ctrl(CSPI_BINARY_CTRL, 0); - cspiDrv->ctrl(CSPI_CTRL_AUTO_CG_CTRL, 0); - cspiDrv->ctrl(CSPI_FRAME_PROC_LSPI, 0); - cspiDrv->ctrl(CSPI_DELAY_CTRL, 0); -} - -void camStartStop(cspiStartStop_e startStop) -{ - cspiDrv->ctrl(CSPI_CTRL_START_STOP , (uint32_t)startStop); -} - -void cspiStartIntEnable(cspiIntEnable_e intEnable) -{ - if (intEnable) - { - cspiIntCtrl.frameStartIntEn |= intEnable; - } - else - { - cspiIntCtrl.frameStartIntEn &= intEnable; - } - cspiDrv->ctrl(CSPI_CTRL_INT_CTRL , 0); // cspi interrupt enable or disable -} - -void cspiEndIntEnable(cspiIntEnable_e endIntEnable) -{ - if (endIntEnable) - { - cspiIntCtrl.frameEndIntEn |= endIntEnable; - } - else - { - cspiIntCtrl.frameEndIntEn &= endIntEnable; - } - - cspiDrv->ctrl(CSPI_CTRL_INT_CTRL , 0); -} - -void cspi2LspiEnable(uint8_t enable) -{ - cspiFrameProcLspi.outEnLspi = enable; - cspiDrv->ctrl(CSPI_FRAME_PROC_LSPI, 0); -} - -void camFlush() -{ - cspiDrv->ctrl(CSPI_CTRL_FLUSH_RX_FIFO , 0); -} - -void camRegisterIRQ(cspiInstance_e instance, camIrq_fn irqCb) -{ - IRQn_Type irqNum; - - if (instance == CSPI_0) - { - irqNum = PXIC0_USP0_IRQn; - } - else - { - irqNum = PXIC0_USP1_IRQn; - } - - XIC_SetVector(irqNum, irqCb); - XIC_EnableIRQ(irqNum); -} - -PLAT_FM_RAMCODE void camRecv(uint8_t * dataAddr) -{ - cspiDrv->ctrl(CSPI_CTRL_MEM_ADDR , (uint32_t)dataAddr); - cspiDrv->recv(); -} - -uint32_t camGetCspiStats(cspiInstance_e instance) -{ - return EIGEN_CSPI(instance)->STAS; -} - -uint32_t camGetCspiInt(cspiInstance_e instance) -{ - return EIGEN_CSPI(instance)->INTCTL; -} - - -void camClearIntStats(cspiInstance_e instance, uint32_t mask) -{ - EIGEN_CSPI(instance)->STAS = mask; -} - -void camRegisterErrStatsCb(camErrCb errCb) -{ - camErrStatsFunc = errCb; -} - -void camCheckErrStats() -{ - if (!camErrStatsFunc) - { - return; - } - - // check lspi error status and give cb to user - uint32_t status = LSPI2->STAS; - - if ( (status | ICL_STATS_TX_UNDERRUN_RUN_Msk) || - (status | ICL_STATS_TX_DMA_ERR_Msk) || - (status | ICL_STATS_RX_OVERFLOW_Msk) || - (status | ICL_STATS_RX_DMA_ERR_Msk) || - (status | ICL_STATS_RX_FIFO_TIMEOUT_Msk) || - (status | ICL_STATS_FS_ERR_Msk) || - (status | ICL_STATS_CSPI_BUS_TIMEOUT_Msk) || - (status | ICL_STATS_RX_FIFO_TIMEOUT_Msk) - ) - { - camErrStatsFunc(status); - } - - return; -} - -void camGpioPulseCfg(uint8_t padAddr, uint8_t pinInstance, uint8_t pinNum) -{ - PadConfig_t padConfig; - PAD_getDefaultConfig(&padConfig); - - padConfig.mux = PAD_MUX_ALT0; - PAD_setPinConfig(padAddr, &padConfig); - - GpioPinConfig_t config; - config.pinDirection = GPIO_DIRECTION_OUTPUT; - config.misc.initOutput = 0; - - GPIO_pinConfig(pinInstance, pinNum, &config); -} - -void camGpioPulse(uint8_t pinInstance, uint8_t pinNum, uint32_t pulseDurationUs, uint8_t initialState, bool needLoop) -{ - GPIO_TypeDef *gpio = (GPIO_TypeDef*)(RMI_GPIO_BASE_ADDR + 0x1000*pinInstance); - - if (needLoop) - { - // for test gpio is good or not - while (1) - { - gpio->DATAOUT = ((~(1<DATAOUT = ((~(1<1 - gpio->DATAOUT = ((~(1<DATAOUT = ((~(1<0 - gpio->DATAOUT = ((~(1<DATAOUT = ((~(1<hasPA); - printf("[ES7111] es7111Init: hasPA=%d\r\n", codecCfg->hasPA); - if (codecCfg->hasPA) - { - isHasPA = codecCfg->hasPA; - - // GPIO function select - PadConfig_t padConfig = {0}; - GpioPinConfig_t pinConfig = {0}; - - PAD_getDefaultConfig(&padConfig); - padConfig.mux = PAD_MUX_ALT0; - PAD_setPinConfig(CODEC_PA_PAD_INDEX, &padConfig); - - // CODEC_PA pin config - pinConfig.pinDirection = GPIO_DIRECTION_OUTPUT; - pinConfig.misc.initOutput = 1; // when codec has been init, PA should open - GPIO_pinConfig(CODEC_PA_GPIO_INSTANCE, CODEC_PA_GPIO_PIN, &pinConfig); - } - - return CODEC_EOK; -} - -void es7111DeInit() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7111DeInit, P_DEBUG, "[ES7111] es7111DeInit"); -} - -HalCodecSts_e es7111Config(HalCodecMode_e mode, HalCodecIface_t *iface) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7111Config, P_DEBUG, "[ES7111] es7111Config"); - - return CODEC_EOK; -} - -HalCodecSts_e es7111StartStop(HalCodecMode_e mode, HalCodecCtrlState_e ctrlState) -{ - HalCodecSts_e ret = CODEC_EOK; - - switch(ctrlState) - { - case CODEC_CTRL_START: - { - ret |= es7111Start(mode); - if (isHasPA) - { - es7111EnablePA(true); - } - } - break; - - case CODEC_CTRL_STOP: - ret |= es7111Stop(mode); - break; - case CODEC_CTRL_RESUME: - ret |= es7111Resume(mode); - break; - case CODEC_CTRL_POWERDONW: - ret |= es7111PwrDown(mode); - break; - } - - - return ret; -} - -HalCodecSts_e es7111Start(HalCodecMode_e mode) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7111Start, P_DEBUG, "[ES7111] es7111Start"); - - return CODEC_EOK; -} - -HalCodecSts_e es7111Stop(HalCodecMode_e mode) -{ - HalCodecSts_e ret = CODEC_EOK; - switch(mode) - { - case CODEC_MODE_ENCODE: - es7111AdcStandby(&adcVolBak); - break; - - case CODEC_MODE_DECODE: - { - es7111DacStandby(&dacVolBak); - - // disable PA - if (isHasPA) - { - es7111EnablePA(false); - } - } - break; - - case CODEC_MODE_BOTH: - es7111Standby(&dacVolBak, &adcVolBak); - break; - - default: - break; - } - - return ret; -} - -HalCodecSts_e es7111Resume(HalCodecMode_e mode) -{ - HalCodecSts_e ret = CODEC_EOK; - switch(mode) - { - case CODEC_MODE_ENCODE: - es7111AdcResume(); - break; - - case CODEC_MODE_DECODE: - { - es7111DacResume(); - - // enable PA - if (isHasPA) - { - es7111EnablePA(true); - } - } - break; - - case CODEC_MODE_BOTH: - es7111AllResume(); - break; - - default: - break; - } - - return ret; - -} - - - -HalCodecSts_e es7111SetVolume(int volume) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7111SetVolume, P_DEBUG, "[ES7111] es7111SetVolume"); - - return CODEC_EOK; -} - -HalCodecSts_e es7111GetVolume(int *volume) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7111GetVolume, P_DEBUG, "[ES7111] es7111GetVolume"); - - return CODEC_EOK; -} - -HalCodecSts_e es7111SetMute(bool enable) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7111SetMute, P_DEBUG, "[ES7111] es7111SetMute"); - - return CODEC_EOK; -} - -HalCodecSts_e es7111GetVoiceMute(int *mute) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7111GetVoiceMute, P_DEBUG, "[ES7111] es7111GetVoiceMute"); - - return CODEC_EOK; -} - -HalCodecSts_e es7111SetMicVolume(uint8_t micGain, int micVolume) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7111SetMicVolume, P_DEBUG, "[ES7111] es7111SetMicVolume"); - - return CODEC_EOK; -} - -HalCodecCfg_t es7111GetDefaultCfg() -{ - HalCodecCfg_t codecCfg = ES7111_DEFAULT_CONFIG(); - - return codecCfg; -} - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/codec/codecDev/es7149.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/codec/codecDev/es7149.c deleted file mode 100644 index 6ceef56..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/codec/codecDev/es7149.c +++ /dev/null @@ -1,317 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2019-, Copyrigths of EigenComm Ltd. - * File name: es7149.c - * Description: EC7xx es7149 file - * History: Rev1.0 2021-9-18 - * - ****************************************************************************/ - -#include "es7149.h" - - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ - -#define ES7149_DEFAULT_CONFIG() \ -{ \ - .codecIface = { \ - .mode = CODEC_MODE_SLAVE, \ - .fmt = CODEC_MSB_MODE, \ - .samples = CODEC_16K_SAMPLES, \ - .bits = CODEC_BIT_LENGTH_16BITS, \ - .channel = CODEC_MONO, \ - .polarity = 1, \ - }, \ -}; - - -/*----------------------------------------------------------------------------* - * DATA TYPE DEFINITION * - *----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCTION DECLEARATION * - *----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------* - * GLOBAL VARIABLES * - *----------------------------------------------------------------------------*/ - -// 7149 func list -HalCodecFuncList_t es7149DefaultHandle = -{ - .codecType = ES7149, - .halCodecInitFunc = es7149Init, - .halCodecDeinitFunc = es7149DeInit, - .halCodecCtrlStateFunc = es7149StartStop, - .halCodecCfgIfaceFunc = es7149Config, - .halCodecSetMuteFunc = es7149SetMute, - .halCodecSetVolumeFunc = es7149SetVolume, - .halCodecGetVolumeFunc = es7149GetVolume, - //.halCodecEnablePAFunc = es7149EnablePA, - .halCodecSetMicVolumeFunc = es7149SetMicVolume, - .halCodecLock = NULL, - .handle = NULL, - .halCodecGetDefaultCfg = es7149GetDefaultCfg, -}; - - - -/*----------------------------------------------------------------------------* - * PRIVATE VARIABLES * - *----------------------------------------------------------------------------*/ - -static uint8_t dacVolBak, adcVolBak; -static bool isHasPA; - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCS * - *----------------------------------------------------------------------------*/ - -// set es7149 into suspend mode -static void es7149Standby(uint8_t* dacVolB, uint8_t* adcVolB) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7149Standby, P_DEBUG, "[ES7149] tn8211Standby: dacVolB=%d, adcVolB=%d", *dacVolB, *adcVolB); -} - -// set es7149 ADC into suspend mode -static void es7149AdcStandby(uint8_t* adcVolB) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7149AdcStandby, P_DEBUG, "[ES7149] es7149AdcStandby"); -} - -// set es7149 DAC into suspend mode -static void es7149DacStandby(uint8_t* dacVolB) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7149DacStandby, P_DEBUG, "[ES7149] es7149DacStandby"); -} - -// set es7149 into resume mode -static HalCodecSts_e es7149AllResume() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7149AllResume, P_DEBUG, "[ES7149] es7149AllResume: dacVolBak=%d, adcVolBak=%d", dacVolBak, adcVolBak); - - return CODEC_EOK; -} - -// set es7149 adc into resume mode -static HalCodecSts_e es7149AdcResume() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7149AdcResume, P_DEBUG, "[ES7149] es7149AdcResume"); - - return CODEC_EOK; -} - -// set es7149 dac into resume mode -static HalCodecSts_e es7149DacResume() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7149DacResume, P_DEBUG, "[ES7149] es7149DacResume"); - - return CODEC_EOK; -} - -// set es7149 into powerdown mode -static HalCodecSts_e es7149PwrDown() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7149PwrDown, P_DEBUG, "[ES7149] es7149PwrDown"); - - return CODEC_EOK; -} - - -/*----------------------------------------------------------------------------* - * GLOBAL FUNCTIONS * - *----------------------------------------------------------------------------*/ - -// enable pa power -void es7149EnablePA(bool enable) -{ - GPIO_pinWrite(CODEC_PA_GPIO_INSTANCE, 1 << CODEC_PA_GPIO_PIN, (enable == true) ? (1 << CODEC_PA_GPIO_PIN) : 0); - // DEBUG_PRINT(UNILOG_PLA_DRIVER, es7149EnablePA, P_DEBUG, "[ES7149] Set PA: %d", enable); -} - -HalCodecSts_e es7149Init(HalCodecCfg_t *codecCfg) -{ - if (codecCfg->hasPA) - { - isHasPA = codecCfg->hasPA; - - // GPIO function select - PadConfig_t padConfig = {0}; - GpioPinConfig_t pinConfig = {0}; - - PAD_getDefaultConfig(&padConfig); - padConfig.mux = PAD_MUX_ALT0; - PAD_setPinConfig(CODEC_PA_PAD_INDEX, &padConfig); - - // CODEC_PA pin config - pinConfig.pinDirection = GPIO_DIRECTION_OUTPUT; - pinConfig.misc.initOutput = 1; // when codec has been init, PA should open - GPIO_pinConfig(CODEC_PA_GPIO_INSTANCE, CODEC_PA_GPIO_PIN, &pinConfig); - } - - return CODEC_EOK; -} - -void es7149DeInit() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7149DeInit, P_DEBUG, "[ES7149] es7149DeInit"); -} - -HalCodecSts_e es7149Config(HalCodecMode_e mode, HalCodecIface_t *iface) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7149Config, P_DEBUG, "[ES7149] es7149Config"); - - return CODEC_EOK; -} - -HalCodecSts_e es7149StartStop(HalCodecMode_e mode, HalCodecCtrlState_e ctrlState) -{ - HalCodecSts_e ret = CODEC_EOK; - - switch(ctrlState) - { - case CODEC_CTRL_START: - { - ret |= es7149Start(mode); - if (isHasPA) - { - es7149EnablePA(true); - } - } - break; - - case CODEC_CTRL_STOP: - ret |= es7149Stop(mode); - break; - case CODEC_CTRL_RESUME: - ret |= es7149Resume(mode); - break; - case CODEC_CTRL_POWERDONW: - ret |= es7149PwrDown(mode); - break; - } - - - return ret; -} - -HalCodecSts_e es7149Start(HalCodecMode_e mode) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7149Start, P_DEBUG, "[ES7149] es7149Start"); - - return CODEC_EOK; -} - -HalCodecSts_e es7149Stop(HalCodecMode_e mode) -{ - HalCodecSts_e ret = CODEC_EOK; - switch(mode) - { - case CODEC_MODE_ENCODE: - es7149AdcStandby(&adcVolBak); - break; - - case CODEC_MODE_DECODE: - { - es7149DacStandby(&dacVolBak); - - // disable PA - if (isHasPA) - { - es7149EnablePA(false); - } - } - break; - - case CODEC_MODE_BOTH: - es7149Standby(&dacVolBak, &adcVolBak); - break; - - default: - break; - } - - return ret; -} - -HalCodecSts_e es7149Resume(HalCodecMode_e mode) -{ - HalCodecSts_e ret = CODEC_EOK; - switch(mode) - { - case CODEC_MODE_ENCODE: - es7149AdcResume(); - break; - - case CODEC_MODE_DECODE: - { - es7149DacResume(); - - // enable PA - if (isHasPA) - { - es7149EnablePA(true); - } - } - break; - - case CODEC_MODE_BOTH: - es7149AllResume(); - break; - - default: - break; - } - - return ret; - -} - - - -HalCodecSts_e es7149SetVolume(int volume) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7149SetVolume, P_DEBUG, "[ES7149] es7149SetVolume"); - - return CODEC_EOK; -} - -HalCodecSts_e es7149GetVolume(int *volume) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7149GetVolume, P_DEBUG, "[ES7149] es7149GetVolume"); - - return CODEC_EOK; -} - -HalCodecSts_e es7149SetMute(bool enable) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7149SetMute, P_DEBUG, "[ES7149] es7149SetMute"); - - return CODEC_EOK; -} - -HalCodecSts_e es7149GetVoiceMute(int *mute) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7149GetVoiceMute, P_DEBUG, "[ES7149] es7149GetVoiceMute"); - - return CODEC_EOK; -} - -HalCodecSts_e es7149SetMicVolume(uint8_t micGain, int micVolume) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es7149SetMicVolume, P_DEBUG, "[ES7149] es7149SetMicVolume"); - - return CODEC_EOK; -} - -HalCodecCfg_t es7149GetDefaultCfg() -{ - HalCodecCfg_t codecCfg = ES7149_DEFAULT_CONFIG(); - - return codecCfg; -} - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/codec/codecDev/es8311.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/codec/codecDev/es8311.c deleted file mode 100644 index b7dec74..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/codec/codecDev/es8311.c +++ /dev/null @@ -1,1134 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2019-, Copyrigths of EigenComm Ltd. - * File name: es8311.c - * Description: EC7xx es8311 file - * History: Rev1.0 2021-9-18 - * - ****************************************************************************/ - -#include "es8311.h" -#include "mw_nvm_audio.h" -#include "sctdef.h" - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ - -#define IS_DMIC 0 -#define USE_NV_VOLUME 1 -#define MCLK_DIV_FRE 256 - -#define ES8311_DEFAULT_CONFIG() \ -{ \ - .adcInput = CODEC_ADC_INPUT_LINE1, \ - .dacOutput = CODEC_DAC_OUTPUT_ALL, \ - .codecMode = CODEC_MODE_BOTH, \ - .codecIface = { \ - .mode = CODEC_MODE_SLAVE, \ - .fmt = CODEC_I2S_MODE, \ - .samples = CODEC_16K_SAMPLES, \ - .bits = CODEC_BIT_LENGTH_16BITS, \ - .channel = CODEC_MONO, \ - .polarity = 1, \ - }, \ -}; - - -/*----------------------------------------------------------------------------* - * DATA TYPE DEFINITION * - *----------------------------------------------------------------------------*/ - -// Clock coefficient structer -struct _coeffDiv -{ - uint32_t mclk; // mclk frequency - uint32_t rate; // sample rate - uint8_t preDiv; // the pre divider with range from 1 to 8 - uint8_t preMulti; // the pre multiplier with x1, x2, x4 and x8 selection - uint8_t adcDiv; // adcclk divider - uint8_t dacDiv; // dacclk divider - uint8_t fsMode; // double speed or single speed, =0, ss, =1, ds - uint8_t lrckH; // adclrck divider and daclrck divider - uint8_t lrckL; - uint8_t bclkDiv; // sclk divider - uint8_t adcOsr; // adc osr - uint8_t dacOsr; // dac osr -}; - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCTION DECLEARATION * - *----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------* - * GLOBAL VARIABLES * - *----------------------------------------------------------------------------*/ - -// 8311 func list -AP_PLAT_COMMON_DATA HalCodecFuncList_t es8311DefaultHandle = -{ - .codecType = ES8311, - .halCodecInitFunc = es8311Init, - .halCodecDeinitFunc = es8311DeInit, - .halCodecCtrlStateFunc = es8311StartStop, - .halCodecCfgIfaceFunc = es8311Config, - .halCodecSetMuteFunc = es8311SetMute, - .halCodecSetVolumeFunc = es8311SetVolume, - .halCodecGetVolumeFunc = es8311GetVolume, - .halCodecEnablePAFunc = es8311EnablePA, - .halCodecSetMicVolumeFunc = es8311SetMicVolume, - .halCodecGetMicVolumeFunc = es8311GetMicVolume, - .halCodecLock = NULL, - .handle = NULL, - .halCodecGetDefaultCfg = es8311GetDefaultCfg, -}; - -#if (USE_NV_VOLUME) -AP_PLAT_COMMON_BSS AudioParaCfgCodec_t mwNvmAudioCodec1; -AP_PLAT_COMMON_BSS MWNvmCfgUsrSetCodecVolumn usrCodecVolumn; -AP_PLAT_COMMON_BSS MWNvmCfgUsrSetCodecVolumn usrCodecVolumn2; -AP_PLAT_COMMON_BSS MWNvmCfgVolumnSetFlag volumeSetFlag; -AP_PLAT_COMMON_BSS MWNvmCfgVolumnSetFlag volumeSetFlag2; -#endif -extern void mwNvmCfgGetUsrCodecVolumn(UINT8 deviceType, MWNvmCfgUsrSetCodecVolumn *pUsrCodecVolumn); -extern void mwNvmCfgGetVolumnSetFlag(MWNvmCfgVolumnSetFlag *pVolumnSetFlag); -extern void mwNvmCfgSetAndSaveUsrCodecVolumn(UINT8 deviceType, UINT16 usrDigVolumn, UINT16 usrAnaVolumn); - -/*----------------------------------------------------------------------------* - * PRIVATE VARIABLES * - *----------------------------------------------------------------------------*/ - -// codec hifi mclk clock divider coefficients -static const struct _coeffDiv coeffDiv[] = -{ - //mclk rate preDiv mult adcDiv dacDiv fsMode lrch lrcl bckdiv adcOsr dacOsr - // 8k - {12288000, 8000 , 0x06, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {18432000, 8000 , 0x03, 0x02, 0x03, 0x03, 0x00, 0x05, 0xff, 0x18, 0x10, 0x20}, - {16384000, 8000 , 0x08, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {8192000 , 8000 , 0x04, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {6144000 , 8000 , 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {4096000 , 8000 , 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {3072000 , 8000 , 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {2048000 , 8000 , 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {1536000 , 8000 , 0x03, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {1024000 , 8000 , 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - - // 16k - {12288000, 16000, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {18432000, 16000, 0x03, 0x02, 0x03, 0x03, 0x00, 0x02, 0xff, 0x0c, 0x10, 0x20}, - {16384000, 16000, 0x04, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {8192000 , 16000, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {6144000 , 16000, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {4096000 , 16000, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {3072000 , 16000, 0x03, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {2048000 , 16000, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {1536000 , 16000, 0x03, 0x08, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - {1024000 , 16000, 0x01, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x20}, - - // 22.05k - {11289600, 22050, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {5644800 , 22050, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {2822400 , 22050, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {1411200 , 22050, 0x01, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - - // 32k - {12288000, 32000, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {18432000, 32000, 0x03, 0x04, 0x03, 0x03, 0x00, 0x02, 0xff, 0x0c, 0x10, 0x10}, - {16384000, 32000, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {8192000 , 32000, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {6144000 , 32000, 0x03, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {4096000 , 32000, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {3072000 , 32000, 0x03, 0x08, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {2048000 , 32000, 0x01, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {1536000 , 32000, 0x03, 0x08, 0x01, 0x01, 0x01, 0x00, 0x7f, 0x02, 0x10, 0x10}, - {1024000 , 32000, 0x01, 0x08, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - - // 44.1k - {11289600, 44100, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {5644800 , 44100, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {2822400 , 44100, 0x01, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {1411200 , 44100, 0x01, 0x08, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - - // 48k - {12288000, 48000, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {18432000, 48000, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {6144000 , 48000, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {3072000 , 48000, 0x01, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {1536000 , 48000, 0x01, 0x08, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - - // 96k - {12288000, 96000, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {18432000, 96000, 0x03, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {6144000 , 96000, 0x01, 0x04, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {3072000 , 96000, 0x01, 0x08, 0x01, 0x01, 0x00, 0x00, 0xff, 0x04, 0x10, 0x10}, - {1536000 , 96000, 0x01, 0x08, 0x01, 0x01, 0x01, 0x00, 0x7f, 0x02, 0x10, 0x10}, -}; - -AP_PLAT_COMMON_BSS static uint8_t dacVolBak, adcVolBak; -AP_PLAT_COMMON_BSS static uint8_t micVolGainBak; -AP_PLAT_COMMON_BSS static bool isHasPA; -//static int slope, offset; -//static int gain0 = -955, gain100 = 320; // mul or divide 10 to a integer - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCS * - *----------------------------------------------------------------------------*/ - -static int32_t es8311WriteReg(uint8_t regAddr, uint16_t data) -{ - int32_t ret = 0; - uint8_t rxNack = 0; - uint8_t cmd[2] = {0}; - cmd[0] = regAddr; - cmd[1] = data & 0xff; - - ret = halI2cWrite(ES8311_IICADDR, cmd, 2, &rxNack, true); - - if (rxNack == 1) - { - // if fail , write again - ret = halI2cWrite(ES8311_IICADDR, cmd, 2, &rxNack, true); - } -#if 0 -#ifdef FEATURE_OS_ENABLE - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311WriteReg_1, P_DEBUG, "reg write: reg=%x, data=%x", regAddr, data); -#else - printf("reg write: reg=%02x, data=%02x\n", regAddr, data); -#endif -#endif - - return ret; -} - -static int32_t es8311ReadReg(uint8_t regAddr, uint8_t *retData) -{ - return halI2cRead(ES8311_IICADDR, regAddr, retData, true); -} - -static ARM_I2C_STATUS es8311GetStats() -{ - ARM_I2C_STATUS stats = {0}; - - halI2cGetStats(&stats, true); - return stats; -} - -static int getCoeff(uint32_t mclk, uint32_t rate) -{ - for (int i = 0; i < (sizeof(coeffDiv) / sizeof(coeffDiv[0])); i++) { - if (coeffDiv[i].rate == rate && coeffDiv[i].mclk == mclk) - return i; - } - return -1; -} - -// set es8311 dac mute or not. mute = 0, dac un-mute; mute = 1, dac mute -static void es8311Mute(HalCodecCfg_t* codecHalCfg, int mute) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311setmute_0, P_DEBUG, "Enter into es8311Mute(), mute = %d\n", mute); - es8311SetVolume(codecHalCfg, 0); -} - -// set es8311 into suspend mode -static void es8311Standby(uint8_t* dacVolB, uint8_t* adcVolB) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311suspend_0, P_DEBUG, "Enter into es8311 suspend"); - es8311ReadReg(ES8311_DAC_REG32, dacVolB); - es8311ReadReg(ES8311_ADC_REG17, adcVolB); - es8311WriteReg(ES8311_DAC_REG32, 0x00); - es8311WriteReg(ES8311_ADC_REG17, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG0E, 0xFF); - es8311WriteReg(ES8311_SYSTEM_REG12, 0x02); - es8311WriteReg(ES8311_SYSTEM_REG14, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG0D, 0xFA); - es8311WriteReg(ES8311_ADC_REG15, 0x00); - es8311WriteReg(ES8311_DAC_REG37, 0x08); - es8311WriteReg(ES8311_GP_REG45, 0x01); -} - -// set es8311 ADC into suspend mode -static void es8311AdcStandby(uint8_t* adcVolB, uint8_t* micGainB) -{ - es8311ReadReg(ES8311_ADC_REG17, adcVolB); - es8311ReadReg(ES8311_SYSTEM_REG14, micGainB); - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311suspend_1, P_DEBUG, "Enter es8311 adc suspend, adcVolB:0x%x, micGainB:0x%x", *adcVolB, *micGainB); - es8311WriteReg(ES8311_ADC_REG17, 0x00); - es8311WriteReg(ES8311_SDPOUT_REG0A, 0x40); - es8311WriteReg(ES8311_SYSTEM_REG0E, 0x7f); - es8311WriteReg(ES8311_SYSTEM_REG14, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG0D, 0x31); - es8311WriteReg(ES8311_ADC_REG15, 0x00); - es8311WriteReg(ES8311_DAC_REG37, 0x08); - es8311WriteReg(ES8311_RESET_REG00, 0x82); - es8311WriteReg(ES8311_CLK_MANAGER_REG01, 0x35); -} - -// set es8311 DAC into suspend mode -static void es8311DacStandby(uint8_t* dacVolB) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311suspend_2, P_DEBUG, "Enter into es8311 dac suspend"); - es8311ReadReg(ES8311_DAC_REG32, dacVolB); - es8311WriteReg(ES8311_DAC_REG32, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG0E, 0x0F); - es8311WriteReg(ES8311_SYSTEM_REG12, 0x02); - es8311WriteReg(ES8311_SYSTEM_REG0D, 0x09); - es8311WriteReg(ES8311_ADC_REG15, 0x00); - es8311WriteReg(ES8311_DAC_REG37, 0x08); - es8311WriteReg(ES8311_RESET_REG00, 0x81); - es8311WriteReg(ES8311_CLK_MANAGER_REG01, 0x3a); -} - -// set es8311 into resume mode -static HalCodecSts_e es8311AllResume() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311Resume_0, P_DEBUG, "Enter into es8311 resume"); - es8311WriteReg(ES8311_SYSTEM_REG0D, 0x01); - es8311WriteReg(ES8311_GP_REG45, 0x00); - es8311WriteReg(ES8311_CLK_MANAGER_REG01, 0x3F); - es8311WriteReg(ES8311_RESET_REG00, 0x80); -#ifdef FEATURE_OS_ENABLE - osDelay(1); -#else - delay_us(1000); -#endif - es8311WriteReg(ES8311_SYSTEM_REG0D, 0x01); - es8311WriteReg(ES8311_CLK_MANAGER_REG02, 0x00); - es8311WriteReg(ES8311_DAC_REG37, 0x08); - es8311WriteReg(ES8311_ADC_REG15, 0x40); - es8311WriteReg(ES8311_SYSTEM_REG14, micVolGainBak);//0x18); - es8311WriteReg(ES8311_SYSTEM_REG12, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG0E, 0x00); - es8311WriteReg(ES8311_DAC_REG32, dacVolBak); - es8311WriteReg(ES8311_ADC_REG17, adcVolBak); - - return CODEC_EOK; -} - -// set es8311 adc into resume mode -static HalCodecSts_e es8311AdcResume() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311Resume_1, P_DEBUG, "Enter into es8311 adc resume"); - es8311WriteReg(ES8311_SYSTEM_REG0D, 0x01); - es8311WriteReg(ES8311_CLK_MANAGER_REG01, 0x3F); - es8311WriteReg(ES8311_RESET_REG00, 0x80); -#ifdef FEATURE_OS_ENABLE - osDelay(1); -#else - delay_us(1000); -#endif - es8311WriteReg(ES8311_SYSTEM_REG0D, 0x01); - es8311WriteReg(ES8311_DAC_REG37, 0x08); - es8311WriteReg(ES8311_ADC_REG15, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG14, micVolGainBak);//0x18); - es8311WriteReg(ES8311_SYSTEM_REG0E, 0x02); - es8311WriteReg(ES8311_ADC_REG17, adcVolBak); -#ifdef FEATURE_OS_ENABLE - osDelay(50); -#else - delay_us(50*1000); -#endif - es8311WriteReg(ES8311_SDPOUT_REG0A, 0x00); - return CODEC_EOK; -} - -// set es8311 dac into resume mode -static HalCodecSts_e es8311DacResume() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311Resume_2, P_DEBUG, "Enter into es8311 dac resume"); - es8311WriteReg(ES8311_SYSTEM_REG0D, 0x01); - es8311WriteReg(ES8311_CLK_MANAGER_REG01, 0x3F); - es8311WriteReg(ES8311_RESET_REG00, 0x80); -#ifdef FEATURE_OS_ENABLE - osDelay(1); -#else - delay_us(1000); -#endif - es8311WriteReg(ES8311_SYSTEM_REG0D, 0x01); - es8311WriteReg(ES8311_DAC_REG37, 0x08); - es8311WriteReg(ES8311_ADC_REG15, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG12, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG0E, 0x02); - es8311WriteReg(ES8311_DAC_REG32, dacVolBak); - - return CODEC_EOK; -} - - -// set es8311 into powerdown mode -static HalCodecSts_e es8311PwrDown() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311pwrDown_0, P_DEBUG, "Enter into es8311 powerdown"); - es8311WriteReg(ES8311_DAC_REG32, 0x00); - es8311WriteReg(ES8311_ADC_REG17, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG0E, 0xff); - es8311WriteReg(ES8311_SYSTEM_REG12, 0x02); - es8311WriteReg(ES8311_SYSTEM_REG14, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG0D, 0xf9); - es8311WriteReg(ES8311_ADC_REG15, 0x00); - es8311WriteReg(ES8311_DAC_REG37, 0x08); - es8311WriteReg(ES8311_CLK_MANAGER_REG02, 0x10); - es8311WriteReg(ES8311_RESET_REG00, 0x00); -#ifdef FEATURE_OS_ENABLE - osDelay(1); -#else - delay_us(1000); -#endif - es8311WriteReg(ES8311_RESET_REG00, 0x1f); - es8311WriteReg(ES8311_CLK_MANAGER_REG01, 0x30); -#ifdef FEATURE_OS_ENABLE - osDelay(1); -#else - delay_us(1000); -#endif - es8311WriteReg(ES8311_CLK_MANAGER_REG01, 0x00); - es8311WriteReg(ES8311_GP_REG45, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG0D, 0xfc); - es8311WriteReg(ES8311_CLK_MANAGER_REG02, 0x00); - return CODEC_EOK; -} - - -/*----------------------------------------------------------------------------* - * GLOBAL FUNCTIONS * - *----------------------------------------------------------------------------*/ - -// enable pa power -void es8311EnablePA(bool enable) -{ - GPIO_pinWrite(CODEC_PA_GPIO_INSTANCE, 1 << CODEC_PA_GPIO_PIN, enable ? (1 << CODEC_PA_GPIO_PIN) : 0); -} - -HalCodecSts_e es8311Init(HalCodecCfg_t *codecCfg) -{ - uint8_t datmp, regv; - int coeff; - HalCodecSts_e ret = CODEC_EOK; - getCoeff(0,0); - - halI2cInit(true); - -#ifdef FEATURE_OS_ENABLE -#if (USE_NV_VOLUME) - AudioParaCfgCommon_t mAudioCfgCommon; - ecAudioCfgTlvStore *pMwNvmAudioCfg = NULL; - - // get default gain value - memset((char *)&mAudioCfgCommon, 0x0, sizeof(mAudioCfgCommon)); - mAudioCfgCommon.mode = codecCfg->deviceMode; - mAudioCfgCommon.device = codecCfg->codecDeviceType; - mAudioCfgCommon.direct = codecCfg->direction; - DEBUG_PRINT(UNILOG_PLA_MIDWARE, es8311DefaultCfg_0, P_WARNING, "mode: %d, device: %d, direct: %d", mAudioCfgCommon.mode, mAudioCfgCommon.device, mAudioCfgCommon.direct); - - // to get mic volumn and default 0/100 volume - pMwNvmAudioCfg = (ecAudioCfgTlvStore *)OsaAllocZeroMemory(sizeof(ecAudioCfgTlvStore)+ sizeof(AudioParaSphEQBiquard_t)*EC_ADCFG_SPEECH_EQ_BIQUARD_NUMB*EC_ADCFG_SPEECH_TX_NUMB - + sizeof(AudioParaSphEQBiquard_t)*EC_ADCFG_SPEECH_EQ_BIQUARD_NUMB*EC_ADCFG_SPEECH_RX_NUMB + sizeof(UINT16)*EC_ADCFG_SPEECH_ANS_EQ_BAND_NUMB*EC_ADCFG_SPEECH_RX_NUMB - + sizeof(UINT16)*EC_ADCFG_SPEECH_ANS_EQ_BAND_NUMB*EC_ADCFG_SPEECH_TX_NUMB); - if (FALSE == mwNvmAudioCfgRead(pMwNvmAudioCfg)) - { - DEBUG_PRINT(UNILOG_PLA_MIDWARE, es8311DefaultCfg_1, P_WARNING, "MW NVM Audio, Read Audio Storage memory failure, try again !"); - if (FALSE == mwNvmAudioCfgRead(pMwNvmAudioCfg)) - { - DEBUG_PRINT(UNILOG_PLA_MIDWARE, es8311DefaultCfg_2, P_WARNING, "MW NVM Audio, Read Audio Storage memory failure !"); - OsaFreeMemory(&pMwNvmAudioCfg); - return FALSE; - } - } - - mwNvmAudioCfgCodecGet(&mAudioCfgCommon, &mwNvmAudioCodec1, pMwNvmAudioCfg); - - if ((mwNvmAudioCodec1.rxDigGain0 == 0) && (mwNvmAudioCodec1.rxDigGain100 == 0)) - { - // this board hasn't calibrated, so use default db val - codecCfg->codecVolParam.defaultVal.rxDigGain0 = -955; - codecCfg->codecVolParam.defaultVal.rxDigGain100 = 320; - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_7, P_DEBUG, " this board hasn't calibrated"); - } - else - { - #if 0 - // this board has calibrated, so use new db val - remain = mwNvmAudioCodec1.rxDigGain0 % 5; - mwNvmAudioCodec1.rxDigGain0 -= remain; - - remain = mwNvmAudioCodec1.rxDigGain100 % 5; - mwNvmAudioCodec1.rxDigGain100 -= remain; - #endif - - // mwNvmAudioCodec1.rxDigGain0 ranges from 0~255 - codecCfg->codecVolParam.defaultVal.rxDigGain0 = -955 + 5 * mwNvmAudioCodec1.rxDigGain0; - codecCfg->codecVolParam.defaultVal.rxDigGain100 = -955 + 5 * mwNvmAudioCodec1.rxDigGain100; - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_8, P_DEBUG, " this board has calibrated, gain0:%d, gain100:%d", codecCfg->codecVolParam.defaultVal.rxDigGain0, codecCfg->codecVolParam.defaultVal.rxDigGain100); - } - - codecCfg->codecVolParam.offset = codecCfg->codecVolParam.defaultVal.rxDigGain0 * 128; - codecCfg->codecVolParam.slope = (codecCfg->codecVolParam.defaultVal.rxDigGain100 - codecCfg->codecVolParam.defaultVal.rxDigGain0) * 1024/100; - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_9, P_DEBUG, "offset: %d, slope:%d", codecCfg->codecVolParam.offset, codecCfg->codecVolParam.slope); - OsaFreeMemory(&pMwNvmAudioCfg); - - - mwNvmCfgGetUsrCodecVolumn(0, &usrCodecVolumn); - mwNvmCfgGetVolumnSetFlag(&volumeSetFlag); - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_10, P_DEBUG, "init get nv speaker vol. rxDigUsrSet:%d, rxAnaUsrSet:%d", usrCodecVolumn.rxDigUsrSet, usrCodecVolumn.rxAnaUsrSet); - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_11, P_DEBUG, "rxDigUsrSetFlag:%d, rxAnaUsrSetFlag:%d, txDigGainFlag%d, txAnaGainFlag:%d", volumeSetFlag.rxDigUsrSetFlag, volumeSetFlag.rxAnaUsrSetFlag, volumeSetFlag.txDigGainFlag, volumeSetFlag.txAnaGainFlag); -#endif -#endif - #if 0 - es8311WriteReg(ES8311_GP_REG45, 0x00); - es8311WriteReg(ES8311_CLK_MANAGER_REG01, 0x30); - es8311WriteReg(ES8311_CLK_MANAGER_REG02, 0x10); - - // 256 - es8311WriteReg(ES8311_CLK_MANAGER_REG02, 0x00); - es8311WriteReg(ES8311_CLK_MANAGER_REG03, 0x10); - es8311WriteReg(ES8311_ADC_REG16, 0x21); - es8311WriteReg(ES8311_CLK_MANAGER_REG04, 0x19); - es8311WriteReg(ES8311_CLK_MANAGER_REG05, 0x00); - - // clk - es8311WriteReg(ES8311_CLK_MANAGER_REG06, (0<<5) + 4 -1); - es8311WriteReg(ES8311_CLK_MANAGER_REG07, 0x00); - es8311WriteReg(ES8311_CLK_MANAGER_REG08, 0xff); - - // sdp - es8311WriteReg(ES8311_SDPIN_REG09, (0<<7) + 0x00 + (0x00<<2)); - es8311WriteReg(ES8311_SDPOUT_REG0A, 0x00 + (0x00<<2)); - - // system - es8311WriteReg(ES8311_SYSTEM_REG0B, 0x00); - es8311WriteReg(ES8311_SYSTEM_REG0C, 0x00); - - es8311WriteReg(ES8311_SYSTEM_REG10, (0x1C*0) + (0x60*0x00) + 0x03); - es8311WriteReg(ES8311_SYSTEM_REG11, 0x7F); - es8311WriteReg(ES8311_RESET_REG00, 0x80); - es8311WriteReg(ES8311_SYSTEM_REG0D, 0x01); - es8311WriteReg(ES8311_CLK_MANAGER_REG01, 0x3F + (0x00<<7)); - es8311WriteReg(ES8311_SYSTEM_REG14, 0x18); - es8311WriteReg(ES8311_SYSTEM_REG12, 0x28); - es8311WriteReg(ES8311_SYSTEM_REG13, 0x00 + (0<<4)); - es8311WriteReg(ES8311_SYSTEM_REG0E, 0x02); - es8311WriteReg(ES8311_SYSTEM_REG0F, 0x44); - - // adc - es8311WriteReg(ES8311_ADC_REG15, 0x00); - es8311WriteReg(ES8311_ADC_REG1B, 0x0a); - es8311WriteReg(ES8311_ADC_REG1C, 0x6a); - - // dac - es8311WriteReg(ES8311_DAC_REG37, 0x48); - - // gpio - es8311WriteReg(ES8311_GPIO_REG44, (0 <<7)); - - - es8311WriteReg(ES8311_ADC_REG17, 0x88); - es8311WriteReg(ES8311_DAC_REG32, 0xf6); - - #else - HalCodecIface_t *i2sCfg = &(codecCfg->codecIface); - ret |= es8311WriteReg(ES8311_CLK_MANAGER_REG01, 0x3F); - - // Select clock source for internal mclk - es8311ReadReg(ES8311_CLK_MANAGER_REG01, ®v); - - // es8311 voltage check - ARM_I2C_STATUS i2sStats = {0}; - uint8_t i2cCheckCnt = 3; - do - { - i2sStats.rx_nack = 0; - i2sStats = es8311GetStats(); - } while ((i2sStats.rx_nack == 1) && i2cCheckCnt--); - - if (i2sStats.rx_nack == 1) - { - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_0, P_DEBUG, "I2C not impassable, check pull-up register or voltage!!!"); - return CODEC_START_I2C_ERR; - } - /////////////////////////////////////////////// - - regv &= 0x7F; - ret |= es8311WriteReg(ES8311_CLK_MANAGER_REG01, regv); - - // Set clock parammeters - int sampleFre = 0; - int mclkFre = 0; - switch (i2sCfg->samples) - { - case CODEC_08K_SAMPLES: - sampleFre = 8000; - break; - case CODEC_16K_SAMPLES: - sampleFre = 16000; - break; - case CODEC_22K_SAMPLES: - sampleFre = 22050; - break; - case CODEC_32K_SAMPLES: - sampleFre = 32000; - break; - case CODEC_44K_SAMPLES: - sampleFre = 44100; - break; - case CODEC_48K_SAMPLES: - sampleFre = 48000; - break; - default: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_1, P_DEBUG, "Unable to configure sample rate %dHz", sampleFre); - break; - } - mclkFre = sampleFre * MCLK_DIV_FRE; - coeff = getCoeff(mclkFre, sampleFre); - if (coeff < 0) - { - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_2, P_DEBUG, "Unable to configure sample rate %dHz with %dHz MCLK", sampleFre, mclkFre); - return CODEC_INIT_ERR; - } - - if (coeff >= 0) - { - //regv = es8311ReadReg(ES8311_CLK_MANAGER_REG02) & 0x07; - es8311ReadReg(ES8311_CLK_MANAGER_REG02, ®v); - regv = regv & 0x07; - regv |= (coeffDiv[coeff].preDiv - 1) << 5; - datmp = 0; - switch (coeffDiv[coeff].preMulti) - { - case 1: - datmp = 0; - break; - case 2: - datmp = 1; - break; - case 4: - datmp = 2; - break; - case 8: - datmp = 3; - break; - default: - break; - } - - regv |= (datmp) << 3; - ret |= es8311WriteReg(ES8311_CLK_MANAGER_REG02, regv); - - //regv = es8311ReadReg(ES8311_CLK_MANAGER_REG05) & 0x00; - es8311ReadReg(ES8311_CLK_MANAGER_REG05, ®v); - regv = regv & 0x00; - regv |= (coeffDiv[coeff].adcDiv - 1) << 4; - regv |= (coeffDiv[coeff].dacDiv - 1) << 0; - ret |= es8311WriteReg(ES8311_CLK_MANAGER_REG05, regv); - - //regv = es8311ReadReg(ES8311_CLK_MANAGER_REG03) & 0x80; - es8311ReadReg(ES8311_CLK_MANAGER_REG03, ®v); - regv = regv & 0x80; - regv |= coeffDiv[coeff].fsMode << 6; - regv |= coeffDiv[coeff].adcOsr << 0; - ret |= es8311WriteReg(ES8311_CLK_MANAGER_REG03, regv); - - //regv = es8311ReadReg(ES8311_CLK_MANAGER_REG04) & 0x80; - es8311ReadReg(ES8311_CLK_MANAGER_REG04, ®v); - regv = regv & 0x80; - regv |= coeffDiv[coeff].dacOsr << 0; - ret |= es8311WriteReg(ES8311_CLK_MANAGER_REG04, regv); - - //regv = es8311ReadReg(ES8311_CLK_MANAGER_REG07) & 0xC0; - es8311ReadReg(ES8311_CLK_MANAGER_REG07, ®v); - regv = regv & 0xc0; - regv |= coeffDiv[coeff].lrckH << 0; - ret |= es8311WriteReg(ES8311_CLK_MANAGER_REG07, regv); - - //regv = es8311ReadReg(ES8311_CLK_MANAGER_REG08) & 0x00; - es8311ReadReg(ES8311_CLK_MANAGER_REG08, ®v); - regv = regv & 0x00; - regv |= coeffDiv[coeff].lrckL << 0; - ret |= es8311WriteReg(ES8311_CLK_MANAGER_REG08, regv); - - //regv = es8311ReadReg(ES8311_CLK_MANAGER_REG06) & 0xE0; - es8311ReadReg(ES8311_CLK_MANAGER_REG06, ®v); - regv = regv & 0xe0; - if (coeffDiv[coeff].bclkDiv < 19) - { - regv |= (coeffDiv[coeff].bclkDiv - 1) << 0; - } - else - { - regv |= (coeffDiv[coeff].bclkDiv) << 0; - } - ret |= es8311WriteReg(ES8311_CLK_MANAGER_REG06, regv); - } - - ret |= es8311WriteReg(ES8311_RESET_REG00, 0x80); - - // Set Codec into Master or Slave mode - es8311ReadReg(ES8311_RESET_REG00, ®v); - - // Set master/slave audio interface - switch (i2sCfg->mode) - { - case CODEC_MODE_MASTER: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_3, P_DEBUG, "es8311 in master mode"); - regv |= 0x40; - break; - case CODEC_MODE_SLAVE: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_4, P_DEBUG, "es8311 in slave mode"); - regv &= 0xBF; - break; - default: - regv &= 0xBF; - } - ret |= es8311WriteReg(ES8311_RESET_REG00, regv); - - ret |= es8311WriteReg(ES8311_SYSTEM_REG13, 0x00/*0x10*/); - ret |= es8311WriteReg(ES8311_ADC_REG1B, 0x0A); - ret |= es8311WriteReg(ES8311_ADC_REG1C, 0x6A); - if (ret != CODEC_EOK) - { - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311init_5, P_DEBUG, "es8311 initialize failed"); - } - #endif - - if (codecCfg->hasPA) - { - isHasPA = codecCfg->hasPA; - - // GPIO function select - PadConfig_t padConfig = {0}; - GpioPinConfig_t pinConfig = {0}; - - PAD_getDefaultConfig(&padConfig); - padConfig.mux = PAD_MUX_ALT0; - PAD_setPinConfig(CODEC_PA_PAD_INDEX, &padConfig); - - - // CODEC_PA pin config - pinConfig.pinDirection = GPIO_DIRECTION_OUTPUT; - pinConfig.misc.initOutput = 0; // when codec has been init, PA should open - GPIO_pinConfig(CODEC_PA_GPIO_INSTANCE, CODEC_PA_GPIO_PIN, &pinConfig); - - // enable pa power - //es8311EnablePA(true); - } - - return CODEC_EOK; -} - -void es8311DeInit() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311DeInit_1, P_DEBUG, "ES8311 deinit"); - //es8311PwrDown(); - halI2cDeInit(true); -} - -HalCodecSts_e es8311ConfigFmt(HalCodecIfaceFormat_e fmt) -{ - HalCodecSts_e ret = CODEC_EOK; - uint8_t adcIface = 0, dacIface = 0; - es8311ReadReg(ES8311_SDPIN_REG09, &dacIface); - es8311ReadReg(ES8311_SDPOUT_REG0A, &adcIface); - switch (fmt) - { - case CODEC_MSB_MODE: - case CODEC_LSB_MODE: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311fmt_2, P_DEBUG, "ES8311 in left/right Format"); - adcIface &= 0xFC; - dacIface &= 0xFC; - adcIface |= 0x01; - dacIface |= 0x01; - break; - - case CODEC_I2S_MODE: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311fmt_1, P_DEBUG, "ES8311 in I2S Format"); - dacIface &= 0xFC; - adcIface &= 0xFC; - break; - - case CODEC_PCM_MODE: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311fmt_3, P_DEBUG, "ES8311 in pcm Format"); - adcIface &= 0xDC; - dacIface &= 0xDC; - adcIface |= 0x03; - dacIface |= 0x03; - break; - default: - dacIface &= 0xFC; - adcIface &= 0xFC; - break; - } - ret |= es8311WriteReg(ES8311_SDPIN_REG09, dacIface); - ret |= es8311WriteReg(ES8311_SDPOUT_REG0A, adcIface); - - return ret; -} - -HalCodecSts_e es8311SetBitsPerSample(HalCodecIfaceBits_e bits) -{ - HalCodecSts_e ret = CODEC_EOK; - uint8_t adc_iface = 0, dac_iface = 0; - es8311ReadReg(ES8311_SDPIN_REG09, &dac_iface); - es8311ReadReg(ES8311_SDPOUT_REG0A, &adc_iface); - switch (bits) - { - case CODEC_BIT_LENGTH_16BITS: - dac_iface |= 0x0c; - adc_iface |= 0x0c; - break; - case CODEC_BIT_LENGTH_24BITS: - dac_iface &= ~0x1c; - adc_iface &= ~0x1c; - break; - case CODEC_BIT_LENGTH_32BITS: - dac_iface |= 0x10; - adc_iface |= 0x10; - break; - default: - dac_iface |= 0x0c; - adc_iface |= 0x0c; - break; - - } - ret |= es8311WriteReg(ES8311_SDPIN_REG09, dac_iface); - ret |= es8311WriteReg(ES8311_SDPOUT_REG0A, adc_iface); - - return ret; -} - -HalCodecSts_e es8311Config(HalCodecMode_e mode, HalCodecIface_t *iface) -{ - int ret = CODEC_EOK; - ret |= es8311SetBitsPerSample(iface->bits); - ret |= es8311ConfigFmt(iface->fmt); - return ret; -} - -HalCodecSts_e es8311StartStop(HalCodecMode_e mode, HalCodecCtrlState_e ctrlState) -{ - HalCodecSts_e ret = CODEC_EOK; - - switch(ctrlState) - { - case CODEC_CTRL_START: - { - ret |= es8311Start(mode); - //if (isHasPA) - //{ - //es8311EnablePA(true); - //} - } - break; - - case CODEC_CTRL_STOP: - ret |= es8311Stop(mode); - break; - case CODEC_CTRL_RESUME: - ret |= es8311Resume(mode); - break; - case CODEC_CTRL_POWERDONW: - ret |= es8311PwrDown(mode); - break; - } - - - return ret; -} - -HalCodecSts_e es8311Start(HalCodecMode_e mode) -{ - HalCodecSts_e ret = CODEC_EOK; - uint8_t adcIface = 0, dacIface = 0; - - //dacIface = es8311ReadReg(ES8311_SDPIN_REG09) & 0xBF; - //adcIface = es8311ReadReg(ES8311_SDPOUT_REG0A) & 0xBF; - es8311ReadReg(ES8311_SDPIN_REG09, &dacIface); - dacIface = dacIface & 0xBF; - es8311ReadReg(ES8311_SDPOUT_REG0A, &adcIface); - adcIface = adcIface & 0xBF; - adcIface |= BIT(6); - dacIface |= BIT(6); - - if (mode == CODEC_MODE_ENCODE || mode == CODEC_MODE_BOTH) - { - adcIface &= ~(BIT(6)); - } - - if (mode == CODEC_MODE_DECODE || mode == CODEC_MODE_BOTH) - { - dacIface &= ~(BIT(6)); - } - - ret |= es8311WriteReg(ES8311_SDPIN_REG09, dacIface); - ret |= es8311WriteReg(ES8311_SDPOUT_REG0A, adcIface); - - // ret |= es8311WriteReg(ES8311_ADC_REG17, 0x88/*0xBF*/); - ret |= es8311WriteReg(ES8311_SYSTEM_REG0E, 0x02); - ret |= es8311WriteReg(ES8311_SYSTEM_REG12, 0x28/*0x00*/); - // ret |= es8311WriteReg(ES8311_SYSTEM_REG14, 0x18/*0x1A*/); - - // pdm dmic enable or disable - uint8_t regv = 0; - if (IS_DMIC) - { - es8311ReadReg(ES8311_SYSTEM_REG14, ®v); - regv |= 0x40; - ret |= es8311WriteReg(ES8311_SYSTEM_REG14, regv); - } - else - { - es8311ReadReg(ES8311_SYSTEM_REG14, ®v); - regv &= ~(0x40); - ret |= es8311WriteReg(ES8311_SYSTEM_REG14, regv); - } - // es8311WriteReg(ES8311_SYSTEM_REG14, 0x18); //add for debug - - ret |= es8311WriteReg(ES8311_SYSTEM_REG0D, 0x01); - ret |= es8311WriteReg(ES8311_ADC_REG15, 0x00/*0x40*/); - ret |= es8311WriteReg(ES8311_DAC_REG37, 0x48); - ret |= es8311WriteReg(ES8311_GP_REG45, 0x00); - - // set internal reference signal (ADCL + DACR) - ret |= es8311WriteReg(ES8311_GPIO_REG44, 0x00/*0x50*/); - - return ret; -} - -HalCodecSts_e es8311Stop(HalCodecMode_e mode) -{ - HalCodecSts_e ret = CODEC_EOK; - switch(mode) - { - case CODEC_MODE_ENCODE: - es8311AdcStandby(&adcVolBak, &micVolGainBak); - break; - - case CODEC_MODE_DECODE: - { - es8311DacStandby(&dacVolBak); - - // disable PA - if (isHasPA) - { - es8311EnablePA(false); - isHasPA = false; - } - } - break; - - case CODEC_MODE_BOTH: - es8311Standby(&dacVolBak, &adcVolBak); - break; - - default: - break; - } - - return ret; -} - -HalCodecSts_e es8311Resume(HalCodecMode_e mode) -{ - HalCodecSts_e ret = CODEC_EOK; - switch(mode) - { - case CODEC_MODE_ENCODE: - es8311AdcResume(); - break; - - case CODEC_MODE_DECODE: - { - es8311DacResume(); - - // enable PA - if (isHasPA) - { - es8311EnablePA(true); - } - } - break; - - case CODEC_MODE_BOTH: - es8311AllResume(); - break; - - default: - break; - } - - return ret; - -} - - -HalCodecSts_e es8311SetVolume(HalCodecCfg_t* codecHalCfg, int volume) -{ - HalCodecSts_e res = CODEC_EOK; - -#ifdef FEATURE_OS_ENABLE -#if (USE_NV_VOLUME) - //bool saveRet = true; - int calGainDb = 0; // calculated db, should divide 10 - uint8_t regValWrite = 0; -#endif -#endif - - if (volume <= 0) - { - //return es8311SetMute(1); - volume = 0; - } - - if (volume >= 100) - { - volume = 100; - } - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311SetVolume_1, P_DEBUG, "Es8311 Set volume:%d", volume); - -#if defined (FEATURE_OS_ENABLE) && (USE_NV_VOLUME == 1) - /* 1. get default tuning value - - 2. Gain[db] = volume[%] * slope/1024[db] + offset/128[db] - - offset = Gain[0] * 128 - slope = (Gain[100] - Gain[0]) * 1024 / 100 - - offset and slope should stored into NV - */ - - // 1. cal needed db value - calGainDb = (int)(volume * codecHalCfg->codecVolParam.slope/1024 + codecHalCfg->codecVolParam.offset/128); - - // 2. cal the writed reg val - regValWrite = (calGainDb - codecHalCfg->codecVolParam.defaultVal.rxDigGain0)/5; - - // 3. write into reg - res = es8311WriteReg(ES8311_DAC_REG32, regValWrite); - - // 4. write into nv - usrCodecVolumn.rxDigUsrSet &= ~0xff; - usrCodecVolumn.rxDigUsrSet |= volume; - mwNvmCfgSetAndSaveUsrCodecVolumn(0, usrCodecVolumn.rxDigUsrSet, usrCodecVolumn.rxAnaUsrSet); - - mwNvmCfgGetUsrCodecVolumn(0, &usrCodecVolumn2); - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311SetVolume_2, P_DEBUG, "rxDigUsrSet:%d, rxAnaUsrSet:%d", usrCodecVolumn2.rxDigUsrSet, usrCodecVolumn2.rxAnaUsrSet); -#else - int vol = volume * 2550 / 1000; // volume * (rxDigGain100 - rxDigGain0) / 100 - res = es8311WriteReg(ES8311_DAC_REG32, vol); -#endif - return res; -} - -HalCodecSts_e es8311GetVolume(HalCodecCfg_t* codecHalCfg, int *volume) -{ - HalCodecSts_e res = CODEC_EOK; - uint8_t regVal = 0; -#if (USE_NV_VOLUME) - //int calGainDb = 0; -#endif - - es8311ReadReg(ES8311_DAC_REG32, ®Val); - -#if (USE_NV_VOLUME) - //calGainDb = regVal*5 + codecHalCfg->codecVolParam.defaultVal.rxDigGain0; - //*volume = (calGainDb - codecHalCfg->codecVolParam.offset/128) * 1024 / codecHalCfg->codecVolParam.slope; - *volume = usrCodecVolumn.rxDigUsrSet & 0xff; -#else - *volume = regVal * 1000 / 2550; -#endif - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311getVolume_1, P_DEBUG, "Get volume:%d reg_value:0x%x", *volume, regVal); - return res; -} - -HalCodecSts_e es8311SetMute(HalCodecCfg_t* codecHalCfg, bool enable) -{ -#if 1 - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311setMute_1, P_DEBUG, "Es8311SetVoiceMute:%d", enable); - es8311Mute(codecHalCfg, enable); -#endif - return CODEC_EOK; -} - -HalCodecSts_e es8311GetVoiceMute(int *mute) -{ - HalCodecSts_e res = CODEC_EOK; - uint8_t reg = 0; - res = es8311ReadReg(ES8311_DAC_REG31, ®); - if (res == CODEC_EOK) - { - reg = (res & 0x20) >> 5; - } - *mute = reg; - return res; -} - -HalCodecSts_e es8311SetMicVolume(HalCodecCfg_t* codecHalCfg, uint8_t micGain, int micVolume) -{ - HalCodecSts_e res = CODEC_EOK; - - uint8_t regv = 0; - es8311ReadReg(ES8311_SYSTEM_REG14, ®v); - regv &= ~0xf; // clear low 4bits, maintain high 4bits, because high bits is dmic indication - regv |= (1<<4 | micGain); - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311SetMicVolume_2, P_DEBUG, "Es8311 reg set, micGain:%d, micVolume:%d", regv, micVolume); - res = es8311WriteReg(ES8311_SYSTEM_REG14, regv); - res = es8311WriteReg(ES8311_ADC_REG17, micVolume); - micVolGainBak = regv; - - return res; -} - -HalCodecSts_e es8311GetMicVolume(HalCodecCfg_t* codecHalCfg, uint8_t* micGain, int *micVolume) -{ - HalCodecSts_e res = CODEC_EOK; - - es8311ReadReg(ES8311_SYSTEM_REG14, micGain); - es8311ReadReg(ES8311_ADC_REG17, (uint8_t*)micVolume); - - #if 0 - *micVolume = mwNvmAudioCodec1.txDigGain & 0xff;//regVal * 1000 / 2550; - *micGain = mwNvmAudioCodec1.txAnaGain & 0xff;//regVal1 & 0xf; - #endif - - *micGain = *micGain & 0xf; - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311getMicVolume_1, P_DEBUG, "Get Mic gain:%d, mic volume:%d", *micGain, *micVolume); - return res; -} - - -void es8311ReadAll() -{ - uint8_t reg = 0; - -#ifdef FEATURE_OS_ENABLE - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311ReadAll_1, P_DEBUG, "now read 8311 all"); -#else - printf("now read 8311 all\n"); -#endif - - for (int i = 0; i < 0x4A; i++) - { - es8311ReadReg(i, ®); -#ifdef FEATURE_OS_ENABLE - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311ReadAll_2, P_DEBUG, "REG:%x, %x", reg, i); -#else - printf("reg = 0x%02x, val = 0x%02x\n", i, reg); -#endif - } - -#ifdef FEATURE_OS_ENABLE - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8311ReadAll_3, P_DEBUG, "now read 8311 all end"); -#else - printf("now read 8311 all end\n"); -#endif -} - -HalCodecCfg_t es8311GetDefaultCfg() -{ - HalCodecCfg_t codecCfg = ES8311_DEFAULT_CONFIG(); - - return codecCfg; -} - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/codec/codecDev/es8374.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/codec/codecDev/es8374.c deleted file mode 100644 index d2dd5c4..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/codec/codecDev/es8374.c +++ /dev/null @@ -1,767 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2019-, Copyrigths of EigenComm Ltd. - * File name: es8374.c - * Description: EC7xx es8374 file - * History: Rev1.0 2021-9-18 - * - ****************************************************************************/ - -#include "es8374.h" -#include "sctdef.h" - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ - -//adcInput å•声é“ADC输入通é“选择是CH1(MIC1P/1N)还是CH2(MIC2P/2N) -//dacOutput å•声é“DAC输出通é“选择:默认选择0:L声é“,1:Rå£°é“ -//mode 产å“主从模å¼é€‰æ‹©:默认选择0为SlaveMode,打开为1选择MasterMode -//fmt æ•°æ®æ ¼å¼é€‰æ‹©,需è¦å’Œå®žé™…æ—¶åºåŒ¹é… -//bits æ•°æ®é•¿åº¦é€‰æ‹©,需è¦å’Œå®žé™…æ—¶åºåŒ¹é… -#define ES8374_DEFAULT_CONFIG() \ -{ \ - .adcInput = CODEC_ADC_INPUT_LINE2, \ - .dacOutput = CODEC_DAC_OUTPUT_LINE1, \ - .codecMode = CODEC_MODE_BOTH, \ - .codecIface = { \ - .mode = CODEC_MODE_SLAVE, \ - .fmt = CODEC_I2S_MODE, \ - .samples = CODEC_16K_SAMPLES, \ - .bits = CODEC_BIT_LENGTH_16BITS, \ - .channel = CODEC_MONO, \ - .polarity = 1, \ - }, \ -}; - -#define VDDSPK_5V0 0x2B -#define VDDSPK_4V2 0x2A -#define VDDSPK_3V3 0x29 - -#define RATIO 256 //实际Ratio=MCLK/LRCK比率,需è¦å’Œå®žé™…æ—¶é’Ÿæ¯”ä¾‹åŒ¹é… -#define SCLK_DIV 4 //SCLK分频选择:(选择范围1~18),SCLK=MCLK/SCLK_DIV,超过åŽéžç­‰æ¯”增加具体对应关系è§ç›¸åº”DS说明 -#define SCLK_INV 0 //é»˜è®¤å¯¹é½æ–¹å¼ä¸ºä¸‹é™æ²¿,1ä¸ºä¸Šå‡æ²¿å¯¹é½,需è¦å’Œå®žé™…æ—¶åºåŒ¹é… -#define VDDSPK_VOLTAGE VDDSPK_4V2 //SPK拟电压选择为4V2还是5V0,需è¦å’Œå®žé™…ç¡¬ä»¶åŒ¹é… -#define ADC_PGA_DF2SE_15DB 1 //ADC模拟固定15dB增益:默认选择关闭0,打开为1 -#define ADC_PGA_GAIN 3 //ADC模拟增益:(选择范围0~7),具体对应关系è§ç›¸åº”DS说明 -#define ADC_VOLUME_MAX 0 //ADC数字增益:(选择范围0~192),0:0DB,-0.5dB/Step -#define ADC_VOLUME_MIN 50 //ADC数字增益:(选择范围0~192),0:0DB,-0.5dB/Step -#define ADC_VOLUME_MUTE 192 //ADC数字增益:(选择范围0~192),0:0DB,-0.5dB/Step -#define ADC_VOLUME_DEFAULT ADC_VOLUME_MAX //ADC数字增益:(选择范围0~192),0:0DB,-0.5dB/Step -#define DAC_VOLUME_MAX 0 //DAC数字增益:(选择范围0~192),0:0DB,-0.5dB/Step -#define DAC_VOLUME_MIN 50 //DAC数字增益:(选择范围0~192),0:0DB,-0.5dB/Step -#define DAC_VOLUME_MUTE 192 //DAC数字增益:(选择范围0~192),0:0DB,-0.5dB/Step -#define DAC_VOLUME_DEFAULT DAC_VOLUME_MAX //DAC数字增益:(选择范围0~192),0:0DB,-0.5dB/Step -#define DMIC_SELON 0 //DMIC选择:默认选择关闭0,立体声打开为1,å•声é“需è¦é€‰æ‹©2为H,3为L -#define DMIC_GAIN 0 //DMIC增益:(选择范围0~1),6dB/Step -#define MICBIASOFF 0 //内部MICBIASåç½®:默认选择关闭1,å¼€å¯é…置为0 -#define PA_VOLUME_DEFAULT 7 //(0~7),(0db,1.5db,3db,4db,5db,6db,6.75db,7.5db) -//16K,8K采样率下é…ç½®PLL_SET_12288 = 1 å¯ä»¥æ”¹å–„音质,目å‰åªæ”¯æŒ256Ratio,å…¶ä»–å¾…æ›´æ–° -#define PLL_SET_12288 1 //PLL选择输入频率,å•ä½ä¸ºKHZ:外部输入XXXXKHZ内部PLL锿ˆ12M288 - -/*----------------------------------------------------------------------------* - * DATA TYPE DEFINITION * - *----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCTION DECLEARATION * - *----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------* - * GLOBAL VARIABLES * - *----------------------------------------------------------------------------*/ - -// 8374 func list -AP_PLAT_COMMON_DATA HalCodecFuncList_t es8374DefaultHandle = -{ - .codecType = ES8374, - .halCodecInitFunc = es8374Init, - .halCodecDeinitFunc = es8374DeInit, - .halCodecCtrlStateFunc = es8374StartStop, - .halCodecCfgIfaceFunc = es8374Config, - .halCodecSetMuteFunc = es8374SetMute, - .halCodecSetVolumeFunc = es8374SetVolume, - .halCodecGetVolumeFunc = es8374GetVolume, - //.halCodecEnablePAFunc = es8374EnablePA, - .halCodecSetMicVolumeFunc = es8374SetMicVolume, - .halCodecGetMicVolumeFunc = NULL, - .halCodecLock = NULL, - .handle = NULL, - .halCodecGetDefaultCfg = es8374GetDefaultCfg, -}; - - - -/*----------------------------------------------------------------------------* - * PRIVATE VARIABLES * - *----------------------------------------------------------------------------*/ - -AP_PLAT_COMMON_BSS static uint8_t dacVolBak, adcVolBak; -AP_PLAT_COMMON_BSS static bool isHasPA; -AP_PLAT_COMMON_DATA static uint8_t adcInput = 2; -AP_PLAT_COMMON_BSS static uint8_t dacOutput = 0; - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCS * - *----------------------------------------------------------------------------*/ - -static int32_t es8374WriteReg(uint8_t regAddr, uint16_t data) -{ - int32_t ret = 0; - uint8_t rxNack = 0; - - uint8_t cmd[2] = {0}; - cmd[0] = regAddr; - cmd[1] = data & 0xff; - - ret = halI2cWrite(ES8374_IICADDR, cmd, 2, &rxNack, false); - -#if 0 -#ifdef FEATURE_OS_ENABLE - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374WriteReg, P_DEBUG, "[ES8374] [%x] %x", regAddr, data); -#else - printf("[ES8374] [%02X] %02X\r\n", regAddr, data); -#endif -#endif - - return ret; -} - -static int32_t es8374ReadReg(uint8_t regAddr, uint8_t* retData) -{ - return halI2cRead(ES8374_IICADDR, regAddr, retData, false); -} - -// enable pa power -void es8374EnablePA(bool enable) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374EnablePA, P_DEBUG, "[ES8374] es8374EnablePA: enable=%d", enable); - -#if 0 - if (enable) - { - es8374WriteReg(ES8374_REG_1E, 0x20); // spk on - delay_us(1000); - es8374WriteReg(ES8374_REG_1E, 0xa0); // spk on - } - else - { - es8374WriteReg(ES8374_REG_1E, 0x20); - delay_us(1000); - es8374WriteReg(ES8374_REG_1C, 0x10); - es8374WriteReg(ES8374_REG_1D, 0x10); - es8374WriteReg(ES8374_REG_1E, 0x40); // spk off - } -#endif -} - - -// set es8374 into suspend mode - void es8374Standby(uint8_t* dacVolB, uint8_t* adcVolB)//待机é…ç½®--æ­é…es8374AllResume(void)//æ¢å¤é…ç½® -{ - es8374ReadReg(ES8374_REG_38, dacVolB); - es8374ReadReg(ES8374_REG_25, adcVolB); - - es8374WriteReg(ES8374_REG_38, 0xC0); - es8374WriteReg(ES8374_REG_25, 0xC0); - es8374WriteReg(ES8374_REG_28, 0x1C); - es8374WriteReg(ES8374_REG_36, 0x20); - es8374WriteReg(ES8374_REG_37, 0x20); - es8374WriteReg(ES8374_REG_6D, 0x00); - es8374WriteReg(ES8374_REG_09, 0x80); - es8374WriteReg(ES8374_REG_1A, 0x08); - es8374WriteReg(ES8374_REG_1E, 0x20); - delay_us(1000); - es8374WriteReg(ES8374_REG_1C, 0x10); - es8374WriteReg(ES8374_REG_1D, 0x10); - es8374WriteReg(ES8374_REG_1E, 0x40); - es8374WriteReg(ES8374_REG_24, 0x20); - es8374WriteReg(ES8374_REG_22, 0x00); - es8374WriteReg(ES8374_REG_21, 0xC0); - es8374WriteReg(ES8374_REG_15, 0xFF); - es8374WriteReg(ES8374_REG_14, 0x82); - es8374WriteReg(ES8374_REG_01, 0x03); - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374Standby, P_DEBUG, "[ES8374] es8374Standby: dacVolB=%d, adcVolB=%d", *dacVolB, *adcVolB); -} - -#if 1 -// set es8374 ADC into suspend mode - void es8374AdcStandby(uint8_t* adcVolB)//ADC待机é…ç½®--æ­é…es8374AdcResume -{ - es8374ReadReg(ES8374_REG_25, adcVolB); - - es8374WriteReg(ES8374_REG_25, 0xC0); - es8374WriteReg(ES8374_REG_15, 0x00); - es8374WriteReg(ES8374_REG_28, 0x1C); - es8374WriteReg(ES8374_REG_09, 0x80); - delay_us(5000); - es8374WriteReg(ES8374_REG_24, 0x20); - es8374WriteReg(ES8374_REG_21, 0xC0); - es8374WriteReg(ES8374_REG_15, 0x0C); - es8374WriteReg(ES8374_REG_01, 0x75); - -} - -// set es8374 DAC into suspend mode - void es8374DacStandby(uint8_t* dacVolB)//DAC待机é…ç½®--æ­é…es8374DacResume -{ - es8374ReadReg(ES8374_REG_38, dacVolB); - - es8374WriteReg(ES8374_REG_38, 0xC0); - es8374WriteReg(ES8374_REG_15, 0x00); - es8374WriteReg(ES8374_REG_36, 0x20); - es8374WriteReg(ES8374_REG_37, 0x20); - es8374WriteReg(ES8374_REG_6D, 0x00); - es8374WriteReg(ES8374_REG_09, 0x80); - es8374WriteReg(ES8374_REG_1A, 0x08); - es8374WriteReg(ES8374_REG_1E, 0x20); - delay_us(1000); - es8374WriteReg(ES8374_REG_1C, 0x10); - es8374WriteReg(ES8374_REG_1D, 0x10); - //es8374WriteReg(ES8374_REG_1E, 0x40); // spk off - es8374WriteReg(ES8374_REG_15, 0x62); - es8374WriteReg(ES8374_REG_01, 0x7A); - -} -#endif -#if 1 -// set es8374 adc into resume mode -static HalCodecSts_e es8374AdcResume(void)//ADCæ¢å¤é…ç½®--æ­é…es8374AdcStandby -{ - - es8374WriteReg(ES8374_REG_01, 0x7F); - es8374WriteReg(ES8374_REG_15, 0x00); - es8374WriteReg(ES8374_REG_21, (adcInput << 4) + (ADC_PGA_DF2SE_15DB << 2)); - es8374WriteReg(ES8374_REG_24, 0x08 + (DMIC_GAIN << 7) + DMIC_SELON); - es8374WriteReg(ES8374_REG_09, 0x41); - es8374WriteReg(ES8374_REG_28, 0x00); - es8374WriteReg(ES8374_REG_15, 0x40); - es8374WriteReg(ES8374_REG_25, adcVolBak); - - return CODEC_EOK; -} - -// set es8374 dac into resume mode -static HalCodecSts_e es8374DacResume(void)//DACæ¢å¤é…ç½®--æ­é…es8374DacStandby -{ - - es8374WriteReg(ES8374_REG_01, 0x7F); - es8374WriteReg(ES8374_REG_15, 0x00); - es8374WriteReg(ES8374_REG_21, 0x50); - es8374WriteReg(ES8374_REG_1E, 0x20); // spk on - delay_us(1000); - es8374WriteReg(ES8374_REG_1E, 0xa0); // spk on - es8374WriteReg(ES8374_REG_1D, VDDSPK_VOLTAGE); - es8374WriteReg(ES8374_REG_1C, 0x90); - es8374WriteReg(ES8374_REG_1A, 0xA0); - es8374WriteReg(ES8374_REG_09, 0x41); - es8374WriteReg(ES8374_REG_6D, 0x60); - es8374WriteReg(ES8374_REG_37, 0x00); - es8374WriteReg(ES8374_REG_36, (dacOutput << 6)); - es8374WriteReg(ES8374_REG_15, 0x40); - es8374WriteReg(ES8374_REG_38, dacVolBak); - - return CODEC_EOK; -} -#endif - - -// set es8374 into resume mode -static HalCodecSts_e es8374AllResume(void)//æ¢å¤é…ç½®(未下电)--æ­é…es8374Standby(void) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374AllResume, P_DEBUG, "[ES8374] es8374AllResume: dacVolBak=%d, adcVolBak=%d", dacVolBak, adcVolBak); - - es8374WriteReg(ES8374_REG_01, 0x7F); - es8374WriteReg(ES8374_REG_14, 0x8A + (MICBIASOFF << 4)); - es8374WriteReg(ES8374_REG_15, 0x00); - es8374WriteReg(ES8374_REG_21, 0x50); - es8374WriteReg(ES8374_REG_22, ADC_PGA_GAIN + (ADC_PGA_GAIN << 4)); - es8374WriteReg(ES8374_REG_21, (adcInput << 4) + (ADC_PGA_DF2SE_15DB << 2)); - es8374WriteReg(ES8374_REG_24, 0x08 + (DMIC_GAIN << 7) + DMIC_SELON); - es8374WriteReg(ES8374_REG_1E, 0x20); // spk on - delay_us(1000); - es8374WriteReg(ES8374_REG_1E, 0xa0); // spk on - es8374WriteReg(ES8374_REG_1D, VDDSPK_VOLTAGE); - es8374WriteReg(ES8374_REG_1C, 0x90); - es8374WriteReg(ES8374_REG_1A, 0xA0); - es8374WriteReg(ES8374_REG_09, 0x41); - es8374WriteReg(ES8374_REG_6D, 0x60); - es8374WriteReg(ES8374_REG_37, 0x00); - es8374WriteReg(ES8374_REG_36, (dacOutput << 6)); - es8374WriteReg(ES8374_REG_28, 0x00); - es8374WriteReg(ES8374_REG_15, 0x40); - es8374WriteReg(ES8374_REG_38, dacVolBak); - es8374WriteReg(ES8374_REG_25, adcVolBak); - - return CODEC_EOK; -} - - - -// set es8374 into powerdown mode -static HalCodecSts_e es8374PwrDown(HalCodecModule_e mode) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374PwrDown, P_DEBUG, "[ES8374] es8374PwrDown: mode=%d", mode); - - es8374WriteReg(ES8374_REG_38, 0xC0); - es8374WriteReg(ES8374_REG_25, 0xC0); - es8374WriteReg(ES8374_REG_15, 0x00); - es8374WriteReg(ES8374_REG_28, 0x1C); - es8374WriteReg(ES8374_REG_36, 0x20); - es8374WriteReg(ES8374_REG_37, 0x20); - es8374WriteReg(ES8374_REG_6D, 0x00); - es8374WriteReg(ES8374_REG_09, 0x80); - es8374WriteReg(ES8374_REG_1A, 0x08); - es8374WriteReg(ES8374_REG_1E, 0x20); - delay_us(1000); - es8374WriteReg(ES8374_REG_1C, 0x10); - es8374WriteReg(ES8374_REG_1D, 0x10); - es8374WriteReg(ES8374_REG_1E, 0x40); - es8374WriteReg(ES8374_REG_24, 0x20); - es8374WriteReg(ES8374_REG_22, 0x00); - es8374WriteReg(ES8374_REG_21, 0xC0); - es8374WriteReg(ES8374_REG_15, 0xFF); - es8374WriteReg(ES8374_REG_14, 0x16); - es8374WriteReg(ES8374_REG_01, 0x03); - - return CODEC_EOK; -} - - -/*----------------------------------------------------------------------------* - * GLOBAL FUNCTIONS * - *----------------------------------------------------------------------------*/ - - - -HalCodecSts_e es8374Init(HalCodecCfg_t *codecCfg) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374Init_1, P_DEBUG, "[ES8374] es8374Init_1: adcInput=%d, dacOutput=%d, codecMode=%d, hasPA=%d", - codecCfg->adcInput, codecCfg->dacOutput, codecCfg->codecMode, codecCfg->hasPA); - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374Init_2, P_DEBUG, "[ES8374] es8374Init_2: mode=%d, fmt=%d, samples=%d, bits=%d, channel=%d, polarity=%d", - codecCfg->codecIface.mode, codecCfg->codecIface.fmt, codecCfg->codecIface.samples, codecCfg->codecIface.bits, codecCfg->codecIface.channel, codecCfg->codecIface.polarity); - - //codecI2cInit(); - halI2cInit(false); - - switch (codecCfg->adcInput) - { - case CODEC_ADC_INPUT_LINE1: - adcInput = 1; - break; - - case CODEC_ADC_INPUT_LINE2: - adcInput = 2; - break; - - case CODEC_ADC_INPUT_ALL: - adcInput = 3; - break; - - case CODEC_ADC_INPUT_DIFFERENCE: - break; - - default: - break; - } - - switch (codecCfg->dacOutput) - { - case CODEC_DAC_OUTPUT_LINE1: - dacOutput = 0; - break; - - case CODEC_DAC_OUTPUT_LINE2: - dacOutput = 1; - break; - - case CODEC_DAC_OUTPUT_ALL: - break; - - default: - break; - } - - es8374WriteReg(ES8374_REG_00, 0x3F); //IC Rst start - es8374WriteReg(ES8374_REG_00, 0x03); //IC Rst stop - es8374WriteReg(ES8374_REG_01, 0x7F); //IC clk on - es8374WriteReg(ES8374_REG_02, 0x00); - es8374WriteReg(ES8374_REG_03, 0x20); - es8374WriteReg(ES8374_REG_04, 0x00); - es8374WriteReg(ES8374_REG_05, 0x11); //clk div set - if(PLL_SET_12288 == 1) - { - es8374WriteReg(ES8374_REG_6F, 0xA0); //pll set:mode enable - es8374WriteReg(ES8374_REG_72, 0x41); //pll set:mode set - es8374WriteReg(ES8374_REG_09, 0x01); //pll set:reset on ,set start - es8374WriteReg(ES8374_REG_0A, 0x8A); - es8374WriteReg(ES8374_REG_0B, 0x0C); - es8374WriteReg(ES8374_REG_0C, 0x00); - es8374WriteReg(ES8374_REG_0D, 0x00); - es8374WriteReg(ES8374_REG_0E, 0x00); - es8374WriteReg(ES8374_REG_09, 0x41); //pll set:reset off ,set stop - es8374WriteReg(ES8374_REG_02, 0x08); //pll set:use pll - es8374WriteReg(ES8374_REG_03, 0x30); //384 OSR - es8374WriteReg(ES8374_REG_04, 0x20); //384 OSR - } - es8374WriteReg(ES8374_REG_06, (RATIO >> 8)); //LRCK DIV - es8374WriteReg(ES8374_REG_07, (RATIO & 0xFF)); //LRCK DIV - es8374SetBitsPerSample(codecCfg->codecIface.bits); - es8374ConfigFmt(codecCfg->codecIface.fmt); - es8374WriteReg(ES8374_REG_0F, (((codecCfg->codecIface.mode == CODEC_MODE_SLAVE) ? 0 : 1) << 7) + (SCLK_INV<<5) + SCLK_DIV); - es8374WriteReg(ES8374_REG_24, 0x08 + (DMIC_GAIN << 7) + DMIC_SELON); //adc set - es8374WriteReg(ES8374_REG_36, (dacOutput << 6)); //dac set - es8374WriteReg(ES8374_REG_12, 0x30); //timming set - es8374WriteReg(ES8374_REG_13, 0x20); //timming set - es8374WriteReg(ES8374_REG_18, 0xFF); - es8374WriteReg(ES8374_REG_21, 0x50); - es8374WriteReg(ES8374_REG_22, ADC_PGA_GAIN + (ADC_PGA_GAIN << 4)); //adc set - es8374WriteReg(ES8374_REG_21, (adcInput << 4) + (ADC_PGA_DF2SE_15DB << 2)); - es8374WriteReg(ES8374_REG_00, 0x80); // IC START - delay_us(10000); - es8374WriteReg(ES8374_REG_14, 0x8A + (MICBIASOFF << 4)); - es8374WriteReg(ES8374_REG_15, 0x40); - es8374WriteReg(ES8374_REG_1A, 0xA0); // monoout set - es8374WriteReg(ES8374_REG_1B, 0x19); //5V 0DB - es8374WriteReg(ES8374_REG_1C, 0x90); - es8374WriteReg(ES8374_REG_1D, VDDSPK_VOLTAGE); //5V 0DB 8R=>1W - es8374WriteReg(ES8374_REG_1F, 0x00); // spk set - es8374WriteReg(ES8374_REG_20, 0x00); // spk set - es8374WriteReg(ES8374_REG_1E, 0x20); // spk on - delay_us(1000); - es8374WriteReg(ES8374_REG_1E, 0xa0); // spk on - es8374WriteReg(ES8374_REG_28, 0x00); // alc set - es8374WriteReg(ES8374_REG_25, ADC_VOLUME_DEFAULT); // ADCVOLUME on - es8374WriteReg(ES8374_REG_38, DAC_VOLUME_DEFAULT); // DACVOLUMEL on - es8374WriteReg(ES8374_REG_37, 0x00); // dac set - es8374WriteReg(ES8374_REG_6D, 0x60); // SEL:GPIO1=DMIC CLK OUT+SEL:GPIO2=PLL CLK OUT - - isHasPA = codecCfg->hasPA; - - return CODEC_EOK; -} - -void es8374DeInit() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374DeInit, P_DEBUG, "[ES8374] es8374DeInit"); - - halI2cDeInit(false); -} - -HalCodecSts_e es8374ConfigFmt(HalCodecIfaceFormat_e fmt) -{ - HalCodecSts_e ret = CODEC_EOK; - uint8_t adc = 0, dac = 0; - es8374ReadReg(ES8374_REG_10, &adc); - es8374ReadReg(ES8374_REG_11, &dac); - adc = adc & 0xdc; - dac = dac & 0xdc; - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374ConfigFmt, P_DEBUG, "[ES8374] es8374ConfigFmt: fmt=%d", fmt); - - switch (fmt) - { - case CODEC_MSB_MODE: - case CODEC_LSB_MODE: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374fmt_1, P_DEBUG, "[ES8374] left/right Format"); - adc |= 0x01; - dac |= 0x01; - break; - - case CODEC_I2S_MODE: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374fmt_2, P_DEBUG, "[ES8374] I2S Format"); - adc |= 0x00; - dac |= 0x00; - break; - - case CODEC_PCM_MODE: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374fmt_3, P_DEBUG, "[ES8374] pcm Format"); - adc |= 0x03; - dac |= 0x03; - break; - - default: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374fmt_5, P_DEBUG, "[ES8374] default Format (I2S)"); - adc |= 0x00; - dac |= 0x00; - break; - } - - ret |= es8374WriteReg(ES8374_REG_10, adc); - ret |= es8374WriteReg(ES8374_REG_11, dac); - - return ret; -} - -HalCodecSts_e es8374SetBitsPerSample(HalCodecIfaceBits_e bits) -{ - HalCodecSts_e ret = CODEC_EOK; - uint8_t adc = 0, dac = 0; - es8374ReadReg(ES8374_REG_10, &adc); - es8374ReadReg(ES8374_REG_11, &dac); - adc = adc & 0xe3; - dac = dac & 0xe3; - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374SetBitsPerSample, P_DEBUG, "[ES8374] es8374SetBitsPerSample: bits=%d", bits); - - switch (bits) - { - case CODEC_BIT_LENGTH_16BITS: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374SetBitsPerSample_1, P_DEBUG, "[ES8374] 16 bits"); - adc |= 0x0C; - dac |= 0x0C; - break; - - case CODEC_BIT_LENGTH_24BITS: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374SetBitsPerSample_2, P_DEBUG, "[ES8374] 24 bits"); - adc |= 0x00; - dac |= 0x00; - break; - - case CODEC_BIT_LENGTH_32BITS: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374SetBitsPerSample_3, P_DEBUG, "[ES8374] 32 bits"); - adc |= 0x10; - dac |= 0x10; - break; - - default: - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374SetBitsPerSample_5, P_DEBUG, "[ES8374] default bit length (16 bits)"); - adc |= 0x0C; - dac |= 0x0C; - break; - } - - ret |= es8374WriteReg(ES8374_REG_10, adc); - ret |= es8374WriteReg(ES8374_REG_11, dac); - - return ret; -} - -HalCodecSts_e es8374Config(HalCodecMode_e mode, HalCodecIface_t *iface) -{ - HalCodecSts_e ret = CODEC_EOK; - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374Config, P_DEBUG, "[ES8374] es8374Config: mode=%d, bits=%d, fmt=%d", mode, iface->bits, iface->fmt); - - ret |= es8374SetBitsPerSample(iface->bits); - ret |= es8374ConfigFmt(iface->fmt); - - return ret; -} - -HalCodecSts_e es8374StartStop(HalCodecMode_e mode, HalCodecCtrlState_e ctrlState) -{ - HalCodecSts_e ret = CODEC_EOK; - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374StartStop, P_DEBUG, "[ES8374] es8374StartStop: mode=%d, ctrlState=%d", mode, ctrlState); - switch(ctrlState) - { - case CODEC_CTRL_START: - ret |= es8374Start(mode); - if (isHasPA) - { - //es8374EnablePA(true); - } - break; - case CODEC_CTRL_STOP: - ret |= es8374Stop(mode); - break; - case CODEC_CTRL_RESUME: - ret |= es8374Resume(mode); - break; - case CODEC_CTRL_POWERDONW: - ret |= es8374PwrDown(mode); - break; - } - - - return ret; -} - -HalCodecSts_e es8374Start(HalCodecModule_e mode) -{ - HalCodecSts_e ret = CODEC_EOK; - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374Start, P_DEBUG, "[ES8374] es8374Start: mode=%d", mode); - - return ret; -} - -HalCodecSts_e es8374Stop(HalCodecModule_e mode) -{ - HalCodecSts_e ret = CODEC_EOK; - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374Stop, P_DEBUG, "[ES8374] es8374Stop: mode=%d", mode); - switch(mode) - { - case CODEC_MODE_ENCODE: - es8374AdcStandby(&adcVolBak); - break; - - case CODEC_MODE_DECODE: - es8374DacStandby(&dacVolBak); - if (isHasPA) - { - delay_us(2000); - //es8374EnablePA(false); - } - break; - - case CODEC_MODE_BOTH: - es8374Standby(&dacVolBak, &adcVolBak); - break; - - default: - break; - } - - return ret; -} - -HalCodecSts_e es8374Resume(HalCodecMode_e mode) -{ - HalCodecSts_e ret = CODEC_EOK; - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374Resume, P_DEBUG, "[ES8374] es8374Resume: mode=%d", mode); - switch(mode) - { - case CODEC_MODE_ENCODE: - //es8374AllResume(); - - es8374AdcResume(); - break; - - case CODEC_MODE_DECODE: - //es8374AllResume(); - - es8374DacResume(); - if (isHasPA) - { - //es8374EnablePA(true); - } - break; - - case CODEC_MODE_BOTH: - es8374AllResume(); - break; - - default: - break; - } - - return ret; -} - -HalCodecSts_e es8374SetVolume(HalCodecCfg_t* codecHalCfg, int volume) -{ - uint8_t level = volume; - uint8_t value = DAC_VOLUME_MUTE; - - if (level > 0) - { - level = (level > 100) ? 100 : level; - value = DAC_VOLUME_MIN - (level * DAC_VOLUME_MIN / 100); - } - - es8374WriteReg(ES8374_REG_38, value); - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374SetVolume, P_DEBUG, "[ES8374] es8374SetVolume: volume=%d, level=%d, value=%d", volume, level, value); - - return CODEC_EOK; -} - -HalCodecSts_e es8374GetVolume(HalCodecCfg_t* codecHalCfg, int *volume) -{ - uint8_t level = 0; - uint8_t value = 0; - es8374ReadReg(ES8374_REG_38, &value); - - if (value <= DAC_VOLUME_MIN) - { - level = 100 - (value * 100 / DAC_VOLUME_MIN); - level = (level == 0) ? 1 : level; - } - - *volume = level; - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374GetVolume, P_DEBUG, "[ES8374] es8374GetVolume: value=%d, level=%d", value, level); - - return CODEC_EOK; -} - -HalCodecSts_e es8374SetMute(HalCodecCfg_t* codecHalCfg, bool enable) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374SetMute, P_DEBUG, "[ES8374] es8374SetMute: enable=%d", enable); - - if (enable == true) - { - es8374WriteReg(ES8374_REG_36, 0x20); - } - else - { - es8374WriteReg(ES8374_REG_36, (dacOutput << 6)); - } - - return CODEC_EOK; -} - -HalCodecSts_e es8374GetVoiceMute(uint8_t *mute) -{ - //*mute = (es8374ReadReg(ES8374_REG_36) >> 5) & 0x01; - es8374ReadReg(ES8374_REG_36, mute); - *mute = (*mute >> 5) & 0x01; - - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374GetVoiceMute, P_DEBUG, "[ES8374] es8374GetVoiceMute: mute=%d", *mute); - - return CODEC_EOK; -} - -HalCodecSts_e es8374SetMicVolume(HalCodecCfg_t* codecHalCfg, uint8_t micGain, int micVolume) -{ - uint8_t level = micVolume; - uint8_t value = ADC_VOLUME_MUTE; - - if (level > 0) - { - level = (level > 100) ? 100 : level; - value = ADC_VOLUME_MIN - (level * ADC_VOLUME_MIN / 100); - } - - es8374WriteReg(ES8374_REG_25, value); - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374SetMicVolume, P_DEBUG, "[ES8374] es8374SetMicVolume: micVolume=%d, level=%d, value=%d", micVolume, level, value); - - return CODEC_EOK; -} - -void es8374ReadAll() -{ - uint8_t reg = 0; - -#ifdef FEATURE_OS_ENABLE - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374ReadAll_1, P_DEBUG, "[ES8374] es8374ReadAll Begin"); -#else - printf("[ES8374] es8374ReadAll Begin\r\n"); -#endif - - for (int i = 0; i < 0x6E; i++) - { - es8374ReadReg(i, ®); -#ifdef FEATURE_OS_ENABLE - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374ReadAll_2, P_DEBUG, "[ES8374] [%x] %x", reg, i); -#else - printf("[ES8374] [%02X] %02X\r\n", i, reg); -#endif - } - -#ifdef FEATURE_OS_ENABLE - DEBUG_PRINT(UNILOG_PLA_DRIVER, es8374ReadAll_3, P_DEBUG, "[ES8374] es8374ReadAll End"); -#else - printf("[ES8374] es8374ReadAll End\r\n"); -#endif -} - -HalCodecCfg_t es8374GetDefaultCfg() -{ - HalCodecCfg_t codecCfg = ES8374_DEFAULT_CONFIG(); - - return codecCfg; -} diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/codec/codecDev/tm8211.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/codec/codecDev/tm8211.c deleted file mode 100644 index c87d837..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/codec/codecDev/tm8211.c +++ /dev/null @@ -1,319 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2019-, Copyrigths of EigenComm Ltd. - * File name: tm8211.c - * Description: EC7xx tm8211 file - * History: Rev1.0 2021-9-18 - * - ****************************************************************************/ - -#include "tm8211.h" - - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ - -#define TM8211_DEFAULT_CONFIG() \ -{ \ - .codecIface = { \ - .mode = CODEC_MODE_SLAVE, \ - .fmt = CODEC_MSB_MODE, \ - .samples = CODEC_16K_SAMPLES, \ - .bits = CODEC_BIT_LENGTH_16BITS, \ - .channel = CODEC_MONO, \ - .polarity = 1, \ - }, \ -}; - - -/*----------------------------------------------------------------------------* - * DATA TYPE DEFINITION * - *----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCTION DECLEARATION * - *----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------* - * GLOBAL VARIABLES * - *----------------------------------------------------------------------------*/ - -// 8311 func list -HalCodecFuncList_t tm8211DefaultHandle = -{ - .codecType = TM8211, - .halCodecInitFunc = tm8211Init, - .halCodecDeinitFunc = tm8211DeInit, - .halCodecCtrlStateFunc = tm8211StartStop, - .halCodecCfgIfaceFunc = tm8211Config, - .halCodecSetMuteFunc = tm8211SetMute, - .halCodecSetVolumeFunc = tm8211SetVolume, - .halCodecGetVolumeFunc = tm8211GetVolume, - //.halCodecEnablePAFunc = tm8211EnablePA, - .halCodecSetMicVolumeFunc = tm8211SetMicVolume, - .halCodecLock = NULL, - .handle = NULL, - .halCodecGetDefaultCfg = tm8211GetDefaultCfg, -}; - - - -/*----------------------------------------------------------------------------* - * PRIVATE VARIABLES * - *----------------------------------------------------------------------------*/ - -static uint8_t dacVolBak, adcVolBak; -static bool isHasPA; - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCS * - *----------------------------------------------------------------------------*/ - -// set tm8211 into suspend mode -static void tm8211Standby(uint8_t* dacVolB, uint8_t* adcVolB) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, tm8211Standby, P_DEBUG, "[TM8211] tn8211Standby: dacVolB=%d, adcVolB=%d", *dacVolB, *adcVolB); -} - -// set tm8211 ADC into suspend mode -static void tm8211AdcStandby(uint8_t* adcVolB) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, tm8211AdcStandby, P_DEBUG, "[TM8211] tm8211AdcStandby"); -} - -// set tm8211 DAC into suspend mode -static void tm8211DacStandby(uint8_t* dacVolB) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, tm8211DacStandby, P_DEBUG, "[TM8211] tm8211DacStandby"); -} - -// set tm8211 into resume mode -static HalCodecSts_e tm8211AllResume() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, tm8211AllResume, P_DEBUG, "[TM8211] tm8211AllResume: dacVolBak=%d, adcVolBak=%d", dacVolBak, adcVolBak); - - return CODEC_EOK; -} - -// set tm8211 adc into resume mode -static HalCodecSts_e tm8211AdcResume() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, tm8211AdcResume, P_DEBUG, "[TM8211] tm8211AdcResume"); - - return CODEC_EOK; -} - -// set tm8211 dac into resume mode -static HalCodecSts_e tm8211DacResume() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, tm8211DacResume, P_DEBUG, "[TM8211] tm8211DacResume"); - - return CODEC_EOK; -} - -// set tm8211 into powerdown mode -static HalCodecSts_e tm8211PwrDown() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, tm8211PwrDown, P_DEBUG, "[TM8211] tm8211PwrDown"); - - return CODEC_EOK; -} - - -/*----------------------------------------------------------------------------* - * GLOBAL FUNCTIONS * - *----------------------------------------------------------------------------*/ - -// enable pa power -void tm8211EnablePA(bool enable) -{ - GPIO_pinWrite(CODEC_PA_GPIO_INSTANCE, 1 << CODEC_PA_GPIO_PIN, (enable == true) ? (1 << CODEC_PA_GPIO_PIN) : 0); - DEBUG_PRINT(UNILOG_PLA_DRIVER, tm8211EnablePA, P_DEBUG, "[TM8211] Set PA: %d", enable); -} - -HalCodecSts_e tm8211Init(HalCodecCfg_t *codecCfg) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, tm8211Init, P_DEBUG, "[TM8211] tm8211Init: hasPA=%d", codecCfg->hasPA); - - if (codecCfg->hasPA) - { - isHasPA = codecCfg->hasPA; - - // GPIO function select - PadConfig_t padConfig = {0}; - GpioPinConfig_t pinConfig = {0}; - - PAD_getDefaultConfig(&padConfig); - padConfig.mux = PAD_MUX_ALT0; - PAD_setPinConfig(CODEC_PA_PAD_INDEX, &padConfig); - - // CODEC_PA pin config - pinConfig.pinDirection = GPIO_DIRECTION_OUTPUT; - pinConfig.misc.initOutput = 0; // when codec has been init, PA should open - GPIO_pinConfig(CODEC_PA_GPIO_INSTANCE, CODEC_PA_GPIO_PIN, &pinConfig); - } - - return CODEC_EOK; -} - -void tm8211DeInit() -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, tm8211DeInit, P_DEBUG, "[TM8211] tm8211DeInit"); -} - -HalCodecSts_e tm8211Config(HalCodecMode_e mode, HalCodecIface_t *iface) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, tm8211Config, P_DEBUG, "[TM8211] tm8211Config"); - - return CODEC_EOK; -} - -HalCodecSts_e tm8211StartStop(HalCodecMode_e mode, HalCodecCtrlState_e ctrlState) -{ - HalCodecSts_e ret = CODEC_EOK; - - switch(ctrlState) - { - case CODEC_CTRL_START: - { - ret |= tm8211Start(mode); - if (isHasPA) - { - tm8211EnablePA(true); - } - } - break; - - case CODEC_CTRL_STOP: - ret |= tm8211Stop(mode); - break; - case CODEC_CTRL_RESUME: - ret |= tm8211Resume(mode); - break; - case CODEC_CTRL_POWERDONW: - ret |= tm8211PwrDown(mode); - break; - } - - - return ret; -} - -HalCodecSts_e tm8211Start(HalCodecMode_e mode) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, tm8211Start, P_DEBUG, "[TM8211] tm8211Start"); - - return CODEC_EOK; -} - -HalCodecSts_e tm8211Stop(HalCodecMode_e mode) -{ - HalCodecSts_e ret = CODEC_EOK; - switch(mode) - { - case CODEC_MODE_ENCODE: - tm8211AdcStandby(&adcVolBak); - break; - - case CODEC_MODE_DECODE: - { - tm8211DacStandby(&dacVolBak); - - // disable PA - if (isHasPA) - { - tm8211EnablePA(false); - } - } - break; - - case CODEC_MODE_BOTH: - tm8211Standby(&dacVolBak, &adcVolBak); - break; - - default: - break; - } - - return ret; -} - -HalCodecSts_e tm8211Resume(HalCodecMode_e mode) -{ - HalCodecSts_e ret = CODEC_EOK; - switch(mode) - { - case CODEC_MODE_ENCODE: - tm8211AdcResume(); - break; - - case CODEC_MODE_DECODE: - { - tm8211DacResume(); - - // enable PA - if (isHasPA) - { - tm8211EnablePA(true); - } - } - break; - - case CODEC_MODE_BOTH: - tm8211AllResume(); - break; - - default: - break; - } - - return ret; - -} - - - -HalCodecSts_e tm8211SetVolume(int volume) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, tm8211SetVolume, P_DEBUG, "[TM8211] tm8211SetVolume"); - - return CODEC_EOK; -} - -HalCodecSts_e tm8211GetVolume(int *volume) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, tm8211GetVolume, P_DEBUG, "[TM8211] tm8211GetVolume"); - - return CODEC_EOK; -} - -HalCodecSts_e tm8211SetMute(bool enable) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, tm8211SetMute, P_DEBUG, "[TM8211] tm8211SetMute"); - - return CODEC_EOK; -} - -HalCodecSts_e tm8211GetVoiceMute(int *mute) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, tm8211GetVoiceMute, P_DEBUG, "[TM8211] tm8211GetVoiceMute"); - - return CODEC_EOK; -} - -HalCodecSts_e tm8211SetMicVolume(uint8_t micGain, int micVolume) -{ - DEBUG_PRINT(UNILOG_PLA_DRIVER, tm8211SetMicVolume, P_DEBUG, "[TM8211] tm8211SetMicVolume"); - - return CODEC_EOK; -} - -HalCodecCfg_t tm8211GetDefaultCfg() -{ - HalCodecCfg_t codecCfg = TM8211_DEFAULT_CONFIG(); - - return codecCfg; -} - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/codec/codecDrv.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/codec/codecDrv.c deleted file mode 100644 index 0ae7d44..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/codec/codecDrv.c +++ /dev/null @@ -1,238 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2019-, Copyrigths of EigenComm Ltd. - * File name: hal_codec.c - * Description: EC7XX codec hal - * History: Rev1.0 2021-9-18 - * - ****************************************************************************/ - -#include "codecDrv.h" - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ - - -/*----------------------------------------------------------------------------* - * DATA TYPE DEFINITION * - *----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCTION DECLEARATION * - *----------------------------------------------------------------------------*/ - - -/*----------------------------------------------------------------------------* - * GLOBAL VARIABLES * - *----------------------------------------------------------------------------*/ -const AudioParaCfgCodec_t codecTlvDefaultVal = -{ - .isDmic = false, - .isExPa = true, - .exPaGain = 0, - .txDigGain = 0xbf, - .txAnaGain = 0x8, - - .rxDigGain0 = 0, - .rxAnaGain0 = 0, - .rxDigGain50 = 0, - .rxAnaGain50 = 0, - .rxDigGain100 = 0xff, - .rxAnaGain100 = 0xff, -}; - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCTIONS * - *----------------------------------------------------------------------------*/ - -#ifdef FEATURE_OS_ENABLE - -HalCodecSts_e halCodecLock(void* arg) -{ - osSemaphoreId_t codecLock = (osSemaphoreId_t)arg; - - if (osSemaphoreAcquire(codecLock, 1000) != osOK) - { - return CODEC_TIMEOUT; - } - return CODEC_EOK; -} - -HalCodecSts_e halCodecUnlock(void* arg) -{ - osSemaphoreId_t codecLock = (osSemaphoreId_t)arg; - - if (osSemaphoreRelease(codecLock) != osOK) - { - return CODEC_TIMEOUT; - } - return CODEC_EOK; -} - -HalCodecSts_e halCodecLockDestroy(void *arg) -{ - osSemaphoreId_t codecLock = (osSemaphoreId_t)arg; - - if (osSemaphoreDelete(codecLock) != osOK) - { - return CODEC_TIMEOUT; - } - return CODEC_EOK; -} - -#else - -HalCodecSts_e halCodecLock(void* arg) -{ - return CODEC_EOK; -} - -HalCodecSts_e halCodecUnlock(void* arg) -{ - return CODEC_EOK; -} - -HalCodecSts_e halCodecLockDestroy(void *arg) -{ - return CODEC_EOK; -} - -#endif - - -/*----------------------------------------------------------------------------* - * GLOBAL FUNCTIONS * - *----------------------------------------------------------------------------*/ - -HalCodecCfg_t halCodecGetDefaultCfg(HalCodecFuncList_t* codecHalFunc) -{ - return codecHalFunc->halCodecGetDefaultCfg(); -} - -HalCodecFuncList_t* halCodecInit(HalCodecCfg_t* codecHalCfg, HalCodecFuncList_t* codecHalFunc, bool needLock) -{ - HalCodecSts_e ret = CODEC_EOK; - HalCodecFuncList_t* codecHal = codecHalFunc; - -#ifdef FEATURE_OS_ENABLE - if (codecHal->halCodecLock == NULL) - { - codecHal->halCodecLock = osSemaphoreNew(1, 1, NULL); - if (codecHal->halCodecLock == PNULL) - { - DEBUG_PRINT(UNILOG_PLA_DRIVER, halCodecInit_0, P_WARNING, "codec hal can't create semaphore"); - return NULL; - } - } -#endif - - if (needLock) halCodecLock(codecHal->halCodecLock); - - ret |= codecHal->halCodecInitFunc(codecHalCfg); - if (ret != CODEC_EOK) - { - halCodecUnlock(codecHal->halCodecLock); - DEBUG_PRINT(UNILOG_PLA_DRIVER, halCodecInit_2, P_DEBUG, "codec init fail. ret=%d", ret); - EC_ASSERT(false, 0, 0, 0); - return NULL; - } - - codecHal->halCodecCfgIfaceFunc(codecHalCfg->codecMode, &codecHalCfg->codecIface); - - codecHal->handle = codecHal; - codecHalFunc->handle = codecHal; - if (needLock) halCodecUnlock(codecHal->halCodecLock); - return codecHal; -} - -HalCodecSts_e halCodecDeinit(HalCodecFuncList_t* codecHal) -{ - int32_t ret = CODEC_EOK; - - HAL_CODEC_CHECK_NULL(codecHal, "audio_hal handle is null", -1); - halCodecLockDestroy(codecHal->halCodecLock); - codecHal->halCodecDeinitFunc(); - codecHal->halCodecLock = NULL; - codecHal->handle = NULL; - codecHal = NULL; - return ret; -} - -HalCodecSts_e halCodecCtrlState(HalCodecFuncList_t* codecHal, HalCodecMode_e mode, HalCodecCtrlState_e codecStartStop, bool needLock) -{ - int32_t ret; - HAL_CODEC_CHECK_NULL(codecHal, "audio_hal handle is null", -1); - if (needLock) halCodecLock(codecHal->halCodecLock); - DEBUG_PRINT(UNILOG_PLA_DRIVER, halCodecCtrl_1, P_DEBUG, "codec mode=%d, startStop=%d", mode, codecStartStop); - ret = codecHal->halCodecCtrlStateFunc(mode, codecStartStop); - if (needLock) halCodecUnlock(codecHal->halCodecLock); - return ret; -} - -HalCodecSts_e halCodecIfaceCfg(HalCodecFuncList_t* codecHal, HalCodecMode_e mode, HalCodecIface_t *iface, bool needLock) -{ - int32_t ret = CODEC_EOK; - HAL_CODEC_CHECK_NULL(codecHal, "audio_hal handle is null", -1); - HAL_CODEC_CHECK_NULL(iface, "Get volume para is null", -1); - if (needLock) halCodecLock(codecHal->halCodecLock); - ret = codecHal->halCodecCfgIfaceFunc(mode, iface); - if (needLock) halCodecUnlock(codecHal->halCodecLock); - - return ret; -} - -HalCodecSts_e halCodecSetMute(HalCodecFuncList_t* codecHal, HalCodecCfg_t* codecHalCfg, bool mute, bool needLock) -{ - int32_t ret; - HAL_CODEC_CHECK_NULL(codecHal, "audio_hal handle is null", -1); - if (needLock) halCodecLock(codecHal->halCodecLock); - ret = codecHal->halCodecSetMuteFunc(codecHalCfg, mute); - if (needLock) halCodecUnlock(codecHal->halCodecLock); - return ret; -} - -#if 1 -HalCodecSts_e halCodecEnablePA(HalCodecFuncList_t* codecHal, bool enable, bool needLock) -{ - int32_t ret = CODEC_EOK; - HAL_CODEC_CHECK_NULL(codecHal, "audio_hal handle is null", -1); - if (needLock) halCodecLock(codecHal->halCodecLock); - codecHal->halCodecEnablePAFunc(enable); - if (needLock) halCodecUnlock(codecHal->halCodecLock); - return ret; -} -#endif - -HalCodecSts_e halCodecSetVolume(HalCodecFuncList_t* codecHal, HalCodecCfg_t* codecHalCfg, int volume, bool needLock) -{ - int32_t ret; - HAL_CODEC_CHECK_NULL(codecHal, "audio_hal handle is null", -1); - if (needLock) halCodecLock(codecHal->halCodecLock); - ret = codecHal->halCodecSetVolumeFunc(codecHalCfg, volume); - if (needLock) halCodecUnlock(codecHal->halCodecLock); - return ret; -} - -HalCodecSts_e halCodecGetVolume(HalCodecFuncList_t* codecHal, HalCodecCfg_t* codecHalCfg, int *volume, bool needLock) -{ - int32_t ret; - HAL_CODEC_CHECK_NULL(codecHal, "audio_hal handle is null", -1); - HAL_CODEC_CHECK_NULL(volume, "Get volume para is null", -1); - if (needLock) halCodecLock(codecHal->halCodecLock); - ret = codecHal->halCodecGetVolumeFunc(codecHalCfg, volume); - if (needLock) halCodecUnlock(codecHal->halCodecLock); - return ret; -} - -HalCodecSts_e halCodecSetMicVolume(HalCodecFuncList_t* codecHal, HalCodecCfg_t* codecHalCfg, uint8_t micGain, int volume, bool needLock) -{ - int32_t ret; - HAL_CODEC_CHECK_NULL(codecHal, "audio_hal handle is null", -1); - if (needLock) halCodecLock(codecHal->halCodecLock); - ret = codecHal->halCodecSetMicVolumeFunc(codecHalCfg, micGain, volume); - if (needLock) halCodecUnlock(codecHal->halCodecLock); - return ret; -} - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/eeprom/eepRom.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/eeprom/eepRom.c deleted file mode 100644 index 9967296..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/eeprom/eepRom.c +++ /dev/null @@ -1,315 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2020-, Copyrigths of EigenComm Ltd. - * File name: eepRom.c - * Description: EC618 eepRom ds2431 driver source file - * History: Rev1.0 2020-12-17 - * - ****************************************************************************/ -#include "ec7xx.h" -#include "bsp.h" -#include "eepRom.h" -#include "oneWire.h" -#include "string.h" -#include "stdio.h" - -extern void delay_us(uint32_t us); - -static uint16_t crc16Maxim(uint8_t *data, uint16_t len) -{ - uint8_t i; - uint16_t crc = 0; - while (len--) - { - crc ^= *data++; - for (i=0; i<8; ++i) - { - if (crc&1) - { - crc = (crc>>1) ^ 0xA001; - } - else - { - crc = crc>>1; - } - } - } - return ~crc; -} - - -int32_t writeScratchpad(uint8_t addr, uint8_t data[8]) -{ - uint8_t crcSrcData[11]; - uint16_t crcCalResult; - uint8_t crcReadData[2]; - - if ((data == NULL) || (addr > 0x8F)) - { - return EEPROMDRV_SCRATCHPADWRITE_ERR; - } - - if (owResetPd() != 0) - { - return EEPROMDRV_RESET_ERR; - } - - delay_us(140); // delay 200us - - owWriteByte(ROM_SKIP_CMD); - owWriteByte(SCRATCHPAD_WRITE_CMD); - owWriteByte(addr); - owWriteByte(0x00); - - crcSrcData[0] = SCRATCHPAD_WRITE_CMD; // before are right - crcSrcData[1] = addr; - crcSrcData[2] = 0x00; - for (int i=0; i<8; i++) - { - owWriteByte(data[i]); - crcSrcData[i+3] = data[i]; - } - - crcCalResult = crc16Maxim(crcSrcData, 11); // before are right - - owReadByte(crcReadData); - owReadByte(crcReadData+1); - - if (((crcReadData[1]<<8) | crcReadData[0]) != crcCalResult) - { - return EEPROMDRV_SCRATCHPADWRITE_ERR; - } - - return EEPROMDRV_OK; -} - -void readScratchpad(uint8_t dataBack[13]) -{ - if (owResetPd() != 0) - { - return; - } - - delay_us(140); // delay 200us - - owWriteByte(ROM_SKIP_CMD); - owWriteByte(SCRATCHPAD_READ_CMD); - - // first 3 bytes are: TA1, TA2, ES; Then 8 bytes data; Last are 2 bytes crc - for (int i=0; i<13; i++) - { - owReadByte(dataBack+i); - } -} - -int32_t copyScratchpad2Mem(uint16_t addr) -{ - uint8_t readData; - - if (owResetPd() != 0) - { - return EEPROMDRV_RESET_ERR; - } - - delay_us(140); // delay 200us - - owWriteByte(ROM_SKIP_CMD); - owWriteByte(SCRATCHPAD_COPY_CMD); - owWriteByte(addr); - owWriteByte(0x00); - owWriteByte(0x07); - - delay_us(140); // delay 200us - - owReadByte(&readData); - if (readData != 0xAA) - { - return EEPROMDRV_SCRATCHPADCOPY_ERR; - } - - return EEPROMDRV_OK; -} - -AP_PLAT_COMMON_BSS uint8_t dataBack[13]={0}; -int32_t dataCmp(uint8_t targetAddr, uint8_t* buffer, uint8_t len) -{ - // compare the data read from scratchpad - if (dataBack[0] != targetAddr) - { - return EEPROMDRV_SCRATCHPADWRITE_ERR; - } - - if (dataBack[1] != 0) - { - return EEPROMDRV_SCRATCHPADWRITE_ERR; - } - - if (dataBack[2] != 0x7) - { - return EEPROMDRV_SCRATCHPADWRITE_ERR; - } - - for (int j=0; j>=1; - } - - uint8_t dataRead; - for (i=0; i<8; i++) - { - owReadBit(&dataRead); - dataRead <<=1; - } -#endif - -#if 1 - int32_t result = owWriteByte(ROM_READ_CMD); - if (result < 0) - { - return EEPROMDRV_ROMREAD_ERR; - } - - for (int32_t i=0; i<8; i++) - { - owReadByte(romCode+i); - } -#endif - - return EEPROMDRV_OK; -} - -int32_t eePromReadMem(uint8_t targetAddr, uint8_t len, uint8_t* buffer) -{ - delay_us(3000); // wait unitl former write operations finish - - if (owResetPd() != 0) - { - return EEPROMDRV_RESET_ERR; - } - - delay_us(140); // delay 200us - - if (owWriteByte(ROM_SKIP_CMD) < 0) - { - return EEPROMDRV_ROMREAD_ERR; - } - - if (owWriteByte(MEM_READ_CMD) < 0) - { - return EEPROMDRV_ROMREAD_ERR; - } - - // write addr low byte - if (owWriteByte(targetAddr) < 0) - { - return EEPROMDRV_ROMREAD_ERR; - } - - // write addr high byte - if (owWriteByte(0) < 0) - { - return EEPROMDRV_ROMREAD_ERR; - } - - for (int i=0; i 0x88) - { - return EEPROMDRV_SCRATCHPADWRITE_ERR; - } - - while (len > 8) - { - for (i=0; i<8; i++) - { - tmp[i] = buffer[i+index]; - } - - len -= 8; - writeSctStats = writeScratchpad(targetAddr+index, tmp); - delay_us(3000); - readScratchpad(dataBack); - if (dataCmp(targetAddr+index, buffer+index, 8) != 0) - { - return EEPROMDRV_SCRATCHPADWRITE_ERR; - } - - copyScratchpad2Mem(targetAddr+index); - delay_us(3000); - memset(dataBack, 0, 13); - - index += 8; - } - - for (i=0; i -#include -#include -#include "bsp.h" -#include "ex_flash.h" -#include "sctdef.h" - - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ -#define TRANSFER_DATA_WIDTH (8) -#define SPI_SSN_GPIO_INSTANCE RTE_SPI0_SSN_GPIO_INSTANCE -#define SPI_SSN_GPIO_INDEX RTE_SPI0_SSN_GPIO_INDEX - - -/*----------------------------------------------------------------------------* - * DATA TYPE DEFINITION * - *----------------------------------------------------------------------------*/ - - - -/*----------------------------------------------------------------------------* - * GLOBAL VARIABLES * - *----------------------------------------------------------------------------*/ - -/** \brief driver instance declare */ -extern ARM_DRIVER_SPI Driver_SPI0; -AP_PLAT_COMMON_DATA static ARM_DRIVER_SPI *spiMasterDrv = &CREATE_SYMBOL(Driver_SPI, 0); -//volatile uint16_t gFid = 0; - - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCTION DECLEARATION * - *----------------------------------------------------------------------------*/ - -/** - \fn exSpiFlashIoIint(void) - \brief init SPI interface - \param[in] - \note - */ -static void exSpiFlashIoIint(void) -{ - // Initialize master spi - spiMasterDrv->Initialize(NULL); - // Power on - spiMasterDrv->PowerControl(ARM_POWER_FULL); - - // Configure master spi bus - spiMasterDrv->Control(ARM_SPI_MODE_MASTER | ARM_SPI_CPOL0_CPHA0 | ARM_SPI_DATA_BITS(TRANSFER_DATA_WIDTH) | - ARM_SPI_MSB_LSB | ARM_SPI_SS_MASTER_SW, 26000000U); -} - - -/** - \fn exSpiFlashIoDeIint(void) - \brief deinit SPI interface - \param[in] - \note - */ -static void exSpiFlashIoDeIint(void) -{ - // Initialize master spi - spiMasterDrv->Uninitialize(); - // Power on - spiMasterDrv->PowerControl(ARM_POWER_OFF); - -} - - - -/** - \fn exFlashSetSpiCsHigh(void) - \brief manual control CS PIN - \param[in] - \note - */ -static void exFlashSetSpiCsHigh(void) -{ - GPIO_pinWrite(SPI_SSN_GPIO_INSTANCE, 1 << SPI_SSN_GPIO_INDEX, 1 << SPI_SSN_GPIO_INDEX); -} - - - -/** - \fn exFlashSetSpiCsLow(void) - \brief manual control CS PIN - \param[in] - \note - */ -static void exFlashSetSpiCsLow(void) -{ - GPIO_pinWrite(SPI_SSN_GPIO_INSTANCE, 1 << SPI_SSN_GPIO_INDEX, 0); -} - - -/** - \fn exflashWrByte(void) - \brief Software SPI_Flash bus driver basic function, send a single byte to MOSI, - * and accept MISO data at the same time. used for both cmd/data send - \param[in] u8Data:Data sent on the MOSI data line - \note -*/ -static uint8_t exflashWrByte(uint8_t u8Data) -{ - uint8_t u8Out = 0; - - spiMasterDrv->Transfer(&u8Data, &u8Out, 1); - - return u8Out; -} - - - -/** - \fn exFlashWrEn(void) - \brief send wr en cmd to flash - \param[in] - \note - */ -static void exFlashWrEn(void) -{ - exFlashSetSpiCsLow(); - exflashWrByte(WRITE_ENABLE_CMD); - exFlashSetSpiCsHigh(); -} - - -/** - \fn exFlashWrDisen(void) - \brief send wr disen cmd to flash - \param[in] - \note - */ -static void exFlashWrDisen(void) -{ - exFlashSetSpiCsLow(); - exflashWrByte(WRITE_DISABLE_CMD); - exFlashSetSpiCsHigh(); -} - - - -/** - \fn exFlashPollingBusyFlag(void) - \brief read the BUSY field in flash reg and loop until done - \param[in] - \note - */ -static void exFlashPollingBusyFlag(void) -{ - uint8_t u8test; - exFlashSetSpiCsLow(); - - do - { - exflashWrByte(READ_STATUS_REG1_CMD); - u8test = exflashWrByte(Dummy_Byte1); - } while ((u8test & 0x01) == 0x01); - - exFlashSetSpiCsHigh(); -} - - - - - - - -/*----------------------------------------------------------------------------* - * GLOBAL FUNCTIONS * - *----------------------------------------------------------------------------*/ - - -/** - \fn exFlashChipErase(void) - \brief perform chip level erase, use with caution!! - \param[in] - \note -*/ -void exFlashChipErase(void) -{ - exFlashWrEn(); - exFlashPollingBusyFlag(); - exFlashSetSpiCsLow(); - exflashWrByte(CHIP_ERASE_CMD); - exFlashSetSpiCsHigh(); - exFlashPollingBusyFlag(); - exFlashWrDisen(); -} - - - -/** - \fn exFlashBlockErase(uint32_t u32Erase_Addr, uint8_t u8mode) - \brief perform block level erase - \param[in] u32Data_Addr :Block first address to start erasing - u8mode :Erase mode 1=32K other=64K - \note -*/ -void exFlashBlockErase(uint32_t u32Erase_Addr, uint8_t u8mode) -{ - exFlashWrEn(); - exFlashPollingBusyFlag(); - exFlashSetSpiCsLow(); - - if (u8mode == 1) - { - exflashWrByte(BLOCK_ERASE_32K_CMD); - } - else - { - exflashWrByte(BLOCK_ERASE_64K_CMD); - } - - exflashWrByte(u32Erase_Addr >> 16); - exflashWrByte(u32Erase_Addr >> 8); - exflashWrByte(u32Erase_Addr); - exFlashSetSpiCsHigh(); - exFlashPollingBusyFlag(); - exFlashWrDisen(); -} - - - -/** - \fn exFlashSectorErase(uint32_t u32Erase_Addr) - \brief perform sector level erase, normally sector is 4K - \param[in] u32Data_Addr :Block first address to start erasing - \note -*/ -void exFlashSectorErase(uint32_t u32Erase_Addr) -{ - exFlashWrEn(); - exFlashPollingBusyFlag(); - exFlashSetSpiCsLow(); - - exflashWrByte(SECTOR_ERASE_CMD); - - exflashWrByte(u32Erase_Addr >> 16); - exflashWrByte(u32Erase_Addr >> 8); - exflashWrByte(u32Erase_Addr); - exFlashSetSpiCsHigh(); - exFlashPollingBusyFlag(); - exFlashWrDisen(); -} - - - - - - -/** - \fn exFlashPagePro(void) - \brief starts writing data of up to 256 bytes at a specified address on one page (0~65535) - \param[in] u32ReadAddr Start reading address(24bit) - pu8Buffer:Data storage buffer - u16NumByteToWrite:The number of bytes to write (maximum 256), - * the number should not exceed the number of remaining bytes on the page!!! - \note -*/ -void exFlashPagePro(uint32_t u32WriteAddr, uint8_t *pu8Buffer, uint16_t u16NumByteToWrite) -{ - uint16_t i; - exFlashWrEn(); - exFlashSetSpiCsLow(); - exflashWrByte(PAGE_PROG_CMD); - exflashWrByte((uint8_t)((u32WriteAddr) >> 16)); - exflashWrByte((uint8_t)((u32WriteAddr) >> 8)); - exflashWrByte((uint8_t)u32WriteAddr); - - for (i = 0; i < u16NumByteToWrite; i++)exflashWrByte(pu8Buffer[i]); - - exFlashSetSpiCsHigh(); - exFlashPollingBusyFlag(); - exFlashWrDisen(); -} - - -/** - \fn exFlashReadMDID(void) - \brief reading device ID from flash - \param[in] - \note -*/ -uint16_t exFlashReadMDID(void) -{ - uint16_t u16Temp = 0; - /* Enable chip select */ - exFlashSetSpiCsLow(); - /* Send "RDID " instruction */ - exflashWrByte(READ_ID_CMD); - exflashWrByte(0x00); - exflashWrByte(0x00); - exflashWrByte(0x00); - /* Read a byte from the FLASH */ - u16Temp |= exflashWrByte(Dummy_Byte1) << 8; - u16Temp |= exflashWrByte(Dummy_Byte1); - /* Disable chip select */ - exFlashSetSpiCsHigh(); - return u16Temp; -} - - - - -/** - \fn uint8_t exFlashRead(uint8_t *pu8Buffer, uint32_t u32ReadAddr, uint16_t u16NumByteToRead) - \brief reading data of the specified length at the specified address - \param[in] u32ReadAddr Start reading address(24bit) - pu8Buffer Data storage buffer - u16NumByteToRead The number of bytes to read(max 65535) - \note -*/ -uint8_t exFlashRead(uint8_t *pu8Buffer, uint32_t u32ReadAddr, uint16_t u16NumByteToRead) -{ - uint16_t i; - exFlashSetSpiCsLow();/* Enable chip select */ - exflashWrByte(READ_CMD); - exflashWrByte(u32ReadAddr >> 16); - exflashWrByte(u32ReadAddr >> 8); - exflashWrByte(u32ReadAddr); - - for (i = 0; i < u16NumByteToRead; i++) - { - pu8Buffer[i] = exflashWrByte(Dummy_Byte1); //Read one byte - } - - exFlashSetSpiCsHigh();/* Disable chip select */ - - return EXFLASH_OK; -} - - - -/** - \fn exFlashErase(uint32_t eAddr, uint32_t size) - \brief Erases the flash region. use different erase cmd according to size - \param[in] eAddr addr to erase - size erase len - \note -*/ -uint8_t exFlashErase(uint32_t eAddr, uint32_t size) -{ - uint32_t offsetAddress; - uint32_t remainLen; - uint32_t currEraseSize; - - - if ((eAddr&0xfff) !=0) - { - return EXFLASH_ERROR; - } - - offsetAddress = eAddr; - remainLen = size; - - while(remainLen > 0) - { - if (((offsetAddress&0xffff) ==0) && (remainLen >=0x10000)) - { - exFlashBlockErase(offsetAddress,0); - remainLen -= 0x10000; - currEraseSize = 0x10000; - } - else if (((offsetAddress&0x7fff) ==0)&& (remainLen >=0x8000)) - { - exFlashBlockErase(offsetAddress,1); - remainLen-=0x8000; - currEraseSize = 0x8000; - } - else - { - exFlashSectorErase(offsetAddress); - currEraseSize = (remainLen >= 0x1000) ? 0x1000 : remainLen; - remainLen -= currEraseSize; - } - - offsetAddress += currEraseSize; - } - - return EXFLASH_OK; -} - - - - -/** - \fn exFlashWrite(uint8_t* pData, uint32_t WriteAddr, uint32_t size) - \brief Writes an amount of data to the QSPI flash. - \param[in] pData: Data Pointer to write - WriteAddr: Write start address - Size: Size of data to write - \note -*/ -uint8_t exFlashWrite(uint8_t* pData, uint32_t WriteAddr, uint32_t size) -{ - uint32_t end_addr, current_size, current_addr; - //uint32_t irqMask; - - // Calculation of the size between the write address and the end of the page - //write non-aligned bytes first - current_size = PAGE_SIZE - (WriteAddr%PAGE_SIZE); - - // Check if the size of the data is less than the remaining place in the page - if (current_size > size) - { - current_size = size; - } - - // Initialize the adress variables - current_addr = WriteAddr; - end_addr = WriteAddr + size; - - // Perform the write page by page - do - { - //irqMask = SaveAndSetIRQMask(); - - exFlashPagePro(current_addr,pData,current_size); - - // Update the address and size variables for next page programming - current_addr += current_size; - pData += current_size; - current_size = ((current_addr + PAGE_SIZE) > end_addr) ? (end_addr - current_addr) : PAGE_SIZE; - - //RestoreIRQMask(irqMask); - } while (current_addr < end_addr); - - return EXFLASH_OK; -} - - - - -/** - \fn exFlashInit(void) - \brief init the external spi flash - \param[in] - \note -*/ -uint8_t exFlashInit(void) -{ - - exSpiFlashIoIint(); - //gFid = exFlashReadMDID(); - - return EXFLASH_OK; -} - - -/** - \fn exFlashDeinit(void) - \brief deinit the external spi flash - \param[in] - \note -*/ -uint8_t exFlashDeinit(void) -{ - exSpiFlashIoDeIint(); - return EXFLASH_OK; -} - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/exstorage/ex_storage.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/exstorage/ex_storage.c deleted file mode 100644 index bc5ec71..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/exstorage/ex_storage.c +++ /dev/null @@ -1,482 +0,0 @@ -/****************************************************************************** - -*(C) Copyright 2018 EIGENCOMM International Ltd. - -* All Rights Reserved - -****************************************************************************** -* Filename: -* -* Description: -* -* History: initiated by xxxx -* -* Notes: -* -******************************************************************************/ - -/*----------------------------------------------------------------------------* - * INCLUDES * - *----------------------------------------------------------------------------*/ - -#include -#include -#include -#include -#include DEBUG_LOG_HEADER_FILE - -#include "mem_map.h" -#include "bsp.h" -#include "ex_flash.h" -#include "ex_storage.h" -#include "cmsis_os2.h" -#include "mw_aal_hash.h" - - - -/*----------------------------------------------------------------------------* - * MACROS * - *----------------------------------------------------------------------------*/ - -#define EXSTO_EF_DATA_ADDR (EF_DATA_LOAD_ADDR) -#define EXSTO_EF_DATA_SIZE (EF_DATA_LOAD_SIZE) - - -/*----------------------------------------------------------------------------* - * DATA TYPE DEFINITION * - *----------------------------------------------------------------------------*/ -typedef struct -{ - uint32_t handle; /* starting addr @NFS, otherwise fd @FS */ - uint32_t size; - uint32_t overhead; /* reserved zone size for a special purpose */ - uint32_t extras; /* some supplementary info */ -}ExStoZone_t; - -typedef struct -{ - ExStoZoneId_bm bmZoneId; - ExStoZone_t zone[EXSTO_ZONE_MAXNUM]; -}ExStoZoneMan_t; - - - -/*----------------------------------------------------------------------------* - * GLOBAL VARIABLES * - *----------------------------------------------------------------------------*/ - - -AP_PLAT_COMMON_BSS static ExStoZoneMan_t gExStoZoneMan; - - -/*----------------------------------------------------------------------------* - * PRIVATE FUNCTION DECLEARATION * - *----------------------------------------------------------------------------*/ - - - -/*----------------------------------------------------------------------------* - * GLOBAL FUNCTIONS * - *----------------------------------------------------------------------------*/ - - -/** - \fn uint8_t exStorageInit(void) - \brief init the external storage - \param[in] - \note -*/ -int32_t exStorageInit(void) -{ - gExStoZoneMan.bmZoneId |= EXSTO_BM_ZONE_EF_DATA; - gExStoZoneMan.zone[EXSTO_ZONE_EF_DATA].handle = EXSTO_EF_DATA_ADDR; - gExStoZoneMan.zone[EXSTO_ZONE_EF_DATA].size = EXSTO_EF_DATA_SIZE; - gExStoZoneMan.zone[EXSTO_ZONE_EF_DATA].overhead = 0; - gExStoZoneMan.zone[EXSTO_ZONE_EF_DATA].extras = 0; - - if(exFlashInit() == EXFLASH_OK) - return EXSTO_OK; - else - return EXSTO_EINIT; -} - - -/** - \fn int32_t exStorageDeinit(void) - \brief deinit the external storage - \param[in] - \note -*/ -int32_t exStorageDeinit(void) -{ - memset(&gExStoZoneMan, 0, sizeof(ExStoZoneMan_t)); - - if(exFlashDeinit() == EXFLASH_OK) - return EXSTO_OK; - else - return EXSTO_EDEINIT; -} - - -/** - \fn int32_t exStorageClear(uint32_t zid, uint32_t offset, uint32_t len) - \brief erase the area to be write - \param[in] zid resv for future use - offset erase start addr - len erase len - \note -*/ -int32_t exStorageClear(uint32_t zid, uint32_t offset, uint32_t len) -{ - uint32_t currLen = len; - - if(zid >= EXSTO_ZONE_MAXNUM) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_CLEAR_0, P_WARNING, "clr: invalid zoneId(%d)! max(%d)\n", - zid, EXSTO_ZONE_MAXNUM); - return EXSTO_EUNDEF; - } - - if(!(gExStoZoneMan.bmZoneId & (1 << zid))) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_CLEAR_1, P_WARNING, "clr: no exSto zone(%d)! bmZoneId(0x%x)\n", - zid, gExStoZoneMan.bmZoneId); - return EXSTO_EERASE; - } - - if(currLen > gExStoZoneMan.zone[zid].size) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_CLEAR_2, P_WARNING, "clr zone(%d): len(%d) overflowed! set it max(%d)!\n", - zid, currLen, gExStoZoneMan.zone[zid].size); - currLen = gExStoZoneMan.zone[zid].size; - } - - if(offset >= gExStoZoneMan.zone[zid].size) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_CLEAR_3, P_ERROR, "clr zone(%d): invalid offset(%d)! max(%d)\n", - zid, offset, gExStoZoneMan.zone[zid].size); - return EXSTO_EOVRFLOW; - } - - if(exFlashErase(gExStoZoneMan.zone[zid].handle + offset, len) == EXFLASH_OK) - return EXSTO_OK; - else - return EXSTO_EERASE; -} - - -/** - \fn int32_t exStorageWrite(uint32_t zid, uint32_t offset, uint8_t *buf, uint32_t bufLen) - \brief write data of the specified length at the specified address - \param[in] zid resv for future use - offset write start addr - buf write buf - bufLen write len - \note -*/ -int32_t exStorageWrite(uint32_t zid, uint32_t offset, uint8_t *buf, uint32_t bufLen) -{ - uint32_t currLen = bufLen; - uint8_t *rdPtr = NULL; - int32_t ret = 0; - - if(zid >= EXSTO_ZONE_MAXNUM) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_WRITE_0, P_WARNING, "wr: invalid zoneId(%d)! max(%d)\n", - zid, EXSTO_ZONE_MAXNUM); - return EXSTO_EUNDEF; - } - - if(!(gExStoZoneMan.bmZoneId & (1 << zid))) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_WRITE_1, P_WARNING, "wr: no exSto zone(%d)! bmZoneId(0x%x)\n", - zid, gExStoZoneMan.bmZoneId); - return EXSTO_EWRITE; - } - - if(currLen > gExStoZoneMan.zone[zid].size) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_WRITE_2, P_WARNING, "wr zone(%d): len(%d) overflowed! set it max(%d)!\n", - zid, currLen, gExStoZoneMan.zone[zid].size); - currLen = gExStoZoneMan.zone[zid].size; - } - - if(offset >= gExStoZoneMan.zone[zid].size) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_WRITE_3, P_ERROR, "wr zone(%d): invalid offset(%d)! max(%d)\n", - zid, offset, gExStoZoneMan.zone[zid].size); - return EXSTO_EOVRFLOW; - } - - //step1 write to flash - if(exFlashWrite(buf, gExStoZoneMan.zone[zid].handle + offset, currLen) != EXFLASH_OK) - return EXSTO_EWRITE; - - //step2 read back and check - rdPtr = mallocEc(currLen); - if(rdPtr == NULL) - { - return EXSTO_EMALLOC; - } - - if(exFlashRead(rdPtr, gExStoZoneMan.zone[zid].handle + offset, currLen) != EXFLASH_OK) - return EXSTO_EREAD; - - ret = memcmp(buf,rdPtr,currLen); - freeEc(rdPtr); - - return ret ? EXSTO_EWRITE : EXSTO_OK; -} - - -/** - \fn int32_t exStorageRead(uint32_t zid, uint32_t offset, uint8_t *buf, uint32_t bufLen) - \brief reading data of the specified length at the specified address - \param[in] zid resv for future use - offset read start addr - buf read buf - bufLen read len - \note -*/ -int32_t exStorageRead(uint32_t zid, uint32_t offset, uint8_t *buf, uint32_t bufLen) -{ - uint32_t currLen = bufLen; - - if(zid >= EXSTO_ZONE_MAXNUM) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_READ_0, P_WARNING, "rd: invalid zoneId(%d)! max(%d)\n", - zid, EXSTO_ZONE_MAXNUM); - return EXSTO_EUNDEF; - } - - if(!(gExStoZoneMan.bmZoneId & (1 << zid))) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_READ_1, P_WARNING, "rd: no exSto zone(%d)! bmZoneId(0x%x)\n", - zid, gExStoZoneMan.bmZoneId); - return EXSTO_EWRITE; - } - - if(currLen > gExStoZoneMan.zone[zid].size) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_READ_2, P_WARNING, "rd zone(%d): len(%d) overflowed! set it max(%d)!\n", - zid, currLen, gExStoZoneMan.zone[zid].size); - currLen = gExStoZoneMan.zone[zid].size; - } - - if(offset >= gExStoZoneMan.zone[zid].size) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_READ_3, P_ERROR, "rd zone(%d): invalid offset(%d)! max(%d)\n", - zid, offset, gExStoZoneMan.zone[zid].size); - return EXSTO_EOVRFLOW; - } - - if(exFlashRead(buf, gExStoZoneMan.zone[zid].handle + offset, currLen) == EXFLASH_OK) - return EXSTO_OK; - else - return EXSTO_EREAD; -} - -/** - * @brief exStorageGetZid(uint32_t addr, uint32_t *size, uint32_t *offset); - * @details get the es zid according starting address and size of the zone - * - * @param addr the starting addr of the zone - * @param size the size of the zone - * @param offset the offset to starting addr of the zone - * @return the zone ID. - */ -uint32_t exStorageGetZid(uint32_t addr, uint32_t *size, uint32_t *offset) -{ - uint32_t zid = EXSTO_ZONE_EF_DATA; - uint32_t zsz = EXSTO_EF_DATA_SIZE; - - if(!size) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_GET_ZID_1, P_ERROR, "get zid: null size ptr!\n"); - goto GET_ZID_END; - } - - if(!addr && !(*size)) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_GET_ZID_2, P_SIG, "get zid: set it default(%d: %d)!\n", zid, zsz); - goto GET_ZID_END; - } - - switch(addr) - { - case EXSTO_EF_DATA_ADDR: - { - zid = EXSTO_ZONE_EF_DATA; - zsz = EXSTO_EF_DATA_SIZE; - break; - } - - default: - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_GET_ZID_3, P_WARNING, "get zid: unknown starting addr(0x%x)!\n", addr); - break; - } - } - -GET_ZID_END: - if(!(*size)) - { - *size = zsz; - } - else - { - if(*size != zsz) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_STO_GET_ZID_4, P_WARNING, "get zid: in_size(%d) != zone_size(%d)!\n", *size, zsz); - } - } - - if(offset) *offset = 0; - - return zid; -} - - -/** - * @brief exStorageGetSize(uint32_t zid, uint8_t isOvhdExcl) - * @details get the nvm size of specific exstorage zone - * - * @param zid zone Id of exstorage zone - * @param isOvhdExcl overhead size of the zone is excluded or not - * @return the size of zone. - */ -uint32_t exStorageGetSize(uint32_t zid, uint8_t isOvhdExcl) -{ - if(zid >= EXSTO_ZONE_MAXNUM) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_GET_SZ_0, P_WARNING, "get size: invalid zoneId(%d)! max(%d)\n", - zid, EXSTO_ZONE_MAXNUM); - return EXSTO_EUNDEF; - } - - if(!(gExStoZoneMan.bmZoneId & (1 << zid))) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_GET_SZ_1, P_WARNING, "get size: no exSto zone(%d)! bmZoneId(0x%x)\n", - zid, gExStoZoneMan.bmZoneId); - return EXSTO_EWRITE; - } - - return (gExStoZoneMan.zone[zid].size - (isOvhdExcl ? gExStoZoneMan.zone[zid].overhead : 0)); -} - - -/** - * @brief exStorageVerifyPkg(uint32_t *pkgState) - * @details validate the data pkg - * - * @param pkgState the last state of data pkg - * @return 0 succ; < 0 failure with errno. - */ -int32_t exStorageVerifyPkg(uint32_t zid, uint8_t *hash, uint32_t pkgSize, uint32_t *pkgState) -{ - int32_t retCode = EXSTO_EUNDEF; - uint8_t *buffer = NULL; - uint8_t isLast = 0; - uint32_t offset = 0; - uint32_t readSize = 0; - uint32_t remnSize = pkgSize; - uint32_t stepSize = 4096; - uint8_t outHash[32] = {0}; - MwAalSha256Ctx_t sha256; - - /* no need to verify the pkg */ - if(!hash) return EXSTO_OK; - - if(zid >= EXSTO_ZONE_MAXNUM) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_VERIFY_PKG_1, P_WARNING, "verify pkg: invalid zoneId(%d)! max(%d)\n", - zid, EXSTO_ZONE_MAXNUM); - return EXSTO_EUNDEF; - } - - if(!(gExStoZoneMan.bmZoneId & (1 << zid))) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_VERIFY_PKG_2, P_WARNING, "verify pkg: no exSto zone(%d)! bmZoneId(0x%x)\n", - zid, gExStoZoneMan.bmZoneId); - return EXSTO_EWRITE; - } - - mwAalInitSha256(&sha256, 0); - - buffer = (uint8_t*)mallocEc(stepSize); - if(buffer == NULL) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_VERIFY_PKG_3, P_WARNING, "verify pkg: zone(%d) malloc(%d) failure!\n", - zid, stepSize); - goto VERIFY_PKG_END; - } - - - for(offset = 0; offset < pkgSize; offset += readSize) - { - if(remnSize > stepSize) - { - isLast = 0; - readSize = stepSize; - } - else - { - isLast = 1; - readSize = remnSize; - } - remnSize -= readSize; - - if(EXSTO_OK != exStorageRead(zid, offset, buffer, readSize)) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_VERIFY_PKG_4, P_WARNING, "zid(%d) flash read failure!\n", zid); - goto VERIFY_PKG_END; - } - - if(0 != mwAalUpdateSha256(&sha256, buffer, outHash, readSize, isLast)) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, EX_VERIFY_PKG_5, P_ERROR, "zid(%d) flash sha256sum fail!\n", zid); - goto VERIFY_PKG_END; - } - } - - if(memcmp(outHash, hash, 32)) - { - ECPLAT_DUMP(UNILOG_PLA_DRIVER, EX_VERIFY_PKG_6, P_WARNING, "input hash: ", 32, hash); - ECPLAT_DUMP(UNILOG_PLA_DRIVER, EX_VERIFY_PKG_7, P_WARNING, "calc hash : ", 32, outHash); - } - else - { - retCode = EXSTO_OK; - } - -VERIFY_PKG_END: - if(buffer) freeEc(buffer); - - mwAalDeinitSha256(&sha256); - - if(pkgState) - { - *pkgState = 0; - } - - return retCode; -} - -/** - * @brief exStorageGetUpdResult(uint32_t zid, int32_t *pkgState) - * @details get the updated result - * - * @param pkgState the last state of data pkg - * @return 0 succ; < 0 failure with errno. - */ -int32_t exStorageGetUpdResult(uint32_t zid, int32_t *pkgState) -{ - if(pkgState) - { - *pkgState = 0; - } - - return 1; -} - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/lcd/disFormat.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/lcd/disFormat.c deleted file mode 100644 index dd63bee..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/lcd/disFormat.c +++ /dev/null @@ -1,284 +0,0 @@ -#include -#include -#include -#include -#include -#include "bsp.h" -#include "bsp_custom.h" -#include "lcdDrv.h" -#include "lcdComm.h" -/** - \fn - \brief - \return -*/ -void yuv422ToRgb565(const void* inbuf, void* outbuf, int width, int height) -{ - const uint8_t* yuv422_buf = (const uint8_t*)inbuf; - uint16_t* rgb565_buf = (uint16_t*)outbuf; - - for (int row = 0; row < height; row++) { - for (int col = 0; col < width; col++) { - // Extract Y, U, and V components - int y = *yuv422_buf++; - int u = *yuv422_buf++; - int v = *yuv422_buf++; - - // Convert YUV to RGB - int r = y + ((v - 128) * 1404) / 1000; - int g = y - ((u - 128) * 343) / 1000 - ((v - 128) * 711) / 1000; - int b = y + ((u - 128) * 1772) / 1000; - - // Clamp RGB values to the valid range - r = (r < 0) ? 0 : ((r > 255) ? 255 : r); - g = (g < 0) ? 0 : ((g > 255) ? 255 : g); - b = (b < 0) ? 0 : ((b > 255) ? 255 : b); - - // Convert RGB to 565 format - uint16_t r5 = (r * 249 + 1014) >> 11; - uint16_t g6 = (g * 253 + 505) >> 10; - uint16_t b5 = (b * 249 + 1014) >> 11; - - // Combine RGB components into a 16-bit value - uint16_t rgb565 = (r5 << 11) | (g6 << 5) | b5; - - // Store the RGB565 value in the output buffer - *rgb565_buf++ = rgb565; - } - } -} -/** - \fn - \brief - \return -*/ -void yuv420ToRgb565(const void* inbuf, void* outbuf, int width, int height) { - const uint8_t* yuv420_buf = (const uint8_t*)inbuf; - uint16_t* rgb565_buf = (uint16_t*)outbuf; - - int y_size = width * height; - int uv_size = y_size / 4; - const uint8_t* y_plane = yuv420_buf; - const uint8_t* u_plane = yuv420_buf + y_size; - const uint8_t* v_plane = u_plane + uv_size; - - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - int y_index = y * width + x; - int uv_index = (y / 2) * (width / 2) + (x / 2); - - // Extract Y, U, and V components - int yy = y_plane[y_index]; - int uu = u_plane[uv_index] - 128; - int vv = v_plane[uv_index] - 128; - - // Convert YUV to RGB - int r = yy + vv + ((vv * 103) >> 8); - int g = yy - ((uu * 88) >> 8) - ((vv * 183) >> 8); - int b = yy + uu + ((uu * 198) >> 8); - - // Clamp RGB values to the valid range - r = (r < 0) ? 0 : ((r > 255) ? 255 : r); - g = (g < 0) ? 0 : ((g > 255) ? 255 : g); - b = (b < 0) ? 0 : ((b > 255) ? 255 : b); - - // Convert RGB to 565 format - uint16_t r5 = (r * 249 + 1014) >> 11; - uint16_t g6 = (g * 253 + 505) >> 10; - uint16_t b5 = (b * 249 + 1014) >> 11; - - // Combine RGB components into a 16-bit value - uint16_t rgb565 = (r5 << 11) | (g6 << 5) | b5; - - // Store the RGB565 value in the output buffer - *rgb565_buf++ = rgb565; - } - } -} -/** - \fn - \brief - \return -*/ -void rgb565ToYuv422(const void* inbuf, void* outbuf, int width, int height) { - const uint16_t* rgb565 = (const uint16_t*)inbuf; - uint8_t* yuv422 = (uint8_t*)outbuf; - - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - uint16_t rgb = *rgb565++; - uint8_t r = (rgb >> 11) & 0x1F; - uint8_t g = (rgb >> 5) & 0x3F; - uint8_t b = rgb & 0x1F; - - // Convert RGB to YUV - int yy = ((66 * r + 129 * g + 25 * b + 128) >> 8) + 16; - int uu = ((-38 * r - 74 * g + 112 * b + 128) >> 8) + 128; - int vv = ((112 * r - 94 * g - 18 * b + 128) >> 8) + 128; - - // Clamp YUV values to the valid range - yy = (yy < 0) ? 0 : ((yy > 255) ? 255 : yy); - uu = (uu < 0) ? 0 : ((uu > 255) ? 255 : uu); - vv = (vv < 0) ? 0 : ((vv > 255) ? 255 : vv); - - // Store YUV values - *yuv422++ = yy; - if (x % 2 == 0) { - *yuv422++ = uu; - *yuv422++ = vv; - } - } - } -} -/** - \fn - \brief - \return -*/ -void rgb565ToYuv420(const void* inbuf, void* outbuf, int width, int height) { - const uint16_t* rgb565 = (const uint16_t*)inbuf; - uint8_t* yuv420 = (uint8_t*)outbuf; - uint8_t* yplane = yuv420; - uint8_t* uplane = yuv420 + width * height; - uint8_t* vplane = uplane + ((width + 1) / 2) * ((height + 1) / 2); - - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - uint16_t rgb = *rgb565++; - uint8_t r = (rgb >> 11) & 0x1F; - uint8_t g = (rgb >> 5) & 0x3F; - uint8_t b = rgb & 0x1F; - - // Convert RGB to YUV - int yy = ((66 * r + 129 * g + 25 * b + 128) >> 8) + 16; - int uu = ((-38 * r - 74 * g + 112 * b + 128) >> 8) + 128; - int vv = ((112 * r - 94 * g - 18 * b + 128) >> 8) + 128; - - // Clamp YUV values to the valid range - yy = (yy < 0) ? 0 : ((yy > 255) ? 255 : yy); - uu = (uu < 0) ? 0 : ((uu > 255) ? 255 : uu); - vv = (vv < 0) ? 0 : ((vv > 255) ? 255 : vv); - - // Store YUV values - *yplane++ = yy; - if (y % 2 == 0 && x % 2 == 0) { - *uplane++ = uu; - if (x < width - 1) { - *vplane++ = vv; - } - } - } - } -} - -/** - \fn - \brief - \return -*/ - -// Define RGB565 and YCbCr pixel structures -typedef struct { - uint16_t rgb; // 5 bits for R, 6 bits for G, 5 bits for B -} RGB565Pixel; - -// Define RGB888 and YCbCr pixel structures -typedef struct { - uint8_t r; - uint8_t g; - uint8_t b; -} RGB888Pixel; - -typedef struct { - uint8_t y; - uint8_t cb; - uint8_t cr; -} YCbCrPixel; - -// Function to convert RGB565 to RGB888 -RGB888Pixel rgb565ToRgb888(RGB565Pixel rgb565) { - RGB888Pixel rgb888; - rgb888.r = (rgb565.rgb >> 11) & 0x1F; // Red component - rgb888.g = (rgb565.rgb >> 5) & 0x3F; // Green component - rgb888.b = rgb565.rgb & 0x1F; // Blue component - - // Scale up to 8 bits - rgb888.r = (rgb888.r << 3) | (rgb888.r >> 2); - rgb888.g = (rgb888.g << 2) | (rgb888.g >> 4); - rgb888.b = (rgb888.b << 3) | (rgb888.b >> 2); - - return rgb888; -} - -// Function to convert RGB888 to YCbCr -YCbCrPixel rgb888ToYCbCr(RGB888Pixel rgb888) { - YCbCrPixel ycbcr; - ycbcr.y = (uint8_t)( 0.299 * rgb888.r + 0.587 * rgb888.g + 0.114 * rgb888.b); - ycbcr.cb = (uint8_t)(-0.169 * rgb888.r - 0.331 * rgb888.g + 0.500 * rgb888.b + 128); - ycbcr.cr = (uint8_t)( 0.500 * rgb888.r - 0.419 * rgb888.g - 0.081 * rgb888.b + 128); - return ycbcr; -} - -// Function to convert RGB565 to YCbCr -void rgb565ToYCbCr(const void* inbuf, void* outbuf, int width, int height) { - const RGB565Pixel* inRGB565 = (const RGB565Pixel*)inbuf; - YCbCrPixel* outYCbCr = (YCbCrPixel*)outbuf; - - for (int y = 0; y < height; ++y) { - for (int x = 0; x < width; ++x) { - RGB565Pixel rgb565 = inRGB565[y * width + x]; - - // Convert RGB565 to RGB888 - RGB888Pixel rgb888 = rgb565ToRgb888(rgb565); - - // Convert RGB888 to YCbCr - YCbCrPixel ycbcr = rgb888ToYCbCr(rgb888); - - // Store YCbCr in the output buffer - outYCbCr[y * width + x] = ycbcr; - } - } -} - -// Function to convert YCbCr to RGB888 -RGB888Pixel yCbCrToRgb888(YCbCrPixel ycbcr) { - RGB888Pixel rgb888; - int r = ycbcr.y + ((ycbcr.cr - 128) * 1.402); - int g = ycbcr.y - ((ycbcr.cb - 128) * 0.344) - ((ycbcr.cr - 128) * 0.714); - int b = ycbcr.y + ((ycbcr.cb - 128) * 1.772); - - // Clamp the RGB values to the valid range [0, 255] - rgb888.r = (r < 0) ? 0 : ((r > 255) ? 255 : r); - rgb888.g = (g < 0) ? 0 : ((g > 255) ? 255 : g); - rgb888.b = (b < 0) ? 0 : ((b > 255) ? 255 : b); - - return rgb888; -} - -// Function to convert RGB888 to RGB565 -RGB565Pixel rgb888ToRgb565(RGB888Pixel rgb888) { - RGB565Pixel rgb565; - rgb565.rgb = ((rgb888.r >> 3) << 11) | ((rgb888.g >> 2) << 5) | (rgb888.b >> 3); - return rgb565; -} - -// Function to convert YCbCr to RGB565 -void yCbCrToRgb565(const void* inbuf, void* outbuf, int width, int height) { - const YCbCrPixel* inYCbCr = (const YCbCrPixel*)inbuf; - RGB565Pixel* outRGB565 = (RGB565Pixel*)outbuf; - - for (int y = 0; y < height; ++y) { - for (int x = 0; x < width; ++x) { - YCbCrPixel ycbcr = inYCbCr[y * width + x]; - - // Convert YCbCr to RGB888 - RGB888Pixel rgb888 = yCbCrToRgb888(ycbcr); - - // Convert RGB888 to RGB565 - RGB565Pixel rgb565 = rgb888ToRgb565(rgb888); - - // Store RGB565 in the output buffer - outRGB565[y * width + x] = rgb565; - } - } -} \ No newline at end of file diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/lcd/lcdComm.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/lcd/lcdComm.c deleted file mode 100644 index 2ecd5dd..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/lcd/lcdComm.c +++ /dev/null @@ -1,746 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#include "bsp.h" -#include "bsp_custom.h" -#include "lspi.h" -#include "lcdDrv.h" -#include "lcdComm.h" -#include "timer.h" -#ifdef FEATURE_OS_ENABLE -#include "osasys.h" -#include "cmsis_os2.h" -#endif -#include "sctdef.h" - - -extern void slpManAONIOPowerOn(void); -AP_PLAT_COMMON_DATA lspiDrvInterface_t *lcdDrv = &lspiDrvInterface2; -AP_PLAT_COMMON_BSS int32_t lcdDmaTxCh = 0; -AP_PLAT_COMMON_BSS static lcdUspCb userUspCb = NULL; -AP_PLAT_COMMON_BSS static lcdUspCb userDmaCb = NULL; -PLAT_FM_ZI DmaDescriptor_t __ALIGNED(16) lcdDmaTxDesc[DMA_DESC_MAX]; -extern lcdDrvFunc_t* lcdDevHandle; -AP_PLAT_COMMON_DATA DmaTransferConfig_t lcdDmaTxCfg = -{ - NULL, - (void *)&(LSPI2->TFIFO), - DMA_FLOW_CONTROL_TARGET, - DMA_ADDRESS_INCREMENT_SOURCE, - DMA_DATA_WIDTH_FOUR_BYTES, - DMA_BURST_32_BYTES, - DMA_BULK_NUM -}; - -void lcdDrvDelay(uint32_t ms) -{ -#ifdef FEATURE_OS_ENABLE - if (ms < 1) - { - osDelay(1); - } - else - { - osDelay(ms); - } -#else - extern void delay_us(uint32_t us); - delay_us(ms*1000); -#endif -} - -static void uspIrqCb(void) -{ - LSPI2->STAS |= (1<<31); - if (lcdDevHandle->uspIrq4CamCb) - { - lcdDevHandle->uspIrq4CamCb(lcdDevHandle); - } - - if (lcdDevHandle->uspIrq4FillCb) - { - lcdDevHandle->uspIrq4FillCb(lcdDevHandle); - } - - if (userUspCb) - { - userUspCb(); - } -} - -static void dmaIrqCb(uint32_t event) -{ - switch(event) - { - case DMA_EVENT_END: - { - //isFrameDmaWaiting = false; - - if(userDmaCb) - { - userDmaCb(event); - } - - break; - } - - case DMA_EVENT_ERROR: - break; - default: - break; - } -} - -int dmaInit(lcdDmaCb cb) -{ - if (lcdDmaTxCh) - { - DMA_closeChannel(DMA_INSTANCE_MP,lcdDmaTxCh); - } - - lcdDmaTxCh = DMA_openChannel(DMA_INSTANCE_MP); - if (ARM_DMA_ERROR_CHANNEL_ALLOC == lcdDmaTxCh) - { - EC_ASSERT(0,0,0,0); - } - - if(cb) - { - userDmaCb = cb; - } - - DMA_setChannelRequestSource(DMA_INSTANCE_MP, lcdDmaTxCh, DMA_REQUEST_USP2_TX); - DMA_rigisterChannelCallback(DMA_INSTANCE_MP, lcdDmaTxCh, dmaIrqCb); - DMA_enableChannelInterrupts(DMA_INSTANCE_MP, lcdDmaTxCh, DMA_END_INTERRUPT_ENABLE); - return lcdDmaTxCh; -} - -void dmaStartStop(bool start) -{ - if(start) - { - DMA_loadChannelDescriptorAndRun(DMA_INSTANCE_MP, lcdDmaTxCh, lcdDmaTxDesc); - } - else - { - DMA_stopChannel(DMA_INSTANCE_MP, lcdDmaTxCh, false); - } -} - -void lcdEnable() -{ - lspiBusSel.lspiBusEn = 1; // choose lspi bus - lspiCtrl.enable = 1; - lcdDrv->ctrl(LSPI_CTRL_BUS_SEL, 0); - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); -} - - -#if defined TYPE_EC718M - -void lcdMspiSet(uint8_t enable, uint8_t addrLane, uint8_t dataLane, uint8_t instruction) -{ - lspiMspiCtrl.mspiEn = enable; - lspiMspiCtrl.mspiAddrLane = addrLane; - lspiMspiCtrl.mspiDataLane = dataLane; - lspiMspiCtrl.mspiInst = instruction; - lcdDrv->ctrl(LSPI_MSPI_CTRL, 0); -} - -void lcdMspiHsyncSet(uint8_t hsyncAddr, uint8_t hsyncInst, uint16_t vbpNum, uint16_t vfpNum) -{ - lspiVsyncCtrl.hsyncAddr = hsyncAddr; - lspiVsyncCtrl.hsyncInst = hsyncInst; - lspiVsyncCtrl.vbp = vbpNum; - lspi8080Ctrl.vfp = vfpNum; - lcdDrv->ctrl(LSPI_VSYNC_CTRL, 0); - lcdDrv->ctrl(LSPI_8080_CTRL, 0); -} - -void lcdMspiVsyncSet(uint8_t vsyncEnable, uint8_t vsyncInst, uint8_t lspiDiv) -{ - lspiMspiCtrl.mspiVsyncEn = vsyncEnable; - lspiMspiCtrl.mspiInst = vsyncInst; - lspiMspiCtrl.vsyncLineCycle = (40000*70)/(1000*lspiDiv) + 100; - lcdDrv->ctrl(LSPI_MSPI_CTRL, 0); -} - -void lcdCsnHighCycleMin(uint8_t lspiDiv) -{ - lspiCmdAddr.csnHighCycleMin = (500*70)/(1000*lspiDiv) + 10; - lcdDrv->ctrl(LSPI_CTRL_CMD_ADDR, 0); -} -#endif - -void lcdInterfaceType(uint8_t type) -{ -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) - switch(type) - { - case SPI_3W_I: - lspiCtrl.busType = 0; - lspiCtrl.line4 = 0; - break; - case SPI_3W_II: - lspiCtrl.busType = 1; - lspiCtrl.line4 = 0; - break; - case SPI_4W_I: - lspiCtrl.busType = 0; - lspiCtrl.line4 = 1; - break; - case SPI_4W_II: - lspiCtrl.busType = 1; - lspiCtrl.line4 = 1; - break; - default: - lspiCtrl.busType = 1; - lspiCtrl.line4 = 1; - } - -#if (SPI_2_DATA_LANE == 1) - lspiCtrl.data2Lane = 1; -#endif - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - -#else // CHIP 719 - switch(type) - { - case SPI_3W_I: - lspiCmdAddr.busType = 0; - lspiCtrl.line4 = 0; - break; - case SPI_3W_II: - lspiCmdAddr.busType = 1; - lspiCtrl.line4 = 0; - break; - case SPI_4W_I: - lspiCmdAddr.busType = 0; - lspiCtrl.line4 = 1; - break; - case SPI_4W_II: - lspiCmdAddr.busType = 1; - lspiCtrl.line4 = 1; - break; - case MSPI_4W_II: - #if (LCD_INTERFACE_MSPI == 1) - lcdMspiSet(1, 0, 0, DEFAULT_INST); - #endif - break; - case INTERFACE_8080: - // config cpol cpha - *(uint32_t*)0x4d042028 |= (1<<4) | (1<<5); - lspi8080Ctrl.lspi8080En = 1; - break; - default: - lspiCmdAddr.busType = 1; - lspiCtrl.line4 = 1; - } - -#if (SPI_2_DATA_LANE == 1) - lspiCtrl.dspiEn = 1; - lspiCtrl.dspiCfg = 2; -#endif - - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - lcdDrv->ctrl(LSPI_CTRL_CMD_ADDR, 0); - lcdDrv->ctrl(LSPI_8080_CTRL, 0); -#endif -} - -int lspiDefaultCfg(lcdDrvFunc_t *lcd, lcdUspCb cb, uint32_t freq, uint8_t bpp) -{ - lcdDrv->init(); - lcdDrv->powerCtrl(LSPI_POWER_FULL); - - lcdDrv->ctrl(LSPI_CTRL_BUS_SPEED, freq); - lspiCtrl.datSrc = 1; // 0: data from camera; 1: data from memory - - switch (bpp) - { - case 12: // rgb444 - { - lspiCtrl.colorModeIn = 3; // RGB565 - lspiCtrl.colorModeOut = 0; // RGB444 - } - break; - - case 16: // rgb565 - { - lspiCtrl.colorModeIn = 3; // RGB565 - lspiCtrl.colorModeOut = 1; // RGB565 - } - break; - - case 18: // rgb666 - { - lspiCtrl.colorModeIn = 3; // RGB565 - lspiCtrl.colorModeOut = 2; // RGB565 - } - break; - -#if defined TYPE_EC718M - case 24: // rgb888 - { - lspiCtrl.colorModeIn = 4; // RGB888 - lspiCtrl.colorModeOut = 6; // RGB888 - } - break; -#endif - case 1: - break; - - case 2: - break; - - case 8: - break; - - default: - EC_ASSERT(0,0,0,0); - break; - } - - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); -#if defined TYPE_EC718M - lcdDrv->ctrl(LSPI_PRE_PARA0_CTRL, 0); - lcdDrv->ctrl(LSPI_POST_PARA0_CTRL, 0); -#endif - lcdEnable(); - - if(cb) - { - userUspCb = cb; - lspiIntCtrl.lspiRamWrEndEn = 1; - lcdDrv->ctrl(LSPI_CTRL_INT_CTRL, 0); - XIC_SetVector(PXIC0_USP2_IRQn, uspIrqCb); - XIC_EnableIRQ(PXIC0_USP2_IRQn); - } - - lspiDataFmt.wordSize = 31; - lspiDataFmt.txPack = 0; - lspiInfo.frameHeight = lcd->height; // frame input height - lspiInfo.frameWidth = lcd->width; // frame input width - lspiFrameInfoOut.frameHeightOut = lcd->height; // frame output height - lspiFrameInfoOut.frameWidthOut = lcd->width; // frame output width - lcdDrv->ctrl(LSPI_CTRL_DATA_FORMAT, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO_OUT, 0); - return 0; -} - -int lcdDmaTrans(lcdDrvFunc_t *lcd, void *sourceAddress, uint32_t totalLength) -{ - uint32_t res = 0, patch = 0; - int dmaChainCnt = 0, ret = 0; - - if(lcd == NULL || sourceAddress == NULL) - { - EC_ASSERT(0,0,0,0); - } - - res = totalLength; - - if( totalLength % 4) - { - res += (4 - totalLength%4); - } - - // step1: config lspi - lspiDmaCtrl.txDmaReqEn = 1; - lspiDmaCtrl.dmaWorkWaitCycle = 15; - lcdDrv->ctrl(LSPI_CTRL_DMA_CTRL, 0); - lspiCmdCtrl.wrRdn = 1; // 1: wr 0: rd - lspiCmdCtrl.ramWr = 1; // start ramwr -#if (defined TYPE_EC718M) - #if (SPI_2_DATA_LANE == 1) - lspiCmdCtrl.ramWrHaltMode = 0; - #else - lspiCmdCtrl.ramWrHaltMode = 1; // maintain cs as low between cmd and data - #endif -#endif - -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) - uint32_t tmp = 0; - - #if (SPI_2_DATA_LANE == 1) - tmp = res/2; - #endif - - if (tmp >= 0x3ffff) - { - lspiCmdCtrl.dataLen = 0x3ffff; // infinate - } - else - { - #if (SPI_2_DATA_LANE == 1) - lspiCmdCtrl.dataLen = res/2; - #else - lspiCmdCtrl.dataLen = res; - #endif - } -#elif (defined TYPE_EC718M) - if (totalLength >= 0x3fffff) - { - lspiCmdCtrl.dataLen = 0x3fffff; // infinate - } - else - { - #if (SPI_2_DATA_LANE == 1) - lspiCmdCtrl.dataLen = res/2; - #else - if (lcd->bpp == 24) - { - lspiCmdCtrl.dataLen = res/(lcd->bpp/8+1); - } - else - { - lspiCmdCtrl.dataLen = res/(lcd->bpp/8); - } - #endif - } -#endif - - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - - // step2: config DMA - lcdDmaTxCfg.totalLength = DMA_BULK_NUM; - lcdDmaTxCfg.addressIncrement = DMA_ADDRESS_INCREMENT_SOURCE; - lcdDmaTxCfg.targetAddress = (void *)&(LSPI2->TFIFO); - lcdDmaTxCfg.sourceAddress = (void *)sourceAddress; - - patch = DMA_BULK_NUM - res%DMA_BULK_NUM; - dmaChainCnt = (res + patch) / DMA_BULK_NUM; - uint32_t package = DMA_BULK_NUM; - - if (patch % dmaChainCnt == 0) - { - package -= (patch / dmaChainCnt); - lcdDmaTxCfg.totalLength = package; - DMA_buildDescriptorChain(lcdDmaTxDesc, &lcdDmaTxCfg, dmaChainCnt, true, true, true); - ret += dmaChainCnt; - res -= dmaChainCnt * package; - } - else - { - dmaChainCnt -= 1; - res -= dmaChainCnt * DMA_BULK_NUM; - lcdDmaTxCfg.totalLength = res; - DMA_buildDescriptorChain(lcdDmaTxDesc, &lcdDmaTxCfg, 1, false, false, false); - - lcdDmaTxCfg.sourceAddress = (void *)sourceAddress + ret * DMA_BULK_NUM + res; - lcdDmaTxCfg.totalLength = DMA_BULK_NUM; - DMA_buildDescriptorChain(lcdDmaTxDesc+1, &lcdDmaTxCfg, dmaChainCnt, true, true, true); - ret += dmaChainCnt; - } - - //GPIO_pinWrite(0, 1 << 12, 0); - dmaStartStop(true); - return ret; -} - -void lspiFifoWrite(uint32_t data) -{ - lspiDmaCtrl.txDmaReqEn = 0; - lcdDrv->ctrl(LSPI_CTRL_DMA_CTRL, 0); - - lspiCmdCtrl.wrRdn = 1; // 1: wr 0: rd - lspiCmdCtrl.ramWr = 1; - lspiCmdCtrl.dataLen = 2; - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - LSPI2->STAS |= (1<<31); - - if(lspiDataFmt.txFifoEndianMode) - { - LSPI2->TFIFO = (data >> 16)|(data << 16); - } - else - { - LSPI2->TFIFO = data; - } -} - -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) -static void leftShift1Bit(uint8_t *data, uint8_t dataLen) -{ - #define READ_REG_MSB 0x80 - #define READ_REG_LSB 0x01 - - for (int i = 1; i <= dataLen; i++) - { - data[i-1] = data[i-1] << 1; - - if (i < dataLen && data[i] & READ_REG_MSB) - { - data[i-1] = data[i-1] | READ_REG_LSB; - } - } -} -#endif - -// dataLen includes dummyLen -void lspiReadReg(uint8_t addr, uint8_t *data, uint16_t dataLen, uint8_t dummyCycleLen) -{ - if( data == NULL) return; - -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) - uint8_t index=0, remainder=0, outputLen=dataLen, tmp1[20]={0}; - - #if (LCD_AXS15231_ENABLE == 1) - PadConfig_t config1; - // config gpio36 - PAD_getDefaultConfig(&config1); - config1.mux = RTE_USP2_DIN_FUNC; - PAD_setPinConfig(RTE_USP2_DIN_PAD_ADDR, &config1); - lspiCtrl.busType = 1; // 0: type1, sda inout; 1:type2, sda input, sdo output - #endif - - lspiCmdAddr.addr = addr; - lspiCmdCtrl.wrRdn = 0; // 1: wr 0: rd - lspiCmdCtrl.dataLen = dataLen; - lcdDrv->ctrl(LSPI_CTRL_CMD_ADDR, 0); - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - while (!LSPI2->LSPI_STAT); - - for (int i = 0; i < dataLen; i++) - { - tmp1[i] = LSPI2->RFIFO; - } - - if (dummyCycleLen > 0) - { - index = dummyCycleLen / 8; - remainder = dummyCycleLen % 8; - outputLen = dataLen - (index + ((remainder > 0)? 1 : 0)); - - memcpy(&tmp1[0], &tmp1[index], outputLen + ((remainder > 0)? 1 : 0)); - - for (int j = 0; j < remainder; j++) - { - leftShift1Bit(tmp1, outputLen+1); - } - } - - memcpy(data, tmp1, outputLen); - -#elif (defined TYPE_EC718M) - uint32_t dummyRead; - - if (LCD_INTERFACE == MSPI_4W_II) - { - #if (LCD_INTERFACE_MSPI == 1) - // read test - lcdMspiSet(1, 0, 0, 0x03); // 1wire read: 0x03 - - // config gpio36 - //PadConfig_t config; - PadConfig_t config2; - PAD_getDefaultConfig(&config2); - config2.mux = RTE_USP2_SDI_FUNC; - PAD_setPinConfig(RTE_USP2_SDI_PAD_ADDR, &config2); - - lspiCmdAddr.addr = addr; - //lspiCmdAddr.busType = 1; - lspiCmdCtrl.wrRdn = 0; // 1: wr 0: rd - lspiCmdCtrl.rdatDummyCycle = dummyCycleLen; - lspiCmdCtrl.dataLen = 1; - lcdDrv->ctrl(LSPI_CTRL_CMD_ADDR, 0); - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - - while ((LSPI2->LSPI_STAT & LSPI_STATS_RX_FIFO_LEVEL_Msk) == 0); - - for (int j = 0; j < dummyCycleLen/8; j++) - { - dummyRead = LSPI2->RFIFO; - (void)dummyRead; - } - - for (int i = 0; i < dataLen; i++) - { - data[i] = LSPI2->RFIFO; - } - #endif - } - else - { - lspiCmdAddr.addr = addr; - lspiCmdCtrl.wrRdn = 0; // 1: wr 0: rd - lspiCmdCtrl.rdatDummyCycle = dummyCycleLen; - lspiCmdCtrl.dataLen = dataLen; - lcdDrv->ctrl(LSPI_CTRL_CMD_ADDR, 0); - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - while (!LSPI2->LSPI_STAT); - - for (int j = 0; j < dummyCycleLen/8; j++) - { - dummyRead = LSPI2->RFIFO; - (void)dummyRead; - } - - for (int i = 0; i < dataLen; i++) - { - data[i] = LSPI2->RFIFO; - } - } -#endif -} - -void lspiReadRam(uint32_t *data, uint32_t dataLen) -{ - if (data == NULL) return; - -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) - - lspiCmdAddr.addr = 0x3E; // RDMEMC - lspiCmdCtrl.wrRdn = 0; - lspiCmdCtrl.rdatDummyCycle = 1; - lspiCmdCtrl.dataLen = dataLen+1; - lcdDrv->ctrl(LSPI_CTRL_CMD_ADDR, 0); - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - while (!LSPI2->LSPI_STAT); - uint32_t dummy = LSPI2->RFIFO; - (void)dummy; - for (int i = 0; i < dataLen; i++) - { - data[i] = LSPI2->RFIFO; - } -#elif (defined TYPE_EC718M) - -#endif -} - -void lcdWriteData(uint8_t data) -{ - lcdDrv->prepareSend(data); -} - -void lcdWriteCmd(uint8_t cmd) -{ - lspiCmdAddr.addr = cmd; - lcdDrv->ctrl(LSPI_CTRL_CMD_ADDR, 0); -} - -void lspiCmdSend(uint8_t cmd, uint8_t *data, uint8_t dataLen) -{ - lspiCmdAddr.addr = cmd; - lcdDrv->ctrl(LSPI_CTRL_CMD_ADDR, 0); - - for (uint8_t i = 0; i < dataLen; i++) - { - lcdDrv->prepareSend(data[i]); - } - lcdDrv->send(NULL, 0); -} - -void lcdRst(uint32_t highMs, uint32_t lowMs) -{ - LCD_RST_LOW; - lcdDrvDelay(lowMs); - LCD_RST_HIGH; - lcdDrvDelay(highMs); -} - - -#if (BK_USE_GPIO == 1) -void lcdGpioBkLevel(uint8_t level) -{ - if (level > 0) - { - GPIO_pinWrite(LCD_BK_GPIO_INSTANCE, 1 << LCD_BK_GPIO_PIN, 1 << LCD_BK_GPIO_PIN); - - } - else - { - GPIO_pinWrite(LCD_BK_GPIO_INSTANCE, 1 << LCD_BK_GPIO_PIN, 0); - } -} -#endif - -#if (BK_USE_PWM == 1) -AP_PLAT_COMMON_BSS volatile static uint32_t gpwmCnt = 0; -AP_PLAT_COMMON_BSS static bool isPwmOn = false; - -uint32_t millis(void) -{ - return gpwmCnt; -} - -static void pwmISR(void) -{ - if (TIMER_getInterruptFlags(LCD_PWM_INSTANCE) & TIMER_MATCH0_INTERRUPT_FLAG) - { - TIMER_clearInterruptFlags(LCD_PWM_INSTANCE, TIMER_MATCH0_INTERRUPT_FLAG); - gpwmCnt++; - - #ifdef FEATURE_SUBSYS_GUI_LVGL_ENABLE - lv_tick_inc(1); - #endif - } -} - -// level: 0~100 -uint8_t lcdPwmBkLevel(uint8_t level) -{ - if (level == 0) - { - TIMER_stop(LCD_PWM_INSTANCE); - goto END; - } - - if (level > 100) - { - level = 100; - } - - // turn on TIMER first - if (!isPwmOn) - { - TIMER_start(LCD_PWM_INSTANCE); - isPwmOn = true; - } - - TIMER_updatePwmDutyCycle(LCD_PWM_INSTANCE, level); - -END: - return level; -} - -static void lcdPwmBkInit(void) -{ - PadConfig_t config; - PAD_getDefaultConfig(&config); - config.mux = LCD_PWM_PAD_ALT_SEL; - config.driveStrength = PAD_DRIVE_STRENGTH_LOW; - PAD_setPinConfig(LCD_PWM_OUT_PAD, &config); - CLOCK_setClockSrc(LCD_PWM_CLOCK_ID, LCD_PWM_CLOCK_SOURCE); - CLOCK_setClockDiv(LCD_PWM_CLOCK_ID, 1); - TIMER_driverInit(); - TimerPwmConfig_t gLcdPwmConfig; - gLcdPwmConfig.pwmFreq_HZ = 1000; - gLcdPwmConfig.srcClock_HZ = GPR_getClockFreq(LCD_PWM_CLOCK_ID); - gLcdPwmConfig.stopOption = TIMER_PWM_STOP_LOW; - gLcdPwmConfig.dutyCyclePercent = 0; - - TIMER_setupPwm(LCD_PWM_INSTANCE, &gLcdPwmConfig); - - TIMER_interruptConfig(LCD_PWM_INSTANCE, TIMER_MATCH0_INTERRUPT, TIMER_INTERRUPT_LEVEL); - TIMER_interruptConfig(LCD_PWM_INSTANCE, TIMER_MATCH1_INTERRUPT, TIMER_INTERRUPT_DISABLE); - TIMER_interruptConfig(LCD_PWM_INSTANCE, TIMER_MATCH2_INTERRUPT, TIMER_INTERRUPT_DISABLE); - - XIC_SetVector(LCD_PWM_INSTANCE_IRQ, pwmISR); - XIC_EnableIRQ(LCD_PWM_INSTANCE_IRQ); -} - -void lcdPwmBkDeInit(void) -{ - TIMER_stop(LCD_PWM_INSTANCE); - TIMER_deInit(LCD_PWM_INSTANCE); -} - -#endif - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/lcd/lcdDev/lcdDev_15231.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/lcd/lcdDev/lcdDev_15231.c deleted file mode 100644 index 2d89594..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/lcd/lcdDev/lcdDev_15231.c +++ /dev/null @@ -1,483 +0,0 @@ -#include "bsp.h" -#include "lcdDrv.h" -#include "lcdComm.h" -#include "lcdDev_15231.h" -#include "sctdef.h" - -#define LCD_MADCTL 0x36 - - -extern lspiDrvInterface_t *lcdDrv; -//static uint8_t s_MADCTL = 0x0; -AP_PLAT_COMMON_BSS static uint16_t previewWidth; -AP_PLAT_COMMON_BSS static uint16_t previewHeight; -AP_PLAT_COMMON_BSS static uint32_t fillLen; -extern lcdIoCtrl_t lcdIoCtrlParam; - -AP_PLAT_COMMON_DATA static initLine_t initTable15231[] = -{ -#if 1 - {0xBB, 8, {0x00,0x00,0x00,0x00,0x00,0x00,0x5A,0xA5}}, - {0xA0, 17, {0xC0,0x10,0x00,0x02,0x00,0x00,0x64,0x3F,0x20,0x05,0x3F,0x3F,0x00,0x00,0x00,0x00,0x00}}, - {0xA2, 31, {0x31,0x3C,0x29,0x14,0xFF,0xA6,0xCB,0xE0,0x40,0x19,0x80,0x80,0x80,0x20,0xf9,0x10,0x02,0xff,0xff,0xF0,0x90,0x01,0x32,0xA0,0x91,0x40,0x20,0x7F,0xFF,0x00,0x14}}, - {0xD0, 30, {0xE0,0x40,0x51,0x24,0x08,0x05,0x10,0x01,0x04,0x14,0xC2,0x42,0x22,0x22,0xAA,0x03,0x10,0x12,0x60,0x14,0x1E,0x51,0x15,0x00,0xFF,0x10,0x00,0x03,0x3D,0x12}}, - {0xA3, 22, {0xA0,0x06,0xAa,0x00,0x08,0x02,0x0A,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x55,0x55}}, - {0xA4, 16, {0x85,0x85,0x95,0x82,0xAF,0xED,0xED,0x80,0x10,0x30,0x40,0x40,0x20,0x50,0x60,0x35}}, - {0xC1, 30, {0x33,0x04,0x02,0x02,0x71,0x05,0x27,0x55,0x02,0x00,0x41,0x00,0x53,0xFF,0xFF,0xFF,0x4F,0x52,0x00,0x4F,0x52,0x00,0x45,0x3B,0x0B,0x02,0x0D,0x00,0xFF,0x40}}, - {0xC3, 11, {0x00,0x00,0x00,0x50,0x03,0x00,0x00,0x00,0x01,0x80,0x01}}, - {0xC4, 29, {0x00,0x24,0x33,0x80,0x00,0xea,0x64,0x32,0xC8,0x64,0xC8,0x32,0x90,0x90,0x11,0x06,0xDC,0xFA,0x00,0x00,0x80,0xFE,0x10,0x10,0x00,0x0A,0x0A,0x44,0x50}}, - {0xC5, 23, {0x18,0x00,0x00,0x03,0xFE,0x50,0x38,0x20,0x30,0x10,0x88,0xDE,0x0D,0x08,0x0F,0x0F,0x01,0x50,0x38,0x20,0x10,0x10,0x00}}, - {0xC6, 20, {0x05,0x0A,0x05,0x0A,0x00,0xE0,0x2E,0x0B,0x12,0x22,0x12,0x22,0x01,0x03,0x00,0x02,0x6A,0x18,0xC8,0x22}}, - {0xC7, 27, {0x50,0x32,0x28,0x00,0xa2,0x80,0x8f,0x00,0x80,0xff,0x07,0x11,0x9c,0x67,0xff,0x28,0x0c,0x0d,0x0e,0x0f,0x01,0x01,0x01,0x01,0x3F,0x07,0xFF}}, - {0xC9, 4, {0x33,0x44,0x44,0x01}}, - {0xCF, 27, {0x2C,0x1E,0x88,0x58,0x13,0x18,0x56,0x18,0x1E,0x68,0x88,0x00,0x65,0x09,0x22,0xC4,0x0C,0x77,0x22,0x44,0xAA,0x55,0x08,0x08,0x12,0xA0,0x08}}, - {0xD5, 30, {0x38,0x38,0x89,0x01,0x35,0x04,0x92,0x6F,0x04,0x92,0x6F,0x04,0x08,0x6A,0x04,0x46,0x03,0x03,0x03,0x03,0x00,0x01,0x03,0x00,0xE0,0x51,0xa1,0x00,0x00,0x00}}, - {0xD6, 30, {0x10,0x32,0x54,0x76,0x98,0xBA,0xDC,0xFE,0x93,0x00,0x01,0x83,0x07,0x07,0x00,0x07,0x07,0x00,0x03,0x03,0x03,0x03,0x03,0x03,0x00,0x84,0x00,0x20,0x01,0x00}}, - {0xD7, 19, {0x03,0x01,0x0b,0x09,0x0f,0x0d,0x1E,0x1F,0x18,0x1d,0x1f,0x19,0x38,0x38,0x04,0x00,0x1d,0x40,0x1F}}, - {0xD8, 12, {0x02,0x00,0x0a,0x08,0x0e,0x0c,0x1E,0x1F,0x18,0x1d,0x1f,0x19}}, - {0xD9, 12, {0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F}}, - {0xDD, 12, {0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F}}, - {0xDF, 8, {0x44,0x73,0x4B,0x69,0x00,0x0A,0x02,0x90}}, - {0xE0, 17, {0x3B,0x00,0x0f,0x14,0x0c,0x03,0x11,0x26,0x4b,0x21,0x0d,0x36,0x13,0x2a,0x2f,0x28,0x0D}}, - {0xE1, 17, {0x37,0x00,0x0f,0x14,0x0b,0x03,0x11,0x26,0x4b,0x21,0x0d,0x36,0x13,0x2a,0x2D,0x28,0x0F}}, - {0xE2, 17, {0x3B,0x07,0x12,0x18,0x0E,0x0D,0x17,0x35,0x44,0x32,0x0C,0x14,0x14,0x36,0x3A,0x0F,0x0D}}, - {0xE3, 17, {0x37,0x07,0x12,0x18,0x0E,0x0D,0x17,0x35,0x44,0x32,0x0C,0x14,0x14,0x36,0x32,0x2F,0x0F}}, - {0xE4, 17, {0x3B,0x07,0x12,0x18,0x0E,0x0D,0x17,0x39,0x44,0x2E,0x0C,0x14,0x14,0x36,0x3A,0x2F,0x0D}}, - {0xE5, 17, {0x37,0x07,0x12,0x18,0x0E,0x0D,0x17,0x39,0x44,0x2E,0x0C,0x14,0x14,0x36,0x3A,0x2F,0x0F}}, - {0xBB, 8, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}, - {0x11, 1, {0}}, - {0x29, 1, {0}}, -#endif - {0xff, 1, {120}}, - - //{0xbb, 8, {0x00,0x00,0x00,0x00,0x00,0x00,0x5a,0xa5}}, - //{0xa0, 1, {0x29}}, -}; - -/* - sx: start x - sy: start y - ex: end x - ey: end y -*/ -static uint32_t axs15231AddrSet(lcdDrvFunc_t *lcd, uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey) -{ - uint8_t set_x_cmd[] = {sx>>8, sx, ex>>8, ex}; - lspiCmdSend(0x2A, set_x_cmd, sizeof(set_x_cmd)); - previewWidth = ex - sx + 1; - - uint8_t set_y_cmd[] = {sy>>8, sy, ey>>8, ey}; - lspiCmdSend(0x2B, set_y_cmd, sizeof(set_y_cmd)); - previewHeight = ey - sy + 1; - - lcdWriteCmd(0x2C); - - fillLen = (ey-sy+1) * (ex-sx+1) * (AXS15231_BPP/8); - return fillLen; -} - - -void axs15231HandleUspIrq4Cam(lcdDrvFunc_t *lcd) -{ - lspiCtrl.enable = 0; - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - - LSPI2->DMACTL |= 1<<25; // tx fifo - - lspiCtrl.enable = 1; - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - - lspiCmdCtrl.wrRdn = 1; // 1: wr 0: rd - lspiCmdCtrl.ramWr = 1; // start ramwr -#if (SPI_2_DATA_LANE == 1) - lspiCmdCtrl.dataLen = fillLen/2; // 2 datalane is pixel num -#else - lspiCmdCtrl.dataLen = AXS15231_WIDTH*AXS15231_HEIGHT*2; // pixel * bpp/8 -#endif - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); -} - -void axs15231HandleUspIrq4Fill(lcdDrvFunc_t *lcd) -{ -} - - -static int axs15231Init(lcdDrvFunc_t *lcd, void* uspCb, void *dmaCb, uint32_t freq, uint8_t bpp) -{ - lcdIoInit(true); - dmaInit(dmaCb); - lspiDefaultCfg(lcd, uspCb, freq, bpp); - lcdRst(100, 100); - lcdInterfaceType(AXS15231_INTERFACE); - lcdRegInit(0x15231); - - #if 0 // test read id - uint8_t data = 0x29; - uint32_t read1523113[40] = {0x1, 0x2, 0x3}; - lspiReadReg(0xda, read1523113, 3, 0); - - uint32_t read15231[5] = {0x1, 0x2, 0x3}; - - lspiCmdSend(0xa0, &data, 1); - lspiReadReg(0x0c, read15231, 4, 0); - - uint32_t read1523112[5] = {0x1, 0x2, 0x3}; - lspiCmdSend(0xa0, &data, 1); - lspiReadReg(0x52, read1523112, 5, 0); - #endif - return 0; -} - -#if 0 -static int axs15231Direction(lcdDrvFunc_t *lcd,DisDirection_e Dir) -{ - switch(Dir) - { - case DIS_MIRROR_X: - s_MADCTL ^= BIT(6); - break; - case DIS_MIRROR_Y: - s_MADCTL ^= BIT(7); - break; - case DIS_SWAP_XY: - s_MADCTL ^= 0xC0; - break; - case DIS_DIR_LRTB: - s_MADCTL &= ~(BIT(2)); - s_MADCTL &= ~(BIT(4)); - s_MADCTL &= ~(BIT(5)); - break; - case DIS_DIR_LRBT: - s_MADCTL &= ~(BIT(2)); - s_MADCTL &= ~(BIT(5)); - s_MADCTL |= BIT(4); - break; - case DIS_DIR_RLTB: - s_MADCTL &= ~(BIT(4)); - s_MADCTL &= ~(BIT(5)); - s_MADCTL |= BIT(2); - break; - case DIS_DIR_RLBT: - s_MADCTL &= ~(BIT(5)); - s_MADCTL |= BIT(4); - s_MADCTL |= BIT(2); - break; - case DIS_DIR_TBLR: - s_MADCTL &= ~(BIT(2)); - s_MADCTL &= ~(BIT(4)); - s_MADCTL |= BIT(5); - break; - case DIS_DIR_BTLR: - s_MADCTL &= ~(BIT(2)); - s_MADCTL |= BIT(4); - s_MADCTL |= BIT(5); - break; - case DIS_DIR_TBRL: - s_MADCTL &= ~(BIT(4)); - s_MADCTL |= BIT(2); - s_MADCTL |= BIT(5); - break; - case DIS_DIR_BTRL: - s_MADCTL |= BIT(2); - s_MADCTL |= BIT(4); - s_MADCTL |= BIT(5); - break; - } - - lspiCmdSend(LCD_MADCTL, &s_MADCTL, 1); - return s_MADCTL; -} -#endif - -static void axs15231BackLight(lcdDrvFunc_t *lcd, uint8_t level) -{ -#if (BK_USE_GPIO == 1) - lcdGpioBkLevel(level); -#elif (BK_USE_PWM == 1) - lcdPwmBkLevel(level); -#endif -} - -static void axs15231PowerOnOff(lcdDrvFunc_t *lcd, lcdPowerOnOff_e onoff) -{ -#if (ENABLE_LDO == 1) - if (onoff == LCD_POWER_ON) - { - // power on - GPIO_pinWrite(LCD_EN_GPIO_INSTANCE, 1 << LCD_EN_GPIO_PIN, 1 << LCD_EN_GPIO_PIN); - } - else - { - // power off - GPIO_pinWrite(LCD_EN_GPIO_INSTANCE, 1 << LCD_EN_GPIO_PIN, 0); - } -#endif -} - - - - -static void axs15231StartStop(lcdDrvFunc_t *lcd, bool startOrStop) -{ - dmaStartStop(startOrStop); -} - -static int axs15231Fill(lcdDrvFunc_t *lcd, uint32_t fillLen, uint8_t *buf) -{ - return lcdDmaTrans(lcd, buf, fillLen); -} - -static void axs15231DrawPoint(lcdDrvFunc_t *lcd, uint16_t x, uint16_t y, uint32_t dataWrite) -{ - axs15231AddrSet(lcd, x, y, x, y); - lspiFifoWrite(dataWrite); - return; -} - -static void axs15231RegisterUspIrqCb(lcdDrvFunc_t *lcd, uspCbRole_e who) -{ - (who == cbForCam)? (lcd->uspIrq4CamCb = axs15231HandleUspIrq4Cam) : (lcd->uspIrq4FillCb = axs15231HandleUspIrq4Fill); -} - -static void axs15231UnRegisterUspIrqCb(lcdDrvFunc_t *lcd, uspCbRole_e who) -{ - (who == cbForCam)? (lcd->uspIrq4CamCb = NULL) : (lcd->uspIrq4FillCb = NULL); -} - - -static void axs15231CamPreviewStartStop(lcdDrvFunc_t *lcd, camPreviewStartStop_e previewStartStop) -{ - uint8_t divVal = 0; - uint16_t divRemain = 0; - -#if (defined TYPE_EC718M) // chip 719 - if (previewStartStop) - { - axs15231UnRegisterUspIrqCb(lcd, cbForFill); - axs15231RegisterUspIrqCb(lcd, cbForCam); - - lspiDataFmt.wordSize = 7; - lspiDataFmt.txPack = 0; - lcdDrv->ctrl(LSPI_CTRL_DATA_FORMAT, 0); - - lspiInfo.frameHeight = PIC_SRC_HEIGHT; // frame input height - lspiInfo.frameWidth = PIC_SRC_WIDTH; // frame input width - lspiFrameInfoOut.frameHeightOut = previewHeight; // frame output height - lspiFrameInfoOut.frameWidthOut = previewWidth; // frame output width - - if ((previewHeight > PIC_SRC_HEIGHT) || (previewWidth > PIC_SRC_WIDTH)) - { - EC_ASSERT(0,0,0,0); - } - - if (lcdIoCtrlParam.previewModeSel == CAM_PREVIEW_SET_AUTO) - { - divVal = lspiInfo.frameHeight / lspiFrameInfoOut.frameHeightOut; - divRemain = lspiInfo.frameHeight % lspiFrameInfoOut.frameHeightOut; - lspiTailorInfo0.tailorTop = divRemain/2; - lspiTailorInfo0.tailorBottom = divRemain/2; - EC_ASSERT(divVal, lspiInfo.frameHeight, lspiFrameInfoOut.frameHeightOut, 0); - lspiScaleInfo.colScaleFrac = (divVal==1)? 0 : (128/divVal); - - divVal = lspiInfo.frameWidth / lspiFrameInfoOut.frameWidthOut; - divRemain = lspiInfo.frameWidth % lspiFrameInfoOut.frameWidthOut; - lspiTailorInfo.tailorLeft = divRemain/2; - lspiTailorInfo.tailorRight = divRemain/2; - EC_ASSERT(divVal, lspiInfo.frameWidth, lspiFrameInfoOut.frameWidthOut, 0); - lspiScaleInfo.rowScaleFrac = (divVal==1)? 0 : (128/divVal); - } - else - { - lspiScaleInfo.rowScaleFrac = lcdIoCtrlParam.previewManulSet.rowScaleFrac; - lspiScaleInfo.colScaleFrac = lcdIoCtrlParam.previewManulSet.colScaleFrac; - lspiTailorInfo.tailorLeft = lcdIoCtrlParam.previewManulSet.tailorLeft; - lspiTailorInfo.tailorRight = lcdIoCtrlParam.previewManulSet.tailorRight; - lspiTailorInfo0.tailorBottom = lcdIoCtrlParam.previewManulSet.tailorBottom; - lspiTailorInfo0.tailorTop = lcdIoCtrlParam.previewManulSet.tailorTop; - } - - lcdDrv->ctrl(LSPI_CTRL_SCALE_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_TAILOR_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO_OUT, 0); - - lspiCtrl.datSrc = 0; // 0: data from camera; 1: data from memory - lspiCtrl.colorModeIn = 0; // YUV422, every item is 8bit - lspiCtrl.colorModeOut = 1; // RGB565 - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - - lspiCmdCtrl.wrRdn = 1; // 1: wr 0: rd - lspiCmdCtrl.ramWr = 1; // start ramwr - #if (SPI_2_DATA_LANE == 1) - lspiCmdCtrl.dataLen = fillLen/2; // 2 datalane is pixel num - #else - lspiCmdCtrl.dataLen = AXS15231_WIDTH*AXS15231_HEIGHT*2; // pixel * bpp/8 - #endif - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - } -#else // chip 718 - if (previewStartStop) - { - axs15231UnRegisterUspIrqCb(lcd, cbForFill); - axs15231RegisterUspIrqCb(lcd, cbForCam); - - lspiDataFmt.wordSize = 7; - lspiDataFmt.txPack = 0; - lcdDrv->ctrl(LSPI_CTRL_DATA_FORMAT, 0); - - lspiInfo.frameHeight = PIC_SRC_HEIGHT; // frame input height - lspiInfo.frameWidth = PIC_SRC_WIDTH; // frame input width - lspiFrameInfoOut.frameHeightOut = previewHeight; // frame output height - lspiFrameInfoOut.frameWidthOut = previewWidth; // frame output width - - if ((previewHeight > PIC_SRC_HEIGHT) || (previewWidth > PIC_SRC_WIDTH)) - { - EC_ASSERT(0,0,0,0); - } - - if (lcdIoCtrlParam.previewModeSel == CAM_PREVIEW_SET_AUTO) - { - divVal = lspiInfo.frameHeight / lspiFrameInfoOut.frameHeightOut; - divRemain = lspiInfo.frameHeight % lspiFrameInfoOut.frameHeightOut; - lspiTailorInfo0.tailorTop = divRemain/2; - lspiTailorInfo0.tailorBottom = divRemain/2; - EC_ASSERT(divVal, lspiInfo.frameHeight, lspiFrameInfoOut.frameHeightOut, 0); - lspiScaleInfo.colScaleFrac = (divVal==1)? 0 : (128/divVal); - - divVal = lspiInfo.frameWidth / lspiFrameInfoOut.frameWidthOut; - divRemain = lspiInfo.frameWidth % lspiFrameInfoOut.frameWidthOut; - lspiTailorInfo.tailorLeft = divRemain/2; - lspiTailorInfo.tailorRight = divRemain/2; - EC_ASSERT(divVal, lspiInfo.frameWidth, lspiFrameInfoOut.frameWidthOut, 0); - lspiScaleInfo.rowScaleFrac = (divVal==1)? 0 : (128/divVal); - } - else - { - lspiScaleInfo.rowScaleFrac = lcdIoCtrlParam.previewManulSet.rowScaleFrac; - lspiScaleInfo.colScaleFrac = lcdIoCtrlParam.previewManulSet.colScaleFrac; - lspiTailorInfo.tailorLeft = lcdIoCtrlParam.previewManulSet.tailorLeft; - lspiTailorInfo.tailorRight = lcdIoCtrlParam.previewManulSet.tailorRight; - lspiTailorInfo0.tailorBottom = lcdIoCtrlParam.previewManulSet.tailorBottom; - lspiTailorInfo0.tailorTop = lcdIoCtrlParam.previewManulSet.tailorTop; - } - - lcdDrv->ctrl(LSPI_CTRL_SCALE_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_TAILOR_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO_OUT, 0); - - lspiCtrl.datSrc = 0; // 0: data from camera; 1: data from memory - lspiCtrl.colorModeIn = 0; // YUV422, every item is 8bit - lspiCtrl.colorModeOut = 1; // RGB565 - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - - lspiCmdCtrl.wrRdn = 1; // 1: wr 0: rd - lspiCmdCtrl.ramWr = 1; // start ramwr -#if (SPI_2_DATA_LANE == 1) - lspiCmdCtrl.dataLen = fillLen/2; // 2 datalane is pixel num -#else - lspiCmdCtrl.dataLen = AXS15231_WIDTH*AXS15231_HEIGHT*2; // pixel * bpp/8 -#endif - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - } -#endif - else - { - axs15231UnRegisterUspIrqCb(lcd, cbForCam); - axs15231RegisterUspIrqCb(lcd, cbForFill); - - lspiDmaCtrl.txDmaReqEn = 0; - lspiDataFmt.wordSize = 31; - lspiDataFmt.txPack = 0; - lspiInfo.frameHeight = lcd->height; // frame input height - lspiInfo.frameWidth = lcd->width; // frame input width - lspiFrameInfoOut.frameHeightOut = lcd->height; // frame output height - lspiFrameInfoOut.frameWidthOut = lcd->width; // frame output width - lspiCtrl.colorModeIn = 3; // rgb565 - lspiCtrl.colorModeOut = 1; // rgb565 - lspiCtrl.datSrc = 1; // 0: data from camera; 1: data from memory - lspiScaleInfo.rowScaleFrac = 0; - lspiScaleInfo.colScaleFrac = 0; - lspiTailorInfo.tailorLeft = 0; // frame output height - lspiTailorInfo.tailorRight = 0; // frame output width - lspiTailorInfo0.tailorBottom = 0; - lspiTailorInfo0.tailorTop = 0; - lcdDrv->ctrl(LSPI_CTRL_SCALE_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_TAILOR_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - lcdDrv->ctrl(LSPI_CTRL_DATA_FORMAT, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_DMA_CTRL, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO_OUT, 0); - lcdDrv->ctrl(LSPI_CTRL_TAILOR_INFO0, 0); - - // before send first cmd/data to lcd, clear unnessary status - if (((LSPI2->STAS >> 27)& 0x1) > 0) - { - LSPI2->STAS |= 1<<27; - } - - if (((LSPI2->STAS >> 28)& 0x1) > 0) - { - LSPI2->STAS |= 1<<28; - } - -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) - if (((LSPI2->STAS >> 13)& 0x3f) > 0) -#else // 719 - if (((LSPI2->LSPI_STAT >> 8)& 0x3f) > 0) -#endif - { - LSPI2->DMACTL |= 1<<25; - } - - LSPI2->DMACTL |= 1<<24; // clear rx fifo - - // write first dummy cmd to lcd. It's nessary to clear lspi fifo - lcdWriteCmd(0xff); - lcdWriteData(0x00); - lcdDrv->send(NULL, 0); - -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) - if (((LSPI2->STAS >> 13)& 0x3f) > 0) -#else // 719 - if (((LSPI2->LSPI_STAT >> 8)& 0x3f) > 0) -#endif - { - LSPI2->DMACTL |= 1<<25; - } - } -} - -static int axs15231Close(lcdDrvFunc_t *lcd) -{ - return 0; -} - -AP_PLAT_COMMON_DATA lcdDrvFunc_t axs15231Drv = -{ - .id = 0x15231, - .width = AXS15231_WIDTH, - .height = AXS15231_HEIGHT, - .freq = AXS15231_FREQ, - .bpp = AXS15231_BPP, - .initRegTbl = initTable15231, - .initRegTblLen = sizeof(initTable15231)/sizeof(initLine_t), - .dir = 0, - - .init = axs15231Init, - .drawPoint = axs15231DrawPoint, - .setWindow = axs15231AddrSet, - .fill = axs15231Fill, - .backLight = axs15231BackLight, - .powerOnOff = axs15231PowerOnOff, - .startStop = axs15231StartStop, - .startStopPreview = axs15231CamPreviewStartStop, - .uspIrq4CamCb = NULL, - .uspIrq4FillCb = NULL, - .registerUspIrqCb = axs15231RegisterUspIrqCb, - .unregisterUspIrqCb = axs15231UnRegisterUspIrqCb, - .direction = NULL, - .close = axs15231Close, -}; - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/lcd/lcdDev/lcdDev_5300.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/lcd/lcdDev/lcdDev_5300.c deleted file mode 100644 index 8d2d63f..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/lcd/lcdDev/lcdDev_5300.c +++ /dev/null @@ -1,324 +0,0 @@ -#include "bsp.h" -#include "lcdDrv.h" -#include "lcdComm.h" -#include "lcdDev_5300.h" -#include "sctdef.h" - -extern lspiDrvInterface_t *lcdDrv; -AP_PLAT_COMMON_BSS static uint8_t co5300SetXCmd[4] = {0}; -AP_PLAT_COMMON_BSS static uint8_t co5300SetYCmd[4] = {0}; - -#define PRE_CMD_ENABLE 0 -#define TEST_IRQ_NUM 1 - - -static const initLine_t initTable5300[] = -{ - {0xfe, 0, {}}, - {0xc4, 1, {0x80}}, -#if (CO5300_BPP == 16) - {0x3a, 1, {0x55}}, // rgb565 -#elif (CO5300_BPP == 18) - {0x3a, 1, {0x6}}, // rgb666 -#elif (CO5300_BPP == 24) - {0x3a, 1, {0x77}}, // rgb888 -#endif - {0xff, 1, {20}}, - {0x35, 1, {0x00}}, - {0xff, 1, {20}}, - {0x53, 1, {0x20}}, - {0xff, 1, {20}}, - {0x51, 1, {0xff}}, - {0xff, 1, {20}}, - {0x63, 1, {0xff}}, - {0xff, 1, {20}}, - {0x2a, 4, {0x0, 0x0a, 0x01, 0xd5}}, - {0xff, 1, {20}}, - {0x2b, 4, {0x0, 0x0, 0x01, 0xcb}}, - {0xff, 1, {20}}, - {0x11, 0, {}}, - {0xff, 1, {60}}, - {0x29, 0, {}}, -}; - -void co5300HandleUspIrq4Cam(lcdDrvFunc_t *lcd) -{ -#if (PRE_CMD_ENABLE) - LSPI2->STAS |= (1<<13); -#endif - -#if (!PRE_CMD_ENABLE) - lspiCtrl.enable = 0; - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - - LSPI2->DMACTL |= 1<<25; // tx fifo - - lspiCtrl.enable = 1; - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - - lspiCmdCtrl.wrRdn = 1; // 1: wr 0: rd - lspiCmdCtrl.ramWr = 1; // start ramwr - lspiCmdCtrl.ramWrHaltMode = 1; // maintain cs as low between cmd and data - lspiCmdCtrl.dataLen = LCD_WIDTH*LCD_HEIGHT; // infinite data, used in camera to lspi - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - - if (LSPI2->STAS & LSPI_STATS_TX_FIFO_LEVEL_Msk) - { - printf("tx error"); - } - - if ((LSPI2->STAS & 1<<1) != 0) - { - printf("tx overflow"); - } -#endif -} - -void co5300HandleUspIrq4Fill(lcdDrvFunc_t *lcd) -{ - //GPIO_pinWrite(0, 1 << 3, 0); - //GPIO_pinWrite(0, 1 << 3, 1 << 3); - - printf("enter fill\n"); -} - - -static int co5300Init(lcdDrvFunc_t *lcd, void* uspCb, void *dmaCb, uint32_t freq, uint8_t bpp) -{ - lcdIoInit(false); - lcdRst(200, 200); - dmaInit(dmaCb); - lspiDefaultCfg(lcd, uspCb, freq, bpp); - lcdInterfaceType(CO5300_INTERFACE); - lcdRegInit(0x5300); - -#if (TEST_IRQ_NUM) - lspiIntCtrl.ramWrIntCtrl = 1; - lspiIntCtrl.ramWrIntCtrlEn = 1; -#endif - lcdDrv->ctrl(LSPI_CTRL_INT_CTRL, 0); - - - #if 0 // test read id - uint32_t read5300[3] = {0}; - lspiReadReg(0xda, read5300, 1, 0); - lspiReadReg(0xdb, read5300+1, 1, 0); - lspiReadReg(0xdc, read5300+2, 1, 0); - #endif - return 0; -} - -static void co5300BackLight(lcdDrvFunc_t *lcd, uint8_t level) -{ -#if (BK_USE_GPIO == 1) - lcdGpioBkLevel(level); -#elif (BK_USE_PWM == 1) - lcdPwmBkLevel(level); -#endif -} - -/* - sx: start x - sy: start y - ex: end x - ey: end y -*/ -static uint32_t co5300AddrSet(lcdDrvFunc_t *lcd, uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey) -{ - uint32_t len = 0; - - lcdMspiSet(1, 0, 0, 0x02); // 1wire: 0x02; 4wire: 0x32 - - sx += LCD_X_OFFSET; - ex += LCD_X_OFFSET; - sy += LCD_Y_OFFSET; - ey += LCD_Y_OFFSET; - - co5300SetXCmd[0] = sx>>8; - co5300SetXCmd[1] = sx; - co5300SetXCmd[2] = ex>>8; - co5300SetXCmd[3] = ex; - lspiCmdSend(0x2A, co5300SetXCmd, sizeof(co5300SetXCmd)); - - co5300SetYCmd[0] = sy>>8; - co5300SetYCmd[1] = sy; - co5300SetYCmd[2] = ey>>8; - co5300SetYCmd[3] = ey; - lspiCmdSend(0x2B, co5300SetYCmd, sizeof(co5300SetYCmd)); - - if (CO5300_BPP == 24) - { - len = (ey-sy+1) * (ex-sx+1) * (CO5300_BPP/8+1); - } - else - { - len = (ey-sy+1) * (ex-sx+1) * (CO5300_BPP/8); - } - - // send 0x2c - lcdMspiSet(1, 0, 2, 0x32); // 1wire: 0x02; 4wire: 0x32 - lcdWriteCmd(0x2c); - - return len; -} - -static void co5300StartStop(lcdDrvFunc_t *lcd, bool startOrStop) -{ - dmaStartStop(startOrStop); -} - -static void co5300RegisterUspIrqCb(lcdDrvFunc_t *lcd, uspCbRole_e who) -{ - if (lcd == NULL) - { - EC_ASSERT(0,0,0,0); - } - - (who == cbForCam)? (lcd->uspIrq4CamCb = co5300HandleUspIrq4Cam) : (lcd->uspIrq4FillCb = co5300HandleUspIrq4Fill); -} - -static void co5300UnRegisterUspIrqCb(lcdDrvFunc_t *lcd, uspCbRole_e who) -{ - if (lcd == NULL) - { - EC_ASSERT(0,0,0,0); - } - - (who == cbForCam)? (lcd->uspIrq4CamCb = NULL) : (lcd->uspIrq4FillCb = NULL); -} - -static int co5300Fill(lcdDrvFunc_t *lcd, uint32_t fillLen, uint8_t *buf) -{ - return lcdDmaTrans(lcd, buf, fillLen); -} - -static void co5300DrawPoint(lcdDrvFunc_t *lcd, uint16_t x, uint16_t y, uint32_t dataWrite) -{ - co5300AddrSet(lcd, x, y, x, y); - lspiFifoWrite(dataWrite); - return; -} - -static void co5300CamPreviewStartStop(lcdDrvFunc_t *lcd, camPreviewStartStop_e previewStartStop) -{ - if (previewStartStop) - { - co5300UnRegisterUspIrqCb(lcd, cbForFill); - co5300RegisterUspIrqCb(lcd, cbForCam); - -#if (CAMERA_ENABLE_BF30A2) - -#elif (CAMERA_ENABLE_GC032A) - lspiScaleInfo.rowScaleFrac = 0; - lspiScaleInfo.colScaleFrac = 0; - lcdDrv->ctrl(LSPI_CTRL_SCALE_INFO, 0); - - lspiTailorInfo.tailorLeft = (PIC_SRC_WIDTH - CO5300_WIDTH)/2; - lspiTailorInfo.tailorRight = (PIC_SRC_WIDTH - CO5300_WIDTH)/2; - lspiTailorInfo0.tailorBottom = (PIC_SRC_HEIGHT - CO5300_HEIGHT)/2; - lspiTailorInfo0.tailorTop = (PIC_SRC_HEIGHT - CO5300_HEIGHT)/2; - lcdDrv->ctrl(LSPI_CTRL_TAILOR_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_TAILOR_INFO0, 0); - - lspiDataFmt.wordSize = 7; - lspiDataFmt.txPack = 0; - lcdDrv->ctrl(LSPI_CTRL_DATA_FORMAT, 0); - - // lcd size - lspiInfo.frameHeight = PIC_SRC_HEIGHT; // frame input height - lspiInfo.frameWidth = PIC_SRC_WIDTH; // frame input width - lspiFrameInfoOut.frameHeightOut = CO5300_HEIGHT; // frame output height - lspiFrameInfoOut.frameWidthOut = CO5300_WIDTH; // frame output width - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO_OUT, 0); - - lspiScaleInfo.rowScaleFrac = 0; - lspiScaleInfo.colScaleFrac = 0; - lcdDrv->ctrl(LSPI_CTRL_SCALE_INFO, 0); - - lspiDmaCtrl.txDmaReqEn = 0; - lcdDrv->ctrl(LSPI_CTRL_DMA_CTRL, 0); - - #if (PRE_CMD_ENABLE) - //lspiIntCtrl.ramWrIntCtrlEn = 1; - #else - lspiIntCtrl.lspiRamWrEndEn = 1; - #endif - lcdDrv->ctrl(LSPI_CTRL_INT_CTRL, 0); - - LSPI2->DMACTL |= 1<<24; // flush dma - LSPI2->DMACTL |= 1<<25; - - lspiMspiCtrl.mspiInst = 0x32; // 1wire: 0x02; 4wire: 0x32 - lspiMspiCtrl.mspiAddrLane = 0; - lspiMspiCtrl.mspiDataLane = 2; - lcdDrv->ctrl(LSPI_MSPI_CTRL, 0); - - lspiCtrl.enable = 1; - lspiCtrl.datSrc = 0; // 0: data from camera; 1: data from memory - lspiCtrl.colorModeIn = 0; // YUV422, every item is 8bit. 1:y only - lspiCtrl.colorModeOut = 1; // RGB565 - lspiCmdAddr.busType = 1; // Interface II - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - - #if PRE_CMD_ENABLE - lspiCmdAddr.addr = 0x2c; - lspiCmdAddr.csnHighCycleMin = 0xa; - lcdDrv->ctrl(LSPI_CTRL_CMD_ADDR, 0); - - lspiPreParam0.lspiCmd0PreEn = 1; - lspiPreParam0.lspiCmd1PreEn = 1; - lspiPreParam0.lspiCmd0PreParaLen = 4; - lspiPreParam0.lspiCmd1PreParaLen = 4; - lspiPreParam2.lspiCmd0PrePara = set_x_cmd[0] | (set_x_cmd[1]<<8) | (set_x_cmd[2]<<16) | (set_x_cmd[3]<<24); - lspiPreParam3.lspiCmd1PrePara = set_y_cmd[0] | (set_y_cmd[1]<<8) | (set_y_cmd[2]<<16) | (set_y_cmd[3]<<24); - lcdDrv->ctrl(LSPI_CTRL_CMD_ADDR, 0); - #endif - - lspiCmdCtrl.wrRdn = 1; // 1: wr 0: rd - lspiCmdCtrl.ramWr = 1; // start ramwr - lspiCmdCtrl.ramWrHaltMode = 1; // maintain cs as low between cmd and data - #if PRE_CMD_ENABLE - lspiCmdCtrl.dataLen = 0x3fffff; - #else - lspiCmdCtrl.dataLen = CO5300_HEIGHT * CO5300_WIDTH; - #endif - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - -#elif (CAMERA_ENABLE_GC6153) - -#endif - } -} - -static int co5300Close(lcdDrvFunc_t *lcd) -{ - return 0; -} - -AP_PLAT_COMMON_DATA lcdDrvFunc_t co5300Drv = -{ - .id = 0x5300, - .width = CO5300_WIDTH, - .height = CO5300_HEIGHT, - .freq = CO5300_FREQ, - .bpp = CO5300_BPP, - .initRegTbl = initTable5300, - .initRegTblLen = sizeof(initTable5300)/sizeof(initLine_t), - .dir = 0, - - .init = co5300Init, - .drawPoint = co5300DrawPoint, - .setWindow = co5300AddrSet, - .fill = co5300Fill, - .backLight = co5300BackLight, - .startStop = co5300StartStop, - .startStopPreview = co5300CamPreviewStartStop, - .uspIrq4CamCb = NULL, - .uspIrq4FillCb = NULL, - .registerUspIrqCb = co5300RegisterUspIrqCb, - .unregisterUspIrqCb = co5300UnRegisterUspIrqCb, - .direction = NULL, - .close = co5300Close, -}; - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/lcd/lcdDev/lcdDev_7789.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/lcd/lcdDev/lcdDev_7789.c deleted file mode 100644 index 9d58afe..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/lcd/lcdDev/lcdDev_7789.c +++ /dev/null @@ -1,427 +0,0 @@ -#include "bsp.h" -#include "lcdDrv.h" -#include "lcdComm.h" -#include "lcdDev_7789.h" -#include "sctdef.h" - -#define LCD_MADCTL 0x36 - -extern lspiDrvInterface_t *lcdDrv; -//static uint8_t s_MADCTL = 0x0; -AP_PLAT_COMMON_BSS static uint16_t previewWidth; -AP_PLAT_COMMON_BSS static uint16_t previewHeight; -extern lcdIoCtrl_t lcdIoCtrlParam; - -AP_PLAT_COMMON_DATA static initLine_t initTable7789[] = -{ - {0x11, 1, {0}}, - {0xff, 1, {120}}, - {0x36, 1, {0}}, - {0x21, 1, {0}}, // display inverse -#if (ST7789_BPP == 16) - {0x3a, 1, {5}}, // rgb565 -#elif (ST7789_BPP == 12) - {0x3a, 1, {3}}, // rgb444 -#elif (ST7789_BPP == 18) - {0x3a, 1, {6}}, // rgb666 -#endif - {0x35, 1, {0}}, // te on -#if (SPI_2_DATA_LANE == 1) - {0xe7, 1, {0x10}}, -#endif - {0xb2, 5, {0x0c, 0x0c, 0x00, 0x33, 0x33}}, // rate - {0xb7, 1, {0x35}}, - {0xbb, 1, {0x20}}, - {0xc0, 1, {0x2c}}, - {0xc2, 1, {0x01}}, - {0xc3, 1, {0x0b}}, - {0xc4, 1, {0x20}}, - {0xc6, 1, {0x0f}}, - {0xd0, 2, {0xa4, 0xa1}}, // pwctr - {0xe0, 14, {0xd0,0x03,0x09,0x0e,0x11,0x3d,0x47,0x55,0x53,0x1a,0x16,0x14,0x1f,0x22}}, //Positive voltage gamma - {0xe1, 14, {0xd0,0x02,0x08,0x0d,0x12,0x2c,0x43,0x55,0x53,0x1e,0x1b,0x19,0x20,0x22}}, //Negative voltage gamma - {0x29, 1, {0x00}}, -}; - -void st7789HandleUspIrq4Cam(lcdDrvFunc_t *lcd) -{ - -} - -void st7789HandleUspIrq4Fill(lcdDrvFunc_t *lcd) -{ -} - - -static int st7789Init(lcdDrvFunc_t *lcd, void* uspCb, void *dmaCb, uint32_t freq, uint8_t bpp) -{ - lcdIoInit(false); - lcdRst(10, 10); - dmaInit(dmaCb); - lspiDefaultCfg(lcd, uspCb, freq, bpp); - lcdInterfaceType(ST7789_INTERFACE); - lcdRegInit(0x7789); - - #if 0 // test read id - uint32_t read7789[3] = {0}; - lspiReadReg(0x04, read7789, 3, 0); - #endif - return 0; -} - -#if 0 -static int st7789Direction(lcdDrvFunc_t *lcd,DisDirection_e Dir) -{ - switch(Dir) - { - case DIS_MIRROR_X: - s_MADCTL ^= BIT(6); - break; - case DIS_MIRROR_Y: - s_MADCTL ^= BIT(7); - break; - case DIS_SWAP_XY: - s_MADCTL ^= 0xC0; - break; - case DIS_DIR_LRTB: - s_MADCTL &= ~(BIT(2)); - s_MADCTL &= ~(BIT(4)); - s_MADCTL &= ~(BIT(5)); - break; - case DIS_DIR_LRBT: - s_MADCTL &= ~(BIT(2)); - s_MADCTL &= ~(BIT(5)); - s_MADCTL |= BIT(4); - break; - case DIS_DIR_RLTB: - s_MADCTL &= ~(BIT(4)); - s_MADCTL &= ~(BIT(5)); - s_MADCTL |= BIT(2); - break; - case DIS_DIR_RLBT: - s_MADCTL &= ~(BIT(5)); - s_MADCTL |= BIT(4); - s_MADCTL |= BIT(2); - break; - case DIS_DIR_TBLR: - s_MADCTL &= ~(BIT(2)); - s_MADCTL &= ~(BIT(4)); - s_MADCTL |= BIT(5); - break; - case DIS_DIR_BTLR: - s_MADCTL &= ~(BIT(2)); - s_MADCTL |= BIT(4); - s_MADCTL |= BIT(5); - break; - case DIS_DIR_TBRL: - s_MADCTL &= ~(BIT(4)); - s_MADCTL |= BIT(2); - s_MADCTL |= BIT(5); - break; - case DIS_DIR_BTRL: - s_MADCTL |= BIT(2); - s_MADCTL |= BIT(4); - s_MADCTL |= BIT(5); - break; - case DIS_DIR_MAX: - break; - } - - lspiCmdSend(LCD_MADCTL, &s_MADCTL, 1); - return s_MADCTL; -} -#endif - -static void st7789BackLight(lcdDrvFunc_t *lcd, uint8_t level) -{ -#if (BK_USE_GPIO == 1) - lcdGpioBkLevel(level); -#elif (BK_USE_PWM == 1) - lcdPwmBkLevel(level); -#endif -} - -/* - sx: start x - sy: start y - ex: end x - ey: end y -*/ -static uint32_t st7789AddrSet(lcdDrvFunc_t *lcd, uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey) -{ - uint8_t set_x_cmd[] = {sx>>8, sx, ex>>8, ex}; - lspiCmdSend(0x2A, set_x_cmd, sizeof(set_x_cmd)); - previewWidth = ex - sx + 1; - - uint8_t set_y_cmd[] = {sy>>8, sy, ey>>8, ey}; - lspiCmdSend(0x2B, set_y_cmd, sizeof(set_y_cmd)); - previewHeight = ey - sy + 1; - - lcdWriteCmd(0x2C); - - return (ey-sy+1) * (ex-sx+1) * (ST7789_BPP/8); -} - -static void st7789StartStop(lcdDrvFunc_t *lcd, bool startOrStop) -{ - dmaStartStop(startOrStop); -} - -static int st7789Fill(lcdDrvFunc_t *lcd, uint32_t fillLen, uint8_t *buf) -{ - return lcdDmaTrans(lcd, buf, fillLen); -} - -static void st7789DrawPoint(lcdDrvFunc_t *lcd, uint16_t x, uint16_t y, uint32_t dataWrite) -{ - lspiFifoWrite(dataWrite); - return; -} - -static void st7789RegisterUspIrqCb(lcdDrvFunc_t *lcd, uspCbRole_e who) -{ - if (lcd == NULL) - { - EC_ASSERT(0,0,0,0); - } - - (who == cbForCam)? (lcd->uspIrq4CamCb = st7789HandleUspIrq4Cam) : (lcd->uspIrq4FillCb = st7789HandleUspIrq4Fill); -} - -static void st7789UnRegisterUspIrqCb(lcdDrvFunc_t *lcd, uspCbRole_e who) -{ - if (lcd == NULL) - { - EC_ASSERT(0,0,0,0); - } - - (who == cbForCam)? (lcd->uspIrq4CamCb = NULL) : (lcd->uspIrq4FillCb = NULL); -} - -static void st7789CamPreviewStartStop(lcdDrvFunc_t *lcd, camPreviewStartStop_e previewStartStop) -{ - uint8_t divVal = 0; - uint16_t divRemain = 0; - -#if defined TYPE_EC718M - if (previewStartStop) - { - st7789RegisterUspIrqCb(lcd, cbForCam); - st7789UnRegisterUspIrqCb(lcd, cbForFill); - - lspiDataFmt.wordSize = 7; - lspiDataFmt.txPack = 0; - lcdDrv->ctrl(LSPI_CTRL_DATA_FORMAT, 0); - - lspiDmaCtrl.txDmaReqEn = 0; - lcdDrv->ctrl(LSPI_CTRL_DMA_CTRL, 0); - - lspiInfo.frameHeight = PIC_SRC_HEIGHT; // frame input height - lspiInfo.frameWidth = PIC_SRC_WIDTH; // frame input width - lspiFrameInfoOut.frameHeightOut = previewHeight; // frame output height - lspiFrameInfoOut.frameWidthOut = previewWidth; // frame output width - - if ((previewHeight > PIC_SRC_HEIGHT) || (previewWidth > PIC_SRC_WIDTH)) - { - EC_ASSERT(0,0,0,0); - } - - if (lcdIoCtrlParam.previewModeSel == CAM_PREVIEW_SET_AUTO) - { - divVal = lspiInfo.frameHeight / lspiFrameInfoOut.frameHeightOut; - divRemain = lspiInfo.frameHeight % lspiFrameInfoOut.frameHeightOut; - lspiTailorInfo0.tailorTop = divRemain/2; - lspiTailorInfo0.tailorBottom = divRemain/2; - EC_ASSERT(divVal, lspiInfo.frameHeight, lspiFrameInfoOut.frameHeightOut, 0); - lspiScaleInfo.colScaleFrac = (divVal==1)? 0 : (128/divVal); - - divVal = lspiInfo.frameWidth / lspiFrameInfoOut.frameWidthOut; - divRemain = lspiInfo.frameWidth % lspiFrameInfoOut.frameWidthOut; - lspiTailorInfo.tailorLeft = divRemain/2; - lspiTailorInfo.tailorRight = divRemain/2; - EC_ASSERT(divVal, lspiInfo.frameWidth, lspiFrameInfoOut.frameWidthOut, 0); - lspiScaleInfo.rowScaleFrac = (divVal==1)? 0 : (128/divVal); - } - else - { - lspiScaleInfo.rowScaleFrac = lcdIoCtrlParam.previewManulSet.rowScaleFrac; - lspiScaleInfo.colScaleFrac = lcdIoCtrlParam.previewManulSet.colScaleFrac; - lspiTailorInfo.tailorLeft = lcdIoCtrlParam.previewManulSet.tailorLeft; - lspiTailorInfo.tailorRight = lcdIoCtrlParam.previewManulSet.tailorRight; - lspiTailorInfo0.tailorBottom = lcdIoCtrlParam.previewManulSet.tailorBottom; - lspiTailorInfo0.tailorTop = lcdIoCtrlParam.previewManulSet.tailorTop; - } - - lcdDrv->ctrl(LSPI_CTRL_SCALE_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_TAILOR_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO_OUT, 0); - - lspiCtrl.datSrc = 0; // 0: data from camera; 1: data from memory - lspiCtrl.colorModeIn = 0; // YUV422, every item is 8bit - lspiCtrl.colorModeOut = 1; // RGB565 - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - - lspiCmdCtrl.wrRdn = 1; // 1: wr 0: rd - lspiCmdCtrl.ramWr = 1; // start ramwr - lspiCmdCtrl.dataLen = 0x3fffff; // infinite data, used in camera to lspi - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - } -#else // CHIP 718 - if (previewStartStop) - { - st7789RegisterUspIrqCb(lcd, cbForCam); - st7789UnRegisterUspIrqCb(lcd, cbForFill); - - lspiDataFmt.wordSize = 7; - lspiDataFmt.txPack = 0; - lcdDrv->ctrl(LSPI_CTRL_DATA_FORMAT, 0); - - lspiDmaCtrl.txDmaReqEn = 0; - lcdDrv->ctrl(LSPI_CTRL_DMA_CTRL, 0); - - lspiInfo.frameHeight = PIC_SRC_HEIGHT; // frame input height - lspiInfo.frameWidth = PIC_SRC_WIDTH; // frame input width - lspiFrameInfoOut.frameHeightOut = previewHeight; // frame output height - lspiFrameInfoOut.frameWidthOut = previewWidth; // frame output width - - if ((previewHeight > PIC_SRC_HEIGHT) || (previewWidth > PIC_SRC_WIDTH)) - { - EC_ASSERT(0,0,0,0); - } - - if (lcdIoCtrlParam.previewModeSel == CAM_PREVIEW_SET_AUTO) - { - divVal = lspiInfo.frameHeight / lspiFrameInfoOut.frameHeightOut; - divRemain = lspiInfo.frameHeight % lspiFrameInfoOut.frameHeightOut; - lspiTailorInfo0.tailorTop = divRemain/2; - lspiTailorInfo0.tailorBottom = divRemain/2; - EC_ASSERT(divVal, lspiInfo.frameHeight, lspiFrameInfoOut.frameHeightOut, 0); - lspiScaleInfo.colScaleFrac = (divVal==1)? 0 : (128/divVal); - - divVal = lspiInfo.frameWidth / lspiFrameInfoOut.frameWidthOut; - divRemain = lspiInfo.frameWidth % lspiFrameInfoOut.frameWidthOut; - lspiTailorInfo.tailorLeft = divRemain/2; - lspiTailorInfo.tailorRight = divRemain/2; - EC_ASSERT(divVal, lspiInfo.frameWidth, lspiFrameInfoOut.frameWidthOut, 0); - lspiScaleInfo.rowScaleFrac = (divVal==1)? 0 : (128/divVal); - } - else - { - lspiScaleInfo.rowScaleFrac = lcdIoCtrlParam.previewManulSet.rowScaleFrac; - lspiScaleInfo.colScaleFrac = lcdIoCtrlParam.previewManulSet.colScaleFrac; - lspiTailorInfo.tailorLeft = lcdIoCtrlParam.previewManulSet.tailorLeft; - lspiTailorInfo.tailorRight = lcdIoCtrlParam.previewManulSet.tailorRight; - lspiTailorInfo0.tailorBottom = lcdIoCtrlParam.previewManulSet.tailorBottom; - lspiTailorInfo0.tailorTop = lcdIoCtrlParam.previewManulSet.tailorTop; - } - - lcdDrv->ctrl(LSPI_CTRL_SCALE_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_TAILOR_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO_OUT, 0); - - lspiCtrl.datSrc = 0; // 0: data from camera; 1: data from memory - lspiCtrl.colorModeIn = 0; // YUV422, every item is 8bit - lspiCtrl.colorModeOut = 1; // RGB565 - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - - lspiCmdCtrl.wrRdn = 1; // 1: wr 0: rd - lspiCmdCtrl.ramWr = 1; // start ramwr - lspiCmdCtrl.dataLen = 0x3fffff; // infinite data, used in camera to lspi - lcdDrv->ctrl(LSPI_CTRL_CMD_CTRL, 0); - } -#endif - else - { - lspiDmaCtrl.txDmaReqEn = 0; - lspiDataFmt.wordSize = 31; - lspiDataFmt.txPack = 0; - lspiInfo.frameHeight = lcd->height; // frame input height - lspiInfo.frameWidth = lcd->width; // frame input width - lspiFrameInfoOut.frameHeightOut = lcd->height; // frame output height - lspiFrameInfoOut.frameWidthOut = lcd->width; // frame output width - lspiCtrl.colorModeIn = 3; // rgb565 - lspiCtrl.colorModeOut = 1; // rgb565 - lspiCtrl.datSrc = 1; // 0: data from camera; 1: data from memory - lspiScaleInfo.rowScaleFrac = 0; - lspiScaleInfo.colScaleFrac = 0; - lspiTailorInfo.tailorLeft = 0; // frame output height - lspiTailorInfo.tailorRight = 0; // frame output width - lcdDrv->ctrl(LSPI_CTRL_SCALE_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_TAILOR_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_CTRL, 0); - lcdDrv->ctrl(LSPI_CTRL_DATA_FORMAT, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO, 0); - lcdDrv->ctrl(LSPI_CTRL_DMA_CTRL, 0); - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO_OUT, 0); - - // before send first cmd/data to lcd, clear unnessary status - if (((LSPI2->STAS >> 27)& 0x1) > 0) - { - LSPI2->STAS |= 1<<27; - } - - if (((LSPI2->STAS >> 28)& 0x1) > 0) - { - LSPI2->STAS |= 1<<28; - } - -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) - if (((LSPI2->STAS >> 13)& 0x3f) > 0) -#else // 719 - if (((LSPI2->LSPI_STAT >> 8)& 0x3f) > 0) -#endif - { - LSPI2->DMACTL |= 1<<25; - } - - LSPI2->DMACTL |= 1<<24; // clear rx fifo - - // write first dummy cmd to lcd. It's nessary to clear lspi fifo - lcdWriteCmd(0xff); - lcdWriteData(0x00); - lcdDrv->send(NULL, 0); - -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) - if (((LSPI2->STAS >> 13)& 0x3f) > 0) -#else // 719 - if (((LSPI2->LSPI_STAT >> 8)& 0x3f) > 0) -#endif - { - LSPI2->DMACTL |= 1<<25; - } - } -} - -static int st7789Close(lcdDrvFunc_t *lcd) -{ - return 0; -} - -AP_PLAT_COMMON_DATA lcdDrvFunc_t st7789Drv = -{ - .id = 0x7789, - .width = ST7789_WIDTH, - .height = ST7789_HEIGHT, - .freq = ST7789_FREQ, - .bpp = ST7789_BPP, - .initRegTbl = initTable7789, - .initRegTblLen = sizeof(initTable7789)/sizeof(initLine_t), - .dir = 0, - - .init = st7789Init, - .drawPoint = st7789DrawPoint, - .setWindow = st7789AddrSet, - .fill = st7789Fill, - .backLight = st7789BackLight, - .startStop = st7789StartStop, - .startStopPreview = st7789CamPreviewStartStop, - .uspIrq4CamCb = NULL, - .uspIrq4FillCb = NULL, - .registerUspIrqCb = st7789RegisterUspIrqCb, - .unregisterUspIrqCb = st7789UnRegisterUspIrqCb, - .direction = NULL, - .close = st7789Close, -}; - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/lcd/lcdDev/lcdDev_77903.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/lcd/lcdDev/lcdDev_77903.c deleted file mode 100644 index 71507b6..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/lcd/lcdDev/lcdDev_77903.c +++ /dev/null @@ -1,238 +0,0 @@ -#include "bsp.h" -#include "lcdDrv.h" -#include "lcdComm.h" -#include "lcdDev_77903.h" -#include "sctdef.h" - -extern lspiDrvInterface_t *lcdDrv; - -static const initLine_t initTable77903[] = -{ - {0xf0, 1, {0xc3}}, - {0xf0, 1, {0x96}}, - {0xf0, 1, {0xa5}}, - {0xc1, 4, {0x00,0x08,0xae,0x13}}, - {0xc2, 4, {0x00,0x08,0xa5,0x13}}, - {0xc3, 4, {0x44,0x04,0x44,0x04}}, - {0xc4, 4, {0x44,0x04,0x44,0x04}}, - {0xc5, 1, {0x51}}, - {0xd6, 1, {0x0}}, - {0xd7, 1, {0x0}}, - {0xe0, 14,{0xd2,0x07,0x0c,0x0a,0x09,0x26,0x34,0x44,0x4b,0x19,0x14,0x14,0x2d,0x33}}, - {0xe1, 14,{0xd2,0x07,0x0c,0x09,0x08,0x25,0x33,0x44,0x4a,0x19,0x14,0x13,0x2d,0x33}}, - {0xe5, 14,{0xbd,0xf5,0xc1,0x33,0x22,0x25,0x10,0x55,0x55,0x55,0x55,0x55,0x55,0x55}}, - {0xe6, 14,{0xbd,0xf5,0xc1,0x33,0x22,0x25,0x10,0x55,0x55,0x55,0x55,0x55,0x55,0x55}}, - {0xec, 6, {0x00,0x55,0x00,0x00,0x00,0x08}}, - {0x36, 1, {0x0c}}, -#if (ST77903_BPP == 16) - {0x3a, 1, {5}}, // rgb565 -#elif (ST77903_BPP == 24) - {0x3a, 1, {7}}, // rgb888 -#elif (ST77903_BPP == 18) - {0x3a, 1, {6}}, // rgb666 -#endif - {0xb2, 1, {0x09}}, - {0xb3, 1, {0x01}}, - {0xb4, 1, {0x01}}, - {0xb5, 4, {0x00,0x08,0x00,0x08}}, - {0xb6, 2, {0xc7,0x31}}, - {0xa4, 2, {0xc0,0x63}}, - {0xa5, 9, {0x00,0x00,0x00,0x00,0x00,0x15,0x2a,0xba,0x02}}, - {0xa6, 9, {0x00,0x00,0x00,0x00,0x00,0x15,0x2a,0xba,0x02}}, - {0xba, 7, {0x1a,0x0a,0x45,0x00,0x23,0x01,0x00}}, - {0xbb, 8, {0x00,0x24,0x00,0x2f,0x83,0x07,0x18,0x00}}, - {0xbd, 11,{0x22,0x11,0xff,0xff,0x55,0x44,0x77,0x66,0xff,0xff,0x0f}}, - {0xff, 1, {200}}, - {0xed, 1, {0xc3}}, - {0xe4, 3, {0x40,0x0f,0x2f}}, - {0x21, 0, {}}, - {0x11, 0, {}}, - {0x29, 0, {}}, - - {0xf0, 1, {0xc3}}, - {0xf0, 1, {0x96}}, - -#if (BIST_TEST == 1) - {0xb0, 1, {0xa5}}, - {0xcc, 9, {0x40,0x00,0x3f,0x00,0x14,0x14,0x20,0x20,0x03}}, -#endif -}; - -void st77903HandleUspIrq4Cam(lcdDrvFunc_t *lcd) -{ - -} - -void st77903HandleUspIrq4Fill(lcdDrvFunc_t *lcd) -{ -} - -static int st77903Init(lcdDrvFunc_t *lcd, void* uspCb, void *dmaCb, uint32_t freq, uint8_t bpp) -{ - lcdIoInit(false); - lcdRst(10, 10); - dmaInit(dmaCb); - lspiDefaultCfg(lcd, uspCb, freq, bpp); - lcdInterfaceType(ST77903_INTERFACE); - lcdRegInit(0x77903); - lcdMspiHsyncSet(0x60, 0xde, 6, 6); - lcdWriteCmd(0x61); - lcdMspiSet(1, 0, 2, DEFAULT_INST); - lcdMspiVsyncSet(1, 0xde, lspiDiv); - lcdCsnHighCycleMin(lspiDiv); - return 0; -} - -static void st77903BackLight(lcdDrvFunc_t *lcd, uint8_t level) -{ -#if (BK_USE_GPIO == 1) - lcdGpioBkLevel(level); -#elif (BK_USE_PWM == 1) - lcdPwmBkLevel(level); -#endif -} - -/* - sx: start x - sy: start y - ex: end x - ey: end y -*/ -static uint32_t st77903AddrSet(lcdDrvFunc_t *lcd, uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey) -{ - uint32_t len = 0; -#if 0 // how to set the coordinate? - uint8_t set_x_cmd[] = {sx>>8, sx, ex>>8, ex}; - lspiCmdSend(0x2A, set_x_cmd, sizeof(set_x_cmd)); - - uint8_t set_y_cmd[] = {sy>>8, sy, ey>>8, ey}; - lspiCmdSend(0x2B, set_y_cmd, sizeof(set_y_cmd)); - - lcdWriteCmd(0x2C); -#endif - - if (ST77903_BPP == 24) - { - len = (ey-sy+1) * (ex-sx+1) * (ST77903_BPP/8+1); - } - else - { - len = (ey-sy+1) * (ex-sx+1) * (ST77903_BPP/8); - } - - return len; -} - -static void st77903StartStop(lcdDrvFunc_t *lcd, bool startOrStop) -{ - dmaStartStop(startOrStop); -} - -static int st77903Fill(lcdDrvFunc_t *lcd, uint32_t fillLen, uint8_t *buf) -{ - return lcdDmaTrans(lcd, buf, fillLen); -} - -static void st77903DrawPoint(lcdDrvFunc_t *lcd, uint16_t x, uint16_t y, uint32_t dataWrite) -{ - st77903AddrSet(lcd, x, y, x, y); - lspiFifoWrite(dataWrite); - return; -} - -static void st77903RegisterUspIrqCb(lcdDrvFunc_t *lcd, uspCbRole_e who) -{ - if (lcd == NULL) - { - EC_ASSERT(0,0,0,0); - } - - (who == cbForCam)? (lcd->uspIrq4CamCb = st77903HandleUspIrq4Cam) : (lcd->uspIrq4FillCb = st77903HandleUspIrq4Fill); -} - -static void st77903UnRegisterUspIrqCb(lcdDrvFunc_t *lcd, uspCbRole_e who) -{ - if (lcd == NULL) - { - EC_ASSERT(0,0,0,0); - } - - (who == cbForCam)? (lcd->uspIrq4CamCb = NULL) : (lcd->uspIrq4FillCb = NULL); -} - -static void st77903CamPreviewStartStop(lcdDrvFunc_t *lcd, camPreviewStartStop_e previewStartStop) -{ - if (previewStartStop) - { - st77903UnRegisterUspIrqCb(lcd, cbForFill); - st77903RegisterUspIrqCb(lcd, cbForCam); - -#if (CAMERA_ENABLE_BF30A2) - -#elif (CAMERA_ENABLE_GC032A) - // preview - lcdWriteCmd(0x36); - // lcdWriteData(0x00);// 0: normal; 0x20: reverse, mirror image 0x40: x mirror - lcdWriteData(0xa0); - lcdDrv->send(NULL, 0); - - lcdWriteCmd(0x2C); - st77903AddrSet(lcd, 0, 0, 320-1, 240-1); - - lspiDataFmt.wordSize = 7; - lspiDataFmt.txPack = 0; - lcdDrv->ctrl(LSPI_CTRL_DATA_FORMAT, 0); - - // lcd size - lspiInfo.frameHeight = 480; // frame input height - lspiInfo.frameWidth = 640; // frame input width - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO, 0); - - lspiFrameInfoOut.frameHeightOut =320;//lcd->pra->height;//320; // frame output height - lspiFrameInfoOut.frameWidthOut = 240;//lcd->pra->width;//240; // frame output width - lcdDrv->ctrl(LSPI_CTRL_FRAME_INFO_OUT, 0); - - // lspiScaleInfo.rowScaleFrac =128; - // lspiScaleInfo.colScaleFrac = 128; - - lspiScaleInfo.rowScaleFrac =64; - lspiScaleInfo.colScaleFrac = 64; - lcdDrv->ctrl(LSPI_CTRL_SCALE_INFO, 0); -#elif (CAMERA_ENABLE_GC6153) - -#endif - - } -} - -static int st77903Close(lcdDrvFunc_t *lcd) -{ - return 0; -} - -AP_PLAT_COMMON_DATA lcdDrvFunc_t st77903Drv = -{ - .id = 0x77903, - .width = ST77903_WIDTH, - .height = ST77903_HEIGHT, - .freq = ST77903_FREQ, - .bpp = ST77903_BPP, - .initRegTbl = initTable77903, - .initRegTblLen = sizeof(initTable77903)/sizeof(initLine_t), - .dir = 0, - - .init = st77903Init, - .drawPoint = st77903DrawPoint, - .setWindow = st77903AddrSet, - .fill = st77903Fill, - .backLight = st77903BackLight, - .startStop = st77903StartStop, - .startStopPreview = st77903CamPreviewStartStop, - .uspIrq4CamCb = NULL, - .uspIrq4FillCb = NULL, - .registerUspIrqCb = st77903RegisterUspIrqCb, - .unregisterUspIrqCb = st77903UnRegisterUspIrqCb, - .direction = NULL, - .close = st77903Close, -}; - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/lcd/lcdDrv.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/lcd/lcdDrv.c deleted file mode 100644 index e55a5fb..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/lcd/lcdDrv.c +++ /dev/null @@ -1,544 +0,0 @@ -#include -#include -#include "bsp.h" -#include "bsp_custom.h" -#include "lcdDrv.h" -#ifdef FEATURE_SUBSYS_SYSLOG_ENABLE -#include "syslog.h" -#endif -#include "sctdef.h" - -extern void lcdDrvDelay(uint32_t us); -extern void lspiCmdSend(uint8_t cmd,uint8_t *data,uint8_t allbytes); -AP_PLAT_COMMON_DATA static lspiDrvInterface_t *lcdDrv1 = &lspiDrvInterface2; -AP_PLAT_COMMON_BSS static lspiErrCb lspiErrStatsFunc; -AP_PLAT_COMMON_BSS lcdDrvFunc_t* lcdDevHandle; -AP_PLAT_COMMON_BSS lcdIoCtrl_t lcdIoCtrlParam; - - -AP_PLAT_COMMON_DATA lcdDrvFunc_t* lcdDrvList[] = -{ -#if (LCD_ST7789_ENABLE == 1) - &st7789Drv, -#elif (LCD_ST77903_ENABLE == 1) - &st77903Drv, -#elif (LCD_AXS15231_ENABLE == 1) - &axs15231Drv, -#elif (LCD_CO5300_ENABLE == 1) - &co5300Drv, -#endif -}; - -lcdDrvFunc_t* lcdOpen(uint32_t id, void* uspCb, void* dmaCb) -{ - lcdDrvFunc_t *pDrvFunc = NULL; - - uint8_t drvListLen = sizeof(lcdDrvList) / sizeof(lcdDrvFunc_t*); - if (drvListLen > 0) - { - for (uint8_t i = 0; i < drvListLen; i++) - { - if (id == lcdDrvList[i]->id) - { - pDrvFunc = lcdDrvList[i]; - pDrvFunc->init(pDrvFunc, uspCb, dmaCb, pDrvFunc->freq, pDrvFunc->bpp); - lcdDevHandle = pDrvFunc; - return pDrvFunc; - } - } - } - - return NULL; -} - -void lcdRegisterSlp1Cb(lcdSlp1Cb_fn cb) -{ - lcdSlp1CbFn = cb; -} - - -void lcdIoInit(bool isAonIO) -{ - if (isAonIO) - { - slpManAONIOPowerOn(); - } - - PadConfig_t config; - GpioPinConfig_t gpioCfg; - PAD_getDefaultConfig(&config); - - // 1. rst pin init - config.mux = LSPI_RST_PAD_ALT_FUNC; - PAD_setPinConfig(LSPI_RST_GPIO_ADDR, &config); - gpioCfg.pinDirection = GPIO_DIRECTION_OUTPUT; - gpioCfg.misc.initOutput = 1; - GPIO_pinConfig(LSPI_RST_GPIO_INSTANCE, LSPI_RST_GPIO_PIN, &gpioCfg); - - // 2. backLight init -#if (BK_USE_GPIO == 1) - config.mux = LCD_BK_PAD_ALT_FUNC; - PAD_setPinConfig(LCD_BK_PAD_INDEX, &config); - gpioCfg.pinDirection = GPIO_DIRECTION_OUTPUT; - gpioCfg.misc.initOutput = 0; - GPIO_pinConfig(LCD_BK_GPIO_INSTANCE, LCD_BK_GPIO_PIN, &gpioCfg); -#elif (BK_USE_PWM == 1) - lcdPwmBkInit(); -#endif - - // 3. ldo pin init -#if (ENABLE_LDO == 1) - config.mux = LCD_EN_PAD_ALT_FUNC; - PAD_setPinConfig(LCD_EN_PAD_INDEX, &config); - gpioCfg.pinDirection = GPIO_DIRECTION_OUTPUT; - gpioCfg.misc.initOutput = 1; - GPIO_pinConfig(LCD_EN_GPIO_INSTANCE, LCD_EN_GPIO_PIN, &gpioCfg); -#endif - - // 4. te init -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) - // 4.1 718 te init -#else - // 4.2 719 te init - config.mux = LCD_TE_PAD_ALT_FUNC; - PAD_setPinConfig(LCD_TE_PAD_INDEX, &config); -#endif - - // test fill one frame need how much time - #if 0 - config.mux = PAD_MUX_ALT0; - PAD_setPinConfig(27, &config); - gpioCfg.pinDirection = GPIO_DIRECTION_OUTPUT; - gpioCfg.misc.initOutput = 1; - GPIO_pinConfig(0, 12, &gpioCfg); - #endif -} - - -void lcdRegInit(uint32_t id) -{ - initLine_t *init = NULL; - uint8_t drvListLen = sizeof(lcdDrvList) / sizeof(lcdDrvFunc_t*); - - if (drvListLen > 0) - { - for (uint8_t i = 0; i < drvListLen; i++) - { - if (id == lcdDrvList[i]->id) - { - init = lcdDrvList[i]->initRegTbl; - - for (int j = 0; j < lcdDrvList[i]->initRegTblLen; j++) - { - if (init->cmd == 0xff) - { - lcdDrvDelay(init->data[0]); - } - else - { - lspiCmdSend(init->cmd, init->data, init->len); - } - - init++; - } - } - } - } -} - -int lcdClose(lcdDrvFunc_t *pdev) -{ - if (pdev == NULL) return 1; - - pdev->close(pdev); - pdev = NULL; - - return 0; -} - - -int lcdDirection(lcdDrvFunc_t *lcd, DisDirection_e dir) -{ - if (lcd == NULL) - { - return -1; - } - - return lcd->direction(lcd,dir); -} - -void camPreview(lcdDrvFunc_t *lcd, camPreviewStartStop_e previewStartStop) -{ - if (lcd == NULL) - { - return; - } - - lcd->startStopPreview(lcd, previewStartStop); -} - - -void lcdDrawPoint(lcdDrvFunc_t *lcd, uint16_t x, uint16_t y, uint32_t dataWrite) -{ - if (lcd == NULL) - { - return; - } - - return lcd->drawPoint(lcd, x, y, dataWrite); -} - - - -/** - * \brief Fills an area of the LCD with the data from a buffer. - * - * This function fills an area of the LCD specified by the start and end coordinates - * with the data from a buffer. The DMA trunk length parameter is not used in this - * function and is mentioned in the comment as not being used. - * - * \param lcd A pointer to the LCD device structure. - * \param sx The starting x-coordinate for the fill operation. - * \param sy The starting y-coordinate for the fill operation. - * \param ex The ending x-coordinate for the fill operation. - * \param ey The ending y-coordinate for the fill operation. - * \param buf A pointer to the buffer containing the data to be filled into the LCD. - * \param dmaTrunkLength The length of the DMA trunk, which is not used in this function. - * - * \return Returns the result of the fill operation from the LCD driver. - * Returns 0xffffffff if the `lcd` pointer is `NULL`. - */ -uint32_t lcdSetWindow(lcdDrvFunc_t *lcd, uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey) -{ - if (lcd == NULL) - { - return 0xffffffff; - } - - return lcd->setWindow(lcd, sx, sy, ex, ey); -} - -int lcdFill(lcdDrvFunc_t *lcd, uint32_t fillLen, uint8_t* buf) -{ - if (lcd == NULL) - { - return -1; - } - - return lcd->fill(lcd, fillLen, buf); -} - -// level: 0 ~ 100 -void lcdBackLight(lcdDrvFunc_t *lcd, uint8_t level) -{ - if (lcd == NULL) - { - return; - } - return lcd->backLight(lcd, level); -} - -void lcdPowerOnOff(lcdDrvFunc_t *lcd, lcdPowerOnOff_e onoff) -{ - if (lcd == NULL) - { - return; - } - return lcd->powerOnOff(lcd, onoff); -} - - -void lspiRstAndClearFifo() -{ - lspiCtrl.enable = 0; - lcdDrv1->ctrl(LSPI_CTRL_CTRL, 0); - - GPR_swReset(RST_FCLK_USP2); - LSPI2->DMACTL |= 1<<25; // clear tx fifo - LSPI2->STAS |= 1; - - lspiCtrl.enable = 1; - lcdDrv1->ctrl(LSPI_CTRL_CTRL, 0); -} - -void lspiRegisterErrStatsCb(lspiErrCb errCb) -{ - lspiErrStatsFunc = errCb; -} - -void lspiCheckErrStats() -{ - if (!lspiErrStatsFunc) - { - return; - } - - // check lspi error status and give cb to user - uint32_t status = LSPI2->STAS; - - if ( (status | ICL_STATS_TX_UNDERRUN_RUN_Msk) || - (status | ICL_STATS_TX_DMA_ERR_Msk) || - (status | ICL_STATS_RX_OVERFLOW_Msk) || - (status | ICL_STATS_RX_DMA_ERR_Msk) || - (status | ICL_STATS_RX_FIFO_TIMEOUT_Msk) || - (status | ICL_STATS_FS_ERR_Msk) || - (status | ICL_STATS_CSPI_BUS_TIMEOUT_Msk) || - (status | ICL_STATS_RX_FIFO_TIMEOUT_Msk) - ) - { - lspiErrStatsFunc(status); - } - - return; -} - -void imageRotateColor(uint8_t* src, uint32_t width, uint32_t height, uint8_t* dst, uint8_t bpp) -{ - int i, j, bytePerLine, tmp, i2; - - bytePerLine = width * bpp / 8; - for (i = 0; i < width; i++) - { - i2 = i*bpp / 8; - for (j = 0; j < height; j++) - { - tmp = (height - 1 - j) * bytePerLine + i2; - *dst++ = src[tmp]; - *dst++ = src[tmp+1]; - } - } -} - -void imageRotateGray(uint8_t* src, uint32_t width, uint32_t height, uint8_t* dst) -{ - for (int i= 0; i < width; i++) - { - for (int j = 0; j < height; j++) - { - dst[i*height + j] = src[(height-1-j) * width + i]; - } - } -} - -#define RANGE_LIMIT(x) (x > 255 ? 255 : (x < 0 ? 0 : x)) -void yuv422ToRgb565_2(const void* inbuf, void* outbuf, int width, int height) -{ - int rows, cols; - int y, u, v, r, g, b; - unsigned char *yuv_buf; - unsigned short *rgb_buf; - int y_pos,u_pos,v_pos; - - yuv_buf = (unsigned char *)inbuf; - rgb_buf = (unsigned short *)outbuf; - - y_pos = 0; - u_pos = 1; - v_pos = 3; - - for (rows = 0; rows < height; rows++) - { - for (cols = 0; cols < width; cols++) - { - y = yuv_buf[y_pos]; - u = yuv_buf[u_pos] - 128; - v = yuv_buf[v_pos] - 128; - - // R = Y + 1.402*(V-128) - // G = Y - 0.34414*(U-128) - // B = Y + 1.772*(U-128) - r = RANGE_LIMIT(y + v + ((v * 103) >> 8)); - g = RANGE_LIMIT(y - ((u * 88) >> 8) - ((v * 183) >> 8)); - b = RANGE_LIMIT(y + u + ((u * 198) >> 8)); - - *rgb_buf++ = (((r & 0xf8) << 8) | ((g & 0xfc) << 3) | ((b & 0xf8) >> 3)); - - y_pos += 2; - - if (cols & 0x01) - { - u_pos += 4; - v_pos += 4; - } - } - } -} - -#if ((defined CHIP_EC718) && !(defined TYPE_EC718M)) || (defined CHIP_EC716) -void calTe(uint32_t totalBytes, uint16_t sy) -{ - //uint32_t timeStampApp= 0; - uint32_t teRunTimeMs = 0; - uint16_t yte = 0; - //uint32_t controllerBytesPerMs = 480*320*2/28; - uint16_t waitTimeMs = 0; - - // cal te -#if 0 - timeStampApp = TIMER_getCount(0); - - if (timeStampApp < timeStampTe) - { - teRunTimeMs = (26000 - timeStampTe + timeStampApp) / 1000; - } - else - { - teRunTimeMs = (timeStampApp - timeStampTe) / 1000; - } -#else -#if (BK_USE_PWM == 1) - teRunTimeMs = millis(); -#endif -#endif - if (teRunTimeMs > 16) - { - teRunTimeMs = 0; - } - - yte = teRunTimeMs * 40 - 1; - - - - if (teRunTimeMs > 6) - { - if (sy > yte) - { - waitTimeMs = (sy-yte)/40; - if (waitTimeMs == 0) - { - waitTimeMs = 1; // at least 1ms - } - -#ifdef FEATURE_OS_ENABLE - osDelay(waitTimeMs); -#endif - dmaStartStop(true); - } - else - { - if (sy >= (480/2)) - { - dmaStartStop(true); - } - else - { - waitTimeMs = 16 - teRunTimeMs + sy/40; // +1 -#ifdef FEATURE_OS_ENABLE - osDelay(waitTimeMs); -#endif - dmaStartStop(true); - } - } - } - else - { - if (sy > yte) - { - waitTimeMs = (sy-yte)/40; - if (waitTimeMs == 0) - { - waitTimeMs = 1; // at least 1ms - } - -#ifdef FEATURE_OS_ENABLE - osDelay(waitTimeMs); -#endif - dmaStartStop(true); - } - else - { - if (totalBytes > ((16-teRunTimeMs+12)*40*320*2)) - { - // must wait te irq - //osDelay(16-teRunTimeMs); - //osEventFlagsWait(lcdEvtHandle, 0x4, osFlagsWaitAll, osWaitForever); // in te gpio isr release - dmaStartStop(true); - } - else - { - dmaStartStop(true); - } - } - } -} - -#else // chip 719 -void calTe(teEdgeSel_e teEdge, uint16_t xs, uint16_t ys, uint16_t xe, uint16_t ye) -{ - uint32_t tlspi=0, te=0, tw=0, tlcd=0, ta=0, tgaps=0, tgape=0, pos0=0, pos1=0; - xs += LCD_X_OFFSET; - xe += LCD_X_OFFSET; - ys += LCD_Y_OFFSET; - ye += LCD_Y_OFFSET; - -#if (LCD_INTERFACE_SPI == 1) - tlspi = 24 * (LCD_FREQ / (51*1024*1024)) * (LCD_PIXEL / (320*240)) * 1000; // us -#elif (LCD_INTERFACE_MSPI == 1) - if (LCD_FREQ == 51*1024*1024) - { - tlspi = 16600; // 51M, 16.6ms - } - else if (LCD_FREQ == 6*1024*1024) - { - tlspi = 148000; // 6M, 148ms - } -#elif (LCD_INTERFACE_8080 == 1) - -#endif - - te = LCD_TE_CYCLE; - tw = LCD_TE_WAIT_TIME; - tlcd = te - tw; - ta = (ye - ys + 1) * (xe - xs + 1) / LCD_PIXEL * tlspi ; - tgaps = ys * tlcd / LCD_HEIGHT; - tgape = ye * tlcd / LCD_HEIGHT; - - if (ta < (tgape - tgaps)) - { - pos1 = tgaps; - pos0 = tgape - ta; - } - else if (((tgape - tgaps) <= ta) && (ta <= tgape)) - { - pos1 = tgape - ta; - pos0 = tgaps; - } - else if ((tgape < ta) && (ta <= tgape + tw)) - { - pos1 = 0; - pos0 = tgaps; - } - else if (((tgape + tw) < ta) && (ta <= (tgape + tw + tlcd - tgaps))) - { - pos0 = tgaps; - pos1 = tlcd + tgape + tw - ta; - } - else if (ta > (tgape + tw + tlcd - tgaps)) - { - EC_ASSERT(0,0,0,0); - } - - lspiTeParam0.lspiTeEn = 1; - lspiTeParam0.lspiTeEdgeSel = teEdge; - lspiTeParam0.lspiTePos0 = pos0*LCD_FREQ/1000000; - lspiTeParam1.lspiTePos1 = pos1*LCD_FREQ/1000000; - lcdDrv1->ctrl(LSPI_TE_CTRL, 0); - -} -#endif - -void lcdIoCtrl(lcdDrvFunc_t *lcd, lcdIoCtrl_t ioCtrl) -{ - if (lcd == NULL) - { - return; - } - - lcdIoCtrlParam = ioCtrl; -} - -void lcdConfigReg(lcdDrvFunc_t *lcd, uint8_t cmd, uint8_t *data, uint8_t dataLen) -{ - lspiCmdSend(cmd, data, dataLen); -} - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/ntc/ntc.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/ntc/ntc.c deleted file mode 100644 index 90eca19..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/ntc/ntc.c +++ /dev/null @@ -1,170 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2018 Copyrigths of EigenComm Ltd. - * File name: ntc.c - * Description: - * History: - * - ****************************************************************************/ -#include -#include "ntc.h" - -#define NCP15XH103F03RC - -#if defined(NCP15XH103F03RC) -static const int32_t gNTCLut[65] = { - 253347, // T:253.35 Rntc:0.0k ADC code:0 Input voltage:0uV - 187444, // T:187.44 Rntc:0.159k ADC code:64 Input voltage:18750uV - 149195, // T:149.2 Rntc:0.323k ADC code:128 Input voltage:37500uV - 128368, // T:128.37 Rntc:0.492k ADC code:192 Input voltage:56250uV - 115301, // T:115.3 Rntc:0.667k ADC code:256 Input voltage:75000uV - 105493, // T:105.49 Rntc:0.847k ADC code:320 Input voltage:93750uV - 97670, // T:97.67 Rntc:1.034k ADC code:384 Input voltage:112500uV - 91187, // T:91.19 Rntc:1.228k ADC code:448 Input voltage:131250uV - 85596, // T:85.6 Rntc:1.429k ADC code:512 Input voltage:150000uV - 80693, // T:80.69 Rntc:1.636k ADC code:576 Input voltage:168750uV - 76336, // T:76.34 Rntc:1.852k ADC code:640 Input voltage:187500uV - 72403, // T:72.4 Rntc:2.075k ADC code:704 Input voltage:206250uV - 68803, // T:68.8 Rntc:2.308k ADC code:768 Input voltage:225000uV - 65478, // T:65.48 Rntc:2.549k ADC code:832 Input voltage:243750uV - 62389, // T:62.39 Rntc:2.8k ADC code:896 Input voltage:262500uV - 59508, // T:59.51 Rntc:3.061k ADC code:960 Input voltage:281250uV - 56829, // T:56.83 Rntc:3.333k ADC code:1024 Input voltage:300000uV - 54289, // T:54.29 Rntc:3.617k ADC code:1088 Input voltage:318750uV - 51869, // T:51.87 Rntc:3.913k ADC code:1152 Input voltage:337500uV - 49556, // T:49.56 Rntc:4.222k ADC code:1216 Input voltage:356250uV - 47337, // T:47.34 Rntc:4.545k ADC code:1280 Input voltage:375000uV - 45200, // T:45.2 Rntc:4.884k ADC code:1344 Input voltage:393750uV - 43135, // T:43.14 Rntc:5.238k ADC code:1408 Input voltage:412500uV - 41134, // T:41.13 Rntc:5.61k ADC code:1472 Input voltage:431250uV - 39186, // T:39.19 Rntc:6.0k ADC code:1536 Input voltage:450000uV - 37287, // T:37.29 Rntc:6.41k ADC code:1600 Input voltage:468750uV - 35433, // T:35.43 Rntc:6.842k ADC code:1664 Input voltage:487500uV - 33620, // T:33.62 Rntc:7.297k ADC code:1728 Input voltage:506250uV - 31842, // T:31.84 Rntc:7.778k ADC code:1792 Input voltage:525000uV - 30095, // T:30.1 Rntc:8.286k ADC code:1856 Input voltage:543750uV - 28377, // T:28.38 Rntc:8.824k ADC code:1920 Input voltage:562500uV - 26680, // T:26.68 Rntc:9.394k ADC code:1984 Input voltage:581250uV - 25000, // T:25.0 Rntc:10.0k ADC code:2048 Input voltage:600000uV - 23332, // T:23.33 Rntc:10.645k ADC code:2112 Input voltage:618750uV - 21675, // T:21.68 Rntc:11.333k ADC code:2176 Input voltage:637500uV - 20024, // T:20.02 Rntc:12.069k ADC code:2240 Input voltage:656250uV - 18382, // T:18.38 Rntc:12.857k ADC code:2304 Input voltage:675000uV - 16741, // T:16.74 Rntc:13.704k ADC code:2368 Input voltage:693750uV - 15100, // T:15.1 Rntc:14.615k ADC code:2432 Input voltage:712500uV - 13455, // T:13.46 Rntc:15.6k ADC code:2496 Input voltage:731250uV - 11801, // T:11.8 Rntc:16.667k ADC code:2560 Input voltage:750000uV - 10137, // T:10.14 Rntc:17.826k ADC code:2624 Input voltage:768750uV - 8454, // T:8.45 Rntc:19.091k ADC code:2688 Input voltage:787500uV - 6750, // T:6.75 Rntc:20.476k ADC code:2752 Input voltage:806250uV - 5022, // T:5.02 Rntc:22.0k ADC code:2816 Input voltage:825000uV - 3265, // T:3.27 Rntc:23.684k ADC code:2880 Input voltage:843750uV - 1472, // T:1.47 Rntc:25.556k ADC code:2944 Input voltage:862500uV - -361, // T:-0.36 Rntc:27.647k ADC code:3008 Input voltage:881250uV - -2238, // T:-2.24 Rntc:30.0k ADC code:3072 Input voltage:900000uV - -4171, // T:-4.17 Rntc:32.667k ADC code:3136 Input voltage:918750uV - -6170, // T:-6.17 Rntc:35.714k ADC code:3200 Input voltage:937500uV - -8248, // T:-8.25 Rntc:39.231k ADC code:3264 Input voltage:956250uV - -10419, // T:-10.42 Rntc:43.333k ADC code:3328 Input voltage:975000uV - -12711, // T:-12.71 Rntc:48.182k ADC code:3392 Input voltage:993750uV - -15137, // T:-15.14 Rntc:54.0k ADC code:3456 Input voltage:1012500uV - -17727, // T:-17.73 Rntc:61.111k ADC code:3520 Input voltage:1031250uV - -20519, // T:-20.52 Rntc:70.0k ADC code:3584 Input voltage:1050000uV - -23562, // T:-23.56 Rntc:81.429k ADC code:3648 Input voltage:1068750uV - -26937, // T:-26.94 Rntc:96.667k ADC code:3712 Input voltage:1087500uV - -30762, // T:-30.76 Rntc:118.0k ADC code:3776 Input voltage:1106250uV - -35224, // T:-35.22 Rntc:150.0k ADC code:3840 Input voltage:1125000uV - -40677, // T:-40.68 Rntc:203.333k ADC code:3904 Input voltage:1143750uV - -47755, // T:-47.76 Rntc:310.0k ADC code:3968 Input voltage:1162500uV - -57225, // T:-57.23 Rntc:630.0k ADC code:4032 Input voltage:1181250uV - -69859, // T:-69.86 Rntc:10000.0k ADC code:4096 Input voltage:1200000uV -}; -#elif defined(NCP15WF104F03RC) -static const int32_t gNTCLut[65] = { - 175093, // T:175.09 Rntc:0.0k ADC code:0 Input voltage:0uV - 140197, // T:140.2 Rntc:1.587k ADC code:64 Input voltage:18750uV - 116573, // T:116.57 Rntc:3.226k ADC code:128 Input voltage:37500uV - 102838, // T:102.84 Rntc:4.918k ADC code:192 Input voltage:56250uV - 93457, // T:93.46 Rntc:6.667k ADC code:256 Input voltage:75000uV - 86333, // T:86.33 Rntc:8.475k ADC code:320 Input voltage:93750uV - 80598, // T:80.6 Rntc:10.345k ADC code:384 Input voltage:112500uV - 75787, // T:75.79 Rntc:12.281k ADC code:448 Input voltage:131250uV - 71646, // T:71.65 Rntc:14.286k ADC code:512 Input voltage:150000uV - 67994, // T:67.99 Rntc:16.364k ADC code:576 Input voltage:168750uV - 64720, // T:64.72 Rntc:18.519k ADC code:640 Input voltage:187500uV - 61757, // T:61.76 Rntc:20.755k ADC code:704 Input voltage:206250uV - 59039, // T:59.04 Rntc:23.077k ADC code:768 Input voltage:225000uV - 56524, // T:56.52 Rntc:25.49k ADC code:832 Input voltage:243750uV - 54178, // T:54.18 Rntc:28.0k ADC code:896 Input voltage:262500uV - 51977, // T:51.98 Rntc:30.612k ADC code:960 Input voltage:281250uV - 49898, // T:49.9 Rntc:33.333k ADC code:1024 Input voltage:300000uV - 47928, // T:47.93 Rntc:36.17k ADC code:1088 Input voltage:318750uV - 46050, // T:46.05 Rntc:39.13k ADC code:1152 Input voltage:337500uV - 44250, // T:44.25 Rntc:42.222k ADC code:1216 Input voltage:356250uV - 42521, // T:42.52 Rntc:45.455k ADC code:1280 Input voltage:375000uV - 40853, // T:40.85 Rntc:48.837k ADC code:1344 Input voltage:393750uV - 39240, // T:39.24 Rntc:52.381k ADC code:1408 Input voltage:412500uV - 37676, // T:37.68 Rntc:56.098k ADC code:1472 Input voltage:431250uV - 36155, // T:36.16 Rntc:60.0k ADC code:1536 Input voltage:450000uV - 34671, // T:34.67 Rntc:64.103k ADC code:1600 Input voltage:468750uV - 33220, // T:33.22 Rntc:68.421k ADC code:1664 Input voltage:487500uV - 31797, // T:31.8 Rntc:72.973k ADC code:1728 Input voltage:506250uV - 30400, // T:30.4 Rntc:77.778k ADC code:1792 Input voltage:525000uV - 29025, // T:29.03 Rntc:82.857k ADC code:1856 Input voltage:543750uV - 27669, // T:27.67 Rntc:88.235k ADC code:1920 Input voltage:562500uV - 26328, // T:26.33 Rntc:93.939k ADC code:1984 Input voltage:581250uV - 24999, // T:25.0 Rntc:100.0k ADC code:2048 Input voltage:600000uV - 23681, // T:23.68 Rntc:106.452k ADC code:2112 Input voltage:618750uV - 22370, // T:22.37 Rntc:113.333k ADC code:2176 Input voltage:637500uV - 21064, // T:21.06 Rntc:120.69k ADC code:2240 Input voltage:656250uV - 19760, // T:19.76 Rntc:128.571k ADC code:2304 Input voltage:675000uV - 18455, // T:18.46 Rntc:137.037k ADC code:2368 Input voltage:693750uV - 17148, // T:17.15 Rntc:146.154k ADC code:2432 Input voltage:712500uV - 15835, // T:15.84 Rntc:156.0k ADC code:2496 Input voltage:731250uV - 14513, // T:14.51 Rntc:166.667k ADC code:2560 Input voltage:750000uV - 13179, // T:13.18 Rntc:178.261k ADC code:2624 Input voltage:768750uV - 11830, // T:11.83 Rntc:190.909k ADC code:2688 Input voltage:787500uV - 10463, // T:10.46 Rntc:204.762k ADC code:2752 Input voltage:806250uV - 9074, // T:9.07 Rntc:220.0k ADC code:2816 Input voltage:825000uV - 7658, // T:7.66 Rntc:236.842k ADC code:2880 Input voltage:843750uV - 6211, // T:6.21 Rntc:255.556k ADC code:2944 Input voltage:862500uV - 4728, // T:4.73 Rntc:276.471k ADC code:3008 Input voltage:881250uV - 3202, // T:3.2 Rntc:300.0k ADC code:3072 Input voltage:900000uV - 1626, // T:1.63 Rntc:326.667k ADC code:3136 Input voltage:918750uV - -6, // T:-0.01 Rntc:357.143k ADC code:3200 Input voltage:937500uV - -1710, // T:-1.71 Rntc:392.308k ADC code:3264 Input voltage:956250uV - -3495, // T:-3.5 Rntc:433.333k ADC code:3328 Input voltage:975000uV - -5376, // T:-5.38 Rntc:481.818k ADC code:3392 Input voltage:993750uV - -7371, // T:-7.37 Rntc:540.0k ADC code:3456 Input voltage:1012500uV - -9506, // T:-9.51 Rntc:611.111k ADC code:3520 Input voltage:1031250uV - -11819, // T:-11.82 Rntc:700.0k ADC code:3584 Input voltage:1050000uV - -14354, // T:-14.35 Rntc:814.286k ADC code:3648 Input voltage:1068750uV - -17179, // T:-17.18 Rntc:966.667k ADC code:3712 Input voltage:1087500uV - -20397, // T:-20.4 Rntc:1180.0k ADC code:3776 Input voltage:1106250uV - -24176, // T:-24.18 Rntc:1500.0k ADC code:3840 Input voltage:1125000uV - -28836, // T:-28.84 Rntc:2033.333k ADC code:3904 Input voltage:1143750uV - -35053, // T:-35.05 Rntc:3100.0k ADC code:3968 Input voltage:1162500uV - -44840, // T:-44.84 Rntc:6300.0k ADC code:4032 Input voltage:1181250uV - -63302, // T:-63.3 Rntc:100000.0k ADC code:4096 Input voltage:1200000uV -}; - -#else -#error "NTC type is not defined" -#endif - - -int32_t ntcGetTemperature(int32_t adcInputVoltage) -{ - if(adcInputVoltage <= 1200000) - { - int32_t step = 1200000 >> 6; - int32_t i = adcInputVoltage / step; - return gNTCLut[i] + ((int32_t)((gNTCLut[i + 1] - gNTCLut[i]) * (adcInputVoltage - (i * step))) / step); - } - else - { - return -256000; - } -} - - diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/plat_config.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/plat_config.c deleted file mode 100644 index c92de72..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/plat_config.c +++ /dev/null @@ -1,1518 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2019-, Copyrigths of EigenComm Ltd. - * File name: plat_config.c - * Description: platform configuration source file - * History: - * - ****************************************************************************/ - -#include -#include -#include -#include "ec7xx.h" -#include "plat_config.h" -#include "exception_process.h" -#include "sctdef.h" -#ifdef FEATURE_BOOTLOADER_PROJECT_ENABLE -#include "debug_trace.h" -#include "common.h" -#else -#include DEBUG_LOG_HEADER_FILE -#include "osasys.h" - -#define PLAT_CONFIG_FS_ENABLE -#endif - -#define PLATCONFIG_TEXT_SECTION SECTION_DEF_IMPL(.sect_platconfig_text) -#define PLATCONFIG_RODATA_SECTION SECTION_DEF_IMPL(.sect_platconfig_rodata) -#define PLATCONFIG_DATA_SECTION SECTION_DEF_IMPL(.sect_platconfig_data) -#define PLATCONFIG_BSS_SECTION SECTION_DEF_IMPL(.sect_platconfig_bss) - - - -/** \brief config file version - * \note when the order of struct \ref plat_config_fs_t and \ref plat_config_raw_flash_t field has changed, - * for example, from 1,2,3 to 1,3,2, update version to refresh flash, - * in other cases(add more fields or remove some fields from struct \ref plat_config_fs_t), it's not a must to update - */ - -// external API declarations -extern uint8_t FLASH_eraseSafe(uint32_t SectorAddress, uint32_t Size); -extern uint8_t FLASH_writeSafe(uint8_t* pData, uint32_t WriteAddr, uint32_t Size); -extern uint8_t FLASH_eraseSector(uint32_t BlockAddress); -extern uint8_t FLASH_write(uint8_t* pData, uint32_t WriteAddr, uint32_t Size); -extern uint8_t getOSState(void); - - -/** - \fn uint8_t BSP_CalcCrcValue(const uint8_t *buf, uint16_t bufSize) - \brief Calculate the "CRC" value of data buffer - \param[in] buf buffer pointer - \param[in] bufSize buffer size - \returns crcValue -*/ -PLAT_BL_CIRAM_FLASH_TEXT static uint8_t BSP_CalcCrcValue(const uint8_t *buf, uint16_t bufSize) -{ - uint32_t i = bufSize; - uint32_t a = 1, b = 0; - - EC_ASSERT(buf != NULL && bufSize > 0, buf, bufSize, 0); - - for (i = bufSize; i > 0; ) - { - a += (uint32_t)(buf[--i]); - b += a; - } - - return (uint8_t)(((a>>24)&0xFF)^((a>>16)&0xFF)^((a>>8)&0xFF)^((a)&0xFF)^ - ((b>>24)&0xFF)^((b>>16)&0xFF)^((b>>8)&0xFF)^((b)&0xFF)^ - (bufSize&0xFF)); -} - - -#ifdef PLAT_CONFIG_FS_ENABLE -PLATCONFIG_BSS_SECTION static uint8_t g_fsPlatConfigInitFlag = 0; -PLATCONFIG_BSS_SECTION static plat_config_fs_t g_fsPlatConfig; - -#if (FS_PLAT_CONFIG_FILE_CURRENT_VERSION==0) -/** - \fn void BSP_SetDefaultFsPlatConfig(void) - \brief set default value of "g_fsPlatConfig" - \return void -*/ -static void BSP_SetDefaultFsPlatConfig(void) -{ - g_fsPlatConfigInitFlag = 1; - - memset(&g_fsPlatConfig, 0x0, sizeof(g_fsPlatConfig)); - g_fsPlatConfig.atPortBaudRate = 115200; -} - -void BSP_LoadPlatConfigFromFs(void) -{ - OSAFILE fp = PNULL; - UINT32 readCount = 0; - UINT8 crcCheck = 0; - config_file_header_t fileHeader; - - /* - * open NVM file - */ - fp = OsaFopen("plat_config", "rb"); //read only - if (fp == PNULL) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_LoadPlatConfig_1, P_ERROR, - "Can't open 'plat_config' file, use the defult value"); - - BSP_SetDefaultFsPlatConfig(); - BSP_SavePlatConfigToFs(); - - return; - } - - /* - * read file header - */ - readCount = OsaFread(&fileHeader, sizeof(config_file_header_t), 1, fp); - if (readCount != 1) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_LoadPlatConfig_2, P_ERROR, - "Can't read 'plat_config' file header, use the defult value"); - - OsaFclose(fp); - - BSP_SetDefaultFsPlatConfig(); - BSP_SavePlatConfigToFs(); - - return; - } - - /* - * read file body, check validation and handle compatiblity issue - */ - if(fileHeader.version != FS_PLAT_CONFIG_FILE_CURRENT_VERSION) - { - if(fileHeader.version == 0) - { - } - // handle future version below - else if(0) - { - - } - else - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_LoadPlatConfig_5, P_ERROR, - "'plat_config' version:%d not right, use the defult value", fileHeader.version); - - OsaFclose(fp); - - BSP_SetDefaultFsPlatConfig(); - BSP_SavePlatConfigToFs(); - } - } - else - { - if(fileHeader.fileBodySize != sizeof(g_fsPlatConfig)) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_LoadPlatConfig_3, P_ERROR, - "'plat_config' version:%d file body size not right: (%u/%u), use the defult value", - fileHeader.version, fileHeader.fileBodySize, sizeof(plat_config_fs_t)); - - OsaFclose(fp); - - BSP_SetDefaultFsPlatConfig(); - BSP_SavePlatConfigToFs(); - } - else - { - readCount = OsaFread(&g_fsPlatConfig, sizeof(g_fsPlatConfig), 1, fp); - crcCheck = BSP_CalcCrcValue((uint8_t *)&g_fsPlatConfig, sizeof(g_fsPlatConfig)); - - OsaFclose(fp); - - if (readCount != 1 || crcCheck != fileHeader.checkSum) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_LoadPlatConfig_4, P_ERROR, - "Can't read 'plat_config' version:%d file body, or body not right, (%u/%u), use the defult value", - fileHeader.version, crcCheck, fileHeader.checkSum); - - BSP_SetDefaultFsPlatConfig(); - BSP_SavePlatConfigToFs(); - } - else - { - g_fsPlatConfigInitFlag = 1; - } - } - - } - - return; -} -#endif - -#if (FS_PLAT_CONFIG_FILE_CURRENT_VERSION>=1) - - - - -#define PLAT_CFG_SCALE_CONTROL_SIZE() (sizeof(g_fsPlatConfig.scaleAreaStartMark) + \ - sizeof(g_fsPlatConfig.scaleAreaEndMark) + \ - sizeof(g_fsPlatConfig.recScaleAreaGrpNum) + \ - sizeof(g_fsPlatConfig.recPrevArAllSzForUpg) + \ - sizeof(g_fsPlatConfig.scaleAreaAllSize)) - -#define PLAT_CFG_SCALE_CTRL_TAIL_SIZE() (sizeof(g_fsPlatConfig.scaleAreaEndMark) + \ - sizeof(g_fsPlatConfig.recScaleAreaGrpNum) + \ - sizeof(g_fsPlatConfig.recPrevArAllSzForUpg) + \ - sizeof(g_fsPlatConfig.scaleAreaAllSize)) - - - -#if (PLAT_CFG_GRP_CNT==1) -//CHECK the size align to grp unit -SIZE_OF_TYPE_EQUAL_TO_SZX(plat_cfg_sc_grp0_all_data_st, SCALE_AREA_GRP_UNIT_SIZE) - -//CHECK the size of plat_config_fs_t legal -SIZE_OF_TYPE_EQUAL_TO_CALX(plat_config_fs_t, PLAT_CFG_FIX_BASE_SIZE+PLAT_CFG_SCALE_CONTROL_SIZE()+SCALE_AREA_GRP_UNIT_SIZE*PLAT_CFG_GRP_CNT) -#else - -#error "plat cfg fs, scale area mode, group more then 1, add size check here" -#endif - - - -#define PLAT_CFG_SCALE_LOAD_FAST_PASS 1 - -#define PLAT_CFG_SCALE_LOAD_DEFAULT_ERR 2 - -#define PLAT_CFG_SCALE_LOAD_DWNGRADE_ERR 3 - -#define PLAT_CFG_SCALE_LOAD_SEEK_ERR 4 -#define PLAT_CFG_SCALE_LOAD_READ_ERR 5 - -#define PLAT_CFG_SCALE_LOAD_CRC_ERR 6 - -#define PLAT_CFG_SCALE_LOAD_BASESZ_ERR 7 -#define PLAT_CFG_SCALE_LOAD_SCALESZ_ERR 8 - -#define PLAT_CFG_SCALE_LOAD_MARKSTART_ERR 9 -#define PLAT_CFG_SCALE_LOAD_MARKEND_ERR 10 - - - -static void BSP_SetFsPlatCfgScalArCtrl(void) -{ - uint16_t cur_fixedBaseSize; - uint16_t cur_scaleAreaAllSize; - cur_fixedBaseSize = (uint8_t*)(&(g_fsPlatConfig.scaleAreaStartMark)) - (uint8_t*)(&(g_fsPlatConfig)); - cur_scaleAreaAllSize = sizeof(g_fsPlatConfig) -cur_fixedBaseSize; - - - g_fsPlatConfig.scaleAreaStartMark = PLAT_CFG_SCALE_START_MARK; - - //scalable area pure data already copied when upgrade or download, do not overwrited here - //g_fsPlatConfig.usbNetAdaptResult = 0; - g_fsPlatConfig.scaleAreaEndMark = PLAT_CFG_SCALE_END_MARK; - //g_fsPlatConfig.scaleAreaVerNum = 0; - - g_fsPlatConfig.scaleAreaEndMark = PLAT_CFG_SCALE_END_MARK; - g_fsPlatConfig.scaleAreaAllSize = cur_scaleAreaAllSize; - - //record previous scaleAreaAllSize before update to current plat cfg scalable area size - //current g_fsPlatConfig.scaleAreaAllSize == SCALE_AREA_SCALE_UNIT_SIZE, default0, no need set - //if (g_fsPlatConfig.scaleAreaAllSize >SCALE_AREA_SCALE_UNIT_SIZE) - //{ - // g_fsPlatConfig.recPrevArAllSzForUpg = g_fsPlatConfig.scaleAreaAllSize-SCALE_AREA_SCALE_UNIT_SIZE; - //} - #if (PLAT_CFG_GRP_CNT>=1) - g_fsPlatConfig.recScaleAreaGrpNum = PLAT_CFG_GRP_CNT -1; - #else - #error "plat cfg fs scale mode, area group number should large then 1" - #endif - - if (g_fsPlatConfig.scaleAreaAllSize >= (SCALE_AREA_GRP_UNIT_SIZE+ PLAT_CFG_SCALE_CONTROL_SIZE())) - { - g_fsPlatConfig.recPrevArAllSzForUpg = g_fsPlatConfig.scaleAreaAllSize-SCALE_AREA_GRP_UNIT_SIZE - PLAT_CFG_SCALE_CONTROL_SIZE(); - } - else - { - g_fsPlatConfig.recPrevArAllSzForUpg = 0; - } -} - - -#define CALC_BUF_SIZE 64 -PLAT_BL_CIRAM_FLASH_TEXT static uint8_t BSP_RdAndCalcCrcValue(OSAFILE fp, config_file_header_t *pfHead) -{ - UINT32 readCount = 0; - uint8_t Crc8; - uint32_t i ; - uint16_t bufSize; - uint32_t a = 1, b = 0; - uint16_t RestCalDataSz = pfHead->fileBodySize; - uint8_t buf[CALC_BUF_SIZE]; - - readCount = OsaFread(&buf, sizeof(buf), 1, fp); - while(RestCalDataSz>0) - { - if (RestCalDataSz >= CALC_BUF_SIZE) - { - bufSize = CALC_BUF_SIZE; - } - else - { - bufSize = RestCalDataSz; - } - RestCalDataSz -= bufSize; - if (OsaFseek(fp, sizeof(config_file_header_t)+RestCalDataSz, SEEK_SET)!=0) - { - return PLAT_CFG_SCALE_LOAD_SEEK_ERR; - } - - readCount = OsaFread(&buf, bufSize, 1, fp); - if (readCount!=1) - { - return PLAT_CFG_SCALE_LOAD_READ_ERR; - } - - for (i = bufSize; i > 0; ) - { - a += (uint32_t)(buf[--i]); - b += a; - } - - } - - //for (i = bufSize; i > 0; ) - //{ - // a += (uint32_t)(buf[--i]); - // b += a; - //} - Crc8 = (uint8_t)(((a>>24)&0xFF)^((a>>16)&0xFF)^((a>>8)&0xFF)^((a)&0xFF)^ - ((b>>24)&0xFF)^((b>>16)&0xFF)^((b>>8)&0xFF)^((b)&0xFF)^ - (bufSize&0xFF)); - if (pfHead->checkSum!=Crc8) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_RdAndCalcCrcValue_1, P_ERROR, - "plat_config crc not match, (%u/%u), ", Crc8, pfHead->checkSum); - return PLAT_CFG_SCALE_LOAD_CRC_ERR; - } - return 0; -} - - -/** - \fn void BSP_SetDefaultFsPlatConfig(void) - \brief set default value of "g_fsPlatConfig" - \return void -*/ -static void BSP_SetDefaultFsPlatConfig(void) -{ - //uint16_t cur_fixedBaseSize; - //uint16_t cur_scaleAreaAllSize; - - g_fsPlatConfigInitFlag = 1; - - memset(&g_fsPlatConfig, 0x0, sizeof(g_fsPlatConfig)); - //cur_fixedBaseSize = (uint8_t*)(&(g_fsPlatConfig.scaleAreaStartMark)) - (uint8_t*)(&(g_fsPlatConfig)); - //cur_scaleAreaAllSize = sizeof(g_fsPlatConfig) -cur_fixedBaseSize; - - g_fsPlatConfig.atPortBaudRate = 115200; - BSP_SetFsPlatCfgScalArCtrl(); - //g_fsPlatConfig.scaleAreaStartMark = PLAT_CFG_SCALE_START_MARK; - //g_fsPlatConfig.usbNetAdaptResult = 0; - //g_fsPlatConfig.scaleAreaEndMark = PLAT_CFG_SCALE_END_MARK; - //g_fsPlatConfig.scaleAreaVerNum = 0; - - - //g_fsPlatConfig.scaleAreaEndMark = PLAT_CFG_SCALE_END_MARK; - - //g_fsPlatConfig.scaleAreaAllSize = cur_scaleAreaAllSize; - //record previous scaleAreaAllSize before update to current plat cfg scalable area size - //current g_fsPlatConfig.scaleAreaAllSize == SCALE_AREA_SCALE_UNIT_SIZE, default0, no need set - //if (g_fsPlatConfig.scaleAreaAllSize >SCALE_AREA_SCALE_UNIT_SIZE) - //{ - // g_fsPlatConfig.recPrevArAllSzForUpg = g_fsPlatConfig.scaleAreaAllSize-SCALE_AREA_SCALE_UNIT_SIZE; - //} - -} - -void BSP_LoadPlatConfigFromFs(void) -{ - OSAFILE fp = PNULL; - UINT32 readCount = 0; - UINT8 crcCheck = 0; - config_file_header_t fileHeader; - - uint16_t cur_fixedBaseSize; - uint16_t cur_scaleAreaAllSize; - - uint16_t loaded_scaleAreaAllSize; - uint16_t loaded_scaleAreaStartMark; - uint16_t loaded_scaleAreaEndMark; - - uint16_t loaded_fixedBaseSize; - uint16_t loaded_recPrevArAllSzForUpg; - - uint8_t loadStat = PLAT_CFG_SCALE_LOAD_DEFAULT_ERR; - - uint8_t* p_g_fsPlatConfig; - - cur_fixedBaseSize = (uint8_t*)(&(g_fsPlatConfig.scaleAreaStartMark)) - (uint8_t*)(&(g_fsPlatConfig)); - cur_scaleAreaAllSize = sizeof(g_fsPlatConfig) -cur_fixedBaseSize; - - - BSP_SetDefaultFsPlatConfig(); - - /* - * open NVM file - */ - fp = OsaFopen("plat_config", "rb"); //read only - if (fp == PNULL) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_LoadPlatConfig_1, P_ERROR, - "Can't open 'plat_config' file, use the defult value"); - //Called - //BSP_SetDefaultFsPlatConfig(); - BSP_SavePlatConfigToFs(); - - return; - } - - /* - * read file header - */ - readCount = OsaFread(&fileHeader, sizeof(config_file_header_t), 1, fp); - if (readCount != 1) - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_LoadPlatConfig_2, P_ERROR, - "Can't read 'plat_config' file header, use the defult value"); - - OsaFclose(fp); - //Called at start - //BSP_SetDefaultFsPlatConfig(); - BSP_SavePlatConfigToFs(); - - return; - } - - - /* - * read file body, check validation and handle compatiblity issue - */ - if(fileHeader.version != FS_PLAT_CONFIG_FILE_CURRENT_VERSION) - { - if(fileHeader.version == 0) - { - //memset(&g_fsPlatConfig, 0x0, sizeof(g_fsPlatConfig)); - if (cur_fixedBaseSize== fileHeader.fileBodySize) - { - //cur seek pos sizeof(config_file_header_t) - readCount = OsaFread(&g_fsPlatConfig, fileHeader.fileBodySize, 1, fp); - - if (readCount!=1) - { - //unlikely, reload all default data - BSP_SetDefaultFsPlatConfig(); - } - else - { - //already called in BSP_SetDefaultFsPlatConfig - //BSP_SetFsPlatCfgScalArCtrl(); - //g_fsPlatConfig.scaleAreaStartMark = PLAT_CFG_SCALE_START_MARK; - //g_fsPlatConfig.scaleAreaEndMark = PLAT_CFG_SCALE_END_MARK; - //the scaleAreaAllSize should final set to cur_scaleAreaAllSize - //g_fsPlatConfig.scaleAreaAllSize = cur_scaleAreaAllSize; - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_LoadPlatConfig_3, P_INFO, - "'plat_config' version 0, upgrade to plat config scale version %d", FS_PLAT_CONFIG_FILE_CURRENT_VERSION); - } - - } - //Called at start - //else { - // BSP_SetDefaultFsPlatConfig(); - //} - - OsaFclose(fp); - BSP_SavePlatConfigToFs(); - } - // handle future version below - else if(0) - { - - } - else - { - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_LoadPlatConfig_4, P_ERROR, - "'plat_config' version:%d not right, use the defult value", fileHeader.version); - - OsaFclose(fp); - //Called at start - //BSP_SetDefaultFsPlatConfig(); - BSP_SavePlatConfigToFs(); - } - } - else - { - //scalable update - - //Called at start - //BSP_SetDefaultFsPlatConfig(); - - //cur_fixedBaseSize = (uint8_t*)(&(g_fsPlatConfig.scalabeAreaMark)) - (uint8_t*)(&(g_fsPlatConfig)); - //pure scalable data area = sizeof(g_fsPlatConfig) - cur_fixedBaseSize- PLAT_CFG_SCALE_CONTROL_SIZE(); - - do { - - - if (fileHeader.fileBodySize>sizeof(g_fsPlatConfig)) - { - - // Dwngrade crc check - if (BSP_RdAndCalcCrcValue(fp, &fileHeader) != 0) - { - loadStat = PLAT_CFG_SCALE_LOAD_CRC_ERR; - break; - } - - ////////////////////////////////branch for downgrade start //////////////////////////////////////////////////////////////////////////////////// - // scaleAreaStartMark, scaleAreaPureData0-scaleAreaPureDataX, scaleAreaEndMark, recScaleAreaGrpNum , recPrevArAllSzForUpg,scaleAreaAllSize - //seek to loaded_scaleAreaEndMark - if (OsaFseek(fp, sizeof(config_file_header_t) + fileHeader.fileBodySize \ - - sizeof(g_fsPlatConfig.scaleAreaEndMark) \ - -sizeof(g_fsPlatConfig.recScaleAreaGrpNum) \ - -sizeof(loaded_recPrevArAllSzForUpg) \ - -sizeof(loaded_scaleAreaAllSize), \ - SEEK_SET)!=0) - { - loadStat = PLAT_CFG_SCALE_LOAD_SEEK_ERR; - break; - } - - - readCount = OsaFread(&loaded_scaleAreaEndMark, sizeof(loaded_scaleAreaEndMark), 1, fp); - if (readCount!=1) - { - loadStat = PLAT_CFG_SCALE_LOAD_READ_ERR; - break; - } - - if (loaded_scaleAreaEndMark!=PLAT_CFG_SCALE_END_MARK) - { - loadStat = PLAT_CFG_SCALE_LOAD_MARKEND_ERR; - break; - } - - if (OsaFseek(fp, sizeof(config_file_header_t) + fileHeader.fileBodySize \ - -sizeof(loaded_recPrevArAllSzForUpg) \ - -sizeof(loaded_scaleAreaAllSize), \ - SEEK_SET)!=0) - { - loadStat = PLAT_CFG_SCALE_LOAD_SEEK_ERR; - break; - } - - readCount = OsaFread(&loaded_recPrevArAllSzForUpg, sizeof(loaded_recPrevArAllSzForUpg), 1, fp); - if (readCount!=1) - { - loadStat = PLAT_CFG_SCALE_LOAD_READ_ERR; - break; - } - readCount = OsaFread(&loaded_scaleAreaAllSize, sizeof(loaded_scaleAreaAllSize), 1, fp); - if (readCount!=1) - { - loadStat = PLAT_CFG_SCALE_LOAD_READ_ERR; - break; - } - if ((loaded_recPrevArAllSzForUpg!=cur_scaleAreaAllSize) ||(loaded_recPrevArAllSzForUpg > loaded_scaleAreaAllSize)) - { - loadStat = PLAT_CFG_SCALE_LOAD_DWNGRADE_ERR; - break; - } - - loaded_fixedBaseSize = fileHeader.fileBodySize -loaded_scaleAreaAllSize; - if (loaded_fixedBaseSize!=cur_fixedBaseSize) - { - loadStat = PLAT_CFG_SCALE_LOAD_BASESZ_ERR; - break; - } - - //branch for dowgrade, seek to sizeof(config_file_header_t) - if (OsaFseek(fp, sizeof(config_file_header_t), SEEK_SET)!=0) - { - loadStat = PLAT_CFG_SCALE_LOAD_SEEK_ERR; - break; - } - - // loaded layout loaded_fixedBaseSize, loaded_scaleAreaStartMark, loaded_scaleAreaPureData0-loaded_scaleAreaPureDataX - // real_read_X=cur_fixedBaseSize-PLAT_CFG_SCALE_CONTROL_SIZE - // - - readCount = OsaFread(&g_fsPlatConfig, cur_fixedBaseSize + cur_scaleAreaAllSize - PLAT_CFG_SCALE_CTRL_TAIL_SIZE(), 1, fp); - if (readCount!=1) - { - loadStat = PLAT_CFG_SCALE_LOAD_READ_ERR; - break; - } - - if (g_fsPlatConfig.scaleAreaStartMark!=PLAT_CFG_SCALE_START_MARK) - { - loadStat = PLAT_CFG_SCALE_LOAD_MARKSTART_ERR; - break; - } - - BSP_SetFsPlatCfgScalArCtrl(); - loadStat = 0; - //all valid data will be loaded to g_fsPlatConfig - //fileHeader.fileBodySize == loaded_fixedBaseSize + loaded_scaleAreaAllSize; - //sizeof(g_fsPlatConfig) == cur_fixedBaseSize + cur_scaleAreaAllSize - break; - - ////////////////////////////////branch for downgrade end /////////////////////////////////////////////////////////////////////////////// - } - - ////////////////////////////////branch for upgrade end //////////////////////////////////////////////////////////////////////////////////// - //cur seek pos sizeof(config_file_header_t) - readCount = OsaFread(&g_fsPlatConfig, fileHeader.fileBodySize, 1, fp); - if (readCount!=1) - { - loadStat = PLAT_CFG_SCALE_LOAD_READ_ERR; - break; - } - p_g_fsPlatConfig = (uint8_t*)(&g_fsPlatConfig); - - crcCheck = BSP_CalcCrcValue(p_g_fsPlatConfig, fileHeader.fileBodySize); - - - if (crcCheck != fileHeader.checkSum) - { - loadStat = PLAT_CFG_SCALE_LOAD_CRC_ERR; - ECPLAT_PRINTF(UNILOG_PLA_DRIVER, BSP_LoadPlatConfig_6, P_ERROR, - "Can't read 'plat_config' crc not match, (%u/%u), ", crcCheck, fileHeader.checkSum); - break; - } - - if(fileHeader.fileBodySize == sizeof(g_fsPlatConfig)) - { - loadStat = PLAT_CFG_SCALE_LOAD_FAST_PASS; - break; - } - - //init loaded_scaleAreaAllSize from p_g_fsPlatConfig +fileBodySize - 2 bytes - loaded_scaleAreaAllSize = *((uint16_t*)(p_g_fsPlatConfig + fileHeader.fileBodySize- sizeof(g_fsPlatConfig.scaleAreaAllSize))); - loaded_fixedBaseSize = fileHeader.fileBodySize -loaded_scaleAreaAllSize; - if (loaded_fixedBaseSize!=cur_fixedBaseSize) - { - loadStat = PLAT_CFG_SCALE_LOAD_BASESZ_ERR; - break; - } - - if(loaded_scaleAreaAllSize< PLAT_CFG_SCALE_CONTROL_SIZE()) - { - loadStat = PLAT_CFG_SCALE_LOAD_SCALESZ_ERR; - break; - } - - //start mark loc same to cur g_fsPlatConfig.scaleAreaStartMark - loaded_scaleAreaStartMark = g_fsPlatConfig.scaleAreaStartMark; - loaded_scaleAreaEndMark = *((uint16_t*)(p_g_fsPlatConfig + fileHeader.fileBodySize - -PLAT_CFG_SCALE_CTRL_TAIL_SIZE())); - - - if (loaded_scaleAreaStartMark!=PLAT_CFG_SCALE_START_MARK) - { - loadStat = PLAT_CFG_SCALE_LOAD_MARKSTART_ERR; - break; - } - - if (loaded_scaleAreaEndMark!=PLAT_CFG_SCALE_END_MARK) - { - loadStat = PLAT_CFG_SCALE_LOAD_MARKEND_ERR; - break; - } - - - BSP_SetFsPlatCfgScalArCtrl(); - loadStat = 0; - - }while(0); - - if(loadStat==0) - { - //update - //give cond: fileHeader.fileBodySize<=sizeof(g_fsPlatConfig) - // cur_fixedBaseSize == loaded_fixedBaseSize - // sizeof(g_fsPlatConfig) == cur_scaleAreaAllSize + cur_fixedBaseSize; - // fileHeader.fileBodySize == (loaded_scaleAreaAllSize + loaded_fixedBaseSize); - //if cur_scaleAreaAllSize -#include -#include "bsp.h" -#include "bsp_custom.h" -#include "osasys.h" -#include "ostask.h" -#include "slpman.h" -#include "tpComm.h" -#include "sctdef.h" -#ifdef FEATURE_SUBSYS_SYSLOG_ENABLE -#include "syslog.h" -#endif -#ifdef FEATURE_SUBSYS_OPENHAL_ENABLE -#include "api_comm.h" -AP_PLAT_COMMON_BSS uint32_t tp_irq_padId = 0; -AP_PLAT_COMMON_BSS uint32_t tp_irq_PinId = 0; -AP_PLAT_COMMON_BSS uint32_t tp_i2c_usrId = 0; -#endif -extern ARM_DRIVER_I2C Driver_I2C0; -AP_PLAT_COMMON_DATA ARM_DRIVER_I2C *i2cMasterDrv = &CREATE_SYMBOL(Driver_I2C, 0); -/** - \fn - \brief - \return -*/ -#ifndef FEATURE_SUBSYS_OPENHAL_ENABLE -AP_PLAT_COMMON_BSS static tpIsrFunc tpIsrCb = NULL; -void tpGpioIsr(uint32_t index) -{ - uint16_t portIrqMask = GPIO_saveAndSetIrqMask(TP_IRQ_GPIO_INSTANCE); - if (GPIO_getInterruptFlags(TP_IRQ_GPIO_INSTANCE) & (1 << TP_IRQ_GPIO_PIN)){ - GPIO_clearInterruptFlags(TP_IRQ_GPIO_INSTANCE, 1 << TP_IRQ_GPIO_PIN); - if(tpIsrCb != NULL){ - tpIsrCb(index); - } - } - GPIO_restoreIrqMask(TP_IRQ_GPIO_INSTANCE, portIrqMask); -} -#endif -/** - \fn - \brief - \return -*/ -void tpIsrInit(void *cb) -{ - PadConfig_t padConfig = {0}; - PAD_getDefaultConfig(&padConfig); - padConfig.pullUpEnable = PAD_PULL_UP_DISABLE; - padConfig.pullDownEnable = PAD_PULL_DOWN_DISABLE; - padConfig.mux = TP_IRQ_PAD_ALT_FUNC; - #ifdef FEATURE_SUBSYS_OPENHAL_ENABLE - tp_irq_padId = api_pad_create(TP_IRQ_PAD_INDEX, &padConfig); - api_pad_open(tp_irq_padId,NULL,0); - #else - PAD_setPinConfig(TP_IRQ_PAD_INDEX, &padConfig); - #endif - GpioPinConfig_t pinConfig = {0}; - pinConfig.pinDirection = GPIO_DIRECTION_INPUT; - pinConfig.misc.interruptConfig = GPIO_INTERRUPT_RISING_EDGE; - #ifdef FEATURE_SUBSYS_OPENHAL_ENABLE - tp_irq_PinId = api_gpio_create((TP_IRQ_GPIO_INSTANCE*16+TP_IRQ_GPIO_PIN), &pinConfig); - api_gpio_open(tp_irq_PinId,NULL,0); - api_gpio_ioctl(tp_irq_PinId,OPEN_GPIO_IOCTL_ISR_CB,cb); - #else - tpIsrCb = cb; - GPIO_pinConfig(TP_IRQ_GPIO_INSTANCE, TP_IRQ_GPIO_PIN, &pinConfig); - XIC_SetVector(PXIC1_GPIO_IRQn, tpGpioIsr); - XIC_EnableIRQ(PXIC1_GPIO_IRQn); - #endif - // SYSLOG_PRINT(SL_INFO, "tpirq[%x],[%x]\r\n",tp_irq_PinId,tp_i2c_usrId); -} -/** - \fn - \brief - \return -*/ -void tpRstInit(void) -{ - #ifdef TP_RST_GPIO_PIN - PadConfig_t padConfig = {0}; - PAD_getDefaultConfig(&padConfig); - padConfig.pullUpEnable = PAD_PULL_UP_DISABLE; - padConfig.pullDownEnable = PAD_PULL_DOWN_DISABLE; - padConfig.mux = TP_RST_PAD_ALT_FUNC; - PAD_setPinConfig(TP_RST_PAD_INDEX, &padConfig); - - GpioPinConfig_t gpioCfg = {0}; - gpioCfg.pinDirection = GPIO_DIRECTION_OUTPUT; - gpioCfg.misc.initOutput = 1; - GPIO_pinConfig(TP_RST_GPIO_INSTANCE, TP_RST_GPIO_PIN, &gpioCfg); - #endif -} -/** - \fn - \brief - \return -*/ -void tpBusInit(void) -{ - #ifdef FEATURE_SUBSYS_OPENHAL_ENABLE - tp_i2c_usrId = api_i2c_create(0,NULL); - api_i2c_open(tp_i2c_usrId,NULL,0); - // SYSLOG_PRINT(SL_INFO, "0x%X\r\n",tp_i2c_usrId); - #else - i2cMasterDrv->Uninitialize(); - i2cMasterDrv->Initialize(NULL); - i2cMasterDrv->PowerControl(ARM_POWER_FULL); - i2cMasterDrv->Control(ARM_I2C_BUS_SPEED, ARM_I2C_BUS_SPEED_FAST); - i2cMasterDrv->Control(ARM_I2C_BUS_CLEAR, 0); - #endif - // TP_TRACE(tpBusInit, 1, "I2C_IO_MODE:%d",I2C_IO_MODE); -} -/** - \fn - \brief - \return -*/ -void tpBusDeInit(void) -{ - i2cMasterDrv->Uninitialize(); -} -/** - \fn - \brief - \return -*/ -uint8_t tp_i2c_read(uint8_t dev_id, uint8_t reg_addr, uint16_t len, uint8_t *data) -{ - i2cMasterDrv->MasterTransmit(dev_id, ®_addr, 1, true); - i2cMasterDrv->MasterReceive(dev_id, data, len, false); - return 0; -} -/** - \fn - \brief - \return -*/ -uint8_t tp_i2c_send(uint8_t dev_id, uint8_t reg_addr, uint16_t len, uint8_t *data) -{ - uint8_t * tempBuffer = callocEc(len+1,sizeof(char)); - memcpy(tempBuffer+1,data,len); - tempBuffer[0] = reg_addr; - i2cMasterDrv->MasterTransmit(dev_id, tempBuffer, len+1, false); - freeEc(tempBuffer); - return 0; -} - -#endif \ No newline at end of file diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/tp/tpDev/ft6336.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/tp/tpDev/ft6336.c deleted file mode 100644 index 962c397..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/tp/tpDev/ft6336.c +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2024-, Copyrigths of EigenComm Ltd. - * File name: ft6336.c - * Description: ec7xx ft6336 driver source file - * History: Rev1.1 2024-03-08 - * - ****************************************************************************/ -#ifdef FEATURE_TP_FT6336_ENABLE -#include -#include -#include "tpDrv.h" -#include "tpComm.h" -#include "ft6336.h" -#ifdef FEATURE_SUBSYS_SYSLOG_ENABLE -#include "syslog.h" -#endif -#include "sctdef.h" - -/** - \fn - \brief - \return -*/ -int tp_ft6336_send(uint8_t regAddr, uint8_t* buf,uint8_t len) -{ - return tp_i2c_send(FT6336_ADDR, regAddr, len, buf); -} -/** - \fn - \brief - \return -*/ -int tp_ft6336_read(uint8_t regAddr, uint8_t* buf,uint8_t len) -{ - return tp_i2c_read(FT6336_ADDR, regAddr, len, buf); -} - -/** - \fn - \brief - \return -*/ -uint8_t tp_ft6336_scan(int16_t *pos) -{ - uint8_t temp[8]={0}; - uint8_t fingerNum = 0; - tp_ft6336_read(FT6336_GET_FINGERNUM,&fingerNum,1); - if(fingerNum) - { - tp_ft6336_read(FT6336_GET_LOC0,temp,4); - pos[0]=((uint16_t)(temp[0]&0x0F)<<8)+temp[1]; - pos[1]=(((uint16_t)(temp[2]&0x0F)<<8)+temp[3]); - // printf("x1:%d,y1:%d\r\n",pos[0], pos[1]); - if(fingerNum>1) - { - tp_ft6336_read(FT6336_GET_LOC1,&temp[4],4); - pos[2]=((uint16_t)(temp[4]&0x0F)<<8)+temp[5]; - pos[3]=(((uint16_t)(temp[6]&0x0F)<<8)+temp[7]); - } - } - return fingerNum; -} -/** - \fn - \brief - \return -*/ - -static int tp_ft6336_init(void* cb) -{ - SYSLOG_INFO("ID\r\n"); - return 0; -} -/** - \fn - \brief - \return -*/ -AP_PLAT_COMMON_DATA tpDrvFunc_t ft6336Drv = -{ - .init = tp_ft6336_init, - .send = tp_ft6336_send, - .read = tp_ft6336_read, - .scan = tp_ft6336_scan, -}; -/** - \fn - \brief - \return -*/ -AP_PLAT_COMMON_DATA tpDrvPra_t ft6336Pra = -{ - .id = 0x6336, - .width = 240, - .height = 320, -}; -#endif \ No newline at end of file diff --git a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/tp/tpDrv.c b/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/tp/tpDrv.c deleted file mode 100644 index c0427e5..0000000 --- a/ec_fullsdk/PLAT/driver/board/ec7xx_speaker_1h00/src/tp/tpDrv.c +++ /dev/null @@ -1,232 +0,0 @@ -/**************************************************************************** - * - * Copy right: 2023-, Copyrigths of EigenComm Ltd. - * File name: tpDrv.c - * Description: ec7xx tpDrv driver source file - * History: Rev1.0 2023-09-18 - * - ****************************************************************************/ -#ifdef FEATURE_DRIVER_TP_ENABLE -#include -#include -#include "bsp.h" -#include "bsp_custom.h" -#include "osasys.h" -#include "ostask.h" -#include "slpman.h" -#include "tpDrv.h" - -#ifdef FEATURE_SUBSYS_SYSLOG_ENABLE -#include "syslog.h" -#endif - -#ifdef FEATURE_TP_FT6336_ENABLE -#include "ft6336.h" -extern tpDrvFunc_t ft6336Drv; -extern tpDrvPra_t ft6336Pra; -#endif -#ifdef FEATURE_TP_CST816_ENABLE -#include "cst816.h" -extern tpDrvFunc_t cst816Drv; -extern tpDrvPra_t cst816Pra; -#endif -#ifdef FEATURE_TP_GT911_ENABLE -#include "gt911.h" -extern tpDrvFunc_t gt911Drv; -extern tpDrvPra_t gt911Pra; -#endif -#include "sctdef.h" - -AP_PLAT_COMMON_BSS static tpDev_t tpDevList[SUPPORT_TP_NUM] ; -AP_PLAT_COMMON_DATA static tpObj_t tpObjList[SUPPORT_TP_NUM] = -{ - {"ft6336", 0x6336}, - {"cst816", 0x816}, - {"gt911", 0x911}, -}; - -AP_PLAT_COMMON_BSS int16_t xy_pos[4]={0}; -AP_PLAT_COMMON_BSS int16_t last_xy_pos[4]={0}; -AP_PLAT_COMMON_BSS static bool is_pressed = false; -#ifndef FEATURE_SUBSYS_INPUT_ENABLE -AP_PLAT_COMMON_BSS static osSemaphoreId_t tpSemaphore = NULL; -#endif - -#define TP_TRACE(subId, argLen, format, ...) \ - ECOMM_TRACE(UNILOG_TP, subId, P_VALUE, argLen, format, ##__VA_ARGS__) -/** - \fn - \brief - \return -*/ -void tpIsrCallback(uint32_t data) -{ - #ifdef FEATURE_SUBSYS_INPUT_ENABLE - inputNotify(); - #else - if (tpSemaphore != NULL) - { - osSemaphoreRelease(tpSemaphore); - } - #endif -} -/** - \fn - \brief - \return -*/ -bool tpPressed(void) -{ - // SYSLOG_INFO("get\r\n"); - return is_pressed; -} -/** - \fn - \brief - \return -*/ -uint8_t tpScan(tpDev_t* tpDev) -{ - uint8_t fingers = 0; - if (tpDev!=NULL) fingers = tpDev->drv->scan(xy_pos); - if(fingers) - { - if(xy_pos[0]!=last_xy_pos[0] || xy_pos[1]!=last_xy_pos[1]) - { - is_pressed = true; - TP_TRACE(tpScan, 5, "%d,%d->%d,%d->%d",fingers,last_xy_pos[0],xy_pos[0],last_xy_pos[1],xy_pos[1]); - SYSLOG_INFO("[%d]%d->%d,%d->%d\r\n",fingers,last_xy_pos[0],xy_pos[0],last_xy_pos[1],xy_pos[1]); - memcpy(last_xy_pos,xy_pos,sizeof(xy_pos)); - } - } - return fingers; -} -/** - \fn - \brief - \return -*/ -void tpData(int16_t* x,int16_t* y) -{ - if(is_pressed) - { - *x=xy_pos[0]; - *y=xy_pos[1]; - is_pressed = false; - // SYSLOG_INFO("clean\r\n"); - } -} - - -/** - \fn - \brief - \return -*/ -void tpLoop(tpDev_t* tpDev,uint32_t timeout) -{ - #ifndef FEATURE_SUBSYS_INPUT_ENABLE - osSemaphoreAcquire(tpSemaphore, timeout); - #else - osDelay(timeout); - #endif - tpScan(tpDev); -} -/** - \fn - \brief - \return -*/ -static uint8_t tpFind(tpDev_t *tpList) -{ - uint8_t cnt = 0; - if (tpList == NULL) return SUPPORT_TP_NUM; - for (uint8_t i = 0; i < SUPPORT_TP_NUM; i++) - { - tpDev_t *pdev = NULL; - memset(tpList + cnt, 0, sizeof(tpDev_t)); - #ifdef FEATURE_TP_FT6336_ENABLE - if (tpObjList[i].id == ft6336Pra.id) - { - pdev = tpList + cnt; - cnt++; - pdev->pra = &ft6336Pra; - pdev->drv = &ft6336Drv; - pdev->obj = &tpObjList[i]; - } - #endif - #ifdef FEATURE_TP_CST816_ENABLE - if (tpObjList[i].id == cst816Pra.id) - { - pdev = tpList + cnt; - cnt++; - pdev->pra = &cst816Pra; - pdev->drv = &cst816Drv; - pdev->obj = &tpObjList[i]; - } - #endif - #ifdef FEATURE_TP_GT911_ENABLE - if (tpObjList[i].id == gt911Pra.id) - { - pdev = tpList + cnt; - cnt++; - pdev->pra = >911Pra; - pdev->drv = >911Drv; - pdev->obj = &tpObjList[i]; - } - #endif - } - // Return the count of populated LCD devices - return cnt; -} -/** - \fn - \brief - \return -*/ -int tpInit(void* tp_cb) -{ - uint8_t num = tpFind(tpDevList); - if (num > INSTALL_TP_NUM) num = INSTALL_TP_NUM; - if(num){ - #ifndef FEATURE_SUBSYS_INPUT_ENABLE - if(tpSemaphore != NULL){ - osSemaphoreDelete(tpSemaphore); - } - tpSemaphore = osSemaphoreNew(1, 1, NULL); - #endif - tpBusInit(); - tpRstInit(); - } - for (uint8_t i = 0; i < num; i++) - { - if (tpDevList[i].obj->id) - { - tpDev_t *pdev = &tpDevList[i]; - pdev->drv->init(tp_cb); - } - } - if(num) tpIsrInit(tpIsrCallback); - return num; -} -/** - \fn - \brief - \return -*/ -tpDev_t* tpOpen(char* name) -{ - if(name == NULL) return NULL; - for (uint8_t i = 0; i < INSTALL_TP_NUM; i++) - { - tpDev_t *pdev = &tpDevList[i]; - // SYSLOG_INFO("0x%X,%s,%s\r\n",pdev->obj->id,pdev->obj->name,name); - if (pdev->obj->id != 0 && strcasecmp(name, pdev->obj->name) == 0) - { - SYSLOG_INFO("%d:0x%X,%s\r\n",i,pdev->obj->id,pdev->obj->name); - return pdev; - } - } - return NULL; -} -#endif