This version (20 Nov 2015 15:52) was approved by larsc.The Previously approved version (06 Feb 2014 11:36) is available.Diff

ADP150 Regulator Fixed Voltage Linux Driver

Supported Devices

Evaluation Boards

Reference Circuits


The fixed regulator voltage driver can be used to control these chips. Please connect the ENable switch pin to any available GPIO port on your CPU. This driver adapts to voltage and current regulator framework in Linux kernel.


Software configurable features

Source Code


Source Mainlined?
git Yes


Example platform device initialization

The default platform info defined in bf537-stamp board file is for ad122. If you want to customize this driver for other switch only regulator, you should revise the platform information accordingly.

  • Define device supply name exported by the adp_switch driver.

<source trunk/arch/blackfin/mach-bf537/boards/stamp.c:adp122_consumers{} c linux-kernel>

  • Define regulator init data of this supply.

<source trunk/arch/blackfin/mach-bf537/boards/stamp.c:adp_switch_regulator_data{} c linux-kernel>

  • Add new userspace consumer platform device for this supply.

<source trunk/arch/blackfin/mach-bf537/boards/stamp.c:adp122_bulk_data{} c linux-kernel> <source trunk/arch/blackfin/mach-bf537/boards/stamp.c:adp122_userspace_comsumer_data{} c linux-kernel> <source trunk/arch/blackfin/mach-bf537/boards/stamp.c:adp122_userspace_consumer_device{} c linux-kernel>

Adding Linux driver support

Enable generic GPIO lib in kernel option.

Device Drivers  --->
[*] GPIO Support  --->

Select voltage and current regulator framework support and enable adp_switch driver. Don't forget to select userspace regulator consumer driver as a module. adp_switch driver is initialized after userspace consumer driver, if both are built into kernel.

Device Drivers  --->
[*] Voltage and Current Regulator Support  --->
    <*>   Fixed voltage regulator support
    <*>   Userspace regulator consumer support

Hardware configuration

Driver testing

Check regulator driver initialization information at kernel booting.

regulator: core version 0.5
regulator: adp122: 2500 mV                                                                     

Check if adp122 is probed properly.

root:/> ls sys/class/regulator/
root:/> ls sys/class/regulator/regulator.0/
device      name        power       subsystem   uevent
microvolts  num_users   state       type
root:/> cat sys/class/regulator/regulator.0/name
root:/> cat sys/class/regulator/regulator.0/type
root:/> cat sys/class/regulator/regulator.0/microvolts
root:/> cat sys/class/regulator/regulator.0/state
root:/> cat sys/class/regulator/regulator.0/num_users

Insert user space consumer driver module and check usability.

root:/> modprobe userspace-consumer
root:/> ls sys/devices/platform/reg-userspace-consumer.0/
driver                      power
microamps_requested_adp122  state
modalias                    subsystem
name                        uevent
root:/> cat sys/devices/platform/reg-userspace-consumer.0/name
root:/> cat sys/devices/platform/reg-userspace-consumer.0/state
root:/> echo enabled > sys/devices/platform/reg-userspace-consumer.0/state
root:/> cat sys/devices/platform/reg-userspace-consumer.0/state

More Information

resources/tools-software/linux-drivers/regulator/adp150.txt · Last modified: 20 Nov 2015 15:52 by larsc