Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/pci emuxki(4): place struct emuxki_softc into its ow...
details: https://anonhg.NetBSD.org/src/rev/ab76c3056a7e
branches: trunk
changeset: 369902:ab76c3056a7e
user: khorben <khorben%NetBSD.org@localhost>
date: Wed Sep 07 01:00:37 2022 +0000
description:
emuxki(4): place struct emuxki_softc into its own file
NFCI
diffstat:
sys/dev/pci/emuxki.c | 117 +-----------------------------------
sys/dev/pci/emuxkivar.h | 153 ++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 156 insertions(+), 114 deletions(-)
diffs (truncated from 303 to 300 lines):
diff -r 9198057cf7bb -r ab76c3056a7e sys/dev/pci/emuxki.c
--- a/sys/dev/pci/emuxki.c Wed Sep 07 00:44:07 2022 +0000
+++ b/sys/dev/pci/emuxki.c Wed Sep 07 01:00:37 2022 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: emuxki.c,v 1.74 2022/09/07 00:44:07 khorben Exp $ */
+/* $NetBSD: emuxki.c,v 1.75 2022/09/07 01:00:37 khorben Exp $ */
/*-
* Copyright (c) 2001, 2007 The NetBSD Foundation, Inc.
@@ -38,7 +38,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: emuxki.c,v 1.74 2022/09/07 00:44:07 khorben Exp $");
+__KERNEL_RCSID(0, "$NetBSD: emuxki.c,v 1.75 2022/09/07 01:00:37 khorben Exp $");
#include <sys/param.h>
#include <sys/device.h>
@@ -54,16 +54,8 @@
#include <sys/bus.h>
#include <sys/intr.h>
-#include <dev/audio/audio_if.h>
-
-#include <dev/ic/ac97reg.h>
-#include <dev/ic/ac97var.h>
-
-#include <dev/pci/pcidevs.h>
-#include <dev/pci/pcireg.h>
-#include <dev/pci/pcivar.h>
-
#include <dev/pci/emuxkireg.h>
+#include <dev/pci/emuxkivar.h>
/* #define EMUXKI_DEBUG 1 */
#ifdef EMUXKI_DEBUG
@@ -84,109 +76,6 @@
#define EMU_PCI_CBIO (0x10)
#define EMU_SUBSYS_APS (0x40011102)
-#define EMU_PTESIZE (4096)
-#define EMU_MINPTE (3)
-/*
- * Hardware limit of PTE is 4096 entry but it's too big for single voice.
- * Reasonable candidate is:
- * 48kHz * 2ch * 2byte * 1sec * 3buf/EMU_PTESIZE = 141
- * and then round it up to 2^n.
- */
-#define EMU_MAXPTE (256)
-#define EMU_NUMCHAN (64)
-
-/*
- * Internal recording DMA buffer
- */
-/* Recommend the same size as EMU_PTESIZE to be symmetrical for play/rec */
-#define EMU_REC_DMABLKSIZE (4096)
-/* must be EMU_REC_DMABLKSIZE * 2 */
-#define EMU_REC_DMASIZE (8192)
-/* must be EMU_RECBS_BUFSIZE_(EMU_REC_DMASIZE) */
-#define EMU_REC_BUFSIZE_RECBS EMU_RECBS_BUFSIZE_8192
-
-/*
- * DMA memory management
- */
-
-#define EMU_DMA_ALIGN (4096)
-#define EMU_DMA_NSEGS (1)
-
-struct dmamem {
- bus_dma_tag_t dmat;
- bus_size_t size;
- bus_size_t align;
- bus_size_t bound;
- bus_dma_segment_t *segs;
- int nsegs;
- int rsegs;
- void * kaddr;
- bus_dmamap_t map;
-};
-
-#define KERNADDR(ptr) ((void *)((ptr)->kaddr))
-/*
- * (ptr)->segs[] is CPU's PA translated by CPU's MMU.
- * (ptr)->map->dm_segs[] is PCI device's PA translated by PCI's MMU.
- */
-#define DMASEGADDR(ptr, segno) ((ptr)->map->dm_segs[segno].ds_addr)
-#define DMAADDR(ptr) DMASEGADDR(ptr, 0)
-#define DMASIZE(ptr) ((ptr)->size)
-
-struct emuxki_softc {
- device_t sc_dev;
- device_t sc_audev;
- enum {
- EMUXKI_SBLIVE = 0x00,
- EMUXKI_AUDIGY = 0x01,
- EMUXKI_AUDIGY2 = 0x02,
- EMUXKI_AUDIGY2_VALUE = 0x04,
- EMUXKI_LIVE_5_1 = 0x08,
- EMUXKI_APS = 0x10
- } sc_type;
- audio_device_t sc_audv; /* for GETDEV */
-
- /* Autoconfig parameters */
- bus_space_tag_t sc_iot;
- bus_space_handle_t sc_ioh;
- bus_addr_t sc_iob;
- bus_size_t sc_ios;
- pci_chipset_tag_t sc_pc; /* PCI tag */
- bus_dma_tag_t sc_dmat;
- void *sc_ih; /* interrupt handler */
- kmutex_t sc_intr_lock;
- kmutex_t sc_lock;
- kmutex_t sc_index_lock;
-
- /* register parameters */
- struct dmamem *ptb; /* page table */
-
- struct dmamem *pmem; /* play memory */
- void (*pintr)(void *);
- void *pintrarg;
- audio_params_t play;
- uint32_t pframesize;
- uint32_t pblksize;
- uint32_t plength;
- uint32_t poffset;
-
- struct dmamem *rmem; /* rec internal memory */
- void (*rintr)(void *);
- void *rintrarg;
- audio_params_t rec;
- void *rptr; /* rec MI ptr */
- int rcurrent; /* rec software trans count */
- int rframesize;
- int rblksize;
- int rlength;
- int roffset;
-
- /* others */
-
- struct ac97_host_if hostif;
- struct ac97_codec_if *codecif;
-};
-
/* blackmagic */
#define X1(x) ((sc->sc_type & EMUXKI_AUDIGY) ? EMU_A_##x : EMU_##x)
#define X2(x, y) ((sc->sc_type & EMUXKI_AUDIGY) \
diff -r 9198057cf7bb -r ab76c3056a7e sys/dev/pci/emuxkivar.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/dev/pci/emuxkivar.h Wed Sep 07 01:00:37 2022 +0000
@@ -0,0 +1,153 @@
+/* $NetBSD: emuxkivar.h,v 1.15 2022/09/07 01:00:37 khorben Exp $ */
+
+/*-
+ * Copyright (c) 2001, 2007 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Yannick Montulet, and by Andrew Doran.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _DEV_PCI_EMUXKIVAR_H_
+#define _DEV_PCI_EMUXKIVAR_H_
+
+#include <sys/device.h>
+#include <sys/audioio.h>
+#include <sys/mutex.h>
+
+#include <sys/bus.h>
+
+#include <dev/audio/audio_if.h>
+
+#include <dev/ic/ac97reg.h>
+#include <dev/ic/ac97var.h>
+
+#include <dev/pci/pcidevs.h>
+#include <dev/pci/pcireg.h>
+#include <dev/pci/pcivar.h>
+
+#define EMU_PTESIZE (4096)
+#define EMU_MINPTE (3)
+/*
+ * Hardware limit of PTE is 4096 entry but it's too big for single voice.
+ * Reasonable candidate is:
+ * 48kHz * 2ch * 2byte * 1sec * 3buf/EMU_PTESIZE = 141
+ * and then round it up to 2^n.
+ */
+#define EMU_MAXPTE (256)
+#define EMU_NUMCHAN (64)
+
+/*
+ * Internal recording DMA buffer
+ */
+/* Recommend the same size as EMU_PTESIZE to be symmetrical for play/rec */
+#define EMU_REC_DMABLKSIZE (4096)
+/* must be EMU_REC_DMABLKSIZE * 2 */
+#define EMU_REC_DMASIZE (8192)
+/* must be EMU_RECBS_BUFSIZE_(EMU_REC_DMASIZE) */
+#define EMU_REC_BUFSIZE_RECBS EMU_RECBS_BUFSIZE_8192
+
+/*
+ * DMA memory management
+ */
+
+#define EMU_DMA_ALIGN (4096)
+#define EMU_DMA_NSEGS (1)
+
+struct dmamem {
+ bus_dma_tag_t dmat;
+ bus_size_t size;
+ bus_size_t align;
+ bus_size_t bound;
+ bus_dma_segment_t *segs;
+ int nsegs;
+ int rsegs;
+ void * kaddr;
+ bus_dmamap_t map;
+};
+
+#define KERNADDR(ptr) ((void *)((ptr)->kaddr))
+/*
+ * (ptr)->segs[] is CPU's PA translated by CPU's MMU.
+ * (ptr)->map->dm_segs[] is PCI device's PA translated by PCI's MMU.
+ */
+#define DMASEGADDR(ptr, segno) ((ptr)->map->dm_segs[segno].ds_addr)
+#define DMAADDR(ptr) DMASEGADDR(ptr, 0)
+#define DMASIZE(ptr) ((ptr)->size)
+
+struct emuxki_softc {
+ device_t sc_dev;
+ device_t sc_audev;
+ enum {
+ EMUXKI_SBLIVE = 0x00,
+ EMUXKI_AUDIGY = 0x01,
+ EMUXKI_AUDIGY2 = 0x02,
+ EMUXKI_AUDIGY2_VALUE = 0x04,
+ EMUXKI_LIVE_5_1 = 0x08,
+ EMUXKI_APS = 0x10
+ } sc_type;
+ audio_device_t sc_audv; /* for GETDEV */
+
+ /* Autoconfig parameters */
+ bus_space_tag_t sc_iot;
+ bus_space_handle_t sc_ioh;
+ bus_addr_t sc_iob;
+ bus_size_t sc_ios;
+ pci_chipset_tag_t sc_pc; /* PCI tag */
+ bus_dma_tag_t sc_dmat;
+ void *sc_ih; /* interrupt handler */
+ kmutex_t sc_intr_lock;
+ kmutex_t sc_lock;
+ kmutex_t sc_index_lock;
+
+ /* register parameters */
+ struct dmamem *ptb; /* page table */
+
+ struct dmamem *pmem; /* play memory */
+ void (*pintr)(void *);
+ void *pintrarg;
+ audio_params_t play;
+ uint32_t pframesize;
+ uint32_t pblksize;
+ uint32_t plength;
+ uint32_t poffset;
+
+ struct dmamem *rmem; /* rec internal memory */
+ void (*rintr)(void *);
+ void *rintrarg;
+ audio_params_t rec;
+ void *rptr; /* rec MI ptr */
+ int rcurrent; /* rec software trans count */
+ int rframesize;
+ int rblksize;
+ int rlength;
+ int roffset;
+
+ /* others */
+
+ struct ac97_host_if hostif;
+ struct ac97_codec_if *codecif;
Home |
Main Index |
Thread Index |
Old Index