在BeagleboneBlack上使用i2c做电容触摸屏驱动遇到了问题 ,
触摸屏的芯片是ft5206。
主要修改分为两部分,一部分修改是在board-am335x-evm.c里做的。另一部分是在ft5206.c文件里做的。ft5206.c文件已上传到附件中。
在board-am335x-evm.c文件里主要做了如下的修改:
/* Pin mux for touch screen */
static struct pinmux_config ft5206_pin_mux[]={
{"uart1_ctsn.i2c2_sda",OMAP_MUX_MODE3 | AM33XX_SLEWCTRL_SLOW |
AM33XX_PULL_UP | AM33XX_INPUT_EN },
{"uart1_rtsn.i2c2_scl",OMAP_MUX_MODE3 | AM33XX_SLEWCTRL_SLOW |
AM33XX_PULL_UP | AM33XX_INPUT_EN},
{"gpmc_csn2.gpio1_31",OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP},
{"gpmc_ad11.gpio0_27",OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
{NULL,0},
};
/*Pin mux for captive touch screen*/
static void ft5206_init(int evm_id,int profile){
setup_pin_mux(ft5206_pin_mux);
return ;
}
/* Beaglebone Black */
static struct evm_dev_cfg beagleboneblack_dev_cfg[] = {
{am335x_rtc_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{clkout2_enable, DEV_ON_BASEBOARD, PROFILE_NONE},
{tps65217_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{mii1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{mmc1_emmc_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{i2c1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{ft5206_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{sgx_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{lcdc_init, DEV_ON_BASEBOARD, PROFILE_ALL},
{chipsee_backlight_init, DEV_ON_BASEBOARD, PROFILE_ALL},
{mfd_tscadc_init, DEV_ON_BASEBOARD, PROFILE_ALL},
{NULL, 0, 0},
};
static int am335x_evm_i2c1_init(void )
{
int szr = 0;
szr = omap_register_i2c_bus(2, 100, cape_i2c_boardinfo,
ARRAY_SIZE(cape_i2c_boardinfo));
return 0;
}
系统启动后,insmod ft5206.ko 加载驱动后,出现如下错误:
望各位大牛,帮忙看一下问题是出在哪里了。
