SC7731 客户驱动配置介绍_第1页
SC7731 客户驱动配置介绍_第2页
SC7731 客户驱动配置介绍_第3页
SC7731 客户驱动配置介绍_第4页
SC7731 客户驱动配置介绍_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、T-Shark 客户配置文档2014-09-08Tonny.chen . 211/09/11MCP/eMCP配置客制化驱动配置Keypad配置I2c配置LCD配置TP配置Camera配置L&P-Sensor配置性能排查性能排查apkapk检测检测MCP/eMCP配置如何确认是NAND工程还是eMMC工程?1. 在u-boot/include/configs/ sp7731gea.h和chipram/include/configs/ sp7731gea.h#ifndef CONFIG_EMMC_BOOTNAND#ifdef CONFIG_EMMC_BOOTEMMC2. 在客置化配置的时候

2、就需要重点关注NAND/EMMC相关的宏定义,这些宏定义会控具体其他配置参加编译。 . 3NAND/eMMC配置 . 4eMCP如何修改配置以配置成16Gb+2Gb为例说明1. chipram/include/configs/sp7731gea.h (1). DDR类型配置 /-these three macro below,only one can be open /#define DDR_LPDDR1 #define DDR_LPDDR2 /#define DDR_DDR3 (2). #define DDR_TYPE DRAM_LPDDR2_1CS_4G_X32 - #define DDR

3、_TYPE DRAM_LPDDR2_1CS_2G_X32 . 5eMCP如何修改配置2. u-boot/include/configs/sp7731gea.h(1). 定义内存大小#define CONFIG_RAM512M - #define CONFIG_RAM256M (2). #ifdef CONFIG_RAM512M#define MEM_INIT_PARA mem=512M#elif defined(CONFIG_RAM256M)#define MEM_INIT_PARA mem=256M“ .#endif#define CONFIG_BOOTARGS MEM_INIT_PARA

4、loglevel=1 console=ttyS1,115200n8 init=/init MTDPARTS_DEFAULT . 6eMCP如何修改配置(3). #define SPRD_SYSDUMP_MAGIC (PHYS_OFFSET_ADDR & (SZ_512M - 1) + SZ_512M - SZ_1M) - #define SPRD_SYSDUMP_MAGIC (PHYS_OFFSET_ADDR & (SZ_256M - 1) + SZ_256M - SZ_1M) . 7eMCP如何修改配置3. 在kernel/arch/arm/mash-sc/include/m

5、ach/board.h修改,在下面#if中增加宏定义 使其走256M的定义:#if defined(CONFIG_MACH_SP7731GEA_LC) | defined(CONFIG_MACH_SP7731GGA_LC) | defined(CONFIG_MACH_SP7730GGA_LC)/* Nand 4+2 */#define SPRD_ION_MEM_BASE (CONFIG_PHYS_OFFSET & (SZ_256M - 1) + SZ_256M - SPRD_ION_MEM_SIZE)#else#define SPRD_ION_MEM_BASE (CONFIG_PHYS

6、_OFFSET & (SZ_512M - 1) + SZ_512M - SPRD_ION_MEM_SIZE)#endif . 8eMCP如何修改配置4. 在device/sprd/ scx35_sp7731gea/p修改,ro.board_ram_size=mid - ro.board_ram_size=low . 9eMCP如何修改配置5. emmc 大小调整 (1). emmc大小变化不需关心, 由硬件emmc自动计算出来,如emmc大小减到16G bit,一般影响的就是userdata分区, 即data分区减少,分区表物理分区是自适应的,编译镜像需要缩小; (

7、2). 在device/sprd/scx35_sp7731gea/BoardConfig.mk修改定义USERDATA镜像大小 BOARD_USERDATAIMAGE_PARTITION_SIZE 的值减去 2,000,000,000(比如原来是4GB,现在是2GB,因为EMMC容量少了将近2GB,全部要从data分区裁掉) . 10Memory验证处理流程1. 先确认该flash我们平台是否已验证过?2. 验证认证过,出patch;3. 未验证,提供物料申请验证后出patch。 . 11Memory 验证patch . 12Memory 验证patch . 13Shark4.4已验证的Mem

8、ory . 14在文件kernel/arch/arm/mach-sc/board-sp7731gea.c中按照如下步骤配置Keypad 1. 用如下两个宏来定义Keypad的行列值 2. 用宏KEY 在board_keymap添加配置项 static const unsigned int board_keymap = KEY(0, 0, KEY_VOLUMEDOWN), KEY(1, 0, KEY_VOLUMEUP), KEY(0, 1, KEY_HOME), ;Keypad 配置3. 将board_keymap加到customize_keymap添加配置项4. 将customize_keym

9、ap在sci_keypad_data添加配置项 Keypad 配置5.按键值与硬件配对的地方u-boot/board/spreadtrum/sp7731gea/key_map.h static unsigned char board_key_map=#if 0 0 x27, KEY_HOME, 0 x42, KEY_BACK, 0 x41, KEY_VOLUMEUP,#else /0 x00, KEY_BACK,/DOWN /0 x01, KEY_HOME,/CAM /0 x10, KEY_MENU,/UP 0 x10, KEY_VOLUMEUP, / 此处是与硬件配置有关的 0 x01, K

10、EY_HOME, 0 x00, KEY_VOLUMEDOWN,#endif; Keypad 配置6. 最后还需注意最后还需注意Key的layout如何处理。device/sprd/scx35/sci-keypad.kl key键值 key_name权限key 116 POWER WAKEkey 114 VOLUME_DOWN WAKEkey 115 VOLUME_UP WAKEkey 9 CAMERAkey 102 HOME WAKEKeypad 配置T-shark芯片 提供了六组 i2c 口,如下:I2c 配置配置1. 在文件kernel/arch/arm/mach-sc/board-sp7

11、731gea.c中按照如下步骤配置确定设备使用那组i2c并添加配置,例如: static struct i2c_board_info i2c2_boardinfo = #if(defined(CONFIG_INPUT_LIS3DH_I2C)|defined(CONFIG_INPUT_LIS3DH_I2C_MODULE) I2C_BOARD_INFO(LIS3DH_ACC_I2C_NAME, LIS3DH_ACC_I2C_ADDR), .platform_data = &lis3dh_plat_data, #endif#if(defined(CONFIG_SENSORS_AK8975)|

12、defined(CONFIG_SENSORS_AK8975_MODULE) I2C_BOARD_INFO(AKM8975_I2C_NAME, AKM8975_I2C_ADDR), .platform_data = &akm8975_platform_d,#endif I2c 配置配置 . 21 static struct i2c_board_info i2c1_boardinfo = I2C_BOARD_INFO(sensor_main,0 x3C),I2C_BOARD_INFO(sensor_sub,0 x21),;static struct i2c_board_info i2c0_

13、boardinfo = #if(defined(CONFIG_TOUCHSCREEN_FOCALTECH)|defined(CONFIG_TOUCHSCREEN_FOCALTECH_MODULE)I2C_BOARD_INFO(FOCALTECH_TS_NAME, FOCALTECH_TS_ADDR),.platform_data = &ft5x0 x_ts_info,#endif,; I2c 配置配置2. 添加I2C资源 kernel/arch/arm/mach-sc/devices-sc8830.c static struct resource sprd_i2c_resources0

14、 = 0 = .start = SPRD_I2C0_BASE, .end = SPRD_I2C0_BASE + SPRD_I2C0_SIZE -1, .name = i2c0_res, .flags = IORESOURCE_MEM, , 1 = .start = IRQ_I2C0_INT, .end = IRQ_I2C0_INT, .flags = IORESOURCE_IRQ, ; I2c 配置配置 struct platform_device sprd_i2c_device0 = .name = sprd-i2c, .id = 0, .num_resources = ARRAY_SIZE

15、(sprd_i2c_resources0), .resource = sprd_i2c_resources0,; I2c 配置配置LCD配置配置(u-boot)1. 增加驱动文件./u-boot/drivers/video/sprdfb/lcd/lcd_nt35516_mipi.c2. 增加编译规则./u-boot/drivers/video/sprdfb/lcd/MakefileCOBJS-$(CONFIG_FB_LCD_NT35516_MIPI) += lcd_nt35516_mipi.o3. 配置LCD编译选项及LCD尺寸./u-boot/include/configs/sp7731ge

16、a.h#ifdef CONFIG_LCD/#define CONFIG_LCD_HVGA 1/#define CONFIG_LCD_WVGA 1#define CONFIG_LCD_QHD 1#define CONFIG_FB_LCD_NT35516_MIPI#endif / CONFIG_LCDLCDLCD配置配置LCD配置配置(u-boot)4. 关联到内核 在./u-boot/drivers/video/sprdfb/sprdfb_panel.c文件中extern struct panel_spec lcd_nt35516_mipi_spec;static struct panel_cf

17、g panel_cfg = #ifdef CONFIG_FB_LCD_NT35516_MIPI.lcd_id = 0 x16,.panel = &lcd_nt35516_mipi_spec,#endif.;static struct panel_spec *adapt_panel_from_readid(struct sprdfb_device *dev)LCDLCD配置配置 . 26LCD配置配置(u-boot)5. /u-boot/drivers/video/sprdfb/lcd/lcd_nt35516_mipi.c中定义lcd_nt35516_mipi_specstruct pa

18、nel_spec lcd_nt35516_mipi_spec = /.cap = PANEL_CAP_NOT_TEAR_SYNC,#ifdef CONFIG_FB_LOW_RES_SIMU.display_width = 480,.display_height= 854,#endif.width = 540,.height = 960,.fps = 60,.type = LCD_MODE_DSI,.direction = LCD_DIRECT_NORMAL,.info = .mipi = &lcd_nt35516_mipi_info,.ops = &lcd_nt35516_mi

19、pi_operations,;LCDLCD配置配置LCD配置配置(kernel)1. 添加menuconfig配置项./kernel/drivers/video/sprdfb/Kconfigconfig FB_LCD_NT35516_MIPI boolean support NT35516 mipi panel depends on FB_SC8825 | FB_SCX35 default n2. 添加driver./kernel/drivers/video/sprdfb/lcd/lcd_nt35516_mipi.c3. 添加编译规则在./kernel/drivers/video/sprdfb

20、/lcd/Makefile文件中增加obj-$(CONFIG_FB_LCD_NT35516_MIPI) += lcd_nt35516_mipi.oLCDLCD配置配置LCD配置配置(kernel)4. 配置kernel默认LCD在./kernel/arch/arm/configs/sp7731gea-native_defconfig中添加CONFIG_FB_LCD_NT35516=yLCDLCD配置配置LCD配置配置(kernel)5. LCD panel注册相对u-boot下的LCD driver, kernel下的代码需要增加以下部分,来完成LCD panel注册:./kernel/dri

21、vers/video/sprdfb/lcd/lcd_nt35516_mipi.cstruct panel_cfg lcd_nt35516_mipi = /* this panel can only be main lcd */.dev_id = SPRDFB_MAINLCD_ID,.lcd_id = 0 x16, /用于与uboot传过来的LCD ID比较,来判断LCD是否已经初始化.lcd_name = lcd_nt35516_mipi,.panel = &lcd_nt35516_mipi_spec,;static int _init lcd_nt35516_mipi_init(vo

22、id) return sprdfb_panel_register(&lcd_nt35516_mipi); subsys_initcall(lcd_nt35516_mipi_init);LCDLCD配置配置TPTP配置配置TP配置配置1. 作为input设备,相应驱动文件均放在kernel/drivers/input/目录下kernel/drivers/input/touchscreen/focaltech/focaltech.c2. 设备是否启用由Makefile,Kconfig,board对应的defconfig控制。 (1). kernel/drivers/input/touchs

23、creen/focaltech/Makefileobj-$(CONFIG_TOUCHSCREEN_FOCALTECH) += focaltech_ts.o (2). kernel/drivers/input/touchscreen/Kconfigconfig TOUCHSCREEN_FOCALTECH tristate touchscreen_focaltech driver depends on I2C help Say Y here if you have a FOCALTECH based touchscreen controller. If unsure, say N. To comp

24、ile this driver as a module, choose M here: the module will be called focaltech_ts.oTP配置配置(3). Defconfig文件放在了configs目录,如sp7731gea工程:kernel/arch/arm/configs/sp7731gea-native_defconfig 定义了该设备是否被开启及其编译的模式CONFIG_TOUCHSCREEN_FOCALTECH=mTP配置配置3. 配置i2c注册信息,如sp7731gea工程:(1). kernel/arch/arm/mach-sc/board-sp

25、7731gea.c static struct i2c_board_info i2c0_boardinfo = I2C_BOARD_INFO(FOCALTECH_TS_NAME, FOCALTECH_TS_ADDR), .platform_data = &ft5x0 x_ts_info, ,;TP配置配置 (2) .详细定义:#include static struct ft5x0 x_ts_platform_data ft5x0 x_ts_info = .irq_gpio_number = GPIO_TOUCH_IRQ,.reset_gpio_number = GPIO_TOUCH_

26、RESET,.vdd_name = vdd28,.virtualkeys = 100,1020,80,65, 280,1020,80,65, 470,1020,80,65 ,#ifdef CONFIG_FB_LOW_RES_SIMU .TP_MAX_X = 640, .TP_MAX_Y = 1138,#else .TP_MAX_X = 720, .TP_MAX_Y = 1280,#endif;TP配置配置4. tpsensor还需要其他辅助引脚,如中断等。在sp7731gea工程中: kernel/arch/arm/mach-sc/include/mach/_board-sp7731gea.h

27、 #define GPIO_TOUCH_RESET 81 #define GPIO_TOUCH_IRQ 82 5. Pinmap用于配置gpio的初始功能,如GPIO_TOUCH_RESET ,配置如下: u-boot/board/spreadtrum/sp7731gea/pinmap-sp8830.c REG_PIN_SIMCLK2, BIT_PIN_SLP_AP|BIT_PIN_NULL|BITS_PIN_DS(1)|BITS_PIN_AF(3)|BIT_PIN_NUL|BIT_PIN_SLP_NUL|BIT_PIN_SLP_OE,/CTP_RSTvendor/sprd/open-sour

28、ce/libs/libcamera目录按照如下步骤配置,以配置sensor ov5640为例可以通过在两个文件夹中增加sensor的配置,实现自动匹配sensor。主要修改以下几个地方:1. 将驱动代码文件放到vendor/sprd/open-source/libs/libcamera/sensor目录下, 主要有:sensor_ov5640.c sensor_ov5640_mipi.c sensor_ov5640_mipi_raw.c sensor_ov5640_raw.c sensor_ov5640_raw_param.c CameraCamera配置配置2. 修改文件vendor/spr

29、d/open-source/libs/libcamera/sc8830/src/sensor_cfg.c在const SENSOR_INFO_T* main_sensor_infor_tab或 sub_sensor_infor_tab中 增加对应驱动代码中的结构体变量如: g_ov5640_mipi_yuv_info, 并且增加声明:extern SENSOR_INFO_T g_ov5640_mipi_yuv_info;注意:放在main_sensor_infor_tab中最前面的sensor会最先匹配,所以我们一般把当前使用的sensor放在第一,这样可以节省sensor初始化的时间。 Ca

30、meraCamera配置配置3. 在vendor/sprd/open-source/libs/libcamera/Camera.mk和Camera_Utest.mk文件中,在对应的工程中增加要编译的驱动代码 ifeq ($(strip $(TARGET_BOARD_PLATFORM),sc8830)LOCAL_C_INCLUDES := $(LOCAL_PATH)/ispvideo$(LOCAL_PATH)/vsp/sc8830/inc .LOCAL_SRC_FILES:= sc8830/src/SprdOEMCamera.c .sensor/sensor_ov5640.c sensor/se

31、nsor_ov5640_mipi.c /将此驱动代码名称添加到编译目录CameraCamera配置配置4. I2C配置 路径kernel/arch/arm/mach-sc/board-sp7731gea.c确定设备使用哪组i2c并添加配置,例如:static struct i2c_board_info i2c0_boardinfo = I2C_BOARD_INFO(sensor_main,0 x3C), I2C_BOARD_INFO(sensor_sub,0 x21),; CameraCamera配置配置 . 40Camera 相关配置相关配置5. 在文件device/sprd/scx35_s

32、p7731gea/BoardConfig.mk中 (1) #snesor interfaceTARGET_BOARD_BACK_CAMERA_INTERFACE := mipiTARGET_BOARD_FRONT_CAMERA_INTERFACE := mipi(2) # select camera 2M,3M,5M,8MCAMERA_SUPPORT_SIZE := 8MFRONT_CAMERA_SUPPORT_SIZE := 3M(3) 相关功能开关配置有/无前摄TARGET_BOARD_NO_FRONT_SENSOR := falseZSL开/关 #select camera zsl ca

33、p modeTARGET_BOARD_CAMERA_CAPTURE_MODE := false开/关Capture Rotation #rotation captureTARGET_BOARD_CAMERA_ROTATION_CAPTURE := falseCameraCamera配置配置 . 416. Camera视频录制size配置参考路径:device/sprd/scx35_sp7731gea/media_profiles.xmlAndroid原生配置格式如下: /主camera配置 /编码属性,最小size /录制视频码率 /编码属性,最大size CameraCamera配置配置Ca

34、meraCamera配置视频录制size配置方法以配置里面的参数为例,即主camera的配置。其中分别在前两项用quality=low和quality=high表示支持的最大和最小尺寸的录像,最大尺寸根据我们实际情况配置对应的尺寸,可以配置如下几个标准的尺寸: /176144 /352X288 /720480 /1280720 /19201080如我们默认配置最小录像size为176144,最大录像size是1080P, minBitRate=16000 maxBitRate=32000000 /比特率范围,和宽高尺寸对应 minFrameWidth=“176” maxFrameWidth=“

35、1920” /宽度范围,和前面的配置对应 minFrameHeight=“144” maxFrameHeight=“1080” /高度范围 minFrameRate=15 maxFrameRate=60 / /帧率范围修改好.xml文件后,将修改后的media_profiles.xml文件push到手机的/etc目录下,再重启手机就可以了,或者编译system.img烧进去也可以。保证文件SprdCameraHardwareConfig.h (vendor/sprd/open-source/ibs/libcamera/sc8830/inc)中sprd_back_camera_hardware_

36、config 里面preview-size-values配置参数和xml里面对应。即xml里面配置的最大size必须在preview-size-values的参数列表里面。 . 42 . 43CameraCamera配置配置CameraCamera配置 . 44L&Psensor客户化配置原理图L&Psensor客户化配置客户化配置1. 作为input设备,相应驱动文件均放在kernel/drivers/input/misc/目录下kernel/drivers/input/misc/ltr_558als.c2. 相应的头文件路径:kernel/include/linux/i2c

37、/ltr_558als.h3. 设备是否启用由Makefile,Kconfig,board对应的defconfig控制。(1). Makefileobj-$(CONFIG_INPUT_LTR558_I2C)+= ltr_558als.o(2). Kconfigconfig INPUT_LTR558_I2Ctristate LTR558 proximity and light sensor device with I2C busdepends on I2Cdefault nhelp Say Y here if you have a LTR558 device on the board and use I2C communication, else say N.L&Psensor客户化配置客户化配置(3). kernel/arch/arm/configs/sp7731gea-native_defconfig sp7731gea-native_defconfig中定义了设备及编译的模式:# CONFIG_INPUT_AL3006_I2C is not setCONFIG_INPUT_LTR558_I2C=y4. 配置i2c注册信息,如sp7731gea工程: (1). kernel/arch/arm/mach

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论