186d7f5d3SJohn Marino /* 286d7f5d3SJohn Marino * Copyright (c) 2003 Hidetoshi Shimokawa 386d7f5d3SJohn Marino * Copyright (c) 1998-2002 Katsushi Kobayashi and Hidetoshi Shimokawa 486d7f5d3SJohn Marino * All rights reserved. 586d7f5d3SJohn Marino * 686d7f5d3SJohn Marino * Redistribution and use in source and binary forms, with or without 786d7f5d3SJohn Marino * modification, are permitted provided that the following conditions 886d7f5d3SJohn Marino * are met: 986d7f5d3SJohn Marino * 1. Redistributions of source code must retain the above copyright 1086d7f5d3SJohn Marino * notice, this list of conditions and the following disclaimer. 1186d7f5d3SJohn Marino * 2. Redistributions in binary form must reproduce the above copyright 1286d7f5d3SJohn Marino * notice, this list of conditions and the following disclaimer in the 1386d7f5d3SJohn Marino * documentation and/or other materials provided with the distribution. 1486d7f5d3SJohn Marino * 3. All advertising materials mentioning features or use of this software 1586d7f5d3SJohn Marino * must display the acknowledgement as bellow: 1686d7f5d3SJohn Marino * 1786d7f5d3SJohn Marino * This product includes software developed by K. Kobayashi and H. Shimokawa 1886d7f5d3SJohn Marino * 1986d7f5d3SJohn Marino * 4. The name of the author may not be used to endorse or promote products 2086d7f5d3SJohn Marino * derived from this software without specific prior written permission. 2186d7f5d3SJohn Marino * 2286d7f5d3SJohn Marino * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 2386d7f5d3SJohn Marino * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 2486d7f5d3SJohn Marino * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 2586d7f5d3SJohn Marino * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 2686d7f5d3SJohn Marino * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 2786d7f5d3SJohn Marino * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 2886d7f5d3SJohn Marino * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2986d7f5d3SJohn Marino * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 3086d7f5d3SJohn Marino * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 3186d7f5d3SJohn Marino * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 3286d7f5d3SJohn Marino * POSSIBILITY OF SUCH DAMAGE. 3386d7f5d3SJohn Marino * 3486d7f5d3SJohn Marino * $FreeBSD: src/sys/dev/firewire/iec68113.h,v 1.7 2003/04/29 13:27:13 simokawa Exp $ 3586d7f5d3SJohn Marino * $DragonFly: src/sys/bus/firewire/iec68113.h,v 1.3 2004/02/05 13:32:08 joerg Exp $ 3686d7f5d3SJohn Marino * 3786d7f5d3SJohn Marino */ 3886d7f5d3SJohn Marino 3986d7f5d3SJohn Marino #define DV_BROADCAST_ON (1<<30) 4086d7f5d3SJohn Marino #define oMPR 0x900 4186d7f5d3SJohn Marino #define oPCR 0x904 4286d7f5d3SJohn Marino #define iMPR 0x980 4386d7f5d3SJohn Marino #define iPCR 0x984 4486d7f5d3SJohn Marino 4586d7f5d3SJohn Marino struct ciphdr { 4686d7f5d3SJohn Marino #if BYTE_ORDER == BIG_ENDIAN 4786d7f5d3SJohn Marino u_int8_t eoh0:1, /* 0 */ 4886d7f5d3SJohn Marino form0:1, /* 0 */ 4986d7f5d3SJohn Marino src:6; 5086d7f5d3SJohn Marino #else 5186d7f5d3SJohn Marino u_int8_t src:6, 5286d7f5d3SJohn Marino form0:1, /* 0 */ 5386d7f5d3SJohn Marino eoh0:1; /* 0 */ 5486d7f5d3SJohn Marino #endif 5586d7f5d3SJohn Marino u_int8_t len; 5686d7f5d3SJohn Marino #if BYTE_ORDER == BIG_ENDIAN 5786d7f5d3SJohn Marino u_int8_t fn:2, 5886d7f5d3SJohn Marino qpc:3, 5986d7f5d3SJohn Marino sph:1, 6086d7f5d3SJohn Marino :2; 6186d7f5d3SJohn Marino #else 6286d7f5d3SJohn Marino u_int8_t :2, 6386d7f5d3SJohn Marino sph:1, 6486d7f5d3SJohn Marino qpc:3, 6586d7f5d3SJohn Marino fn:2; 6686d7f5d3SJohn Marino #endif 6786d7f5d3SJohn Marino u_int8_t dbc; 6886d7f5d3SJohn Marino #if BYTE_ORDER == BIG_ENDIAN 6986d7f5d3SJohn Marino u_int8_t eoh1:1, /* 1 */ 7086d7f5d3SJohn Marino form1:1, /* 0 */ 7186d7f5d3SJohn Marino fmt:6; 7286d7f5d3SJohn Marino #else 7386d7f5d3SJohn Marino u_int8_t fmt:6, 7486d7f5d3SJohn Marino form1:1, /* 0 */ 7586d7f5d3SJohn Marino eoh1:1; /* 1 */ 7686d7f5d3SJohn Marino #endif 7786d7f5d3SJohn Marino #define CIP_FMT_DVCR 0 7886d7f5d3SJohn Marino #define CIP_FMT_MPEG (1<<5) 7986d7f5d3SJohn Marino union { 8086d7f5d3SJohn Marino struct { 8186d7f5d3SJohn Marino #if BYTE_ORDER == BIG_ENDIAN 8286d7f5d3SJohn Marino u_int8_t fs:1, /* 50/60 field system 8386d7f5d3SJohn Marino NTSC/PAL */ 8486d7f5d3SJohn Marino stype:5, 8586d7f5d3SJohn Marino :2; 8686d7f5d3SJohn Marino #else 8786d7f5d3SJohn Marino u_int8_t :2, 8886d7f5d3SJohn Marino stype:5, 8986d7f5d3SJohn Marino fs:1; /* 50/60 field system 9086d7f5d3SJohn Marino NTSC/PAL */ 9186d7f5d3SJohn Marino #endif 9286d7f5d3SJohn Marino #define CIP_STYPE_SD 0 9386d7f5d3SJohn Marino #define CIP_STYPE_SDL 1 9486d7f5d3SJohn Marino #define CIP_STYPE_HD 2 9586d7f5d3SJohn Marino u_int16_t cyc:16; /* take care of byte order! */ 9686d7f5d3SJohn Marino } __attribute__ ((packed)) dv; 9786d7f5d3SJohn Marino u_int8_t bytes[3]; 9886d7f5d3SJohn Marino } fdf; 9986d7f5d3SJohn Marino 10086d7f5d3SJohn Marino }; 10186d7f5d3SJohn Marino struct dvdbc{ 10286d7f5d3SJohn Marino #if BYTE_ORDER == BIG_ENDIAN 10386d7f5d3SJohn Marino u_int8_t sct:3, /* Section type */ 10486d7f5d3SJohn Marino :1, /* Reserved */ 10586d7f5d3SJohn Marino arb:4; /* Arbitrary bit */ 10686d7f5d3SJohn Marino #else 10786d7f5d3SJohn Marino u_int8_t arb:4, /* Arbitrary bit */ 10886d7f5d3SJohn Marino :1, /* Reserved */ 10986d7f5d3SJohn Marino sct:3; /* Section type */ 11086d7f5d3SJohn Marino #endif 11186d7f5d3SJohn Marino #define DV_SCT_HEADER 0 11286d7f5d3SJohn Marino #define DV_SCT_SUBCODE 1 11386d7f5d3SJohn Marino #define DV_SCT_VAUX 2 11486d7f5d3SJohn Marino #define DV_SCT_AUDIO 3 11586d7f5d3SJohn Marino #define DV_SCT_VIDEO 4 11686d7f5d3SJohn Marino #if BYTE_ORDER == BIG_ENDIAN 11786d7f5d3SJohn Marino u_int8_t dseq:4, /* DIF sequence number */ 11886d7f5d3SJohn Marino fsc:1, /* ID of a DIF block in each channel */ 11986d7f5d3SJohn Marino :3; 12086d7f5d3SJohn Marino #else 12186d7f5d3SJohn Marino u_int8_t :3, 12286d7f5d3SJohn Marino fsc:1, /* ID of a DIF block in each channel */ 12386d7f5d3SJohn Marino dseq:4; /* DIF sequence number */ 12486d7f5d3SJohn Marino #endif 12586d7f5d3SJohn Marino u_int8_t dbn; /* DIF block number */ 12686d7f5d3SJohn Marino u_int8_t payload[77]; 12786d7f5d3SJohn Marino #define DV_DSF_12 0x80 /* PAL: payload[0] in Header DIF */ 12886d7f5d3SJohn Marino }; 129