diff options
Diffstat (limited to 'sound/pci/sonicvibes.c')
-rw-r--r-- | sound/pci/sonicvibes.c | 115 |
1 files changed, 75 insertions, 40 deletions
diff --git a/sound/pci/sonicvibes.c b/sound/pci/sonicvibes.c index cd408b86c839..d989215f3556 100644 --- a/sound/pci/sonicvibes.c +++ b/sound/pci/sonicvibes.c | |||
@@ -273,7 +273,8 @@ static inline void snd_sonicvibes_setdmaa(struct sonicvibes * sonic, | |||
273 | outl(count, sonic->dmaa_port + SV_DMA_COUNT0); | 273 | outl(count, sonic->dmaa_port + SV_DMA_COUNT0); |
274 | outb(0x18, sonic->dmaa_port + SV_DMA_MODE); | 274 | outb(0x18, sonic->dmaa_port + SV_DMA_MODE); |
275 | #if 0 | 275 | #if 0 |
276 | printk("program dmaa: addr = 0x%x, paddr = 0x%x\n", addr, inl(sonic->dmaa_port + SV_DMA_ADDR0)); | 276 | printk(KERN_DEBUG "program dmaa: addr = 0x%x, paddr = 0x%x\n", |
277 | addr, inl(sonic->dmaa_port + SV_DMA_ADDR0)); | ||
277 | #endif | 278 | #endif |
278 | } | 279 | } |
279 | 280 | ||
@@ -288,7 +289,8 @@ static inline void snd_sonicvibes_setdmac(struct sonicvibes * sonic, | |||
288 | outl(count, sonic->dmac_port + SV_DMA_COUNT0); | 289 | outl(count, sonic->dmac_port + SV_DMA_COUNT0); |
289 | outb(0x14, sonic->dmac_port + SV_DMA_MODE); | 290 | outb(0x14, sonic->dmac_port + SV_DMA_MODE); |
290 | #if 0 | 291 | #if 0 |
291 | printk("program dmac: addr = 0x%x, paddr = 0x%x\n", addr, inl(sonic->dmac_port + SV_DMA_ADDR0)); | 292 | printk(KERN_DEBUG "program dmac: addr = 0x%x, paddr = 0x%x\n", |
293 | addr, inl(sonic->dmac_port + SV_DMA_ADDR0)); | ||
292 | #endif | 294 | #endif |
293 | } | 295 | } |
294 | 296 | ||
@@ -355,71 +357,104 @@ static unsigned char snd_sonicvibes_in(struct sonicvibes * sonic, unsigned char | |||
355 | #if 0 | 357 | #if 0 |
356 | static void snd_sonicvibes_debug(struct sonicvibes * sonic) | 358 | static void snd_sonicvibes_debug(struct sonicvibes * sonic) |
357 | { | 359 | { |
358 | printk("SV REGS: INDEX = 0x%02x ", inb(SV_REG(sonic, INDEX))); | 360 | printk(KERN_DEBUG |
361 | "SV REGS: INDEX = 0x%02x ", inb(SV_REG(sonic, INDEX))); | ||
359 | printk(" STATUS = 0x%02x\n", inb(SV_REG(sonic, STATUS))); | 362 | printk(" STATUS = 0x%02x\n", inb(SV_REG(sonic, STATUS))); |
360 | printk(" 0x00: left input = 0x%02x ", snd_sonicvibes_in(sonic, 0x00)); | 363 | printk(KERN_DEBUG |
364 | " 0x00: left input = 0x%02x ", snd_sonicvibes_in(sonic, 0x00)); | ||
361 | printk(" 0x20: synth rate low = 0x%02x\n", snd_sonicvibes_in(sonic, 0x20)); | 365 | printk(" 0x20: synth rate low = 0x%02x\n", snd_sonicvibes_in(sonic, 0x20)); |
362 | printk(" 0x01: right input = 0x%02x ", snd_sonicvibes_in(sonic, 0x01)); | 366 | printk(KERN_DEBUG |
367 | " 0x01: right input = 0x%02x ", snd_sonicvibes_in(sonic, 0x01)); | ||
363 | printk(" 0x21: synth rate high = 0x%02x\n", snd_sonicvibes_in(sonic, 0x21)); | 368 | printk(" 0x21: synth rate high = 0x%02x\n", snd_sonicvibes_in(sonic, 0x21)); |
364 | printk(" 0x02: left AUX1 = 0x%02x ", snd_sonicvibes_in(sonic, 0x02)); | 369 | printk(KERN_DEBUG |
370 | " 0x02: left AUX1 = 0x%02x ", snd_sonicvibes_in(sonic, 0x02)); | ||
365 | printk(" 0x22: ADC clock = 0x%02x\n", snd_sonicvibes_in(sonic, 0x22)); | 371 | printk(" 0x22: ADC clock = 0x%02x\n", snd_sonicvibes_in(sonic, 0x22)); |
366 | printk(" 0x03: right AUX1 = 0x%02x ", snd_sonicvibes_in(sonic, 0x03)); | 372 | printk(KERN_DEBUG |
373 | " 0x03: right AUX1 = 0x%02x ", snd_sonicvibes_in(sonic, 0x03)); | ||
367 | printk(" 0x23: ADC alt rate = 0x%02x\n", snd_sonicvibes_in(sonic, 0x23)); | 374 | printk(" 0x23: ADC alt rate = 0x%02x\n", snd_sonicvibes_in(sonic, 0x23)); |
368 | printk(" 0x04: left CD = 0x%02x ", snd_sonicvibes_in(sonic, 0x04)); | 375 | printk(KERN_DEBUG |
376 | " 0x04: left CD = 0x%02x ", snd_sonicvibes_in(sonic, 0x04)); | ||
369 | printk(" 0x24: ADC pll M = 0x%02x\n", snd_sonicvibes_in(sonic, 0x24)); | 377 | printk(" 0x24: ADC pll M = 0x%02x\n", snd_sonicvibes_in(sonic, 0x24)); |
370 | printk(" 0x05: right CD = 0x%02x ", snd_sonicvibes_in(sonic, 0x05)); | 378 | printk(KERN_DEBUG |
379 | " 0x05: right CD = 0x%02x ", snd_sonicvibes_in(sonic, 0x05)); | ||
371 | printk(" 0x25: ADC pll N = 0x%02x\n", snd_sonicvibes_in(sonic, 0x25)); | 380 | printk(" 0x25: ADC pll N = 0x%02x\n", snd_sonicvibes_in(sonic, 0x25)); |
372 | printk(" 0x06: left line = 0x%02x ", snd_sonicvibes_in(sonic, 0x06)); | 381 | printk(KERN_DEBUG |
382 | " 0x06: left line = 0x%02x ", snd_sonicvibes_in(sonic, 0x06)); | ||
373 | printk(" 0x26: Synth pll M = 0x%02x\n", snd_sonicvibes_in(sonic, 0x26)); | 383 | printk(" 0x26: Synth pll M = 0x%02x\n", snd_sonicvibes_in(sonic, 0x26)); |
374 | printk(" 0x07: right line = 0x%02x ", snd_sonicvibes_in(sonic, 0x07)); | 384 | printk(KERN_DEBUG |
385 | " 0x07: right line = 0x%02x ", snd_sonicvibes_in(sonic, 0x07)); | ||
375 | printk(" 0x27: Synth pll N = 0x%02x\n", snd_sonicvibes_in(sonic, 0x27)); | 386 | printk(" 0x27: Synth pll N = 0x%02x\n", snd_sonicvibes_in(sonic, 0x27)); |
376 | printk(" 0x08: MIC = 0x%02x ", snd_sonicvibes_in(sonic, 0x08)); | 387 | printk(KERN_DEBUG |
388 | " 0x08: MIC = 0x%02x ", snd_sonicvibes_in(sonic, 0x08)); | ||
377 | printk(" 0x28: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x28)); | 389 | printk(" 0x28: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x28)); |
378 | printk(" 0x09: Game port = 0x%02x ", snd_sonicvibes_in(sonic, 0x09)); | 390 | printk(KERN_DEBUG |
391 | " 0x09: Game port = 0x%02x ", snd_sonicvibes_in(sonic, 0x09)); | ||
379 | printk(" 0x29: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x29)); | 392 | printk(" 0x29: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x29)); |
380 | printk(" 0x0a: left synth = 0x%02x ", snd_sonicvibes_in(sonic, 0x0a)); | 393 | printk(KERN_DEBUG |
394 | " 0x0a: left synth = 0x%02x ", snd_sonicvibes_in(sonic, 0x0a)); | ||
381 | printk(" 0x2a: MPU401 = 0x%02x\n", snd_sonicvibes_in(sonic, 0x2a)); | 395 | printk(" 0x2a: MPU401 = 0x%02x\n", snd_sonicvibes_in(sonic, 0x2a)); |
382 | printk(" 0x0b: right synth = 0x%02x ", snd_sonicvibes_in(sonic, 0x0b)); | 396 | printk(KERN_DEBUG |
397 | " 0x0b: right synth = 0x%02x ", snd_sonicvibes_in(sonic, 0x0b)); | ||
383 | printk(" 0x2b: drive ctrl = 0x%02x\n", snd_sonicvibes_in(sonic, 0x2b)); | 398 | printk(" 0x2b: drive ctrl = 0x%02x\n", snd_sonicvibes_in(sonic, 0x2b)); |
384 | printk(" 0x0c: left AUX2 = 0x%02x ", snd_sonicvibes_in(sonic, 0x0c)); | 399 | printk(KERN_DEBUG |
400 | " 0x0c: left AUX2 = 0x%02x ", snd_sonicvibes_in(sonic, 0x0c)); | ||
385 | printk(" 0x2c: SRS space = 0x%02x\n", snd_sonicvibes_in(sonic, 0x2c)); | 401 | printk(" 0x2c: SRS space = 0x%02x\n", snd_sonicvibes_in(sonic, 0x2c)); |
386 | printk(" 0x0d: right AUX2 = 0x%02x ", snd_sonicvibes_in(sonic, 0x0d)); | 402 | printk(KERN_DEBUG |
403 | " 0x0d: right AUX2 = 0x%02x ", snd_sonicvibes_in(sonic, 0x0d)); | ||
387 | printk(" 0x2d: SRS center = 0x%02x\n", snd_sonicvibes_in(sonic, 0x2d)); | 404 | printk(" 0x2d: SRS center = 0x%02x\n", snd_sonicvibes_in(sonic, 0x2d)); |
388 | printk(" 0x0e: left analog = 0x%02x ", snd_sonicvibes_in(sonic, 0x0e)); | 405 | printk(KERN_DEBUG |
406 | " 0x0e: left analog = 0x%02x ", snd_sonicvibes_in(sonic, 0x0e)); | ||
389 | printk(" 0x2e: wave source = 0x%02x\n", snd_sonicvibes_in(sonic, 0x2e)); | 407 | printk(" 0x2e: wave source = 0x%02x\n", snd_sonicvibes_in(sonic, 0x2e)); |
390 | printk(" 0x0f: right analog = 0x%02x ", snd_sonicvibes_in(sonic, 0x0f)); | 408 | printk(KERN_DEBUG |
409 | " 0x0f: right analog = 0x%02x ", snd_sonicvibes_in(sonic, 0x0f)); | ||
391 | printk(" 0x2f: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x2f)); | 410 | printk(" 0x2f: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x2f)); |
392 | printk(" 0x10: left PCM = 0x%02x ", snd_sonicvibes_in(sonic, 0x10)); | 411 | printk(KERN_DEBUG |
412 | " 0x10: left PCM = 0x%02x ", snd_sonicvibes_in(sonic, 0x10)); | ||
393 | printk(" 0x30: analog power = 0x%02x\n", snd_sonicvibes_in(sonic, 0x30)); | 413 | printk(" 0x30: analog power = 0x%02x\n", snd_sonicvibes_in(sonic, 0x30)); |
394 | printk(" 0x11: right PCM = 0x%02x ", snd_sonicvibes_in(sonic, 0x11)); | 414 | printk(KERN_DEBUG |
415 | " 0x11: right PCM = 0x%02x ", snd_sonicvibes_in(sonic, 0x11)); | ||
395 | printk(" 0x31: analog power = 0x%02x\n", snd_sonicvibes_in(sonic, 0x31)); | 416 | printk(" 0x31: analog power = 0x%02x\n", snd_sonicvibes_in(sonic, 0x31)); |
396 | printk(" 0x12: DMA data format = 0x%02x ", snd_sonicvibes_in(sonic, 0x12)); | 417 | printk(KERN_DEBUG |
418 | " 0x12: DMA data format = 0x%02x ", snd_sonicvibes_in(sonic, 0x12)); | ||
397 | printk(" 0x32: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x32)); | 419 | printk(" 0x32: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x32)); |
398 | printk(" 0x13: P/C enable = 0x%02x ", snd_sonicvibes_in(sonic, 0x13)); | 420 | printk(KERN_DEBUG |
421 | " 0x13: P/C enable = 0x%02x ", snd_sonicvibes_in(sonic, 0x13)); | ||
399 | printk(" 0x33: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x33)); | 422 | printk(" 0x33: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x33)); |
400 | printk(" 0x14: U/D button = 0x%02x ", snd_sonicvibes_in(sonic, 0x14)); | 423 | printk(KERN_DEBUG |
424 | " 0x14: U/D button = 0x%02x ", snd_sonicvibes_in(sonic, 0x14)); | ||
401 | printk(" 0x34: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x34)); | 425 | printk(" 0x34: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x34)); |
402 | printk(" 0x15: revision = 0x%02x ", snd_sonicvibes_in(sonic, 0x15)); | 426 | printk(KERN_DEBUG |
427 | " 0x15: revision = 0x%02x ", snd_sonicvibes_in(sonic, 0x15)); | ||
403 | printk(" 0x35: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x35)); | 428 | printk(" 0x35: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x35)); |
404 | printk(" 0x16: ADC output ctrl = 0x%02x ", snd_sonicvibes_in(sonic, 0x16)); | 429 | printk(KERN_DEBUG |
430 | " 0x16: ADC output ctrl = 0x%02x ", snd_sonicvibes_in(sonic, 0x16)); | ||
405 | printk(" 0x36: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x36)); | 431 | printk(" 0x36: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x36)); |
406 | printk(" 0x17: --- = 0x%02x ", snd_sonicvibes_in(sonic, 0x17)); | 432 | printk(KERN_DEBUG |
433 | " 0x17: --- = 0x%02x ", snd_sonicvibes_in(sonic, 0x17)); | ||
407 | printk(" 0x37: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x37)); | 434 | printk(" 0x37: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x37)); |
408 | printk(" 0x18: DMA A upper cnt = 0x%02x ", snd_sonicvibes_in(sonic, 0x18)); | 435 | printk(KERN_DEBUG |
436 | " 0x18: DMA A upper cnt = 0x%02x ", snd_sonicvibes_in(sonic, 0x18)); | ||
409 | printk(" 0x38: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x38)); | 437 | printk(" 0x38: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x38)); |
410 | printk(" 0x19: DMA A lower cnt = 0x%02x ", snd_sonicvibes_in(sonic, 0x19)); | 438 | printk(KERN_DEBUG |
439 | " 0x19: DMA A lower cnt = 0x%02x ", snd_sonicvibes_in(sonic, 0x19)); | ||
411 | printk(" 0x39: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x39)); | 440 | printk(" 0x39: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x39)); |
412 | printk(" 0x1a: --- = 0x%02x ", snd_sonicvibes_in(sonic, 0x1a)); | 441 | printk(KERN_DEBUG |
442 | " 0x1a: --- = 0x%02x ", snd_sonicvibes_in(sonic, 0x1a)); | ||
413 | printk(" 0x3a: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x3a)); | 443 | printk(" 0x3a: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x3a)); |
414 | printk(" 0x1b: --- = 0x%02x ", snd_sonicvibes_in(sonic, 0x1b)); | 444 | printk(KERN_DEBUG |
445 | " 0x1b: --- = 0x%02x ", snd_sonicvibes_in(sonic, 0x1b)); | ||
415 | printk(" 0x3b: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x3b)); | 446 | printk(" 0x3b: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x3b)); |
416 | printk(" 0x1c: DMA C upper cnt = 0x%02x ", snd_sonicvibes_in(sonic, 0x1c)); | 447 | printk(KERN_DEBUG |
448 | " 0x1c: DMA C upper cnt = 0x%02x ", snd_sonicvibes_in(sonic, 0x1c)); | ||
417 | printk(" 0x3c: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x3c)); | 449 | printk(" 0x3c: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x3c)); |
418 | printk(" 0x1d: DMA C upper cnt = 0x%02x ", snd_sonicvibes_in(sonic, 0x1d)); | 450 | printk(KERN_DEBUG |
451 | " 0x1d: DMA C upper cnt = 0x%02x ", snd_sonicvibes_in(sonic, 0x1d)); | ||
419 | printk(" 0x3d: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x3d)); | 452 | printk(" 0x3d: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x3d)); |
420 | printk(" 0x1e: PCM rate low = 0x%02x ", snd_sonicvibes_in(sonic, 0x1e)); | 453 | printk(KERN_DEBUG |
454 | " 0x1e: PCM rate low = 0x%02x ", snd_sonicvibes_in(sonic, 0x1e)); | ||
421 | printk(" 0x3e: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x3e)); | 455 | printk(" 0x3e: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x3e)); |
422 | printk(" 0x1f: PCM rate high = 0x%02x ", snd_sonicvibes_in(sonic, 0x1f)); | 456 | printk(KERN_DEBUG |
457 | " 0x1f: PCM rate high = 0x%02x ", snd_sonicvibes_in(sonic, 0x1f)); | ||
423 | printk(" 0x3f: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x3f)); | 458 | printk(" 0x3f: --- = 0x%02x\n", snd_sonicvibes_in(sonic, 0x3f)); |
424 | } | 459 | } |
425 | 460 | ||
@@ -476,8 +511,8 @@ static void snd_sonicvibes_pll(unsigned int rate, | |||
476 | *res_m = m; | 511 | *res_m = m; |
477 | *res_n = n; | 512 | *res_n = n; |
478 | #if 0 | 513 | #if 0 |
479 | printk("metric = %i, xm = %i, xn = %i\n", metric, xm, xn); | 514 | printk(KERN_DEBUG "metric = %i, xm = %i, xn = %i\n", metric, xm, xn); |
480 | printk("pll: m = 0x%x, r = 0x%x, n = 0x%x\n", reg, m, r, n); | 515 | printk(KERN_DEBUG "pll: m = 0x%x, r = 0x%x, n = 0x%x\n", reg, m, r, n); |
481 | #endif | 516 | #endif |
482 | } | 517 | } |
483 | 518 | ||
@@ -1423,9 +1458,9 @@ static int __devinit snd_sonic_probe(struct pci_dev *pci, | |||
1423 | return -ENOENT; | 1458 | return -ENOENT; |
1424 | } | 1459 | } |
1425 | 1460 | ||
1426 | card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0); | 1461 | err = snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card); |
1427 | if (card == NULL) | 1462 | if (err < 0) |
1428 | return -ENOMEM; | 1463 | return err; |
1429 | for (idx = 0; idx < 5; idx++) { | 1464 | for (idx = 0; idx < 5; idx++) { |
1430 | if (pci_resource_start(pci, idx) == 0 || | 1465 | if (pci_resource_start(pci, idx) == 0 || |
1431 | !(pci_resource_flags(pci, idx) & IORESOURCE_IO)) { | 1466 | !(pci_resource_flags(pci, idx) & IORESOURCE_IO)) { |