Lines Matching +full:0 +full:x0808

38 #define PCI_VENDOR_FORTEMEDIA	0x1319
39 #define PCI_DEVICE_FORTEMEDIA1 0x08011319 /* Audio controller */
40 #define PCI_DEVICE_FORTEMEDIA2 0x08021319 /* Joystick controller */
42 #define FM_PCM_VOLUME 0x00
43 #define FM_FM_VOLUME 0x02
44 #define FM_I2S_VOLUME 0x04
45 #define FM_RECORD_SOURCE 0x06
47 #define FM_PLAY_CTL 0x08
48 #define FM_PLAY_RATE_MASK 0x0f00
49 #define FM_PLAY_BUF1_LAST 0x0001
50 #define FM_PLAY_BUF2_LAST 0x0002
51 #define FM_PLAY_START 0x0020
52 #define FM_PLAY_PAUSE 0x0040
53 #define FM_PLAY_STOPNOW 0x0080
54 #define FM_PLAY_16BIT 0x4000
55 #define FM_PLAY_STEREO 0x8000
57 #define FM_PLAY_DMALEN 0x0a
58 #define FM_PLAY_DMABUF1 0x0c
59 #define FM_PLAY_DMABUF2 0x10
61 #define FM_REC_CTL 0x14
62 #define FM_REC_RATE_MASK 0x0f00
63 #define FM_REC_BUF1_LAST 0x0001
64 #define FM_REC_BUF2_LAST 0x0002
65 #define FM_REC_START 0x0020
66 #define FM_REC_PAUSE 0x0040
67 #define FM_REC_STOPNOW 0x0080
68 #define FM_REC_16BIT 0x4000
69 #define FM_REC_STEREO 0x8000
71 #define FM_REC_DMALEN 0x16
72 #define FM_REC_DMABUF1 0x18
73 #define FM_REC_DMABUF2 0x1c
75 #define FM_CODEC_CTL 0x22
76 #define FM_VOLUME 0x26
77 #define FM_VOLUME_MUTE 0x8000
79 #define FM_CODEC_CMD 0x2a
80 #define FM_CODEC_CMD_READ 0x0080
81 #define FM_CODEC_CMD_VALID 0x0100
82 #define FM_CODEC_CMD_BUSY 0x0200
84 #define FM_CODEC_DATA 0x2c
86 #define FM_IO_CTL 0x52
87 #define FM_CARD_CTL 0x54
89 #define FM_INTMASK 0x56
90 #define FM_INTMASK_PLAY 0x0001
91 #define FM_INTMASK_REC 0x0002
92 #define FM_INTMASK_VOL 0x0040
93 #define FM_INTMASK_MPU 0x0080
95 #define FM_INTSTATUS 0x5a
96 #define FM_INTSTATUS_PLAY 0x0100
97 #define FM_INTSTATUS_REC 0x0200
98 #define FM_INTSTATUS_VOL 0x4000
99 #define FM_INTSTATUS_MPU 0x8000
104 #define DPRINT if(0) printf
111 SND_FORMAT(AFMT_U8, 1, 0),
112 SND_FORMAT(AFMT_U8, 2, 0),
113 SND_FORMAT(AFMT_S16_LE, 1, 0),
114 SND_FORMAT(AFMT_S16_LE, 2, 0),
115 0
120 fmts, 0
182 return 0xffffffff; in fm801_rd()
214 for (i = 0; i < TIMO && fm801_rd(fm801,FM_CODEC_CMD,2) & FM_CODEC_CMD_BUSY; i++) { in fm801_rdcd()
220 return 0; in fm801_rdcd()
225 for (i = 0; i < TIMO && !(fm801_rd(fm801,FM_CODEC_CMD,2) & FM_CODEC_CMD_VALID); i++) in fm801_rdcd()
232 return 0; in fm801_rdcd()
244 DPRINT("fm801_wrcd reg 0x%x val 0x%x\n",regno, data); in fm801_wrcd()
249 for (i = 0; i < TIMO && fm801_rd(fm801,FM_CODEC_CMD,2) & FM_CODEC_CMD_BUSY; i++) { in fm801_wrcd()
262 for (i = 0; i < TIMO && fm801_rd(fm801,FM_CODEC_CMD,2) & FM_CODEC_CMD_BUSY; i++) { in fm801_wrcd()
270 DPRINT("fm801 wrcd release reg 0x%x val 0x%x\n",regno, data); in fm801_wrcd()
271 return 0; in fm801_wrcd()
292 DPRINT("\nfm801_intr intsrc 0x%x ", intsrc); in fm801_intr()
339 if (sndbuf_alloc(ch->buffer, fm801->parent_dmat, 0, fm801->bufsz) != 0) in fm801ch_init()
350 DPRINT("fm801ch_setformat 0x%x : %s, %s, %s, %s\n", format, in fm801ch_setformat()
358 (AFMT_CHANNEL(format) > 1)? FM_PLAY_STEREO : 0; in fm801ch_setformat()
359 fm801->play_fmt |= (format & AFMT_16BIT) ? FM_PLAY_16BIT : 0; in fm801ch_setformat()
360 return 0; in fm801ch_setformat()
364 fm801->rec_fmt = (AFMT_CHANNEL(format) > 1)? FM_REC_STEREO:0; in fm801ch_setformat()
365 fm801->rec_fmt |= (format & AFMT_16BIT) ? FM_PLAY_16BIT : 0; in fm801ch_setformat()
366 return 0; in fm801ch_setformat()
369 return 0; in fm801ch_setformat()
397 for (i = 0; i < 10 && fm801_rates[i].limit <= speed; i++) ; in fm801ch_setspeed()
449 return 0; in fm801ch_trigger()
455 fm801->play_flip = 0; in fm801ch_trigger()
463 fm801->play_flip = 0; in fm801ch_trigger()
473 fm801->rec_flip = 0; in fm801ch_trigger()
481 fm801->rec_flip = 0; in fm801ch_trigger()
489 return 0; in fm801ch_trigger()
498 u_int32_t result = 0; in fm801ch_getptr()
544 fm801_wr(fm801, FM_CODEC_CTL, 0x0020,2); in fm801_init()
546 fm801_wr(fm801, FM_CODEC_CTL, 0x0000,2); in fm801_init()
549 fm801_wr(fm801, FM_PCM_VOLUME, 0x0808,2); in fm801_init()
550 fm801_wr(fm801, FM_FM_VOLUME, 0x0808,2); in fm801_init()
551 fm801_wr(fm801, FM_I2S_VOLUME, 0x0808,2); in fm801_init()
552 fm801_wr(fm801, 0x40,0x107f,2); /* enable legacy audio */ in fm801_init()
554 fm801_wr((void *)fm801, FM_RECORD_SOURCE, 0x0000,2); in fm801_init()
566 return 0; in fm801_init()
575 int mapped = 0; in fm801_pci_attach()
583 for (i = 0; (mapped == 0) && (i < PCI_MAXMAPS_0); i++) { in fm801_pci_attach()
604 if (mapped == 0) { in fm801_pci_attach()
618 fm801->irqid = 0; in fm801_pci_attach()
622 snd_setup_intr(dev, fm801->irq, 0, fm801_intr, fm801, &fm801->ih)) { in fm801_pci_attach()
628 /*boundary*/0, in fm801_pci_attach()
632 /*maxsize*/fm801->bufsz, /*nsegments*/1, /*maxsegz*/0x3ffff, in fm801_pci_attach()
633 /*flags*/0, /*lockfunc*/NULL, /*lockarg*/NULL, in fm801_pci_attach()
634 &fm801->parent_dmat) != 0) { in fm801_pci_attach()
639 snprintf(status, SND_STATUSLEN, "%s 0x%jx irq %jd on %s", in fm801_pci_attach()
654 return 0; in fm801_pci_attach()
689 return 0; in fm801_pci_detach()
719 if (type == SYS_RES_IOPORT && *rid == PCIR_BAR(0)) in fm801_alloc_resource()
728 return (0); in fm801_release_resource()
755 DRIVER_MODULE(snd_fm801, pci, fm801_driver, 0, 0);