I.MX6 PMU MMPF0100 driver porting

时间:2022-04-14 09:22:22
/**************************************************************************
 *                   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(1, &pfuze100_i2c_device, 1);
    }

二、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 1                                 
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:          -- -- -- -- -- UU -- -- -- -- -- -- -- 
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- 
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
    70: -- -- -- -- -- -- -- --                         
    root@android:/data/local # 
    
五、查看驱动信息:
    root@android:/sys/bus/i2c/devices/1-0008 # cat pfuze_ctl                       
    reg000: 10
    reg001: 00
    reg002: 00
    reg003: 21
    reg004: 00
    reg005: 01
    reg006: 3f
    reg007: 01
    reg008: 00
    reg009: 7f
    reg010: 00
    reg011: 00
    reg012: 00
    reg013: 00
    reg014: 00
    reg015: 81
    reg016: 00
    reg017: 00
    reg018: 3f
    reg019: 00
    reg020: 00
    reg021: 00
    reg022: 00
    reg023: 00
    reg024: 00
    reg025: 00
    reg026: 00
    reg027: 10
    reg028: 00
    reg029: 00
    reg030: 00
    reg031: 00
    reg032: 2b
    reg033: 1b
    reg034: 2b
    reg035: 0c
    reg036: c4
    reg037: 00
    reg038: 00
    reg039: 00
    reg040: 00
    reg041: 00
    reg042: 00
    reg043: 00
    reg044: 00
    reg045: 00
    reg046: 2b
    reg047: 1b
    reg048: 2b
    reg049: 0c
    reg050: c4
    reg051: 00
    reg052: 00
    reg053: 72
    reg054: 72
    reg055: 72
    reg056: 0c
    reg057: d4
    reg058: 00
    reg059: 00
    reg060: 2c
    reg061: 2c
    reg062: 2c
    reg063: 0c
    reg064: e4
    reg065: 00
    reg066: 00
    reg067: 2c
    reg068: 2c
    reg069: 2c
    reg070: 0c
    reg071: e4
    reg072: 00
    reg073: 00
    reg074: 6f
    reg075: 6f
    reg076: 6f
    reg077: 0c
    reg078: f4
    reg079: 00
    reg080: 00
    reg081: 00
    reg082: 00
    reg083: 00
    reg084: 00
    reg085: 00
    reg086: 00
    reg087: 00
    reg088: 00
    reg089: 00
    reg090: 00
    reg091: 00
    reg092: 00
    reg093: 00
    reg094: 00
    reg095: 00
    reg096: 00
    reg097: 00
    reg098: 00
    reg099: 00
    reg100: 00
    reg101: 00
    reg102: 48
    reg103: 00
    reg104: 00
    reg105: 00
    reg106: 10
    reg107: 06
    reg108: 1e
    reg109: 1e
    reg110: 17
    reg111: 10
    reg112: 1a
    reg113: 1f
    reg114: 00
    reg115: 00
    reg116: 00
    reg117: 00
    reg118: 00
    reg119: 00
    reg120: 00
    reg121: 00
    reg122: 00
    reg123: 00
    reg124: 00
    reg125: 00
    reg126: 00
    reg127: 00
    
    root@android:/sys/bus/i2c/devices/1-0008 #