brintos

brintos / linux-shallow public Read only

0
0
Text · 4.8 KiB · f4c29a2 Raw
156 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/* Hewlett-Packard Harmony audio driver3 * Copyright (C) 2004, Kyle McMartin <kyle@parisc-linux.org>4 */5 6#ifndef __HARMONY_H__7#define __HARMONY_H__8 9struct harmony_buffer {10        unsigned long addr;11        int buf;12        int count;13        int size;14        int coherent;15};16 17struct snd_harmony {18        int irq;19 20        unsigned long hpa; /* hard physical address */21        void __iomem *iobase; /* remapped io address */22 23        struct parisc_device *dev;24 25        struct {26                u32 gain;27                u32 rate;28                u32 format;29                u32 stereo;30		int playing;31		int capturing;32        } st;33 34        struct snd_dma_device dma; /* playback/capture */35        struct harmony_buffer pbuf;36	struct harmony_buffer cbuf;37 38        struct snd_dma_buffer gdma; /* graveyard */39        struct snd_dma_buffer sdma; /* silence */40 41        struct {42                unsigned long play_intr;43	        unsigned long rec_intr;44                unsigned long graveyard_intr;45                unsigned long silence_intr;46        } stats;47 48        struct snd_pcm *pcm;49        struct snd_card *card;50        struct snd_pcm_substream *psubs;51	struct snd_pcm_substream *csubs;52        struct snd_info_entry *proc;53 54        spinlock_t lock;55        spinlock_t mixer_lock;56};57 58#define MAX_PCM_DEVICES     159#define MAX_PCM_SUBSTREAMS  460#define MAX_MIDI_DEVICES    061 62#define HARMONY_SIZE       6463 64#define BUF_SIZE     PAGE_SIZE65#define MAX_BUFS     1666#define MAX_BUF_SIZE (MAX_BUFS * BUF_SIZE)67 68#define PLAYBACK_BUFS    MAX_BUFS69#define RECORD_BUFS      MAX_BUFS70#define GRAVEYARD_BUFS   171#define GRAVEYARD_BUFSZ  (GRAVEYARD_BUFS*BUF_SIZE)72#define SILENCE_BUFS     173#define SILENCE_BUFSZ    (SILENCE_BUFS*BUF_SIZE)74 75#define HARMONY_ID       0x00076#define HARMONY_RESET    0x00477#define HARMONY_CNTL     0x00878#define HARMONY_GAINCTL  0x00c79#define HARMONY_PNXTADD  0x01080#define HARMONY_PCURADD  0x01481#define HARMONY_RNXTADD  0x01882#define HARMONY_RCURADD  0x01c83#define HARMONY_DSTATUS  0x02084#define HARMONY_OV       0x02485#define HARMONY_PIO      0x02886#define HARMONY_DIAG     0x03c87 88#define HARMONY_CNTL_C          0x8000000089#define HARMONY_CNTL_ST         0x0000002090#define HARMONY_CNTL_44100      0x00000015      /* HARMONY_SR_44KHZ */91#define HARMONY_CNTL_8000       0x00000008      /* HARMONY_SR_8KHZ */92 93#define HARMONY_DSTATUS_ID      0x00000000 /* interrupts off */94#define HARMONY_DSTATUS_PN      0x00000200 /* playback fill */95#define HARMONY_DSTATUS_RN      0x00000002 /* record fill */96#define HARMONY_DSTATUS_IE      0x80000000 /* interrupts on */97 98#define HARMONY_DF_16BIT_LINEAR 0x0000000099#define HARMONY_DF_8BIT_ULAW    0x00000001100#define HARMONY_DF_8BIT_ALAW    0x00000002101 102#define HARMONY_SS_MONO         0x00000000103#define HARMONY_SS_STEREO       0x00000001104 105#define HARMONY_GAIN_SILENCE    0x01F00FFF106#define HARMONY_GAIN_DEFAULT    0x01F00FFF107 108#define HARMONY_GAIN_HE_SHIFT   27 /* headphones enabled */109#define HARMONY_GAIN_HE_MASK    (1 << HARMONY_GAIN_HE_SHIFT)110#define HARMONY_GAIN_LE_SHIFT   26 /* line-out enabled */111#define HARMONY_GAIN_LE_MASK    (1 << HARMONY_GAIN_LE_SHIFT)112#define HARMONY_GAIN_SE_SHIFT   25 /* internal-speaker enabled */113#define HARMONY_GAIN_SE_MASK    (1 << HARMONY_GAIN_SE_SHIFT)114#define HARMONY_GAIN_IS_SHIFT   24 /* input select - 0 for line, 1 for mic */115#define HARMONY_GAIN_IS_MASK    (1 << HARMONY_GAIN_IS_SHIFT)116 117/* monitor attenuation */118#define HARMONY_GAIN_MA         0x0f119#define HARMONY_GAIN_MA_SHIFT   20120#define HARMONY_GAIN_MA_MASK    (HARMONY_GAIN_MA << HARMONY_GAIN_MA_SHIFT)121 122/* input gain */123#define HARMONY_GAIN_IN         0x0f124#define HARMONY_GAIN_LI_SHIFT   16125#define HARMONY_GAIN_LI_MASK    (HARMONY_GAIN_IN << HARMONY_GAIN_LI_SHIFT)126#define HARMONY_GAIN_RI_SHIFT   12127#define HARMONY_GAIN_RI_MASK    (HARMONY_GAIN_IN << HARMONY_GAIN_RI_SHIFT)128 129/* output gain (master volume) */130#define HARMONY_GAIN_OUT        0x3f131#define HARMONY_GAIN_LO_SHIFT   6132#define HARMONY_GAIN_LO_MASK    (HARMONY_GAIN_OUT << HARMONY_GAIN_LO_SHIFT)133#define HARMONY_GAIN_RO_SHIFT   0134#define HARMONY_GAIN_RO_MASK    (HARMONY_GAIN_OUT << HARMONY_GAIN_RO_SHIFT)135 136#define HARMONY_MAX_OUT (HARMONY_GAIN_RO_MASK >> HARMONY_GAIN_RO_SHIFT)137#define HARMONY_MAX_IN  (HARMONY_GAIN_RI_MASK >> HARMONY_GAIN_RI_SHIFT)138#define HARMONY_MAX_MON (HARMONY_GAIN_MA_MASK >> HARMONY_GAIN_MA_SHIFT)139 140#define HARMONY_SR_8KHZ         0x08141#define HARMONY_SR_16KHZ        0x09142#define HARMONY_SR_27KHZ        0x0A143#define HARMONY_SR_32KHZ        0x0B144#define HARMONY_SR_48KHZ        0x0E145#define HARMONY_SR_9KHZ         0x0F146#define HARMONY_SR_5KHZ         0x10147#define HARMONY_SR_11KHZ        0x11148#define HARMONY_SR_18KHZ        0x12149#define HARMONY_SR_22KHZ        0x13150#define HARMONY_SR_37KHZ        0x14151#define HARMONY_SR_44KHZ        0x15152#define HARMONY_SR_33KHZ        0x16153#define HARMONY_SR_6KHZ         0x17154 155#endif /* __HARMONY_H__ */156