Show Contents

# PF3000 Power Management IC (PMIC)

The ConnectCore 6UL contains an NXP PF3000 Power Management IC (PMIC). The PMIC is connected to the CPU via the I2C1 port (address 0x08).

The PMIC has the following features:

- Four buck regulators
- One boost regulator
- Six low-dropout (LDO) regulators
- Coin cell charger
- DDR reference voltage
- Battery-backed memory (4 bytes)

## Kernel configuration

You can manage the PF3000 driver support through the following kernel configuration option:

- Freescale PFUZE100/PFUZE200 regulator driver (CONFIG_REGULATOR_PFUZE100)

This option is enabled as built-in on the default ConnectCore 6UL kernel configuration file.

## Platform driver mapping

The driver for PF3000 driver is located at:

File | Description
--- | ---
drivers/regulator/pfuze100-regulator.c | PF3000 driver

## Device tree bindings and customization

The PF3000 device tree binding is documented at Documentation/devicetree/bindings/regulator/pfuze100.txt.

The PMIC and its regulators are defined on the ConnectCore 6UL device tree at arch/arm/boot/dts/imx6ul-ccimx6ul.dtsi. Some regulators are used internally inside the ConnectCore 6UL and some are used externally on the carrier board. The settings of the external regulators can be modified in the carrier board device tree if required by your platform.

### ConnectCore 6UL internal regulators

CAUTION! The following regulators are used internally on the ConnectCore 6UL and their parameters should not be modified.

Device tree alias | PF3000 regulator | Description
--- | --- | ---
int_3v3 | SW1A | Powers several interfaces inside the module
vdd_arm_soc_in | SW1B | Internal CPU power supply
vcc_ddr3 | SW3 | DDR3 power supply
vdd_snvs_3v3 | VSNVS | Internal CPU power supply
vrefddr | VREFDDR | DDR reference voltage
vdda_adc_3v3 | LDO1 | CPU ADC reference voltage
vdda_wlan | VCC_SD | Wireless chip power supply
vdd_high_in | V33 | Internal CPU power supply

### ConnectCore 6UL external regulators

The following regulators are routed outside the ConnectCore 6UL and may be used in the carrier board:

Device tree alias | PF3000 regulator | Type | Default voltage | Usage on ConnectCore 6UL SBC Express | Usage on ConnectCore 6UL SBC Pro
--- | --- | --- | --- | --- | ---
swbst_reg | SWBST | Boost regulator | 5 V |  |
ext_3v3 | SW2 | Buck regulator | 3.3 V | Ethernet PHY, microSD, Raspberry PI, Grove, UART, JTAG, bootstrap. | 2x Ethernet PHY, microSD, eMMC, UART RS-232, I/O expander, USB hub, LVDS, parallel LCD, parallel camera, audio, CAN, XBee, NTAG, bootstrap
ldo2_ext | LDO2 | LDO regulator | 1.5 V |  |
ldo4_ext | LDO4 | LDO regulator | 1.8 V |  | LVDS, audio
vcoin_chg | VCOIN | Coin cell charger | 3 V |  | External coin cell

Note Digi recommends you use the device tree alias for modifying the ConnectCore 6UL external regulator parameters in the final platform DTS file.

### Example of a regulator consumer in the device tree

Certain device drivers have a property in the form propname-supply to help users define them as consumers of a power regulator. You can use this property to provide the phandle of the regulator that powers the device. This mechanism reduces the overall power consumption of the system by allowing the driver to enable the regulator when the interface is being used and disable it (or set a lower voltage) when the system goes to suspend or the driver is unloaded.

For example, on the ConnectCore 6UL SBC Pro, the parallel LCD to LVDS converter is powered by PMIC LDO4. The LCD property lcd-supply allows you to define a power supply that will be controlled by the LCD driver.

    ConnectCore 6UL SBC Pro

    &lcdif {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_lcdif_dat0_17
                 &pinctrl_lcdif_clken
                 &pinctrl_lcdif_hvsync>;
        lcd-supply = <&ldo4_ext>;    /* BU90T82 LVDS bridge power */
        display = <&f10a0102>;
        status = "disabled";

        ...
    };

## Read and write PMIC non-volatile registers

Besides the regulators, the PF3000 PMIC allows access to four 8-bit registers (MEMA .. MEMD) whose value is maintained by coin cell battery. The four registers can be read or written as binary data all at once through the sysfs.

To read them:

    ~# hexdump -Cv /sys/devices/platform/soc/2100000.aips-bus/21a0000.i2c/i2c-0/0-0008/nvram
    00000000  00 00 00 00                                       |....|

To write hex values (for example MEMA=0x01, MEMB=0xAA, MEMC=0x02, MEMD=0xEF):

    ~# printf "\x01\xAA\x02\xEF" | dd of=/sys/devices/platform/soc/2100000.aips-bus/21a0000.i2c/i2c-0/0-0008/nvram
    0+1 records in
    0+1 records out

© 2018 Digi International Inc. All rights reserved.
PF3000 Power Management IC (PMIC) updated on 22 January 2018 02:43:37 PM