diff options
author | Duncan Laurie <dlaurie@chromium.org> | 2016-05-11 11:27:47 -0700 |
---|---|---|
committer | Duncan Laurie <dlaurie@chromium.org> | 2016-06-02 05:37:07 +0200 |
commit | 7db15094c259f9417d16cbba102cea100eb2bcf8 (patch) | |
tree | bee0621688a675f4347cb85843b2d862681a6ea5 /src/drivers/generic/max98357a/chip.h | |
parent | 21a097aedc2b5a45bd55e1a6fb61a21f0ff43e07 (diff) |
generic: Add a Maxim 98357A codec driver
The Maxim Integrated 98357A codec is an I2S slave device that has no
control channel for configuration and instead provides a GPIO that is
used for channel selection and power down. This means it does not fit
into a bus hierarchy easily and is instead represented as a generic
device and found with a static bus scan using the devicetree.
This driver provides configuration options for passing the "sdmode" GPIO
descriptor as well as a second option for "sdmode delay" which can
configure the timing of the sdmode toggling in relation to the I2S
channel output.
In addition an GPIO can be provided to indicate to the driver whether
this device is present or not. This can be used for board designs that
may have different codec possibilities that are selected by HW strap.
Sample usage for this device driver:
device pci 1f.3 on
chip drivers/generic/max98357a
register "sdmode_gpio" = "ACPI_GPIO_OUTPUT(GPP_C6)"
register "sdmode_delay" = "100"
device generic 0 on end
end
end
Will result in the following code in the SSDT:
Scope (\_SB.PCI0.HDAS) {
Device (MAXM) {
Name (_HID, "MX98357A")
Name (_UID, Zero)
Name (_DDN, "Maxim Integrated 98357A Amplifier")
Method (_STA) { Return (0xF) }
Name (_CRS, ResourceTemplate () {
GpioIo (Exclusive, PullDefault, 0, 0, IoRestrictionOutputOnly,
"\\_SB.PCI0.GPIO", 0, ResourceConsumer)
})
Name (_DSD, Package () {
ToUUID ("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package () {
Package () { "maxim,sdmode-gpio", \_SB.PCI0.HDAS.MAXM, 0, 0, 0 }
Package () { "maxim,sdmode-delay", 100 }
Package () { "sdmode-delay", 100 }
}
})
}
}
Change-Id: Ia0bafe49bea9bbe4a3cc0f9f9cdb6f6390da57b5
Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: https://review.coreboot.org/15017
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'src/drivers/generic/max98357a/chip.h')
-rw-r--r-- | src/drivers/generic/max98357a/chip.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/drivers/generic/max98357a/chip.h b/src/drivers/generic/max98357a/chip.h new file mode 100644 index 0000000000..0abd616c18 --- /dev/null +++ b/src/drivers/generic/max98357a/chip.h @@ -0,0 +1,13 @@ +#include <arch/acpi_device.h> + +struct drivers_generic_max98357a_config { + /* SDMODE GPIO */ + struct acpi_gpio sdmode_gpio; + + /* SDMODE Delay */ + unsigned sdmode_delay; + + /* GPIO used to indicate if this device is present */ + unsigned device_present_gpio; + unsigned device_present_gpio_invert; +}; |