mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 04:02:20 +00:00
ALSA: isa: Avoid passing NULL to memory allocators
We used to pass NULL to memory allocators for ISA devices due to historical reasons. But we prefer rather a proper device object to be assigned, so let's fix it by replacing snd_dma_isa_data() call with card->dev reference, and kill snd_dma_isa_data() definition. Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
6a8125c3ca
commit
0b6a2c9cf4
@ -3520,14 +3520,14 @@ allocator will try to get an area as large as possible within the
|
||||
given size.
|
||||
|
||||
The second argument (type) and the third argument (device pointer) are
|
||||
dependent on the bus. In the case of the ISA bus, pass
|
||||
:c:func:`snd_dma_isa_data()` as the third argument with
|
||||
dependent on the bus. For normal devices, pass the device pointer
|
||||
(typically identical as ``card->dev``) to the third argument with
|
||||
``SNDRV_DMA_TYPE_DEV`` type. For the continuous buffer unrelated to the
|
||||
bus can be pre-allocated with ``SNDRV_DMA_TYPE_CONTINUOUS`` type and the
|
||||
``snd_dma_continuous_data(GFP_KERNEL)`` device pointer, where
|
||||
``GFP_KERNEL`` is the kernel allocation flag to use. For the PCI
|
||||
scatter-gather buffers, use ``SNDRV_DMA_TYPE_DEV_SG`` with
|
||||
``snd_dma_pci_data(pci)`` (see the `Non-Contiguous Buffers`_
|
||||
``GFP_KERNEL`` is the kernel allocation flag to use. For the
|
||||
scatter-gather buffers, use ``SNDRV_DMA_TYPE_DEV_SG`` with the device
|
||||
pointer (see the `Non-Contiguous Buffers`_
|
||||
section).
|
||||
|
||||
Once the buffer is pre-allocated, you can use the allocator in the
|
||||
|
@ -37,7 +37,6 @@ struct snd_dma_device {
|
||||
};
|
||||
|
||||
#define snd_dma_pci_data(pci) (&(pci)->dev)
|
||||
#define snd_dma_isa_data() NULL
|
||||
#define snd_dma_continuous_data(x) ((struct device *)(__force unsigned long)(x))
|
||||
|
||||
|
||||
|
@ -693,7 +693,7 @@ int snd_ad1816a_pcm(struct snd_ad1816a *chip, int device)
|
||||
snd_ad1816a_init(chip);
|
||||
|
||||
snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
|
||||
snd_dma_isa_data(),
|
||||
chip->card->dev,
|
||||
64*1024, chip->dma1 > 3 || chip->dma2 > 3 ? 128*1024 : 64*1024);
|
||||
|
||||
chip->pcm = pcm;
|
||||
|
@ -470,7 +470,7 @@ static int snd_cmi8330_pcm(struct snd_card *card, struct snd_cmi8330 *chip)
|
||||
snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &chip->streams[SNDRV_PCM_STREAM_CAPTURE].ops);
|
||||
|
||||
snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
|
||||
snd_dma_isa_data(),
|
||||
card->dev,
|
||||
64*1024, 128*1024);
|
||||
chip->pcm = pcm;
|
||||
|
||||
|
@ -746,7 +746,7 @@ int snd_es1688_pcm(struct snd_card *card, struct snd_es1688 *chip, int device)
|
||||
chip->pcm = pcm;
|
||||
|
||||
snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
|
||||
snd_dma_isa_data(),
|
||||
card->dev,
|
||||
64*1024, 64*1024);
|
||||
return 0;
|
||||
}
|
||||
|
@ -1717,7 +1717,7 @@ static int snd_es18xx_pcm(struct snd_card *card, int device)
|
||||
chip->pcm = pcm;
|
||||
|
||||
snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
|
||||
snd_dma_isa_data(),
|
||||
card->dev,
|
||||
64*1024,
|
||||
chip->dma1 > 3 || chip->dma2 > 3 ? 128*1024 : 64*1024);
|
||||
return 0;
|
||||
|
@ -891,7 +891,7 @@ int snd_gf1_pcm_new(struct snd_gus_card *gus, int pcm_dev, int control_index)
|
||||
|
||||
for (substream = pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream; substream; substream = substream->next)
|
||||
snd_pcm_lib_preallocate_pages(substream, SNDRV_DMA_TYPE_DEV,
|
||||
snd_dma_isa_data(),
|
||||
card->dev,
|
||||
64*1024, gus->gf1.dma1 > 3 ? 128*1024 : 64*1024);
|
||||
|
||||
pcm->info_flags = 0;
|
||||
@ -901,7 +901,7 @@ int snd_gf1_pcm_new(struct snd_gus_card *gus, int pcm_dev, int control_index)
|
||||
if (gus->gf1.dma2 == gus->gf1.dma1)
|
||||
pcm->info_flags |= SNDRV_PCM_INFO_HALF_DUPLEX;
|
||||
snd_pcm_lib_preallocate_pages(pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream,
|
||||
SNDRV_DMA_TYPE_DEV, snd_dma_isa_data(),
|
||||
SNDRV_DMA_TYPE_DEV, card->dev,
|
||||
64*1024, gus->gf1.dma2 > 3 ? 128*1024 : 64*1024);
|
||||
}
|
||||
strcpy(pcm->name, pcm->id);
|
||||
|
@ -889,7 +889,7 @@ int snd_sb16dsp_pcm(struct snd_sb *chip, int device)
|
||||
}
|
||||
|
||||
snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
|
||||
snd_dma_isa_data(),
|
||||
card->dev,
|
||||
64*1024, 128*1024);
|
||||
return 0;
|
||||
}
|
||||
|
@ -610,7 +610,7 @@ int snd_sb8dsp_pcm(struct snd_sb *chip, int device)
|
||||
if (chip->dma8 > 3 || chip->dma16 >= 0)
|
||||
max_prealloc = 128 * 1024;
|
||||
snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
|
||||
snd_dma_isa_data(),
|
||||
card->dev,
|
||||
64*1024, max_prealloc);
|
||||
|
||||
return 0;
|
||||
|
@ -167,12 +167,13 @@ static inline struct soundscape *get_card_soundscape(struct snd_card *c)
|
||||
* I think this means that the memory has to map to
|
||||
* contiguous pages of physical memory.
|
||||
*/
|
||||
static struct snd_dma_buffer *get_dmabuf(struct snd_dma_buffer *buf,
|
||||
static struct snd_dma_buffer *get_dmabuf(struct soundscape *s,
|
||||
struct snd_dma_buffer *buf,
|
||||
unsigned long size)
|
||||
{
|
||||
if (buf) {
|
||||
if (snd_dma_alloc_pages_fallback(SNDRV_DMA_TYPE_DEV,
|
||||
snd_dma_isa_data(),
|
||||
s->chip->card->dev,
|
||||
size, buf) < 0) {
|
||||
snd_printk(KERN_ERR "sscape: Failed to allocate "
|
||||
"%lu bytes for DMA\n",
|
||||
@ -443,7 +444,7 @@ static int upload_dma_data(struct soundscape *s, const unsigned char *data,
|
||||
int ret;
|
||||
unsigned char val;
|
||||
|
||||
if (!get_dmabuf(&dma, PAGE_ALIGN(32 * 1024)))
|
||||
if (!get_dmabuf(s, &dma, PAGE_ALIGN(32 * 1024)))
|
||||
return -ENOMEM;
|
||||
|
||||
spin_lock_irqsave(&s->lock, flags);
|
||||
|
@ -1942,7 +1942,7 @@ int snd_wss_pcm(struct snd_wss *chip, int device)
|
||||
strcpy(pcm->name, snd_wss_chip_id(chip));
|
||||
|
||||
snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
|
||||
snd_dma_isa_data(),
|
||||
chip->card->dev,
|
||||
64*1024, chip->dma1 > 3 || chip->dma2 > 3 ? 128*1024 : 64*1024);
|
||||
|
||||
chip->pcm = pcm;
|
||||
|
Loading…
Reference in New Issue
Block a user