xref: /freebsd/sys/dev/sound/pci/hda/hdac_if.m (revision 6fa8e691a35940743c73d00fd498b970e92c552c)
17c6b05d2SAlexander Motin# Copyright (c) 2012 Alexander Motin <mav@FreeBSD.org>
27c6b05d2SAlexander Motin# All rights reserved.
37c6b05d2SAlexander Motin#
47c6b05d2SAlexander Motin# Redistribution and use in source and binary forms, with or without
57c6b05d2SAlexander Motin# modification, are permitted provided that the following conditions
67c6b05d2SAlexander Motin# are met:
77c6b05d2SAlexander Motin# 1. Redistributions of source code must retain the above copyright
87c6b05d2SAlexander Motin#    notice, this list of conditions and the following disclaimer,
97c6b05d2SAlexander Motin#    without modification, immediately at the beginning of the file.
107c6b05d2SAlexander Motin# 2. Redistributions in binary form must reproduce the above copyright
117c6b05d2SAlexander Motin#    notice, this list of conditions and the following disclaimer in the
127c6b05d2SAlexander Motin#    documentation and/or other materials provided with the distribution.
137c6b05d2SAlexander Motin#
147c6b05d2SAlexander Motin# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
157c6b05d2SAlexander Motin# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
167c6b05d2SAlexander Motin# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
177c6b05d2SAlexander Motin# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
187c6b05d2SAlexander Motin# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
197c6b05d2SAlexander Motin# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
207c6b05d2SAlexander Motin# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
217c6b05d2SAlexander Motin# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
227c6b05d2SAlexander Motin# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
237c6b05d2SAlexander Motin# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
247c6b05d2SAlexander Motin#
257c6b05d2SAlexander Motin# $FreeBSD$
267c6b05d2SAlexander Motin
277c6b05d2SAlexander Motin#include <sys/rman.h>
287c6b05d2SAlexander Motin
297c6b05d2SAlexander MotinINTERFACE hdac;
307c6b05d2SAlexander Motin
317c6b05d2SAlexander MotinMETHOD struct mtx * get_mtx {
327c6b05d2SAlexander Motin    device_t    dev;
337c6b05d2SAlexander Motin    device_t    child;
347c6b05d2SAlexander Motin};
357c6b05d2SAlexander Motin
367c6b05d2SAlexander MotinMETHOD uint32_t codec_command {
377c6b05d2SAlexander Motin    device_t    dev;
387c6b05d2SAlexander Motin    device_t    child;
397c6b05d2SAlexander Motin    uint32_t    verb;
407c6b05d2SAlexander Motin};
417c6b05d2SAlexander Motin
427c6b05d2SAlexander MotinMETHOD int stream_alloc {
437c6b05d2SAlexander Motin    device_t    dev;
447c6b05d2SAlexander Motin    device_t    child;
457c6b05d2SAlexander Motin    int         dir;
467c6b05d2SAlexander Motin    int         format;
47*6fa8e691SAlexander Motin    int         stripe;
487c6b05d2SAlexander Motin    uint32_t    **dmapos;
497c6b05d2SAlexander Motin};
507c6b05d2SAlexander Motin
517c6b05d2SAlexander MotinMETHOD void stream_free {
527c6b05d2SAlexander Motin    device_t    dev;
537c6b05d2SAlexander Motin    device_t    child;
547c6b05d2SAlexander Motin    int         dir;
557c6b05d2SAlexander Motin    int         stream;
567c6b05d2SAlexander Motin};
577c6b05d2SAlexander Motin
587c6b05d2SAlexander MotinMETHOD int stream_start {
597c6b05d2SAlexander Motin    device_t    dev;
607c6b05d2SAlexander Motin    device_t    child;
617c6b05d2SAlexander Motin    int         dir;
627c6b05d2SAlexander Motin    int         stream;
637c6b05d2SAlexander Motin    bus_addr_t  buf;
647c6b05d2SAlexander Motin    int         blksz;
657c6b05d2SAlexander Motin    int         blkcnt;
667c6b05d2SAlexander Motin};
677c6b05d2SAlexander Motin
687c6b05d2SAlexander MotinMETHOD void stream_stop {
697c6b05d2SAlexander Motin    device_t    dev;
707c6b05d2SAlexander Motin    device_t    child;
717c6b05d2SAlexander Motin    int         dir;
727c6b05d2SAlexander Motin    int         stream;
737c6b05d2SAlexander Motin};
747c6b05d2SAlexander Motin
757c6b05d2SAlexander MotinMETHOD void stream_reset {
767c6b05d2SAlexander Motin    device_t    dev;
777c6b05d2SAlexander Motin    device_t    child;
787c6b05d2SAlexander Motin    int         dir;
797c6b05d2SAlexander Motin    int         stream;
807c6b05d2SAlexander Motin};
817c6b05d2SAlexander Motin
827c6b05d2SAlexander MotinMETHOD uint32_t stream_getptr {
837c6b05d2SAlexander Motin    device_t    dev;
847c6b05d2SAlexander Motin    device_t    child;
857c6b05d2SAlexander Motin    int         dir;
867c6b05d2SAlexander Motin    int         stream;
877c6b05d2SAlexander Motin};
887c6b05d2SAlexander Motin
897c6b05d2SAlexander MotinMETHOD void stream_intr {
907c6b05d2SAlexander Motin    device_t    dev;
917c6b05d2SAlexander Motin    int         dir;
927c6b05d2SAlexander Motin    int         stream;
937c6b05d2SAlexander Motin};
947c6b05d2SAlexander Motin
957c6b05d2SAlexander MotinMETHOD int unsol_alloc {
967c6b05d2SAlexander Motin    device_t    dev;
977c6b05d2SAlexander Motin    device_t    child;
987c6b05d2SAlexander Motin    int         wanted;
997c6b05d2SAlexander Motin};
1007c6b05d2SAlexander Motin
1017c6b05d2SAlexander MotinMETHOD void unsol_free {
1027c6b05d2SAlexander Motin    device_t    dev;
1037c6b05d2SAlexander Motin    device_t    child;
1047c6b05d2SAlexander Motin    int         tag;
1057c6b05d2SAlexander Motin};
1067c6b05d2SAlexander Motin
1077c6b05d2SAlexander MotinMETHOD void unsol_intr {
1087c6b05d2SAlexander Motin    device_t    dev;
1097c6b05d2SAlexander Motin    uint32_t    resp;
1107c6b05d2SAlexander Motin};
1117c6b05d2SAlexander Motin
1127c6b05d2SAlexander MotinMETHOD void pindump {
1137c6b05d2SAlexander Motin    device_t    dev;
1147c6b05d2SAlexander Motin};
1157c6b05d2SAlexander Motin
116