Initial commit: TXW82x FPV v2.7.0.7-42229 SDK + project sources

This commit is contained in:
2026-07-06 11:30:13 +08:00
commit e76462eeb7
3451 changed files with 1415300 additions and 0 deletions

1552
sdk/lib/lcd/lcd_v3.c Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,508 @@
#include "sys_config.h"
#include "typesdef.h"
#include "lib/video/dvp/cmos_sensor/csi.h"
#include "dev.h"
#include "devid.h"
#include "hal/gpio.h"
#include "hal/lcdc.h"
#include "hal/spi.h"
#include "hal/dsi.h"
#include "osal/irq.h"
#include "osal/string.h"
#include "dev/vpp/hgvpp.h"
#include "dev/scale/hgscale.h"
#include "dev/jpg/hgjpg.h"
#include "dev/lcdc/hglcdc.h"
#include "osal/semaphore.h"
#include "lib/lcd/lcd.h"
#include "osal/mutex.h"
#include "osal/sleep.h"
#ifdef PIN_FROM_PARAM
#include "pin_param.h"
#endif
uint8_t *dpipixel_fifo_mipi = NULL;
uint8_t *generic_fifo_mipi = NULL;
void mipi_set_maxrpack(struct dsi_device *dsi_dev,uint8_t size){
mipi_dsi_cmd_cfg(dsi_dev,DSI_SP_MAXRPACK,size,0,0);
mipi_dsi_wait_pkt_fifo_full(dsi_dev);
}
void mipi_read_id(struct dsi_device *dsi_dev,uint8_t vcid,uint8_t cmd,uint32_t *buf,uint8_t len){
uint8_t i = 0;
mipi_dsi_cmd_cfg(dsi_dev,DSI_SP_DCSR0P,cmd,vcid,0);
for(i =0;i < len;i = i+4){
mipi_dsi_gen_pld_read_empty(dsi_dev);
buf[i/4] = mipi_dsi_get_gen_pld_data(dsi_dev);
}
}
void mipi_set_genw0p(struct dsi_device * dsi_dev,uint8_t vc_id){
mipi_dsi_cmd_cfg(dsi_dev,DSI_SP_GENW0P,0,vc_id,0);
}
void mipi_set_genw1p(struct dsi_device * dsi_dev,uint8_t vc_id,uint8_t cmd){
mipi_dsi_cmd_cfg(dsi_dev,DSI_SP_GENW1P,cmd,vc_id,0);
}
void mipi_set_dcsw1p(struct dsi_device * dsi_dev,uint8_t vc_id,uint8_t cmd){
mipi_dsi_cmd_cfg(dsi_dev,DSI_SP_DCSW0P,cmd,vc_id,0);
}
void mipi_set_lp_genw(struct dsi_device * dsi_dev,uint8_t vc_id,uint8_t *buf,uint32_t len){
uint32_t i;
for(i=0;i<len;i=i+4)
{
mipi_dsi_gen_pld_write_full(dsi_dev);
mipi_dsi_set_gen_pld_data(dsi_dev,buf[i+0],buf[i+1],buf[i+2],buf[i+3]);
}
mipi_dsi_gen_pld_write_full(dsi_dev);
mipi_dsi_cmd_cfg(dsi_dev,DSI_LP_GENW,len,vc_id,0);
}
void mipi_set_lp_dcsw(struct dsi_device * dsi_dev,uint8_t vc_id,uint8_t *buf,uint32_t len){
uint32_t i;
for(i=0;i<len;i=i+4)
{
mipi_dsi_gen_pld_write_full(dsi_dev);
mipi_dsi_set_gen_pld_data(dsi_dev,buf[i+0],buf[i+1],buf[i+2],buf[i+3]);
}
mipi_dsi_gen_pld_write_full(dsi_dev);
mipi_dsi_cmd_cfg(dsi_dev,DSI_LP_DCSW,len,vc_id,0);
}
void mipi_set_genw2p(struct dsi_device * dsi_dev,uint8_t vc_id,uint8_t cmd,uint8_t dat){
mipi_dsi_cmd_cfg(dsi_dev,DSI_SP_GENW2P,cmd,vc_id,dat);
}
void mipi_set_dcsw2p(struct dsi_device * dsi_dev,uint8_t vc_id,uint8_t cmd,uint8_t dat){
mipi_dsi_cmd_cfg(dsi_dev,DSI_SP_DCSW1P,cmd,vc_id,dat);
}
void mipi_set_cmd(struct dsi_device * dsi_dev,uint8_t vc_id,uint8_t cmd){
mipi_dsi_cmd_cfg(dsi_dev,DSI_SP_DCSR0P,cmd,vc_id,0);
}
void mipi_get_data(struct dsi_device * dsi_dev,uint32_t *buf,uint8_t len){
uint8_t i = 0;
for(i = 0; i < len;i=i+4){
mipi_dsi_gen_pld_read_empty(dsi_dev);
buf[i/4] = mipi_dsi_get_gen_pld_data(dsi_dev);
}
}
extern lcddev_t lcdstruct;
void lcd_mipi_table_init(struct dsi_device * dsi_dev,uint8_t vc_id,uint8_t *lcd_table){
uint32 itk = 0;
uint8 last_opt = -1;
uint8 buf[120];
uint8 code;
uint8 dly_ms = 0;
uint8 param_num = 0;
while(((lcd_table[itk] == LCD_TAB_END) && (lcd_table[itk+1] == LCD_TAB_END)) == 0){
switch(lcd_table[itk]){
case LCD_CMD:
if(last_opt == LCD_CMD){
_os_printf("cmd:%02x %02x param_num:%d \r\n",buf[0],buf[1],param_num);
if(param_num == 1){
//mipi_set_genw1p(dsi_dev,vc_id,buf[0]);
mipi_set_dcsw1p(dsi_dev,vc_id,buf[0]);
mipi_dsi_wait_pkt_fifo_full(dsi_dev);
}else if(param_num == 2){
//mipi_set_genw2p(dsi_dev,vc_id,buf[0],buf[1]);
mipi_set_dcsw2p(dsi_dev,vc_id,buf[0],buf[1]);
mipi_dsi_wait_pkt_fifo_full(dsi_dev);
}else{
//mipi_set_lp_genw(dsi_dev,vc_id,buf,param_num);
mipi_set_lp_dcsw(dsi_dev,vc_id,buf,param_num);
mipi_dsi_wait_pkt_fifo_full(dsi_dev);
}
//lcd_register_write_3line(code,buf,param_num);
}else if(last_opt == DELAY_MS){
//_os_printf("delay:%d\r\n",dly_ms);
os_sleep_ms(dly_ms);
}
last_opt = LCD_CMD;
param_num = 0;
code = lcd_table[itk+1];
buf[param_num] = code;
param_num++;
break;
case LCD_DAT:
buf[param_num] = lcd_table[itk+1];
param_num++;
break;
case DELAY_MS:
if(last_opt == LCD_CMD){
_os_printf("cmd:%02x %02x param_num:%d \r\n",buf[0],buf[1],param_num);
if(param_num == 1){
//mipi_set_genw1p(dsi_dev,vc_id,buf[0]);
mipi_set_dcsw1p(dsi_dev,vc_id,buf[0]);
mipi_dsi_wait_pkt_fifo_full(dsi_dev);
}else if(param_num == 2){
//mipi_set_genw2p(dsi_dev,vc_id,buf[0],buf[1]);
mipi_set_dcsw2p(dsi_dev,vc_id,buf[0],buf[1]);
mipi_dsi_wait_pkt_fifo_full(dsi_dev);
}else{
//mipi_set_lp_genw(dsi_dev,vc_id,buf,param_num);
mipi_set_lp_dcsw(dsi_dev,vc_id,buf,param_num);
mipi_dsi_wait_pkt_fifo_full(dsi_dev);
}
//lcd_register_write_3line(code,buf,param_num);
}else if(last_opt == DELAY_MS){
//_os_printf("delay:%d\r\n",dly_ms);
os_sleep_ms(dly_ms);
}
last_opt = DELAY_MS;
dly_ms = lcd_table[itk+1];
break;
default:
break;
}
itk +=2;
}
if(last_opt == LCD_CMD){
_os_printf("cmd:%02x %02x param_num:%d \r\n",buf[0],buf[1],param_num);
if(param_num == 1){
//mipi_set_genw1p(dsi_dev,vc_id,buf[0]);
mipi_set_dcsw1p(dsi_dev,vc_id,buf[0]);
mipi_dsi_wait_pkt_fifo_full(dsi_dev);
}else if(param_num == 2){
//mipi_set_genw2p(dsi_dev,vc_id,buf[0],buf[1]);
mipi_set_dcsw2p(dsi_dev,vc_id,buf[0],buf[1]);
mipi_dsi_wait_pkt_fifo_full(dsi_dev);
}else{
//mipi_set_lp_genw(dsi_dev,vc_id,buf,param_num);
mipi_set_lp_dcsw(dsi_dev,vc_id,buf,param_num);
mipi_dsi_wait_pkt_fifo_full(dsi_dev);
}
}else if(last_opt == DELAY_MS){
//_os_printf("delay:%d\r\n",dly_ms);
os_sleep_ms(dly_ms);
}
}
//2,0,1,4,3,1,0,0,0,0
void mipi_dsi_io_remap(uint8_t *cfgbuf){
uint8_t itk = 0;
uint8_t cfg_num = 0;
if((MACRO_PIN(PIN_MIPI_DSI_CLKN) == PD_2) || (MACRO_PIN(PIN_MIPI_DSI_CLKN) == PD_3)){ //lane 0
cfgbuf[0] = 0;
if(MACRO_PIN(PIN_MIPI_DSI_CLKN) == PD_3){
cfgbuf[5] = 1;
}else{
cfgbuf[5] = 0;
}
}else if((MACRO_PIN(PIN_MIPI_DSI_CLKN) == PD_4) || (MACRO_PIN(PIN_MIPI_DSI_CLKN) == PD_5)){
cfgbuf[0] = 1;
if(MACRO_PIN(PIN_MIPI_DSI_CLKN) == PD_5){
cfgbuf[5] = 1;
}else{
cfgbuf[5] = 0;
}
}else if((MACRO_PIN(PIN_MIPI_DSI_CLKN) == PD_6) || (MACRO_PIN(PIN_MIPI_DSI_CLKN) == PD_7)){
cfgbuf[0] = 2;
if(MACRO_PIN(PIN_MIPI_DSI_CLKN) == PD_7){
cfgbuf[5] = 1;
}else{
cfgbuf[5] = 0;
}
}else if((MACRO_PIN(PIN_MIPI_DSI_CLKN) == PD_8) || (MACRO_PIN(PIN_MIPI_DSI_CLKN) == PD_9)){
cfgbuf[0] = 3;
if(MACRO_PIN(PIN_MIPI_DSI_CLKN) == PD_9){
cfgbuf[5] = 1;
}else{
cfgbuf[5] = 0;
}
}else if((MACRO_PIN(PIN_MIPI_DSI_CLKN) == PD_10) || (MACRO_PIN(PIN_MIPI_DSI_CLKN) == PD_11)){
cfgbuf[0] = 4;
if(MACRO_PIN(PIN_MIPI_DSI_CLKN) == PD_11){
cfgbuf[5] = 1;
}else{
cfgbuf[5] = 0;
}
}
if((MACRO_PIN(PIN_MIPI_DSI_D0N) == PD_2) || (MACRO_PIN(PIN_MIPI_DSI_D0N) == PD_3)){ //lane 1
cfgbuf[1] = 0;
if(MACRO_PIN(PIN_MIPI_DSI_D0N) == PD_3){
cfgbuf[6] = 1;
}else{
cfgbuf[6] = 0;
}
}else if((MACRO_PIN(PIN_MIPI_DSI_D0N) == PD_4) || (MACRO_PIN(PIN_MIPI_DSI_D0N) == PD_5)){
cfgbuf[1] = 1;
if(MACRO_PIN(PIN_MIPI_DSI_D0N) == PD_5){
cfgbuf[6] = 1;
}else{
cfgbuf[6] = 0;
}
}else if((MACRO_PIN(PIN_MIPI_DSI_D0N) == PD_6) || (MACRO_PIN(PIN_MIPI_DSI_D0N) == PD_7)){
cfgbuf[1] = 2;
if(MACRO_PIN(PIN_MIPI_DSI_D0N) == PD_7){
cfgbuf[6] = 1;
}else{
cfgbuf[6] = 0;
}
}else if((MACRO_PIN(PIN_MIPI_DSI_D0N) == PD_8) || (MACRO_PIN(PIN_MIPI_DSI_D0N) == PD_9)){
cfgbuf[1] = 3;
if(MACRO_PIN(PIN_MIPI_DSI_D0N) == PD_9){
cfgbuf[6] = 1;
}else{
cfgbuf[6] = 0;
}
}else if((MACRO_PIN(PIN_MIPI_DSI_D0N) == PD_10) || (MACRO_PIN(PIN_MIPI_DSI_D0N) == PD_11)){
cfgbuf[1] = 4;
if(MACRO_PIN(PIN_MIPI_DSI_D0N) == PD_11){
cfgbuf[6] = 1;
}else{
cfgbuf[6] = 0;
}
}
if((MACRO_PIN(PIN_MIPI_DSI_D1N) == PD_2) || (MACRO_PIN(PIN_MIPI_DSI_D1N) == PD_3)){ //lane 2
cfgbuf[2] = 0;
if(MACRO_PIN(PIN_MIPI_DSI_D1N) == PD_3){
cfgbuf[7] = 1;
}else{
cfgbuf[7] = 0;
}
}else if((MACRO_PIN(PIN_MIPI_DSI_D1N) == PD_4) || (MACRO_PIN(PIN_MIPI_DSI_D1N) == PD_5)){
cfgbuf[2] = 1;
if(MACRO_PIN(PIN_MIPI_DSI_D1N) == PD_5){
cfgbuf[7] = 1;
}else{
cfgbuf[7] = 0;
}
}else if((MACRO_PIN(PIN_MIPI_DSI_D1N) == PD_6) || (MACRO_PIN(PIN_MIPI_DSI_D1N) == PD_7)){
cfgbuf[2] = 2;
if(MACRO_PIN(PIN_MIPI_DSI_D1N) == PD_7){
cfgbuf[7] = 1;
}else{
cfgbuf[7] = 0;
}
}else if((MACRO_PIN(PIN_MIPI_DSI_D1N) == PD_8) || (MACRO_PIN(PIN_MIPI_DSI_D1N) == PD_9)){
cfgbuf[2] = 3;
if(MACRO_PIN(PIN_MIPI_DSI_D1N) == PD_9){
cfgbuf[7] = 1;
}else{
cfgbuf[7] = 0;
}
}else if((MACRO_PIN(PIN_MIPI_DSI_D1N) == PD_10) || (MACRO_PIN(PIN_MIPI_DSI_D1N) == PD_11)){
cfgbuf[2] = 4;
if(MACRO_PIN(PIN_MIPI_DSI_D1N) == PD_11){
cfgbuf[7] = 1;
}else{
cfgbuf[7] = 0;
}
}
if((MACRO_PIN(PIN_MIPI_DSI_D2N) == PD_2) || (MACRO_PIN(PIN_MIPI_DSI_D2N) == PD_3)){ //lane 3
cfgbuf[3] = 0;
if(MACRO_PIN(PIN_MIPI_DSI_D2N) == PD_3){
cfgbuf[8] = 1;
}else{
cfgbuf[8] = 0;
}
}else if((MACRO_PIN(PIN_MIPI_DSI_D2N) == PD_4) || (MACRO_PIN(PIN_MIPI_DSI_D2N) == PD_5)){
cfgbuf[3] = 1;
if(MACRO_PIN(PIN_MIPI_DSI_D2N) == PD_5){
cfgbuf[8] = 1;
}else{
cfgbuf[8] = 0;
}
}else if((MACRO_PIN(PIN_MIPI_DSI_D2N) == PD_6) || (MACRO_PIN(PIN_MIPI_DSI_D2N) == PD_7)){
cfgbuf[3] = 2;
if(MACRO_PIN(PIN_MIPI_DSI_D2N) == PD_7){
cfgbuf[8] = 1;
}else{
cfgbuf[8] = 0;
}
}else if((MACRO_PIN(PIN_MIPI_DSI_D2N) == PD_8) || (MACRO_PIN(PIN_MIPI_DSI_D2N) == PD_9)){
cfgbuf[3] = 3;
if(MACRO_PIN(PIN_MIPI_DSI_D2N) == PD_9){
cfgbuf[8] = 1;
}else{
cfgbuf[8] = 0;
}
}else if((MACRO_PIN(PIN_MIPI_DSI_D2N) == PD_10) || (MACRO_PIN(PIN_MIPI_DSI_D2N) == PD_11)){
cfgbuf[3] = 4;
if(MACRO_PIN(PIN_MIPI_DSI_D2N) == PD_11){
cfgbuf[8] = 1;
}else{
cfgbuf[8] = 0;
}
}
if((MACRO_PIN(PIN_MIPI_DSI_D3N) == PD_2) || (MACRO_PIN(PIN_MIPI_DSI_D3N) == PD_3)){ //lane 4
cfgbuf[4] = 0;
if(MACRO_PIN(PIN_MIPI_DSI_D3N) == PD_3){
cfgbuf[9] = 1;
}else{
cfgbuf[9] = 0;
}
}else if((MACRO_PIN(PIN_MIPI_DSI_D3N) == PD_4) || (MACRO_PIN(PIN_MIPI_DSI_D3N) == PD_5)){
cfgbuf[4] = 1;
if(MACRO_PIN(PIN_MIPI_DSI_D3N) == PD_5){
cfgbuf[9] = 1;
}else{
cfgbuf[9] = 0;
}
}else if((MACRO_PIN(PIN_MIPI_DSI_D3N) == PD_6) || (MACRO_PIN(PIN_MIPI_DSI_D3N) == PD_7)){
cfgbuf[4] = 2;
if(MACRO_PIN(PIN_MIPI_DSI_D3N) == PD_7){
cfgbuf[9] = 1;
}else{
cfgbuf[9] = 0;
}
}else if((MACRO_PIN(PIN_MIPI_DSI_D3N) == PD_8) || (MACRO_PIN(PIN_MIPI_DSI_D3N) == PD_9)){
cfgbuf[4] = 3;
if(MACRO_PIN(PIN_MIPI_DSI_D3N) == PD_9){
cfgbuf[9] = 1;
}else{
cfgbuf[9] = 0;
}
}else if((MACRO_PIN(PIN_MIPI_DSI_D3N) == PD_10) || (MACRO_PIN(PIN_MIPI_DSI_D3N) == PD_11)){
cfgbuf[4] = 4;
if(MACRO_PIN(PIN_MIPI_DSI_D3N) == PD_11){
cfgbuf[9] = 1;
}else{
cfgbuf[9] = 0;
}
}
for(itk = 0;itk < 5;itk++){
if(cfgbuf[5+itk] != 0xff){
cfg_num++;
}
}
for(itk = cfg_num;itk < 5;itk++){
cfgbuf[itk] = itk;
cfgbuf[itk+5] = 0;
}
}
#define DSI_CLK_SELECT DSI_MODULE_CLK_480M
void mipi_dsi_init(uint32 w,uint32 h,uint32 dclk,uint8 vsa,uint8 vbp,uint8 vfp,uint8 hsa,uint8 hbp,uint8 hfp,uint8 lanenum,uint8 colortype){
uint8_t itk = 0;
uint8_t cfgbuf[10];
//uint8_t idbuf[10];
int GENERIC_VC_ID = 0x0;
int dpi2laneclkratio;
struct dsi_device *dsi_dev;
dsi_dev = (struct dsi_device *)dev_get(HG_DSI_DEVID);
if(DSI_CLK_SELECT == DSI_MODULE_CLK_480M){
dpi2laneclkratio = 60*1000/(dclk/1000000);
}else if(DSI_CLK_SELECT == DSI_MODULE_CLK_240M){
dpi2laneclkratio = 30*1000/(dclk/1000000);
}else{
dpi2laneclkratio = 120*1000/(dclk/1000000);
}
//dpipixel_fifo_mipi = dpi_pixel_buf;//os_malloc(4*w);//
generic_fifo_mipi = os_malloc(w*3);//
if(generic_fifo_mipi == NULL){
_os_printf("generic_fifo_mipi room error....\r\n");
return;
}
if(DSI_CLK_SELECT == DSI_MODULE_CLK_480M){
dsi_init(dsi_dev,1,4,1,lanenum,DSI_MODULE_CLK_480M,7);
}else if(DSI_CLK_SELECT == DSI_MODULE_CLK_240M){
dsi_init(dsi_dev,1,2,1,lanenum,DSI_MODULE_CLK_240M,7);
}else{
dsi_init(dsi_dev,4,8,1,lanenum,DSI_MODULE_CLK_960M,7); //120/15 8
}
mipi_dsi_max_clk_time(dsi_dev,0x10);
mipi_dsi_remain_stop_state(dsi_dev,2);
mipi_dsi_set_lane_num(dsi_dev,lanenum);
mipi_dsi_cfg_enable(dsi_dev,0,0,1,1,1,0);
mipi_dsi_ulps_ctrl(dsi_dev,0,0,0,0);
mipi_dsi_ulps_min_time(dsi_dev,0x12);
mipi_dsi_ulps_entry_delay_time(dsi_dev,0x12);
mipi_dsi_ulps_wakeup_time(dsi_dev,0x12,0x12);
mipi_dsi_ulps_mode(dsi_dev,0,0,0);
mipi_dsi_select_mode(dsi_dev,1);
mipi_dsi_gen_vcid_cfg(dsi_dev,GENERIC_VC_ID,1,1);
//mipi_dsi_cmd_mode_cfg(dsi_dev,1,1,0,0,0,0,0,0,0,0,0,0,0,0);
mipi_dsi_cmd_mode_cfg(dsi_dev,1,0,1,1,1,1,1,1,1,1,1,1,1,1);
//mipi_dsi_cmd_mode_cfg(dsi_dev,0,1,1,1,1,1,1,1,1,1,1,1,1,1);
mipi_dsi_dpi_vcid(dsi_dev,0);
if(colortype == LCD_MODE_565){
mipi_dsi_color_cfg(dsi_dev,0,0); //5:24BIT 0:16BIT
}
else if(colortype == LCD_MODE_888){
mipi_dsi_color_cfg(dsi_dev,5,0); //5:24BIT 0:16BIT
}
mipi_dsi_cfg_pol(dsi_dev,0,0,0,0,0);
//mipi_dsi_vid_mode(dsi_dev,1,1,1,1,1,1,0,0,3); //3:Burst mode 1:sync events
mipi_dsi_vid_mode(dsi_dev,1,1,1,1,1,1,0,0,3);
mipi_dsi_vid_pkt_size(dsi_dev,w);
mipi_dsi_vid_chunk_num(dsi_dev,0);
mipi_dsi_vid_null_size(dsi_dev,0);
mipi_dsi_vid_cfg(dsi_dev,dpi2laneclkratio,vsa,vbp,h,w,vfp,hsa,hbp,hfp);
mipi_dsi_lpcmd_tmr(dsi_dev,0x10,0x10);
mipi_dsi_edpi_cfg(dsi_dev,0X20,0,0,0,0);
mipi_dsi_phy_rst(dsi_dev);
mipi_dsi_set_pixel_sram_fifo(dsi_dev,(uint32)generic_fifo_mipi);
mipi_dsi_set_fifo_depth(dsi_dev,w);
dsi_open(dsi_dev);
memset(cfgbuf,0xff,10);
mipi_dsi_io_remap(cfgbuf);
for(itk = 0;itk < 10;itk++){
printf("%d ",cfgbuf[itk]);
}
printf("\r\n");
//mipi_dsi_set_lane_remap(dsi_dev,2,1,0,4,3,1,1,1,0,0);
//mipi_dsi_set_lane_remap(dsi_dev,2,0,1,4,3,1,0,0,0,0);
mipi_dsi_set_lane_remap(dsi_dev,cfgbuf[0],cfgbuf[1],cfgbuf[2],cfgbuf[3],cfgbuf[4],cfgbuf[5],cfgbuf[6],cfgbuf[7],cfgbuf[8],cfgbuf[9]);
mipi_set_maxrpack(dsi_dev,0x10);
//mipi_read_id(dsi_dev,0x0,0x0a,idbuf,4);
//_os_printf("id:%08x\r\n",idbuf[0]);
lcd_mipi_table_init(dsi_dev,GENERIC_VC_ID,(uint8_t*)lcdstruct.init_table);
mipi_dsi_wait_pkt_fifo_full(dsi_dev);
mipi_dsi_cmd_pkt_fifo_empty(dsi_dev);
#if 0
idbuf[0] = 0;
idbuf[1] = 0;
mipi_set_cmd(dsi_dev,GENERIC_VC_ID,0x09);
mipi_get_data(dsi_dev,idbuf,4);
_os_printf("id:%02x %02x %02x\r\n",idbuf[0],idbuf[1],idbuf[2]);
mipi_set_cmd(dsi_dev,GENERIC_VC_ID,0x0A);
mipi_get_data(dsi_dev,idbuf,1);
_os_printf("id:%02x %02x \r\n",idbuf[0],idbuf[1]);
#endif
//while(1)
mipi_dsi_select_mode(dsi_dev,0);
os_free(generic_fifo_mipi);
}

View File

@@ -0,0 +1,36 @@
#include "sys_config.h"
#include "typesdef.h"
#include "lib/video/dvp/cmos_sensor/csi.h"
#include "dev.h"
#include "devid.h"
#include "hal/gpio.h"
#include "hal/lcdc.h"
#include "hal/spi.h"
#include "hal/osd_enc.h"
#include "osal/irq.h"
#include "osal/string.h"
#include "dev/osd_enc/hgosd_enc.h"
#include "osal/semaphore.h"
#include "lib/lcd/lcd.h"
#include "osal/mutex.h"
#include "lib/lcd/gui.h"
void lcd_sema_up();
void osdenc_done(uint32 irq_flag,uint32 irq_data,uint32 param1){
struct osdenc_device *osdenc_dev = (struct osdenc_device *)irq_data;
printf("%s %d\r\n",__func__,osd_enc_dlen(osdenc_dev));
lcd_sema_up();
}
void osd_enc_init(){
struct osdenc_device *osdenc_dev;
osdenc_dev = (struct osdenc_device *)dev_get(HG_OSD_ENC_DEVID);
osd_enc_open(osdenc_dev);
osd_enc_tran_config(osdenc_dev,0xFFFFFF,0xFFFFFF,0x000000,0x000000);
osd_enc_set_format(osdenc_dev,1);
osd_enc_request_irq(osdenc_dev,ENC_DONE_IRQ,(osdenc_irq_hdl )&osdenc_done,(uint32)osdenc_dev);
}