⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multisound

📁 linux-2.6.15.6
💻
📖 第 1 页 / 共 3 页
字号:
# This shar contains:# length mode       name# ------ ---------- ------------------------------------------#   2046 -rw-rw-r-- MultiSound.d/setdigital.c#  10235 -rw-rw-r-- MultiSound.d/pinnaclecfg.c#    106 -rw-rw-r-- MultiSound.d/Makefile#    141 -rw-rw-r-- MultiSound.d/conv.l#   1472 -rw-rw-r-- MultiSound.d/msndreset.c#save_IFS="${IFS}"IFS="${IFS}:"gettext_dir=FAILEDlocale_dir=FAILEDfirst_param="$1"for dir in $PATHdo  if test "$gettext_dir" = FAILED && test -f $dir/gettext \     && ($dir/gettext --version >/dev/null 2>&1)  then    set `$dir/gettext --version 2>&1`    if test "$3" = GNU    then      gettext_dir=$dir    fi  fi  if test "$locale_dir" = FAILED && test -f $dir/shar \     && ($dir/shar --print-text-domain-dir >/dev/null 2>&1)  then    locale_dir=`$dir/shar --print-text-domain-dir`  fidoneIFS="$save_IFS"if test "$locale_dir" = FAILED || test "$gettext_dir" = FAILEDthen  echo=echoelse  TEXTDOMAINDIR=$locale_dir  export TEXTDOMAINDIR  TEXTDOMAIN=sharutils  export TEXTDOMAIN  echo="$gettext_dir/gettext -s"fitouch -am 1231235999 $$.touch >/dev/null 2>&1if test ! -f 1231235999 && test -f $$.touch; then  shar_touch=touchelse  shar_touch=:  echo  $echo 'WARNING: not restoring timestamps.  Consider getting and'  $echo "installing GNU \`touch', distributed in GNU File Utilities..."  echofirm -f 1231235999 $$.touch#if mkdir _sh01426; then  $echo 'x -' 'creating lock directory'else  $echo 'failed to create lock directory'  exit 1fi# ============= MultiSound.d/setdigital.c ==============if test ! -d 'MultiSound.d'; then  $echo 'x -' 'creating directory' 'MultiSound.d'  mkdir 'MultiSound.d'fiif test -f 'MultiSound.d/setdigital.c' && test "$first_param" != -c; then  $echo 'x -' SKIPPING 'MultiSound.d/setdigital.c' '(file already exists)'else  $echo 'x -' extracting 'MultiSound.d/setdigital.c' '(text)'  sed 's/^X//' << 'SHAR_EOF' > 'MultiSound.d/setdigital.c' &&/*********************************************************************X *X * setdigital.c - sets the DIGITAL1 input for a mixerX *X * Copyright (C) 1998 Andrew VeliathX *X * This program is free software; you can redistribute it and/or modifyX * it under the terms of the GNU General Public License as published byX * the Free Software Foundation; either version 2 of the License, orX * (at your option) any later version.X *X * This program is distributed in the hope that it will be useful,X * but WITHOUT ANY WARRANTY; without even the implied warranty ofX * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theX * GNU General Public License for more details.X *X * You should have received a copy of the GNU General Public LicenseX * along with this program; if not, write to the Free SoftwareX * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.X *X ********************************************************************/X#include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/ioctl.h>#include <sys/soundcard.h>Xint main(int argc, char *argv[]){X	int fd;X	unsigned long recmask, recsrc;XX	if (argc != 2) {X		fprintf(stderr, "usage: setdigital <mixer device>\n");X		exit(1);X	}XX	if ((fd = open(argv[1], O_RDWR)) < 0) {X		perror(argv[1]);X		exit(1);X	}XX	if (ioctl(fd, SOUND_MIXER_READ_RECMASK, &recmask) < 0) {X		fprintf(stderr, "error: ioctl read recording mask failed\n");X		perror("ioctl");X		close(fd);X		exit(1);X	}XX	if (!(recmask & SOUND_MASK_DIGITAL1)) {X		fprintf(stderr, "error: cannot find DIGITAL1 device in mixer\n");X		close(fd);X		exit(1);X	}XX	if (ioctl(fd, SOUND_MIXER_READ_RECSRC, &recsrc) < 0) {X		fprintf(stderr, "error: ioctl read recording source failed\n");X		perror("ioctl");X		close(fd);X		exit(1);X	}XX	recsrc |= SOUND_MASK_DIGITAL1;X	X	if (ioctl(fd, SOUND_MIXER_WRITE_RECSRC, &recsrc) < 0) {X		fprintf(stderr, "error: ioctl write recording source failed\n");X		perror("ioctl");X		close(fd);X		exit(1);X	}XX	close(fd);X	X	return 0;}SHAR_EOF  $shar_touch -am 1204092598 'MultiSound.d/setdigital.c' &&  chmod 0664 'MultiSound.d/setdigital.c' ||  $echo 'restore of' 'MultiSound.d/setdigital.c' 'failed'  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then    md5sum -c << SHAR_EOF >/dev/null 2>&1 \    || $echo 'MultiSound.d/setdigital.c:' 'MD5 check failed'e87217fc3e71288102ba41fd81f71ec4  MultiSound.d/setdigital.cSHAR_EOF  else    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'MultiSound.d/setdigital.c'`"    test 2046 -eq "$shar_count" ||    $echo 'MultiSound.d/setdigital.c:' 'original size' '2046,' 'current size' "$shar_count!"  fifi# ============= MultiSound.d/pinnaclecfg.c ==============if test -f 'MultiSound.d/pinnaclecfg.c' && test "$first_param" != -c; then  $echo 'x -' SKIPPING 'MultiSound.d/pinnaclecfg.c' '(file already exists)'else  $echo 'x -' extracting 'MultiSound.d/pinnaclecfg.c' '(text)'  sed 's/^X//' << 'SHAR_EOF' > 'MultiSound.d/pinnaclecfg.c' &&/*********************************************************************X *X * pinnaclecfg.c - Pinnacle/Fiji Device Configuration ProgramX *X * This is for NON-PnP mode only.  For PnP mode, use isapnptools.X *X * This is Linux-specific, and must be run with root permissions.X *X * Part of the Turtle Beach MultiSound Sound Card Driver for LinuxX *X * Copyright (C) 1998 Andrew VeliathX *X * This program is free software; you can redistribute it and/or modifyX * it under the terms of the GNU General Public License as published byX * the Free Software Foundation; either version 2 of the License, orX * (at your option) any later version.X *X * This program is distributed in the hope that it will be useful,X * but WITHOUT ANY WARRANTY; without even the implied warranty ofX * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theX * GNU General Public License for more details.X *X * You should have received a copy of the GNU General Public LicenseX * along with this program; if not, write to the Free SoftwareX * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.X *X ********************************************************************/X#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <unistd.h>#include <asm/io.h>#include <asm/types.h>X#define IREG_LOGDEVICE		0x07#define IREG_ACTIVATE		0x30#define LD_ACTIVATE		0x01#define LD_DISACTIVATE		0x00#define IREG_EECONTROL		0x3F#define IREG_MEMBASEHI		0x40#define IREG_MEMBASELO		0x41#define IREG_MEMCONTROL		0x42#define IREG_MEMRANGEHI		0x43#define IREG_MEMRANGELO		0x44#define MEMTYPE_8BIT		0x00#define MEMTYPE_16BIT		0x02#define MEMTYPE_RANGE		0x00#define MEMTYPE_HIADDR		0x01#define IREG_IO0_BASEHI		0x60#define IREG_IO0_BASELO		0x61#define IREG_IO1_BASEHI		0x62#define IREG_IO1_BASELO		0x63#define IREG_IRQ_NUMBER		0x70#define IREG_IRQ_TYPE		0x71#define IRQTYPE_HIGH		0x02#define IRQTYPE_LOW		0x00#define IRQTYPE_LEVEL		0x01#define IRQTYPE_EDGE		0x00X#define HIBYTE(w)		((BYTE)(((WORD)(w) >> 8) & 0xFF))#define LOBYTE(w)		((BYTE)(w))#define MAKEWORD(low,hi)	((WORD)(((BYTE)(low))|(((WORD)((BYTE)(hi)))<<8)))Xtypedef __u8			BYTE;typedef __u16			USHORT;typedef __u16			WORD;Xstatic int config_port = -1;Xstatic int msnd_write_cfg(int cfg, int reg, int value){X	outb(reg, cfg);X	outb(value, cfg + 1);X	if (value != inb(cfg + 1)) {X		fprintf(stderr, "error: msnd_write_cfg: I/O error\n");X		return -EIO;X	}X	return 0;}Xstatic int msnd_read_cfg(int cfg, int reg){X	outb(reg, cfg);X	return inb(cfg + 1);}Xstatic int msnd_write_cfg_io0(int cfg, int num, WORD io){X	if (msnd_write_cfg(cfg, IREG_LOGDEVICE, num))X		return -EIO;X	if (msnd_write_cfg(cfg, IREG_IO0_BASEHI, HIBYTE(io)))X		return -EIO;X	if (msnd_write_cfg(cfg, IREG_IO0_BASELO, LOBYTE(io)))X		return -EIO;X	return 0;}Xstatic int msnd_read_cfg_io0(int cfg, int num, WORD *io){X	if (msnd_write_cfg(cfg, IREG_LOGDEVICE, num))X		return -EIO;X	X	*io = MAKEWORD(msnd_read_cfg(cfg, IREG_IO0_BASELO),X		       msnd_read_cfg(cfg, IREG_IO0_BASEHI));XX	return 0;}Xstatic int msnd_write_cfg_io1(int cfg, int num, WORD io){X	if (msnd_write_cfg(cfg, IREG_LOGDEVICE, num))X		return -EIO;X	if (msnd_write_cfg(cfg, IREG_IO1_BASEHI, HIBYTE(io)))X		return -EIO;X	if (msnd_write_cfg(cfg, IREG_IO1_BASELO, LOBYTE(io)))X		return -EIO;X	return 0;}Xstatic int msnd_read_cfg_io1(int cfg, int num, WORD *io){X	if (msnd_write_cfg(cfg, IREG_LOGDEVICE, num))X		return -EIO;X	X	*io = MAKEWORD(msnd_read_cfg(cfg, IREG_IO1_BASELO),X		       msnd_read_cfg(cfg, IREG_IO1_BASEHI));XX	return 0;}Xstatic int msnd_write_cfg_irq(int cfg, int num, WORD irq){X	if (msnd_write_cfg(cfg, IREG_LOGDEVICE, num))X		return -EIO;X	if (msnd_write_cfg(cfg, IREG_IRQ_NUMBER, LOBYTE(irq)))X		return -EIO;X	if (msnd_write_cfg(cfg, IREG_IRQ_TYPE, IRQTYPE_EDGE))X		return -EIO;X	return 0;}Xstatic int msnd_read_cfg_irq(int cfg, int num, WORD *irq){X	if (msnd_write_cfg(cfg, IREG_LOGDEVICE, num))X		return -EIO;X	X	*irq = msnd_read_cfg(cfg, IREG_IRQ_NUMBER);XX	return 0;}Xstatic int msnd_write_cfg_mem(int cfg, int num, int mem){X	WORD wmem;XX	mem >>= 8;X	mem &= 0xfff;X	wmem = (WORD)mem;X	if (msnd_write_cfg(cfg, IREG_LOGDEVICE, num))X		return -EIO;X	if (msnd_write_cfg(cfg, IREG_MEMBASEHI, HIBYTE(wmem)))X		return -EIO;X	if (msnd_write_cfg(cfg, IREG_MEMBASELO, LOBYTE(wmem)))X		return -EIO;X	if (wmem && msnd_write_cfg(cfg, IREG_MEMCONTROL, (MEMTYPE_HIADDR | MEMTYPE_16BIT)))X		return -EIO;X	return 0;}Xstatic int msnd_read_cfg_mem(int cfg, int num, int *mem){X	if (msnd_write_cfg(cfg, IREG_LOGDEVICE, num))X		return -EIO;X	X	*mem = MAKEWORD(msnd_read_cfg(cfg, IREG_MEMBASELO),X			msnd_read_cfg(cfg, IREG_MEMBASEHI));X	*mem <<= 8;XX	return 0;}Xstatic int msnd_activate_logical(int cfg, int num){X	if (msnd_write_cfg(cfg, IREG_LOGDEVICE, num))X		return -EIO;X	if (msnd_write_cfg(cfg, IREG_ACTIVATE, LD_ACTIVATE))X		return -EIO;X	return 0;}Xstatic int msnd_write_cfg_logical(int cfg, int num, WORD io0, WORD io1, WORD irq, int mem){X	if (msnd_write_cfg(cfg, IREG_LOGDEVICE, num))X		return -EIO;X	if (msnd_write_cfg_io0(cfg, num, io0))X		return -EIO;X	if (msnd_write_cfg_io1(cfg, num, io1))X		return -EIO;X	if (msnd_write_cfg_irq(cfg, num, irq))X		return -EIO;X	if (msnd_write_cfg_mem(cfg, num, mem))X		return -EIO;X	if (msnd_activate_logical(cfg, num))X		return -EIO;X	return 0;}Xstatic int msnd_read_cfg_logical(int cfg, int num, WORD *io0, WORD *io1, WORD *irq, int *mem)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -