Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

/*	$NetBSD: arcofivar.h,v 1.2 2019/05/08 13:40:18 isaki Exp $	*/
/*	$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 {
	device_t		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;

	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;
	kmutex_t		sc_lock;
	kmutex_t		sc_intr_lock;
};

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