/* * da7219-aad.h - DA7322 ASoC Codec AAD Driver Platform Data * * Copyright (c) 2015 Dialog Semiconductor Ltd. * * Author: Adam Thomson * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ #ifndef __DA7219_AAD_PDATA_H #define __DA7219_AAD_PDATA_H enum da7219_aad_micbias_pulse_lvl { DA7219_AAD_MICBIAS_PULSE_LVL_OFF = 0, DA7219_AAD_MICBIAS_PULSE_LVL_2_8V = 6, DA7219_AAD_MICBIAS_PULSE_LVL_2_9V, }; enum da7219_aad_btn_cfg { DA7219_AAD_BTN_CFG_2MS = 1, DA7219_AAD_BTN_CFG_5MS, DA7219_AAD_BTN_CFG_10MS, DA7219_AAD_BTN_CFG_50MS, DA7219_AAD_BTN_CFG_100MS, DA7219_AAD_BTN_CFG_200MS, DA7219_AAD_BTN_CFG_500MS, }; enum da7219_aad_mic_det_thr { DA7219_AAD_MIC_DET_THR_200_OHMS = 0, DA7219_AAD_MIC_DET_THR_500_OHMS, DA7219_AAD_MIC_DET_THR_750_OHMS, DA7219_AAD_MIC_DET_THR_1000_OHMS, }; enum da7219_aad_jack_ins_deb { DA7219_AAD_JACK_INS_DEB_5MS = 0, DA7219_AAD_JACK_INS_DEB_10MS, DA7219_AAD_JACK_INS_DEB_20MS, DA7219_AAD_JACK_INS_DEB_50MS, DA7219_AAD_JACK_INS_DEB_100MS, DA7219_AAD_JACK_INS_DEB_200MS, DA7219_AAD_JACK_INS_DEB_500MS, DA7219_AAD_JACK_INS_DEB_1S, }; enum da7219_aad_jack_det_rate { DA7219_AAD_JACK_DET_RATE_32_64MS = 0, DA7219_AAD_JACK_DET_RATE_64_128MS, DA7219_AAD_JACK_DET_RATE_128_256MS, DA7219_AAD_JACK_DET_RATE_256_512MS, }; enum da7219_aad_jack_rem_deb { DA7219_AAD_JACK_REM_DEB_1MS = 0, DA7219_AAD_JACK_REM_DEB_5MS, DA7219_AAD_JACK_REM_DEB_10MS, DA7219_AAD_JACK_REM_DEB_20MS, }; enum da7219_aad_btn_avg { DA7219_AAD_BTN_AVG_1 = 0, DA7219_AAD_BTN_AVG_2, DA7219_AAD_BTN_AVG_4, DA7219_AAD_BTN_AVG_8, }; enum da7219_aad_adc_1bit_rpt { DA7219_AAD_ADC_1BIT_RPT_1 = 0, DA7219_AAD_ADC_1BIT_RPT_2, DA7219_AAD_ADC_1BIT_RPT_4, DA7219_AAD_ADC_1BIT_RPT_8, }; struct da7219_aad_pdata { int irq; enum da7219_aad_micbias_pulse_lvl micbias_pulse_lvl; u32 micbias_pulse_time; enum da7219_aad_btn_cfg btn_cfg; enum da7219_aad_mic_det_thr mic_det_thr; enum da7219_aad_jack_ins_deb jack_ins_deb; enum da7219_aad_jack_det_rate jack_det_rate; enum da7219_aad_jack_rem_deb jack_rem_deb; u8 a_d_btn_thr; u8 d_b_btn_thr; u8 b_c_btn_thr; u8 c_mic_btn_thr; enum da7219_aad_btn_avg btn_avg; enum da7219_aad_adc_1bit_rpt adc_1bit_rpt; }; #endif /* __DA7219_AAD_PDATA_H */ type='hidden' name='id' value='030305d69fc6963c16003f50d7e8d74b02d0a143'/>
path: root/net/caif/cfserl.c
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 /net/caif/cfserl.c
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 'net/caif/cfserl.c')