刚入门的小白第一次写博客,望各路大神指点
一、硬件电路
二、设备树
Msm8909.dtsi Master
i2c_1: i2c@78b5000 { /* BLSP1 QUP1 */
compatible = "qcom,i2c-msm-v2";
#address-cells = <1>;
#size-cells = <0>;
reg-names = "qup_phys_addr";
reg = <0x78b5000 0x1000>;
interrupt-names = "qup_irq";
interrupts = <0 95 0>;
clocks = <&clock_gcc clk_gcc_blsp1_ahb_clk>,
<&clock_gcc clk_gcc_blsp1_qup1_i2c_apps_clk>;
clock-names = "iface_clk", "core_clk";
qcom,clk-freq-out = <100000>;
qcom,clk-freq-in = <19200000>;
pinctrl-names = "i2c_active", "i2c_sleep";
pinctrl-0 = <&i2c_1_active>;
pinctrl-1 = <&i2c_1_sleep>;
qcom,noise-rjct-scl = <0>;
qcom,noise-rjct-sda = <0>;
dmas = <&dma_blsp1 4 64 0x20000020 0x20>,
<&dma_blsp1 5 32 0x20000020 0x20>;
dma-names = "tx", "rx";
qcom,master-id = <86>;
};
Msm8909-pinctrl.dtsi
pmx_i2c_1 { /* CLK, DATA */
qcom,pins = <&gp 6>, <&gp 7>;
qcom,num-grp-pins = <2>;
qcom,pin-func = <3>;
label = "pmx_i2c_1";
i2c_1_active: i2c_1_active {
drive-strength = <2>; /* 2 MA */
bias-disable = <0>; /* No PULL */
};
i2c_1_sleep: i2c_1_sleep {
drive-strength = <2>; /* 2 MA */
bias-pull-down; /* PULL DOWN */
};
};
Msm8909-Q9-mtp.dtsi client
bosch@10 { /* Accelerometer sensor */
compatible = "bosch,bma2x2";
reg = <0x10>;
vdd-supply = <&pm8909_l17>;
vio-supply = <&pm8909_l6>;
};
bosch@12 { /* Magnetic field sensor */
compatible = "bosch,bmm050";
reg = <0x12>;
vdd-supply = <&pm8909_l17>;
vio-supply = <&pm8909_l6>;
};
三、 Makefile 文件
确保所有添加的驱动文件都包含在Makefile中,会被编译进去
obj-$(CONFIG_SENSORS_BMA2X2) += bma2x2_driver.o
ccflags-y += -DBMA2X2_SENSOR_IDENTIFICATION_ENABLE
obj-$(CONFIG_SENSORS_BMM050) += bmm050_driver.o bmm050.o
ccflags-y += -DBMM_USE_BASIC_I2C_FUNC -DCONFIG_BMM_USE_PLATFORM_DATA
四、 Config文件
config SENSORS_BMA2X2
tristate "BMA255/BMA250E/BMA222E/BMA280 acceleration sensor support"
depends on I2C
help
If you say yes here you get support for Bosch Sensortec's
acceleration sensors BMA255/