下面是添加驱动相关的路径跟修改与相应的i2c驱动源码rt5651xctx.c
1.驱动相关的路径跟修改
1.kernel-3.18/drivers/xctxcodec
//该目录下有3个文件:kconfig makefile rt5651xctx.c
a) 其中kconfig文件的修改模板如下:
config XCTXCODEC
bool “XCTXCODEC”
default n
help
This is the rt5651 driver for android system
b) 其中makefile文件修改模板如下:
obj-y += rt5651xctx.o
c) 其中rt5651xctx.c文件中要求rt5651_i2c_probe->register_chrdev->name 和下面结构中的rt5651_i2c_id中的名字和其中的成员变量name名字必须一样为rt5651xctx,
只有这样,才能创建一个名字为rt5651xctx的I2C设备文件节点;
struct i2c_driver rt5651_i2c_driver = {
.id_table = rt5651_i2c_id,
.probe = rt5651_i2c_probe,
.remove = rt5651_i2c_remove,
.driver = {
.owner = THIS_MODULE,
.name = "rt5651xctx" ,
#ifdef CONFIG_OF
.of_match_table = rt5651_of_match,
#endif
},
};
2.kernel-3.18/arch/arm64/boot/dts/mt6735m.dtsi
/* chenlijun add start 20180627 */
codec: codec {
compatible = "mediatek,rt5651codec";
};
/* chenlijun add end 20180627 */
3.kernel-3.18/arch/arm64/configs/joya6737m_65_m0_debug_defconfig //CONFIG_XCTXCODEC=y
4.kernel-3.18/arch/arm64/configs/joya6737m_65_m0_defconfig //CONFIG_XCTXCODEC=y
5.kernel-3.18/drivers/Kconfig kernel-3.18/drivers/Makefile
//obj-$(CONFIG_XCTXCODEC) += xctxcodec/
6.kernel-3.18/drivers/Kconfig kernel-3.18/drivers/Kconfig
//source "drivers/xctxcodec/Kconfig"
7.kernel-3.18/drivers/misc/mediatek/mach/mt6735/joya6737m_65_m0/dct/dct/codegen.dws //配置I2C
8.vendor/mediatek/proprietary/bootable/bootloader/lk/target/joya6737m_65_m0/dct/dct/codegen.dws //配置I2C
9.vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/joya6737m_65_m0/dct/dct/codegen.dws //配置I2C
10.vendor/mediatek/proprietary/custom/joya6737m_65_m0/kernel/dct/dct/codegen.dws //配置I2C
2.相应的i2c驱动 rt5651xctx.c
#include <linux/moduleparam.h>
#include <linux/delay.h>
#include <linux/pm.h>
#include <linux/regmap.h>