custom message for SHMGET
[minix3.git] / include / minix / audio_fw.h
blob324dbfe81d12be0402070a05bb89b452780edcef
1 #ifndef AUDIO_FW_H
2 #define AUDIO_FW_H
4 #include <minix/drivers.h>
5 #include <minix/chardriver.h>
6 #include <sys/ioc_sound.h>
9 int drv_init(void);
10 int drv_init_hw(void);
11 int drv_reset(void);
12 int drv_start(int sub_dev, int DmaMode);
13 int drv_stop(int sub_dev);
14 int drv_set_dma(u32_t dma, u32_t length, int chan);
15 int drv_reenable_int(int chan);
16 int drv_int_sum(void);
17 int drv_int(int sub_dev);
18 int drv_pause(int chan);
19 int drv_resume(int chan);
20 int drv_io_ctl(unsigned long request, void * val, int * len, int sub_dev);
21 int drv_get_irq(char *irq);
22 int drv_get_frag_size(u32_t *frag_size, int sub_dev);
26 /* runtime status fields */
27 typedef struct {
28 int readable;
29 int writable;
30 int DmaSize;
31 int NrOfDmaFragments;
32 int MinFragmentSize;
33 int NrOfExtraBuffers;
34 int Nr; /* sub device number */
35 int Opened; /* sub device opened */
36 int DmaBusy; /* is dma busy? */
37 int DmaMode; /* DEV_WRITE / DEV_READ */
38 int DmaReadNext; /* current dma buffer */
39 int DmaFillNext; /* next dma buffer to fill */
40 int DmaLength;
41 int BufReadNext; /* start of extra circular buffer */
42 int BufFillNext; /* end of extra circular buffer */
43 int BufLength;
44 int RevivePending; /* process waiting for this dev? */
45 endpoint_t ReviveProcNr; /* the process to unblock */
46 cdev_id_t ReviveId; /* request ID */
47 cp_grant_id_t ReviveGrant; /* grant id associated with io */
48 endpoint_t SourceProcNr; /* process to send notify to (FS) */
49 u32_t FragSize; /* dma fragment size */
50 char *DmaBuf; /* the dma buffer; extra space for
51 page alignment */
52 phys_bytes DmaPhys; /* physical address of dma buffer */
53 char* DmaPtr; /* pointer to aligned dma buffer */
54 int OutOfData; /* all buffers empty? */
55 char *ExtraBuf; /* don't use extra buffer;just
56 declare a pointer to supress
57 error messages */
58 } sub_dev_t;
60 typedef struct {
61 int minor_dev_nr;
62 int read_chan;
63 int write_chan;
64 int io_ctl;
65 } special_file_t;
67 typedef struct {
68 char* DriverName;
69 int NrOfSubDevices;
70 int NrOfSpecialFiles;
71 } drv_t;
73 EXTERN drv_t drv;
74 EXTERN sub_dev_t sub_dev[];
75 EXTERN special_file_t special_file[];
77 /* Number of bytes you can DMA before hitting a 64K boundary: */
78 #define dma_bytes_left(phys) \
79 ((unsigned) (sizeof(int) == 2 ? 0 : 0x10000) - (unsigned) ((phys) & 0xFFFF))
81 #define NO_CHANNEL -1
83 #define NO_DMA 0
84 #define READ_DMA 1
85 #define WRITE_DMA 2
87 #endif /* AUDIO_FW_H */