Home | History | Annotate | Line # | Download | only in gsc
      1  1.1  skrll /*	$NetBSD: harmonyreg.h,v 1.1 2014/02/24 07:23:43 skrll Exp $	*/
      2  1.1  skrll 
      3  1.1  skrll /*	$OpenBSD: harmonyreg.h,v 1.5 2003/06/02 19:54:29 jason Exp $	*/
      4  1.1  skrll 
      5  1.1  skrll /*
      6  1.1  skrll  * Copyright (c) 2003 Jason L. Wright (jason (at) thought.net)
      7  1.1  skrll  * All rights reserved.
      8  1.1  skrll  *
      9  1.1  skrll  * Redistribution and use in source and binary forms, with or without
     10  1.1  skrll  * modification, are permitted provided that the following conditions
     11  1.1  skrll  * are met:
     12  1.1  skrll  * 1. Redistributions of source code must retain the above copyright
     13  1.1  skrll  *    notice, this list of conditions and the following disclaimer.
     14  1.1  skrll  * 2. Redistributions in binary form must reproduce the above copyright
     15  1.1  skrll  *    notice, this list of conditions and the following disclaimer in the
     16  1.1  skrll  *    documentation and/or other materials provided with the distribution.
     17  1.1  skrll  *
     18  1.1  skrll  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     19  1.1  skrll  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     20  1.1  skrll  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     21  1.1  skrll  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
     22  1.1  skrll  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     23  1.1  skrll  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
     24  1.1  skrll  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     25  1.1  skrll  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     26  1.1  skrll  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
     27  1.1  skrll  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     28  1.1  skrll  * POSSIBILITY OF SUCH DAMAGE.
     29  1.1  skrll  */
     30  1.1  skrll 
     31  1.1  skrll /*
     32  1.1  skrll  * Harmony CS4215/AD1849 register definitions based on:
     33  1.1  skrll  *  "712 I/O Subsystem ERS", Revision 1.1, 12 February 1993
     34  1.1  skrll  */
     35  1.1  skrll 
     36  1.1  skrll /* harmony always uses a 4K buffer */
     37  1.1  skrll #define	HARMONY_BUFSIZE			4096
     38  1.1  skrll 
     39  1.1  skrll #define	HARMONY_NREGS	0x40
     40  1.1  skrll 
     41  1.1  skrll #define	HARMONY_ID		0x00		/* identification */
     42  1.1  skrll #define	HARMONY_RESET		0x04		/* reset */
     43  1.1  skrll #define	HARMONY_CNTL		0x08		/* control */
     44  1.1  skrll #define	HARMONY_GAINCTL		0x0c		/* gain control */
     45  1.1  skrll #define	HARMONY_PNXTADD		0x10		/* play next address */
     46  1.1  skrll #define	HARMONY_PCURADD		0x14		/* play current address */
     47  1.1  skrll #define	HARMONY_RNXTADD		0x18		/* record next address */
     48  1.1  skrll #define	HARMONY_RCURADD		0x1c		/* record current address */
     49  1.1  skrll #define	HARMONY_DSTATUS		0x20		/* device status */
     50  1.1  skrll #define	HARMONY_OV		0x24		/* overrange input */
     51  1.1  skrll #define	HARMONY_PIO		0x28		/* general purpose i/o */
     52  1.1  skrll #define	HARMONY_DIAG		0x3c		/* chi diagnostic */
     53  1.1  skrll 
     54  1.1  skrll /* HARMONY_ID */
     55  1.1  skrll #define	ID_REV_MASK		0x00ff0000	/* revision mask: */
     56  1.1  skrll #define	ID_REV_SHIFT		16
     57  1.1  skrll #define	ID_REV_TS		0x00150000	/*  teleshare installed */
     58  1.1  skrll #define	ID_REV_NOTS		0x00140000	/*  teleshare not installed */
     59  1.1  skrll #define	ID_CHIID		0x0000f000	/* CHI identification */
     60  1.1  skrll #define	ID_CHIID_SHIFT		12
     61  1.1  skrll 
     62  1.1  skrll /* HARMONY_RESET */
     63  1.1  skrll #define	RESET_RST		0x00000001	/* reset codec */
     64  1.1  skrll 
     65  1.1  skrll /* HARMONY_CNTL */
     66  1.1  skrll #define	CNTL_C			0x80000000	/* control mode */
     67  1.1  skrll #define	CNTL_CODEC_REV_MASK	0x0ff00000	/* codec revision */
     68  1.1  skrll #define	CNTL_CODEC_REV_SHIFT	20
     69  1.1  skrll #define	CNTL_EXP_3		0x00020000	/* expansion bit 3 */
     70  1.1  skrll #define	CNTL_EXP_2		0x00010000	/* expansion bit 2 */
     71  1.1  skrll #define	CNTL_EXP_1		0x00008000	/* expansion bit 1 */
     72  1.1  skrll #define	CNTL_EXP_0		0x00004000	/* expansion bit 0 */
     73  1.1  skrll #define	CNTL_AC			0x00002000	/* autocalibration ad1849 */
     74  1.1  skrll #define	CNTL_AD			0x00001000	/* ad1849 compat? */
     75  1.1  skrll #define	CNTL_OLB		0x00000800	/* output level */
     76  1.1  skrll #define	CNTL_ITS		0x00000400	/* codec immediate tristate */
     77  1.1  skrll #define	CNTL_LS_MASK		0x00000300	/* loopback select: */
     78  1.1  skrll #define	CNTL_LS_NONE		0x00000000	/*  none */
     79  1.1  skrll #define	CNTL_LS_INTERNAL	0x00000100	/*  internal */
     80  1.1  skrll #define	CNTL_LS_DIGITAL		0x00000200	/*  digital */
     81  1.1  skrll #define	CNTL_LS_ANALOG		0x00000300	/*  analog */
     82  1.1  skrll #define	CNTL_FORMAT_MASK	0x000000c0	/* encoding format: */
     83  1.1  skrll #define	CNTL_FORMAT_SLINEAR16BE	0x00000000	/*  16 bit signed linear be */
     84  1.1  skrll #define	CNTL_FORMAT_ULAW	0x00000040	/*  8 bit ulaw */
     85  1.1  skrll #define	CNTL_FORMAT_ALAW	0x00000080	/*  8 bit alaw */
     86  1.1  skrll #define	CNTL_FORMAT_ULINEAR8	0x000000c0	/*  8 bit unsigned linear */
     87  1.1  skrll #define	CNTL_CHANS_MASK		0x00000020	/* number of channels: */
     88  1.1  skrll #define	CNTL_CHANS_MONO		0x00000000	/*  mono */
     89  1.1  skrll #define	CNTL_CHANS_STEREO	0x00000020	/*  stereo */
     90  1.1  skrll #define	CNTL_RATE_MASK		0x0000001f	/* sample rate (kHz): */
     91  1.1  skrll #define	CNTL_RATE_5125		0x00000010	/*  5.5125 */
     92  1.1  skrll #define	CNTL_RATE_6615		0x00000017	/*  6.615 */
     93  1.1  skrll #define	CNTL_RATE_8000		0x00000008	/*  8 */
     94  1.1  skrll #define	CNTL_RATE_9600		0x0000000f	/*  9.6 */
     95  1.1  skrll #define	CNTL_RATE_11025		0x00000011	/*  11.025 */
     96  1.1  skrll #define	CNTL_RATE_16000		0x00000009	/*  16 */
     97  1.1  skrll #define	CNTL_RATE_18900		0x00000012	/*  18.9 */
     98  1.1  skrll #define	CNTL_RATE_22050		0x00000013	/*  22.05 */
     99  1.1  skrll #define	CNTL_RATE_27428		0x0000000a	/*  27.42857 */
    100  1.1  skrll #define	CNTL_RATE_32000		0x0000000b	/*  32 */
    101  1.1  skrll #define	CNTL_RATE_33075		0x00000016	/*  33.075 */
    102  1.1  skrll #define	CNTL_RATE_37800		0x00000014	/*  37.8 */
    103  1.1  skrll #define	CNTL_RATE_44100		0x00000015	/*  44.1 */
    104  1.1  skrll #define	CNTL_RATE_48000		0x0000000e	/*  48 */
    105  1.1  skrll 
    106  1.1  skrll /* HARMONY_GAINCTL */
    107  1.1  skrll #define	GAINCTL_HE		0x08000000	/* headphones enable */
    108  1.1  skrll #define	GAINCTL_LE		0x04000000	/* line output enable */
    109  1.1  skrll #define	GAINCTL_SE		0x02000000	/* speaker enable */
    110  1.1  skrll #define	GAINCTL_IS_MASK		0x01000000	/* input select: */
    111  1.1  skrll #define	GAINCTL_IS_LINE		0x00000000	/*  line input */
    112  1.1  skrll #define	GAINCTL_IS_MICROPHONE	0x01000000	/*  microphone */
    113  1.1  skrll #define	GAINCTL_INPUT_LEFT_M	0x0000f000	/* left input gain */
    114  1.1  skrll #define	GAINCTL_INPUT_LEFT_S	12
    115  1.1  skrll #define	GAINCTL_INPUT_RIGHT_M	0x000f0000	/* left input gain */
    116  1.1  skrll #define	GAINCTL_INPUT_RIGHT_S	16
    117  1.1  skrll #define	GAINCTL_INPUT_BITS	4
    118  1.1  skrll #define	GAINCTL_MONITOR_M	0x00f00000	/* monitor gain (inverted) */
    119  1.1  skrll #define	GAINCTL_MONITOR_S	20
    120  1.1  skrll #define	GAINCTL_MONITOR_BITS	4
    121  1.1  skrll #define	GAINCTL_OUTPUT_LEFT_M	0x00000fc0	/* left out gain (inverted) */
    122  1.1  skrll #define	GAINCTL_OUTPUT_LEFT_S	6
    123  1.1  skrll #define	GAINCTL_OUTPUT_RIGHT_M	0x0000003f	/* right out gain (inverted) */
    124  1.1  skrll #define	GAINCTL_OUTPUT_RIGHT_S	0
    125  1.1  skrll #define	GAINCTL_OUTPUT_BITS	6
    126  1.1  skrll 
    127  1.1  skrll /* HARMONY_PCURADD */
    128  1.1  skrll #define	PCURADD_BUFMASK		(~(HARMONY_BUFSIZE - 1))
    129  1.1  skrll 
    130  1.1  skrll /* HARMONY_RCURADD */
    131  1.1  skrll #define	RCURADD_BUFMASK		(~(HARMONY_BUFSIZE - 1))
    132  1.1  skrll 
    133  1.1  skrll /* HARMONY_DSTATUS */
    134  1.1  skrll #define	DSTATUS_IE		0x80000000	/* interrupt enable */
    135  1.1  skrll #define	DSTATUS_PN		0x00000200	/* playback next empty */
    136  1.1  skrll #define	DSTATUS_PC		0x00000100	/* playback dma active */
    137  1.1  skrll #define	DSTATUS_RN		0x00000002	/* record next empty */
    138  1.1  skrll #define	DSTATUS_RC		0x00000001	/* record dma active */
    139  1.1  skrll 
    140  1.1  skrll /* HARMONY_OV */
    141  1.1  skrll #define	OV_OV			0x00000001	/* input over range */
    142  1.1  skrll 
    143  1.1  skrll /* HARMONY_PIO */
    144  1.1  skrll #define	PIO_PO			0x00000002	/* parallel output */
    145  1.1  skrll #define	PIO_PI			0x00000001	/* parallel input */
    146  1.1  skrll 
    147  1.1  skrll /* HARMONY_DIAG */
    148  1.1  skrll #define	DIAG_CO			0x00000001	/* sclk from codec */
    149  1.1  skrll 
    150  1.1  skrll /* CS4215_REV */
    151  1.1  skrll #define	CS4215_REV_VER		0x0f
    152  1.1  skrll #define	CS4215_REV_VER_C	0x00		/* CS4215 rev C */
    153  1.1  skrll #define	CS4215_REV_VER_D	0x01		/* CS4215 rev D */
    154  1.1  skrll #define	CS4215_REV_VER_E	0x02		/* CS4215 rev E/AD1849K */
    155