summaryrefslogtreecommitdiff
path: root/sys/dev/ic/arcofivar.h
blob: 3f882e3367cfef8de2f7b3158223b1a5acaedecb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*	$OpenBSD: arcofivar.h,v 1.2 2011/12/25 00:07:27 miod Exp $	*/

/*
 * Copyright (c) 2011 Miodrag Vallat.
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#define	ARCOFI_NREGS		6

struct arcofi_softc {
	struct device		sc_dev;
	bus_addr_t		sc_reg[ARCOFI_NREGS];
	bus_space_tag_t		sc_iot;
	bus_space_handle_t	sc_ioh;

	struct audio_device	sc_audio_device;
	void			*sc_sih;

	int			sc_open;
	int			sc_mode;

	struct {
		uint8_t	cr3, cr4;
		uint	gr_idx, gx_idx;
		int	output_mute;
	}			sc_active,
				sc_shadow;

	struct {
		uint8_t	*buf;
		uint8_t	*past;
		void	(*cb)(void *);
		void	*cbarg;
	}			sc_recv,
				sc_xmit;
};

void	arcofi_attach(struct arcofi_softc *, const char *);
int	arcofi_hwintr(void *);
void	arcofi_swintr(void *);