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 297d8ccad7SMarcel Moolenaar #ifndef _POWERPC_POWERMAC_DBDMAVAR_H_ 307d8ccad7SMarcel Moolenaar #define _POWERPC_POWERMAC_DBDMAVAR_H_ 317d8ccad7SMarcel Moolenaar 327d8ccad7SMarcel Moolenaar struct dbdma_command { 337d8ccad7SMarcel Moolenaar uint8_t cmd:4; /* DBDMA command */ 347d8ccad7SMarcel Moolenaar 357d8ccad7SMarcel Moolenaar uint8_t _resd1:1; 367d8ccad7SMarcel Moolenaar uint8_t key:3; /* Stream number, or 6 for KEY_SYSTEM */ 377d8ccad7SMarcel Moolenaar uint8_t _resd2:2; 387d8ccad7SMarcel Moolenaar 397d8ccad7SMarcel Moolenaar /* Interrupt, branch, and wait flags */ 407d8ccad7SMarcel Moolenaar uint8_t intr:2; 417d8ccad7SMarcel Moolenaar uint8_t branch:2; 427d8ccad7SMarcel Moolenaar uint8_t wait:2; 437d8ccad7SMarcel Moolenaar 447d8ccad7SMarcel Moolenaar uint16_t reqCount; /* Bytes to transfer */ 457d8ccad7SMarcel Moolenaar 467d8ccad7SMarcel Moolenaar uint32_t address; /* 32-bit system physical address */ 477d8ccad7SMarcel Moolenaar uint32_t cmdDep; /* Branch address or quad word to load/store */ 487d8ccad7SMarcel Moolenaar 497d8ccad7SMarcel Moolenaar uint16_t xferStatus; /* Contents of channel status after completion */ 507d8ccad7SMarcel Moolenaar uint16_t resCount; /* Number of residual bytes outstanding */ 517d8ccad7SMarcel Moolenaar }; 527d8ccad7SMarcel Moolenaar 537d8ccad7SMarcel Moolenaar struct dbdma_channel { 54f1dea04aSNathan Whitehorn struct resource *sc_regs; 55f1dea04aSNathan Whitehorn u_int sc_off; 567d8ccad7SMarcel Moolenaar 577d8ccad7SMarcel Moolenaar struct dbdma_command *sc_slots; 587d8ccad7SMarcel Moolenaar int sc_nslots; 597d8ccad7SMarcel Moolenaar bus_addr_t sc_slots_pa; 607d8ccad7SMarcel Moolenaar 617d8ccad7SMarcel Moolenaar bus_dma_tag_t sc_dmatag; 627d8ccad7SMarcel Moolenaar bus_dmamap_t sc_dmamap; 63cab8300eSJustin Hibbits uint32_t sc_saved_regs[5]; 647d8ccad7SMarcel Moolenaar }; 657d8ccad7SMarcel Moolenaar 667d8ccad7SMarcel Moolenaar /* 677d8ccad7SMarcel Moolenaar DBDMA registers are found at 0x8000 + n*0x100 in the macio register space, 687d8ccad7SMarcel Moolenaar and are laid out as follows within each block: 697d8ccad7SMarcel Moolenaar 707d8ccad7SMarcel Moolenaar Address: Description: Length (bytes): 717d8ccad7SMarcel Moolenaar 0x000 Channel Control 4 727d8ccad7SMarcel Moolenaar 0x004 Channel Status 4 737d8ccad7SMarcel Moolenaar 0x00C Command Phys Addr 4 747d8ccad7SMarcel Moolenaar 0x010 Interrupt Select 4 757d8ccad7SMarcel Moolenaar 0x014 Branch Select 4 767d8ccad7SMarcel Moolenaar 0x018 Wait Select 4 777d8ccad7SMarcel Moolenaar */ 787d8ccad7SMarcel Moolenaar 797d8ccad7SMarcel Moolenaar #define CHAN_CONTROL_REG 0x00 807d8ccad7SMarcel Moolenaar #define CHAN_STATUS_REG 0x04 81f1dea04aSNathan Whitehorn #define CHAN_CMDPTR_HI 0x08 827d8ccad7SMarcel Moolenaar #define CHAN_CMDPTR 0x0C 837d8ccad7SMarcel Moolenaar #define CHAN_INTR_SELECT 0x10 847d8ccad7SMarcel Moolenaar #define CHAN_BRANCH_SELECT 0x14 857d8ccad7SMarcel Moolenaar #define CHAN_WAIT_SELECT 0x18 867d8ccad7SMarcel Moolenaar 877d8ccad7SMarcel Moolenaar /* Channel control is the write channel to channel status, the upper 16 bits 887d8ccad7SMarcel Moolenaar are a mask of which bytes to change */ 897d8ccad7SMarcel Moolenaar 904a8c1391SNathan Whitehorn #define DBDMA_REG_MASK_SHIFT 16 914a8c1391SNathan Whitehorn 927d8ccad7SMarcel Moolenaar /* Status bits 0-7 are device dependent status bits */ 937d8ccad7SMarcel Moolenaar 947d8ccad7SMarcel Moolenaar /* 957d8ccad7SMarcel Moolenaar The Interrupt/Branch/Wait Select triggers the corresponding condition bits 967d8ccad7SMarcel Moolenaar in the event that (select.mask & device dependent status) == select.value 977d8ccad7SMarcel Moolenaar 987d8ccad7SMarcel Moolenaar They are defined a follows: 997d8ccad7SMarcel Moolenaar Byte 1: Reserved 1007d8ccad7SMarcel Moolenaar Byte 2: Mask 1017d8ccad7SMarcel Moolenaar Byte 3: Reserved 1027d8ccad7SMarcel Moolenaar Byte 4: Value 1037d8ccad7SMarcel Moolenaar */ 1047d8ccad7SMarcel Moolenaar 1057d8ccad7SMarcel Moolenaar #endif /* _POWERPC_POWERMAC_DBDMAVAR_H_ */ 106