diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /arch/alpha/kernel/es1888.c |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'arch/alpha/kernel/es1888.c')
-rw-r--r-- | arch/alpha/kernel/es1888.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/arch/alpha/kernel/es1888.c b/arch/alpha/kernel/es1888.c new file mode 100644 index 000000000000..d584c85fea7a --- /dev/null +++ b/arch/alpha/kernel/es1888.c | |||
@@ -0,0 +1,49 @@ | |||
1 | /* | ||
2 | * linux/arch/alpha/kernel/es1888.c | ||
3 | * | ||
4 | * Init the built-in ES1888 sound chip (SB16 compatible) | ||
5 | */ | ||
6 | |||
7 | #include <linux/init.h> | ||
8 | #include <asm/io.h> | ||
9 | #include "proto.h" | ||
10 | |||
11 | void __init | ||
12 | es1888_init(void) | ||
13 | { | ||
14 | /* Sequence of IO reads to init the audio controller */ | ||
15 | inb(0x0229); | ||
16 | inb(0x0229); | ||
17 | inb(0x0229); | ||
18 | inb(0x022b); | ||
19 | inb(0x0229); | ||
20 | inb(0x022b); | ||
21 | inb(0x0229); | ||
22 | inb(0x0229); | ||
23 | inb(0x022b); | ||
24 | inb(0x0229); | ||
25 | inb(0x0220); /* This sets the base address to 0x220 */ | ||
26 | |||
27 | /* Sequence to set DMA channels */ | ||
28 | outb(0x01, 0x0226); /* reset */ | ||
29 | inb(0x0226); /* pause */ | ||
30 | outb(0x00, 0x0226); /* release reset */ | ||
31 | while (!(inb(0x022e) & 0x80)) /* wait for bit 7 to assert*/ | ||
32 | continue; | ||
33 | inb(0x022a); /* pause */ | ||
34 | outb(0xc6, 0x022c); /* enable extended mode */ | ||
35 | inb(0x022a); /* pause, also forces the write */ | ||
36 | while (inb(0x022c) & 0x80) /* wait for bit 7 to deassert */ | ||
37 | continue; | ||
38 | outb(0xb1, 0x022c); /* setup for write to Interrupt CR */ | ||
39 | while (inb(0x022c) & 0x80) /* wait for bit 7 to deassert */ | ||
40 | continue; | ||
41 | outb(0x14, 0x022c); /* set IRQ 5 */ | ||
42 | while (inb(0x022c) & 0x80) /* wait for bit 7 to deassert */ | ||
43 | continue; | ||
44 | outb(0xb2, 0x022c); /* setup for write to DMA CR */ | ||
45 | while (inb(0x022c) & 0x80) /* wait for bit 7 to deassert */ | ||
46 | continue; | ||
47 | outb(0x18, 0x022c); /* set DMA channel 1 */ | ||
48 | inb(0x022c); /* force the write */ | ||
49 | } | ||