Skip to content

Instantly share code, notes, and snippets.

@sumikawa
Created January 29, 2017 08:37
Show Gist options
  • Save sumikawa/291988fea2927db01986a7723651a839 to your computer and use it in GitHub Desktop.
Save sumikawa/291988fea2927db01986a7723651a839 to your computer and use it in GitHub Desktop.
Index: dev/ichsmb/ichsmb_pci.c
===================================================================
RCS file: /cvsroot/kame/kame/freebsd4/sys/dev/ichsmb/ichsmb_pci.c,v
retrieving revision 1.3
diff -u -r1.3 ichsmb_pci.c
--- dev/ichsmb/ichsmb_pci.c 2002/02/08 16:52:49 1.3
+++ dev/ichsmb/ichsmb_pci.c 2002/02/12 20:06:02
@@ -67,6 +67,7 @@
#define ID_81801AA 0x24138086
#define ID_81801AB 0x24238086
#define ID_82801BA 0x24438086
+#define ID_82801CA 0x24838086
#define PCIS_SERIALBUS_SMBUS_PROGIF 0x00
@@ -121,6 +122,9 @@
break;
case ID_82801BA:
device_set_desc(dev, "Intel 82801BA (ICH2) SMBus controller");
+ break;
+ case ID_82801CA:
+ device_set_desc(dev, "Intel 82801CA (ICH3) SMBus controller");
break;
default:
if (pci_get_class(dev) == PCIC_SERIALBUS
Index: dev/sound/pcm/ac97.c
===================================================================
RCS file: /cvsroot/kame/kame/freebsd4/sys/dev/sound/pcm/ac97.c,v
retrieving revision 1.1.1.6
diff -u -r1.1.1.6 ac97.c
--- dev/sound/pcm/ac97.c 2002/02/07 01:30:34 1.1.1.6
+++ dev/sound/pcm/ac97.c 2002/02/12 20:06:06
@@ -98,6 +98,8 @@
{ 0x43525931, 0, "Cirrus Logic CS4299A" },
{ 0x43525933, 0, "Cirrus Logic CS4299C" },
{ 0x43525934, 0, "Cirrus Logic CS4299D" },
+ { 0x43525935, 0, "Cirrus Logic CS4299K" },
+ { 0x43525936, 0, "Cirrus Logic CS4299L" },
{ 0x43525941, 0, "Cirrus Logic CS4201A" },
{ 0x43525951, 0, "Cirrus Logic CS4205A" },
{ 0x43525961, 0, "Cirrus Logic CS4291A" },
@@ -369,7 +371,13 @@
wrcd(codec, AC97_REG_RESET, 0);
DELAY(100000);
wrcd(codec, AC97_REG_POWER, (codec->flags & AC97_F_EAPD_INV)? 0x8000 : 0x0000);
-
+ wrcd(codec, AC97_REG_GEN, 0);
+ DELAY(200000);
+ i = rdcd(codec, AC97_REG_POWER);
+ if ((i & 0x0f) != 0x0f) {
+ device_printf(codec->dev,
+ "ac97 analog subsection not ready [%x]\n", i);
+ }
i = rdcd(codec, AC97_REG_RESET);
codec->caps = i & 0x03ff;
codec->se = (i & 0x7c00) >> 10;
@@ -464,6 +472,13 @@
wrcd(codec, AC97_REG_RESET, 0);
DELAY(100000);
wrcd(codec, AC97_REG_POWER, (codec->flags & AC97_F_EAPD_INV)? 0x8000 : 0x0000);
+ wrcd(codec, AC97_REG_GEN, 0);
+ DELAY(200000);
+ i = rdcd(codec, AC97_REG_POWER);
+ if ((i & 0x0f) != 0x0f) {
+ device_printf(codec->dev,
+ "ac97 analog subsection not ready [%x]\n", i);
+ }
i = rdcd(codec, AC97_REG_RESET);
if (!codec->noext) {
Index: dev/sound/pcm/buffer.c
===================================================================
RCS file: /cvsroot/kame/kame/freebsd4/sys/dev/sound/pcm/buffer.c,v
retrieving revision 1.1.1.2
diff -u -r1.1.1.2 buffer.c
--- dev/sound/pcm/buffer.c 2001/09/25 05:03:28 1.1.1.2
+++ dev/sound/pcm/buffer.c 2002/02/12 20:06:06
@@ -218,6 +218,28 @@
}
void
+sndbuf_padsilence(struct snd_dbuf *b, unsigned int length)
+{
+ int i;
+ u_char data, *p;
+ unsigned int len = length;
+
+ if (b->fmt & AFMT_SIGNED)
+ data = 0x00;
+ else
+ data = 0x80;
+
+ i = sndbuf_getfreeptr(b);
+ p = sndbuf_getbuf(b);
+ while (len) {
+ p[i++] = data;
+ len--;
+ if (i >= b->bufsize) i = 0;
+ }
+ b->rl += length;
+}
+
+void
sndbuf_reset(struct snd_dbuf *b)
{
b->hp = 0;
Index: dev/sound/pcm/buffer.h
===================================================================
RCS file: /cvsroot/kame/kame/freebsd4/sys/dev/sound/pcm/buffer.h,v
retrieving revision 1.1.1.2
diff -u -r1.1.1.2 buffer.h
--- dev/sound/pcm/buffer.h 2001/09/25 05:03:29 1.1.1.2
+++ dev/sound/pcm/buffer.h 2002/02/12 20:06:06
@@ -46,6 +46,7 @@
void sndbuf_reset(struct snd_dbuf *b);
void sndbuf_clear(struct snd_dbuf *b, unsigned int length);
void sndbuf_fillsilence(struct snd_dbuf *b);
+void sndbuf_padsilence(struct snd_dbuf *b, unsigned int length);
u_int32_t sndbuf_getfmt(struct snd_dbuf *b);
int sndbuf_setfmt(struct snd_dbuf *b, u_int32_t fmt);
Index: dev/sound/pcm/channel.c
===================================================================
RCS file: /cvsroot/kame/kame/freebsd4/sys/dev/sound/pcm/channel.c,v
retrieving revision 1.1.1.6
diff -u -r1.1.1.6 channel.c
--- dev/sound/pcm/channel.c 2002/02/07 01:30:35 1.1.1.6
+++ dev/sound/pcm/channel.c 2002/02/12 20:06:06
@@ -562,8 +562,15 @@
KASSERT(c->direction == PCMDIR_PLAY, ("chn_wrupdate on bad channel"));
DEB(printf("chn_flush c->flags 0x%08x\n", c->flags));
if (!(c->flags & CHN_F_TRIGGERED))
- return 0;
-
+ if (sndbuf_getready(bs) > 0 &&
+ sndbuf_getready(bs) < sndbuf_getfree(b)) {
+ /* this is probably a short sound, pad it out with
+ silence and start the driver playing it. */
+ sndbuf_padsilence(bs, sndbuf_getfree(b));
+ chn_start(c, 1);
+ chn_sleep(c, "pcmflu", hz / 10);
+ } else
+ return 0;
c->flags |= CHN_F_CLOSING;
resid = sndbuf_getready(bs) + sndbuf_getready(b);
resid_p = resid;
Index: pci/pci.c
===================================================================
RCS file: /cvsroot/kame/kame/freebsd4/sys/pci/pci.c,v
retrieving revision 1.1.1.6
diff -u -r1.1.1.6 pci.c
--- pci/pci.c 2002/02/07 01:35:55 1.1.1.6
+++ pci/pci.c 2002/02/12 20:06:45
@@ -1322,6 +1322,7 @@
* peripherals respond oddly to having these bits
* enabled. Leave them alone by default.
*/
+#define PCI_ENABLE_IO_MODES
#ifdef PCI_ENABLE_IO_MODES
if (type == SYS_RES_IOPORT && !pci_porten(cfg)) {
cfg->cmdreg |= PCIM_CMD_PORTEN;
Index: pci/pcisupport.c
===================================================================
RCS file: /cvsroot/kame/kame/freebsd4/sys/pci/pcisupport.c,v
retrieving revision 1.3
diff -u -r1.3 pcisupport.c
--- pci/pcisupport.c 2002/02/08 16:52:50 1.3
+++ pci/pcisupport.c 2002/02/12 20:06:46
@@ -692,6 +692,10 @@
return ("Intel 82801AB (ICH0) Hub to PCI bridge");
case 0x244e8086:
return ("Intel 82801BA/BAM (ICH2) Hub to PCI bridge");
+ case 0x24488086:
+ return ("Intel 82801CA/CAM (ICH3) PCI to PCI bridge");
+ case 0x35768086:
+ return ("Intel 82830MP Host to AGP bridge");
/* VLSI -- vendor 0x1004 */
case 0x01021004:
@@ -898,6 +902,8 @@
return ("Intel 82801AB (ICH0) PCI to LPC bridge");
case 0x24408086:
return ("Intel 82801BA/BAM (ICH2) PCI to LPC bridge");
+ case 0x248C8086:
+ return ("Intel 82801CA/CAM (ICH3) PCI to LPC bridge");
/* VLSI -- vendor 0x1004 */
case 0x00061004:
@@ -1043,6 +1049,12 @@
return ("Intel 82801BA/BAM (ICH2) USB controller USB-A");
case 0x24448086:
return ("Intel 82801BA/BAM (ICH2) USB controller USB-B");
+ case 0x24828086:
+ return ("Intel 82801CA/CAM (ICH3) USB controller USB-A");
+ case 0x24848086:
+ return ("Intel 82801CA/CAM (ICH3) USB controller USB-B");
+ case 0x24878086:
+ return ("Intel 82801CA/CAM (ICH3) USB controller USB-C");
/* VIA Technologies -- vendor 0x1106 (0x1107 on the Apollo Master) */
case 0x30381106:
@@ -1223,6 +1235,9 @@
return ("Intel 82801AA (ICH) AC'97 Audio Controller");
case 0x24258086:
return ("Intel 82801AB (ICH0) AC'97 Audio Controller");
+ case 0x24858086:
+ return ("Intel 82801CA (ICH3) AC'97 Audio Controller");
+ break;
/* Sony -- vendor 0x104d */
case 0x8009104d:
@@ -1526,6 +1541,8 @@
chip = "Mobility-1"; break;
case 0x4c52:
chip = "RageMobility-P/M"; break;
+ case 0x4c59:
+ chip = "RadeonMobility"; break;
case 0x475a:
chip = "Mach64-GZ"; break;
case 0x5245:
Index: pci/uhci_pci.c
===================================================================
RCS file: /cvsroot/kame/kame/freebsd4/sys/pci/uhci_pci.c,v
retrieving revision 1.3
diff -u -r1.3 uhci_pci.c
--- pci/uhci_pci.c 2002/02/08 16:52:50 1.3
+++ pci/uhci_pci.c 2002/02/12 20:06:46
@@ -91,6 +91,12 @@
static const char *uhci_device_ich2_a = "Intel 82801BA/BAM (ICH2) USB controller USB-A";
#define PCI_UHCI_DEVICEID_ICH2_B 0x24448086
static const char *uhci_device_ich2_b = "Intel 82801BA/BAM (ICH2) USB controller USB-B";
+#define PCI_UHCI_DEVICEID_ICH3_A 0x24828086
+static const char *uhci_device_ich3_a = "Intel 82801CA/CAM (ICH3) USB controller USB-A";
+#define PCI_UHCI_DEVICEID_ICH3_B 0x24848086
+static const char *uhci_device_ich3_b = "Intel 82801CA/CAM (ICH3) USB controller USB-B";
+#define PCI_UHCI_DEVICEID_ICH3_C 0x24878086
+static const char *uhci_device_ich3_c = "Intel 82801CA/CAM (ICH3) USB controller USB-C";
#define PCI_UHCI_DEVICEID_440MX 0x719a8086
static const char *uhci_device_440mx = "Intel 82443MX USB controller";
#define PCI_UHCI_DEVICEID_VT83C572 0x30381106
@@ -149,6 +155,12 @@
return (uhci_device_ich2_a);
} else if (device_id == PCI_UHCI_DEVICEID_ICH2_B) {
return (uhci_device_ich2_b);
+ } else if (device_id == PCI_UHCI_DEVICEID_ICH3_A) {
+ return (uhci_device_ich3_a);
+ } else if (device_id == PCI_UHCI_DEVICEID_ICH3_B) {
+ return (uhci_device_ich3_b);
+ } else if (device_id == PCI_UHCI_DEVICEID_ICH3_C) {
+ return (uhci_device_ich3_c);
} else if (device_id == PCI_UHCI_DEVICEID_440MX) {
return (uhci_device_440mx);
} else if (device_id == PCI_UHCI_DEVICEID_VT83C572) {
@@ -238,6 +250,18 @@
break;
case PCI_UHCI_DEVICEID_ICH2_B:
device_set_desc(sc->sc_bus.bdev, uhci_device_ich2_b);
+ sprintf(sc->sc_vendor, "Intel");
+ break;
+ case PCI_UHCI_DEVICEID_ICH3_A:
+ device_set_desc(sc->sc_bus.bdev, uhci_device_ich3_a);
+ sprintf(sc->sc_vendor, "Intel");
+ break;
+ case PCI_UHCI_DEVICEID_ICH3_B:
+ device_set_desc(sc->sc_bus.bdev, uhci_device_ich3_b);
+ sprintf(sc->sc_vendor, "Intel");
+ break;
+ case PCI_UHCI_DEVICEID_ICH3_C:
+ device_set_desc(sc->sc_bus.bdev, uhci_device_ich3_c);
sprintf(sc->sc_vendor, "Intel");
break;
case PCI_UHCI_DEVICEID_440MX:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment