cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

harmony.h (4952B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/* Hewlett-Packard Harmony audio driver
      3 * 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     1
     59#define MAX_PCM_SUBSTREAMS  4
     60#define MAX_MIDI_DEVICES    0
     61
     62#define HARMONY_SIZE       64
     63
     64#define BUF_SIZE     PAGE_SIZE
     65#define MAX_BUFS     16
     66#define MAX_BUF_SIZE (MAX_BUFS * BUF_SIZE)
     67
     68#define PLAYBACK_BUFS    MAX_BUFS
     69#define RECORD_BUFS      MAX_BUFS
     70#define GRAVEYARD_BUFS   1
     71#define GRAVEYARD_BUFSZ  (GRAVEYARD_BUFS*BUF_SIZE)
     72#define SILENCE_BUFS     1
     73#define SILENCE_BUFSZ    (SILENCE_BUFS*BUF_SIZE)
     74
     75#define HARMONY_ID       0x000
     76#define HARMONY_RESET    0x004
     77#define HARMONY_CNTL     0x008
     78#define HARMONY_GAINCTL  0x00c
     79#define HARMONY_PNXTADD  0x010
     80#define HARMONY_PCURADD  0x014
     81#define HARMONY_RNXTADD  0x018
     82#define HARMONY_RCURADD  0x01c
     83#define HARMONY_DSTATUS  0x020
     84#define HARMONY_OV       0x024
     85#define HARMONY_PIO      0x028
     86#define HARMONY_DIAG     0x03c
     87
     88#define HARMONY_CNTL_C          0x80000000
     89#define HARMONY_CNTL_ST         0x00000020
     90#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 0x00000000
     99#define HARMONY_DF_8BIT_ULAW    0x00000001
    100#define HARMONY_DF_8BIT_ALAW    0x00000002
    101
    102#define HARMONY_SS_MONO         0x00000000
    103#define HARMONY_SS_STEREO       0x00000001
    104
    105#define HARMONY_GAIN_SILENCE    0x01F00FFF
    106#define HARMONY_GAIN_DEFAULT    0x01F00FFF
    107
    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         0x0f
    119#define HARMONY_GAIN_MA_SHIFT   20
    120#define HARMONY_GAIN_MA_MASK    (HARMONY_GAIN_MA << HARMONY_GAIN_MA_SHIFT)
    121
    122/* input gain */
    123#define HARMONY_GAIN_IN         0x0f
    124#define HARMONY_GAIN_LI_SHIFT   16
    125#define HARMONY_GAIN_LI_MASK    (HARMONY_GAIN_IN << HARMONY_GAIN_LI_SHIFT)
    126#define HARMONY_GAIN_RI_SHIFT   12
    127#define HARMONY_GAIN_RI_MASK    (HARMONY_GAIN_IN << HARMONY_GAIN_RI_SHIFT)
    128
    129/* output gain (master volume) */
    130#define HARMONY_GAIN_OUT        0x3f
    131#define HARMONY_GAIN_LO_SHIFT   6
    132#define HARMONY_GAIN_LO_MASK    (HARMONY_GAIN_OUT << HARMONY_GAIN_LO_SHIFT)
    133#define HARMONY_GAIN_RO_SHIFT   0
    134#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         0x08
    141#define HARMONY_SR_16KHZ        0x09
    142#define HARMONY_SR_27KHZ        0x0A
    143#define HARMONY_SR_32KHZ        0x0B
    144#define HARMONY_SR_48KHZ        0x0E
    145#define HARMONY_SR_9KHZ         0x0F
    146#define HARMONY_SR_5KHZ         0x10
    147#define HARMONY_SR_11KHZ        0x11
    148#define HARMONY_SR_18KHZ        0x12
    149#define HARMONY_SR_22KHZ        0x13
    150#define HARMONY_SR_37KHZ        0x14
    151#define HARMONY_SR_44KHZ        0x15
    152#define HARMONY_SR_33KHZ        0x16
    153#define HARMONY_SR_6KHZ         0x17
    154
    155#endif /* __HARMONY_H__ */