1/* 2 * Support the ENSONIQ AudioPCI board and Creative Labs SoundBlaster PCI 3 * boards based on the ES1370, ES1371 and ES1373 chips. 4 * 5 * Copyright (c) 1999 Russell Cattelan <cattelan@thebarn.com> 6 * Copyright (c) 1999 Cameron Grant <gandalf@vilnya.demon.co.uk> 7 * Copyright (c) 1998 by Joachim Kuebart. All rights reserved. 8 * --- 45 unchanged lines hidden (view full) --- 54 55#include <dev/pci/pcireg.h> 56#include <dev/pci/pcivar.h> 57 58#include <sys/sysctl.h> 59 60#include "mixer_if.h" 61 |
62SND_DECLARE_FILE("$FreeBSD: head/sys/dev/sound/pci/es137x.c 119548 2003-08-29 03:27:26Z orion $"); |
63 64static int debug = 0; 65SYSCTL_INT(_debug, OID_AUTO, es_debug, CTLFLAG_RW, &debug, 0, ""); 66 67#define MEM_MAP_REG 0x14 68 69/* PCI IDs of supported chips */ 70#define ES1370_PCI_ID 0x50001274 71#define ES1371_PCI_ID 0x13711274 72#define ES1371_PCI_ID2 0x13713274 73#define CT5880_PCI_ID 0x58801274 |
74#define CT4730_PCI_ID 0x89381102 |
75 76#define ES1371REV_ES1371_A 0x02 77#define ES1371REV_ES1371_B 0x09 78 79#define ES1371REV_ES1373_8 0x08 80#define ES1371REV_ES1373_A 0x04 81#define ES1371REV_ES1373_B 0x06 82 83#define ES1371REV_CT5880_A 0x07 84 85#define CT5880REV_CT5880_C 0x02 86#define CT5880REV_CT5880_D 0x03 87#define CT5880REV_CT5880_E 0x04 88 |
89#define CT4730REV_CT4730_A 0x00 90 |
91#define ES_DEFAULT_BUFSZ 4096 92 93/* device private data */ 94struct es_info; 95 96struct es_chinfo { 97 struct es_info *parent; 98 struct pcm_channel *channel; --- 404 unchanged lines hidden (view full) --- 503 es->num = 0; 504 es->ctrl = 0; 505 es->sctrl = 0; 506 /* initialize the chips */ 507 if ((devid == ES1371_PCI_ID && revid == ES1371REV_ES1373_8) || 508 (devid == ES1371_PCI_ID && revid == ES1371REV_CT5880_A) || 509 (devid == CT5880_PCI_ID && revid == CT5880REV_CT5880_C) || 510 (devid == CT5880_PCI_ID && revid == CT5880REV_CT5880_D) || |
511 (devid == CT5880_PCI_ID && revid == CT5880REV_CT5880_E) || 512 (devid == CT4730_PCI_ID)) { |
513 bus_space_write_4(es->st, es->sh, ES1370_REG_STATUS, 0x20000000); 514 DELAY(20000); 515 if (debug > 0) device_printf(dev, "ac97 2.1 enabled\n"); 516 } else { /* pre ac97 2.1 card */ 517 bus_space_write_4(es->st, es->sh, ES1370_REG_CONTROL, es->ctrl); 518 if (debug > 0) device_printf(dev, "ac97 pre-2.1 enabled\n"); 519 } 520 bus_space_write_4(es->st, es->sh, ES1370_REG_SERIAL_CONTROL, es->sctrl); --- 269 unchanged lines hidden (view full) --- 790 return 0; 791 } 792 793 case ES1371_PCI_ID2: 794 device_set_desc(dev, "Strange AudioPCI ES1371-? (vid=3274)"); 795 device_printf(dev, "unknown revision %d -- please report to cg@freebsd.org\n", pci_get_revid(dev)); 796 return 0; 797 |
798 case CT4730_PCI_ID: 799 switch(pci_get_revid(dev)) { 800 case CT4730REV_CT4730_A: 801 device_set_desc(dev, "Creative SB AudioPCI CT4730"); 802 return 0; 803 default: 804 device_set_desc(dev, "Creative SB AudioPCI CT4730-?"); 805 device_printf(dev, "unknown revision %d -- please report to cg@freebsd.org\n", pci_get_revid(dev)); 806 return 0; 807 } 808 |
809 case CT5880_PCI_ID: 810 switch(pci_get_revid(dev)) { 811 case CT5880REV_CT5880_C: 812 device_set_desc(dev, "Creative CT5880-C"); 813 return 0; 814 815 case CT5880REV_CT5880_D: 816 device_set_desc(dev, "Creative CT5880-D"); --- 61 unchanged lines hidden (view full) --- 878 device_printf(dev, "unable to map register space\n"); 879 goto bad; 880 } 881 882 es->bufsz = pcm_getbuffersize(dev, 4096, ES_DEFAULT_BUFSZ, 65536); 883 884 if (pci_get_devid(dev) == ES1371_PCI_ID || 885 pci_get_devid(dev) == ES1371_PCI_ID2 || |
886 pci_get_devid(dev) == CT5880_PCI_ID || 887 pci_get_devid(dev) == CT4730_PCI_ID) { |
888 if(-1 == es1371_init(es, dev)) { 889 device_printf(dev, "unable to initialize the card\n"); 890 goto bad; 891 } 892 codec = AC97_CREATE(dev, es, es1371_ac97); 893 if (codec == NULL) goto bad; 894 /* our init routine does everything for us */ 895 /* set to NULL; flag mixer_init not to run the ac97_init */ --- 90 unchanged lines hidden --- |