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(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 #

 

时间: 2024-09-20 13:53:10

I.MX6 PMU MMPF0100 driver porting的相关文章

I.MX6 bq27441 driver porting

/************************************************************************** * I.MX6 bq27441 driver porting * 声明: * 本文主要记录bq27441电池检测芯片驱动遇到的一些问题以及解决方法. * * 2016-1-28 深圳 南山平山村 曾剑锋 ************************************************************************

I.MX6 Goodix GT9xx touchscreen driver porting

/************************************************************************ * I.MX6 Goodix GT9xx touchscreen driver porting * 声明: * 本文主要是记录GT9xx电容Touch移植过程中遇到的一些问题. * * 2016-1-27 深圳 南山平山村 曾剑锋 ************************************************************

I.MX6 Linux eGTouch TouchScreen porting

I.MX6 Linux eGTouch TouchScreen porting 一.Download Driver: http://www.eeti.com.tw/drivers_Linux.html 二.阅读:EETI eGTouch Linux Programming Guide 三.系统启动配置: ...... # 本人直接将驱动放在内核里了,并没有做成模块 # insmod /module/hid-multitouch.ko # 使用eGTouch_v2.5.4330.L-ma/eGTo

I.MX6 HUAWEI MU609 3G porting

/*************************************************************************** * I.MX6 HUAWEI MU609 3G porting * 声明: * 本文主要是记录移植3G模块时,查看的资料与遇到的一些问题, * 使用的解决方法. * * 2015-8-8 晴 深圳 南山平山村 曾剑锋 ****************************************************************

I.MX6 PWM buzzer driver hacking with Demo test

/***************************************************************************** * I.MX6 PWM buzzer driver hacking with Demo test * 声明: * 1. I.MX6和OK335xS实现PWM驱动函数是不一样的: * 2. 通过分析PWM驱动,了解有哪些驱动函数可以用: * 3. 使用I.MX6提供的PWM函数,编写测试用例buzzer驱动: * 4. 使用C编写测试程序.

I.MX6 AD7606-4 device driver registe hacking

/********************************************************************** * I.MX6 AD7606-4 device driver registe hacking * 说明: * 看一下AD7606的驱动注册上是否存在一些问题. * * 2017-8-4 深圳 龙华樟坑村 曾剑锋 *********************************************************************/ /

linux tmp75 /dev/i2c-* 获取数据 demo

/********************************************************************** * linux tmp75 /dev/i2c-* 获取数据 demo * 说明: * 之前尝试过一次用这种方式来读EEPROM,结果以失败告终,也没找到原因, * 今天定位到问题是由于I2C_SLAVE.I2C_SLAVE_FORCE导致的,之前一直尝试 * I2C_SLAVE,今天定位到问题是I2C总线忙,改成用I2C_SLAVE_FORCE就解决.

I.MX6 Linux I2C device& driver hacking

/******************************************************************************************* * I.MX6 Linux I2C device& driver hacking * 声明: * 1. 本文主要是对Linux I2C驱动进行代码跟踪,主要是为了能够对I2C驱动框架有个全面的了解: * 2. 本文源代码来自myzr_android4_2_2_1_1_0.tar.bz2: * 3. 如果你有兴趣,

I.MX6 Ubuntu core porting

/*********************************************************************** * I.MX6 Ubuntu core porting * 说明: * 之前查资料查到了Ubuntu core的资料,然后一直想尝试将Ubuntu core放到 * I.MX6中,当然也想将其放到OK335xS中,于是今天花点时间将其放入I.MX6中. * * 2016-4-16 深圳 南山平山村 曾剑锋 ***********************