MTK平台上有关LCD,Audio参数,Camera参数的使用

MTK LCD,Audio and Camera 目 录

1 引言... 3

2 MTK LCD.. 3

2.1 LCD时序设置... 3

2.2 LCD接口函数的定义... 4

3 MTK Audio参数设置... 6

4 MTK Camera参数设置... 6

 

 

1 引言

    本文主要是简单介绍一下MTK平台上有关LCD,Audio参数,Camera参数的使用。

2 MTK LCD

   MTK平台上面有关LCD的驱动主要是在/custom/drv/LCD/Project Name/这个目录下面Lcd.c文件。当我们更换不同的LCD时,主要改变的就是这个文件。

2.1 LCD时序设置

LCD的读写时序设置主要是在init_lcd_interface()这个函数里面设置的。修改的部分主要如下所示:

    SET_LCD_PARALLEL_CE2WR_SETUP_TIME((kal_uint32)3);

     SET_LCD_PARALLEL_CE2WR_HOLD_TIME(3);

     SET_LCD_PARALLEL_CE2RD_SETUP_TIME(3);

     SET_LCD_PARALLEL_WRITE_WAIT_STATE(10);

     SET_LCD_PARALLEL_READ_LATENCY_TIME(10);

     SET_LCD_ROI_CTRL_CMD_LATENCY(10);

以上代码主要是设置LCD_PCNF0(LCD Parallel Interface 0 Configuration Register)这个寄存器。

RLT Read Latency Time

WST Write Wait State Time

13M Enable 13MHz clock gating

26M Enable 26MHz clock gating

DW Data width of the parallel interface

00 8-bit.

01 9-bit

10 16-bit

11 18-bit

GAMMA_ID _R Gamma Correction LUT ID for Red Component

00 table 0

01 table 1

10 table 2

11 no table selected

GAMMA_ID_G Gamma correction LUT ID for Green Component

00 table 0

01 table 1

10 table 2

11 no table selected

GAMMA_ID_B Gamma correction LUT ID for Blue Component

00 table 0

01 table 1

10 table 2

11 no table selected

C2RS Chip Select (LPCE#) to Read Strobe (LRD#) Setup Time

C2WH Chip Select (LPCE#) to Write Strobe (LWR#) Hold Time

C2WS Chip Select (LPCE#) to Write Strobe (LWR#) Setup Time

 

2.2 LCD接口函数的定义

在MTK平台里,它的接口函数都由一个结构来封装。该结构在文件lcd_if.h里:

 

typedef struct

{

   void (* Init)(kal_uint32 background, void **buf_addr);

   void (* PWRON)(kal_bool on);

   void (* BrightLevel)(kal_uint8 level);

   void (* SCREENON)(kal_bool on);

   void (* BlockWrite)(kal_uint16 startx,kal_uint16 starty,kal_uint16 endx,kal_uint16 endy);

   void (* GetSize)(kal_uint16 *out_LCD_width,kal_uint16 *out_LCD_height);

   void (* SleepIn)(void);

   void (* SleepOut)(void);

void (* PartialOn) (kal_uint16 start_page,kal_uint16 end_page);

void (* PartialOff) (void);

kal_uint8 (*partial_display_align) (void);

   /*Engineering mode*/

   kal_uint8 (* get_param_number)(lcd_func_type type);

   void (* set_bias)(kal_uint8 *bias);

   void (* set_contrast)(kal_uint8 *contrast);

     void (* set_linerate)(kal_uint8 *linerate);

     void (* set_temp_compensate)(kal_uint8 *compensate);

#ifdef __LCD_ESD_RECOVERY__

     kal_bool (* esd_check)(void);

#endif  

}LCD_Funcs;

 

     在lcd.c文件内有相应的LCD_Funcs。

如下所示:

LCD_Funcs LCd_func_HX8312A={

   LCD_Init_HX8312A,

   LCD_PWRON_HX8312A,

   LCD_SetContrast_HX8312A,

   LCD_ON_HX8312A,

   LCD_BlockWrite_HX8312A,

   LCD_Size_HX8312A,

   LCD_EnterSleep_HX8312A,

   LCD_ExitSleep_HX8312A,

   LCD_Partial_On_HX8312A,

   LCD_Partial_Off_HX8312A,

   LCD_Partial_line_HX8312A,

   /*Engineering mode*/

   LCD_GetParm_HX8312A,

   LCD_SetBias_HX8312A,

   LCD_Contrast_HX8312A,

   LCD_LineRate_HX8312A,

   LCD_Temp_Compensate_HX8312A

   #ifdef __LCD_ESD_RECOVERY__  

   ,LCD_ESD_check_HX8312A

   #endif

};

在lcd.c中实现了该结构的各个成员。里面的有些函数如果不用,可以置空。

其中的主要的是以下4个函数,我们介绍如下。

1.  LCD_Init_HX8312A

初始化函数。设完了时序之后,我们就可以写初始化程序了。初始化程序的作用是使屏能正常工作起来,屏在上电复位之后其寄存器都是清零的,不能马上工作,要对它的寄存器重新进行一些配置。

一般我们在拿到屏的时候,也会要求屏的供应商提供相应的初始化代码,我们的工作就是把它的初始化代码抄到我们的初始化函数中,使之符合我们的代码规范。

2.  LCD_EnterSleep_HX8312A和LCD_ExitSleep_HX8312A

进入和退出睡眠模式(sleep)。我们在长期不对手机进行操作的情况下,程序会调用进入sleep函数,使LCM进到省电模式;进到sleep之后,如果我们又对手机有操作了,这时候就要调用退出sleep函数使屏能够恢复正常显示。一般的显示芯片都会有一些寄存器控制进入和退出sleep,我们在函数LCD_EnterSleep_HX8312A, LCD_ExitSleep_HX8312A里分别对这些寄存器进行设置。

3.  LCD_BlockWrite_HX8312A

 往屏输出数据的函数。我们在LCM上看到的各种缤纷图像,都是通过这个函数来实现的。在这个函数里面我们要设置LCD屏幕显示的一些位置参数,并把它写道相应的寄存器里面。

3 MTK Audio参数设置

MTK音频里面有很多的参数需要设置,这个参数主要是在nvram_default_audio.c这个文件里面完成的。

  对于这些参数,我们手机掉电了以后还需要保存,所以它们都是要保存在NVRAM里面的。

首先是一些宏定义,这些宏要定义不同的Level对应的具体数值。

如下所示:

#define GAIN_HND_CTN_VOL              3

#define GAIN_HND_CTN_VOL0                127

#define GAIN_HND_CTN_VOL1                127

#define GAIN_HND_CTN_VOL2                127

#define GAIN_HND_CTN_VOL3                127

#define GAIN_HND_CTN_VOL4                127

#define GAIN_HND_CTN_VOL5                127

#define GAIN_HND_CTN_VOL6                127

 

#define GAIN_HND_KEY_VOL         3

#define GAIN_HND_KEY_VOL0        67

#define GAIN_HND_KEY_VOL1        87

#define GAIN_HND_KEY_VOL2        107

#define GAIN_HND_KEY_VOL3        127

#define GAIN_HND_KEY_VOL4        147

#define GAIN_HND_KEY_VOL5        167

#define GAIN_HND_KEY_VOL6        255

            然后要把这些数值写到NVRAM_EF_CUST_ACOUSTIC_DATA_DEFAULT[]和NVRAM_EF_AUDIO_EQUALIZER_DEFAULT[]这两个数组里面去。而最终这两个数组里面的数据会被写到logical_data_item_table_cust[]这个数组里面去。这个数组保存着手机里面各种初始化的参数。

4 MTK Camera参数设置

Camera里面也有很多初始化的参数需要设置。这些设置主要在camera_para.c文件里完成。

设置Camera的默认参数主要是在CAMERA_PARA_DEFAULT_VALUE和CAMERA_GAMMA_DEFAULT_VALUE这两个结构体里面。而这两个结构体里面的数据最终还是会被写到logical_data_item_table_cust[]这个数组里面。

你可能感兴趣的:(MTK平台上有关LCD,Audio参数,Camera参数的使用)