• Arnd Bergmann's avatar
    ASoC: samsung: pass DMA channels as pointers · e08f9a7c
    Arnd Bergmann authored
    commit b9a1a743 upstream.
    
    ARM64 allmodconfig produces a bunch of warnings when building the
    samsung ASoC code:
    
    sound/soc/samsung/dmaengine.c: In function 'samsung_asoc_init_dma_data':
    sound/soc/samsung/dmaengine.c:53:32: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
       playback_data->filter_data = (void *)playback->channel;
    sound/soc/samsung/dmaengine.c:60:31: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
       capture_data->filter_data = (void *)capture->channel;
    
    We could easily shut up the warning by adding an intermediate cast,
    but there is a bigger underlying problem: The use of IORESOURCE_DMA
    to pass data from platform code to device drivers is dubious to start
    with, as what we really want is a pointer that can be passed into
    a filter function.
    
    Note that on s3c64xx, the pl08x DMA data is already a pointer, but
    gets cast to resource_size_t so we can pass it as a resource, and it
    then gets converted back to a pointer. In contrast, the data we pass
    for s3c24xx is an index into a device specific table, and we artificially
    convert that into a pointer for the filter function.
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Reviewed-by: default avatarKrzysztof Kozlowski <k.kozlowski@samsung.com>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    e08f9a7c
spdif.c 11.6 KB