Files
Linux_Drivers/freertos/cvitek/common/include/cv1835/peri.h
carbon ca03037500 freertos: release the generic version source code
freertos runs on the second core (small one) of the CPU
2023-10-19 14:31:43 +08:00

109 lines
2.6 KiB
C

/*
* Copyright (C) Cvitek Co., Ltd. 2019-2020. All rights reserved.
*
* File Name: include/peri.h
* Description:
* peripheral includes i2c for sns and reg for isp.
*/
#ifndef __PERI_H__
#define __PERI_H__
#ifdef __cplusplus
extern "C" {
#endif /* End of #ifdef __cplusplus */
/* This function must be called to initialize the I2C master interface on the respective hardware pins.
*
* @i2c_bus: id of the i2c bus
* @slave_addr: slave addr of the i2c device
*/
int i2cInit(uint8_t i2c_bus, uint8_t slave_addr);
/* This function must be called to release resource.
*
*/
void i2cExit(void);
/* I2C Read
*
* @addr: reg address
* @addr_nbytes: number of bytes of reg address. 2 for 16-bit;1 for 8-bit address.
* @buffer: Pointer to the buffer where the data bytes that are received will be written to
* @nbytes: Number of bytes to receive
*
* @return: Zero on success
*/
int i2cRead(uint16_t addr, unsigned int addr_nbytes, uint8_t *buffer,
unsigned int data_nbytes);
/* I2C Write
*
* @addr: reg address
* @addr_nbytes: number of bytes of reg address. 2 for 16-bit;1 for 8-bit address.
* @buffer: Pointer to the buffer that holds data bytes to send
* @nbytes: Number of bytes to send
*
* @return: Zero on success
*/
int i2cWrite(uint16_t addr, unsigned int addr_nbytes, uint8_t *buffer,
unsigned int data_nbytes);
/* This function must be called to initialize the reg access.
*
*/
int regInit(void);
/* This function must be called to release resource.
*
*/
int regExit(void);
/* REG Read
*
* @addr: reg address(32bit)
*
* @return: Zero on success
*/
uint32_t regRead(uint32_t addr);
/* REG Write
*
* @addr: reg address(32bit)
* @data: data to be writen.
*
*/
void regWrite(uint32_t addr, uint32_t data);
/* REG Write with mask
*
* @addr: reg address(32bit)
* @data: data to be writen.
* @mask: only masked bits will be updated.
*
*/
void regWriteMask(uint32_t addr, uint32_t data, uint32_t mask);
/* REG Read
*
* @addr: reg address(32bit)
* @buffer: Pointer to the buffer where the data bytes that are received will be written to
* @ndws: Number of DWORDs to receive
*
*/
void regReadBurst(uint32_t addr, uint32_t *buffer, unsigned int ndws);
/* REG Write
*
* @addr: reg address(32bit)
* @buffer: Pointer to the buffer that holds data bytes to send
* @ndws: Number of DWORDs to send
*
*/
void regWriteBurst(uint32_t addr, uint32_t *buffer, unsigned int ndws);
#ifdef __cplusplus
}
#endif /* End of #ifdef __cplusplus */
#endif /*__PERI_H__ */