/* * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright 2003 Vivien Chappelier * Copyright 2008 Thomas Bogendoerfer */ #ifndef __SOUND_AD1843_H #define __SOUND_AD1843_H struct snd_ad1843 { void *chip; int (*read)(void *chip, int reg); int (*write)(void *chip, int reg, int val); }; #define AD1843_GAIN_RECLEV 0 #define AD1843_GAIN_LINE 1 #define AD1843_GAIN_LINE_2 2 #define AD1843_GAIN_MIC 3 #define AD1843_GAIN_PCM_0 4 #define AD1843_GAIN_PCM_1 5 #define AD1843_GAIN_SIZE (AD1843_GAIN_PCM_1+1) int ad1843_get_gain_max(struct snd_ad1843 *ad1843, int id); int ad1843_get_gain(struct snd_ad1843 *ad1843, int id); int ad1843_set_gain(struct snd_ad1843 *ad1843, int id, int newval); int ad1843_get_recsrc(struct snd_ad1843 *ad1843); int ad1843_set_recsrc(struct snd_ad1843 *ad1843, int newsrc); void ad1843_setup_dac(struct snd_ad1843 *ad1843, unsigned int id, unsigned int framerate, snd_pcm_format_t fmt, unsigned int channels); void ad1843_shutdown_dac(struct snd_ad1843 *ad1843, unsigned int id); void ad1843_setup_adc(struct snd_ad1843 *ad1843, unsigned int framerate, snd_pcm_format_t fmt, unsigned int channels); void ad1843_shutdown_adc(struct snd_ad1843 *ad1843); int ad1843_init(struct snd_ad1843 *ad1843); #endif /* __SOUND_AD1843_H */ f='/cgit.cgi/linux/net-next.git/'>summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Brodkin <Alexey.Brodkin@synopsys.com>2017-01-27 15:24:43 +0300
committerDavid S. Miller <davem@davemloft.net>2017-01-29 18:15:18 -0500
commit0a764db103376cf69d04449b10688f3516cc0b88 (patch)
tree6789a5c06ce42be32e77d6b40c6eb9baca113650
parent1b1bc42c1692e9b62756323c675a44cb1a1f9dbd (diff)
stmmac: Discard masked flags in interrupt status register
DW GMAC databook says the following about bits in "Register 15 (Interrupt Mask Register)": --------------------------->8------------------------- When set, this bit __disables_the_assertion_of_the_interrupt_signal__ because of the setting of XXX bit in Register 14 (Interrupt Status Register). --------------------------->8------------------------- In fact even if we mask one bit in the mask register it doesn't prevent corresponding bit to appear in the status register, it only disables interrupt generation for corresponding event. But currently we expect a bit different behavior: status bits to be in sync with their masks, i.e. if mask for bit A is set in the mask register then bit A won't appear in the interrupt status register. This was proven to be incorrect assumption, see discussion here [1]. That misunderstanding causes unexpected behaviour of the GMAC, for example we were happy enough to just see bogus messages about link state changes. So from now on we'll be only checking bits that really may trigger an interrupt. [1] https://lkml.org/lkml/2016/11/3/413 Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com> Cc: Fabrice Gasnier <fabrice.gasnier@st.com> Cc: Joachim Eastwood <manabian@gmail.com> Cc: Phil Reid <preid@electromag.com.au> Cc: David Miller <davem@davemloft.net> Cc: Alexandre Torgue <alexandre.torgue@gmail.com> Cc: Vineet Gupta <vgupta@synopsys.com> Signed-off-by: David S. Miller <davem@davemloft.net>