lkml.org 
[lkml]   [2018]   [Sep]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.18 117/131] ALSA: sb: Fix PCM format bit calculation
    Date
    From: Takashi Iwai <tiwai@suse.de>

    [ Upstream commit 55ff2d1ea5487fe131cce399baf4503dcf5cc8e1 ]

    The PCM format type in snd_pcm_format_t can't be treated as integer
    implicitly since it's with __bitwise. We have already a helper
    function to get the bit index of the given type, and use it in each
    place instead.

    This fixes sparse warnings like:
    sound/isa/sb/sb16_main.c:61:44: warning: restricted snd_pcm_format_t degrades to integer

    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    sound/isa/sb/sb16_main.c | 9 ++++++---
    1 file changed, 6 insertions(+), 3 deletions(-)

    diff --git a/sound/isa/sb/sb16_main.c b/sound/isa/sb/sb16_main.c
    index 3e39ba220c39..11ed4a6e5bf1 100644
    --- a/sound/isa/sb/sb16_main.c
    +++ b/sound/isa/sb/sb16_main.c
    @@ -49,6 +49,9 @@ MODULE_AUTHOR("Jaroslav Kysela <perex@perex.cz>");
    MODULE_DESCRIPTION("Routines for control of 16-bit SoundBlaster cards and clones");
    MODULE_LICENSE("GPL");

    +#define runtime_format_bits(runtime) \
    + ((unsigned int)pcm_format_to_bits((runtime)->format))
    +
    #ifdef CONFIG_SND_SB16_CSP
    static void snd_sb16_csp_playback_prepare(struct snd_sb *chip, struct snd_pcm_runtime *runtime)
    {
    @@ -58,7 +61,7 @@ static void snd_sb16_csp_playback_prepare(struct snd_sb *chip, struct snd_pcm_ru
    if (csp->running & SNDRV_SB_CSP_ST_LOADED) {
    /* manually loaded codec */
    if ((csp->mode & SNDRV_SB_CSP_MODE_DSP_WRITE) &&
    - ((1U << runtime->format) == csp->acc_format)) {
    + (runtime_format_bits(runtime) == csp->acc_format)) {
    /* Supported runtime PCM format for playback */
    if (csp->ops.csp_use(csp) == 0) {
    /* If CSP was successfully acquired */
    @@ -66,7 +69,7 @@ static void snd_sb16_csp_playback_prepare(struct snd_sb *chip, struct snd_pcm_ru
    }
    } else if ((csp->mode & SNDRV_SB_CSP_MODE_QSOUND) && (csp->q_enabled)) {
    /* QSound decoder is loaded and enabled */
    - if ((1 << runtime->format) & (SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_U8 |
    + if (runtime_format_bits(runtime) & (SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_U8 |
    SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_U16_LE)) {
    /* Only for simple PCM formats */
    if (csp->ops.csp_use(csp) == 0) {
    @@ -106,7 +109,7 @@ static void snd_sb16_csp_capture_prepare(struct snd_sb *chip, struct snd_pcm_run
    if (csp->running & SNDRV_SB_CSP_ST_LOADED) {
    /* manually loaded codec */
    if ((csp->mode & SNDRV_SB_CSP_MODE_DSP_READ) &&
    - ((1U << runtime->format) == csp->acc_format)) {
    + (runtime_format_bits(runtime) == csp->acc_format)) {
    /* Supported runtime PCM format for capture */
    if (csp->ops.csp_use(csp) == 0) {
    /* If CSP was successfully acquired */
    --
    2.17.1
    \
     
     \ /
      Last update: 2018-09-02 15:07    [W:4.068 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site