~ubuntu-branches/ubuntu/precise/alsa-driver/precise

« back to all changes in this revision

Viewing changes to pcmcia/pdaudiocf/pdaudiocf.h

  • Committer: Bazaar Package Importer
  • Author(s): Luke Yelavich
  • Date: 2011-02-21 18:06:40 UTC
  • mfrom: (1.1.15 upstream)
  • Revision ID: james.westby@ubuntu.com-20110221180640-a8p2yxtvgf7xbxub
Tags: 1.0.24+dfsg-0ubuntu1
* New upstream release
* Refreshed patches:
  - distinguish_kernel_makefile_and_source_dirs.patch
  - debian_dfsg_configure.patch
* debian/control: Update Vcs-bzr field to point to new branch location

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
 
1
#include <pcmcia/cs.h>
 
2
#ifdef SND_HAVE_DUMMY_CS_TYPES_H
2
3
#include "../../alsa-kernel/pcmcia/pdaudiocf/pdaudiocf.h"
 
4
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35)
 
5
#include "pdaudiocf-2.6.35.h"
 
6
#elif LINUX_VERSION_CODE > KERNEL_VERSION(2,6,16)
 
7
#include "pdaudiocf-2.6.34.h"
3
8
#else
4
 
 
5
 
/* old header */
6
 
 
7
 
#ifndef __PDAUDIOCF_H
8
 
#define __PDAUDIOCF_H
9
 
 
10
 
#include <sound/pcm.h>
11
 
#include <asm/io.h>
12
 
#include <linux/interrupt.h>
13
 
#include <pcmcia/cs_types.h>
14
 
#include <pcmcia/cs.h>
15
 
#include <pcmcia/cistpl.h>
16
 
#include <pcmcia/ds.h>
17
 
 
18
 
#include <sound/ak4117.h>
19
 
 
20
 
/* PDAUDIOCF registers */
21
 
#define PDAUDIOCF_REG_MD        0x00    /* music data, R/O */
22
 
#define PDAUDIOCF_REG_WDP       0x02    /* write data pointer / 2, R/O */
23
 
#define PDAUDIOCF_REG_RDP       0x04    /* read data pointer / 2, R/O */
24
 
#define PDAUDIOCF_REG_TCR       0x06    /* test control register W/O */
25
 
#define PDAUDIOCF_REG_SCR       0x08    /* status and control, R/W (see bit description) */
26
 
#define PDAUDIOCF_REG_ISR       0x0a    /* interrupt status, R/O */
27
 
#define PDAUDIOCF_REG_IER       0x0c    /* interrupt enable, R/W */
28
 
#define PDAUDIOCF_REG_AK_IFR    0x0e    /* AK interface register, R/W */
29
 
 
30
 
/* PDAUDIOCF_REG_TCR */
31
 
#define PDAUDIOCF_ELIMAKMBIT    (1<<0)  /* simulate AKM music data */
32
 
#define PDAUDIOCF_TESTDATASEL   (1<<1)  /* test data selection, 0 = 0x55, 1 = pseudo-random */
33
 
 
34
 
/* PDAUDIOCF_REG_SCR */
35
 
#define PDAUDIOCF_AK_SBP        (1<<0)  /* serial port busy flag */
36
 
#define PDAUDIOCF_RST           (1<<2)  /* FPGA, AKM + SRAM buffer reset */
37
 
#define PDAUDIOCF_PDN           (1<<3)  /* power down bit */
38
 
#define PDAUDIOCF_CLKDIV0       (1<<4)  /* choose 24.576Mhz clock divided by 1,2,3 or 4 */
39
 
#define PDAUDIOCF_CLKDIV1       (1<<5)
40
 
#define PDAUDIOCF_RECORD        (1<<6)  /* start capturing to SRAM */
41
 
#define PDAUDIOCF_AK_SDD        (1<<7)  /* music data detected */
42
 
#define PDAUDIOCF_RED_LED_OFF   (1<<8)  /* red LED off override */
43
 
#define PDAUDIOCF_BLUE_LED_OFF  (1<<9)  /* blue LED off override */
44
 
#define PDAUDIOCF_DATAFMT0      (1<<10) /* data format bits: 00 = 16-bit, 01 = 18-bit */
45
 
#define PDAUDIOCF_DATAFMT1      (1<<11) /* 10 = 20-bit, 11 = 24-bit, all right justified */
46
 
#define PDAUDIOCF_FPGAREV(x)    ((x>>12)&0x0f) /* FPGA revision */
47
 
 
48
 
/* PDAUDIOCF_REG_ISR */
49
 
#define PDAUDIOCF_IRQLVL        (1<<0)  /* Buffer level IRQ */
50
 
#define PDAUDIOCF_IRQOVR        (1<<1)  /* Overrun IRQ */
51
 
#define PDAUDIOCF_IRQAKM        (1<<2)  /* AKM IRQ */
52
 
 
53
 
/* PDAUDIOCF_REG_IER */
54
 
#define PDAUDIOCF_IRQLVLEN0     (1<<0)  /* fill threshold levels; 00 = none, 01 = 1/8th of buffer */
55
 
#define PDAUDIOCF_IRQLVLEN1     (1<<1)  /* 10 = 1/4th of buffer, 11 = 1/2th of buffer */
56
 
#define PDAUDIOCF_IRQOVREN      (1<<2)  /* enable overrun IRQ */
57
 
#define PDAUDIOCF_IRQAKMEN      (1<<3)  /* enable AKM IRQ */
58
 
#define PDAUDIOCF_BLUEDUTY0     (1<<8)  /* blue LED duty cycle; 00 = 100%, 01 = 50% */
59
 
#define PDAUDIOCF_BLUEDUTY1     (1<<9)  /* 02 = 25%, 11 = 12% */
60
 
#define PDAUDIOCF_REDDUTY0      (1<<10) /* red LED duty cycle; 00 = 100%, 01 = 50% */
61
 
#define PDAUDIOCF_REDDUTY1      (1<<11) /* 02 = 25%, 11 = 12% */
62
 
#define PDAUDIOCF_BLUESDD       (1<<12) /* blue LED against SDD bit */
63
 
#define PDAUDIOCF_BLUEMODULATE  (1<<13) /* save power when 100% duty cycle selected */
64
 
#define PDAUDIOCF_REDMODULATE   (1<<14) /* save power when 100% duty cycle selected */
65
 
#define PDAUDIOCF_HALFRATE      (1<<15) /* slow both LED blinks by half (also spdif detect rate) */
66
 
 
67
 
/* chip status */
68
 
#define PDAUDIOCF_STAT_IS_STALE (1<<0)
69
 
#define PDAUDIOCF_STAT_IS_CONFIGURED (1<<1)
70
 
#define PDAUDIOCF_STAT_IS_SUSPENDED (1<<2)
71
 
 
72
 
struct snd_pdacf {
73
 
        struct snd_card *card;
74
 
        int index;
75
 
 
76
 
        unsigned long port;
77
 
        int irq;
78
 
 
79
 
        spinlock_t reg_lock;
80
 
        unsigned short regmap[8];
81
 
        unsigned short suspend_reg_scr;
82
 
        struct tasklet_struct tq;
83
 
 
84
 
        spinlock_t ak4117_lock;
85
 
        struct ak4117 *ak4117;
86
 
 
87
 
        unsigned int chip_status;
88
 
 
89
 
        struct snd_pcm *pcm;
90
 
        struct snd_pcm_substream *pcm_substream;
91
 
        unsigned int pcm_running: 1;
92
 
        unsigned int pcm_channels;
93
 
        unsigned int pcm_swab;
94
 
        unsigned int pcm_little;
95
 
        unsigned int pcm_frame;
96
 
        unsigned int pcm_sample;
97
 
        unsigned int pcm_xor;
98
 
        unsigned int pcm_size;
99
 
        unsigned int pcm_period;
100
 
        unsigned int pcm_tdone;
101
 
        unsigned int pcm_hwptr;
102
 
        void *pcm_area;
103
 
        
104
 
        /* pcmcia stuff */
105
 
        dev_link_t link;
106
 
        dev_node_t node;
107
 
};
108
 
 
109
 
static inline void pdacf_reg_write(struct snd_pdacf *chip, unsigned char reg, unsigned short val)
110
 
{
111
 
        outw(chip->regmap[reg>>1] = val, chip->port + reg);
112
 
}
113
 
 
114
 
static inline unsigned short pdacf_reg_read(struct snd_pdacf *chip, unsigned char reg)
115
 
{
116
 
        return inw(chip->port + reg);
117
 
}
118
 
 
119
 
struct snd_pdacf *snd_pdacf_create(struct snd_card *card);
120
 
int snd_pdacf_ak4117_create(struct snd_pdacf *pdacf);
121
 
void snd_pdacf_powerdown(struct snd_pdacf *chip);
122
 
#ifdef CONFIG_PM
123
 
int snd_pdacf_suspend(struct snd_pdacf *chip, pm_message_t state);
124
 
int snd_pdacf_resume(struct snd_pdacf *chip);
125
 
#endif
126
 
int snd_pdacf_pcm_new(struct snd_pdacf *chip);
127
 
irqreturn_t pdacf_interrupt(int irq, void *dev, struct pt_regs *regs);
128
 
void pdacf_tasklet(unsigned long private_data);
129
 
void pdacf_reinit(struct snd_pdacf *chip, int resume);
130
 
 
131
 
#endif /* __PDAUDIOCF_H */
 
9
#include "pdaudiocf-old.h"
132
10
#endif