Lines Matching +full:0 +full:x320
35 static const int cmi8328_ports[] = { 0x530, 0xe80, 0xf40, 0x604 };
38 static int index[CMI8328_MAX] = {[0 ... (CMI8328_MAX-1)] = -1};
39 static char *id[CMI8328_MAX] = {[0 ... (CMI8328_MAX-1)] = NULL};
40 static long port[CMI8328_MAX] = {[0 ... (CMI8328_MAX-1)] = SNDRV_AUTO_PORT};
41 static int irq[CMI8328_MAX] = {[0 ... (CMI8328_MAX-1)] = SNDRV_AUTO_IRQ};
42 static int dma1[CMI8328_MAX] = {[0 ... (CMI8328_MAX-1)] = SNDRV_AUTO_DMA};
43 static int dma2[CMI8328_MAX] = {[0 ... (CMI8328_MAX-1)] = SNDRV_AUTO_DMA};
44 static long mpuport[CMI8328_MAX] = {[0 ... (CMI8328_MAX-1)] = SNDRV_AUTO_PORT};
45 static int mpuirq[CMI8328_MAX] = {[0 ... (CMI8328_MAX-1)] = SNDRV_AUTO_IRQ};
47 static bool gameport[CMI8328_MAX] = {[0 ... (CMI8328_MAX-1)] = true};
85 #define CFG1 0x61
86 #define CFG1_SB_DISABLE (1 << 0)
89 * bit 0: SB: 0=enabled, 1=disabled
90 * bit 1: gameport: 0=disabled, 1=enabled
93 * bit 7: SB port: 0=0x220, 1=0x240
95 #define CFG2 0x62
98 * bits 0-1: CD-ROM mode: 00=disabled, 01=Panasonic, 10=Sony/Mitsumi/Wearnes,
100 * bit 2: MPU401: 0=disabled, 1=enabled
102 * bits 5-7: MPU401 port: 000=0x300, 001=0x310, 010=0x320, 011=0x330, 100=0x332,
103 101=0x334, 110=0x336
105 #define CFG3 0x63
107 * bits 0-2: CD-ROM IRQ: 000=disabled, 001=3, 010=5, 011=7, 100=9, 101=10,
110 * bits 5-7: CD-ROM port: 000=0x300, 001=0x310, 010=0x320, 011=0x330, 100=0x340,
111 101=0x350, 110=0x360, 111=0x370
116 outb(0x43, port + 3); in snd_cmi8328_cfg_read()
117 outb(0x21, port + 3); in snd_cmi8328_cfg_read()
124 outb(0x43, port + 3); in snd_cmi8328_cfg_write()
125 outb(0x21, port + 3); in snd_cmi8328_cfg_write()
133 cfg[0] = snd_cmi8328_cfg_read(port, CFG1); in snd_cmi8328_cfg_save()
140 snd_cmi8328_cfg_write(port, CFG1, cfg[0]); in snd_cmi8328_cfg_restore()
154 memset(&id1, 0, sizeof(id1)); in snd_cmi8328_mixer()
155 memset(&id2, 0, sizeof(id2)); in snd_cmi8328_mixer()
161 if (err < 0) { in snd_cmi8328_mixer()
169 if (err < 0) { in snd_cmi8328_mixer()
178 if (err < 0) { in snd_cmi8328_mixer()
187 if (err < 0) { in snd_cmi8328_mixer()
192 return 0; in snd_cmi8328_mixer()
200 for (i = 0; array[i] != -1; i++) in array_find()
211 for (i = 0; array[i] != -1; i++) in array_find_l()
227 static const long mpu_ports[] = { 0x330, 0x300, 0x310, 0x320, 0x332, 0x334, in snd_cmi8328_probe()
228 0x336, -1 }; in snd_cmi8328_probe()
229 static const u8 mpu_port_bits[] = { 3, 0, 1, 2, 4, 5, 6 }; in snd_cmi8328_probe()
231 static const u8 mpu_irq_bits[] = { 3, 2, 1, 0 }; in snd_cmi8328_probe()
234 static const int dma1s[] = { 3, 1, 0, -1 }; in snd_cmi8328_probe()
236 static const int dma2s[][2] = { {1, -1}, {0, -1}, {-1, -1}, {0, -1} }; in snd_cmi8328_probe()
240 /* 0xff is invalid configuration (but settable - hope it isn't set) */ in snd_cmi8328_probe()
241 if (snd_cmi8328_cfg_read(port, CFG1) == 0xff) in snd_cmi8328_probe()
248 snd_cmi8328_cfg_write(port, CFG2, 0); /* disable CDROM and MPU401 */ in snd_cmi8328_probe()
249 snd_cmi8328_cfg_write(port, CFG3, 0); /* disable CDROM IRQ and DMA */ in snd_cmi8328_probe()
253 if (irq[ndev] < 0) { in snd_cmi8328_probe()
260 if (dma1[ndev] < 0) { in snd_cmi8328_probe()
267 if (dma2[ndev] < 0) { in snd_cmi8328_probe()
274 if (pos < 0) { in snd_cmi8328_probe()
281 if (pos < 0) { in snd_cmi8328_probe()
287 if (dma2[ndev] >= 0 && dma1[ndev] != dma2[ndev]) { in snd_cmi8328_probe()
289 if (pos < 0) { in snd_cmi8328_probe()
293 val |= 0x04; /* enable separate capture DMA */ in snd_cmi8328_probe()
299 if (err < 0) in snd_cmi8328_probe()
307 dma2[ndev], WSS_HW_DETECT, 0, &cmi->wss); in snd_cmi8328_probe()
308 if (err < 0) in snd_cmi8328_probe()
311 err = snd_wss_pcm(cmi->wss, 0); in snd_cmi8328_probe()
312 if (err < 0) in snd_cmi8328_probe()
316 if (err < 0) in snd_cmi8328_probe()
319 if (err < 0) in snd_cmi8328_probe()
322 if (snd_wss_timer(cmi->wss, 0) < 0) in snd_cmi8328_probe()
327 if (mpuport[ndev] < 0) in snd_cmi8328_probe()
332 if (mpuirq[ndev] < 0) in snd_cmi8328_probe()
336 if (mpuport[ndev] > 0 && mpuirq[ndev] > 0) { in snd_cmi8328_probe()
339 if (pos < 0) in snd_cmi8328_probe()
340 snd_printk(KERN_WARNING "invalid MPU401 port 0x%lx\n", in snd_cmi8328_probe()
345 if (pos < 0) in snd_cmi8328_probe()
351 if (snd_mpu401_uart_new(card, 0, in snd_cmi8328_probe()
353 0, mpuirq[ndev], NULL) < 0) in snd_cmi8328_probe()
358 /* OPL3 is hardwired to 0x388 and cannot be disabled */ in snd_cmi8328_probe()
359 if (snd_opl3_create(card, 0x388, 0x38a, OPL3_HW_AUTO, 0, &opl3) < 0) in snd_cmi8328_probe()
362 if (snd_opl3_hwdep_new(opl3, 0, 1, NULL) < 0) in snd_cmi8328_probe()
367 sprintf(card->longname, "%s at 0x%lx, irq %d, dma %d,%d", in snd_cmi8328_probe()
369 (dma2[ndev] >= 0) ? dma2[ndev] : dma1[ndev]); in snd_cmi8328_probe()
373 if (err < 0) in snd_cmi8328_probe()
377 return 0; in snd_cmi8328_probe()
378 /* gameport is hardwired to 0x200 */ in snd_cmi8328_probe()
379 res = devm_request_region(pdev, 0x200, 8, "CMI8328 gameport"); in snd_cmi8328_probe()
388 gp->io = 0x200; in snd_cmi8328_probe()
396 return 0; in snd_cmi8328_probe()
410 snd_cmi8328_cfg_write(cmi->port, CFG2, 0); in snd_cmi8328_remove()
411 snd_cmi8328_cfg_write(cmi->port, CFG3, 0); in snd_cmi8328_remove()
422 return 0; in snd_cmi8328_suspend()
428 return 0; in snd_cmi8328_suspend()
437 return 0; in snd_cmi8328_resume()
444 return 0; in snd_cmi8328_resume()