Wolfson Open Source

Using Wolfson AudioPlus PMIC drivers

The Wolfson AudioPlus PMICs provide a wide range of functionality which crosses many different subsystems within the Linux kernel. In order to integrate with these subsystems a number of device drivers are provided for each AudioPlus device.

Core device support

All the different drivers for the device coordinate access to the device using a driver in the kernel multi-function device (MFD) subsystem, under drivers/mfd in the kernel source. For each PMIC there are several options, one for each control bus (I2C or SPI) that can be used with the PMIC. This allows maximum flexibility in selecting what is built into the kernel and what is loaded as modules at runtime.

In order to allow a reduction in kernel size the WM835x drivers also have configuration options for the configuration mode that the hardware uses, ensuring that only the register defaults used for the relevant configuration mode are built into the kernel. Unlike the other kernel configuration options these must be enabled by the main board driver for the system under arch/arm. For example, the 1133-EV1 evaluation board for the WM8350 and WM8352 is configured like this:

 config MACH_MX31ADS_WM1133_EV1
         bool "Support Wolfson Microelectronics 1133-EV1 module"
         depends on MACH_MX31ADS
         depends on MFD_WM8350_I2C
         depends on REGULATOR_WM8350
         select MFD_WM8350_CONFIG_MODE_0
         select MFD_WM8352_CONFIG_MODE_0
            Include support for the Wolfson Microelectronics 1133-EV1 PMU
            and audio module for the MX31ADS platform

which says that either of the devices may be fitted and if they are fitted they will use configuration mode 0.


The standard kernel has some examples of AudioPlus driver usage. The 1133-EV1 evaluation board for the Freescale i.MX31ADS system (in arch/arm/mach-mx3/mx31ads.c) and the 1190-EV1 evaluation board for the Samsung SMDK6410 (in arch/arm/mach-s3c6410/mach-smdk6410.c) both use WM835x series devices.

In both cases these are limited by the support available for the underlying system in the standard kernel but it is expected that they will become more fully featured over time.

Copyright Wolfson Microelectronics 2006-8