Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

WM8903 audio CODEC

This device supports I2C only.

Required properties:

  - compatible : "wlf,wm8903"

  - reg : the I2C address of the device.

  - gpio-controller : Indicates this device is a GPIO controller.

  - #gpio-cells : Should be two. The first cell is the pin number and the
    second cell is used to specify optional parameters (currently unused).

Optional properties:

  - interrupts : The interrupt line the codec is connected to.

  - micdet-cfg : Default register value for R6 (Mic Bias). If absent, the
    default is 0.

  - micdet-delay : The debounce delay for microphone detection in mS. If
    absent, the default is 100.

  - gpio-cfg : A list of GPIO configuration register values. The list must
    be 5 entries long. If absent, no configuration of these registers is
    performed. If any entry has the value 0xffffffff, that GPIO's
    configuration will not be modified.

  - AVDD-supply : Analog power supply regulator on the AVDD pin.

  - CPVDD-supply : Charge pump supply regulator on the CPVDD pin.

  - DBVDD-supply : Digital buffer supply regulator for the DBVDD pin.

  - DCVDD-supply : Digital core supply regulator for the DCVDD pin.

Pins on the device (for linking into audio routes):

  * IN1L
  * IN1R
  * IN2L
  * IN2R
  * IN3L
  * IN3R
  * DMICDAT
  * HPOUTL
  * HPOUTR
  * LINEOUTL
  * LINEOUTR
  * LOP
  * LON
  * ROP
  * RON
  * MICBIAS

Example:

wm8903: codec@1a {
	compatible = "wlf,wm8903";
	reg = <0x1a>;
	interrupts = < 347 >;

	AVDD-supply = <&fooreg_a>;
	CPVDD-supply = <&fooreg_b>;
	DBVDD-supply = <&fooreg_c>;
	DCVDC-supply = <&fooreg_d>;

	gpio-controller;
	#gpio-cells = <2>;

	micdet-cfg = <0>;
	micdet-delay = <100>;
	gpio-cfg = <
		0x0600 /* DMIC_LR, output */
		0x0680 /* DMIC_DAT, input */
		0x0000 /* GPIO, output, low */
		0x0200 /* Interrupt, output */
		0x01a0 /* BCLK, input, active high */
	>;
};