/* * This file is only included exactly once! * * The tables here are derived from the tas3004 datasheet, * modulo typo corrections and some smoothing... */ #define TAS3004_TREBLE_MIN 0 #define TAS3004_TREBLE_MAX 72 #define TAS3004_BASS_MIN 0 #define TAS3004_BASS_MAX 72 #define TAS3004_TREBLE_ZERO 36 #define TAS3004_BASS_ZERO 36 static u8 tas3004_treble_table[] = { 150, /* -18 dB */ 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, /* 0 dB */ 113, 112, 111, 109, 108, 107, 105, 104, 103, 101, 99, 98, 96, 93, 91, 89, 86, 83, 81, 77, 74, 71, 67, 63, 59, 54, 49, 44, 38, 32, 26, 19, 10, 4, 2, 1, /* +18 dB */ }; static inline u8 tas3004_treble(int idx) { return tas3004_treble_table[idx]; } /* I only save the difference here to the treble table * so that the binary is smaller... * I have also ignored completely differences of * +/- 1 */ static s8 tas3004_bass_diff_to_treble[] = { 2, /* 7 dB, offset 50 */ 2, 2, 2, 2, 1, 2, 2, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 14, 13, 8, 1, /* 18 dB */ }; static inline u8 tas3004_bass(int idx) { u8 result = tas3004_treble_table[idx]; if (idx >= 50) result += tas3004_bass_diff_to_treble[idx-50]; return result; } net-next plumbingsTobias Klauser
summaryrefslogtreecommitdiff
path: root/sound/drivers/pcsp
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2017-01-27 15:00:45 -0600
committerBjorn Helgaas <bhelgaas@google.com>2017-01-27 15:00:45 -0600
commit030305d69fc6963c16003f50d7e8d74b02d0a143 (patch)
tree363a4e34d199178769b7e7eeb26ea2620a55847b /sound/drivers/pcsp
parent4d191b1b63c209e37bf27938ef365244d3c41084 (diff)
PCI/ASPM: Handle PCI-to-PCIe bridges as roots of PCIe hierarchies
In a struct pcie_link_state, link->root points to the pcie_link_state of the root of the PCIe hierarchy. For the topmost link, this points to itself (link->root = link). For others, we copy the pointer from the parent (link->root = link->parent->root). Previously we recognized that Root Ports originated PCIe hierarchies, but we treated PCI/PCI-X to PCIe Bridges as being in the middle of the hierarchy, and when we tried to copy the pointer from link->parent->root, there was no parent, and we dereferenced a NULL pointer: BUG: unable to handle kernel NULL pointer dereference at 0000000000000090 IP: [<ffffffff9e424350>] pcie_aspm_init_link_state+0x170/0x820 Recognize that PCI/PCI-X to PCIe Bridges originate PCIe hierarchies just like Root Ports do, so link->root for these devices should also point to itself. Fixes: 51ebfc92b72b ("PCI: Enumerate switches below PCI-to-PCIe bridges") Link: https://bugzilla.kernel.org/show_bug.cgi?id=193411 Link: https://bugzilla.opensuse.org/show_bug.cgi?id=1022181 Tested-by: lists@ssl-mail.com Tested-by: Jayachandran C. <jnair@caviumnetworks.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> CC: stable@vger.kernel.org # v4.2+
Diffstat (limited to 'sound/drivers/pcsp')