当前位置:文档之家› MTK平台上有关LCD,AudiO,Camera的驱动

MTK平台上有关LCD,AudiO,Camera的驱动

MTK平台上有关LCD,AudiO,Camera的驱动
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[] 这个数组里面。

相关主题
文本预览
相关文档 最新文档