17d8ccad7SMarcel Moolenaar /*- 2*4d846d26SWarner Losh * SPDX-License-Identifier: BSD-2-Clause 371e3c308SPedro F. Giffuni * 47d8ccad7SMarcel Moolenaar * Copyright (c) 2008 Nathan Whitehorn 57d8ccad7SMarcel Moolenaar * All rights reserved 67d8ccad7SMarcel Moolenaar * 77d8ccad7SMarcel Moolenaar * Redistribution and use in source and binary forms, with or without 87d8ccad7SMarcel Moolenaar * modification, are permitted provided that the following conditions 97d8ccad7SMarcel Moolenaar * are met: 107d8ccad7SMarcel Moolenaar * 1. Redistributions of source code must retain the above copyright 117d8ccad7SMarcel Moolenaar * notice, this list of conditions and the following disclaimer. 127d8ccad7SMarcel Moolenaar * 2. Redistributions in binary form must reproduce the above copyright 137d8ccad7SMarcel Moolenaar * notice, this list of conditions and the following disclaimer in the 147d8ccad7SMarcel Moolenaar * documentation and/or other materials provided with the distribution. 157d8ccad7SMarcel Moolenaar * 167d8ccad7SMarcel Moolenaar * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 177d8ccad7SMarcel Moolenaar * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 187d8ccad7SMarcel Moolenaar * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 197d8ccad7SMarcel Moolenaar * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 207d8ccad7SMarcel Moolenaar * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 217d8ccad7SMarcel Moolenaar * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 227d8ccad7SMarcel Moolenaar * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 237d8ccad7SMarcel Moolenaar * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 247d8ccad7SMarcel Moolenaar * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 257d8ccad7SMarcel Moolenaar * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 267d8ccad7SMarcel Moolenaar * SUCH DAMAGE. 277d8ccad7SMarcel Moolenaar * 287d8ccad7SMarcel Moolenaar * $FreeBSD$ 297d8ccad7SMarcel Moolenaar */ 307d8ccad7SMarcel Moolenaar 317d8ccad7SMarcel Moolenaar #ifndef _POWERPC_POWERMAC_DBDMAVAR_H_ 327d8ccad7SMarcel Moolenaar #define _POWERPC_POWERMAC_DBDMAVAR_H_ 337d8ccad7SMarcel Moolenaar 347d8ccad7SMarcel Moolenaar struct dbdma_command { 357d8ccad7SMarcel Moolenaar uint8_t cmd:4; /* DBDMA command */ 367d8ccad7SMarcel Moolenaar 377d8ccad7SMarcel Moolenaar uint8_t _resd1:1; 387d8ccad7SMarcel Moolenaar uint8_t key:3; /* Stream number, or 6 for KEY_SYSTEM */ 397d8ccad7SMarcel Moolenaar uint8_t _resd2:2; 407d8ccad7SMarcel Moolenaar 417d8ccad7SMarcel Moolenaar /* Interrupt, branch, and wait flags */ 427d8ccad7SMarcel Moolenaar uint8_t intr:2; 437d8ccad7SMarcel Moolenaar uint8_t branch:2; 447d8ccad7SMarcel Moolenaar uint8_t wait:2; 457d8ccad7SMarcel Moolenaar 467d8ccad7SMarcel Moolenaar uint16_t reqCount; /* Bytes to transfer */ 477d8ccad7SMarcel Moolenaar 487d8ccad7SMarcel Moolenaar uint32_t address; /* 32-bit system physical address */ 497d8ccad7SMarcel Moolenaar uint32_t cmdDep; /* Branch address or quad word to load/store */ 507d8ccad7SMarcel Moolenaar 517d8ccad7SMarcel Moolenaar uint16_t xferStatus; /* Contents of channel status after completion */ 527d8ccad7SMarcel Moolenaar uint16_t resCount; /* Number of residual bytes outstanding */ 537d8ccad7SMarcel Moolenaar }; 547d8ccad7SMarcel Moolenaar 557d8ccad7SMarcel Moolenaar struct dbdma_channel { 56f1dea04aSNathan Whitehorn struct resource *sc_regs; 57f1dea04aSNathan Whitehorn u_int sc_off; 587d8ccad7SMarcel Moolenaar 597d8ccad7SMarcel Moolenaar struct dbdma_command *sc_slots; 607d8ccad7SMarcel Moolenaar int sc_nslots; 617d8ccad7SMarcel Moolenaar bus_addr_t sc_slots_pa; 627d8ccad7SMarcel Moolenaar 637d8ccad7SMarcel Moolenaar bus_dma_tag_t sc_dmatag; 647d8ccad7SMarcel Moolenaar bus_dmamap_t sc_dmamap; 65cab8300eSJustin Hibbits uint32_t sc_saved_regs[5]; 667d8ccad7SMarcel Moolenaar }; 677d8ccad7SMarcel Moolenaar 687d8ccad7SMarcel Moolenaar /* 697d8ccad7SMarcel Moolenaar DBDMA registers are found at 0x8000 + n*0x100 in the macio register space, 707d8ccad7SMarcel Moolenaar and are laid out as follows within each block: 717d8ccad7SMarcel Moolenaar 727d8ccad7SMarcel Moolenaar Address: Description: Length (bytes): 737d8ccad7SMarcel Moolenaar 0x000 Channel Control 4 747d8ccad7SMarcel Moolenaar 0x004 Channel Status 4 757d8ccad7SMarcel Moolenaar 0x00C Command Phys Addr 4 767d8ccad7SMarcel Moolenaar 0x010 Interrupt Select 4 777d8ccad7SMarcel Moolenaar 0x014 Branch Select 4 787d8ccad7SMarcel Moolenaar 0x018 Wait Select 4 797d8ccad7SMarcel Moolenaar */ 807d8ccad7SMarcel Moolenaar 817d8ccad7SMarcel Moolenaar #define CHAN_CONTROL_REG 0x00 827d8ccad7SMarcel Moolenaar #define CHAN_STATUS_REG 0x04 83f1dea04aSNathan Whitehorn #define CHAN_CMDPTR_HI 0x08 847d8ccad7SMarcel Moolenaar #define CHAN_CMDPTR 0x0C 857d8ccad7SMarcel Moolenaar #define CHAN_INTR_SELECT 0x10 867d8ccad7SMarcel Moolenaar #define CHAN_BRANCH_SELECT 0x14 877d8ccad7SMarcel Moolenaar #define CHAN_WAIT_SELECT 0x18 887d8ccad7SMarcel Moolenaar 897d8ccad7SMarcel Moolenaar /* Channel control is the write channel to channel status, the upper 16 bits 907d8ccad7SMarcel Moolenaar are a mask of which bytes to change */ 917d8ccad7SMarcel Moolenaar 924a8c1391SNathan Whitehorn #define DBDMA_REG_MASK_SHIFT 16 934a8c1391SNathan Whitehorn 947d8ccad7SMarcel Moolenaar /* Status bits 0-7 are device dependent status bits */ 957d8ccad7SMarcel Moolenaar 967d8ccad7SMarcel Moolenaar /* 977d8ccad7SMarcel Moolenaar The Interrupt/Branch/Wait Select triggers the corresponding condition bits 987d8ccad7SMarcel Moolenaar in the event that (select.mask & device dependent status) == select.value 997d8ccad7SMarcel Moolenaar 1007d8ccad7SMarcel Moolenaar They are defined a follows: 1017d8ccad7SMarcel Moolenaar Byte 1: Reserved 1027d8ccad7SMarcel Moolenaar Byte 2: Mask 1037d8ccad7SMarcel Moolenaar Byte 3: Reserved 1047d8ccad7SMarcel Moolenaar Byte 4: Value 1057d8ccad7SMarcel Moolenaar */ 1067d8ccad7SMarcel Moolenaar 1077d8ccad7SMarcel Moolenaar #endif /* _POWERPC_POWERMAC_DBDMAVAR_H_ */ 108