You are here: Digi Embedded Yocto > System development > Linux v4.1 Board Support Package > Devices and interfaces > PF3000 Power management IC (PMIC)

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:

Kernel configuration

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

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

 

© 2017 Digi International Inc. All rights reserved.
PF3000 Power Management IC (PMIC) updated on 13 April 2017 10:31:15 PM