Lines Matching +full:version +full:- +full:major
1 // SPDX-License-Identifier: GPL-2.0-or-later
4 * Uros Bizjak <uros@kss-loka.si>
36 for (i = BUSY_LOOPS; i; i--) in snd_sbdsp_command()
41 snd_printd("%s [0x%lx]: timeout (0x%x)\n", __func__, chip->port, val); in snd_sbdsp_command()
49 for (i = BUSY_LOOPS; i; i--) { in snd_sbdsp_get_byte()
58 snd_printd("%s [0x%lx]: timeout\n", __func__, chip->port); in snd_sbdsp_get_byte()
59 return -ENODEV; in snd_sbdsp_get_byte()
70 for (i = BUSY_LOOPS; i; i--) in snd_sbdsp_reset()
77 snd_printdd("%s [0x%lx] failed...\n", __func__, chip->port); in snd_sbdsp_reset()
78 return -ENODEV; in snd_sbdsp_reset()
93 int version; in snd_sbdsp_probe() local
94 int major, minor; in snd_sbdsp_probe() local
102 spin_lock_irqsave(&chip->reg_lock, flags); in snd_sbdsp_probe()
104 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_sbdsp_probe()
105 return -ENODEV; in snd_sbdsp_probe()
107 version = snd_sbdsp_version(chip); in snd_sbdsp_probe()
108 if (version < 0) { in snd_sbdsp_probe()
109 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_sbdsp_probe()
110 return -ENODEV; in snd_sbdsp_probe()
112 spin_unlock_irqrestore(&chip->reg_lock, flags); in snd_sbdsp_probe()
113 major = version >> 8; in snd_sbdsp_probe()
114 minor = version & 0xff; in snd_sbdsp_probe()
115 snd_printdd("SB [0x%lx]: DSP chip found, version = %i.%i\n", in snd_sbdsp_probe()
116 chip->port, major, minor); in snd_sbdsp_probe()
118 switch (chip->hardware) { in snd_sbdsp_probe()
120 switch (major) { in snd_sbdsp_probe()
122 chip->hardware = SB_HW_10; in snd_sbdsp_probe()
127 chip->hardware = SB_HW_201; in snd_sbdsp_probe()
130 chip->hardware = SB_HW_20; in snd_sbdsp_probe()
135 chip->hardware = SB_HW_PRO; in snd_sbdsp_probe()
139 chip->hardware = SB_HW_16; in snd_sbdsp_probe()
143 snd_printk(KERN_INFO "SB [0x%lx]: unknown DSP chip version %i.%i\n", in snd_sbdsp_probe()
144 chip->port, major, minor); in snd_sbdsp_probe()
145 return -ENODEV; in snd_sbdsp_probe()
149 str = "16 (ALS-100)"; in snd_sbdsp_probe()
152 str = "16 (ALS-4000)"; in snd_sbdsp_probe()
164 return -ENODEV; in snd_sbdsp_probe()
166 sprintf(chip->name, "Sound Blaster %s", str); in snd_sbdsp_probe()
167 chip->version = (major << 8) | minor; in snd_sbdsp_probe()
184 return -EINVAL; in snd_sbdsp_create()
186 chip = devm_kzalloc(card->dev, sizeof(*chip), GFP_KERNEL); in snd_sbdsp_create()
188 return -ENOMEM; in snd_sbdsp_create()
189 spin_lock_init(&chip->reg_lock); in snd_sbdsp_create()
190 spin_lock_init(&chip->open_lock); in snd_sbdsp_create()
191 spin_lock_init(&chip->midi_input_lock); in snd_sbdsp_create()
192 spin_lock_init(&chip->mixer_lock); in snd_sbdsp_create()
193 chip->irq = -1; in snd_sbdsp_create()
194 chip->dma8 = -1; in snd_sbdsp_create()
195 chip->dma16 = -1; in snd_sbdsp_create()
196 chip->port = port; in snd_sbdsp_create()
198 if (devm_request_irq(card->dev, irq, irq_handler, in snd_sbdsp_create()
204 return -EBUSY; in snd_sbdsp_create()
206 chip->irq = irq; in snd_sbdsp_create()
207 card->sync_irq = chip->irq; in snd_sbdsp_create()
212 chip->res_port = devm_request_region(card->dev, port, 16, in snd_sbdsp_create()
214 if (!chip->res_port) { in snd_sbdsp_create()
216 return -EBUSY; in snd_sbdsp_create()
220 if (dma8 >= 0 && snd_devm_request_dma(card->dev, dma8, in snd_sbdsp_create()
221 "SoundBlaster - 8bit")) { in snd_sbdsp_create()
223 return -EBUSY; in snd_sbdsp_create()
225 chip->dma8 = dma8; in snd_sbdsp_create()
229 dma16 = -1; in snd_sbdsp_create()
230 } else if (snd_devm_request_dma(card->dev, dma16, in snd_sbdsp_create()
231 "SoundBlaster - 16bit")) { in snd_sbdsp_create()
233 return -EBUSY; in snd_sbdsp_create()
236 chip->dma16 = dma16; in snd_sbdsp_create()
240 chip->card = card; in snd_sbdsp_create()
241 chip->hardware = hardware; in snd_sbdsp_create()