emuproc.c (9c3a985f88fa4de82bf4bda906095ce6444e9039) | emuproc.c (6f3609f8a3da1214cd78f8a8a2ee2dab8fcc4505) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * Copyright (c) by Jaroslav Kysela <perex@perex.cz> 4 * Creative Labs, Inc. 5 * Routines for control of EMU10K1 chips / proc interface routines 6 * 7 * Copyright (c) by James Courtier-Dutton <James@superbug.co.uk> 8 * Added EMU 1010 support. --- 215 unchanged lines hidden (view full) --- 224 struct snd_info_buffer *buffer) 225{ 226 struct snd_emu10k1 *emu = entry->private_data; 227 u32 value; 228 u32 value2; 229 u32 rate; 230 231 if (emu->card_capabilities->emu_model) { | 1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * Copyright (c) by Jaroslav Kysela <perex@perex.cz> 4 * Creative Labs, Inc. 5 * Routines for control of EMU10K1 chips / proc interface routines 6 * 7 * Copyright (c) by James Courtier-Dutton <James@superbug.co.uk> 8 * Added EMU 1010 support. --- 215 unchanged lines hidden (view full) --- 224 struct snd_info_buffer *buffer) 225{ 226 struct snd_emu10k1 *emu = entry->private_data; 227 u32 value; 228 u32 value2; 229 u32 rate; 230 231 if (emu->card_capabilities->emu_model) { |
232 snd_emu1010_fpga_read(emu, 0x38, &value); 233 if ((value & 0x1) == 0) { 234 snd_emu1010_fpga_read(emu, 0x2a, &value); 235 snd_emu1010_fpga_read(emu, 0x2b, &value2); 236 rate = 0x1770000 / (((value << 5) | value2)+1); 237 snd_iprintf(buffer, "ADAT Locked : %u\n", rate); 238 } else { 239 snd_iprintf(buffer, "ADAT Unlocked\n"); | 232 if (!emu->card_capabilities->no_adat) { 233 snd_emu1010_fpga_read(emu, 0x38, &value); 234 if ((value & 0x1) == 0) { 235 snd_emu1010_fpga_read(emu, 0x2a, &value); 236 snd_emu1010_fpga_read(emu, 0x2b, &value2); 237 rate = 0x1770000 / (((value << 5) | value2)+1); 238 snd_iprintf(buffer, "ADAT Locked : %u\n", rate); 239 } else { 240 snd_iprintf(buffer, "ADAT Unlocked\n"); 241 } |
240 } 241 snd_emu1010_fpga_read(emu, 0x20, &value); 242 if ((value & 0x4) == 0) { 243 snd_emu1010_fpga_read(emu, 0x28, &value); 244 snd_emu1010_fpga_read(emu, 0x29, &value2); 245 rate = 0x1770000 / (((value << 5) | value2)+1); 246 snd_iprintf(buffer, "SPDIF Locked : %d\n", rate); 247 } else { --- 146 unchanged lines hidden (view full) --- 394 } 395} 396 397static void snd_emu_proc_io_reg_read(struct snd_info_entry *entry, 398 struct snd_info_buffer *buffer) 399{ 400 struct snd_emu10k1 *emu = entry->private_data; 401 unsigned long value; | 242 } 243 snd_emu1010_fpga_read(emu, 0x20, &value); 244 if ((value & 0x4) == 0) { 245 snd_emu1010_fpga_read(emu, 0x28, &value); 246 snd_emu1010_fpga_read(emu, 0x29, &value2); 247 rate = 0x1770000 / (((value << 5) | value2)+1); 248 snd_iprintf(buffer, "SPDIF Locked : %d\n", rate); 249 } else { --- 146 unchanged lines hidden (view full) --- 396 } 397} 398 399static void snd_emu_proc_io_reg_read(struct snd_info_entry *entry, 400 struct snd_info_buffer *buffer) 401{ 402 struct snd_emu10k1 *emu = entry->private_data; 403 unsigned long value; |
402 unsigned long flags; | |
403 int i; 404 snd_iprintf(buffer, "IO Registers:\n\n"); 405 for(i = 0; i < 0x40; i+=4) { | 404 int i; 405 snd_iprintf(buffer, "IO Registers:\n\n"); 406 for(i = 0; i < 0x40; i+=4) { |
406 spin_lock_irqsave(&emu->emu_lock, flags); | |
407 value = inl(emu->port + i); | 407 value = inl(emu->port + i); |
408 spin_unlock_irqrestore(&emu->emu_lock, flags); | |
409 snd_iprintf(buffer, "%02X: %08lX\n", i, value); 410 } 411} 412 413static void snd_emu_proc_io_reg_write(struct snd_info_entry *entry, 414 struct snd_info_buffer *buffer) 415{ 416 struct snd_emu10k1 *emu = entry->private_data; | 408 snd_iprintf(buffer, "%02X: %08lX\n", i, value); 409 } 410} 411 412static void snd_emu_proc_io_reg_write(struct snd_info_entry *entry, 413 struct snd_info_buffer *buffer) 414{ 415 struct snd_emu10k1 *emu = entry->private_data; |
417 unsigned long flags; | |
418 char line[64]; 419 u32 reg, val; 420 while (!snd_info_get_line(buffer, line, sizeof(line))) { 421 if (sscanf(line, "%x %x", ®, &val) != 2) 422 continue; 423 if (reg < 0x40 && val <= 0xffffffff) { | 416 char line[64]; 417 u32 reg, val; 418 while (!snd_info_get_line(buffer, line, sizeof(line))) { 419 if (sscanf(line, "%x %x", ®, &val) != 2) 420 continue; 421 if (reg < 0x40 && val <= 0xffffffff) { |
424 spin_lock_irqsave(&emu->emu_lock, flags); | |
425 outl(val, emu->port + (reg & 0xfffffffc)); | 422 outl(val, emu->port + (reg & 0xfffffffc)); |
426 spin_unlock_irqrestore(&emu->emu_lock, flags); | |
427 } 428 } 429} 430 431static unsigned int snd_ptr_read(struct snd_emu10k1 * emu, 432 unsigned int iobase, 433 unsigned int reg, 434 unsigned int chn) --- 186 unchanged lines hidden --- | 423 } 424 } 425} 426 427static unsigned int snd_ptr_read(struct snd_emu10k1 * emu, 428 unsigned int iobase, 429 unsigned int reg, 430 unsigned int chn) --- 186 unchanged lines hidden --- |