audio(4): Fix indirect circular dependency with audio if drivers
Provide audio_attach_mi(4) as inline so that audio if drivers don't need to call functions in audio.c. This way audio if drivers (e.g. auich(4)) can be linked into kernel without audio.c.
This commit is contained in:
parent
e1a6328057
commit
e7bfd574ad
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: audio.c,v 1.263 2014/07/25 08:10:35 dholland Exp $ */
|
||||
/* $NetBSD: audio.c,v 1.264 2014/11/01 05:56:36 uebayasi Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2008 The NetBSD Foundation, Inc.
|
||||
@ -155,7 +155,7 @@
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: audio.c,v 1.263 2014/07/25 08:10:35 dholland Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: audio.c,v 1.264 2014/11/01 05:56:36 uebayasi Exp $");
|
||||
|
||||
#include "audio.h"
|
||||
#if NAUDIO > 0
|
||||
@ -829,27 +829,6 @@ au_setup_ports(struct audio_softc *sc, struct au_mixer_ports *ports,
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Called from hardware driver. This is where the MI audio driver gets
|
||||
* probed/attached to the hardware driver.
|
||||
*/
|
||||
device_t
|
||||
audio_attach_mi(const struct audio_hw_if *ahwp, void *hdlp, device_t dev)
|
||||
{
|
||||
struct audio_attach_args arg;
|
||||
|
||||
#ifdef DIAGNOSTIC
|
||||
if (ahwp == NULL) {
|
||||
aprint_error("audio_attach_mi: NULL\n");
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
arg.type = AUDIODEV_TYPE_AUDIO;
|
||||
arg.hwif = ahwp;
|
||||
arg.hdl = hdlp;
|
||||
return config_found(dev, &arg, audioprint);
|
||||
}
|
||||
|
||||
#ifdef AUDIO_DEBUG
|
||||
void audio_printsc(struct audio_softc *);
|
||||
void audio_print_params(const char *, struct audio_params *);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: audio_if.h,v 1.67 2011/11/23 23:07:31 jmcneill Exp $ */
|
||||
/* $NetBSD: audio_if.h,v 1.68 2014/11/01 05:56:36 uebayasi Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994 Havard Eidnes.
|
||||
@ -254,10 +254,32 @@ struct audio_attach_args {
|
||||
#define AUDIODEV_TYPE_MPU 3
|
||||
#define AUDIODEV_TYPE_AUX 4
|
||||
|
||||
/* Attach the MI driver(s) to the MD driver. */
|
||||
device_t audio_attach_mi(const struct audio_hw_if *, void *, device_t);
|
||||
int audioprint(void *, const char *);
|
||||
|
||||
/*
|
||||
* Called from hardware driver. This is where the MI audio driver gets
|
||||
* probed/attached to the hardware driver.
|
||||
*
|
||||
* This is provided as inline so that hardware drivers don't need to depend
|
||||
* on audio.c.
|
||||
*/
|
||||
static inline device_t
|
||||
audio_attach_mi(const struct audio_hw_if *ahwp, void *hdlp, device_t dev)
|
||||
{
|
||||
struct audio_attach_args arg;
|
||||
|
||||
#ifdef DIAGNOSTIC
|
||||
if (ahwp == NULL) {
|
||||
aprint_error("audio_attach_mi: NULL\n");
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
arg.type = AUDIODEV_TYPE_AUDIO;
|
||||
arg.hwif = ahwp;
|
||||
arg.hdl = hdlp;
|
||||
return config_found(dev, &arg, audioprint);
|
||||
}
|
||||
|
||||
/* Device identity flags */
|
||||
#define SOUND_DEVICE 0
|
||||
#define AUDIO_DEVICE 0x80
|
||||
|
Loading…
Reference in New Issue
Block a user