I.MX6 PMU MMPF0100 driver porting

时间:2023-03-09 05:17:55
I.MX6 PMU MMPF0100 driver porting
/**************************************************************************
* I.MX6 MMPF0100 driver porting
* 说明:
* 虽然主板上有MMPF0100芯片,却没有注册设备并使用该PMU驱动,真是浪费,
* 当然因为需要,所以将PMU的驱动注册起来。
*
* 2016-3-31 深圳 南山平山村 曾剑锋
*************************************************************************/ 参考文档:
PF0100 PMIC drivers
https://community.freescale.com/thread/308531 一、cat arch/arm/mach-mx6/mx6q_sabresd_pmic_pfuze100.c
......
#define PFUZE100_I2C_DEVICE_NAME "pfuze100"
/* 7-bit I2C bus slave address */
#define PFUZE100_I2C_ADDR (0x08)
......
static struct i2c_board_info __initdata pfuze100_i2c_device = {
I2C_BOARD_INFO(PFUZE100_I2C_DEVICE_NAME, PFUZE100_I2C_ADDR),
.platform_data = &pfuze100_plat,
}; int __init mx6q_sabresd_init_pfuze100(u32 int_gpio)
{
pfuze100_i2c_device.irq = gpio_to_irq(int_gpio); /*update INT gpio */
return i2c_register_board_info(, &pfuze100_i2c_device, );
} 二、cat arch/arm/mach-mx6/board-mx6dl_sabresd.h
static iomux_v3_cfg_t mx6dl_sabresd_pads[] = {
......
MX6Q_PAD_GPIO_18__GPIO_7_13,
......
} 三、cat arch/arm/mach-mx6/board-mx6q_sabresd.c
......
#define SABREAUTO_PMIC_INT IMX_GPIO_NR(7, 13)
......
/**
* PMU MMPF0100 devices
*/
ret = gpio_request(SABREAUTO_PMIC_INT, "pFUZE-int");
if (ret) {
printk(KERN_ERR"request pFUZE-int error!!\n");
return;
} else {
gpio_direction_input(SABREAUTO_PMIC_INT);
mx6q_sabresd_init_pfuze100(SABREAUTO_PMIC_INT);
}
...... 四、i2c-tools检查注册情况:
root@android:/data/local # ./i2cdetect -r -y
a b c d e f
: -- -- -- -- -- UU -- -- -- -- -- -- --
: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
: -- -- -- -- -- -- -- -- -- -- -- -- -- UU -- --
: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
: -- -- -- -- -- -- -- --
root@android:/data/local # 五、查看驱动信息:
root@android:/sys/bus/i2c/devices/- # cat pfuze_ctl
reg000:
reg001:
reg002:
reg003:
reg004:
reg005:
reg006: 3f
reg007:
reg008:
reg009: 7f
reg010:
reg011:
reg012:
reg013:
reg014:
reg015:
reg016:
reg017:
reg018: 3f
reg019:
reg020:
reg021:
reg022:
reg023:
reg024:
reg025:
reg026:
reg027:
reg028:
reg029:
reg030:
reg031:
reg032: 2b
reg033: 1b
reg034: 2b
reg035: 0c
reg036: c4
reg037:
reg038:
reg039:
reg040:
reg041:
reg042:
reg043:
reg044:
reg045:
reg046: 2b
reg047: 1b
reg048: 2b
reg049: 0c
reg050: c4
reg051:
reg052:
reg053:
reg054:
reg055:
reg056: 0c
reg057: d4
reg058:
reg059:
reg060: 2c
reg061: 2c
reg062: 2c
reg063: 0c
reg064: e4
reg065:
reg066:
reg067: 2c
reg068: 2c
reg069: 2c
reg070: 0c
reg071: e4
reg072:
reg073:
reg074: 6f
reg075: 6f
reg076: 6f
reg077: 0c
reg078: f4
reg079:
reg080:
reg081:
reg082:
reg083:
reg084:
reg085:
reg086:
reg087:
reg088:
reg089:
reg090:
reg091:
reg092:
reg093:
reg094:
reg095:
reg096:
reg097:
reg098:
reg099:
reg100:
reg101:
reg102:
reg103:
reg104:
reg105:
reg106:
reg107:
reg108: 1e
reg109: 1e
reg110:
reg111:
reg112: 1a
reg113: 1f
reg114:
reg115:
reg116:
reg117:
reg118:
reg119:
reg120:
reg121:
reg122:
reg123:
reg124:
reg125:
reg126:
reg127: root@android:/sys/bus/i2c/devices/- #