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", &reg, &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", &reg, &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 ---