You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

230 lines
7.7 KiB

/**
******************************************************************************
* @file adv7533.h
* @author MCD Application Team
* @brief This file contains all the constants parameters for the ADV7533
* which is the HDMI bridge between DSI and HDMI
******************************************************************************
* @attention
*
* <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. Neither the name of STMicroelectronics nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __ADV7533_H
#define __ADV7533_H
/* Includes ------------------------------------------------------------------*/
#include "../Common/audio.h"
/** @addtogroup BSP
* @{
*/
/** @addtogroup Components
* @{
*/
/** @addtogroup adv7533
* @{
*/
/** @addtogroup ADV7533_Exported_Types
* @{
*/
typedef struct {
uint8_t DSI_LANES;
uint16_t HACT;
uint16_t HSYNC;
uint16_t HBP;
uint16_t HFP;
uint16_t VACT;
uint16_t VSYNC;
uint16_t VBP;
uint16_t VFP;
uint8_t ASPECT_RATIO;
} adv7533ConfigTypeDef;
/** @defgroup ADV7533_Exported_Constants
* @{
*/
/**
* @brief HDMI audio output DEVICE
*/
#define OUTPUT_DEVICE_ADV7533_HDMI ((uint16_t)0x1000)
/**
* @brief ADV7533 I2C Addresses 0x7A / 0x78
*/
#define ADV7533_MAIN_I2C_ADDR ((uint8_t)0x7A)
#define ADV7533_CEC_DSI_I2C_ADDR ((uint8_t)0x78)
/**
* @brief ADV7533 Aspect ratio
*/
#define ADV7533_ASPECT_RATIO_16_9 ((uint8_t)0x00)
#define ADV7533_ASPECT_RATIO_4_3 ((uint8_t)0x01)
/**
* @brief ADV7533 Aspect ratio
*/
#define ADV7533_MODE_HDMI 0x0
#define ADV7533_MODE_DVI 0x1
/**
* @brief ADV7533 Main Registers
*/
#define ADV7533_MAIN_SYNC_REG ((uint8_t)0x17)
#define ADV7533_MAIN_POWER_DOWN_REG ((uint8_t)0x41)
#define ADV7533_MAIN_HPG_REG ((uint8_t)0x42)
/**
* @brief ADV7533 Main Features Parameters
*/
/**
* @brief ADV7533 CEC DSI Registers
*/
#define ADV7533_CEC_DSI_INTERNAL_TIMING_REG ((uint8_t)0x27)
#define ADV7533_CEC_DSI_TOTAL_WIDTH_H_REG ((uint8_t)0x28)
#define ADV7533_CEC_DSI_TOTAL_WIDTH_L_REG ((uint8_t)0x29)
#define ADV7533_CEC_DSI_HSYNC_H_REG ((uint8_t)0x2A)
#define ADV7533_CEC_DSI_HSYNC_L_REG ((uint8_t)0x2B)
#define ADV7533_CEC_DSI_HFP_H_REG ((uint8_t)0x2C)
#define ADV7533_CEC_DSI_HFP_L_REG ((uint8_t)0x2D)
#define ADV7533_CEC_DSI_HBP_H_REG ((uint8_t)0x2E)
#define ADV7533_CEC_DSI_HBP_L_REG ((uint8_t)0x2F)
#define ADV7533_CEC_DSI_TOTAL_HEIGHT_H_REG ((uint8_t)0x30)
#define ADV7533_CEC_DSI_TOTAL_HEIGHT_L_REG ((uint8_t)0x31)
#define ADV7533_CEC_DSI_VSYNC_H_REG ((uint8_t)0x32)
#define ADV7533_CEC_DSI_VSYNC_L_REG ((uint8_t)0x33)
#define ADV7533_CEC_DSI_VFP_H_REG ((uint8_t)0x34)
#define ADV7533_CEC_DSI_VFP_L_REG ((uint8_t)0x35)
#define ADV7533_CEC_DSI_VBP_H_REG ((uint8_t)0x36)
#define ADV7533_CEC_DSI_VBP_L_REG ((uint8_t)0x37)
/** @Brief adv7533 ID
*/
#define ADV7533_ID 0x7533
/** @Brief device ID register
*/
#define ADV7533_CHIPID_ADDR0 0x00
#define ADV7533_CHIPID_ADDR1 0x01
/* MUTE commands */
#define AUDIO_MUTE_ON 1
#define AUDIO_MUTE_OFF 0
/* AUDIO FREQUENCY */
#define AUDIO_FREQUENCY_192K ((uint32_t)192000)
#define AUDIO_FREQUENCY_176K ((uint32_t)176400)
#define AUDIO_FREQUENCY_96K ((uint32_t)96000)
#define AUDIO_FREQUENCY_88K ((uint32_t)88200)
#define AUDIO_FREQUENCY_48K ((uint32_t)48000)
#define AUDIO_FREQUENCY_44K ((uint32_t)44100)
#define AUDIO_FREQUENCY_32K ((uint32_t)32000)
/**
* @}
*/
/* Exported macro ------------------------------------------------------------*/
/** @defgroup ADV7533_Exported_Macros ADV7533 Exported Macros
* @{
*/
/**
* @}
*/
/* Exported functions --------------------------------------------------------*/
/** @addtogroup ADV7533_Exported_Functions
* @{
*/
/*------------------------------------------------------------------------------
HDMI video functions
------------------------------------------------------------------------------*/
uint8_t ADV7533_Init(void);
void ADV7533_PowerOn(void);
void ADV7533_PowerDown(void);
void ADV7533_Configure(adv7533ConfigTypeDef * config);
void ADV7533_PatternEnable(void);
void ADV7533_PatternDisable(void);
/*------------------------------------------------------------------------------
HDMI Audio functions
------------------------------------------------------------------------------*/
uint32_t adv7533_AudioInit(uint16_t DeviceAddr, uint16_t OutputDevice, uint8_t Volume,uint32_t AudioFreq);
void adv7533_DeInit(void);
uint32_t adv7533_ReadID(uint16_t DeviceAddr);
uint32_t adv7533_Play(uint16_t DeviceAddr, uint16_t* pBuffer, uint16_t Size);
uint32_t adv7533_Stop(uint16_t DeviceAddr,uint32_t Cmd);
uint32_t adv7533_Pause(uint16_t DeviceAddr);
uint32_t adv7533_Resume(uint16_t DeviceAddr);
uint32_t adv7533_SetMute(uint16_t DeviceAddr, uint32_t Cmd);
uint32_t adv7533_SetVolume(uint16_t, uint8_t);
uint32_t adv7533_Reset(uint16_t DeviceAddr);
uint32_t adv7533_SetOutputMode(uint16_t DeviceAddr, uint8_t Output);
uint32_t adv7533_SetFrequency(uint16_t DeviceAddr, uint32_t AudioFreq);
/* HDMI IO functions */
void HDMI_IO_Init(void);
void HDMI_IO_Write(uint8_t addr, uint8_t reg, uint8_t value);
uint8_t HDMI_IO_Read(uint8_t addr, uint8_t reg);
void HDMI_IO_Delay(uint32_t delay);
void AUDIO_IO_DeInit(void);
/**
* @}
*/
/* HDMI Audio driver structure */
extern AUDIO_DrvTypeDef adv7533_drv;
#endif /* __ADV7533_H */
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/