1*9cf0b362Sjason /* $OpenBSD: apcdmareg.h,v 1.2 2003/06/02 18:53:18 jason Exp $ */ 2a1f7da73Sjason 3a1f7da73Sjason /* 4a1f7da73Sjason * Copyright (c) 2001 Jason L. Wright (jason@thought.net) 5a1f7da73Sjason * All rights reserved. 6a1f7da73Sjason * 7a1f7da73Sjason * Redistribution and use in source and binary forms, with or without 8a1f7da73Sjason * modification, are permitted provided that the following conditions 9a1f7da73Sjason * are met: 10a1f7da73Sjason * 1. Redistributions of source code must retain the above copyright 11a1f7da73Sjason * notice, this list of conditions and the following disclaimer. 12a1f7da73Sjason * 2. Redistributions in binary form must reproduce the above copyright 13a1f7da73Sjason * notice, this list of conditions and the following disclaimer in the 14a1f7da73Sjason * documentation and/or other materials provided with the distribution. 15a1f7da73Sjason * 16a1f7da73Sjason * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17a1f7da73Sjason * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18a1f7da73Sjason * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19a1f7da73Sjason * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 20a1f7da73Sjason * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21a1f7da73Sjason * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 22a1f7da73Sjason * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23a1f7da73Sjason * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 24a1f7da73Sjason * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 25a1f7da73Sjason * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26a1f7da73Sjason * POSSIBILITY OF SUCH DAMAGE. 27a1f7da73Sjason */ 28a1f7da73Sjason 29a1f7da73Sjason /* 30a1f7da73Sjason * Definitions for Sun APC DMA controller. 31a1f7da73Sjason */ 32a1f7da73Sjason 33a1f7da73Sjason /* APC DMA registers */ 34a1f7da73Sjason #define APC_CSR 0x0010 /* control/status */ 35a1f7da73Sjason #define APC_CVA 0x0020 /* capture virtual address */ 36a1f7da73Sjason #define APC_CC 0x0024 /* capture count */ 37a1f7da73Sjason #define APC_CNVA 0x0028 /* capture next virtual address */ 38a1f7da73Sjason #define APC_CNC 0x002c /* capture next count */ 39a1f7da73Sjason #define APC_PVA 0x0030 /* playback virtual address */ 40a1f7da73Sjason #define APC_PC 0x0034 /* playback count */ 41a1f7da73Sjason #define APC_PNVA 0x0038 /* playback next virtual address */ 42a1f7da73Sjason #define APC_PNC 0x003c /* playback next count */ 43a1f7da73Sjason 44a1f7da73Sjason /* 45a1f7da73Sjason * APC DMA Register definitions 46a1f7da73Sjason */ 47a1f7da73Sjason #define APC_CSR_RESET 0x00000001 /* reset */ 48a1f7da73Sjason #define APC_CSR_CDMA_GO 0x00000004 /* capture dma go */ 49a1f7da73Sjason #define APC_CSR_PDMA_GO 0x00000008 /* playback dma go */ 50a1f7da73Sjason #define APC_CSR_CODEC_RESET 0x00000020 /* codec reset */ 51a1f7da73Sjason #define APC_CSR_CPAUSE 0x00000040 /* capture dma pause */ 52a1f7da73Sjason #define APC_CSR_PPAUSE 0x00000080 /* playback dma pause */ 53a1f7da73Sjason #define APC_CSR_CMIE 0x00000100 /* capture pipe empty enb */ 54a1f7da73Sjason #define APC_CSR_CMI 0x00000200 /* capture pipe empty intr */ 55a1f7da73Sjason #define APC_CSR_CD 0x00000400 /* capture nva dirty */ 56a1f7da73Sjason #define APC_CSR_CM 0x00000800 /* capture data lost */ 57a1f7da73Sjason #define APC_CSR_PMIE 0x00001000 /* pb pipe empty intr enable */ 58a1f7da73Sjason #define APC_CSR_PD 0x00002000 /* pb nva dirty */ 59a1f7da73Sjason #define APC_CSR_PM 0x00004000 /* pb pipe empty */ 60a1f7da73Sjason #define APC_CSR_PMI 0x00008000 /* pb pipe empty interrupt */ 61a1f7da73Sjason #define APC_CSR_EIE 0x00010000 /* error interrupt enable */ 62a1f7da73Sjason #define APC_CSR_CIE 0x00020000 /* capture intr enable */ 63a1f7da73Sjason #define APC_CSR_PIE 0x00040000 /* playback intr enable */ 64a1f7da73Sjason #define APC_CSR_GIE 0x00080000 /* general intr enable */ 65a1f7da73Sjason #define APC_CSR_EI 0x00100000 /* error interrupt */ 66a1f7da73Sjason #define APC_CSR_CI 0x00200000 /* capture interrupt */ 67a1f7da73Sjason #define APC_CSR_PI 0x00400000 /* playback interrupt */ 68a1f7da73Sjason #define APC_CSR_GI 0x00800000 /* general interrupt */ 69a1f7da73Sjason 70a1f7da73Sjason #define APC_CSR_PLAY ( \ 71a1f7da73Sjason APC_CSR_EI | \ 72a1f7da73Sjason APC_CSR_GIE | \ 73a1f7da73Sjason APC_CSR_PIE | \ 74a1f7da73Sjason APC_CSR_EIE | \ 75a1f7da73Sjason APC_CSR_PDMA_GO | \ 76a1f7da73Sjason APC_CSR_PMIE ) 77a1f7da73Sjason 78a1f7da73Sjason #define APC_CSR_CAPTURE ( \ 79a1f7da73Sjason APC_CSR_EI | \ 80a1f7da73Sjason APC_CSR_GIE | \ 81a1f7da73Sjason APC_CSR_CIE | \ 82a1f7da73Sjason APC_CSR_EIE | \ 83a1f7da73Sjason APC_CSR_CDMA_GO ) 84a1f7da73Sjason 85a1f7da73Sjason #define APC_CSR_PLAY_PAUSE (~( \ 86a1f7da73Sjason APC_CSR_PPAUSE | \ 87a1f7da73Sjason APC_CSR_GI | \ 88a1f7da73Sjason APC_CSR_PI | \ 89a1f7da73Sjason APC_CSR_CI | \ 90a1f7da73Sjason APC_CSR_EI | \ 91a1f7da73Sjason APC_CSR_PMI | \ 92a1f7da73Sjason APC_CSR_PMIE | \ 93a1f7da73Sjason APC_CSR_CMI | \ 94a1f7da73Sjason APC_CSR_CMIE ) ) 95a1f7da73Sjason 96a1f7da73Sjason #define APC_CSR_CAPTURE_PAUSE (~( \ 97a1f7da73Sjason APC_CSR_PPAUSE | \ 98a1f7da73Sjason APC_CSR_GI | \ 99a1f7da73Sjason APC_CSR_PI | \ 100a1f7da73Sjason APC_CSR_CI | \ 101a1f7da73Sjason APC_CSR_EI | \ 102a1f7da73Sjason APC_CSR_PMI | \ 103a1f7da73Sjason APC_CSR_PMIE | \ 104a1f7da73Sjason APC_CSR_CMI | \ 105a1f7da73Sjason APC_CSR_CMIE ) ) 106a1f7da73Sjason 107a1f7da73Sjason #define APC_CSR_INTR_MASK ( \ 108a1f7da73Sjason APC_CSR_GI | \ 109a1f7da73Sjason APC_CSR_PI | \ 110a1f7da73Sjason APC_CSR_CI | \ 111a1f7da73Sjason APC_CSR_EI | \ 112a1f7da73Sjason APC_CSR_PMI | \ 113a1f7da73Sjason APC_CSR_CMI ) 114