前面一段时间一直在搞kernel的升级,开始是把4.1的升级到4.2,后面是根据相应的一些硬件修改更改一些原来的设置,搞的比较纠结,4.1升级到4.2还好,但是根据相应的硬件来同步相应的驱动就比较麻烦了,因为很多的引脚什么的东西要改,这些都没怎么弄过,做的比较纠结。
以前一直想做驱动,现在真正有机会了,做驱动了,确实在不太想做,也许是过了这么久,对做这个也没什么兴趣了,哎,后面还是跟老大说了下做应用 ,以后应该也是做应用 了。
这里记录下这段时间 做kernel升级的一点记录,以备以后可能 用的着的时候。
1、使用make rk3188_ds1006h_v1_1_defconfig(查看arch/arm/configs/)
2、i2c无反应的,先在arch/arm/mach-rk30/board-rk3168-ds1006h.c中注掉相应的i2c设备
2、液晶屏
drivers\video\display\screen\lcd_LG_LD089WU1.c
drivers\video\display\screen\Kconfig
drivers\video\display\screen\Makefile
drivers\video\display\transmitter\ssd2828.c
drivers\video\display\transmitter\mipi_dsi.c
drivers\video\backlight\rk29_backlight.c
kernel配置CONFIG_SSD2828_RGB2MIPI 否则修改了ssd2828.c不会编译
i2c
修改arch\arm\mach-rk3188\board-rk3188-ds1006h.c
LCD_CS_PIN、LCD_EN_PIN、lcdc0_screen_info(EXTEND-HDMI)
3、开机logo drivers\video\logo
4、互容式触控芯片
drivers\input\touchscreen\ct36x_ts
i2c
5、背景
drivers\video\backlight\rk29_backlight.c
6、wifi、蓝牙(一般对比原来的kernel就可以了)
wifi:Device Drivers --->Network device support ---> Wireless LAN ---> Select the wifi module (AP6210) --->
board文件rfkill_rk_platdata GPIO口设置
board-rk3168-tb-sdmmc-conifg添加
#elif defined(CONFIG_AP6210)
#define RK30SDK_WIFI_GPIO_POWER_N RK30_PIN3_PD0
#define RK30SDK_WIFI_GPIO_POWER_ENABLE_VALUE GPIO_HIGH
#define RK30SDK_WIFI_GPIO_WIFI_INT_B RK30_PIN3_PD1
#define RK30SDK_WIFI_GPIO_WIFI_INT_B_ENABLE_VALUE GPIO_HIGH
7、电源
drivers\power\oz8806_battery.c
drivers\power\rk29_charger_display.c //开机进入充电模式
include\linux\power_supply.h
CHG_M0_PIN CHG_M1_PIN dc_det_pin
paramter.c design_capacity 调节电池容量
硬件测试是否有问题(电流,电压)
i2c
8、摄像头
drivers\media\video\nt99340_RK3066.c
drivers\media\video\nt99252.c
arch\arm\plat-rk\include\plat\rk_camera.h
include\media\v4l2-chip-ident.h
arch\arm\mach-rk30\board-rk3168-tb-camera.c
rk_register_camera_devices-->platform_device_register
soc_camera_probe-->soc_camera_init_i2c-->v4l2_i2c_new_subdev_board-->i2c_new_device
方向:board-rk3168-tb-camera.c CONFIG_SENSOR_ORIENTATION_0
9、usb
drivers\usb\core\config.c
drivers\usb\dwc_otg\dwc_otg_hcd.c
drivers\usb\serial\option.c
10、音频
sound\soc\codecs\rt5616.c
i2c
11、HDMI
修改内核配置
board文件确认相应的引脚
RK_HDMI_RST_PIN---> hdmi_rst
RK_HDMI_POWER_PIN ---> hdmi_en
irq ---> hdmi_int
i2c连接是否正确
HDMI方向不正确:Device Drivers ---> Graphics support ---><*> Frame buffer support for Rockchip ---> (180) rotate orientation
12、按键
board文件
kernel\drivers\input\keyboard
13、振动
board文件 搜索‘timed’
修改timed_gpios对应的gpio(对照电路图)
14、otg
/driver/usb
不行的话看下ic是否有问题
15、霍而开关
kernel\kernel\power\earlysuspend.c
kernel\drivers\input\hal
注意同步:
1、arch\arm\mach-rk3188\board-rk3188-ds1006h.c否则可能某些设备未注册,加了驱动也没用
2、硬件是否连接正常、i2c地址,应答是否成功、选择的总线是否正确
3、设备初始化失败:设备是否已经正常连接好了
4、屏幕方向不正确:
1)、gsensor方向mma8452_info、lis3dh_info 修改 0 1
arch\arm\mach-rk30\board-rk3168-ds1006h-camera.c
arch\arm\mach-rk30\ddr.c
arch\arm\plat-rk\include\plat\ddr.h
arch\arm\mach-rk3188\clock_data.c
待机,卡机闪白条:
rk_fb_io_init enable disable 、backlight 加延时 、背光是不是强拉高了(硬件)rk29_backlight_pwm_resume
屏驱动:
board文件:LCD_CS_PIN、LCD_EN_PIN