bma150移植

BMA150移植:
一,进入Brava2157Dual/kernel/common/drivers/input/misc目录下,将smb380.c,smb380calib.c,bma150.c,smb380calib.h,smb380.h文件加入到该目录下 


二,修改该目录下的文件:
1,Kconfig:
config INPUT_BMA150_SMB380
        tristate "Bosch BMA150 accelerometer support"
        help
          Say Y to enable BMA150/ SMB380 based acceleromter support


2,Makefile:
obj-$(CONFIG_INPUT_BMA150_SMB380)       += bma150.o smb380.o smb380calib.o


三,将bma150.h放在Brava2157Dual/kernel/common/include/linux目录下。


以上驱动部分已经设置完成。


四,向平台添加挂载的信息:因为bma150是挂载到i2c总线上的,所以:
在static struct i2c_board_info __initdata bcm2157_i2c_board_info[]中加入bma150相关信息
。。。
#if defined(CONFIG_INPUT_BMA150_SMB380)
        {I2C_BOARD_INFO("bma150_accl", 0x38),//i2c设备的名字和地址,bma150_accl是注册的设备名字,0x38为i2c设备的地址
         .platform_data = (void *)&bma_pdata,//对bma150的属性进行了一些初始化
         .irq = GPIO_TO_IRQ(5),//获取gpio5的中断号,由硬件连接决定
         },
#endif
。。。




其中:bma_pdata:(要包含bma150.h头文件)
static struct bma150_accl_platform_data bma_pdata = {
        .orientation = BMA_NO_ROT,//设置初始化角度标志
        .invert = true,
        .init = bma_gpio_init,//对中断gpio口进行一些初始化
        .i2c_pdata = {.i2c_spd = I2C_SPD_100K,},//设置bma150 i2c设备的速率
};


int bma_gpio_init(struct device *dev)
{
        gpio_request(5, "bma150");//申请5号gpio口,并为其取个名字叫做bma150
        gpio_direction_input(5);//设置该口为输入引脚
        set_irq_type(GPIO_TO_IRQ(5), IRQF_TRIGGER_RISING);//设置中断类型为上升沿进行触发
        return 0;
}





你可能感兴趣的:(c,struct,input,平台,makefile)