xref: /freebsd/sys/dev/firewire/iec68113.h (revision 2ff63af9)
1098ca2bdSWarner Losh /*-
2718cf2ccSPedro F. Giffuni  * SPDX-License-Identifier: BSD-4-Clause
3718cf2ccSPedro F. Giffuni  *
477ee030bSHidetoshi Shimokawa  * Copyright (c) 2003 Hidetoshi Shimokawa
577ee030bSHidetoshi Shimokawa  * Copyright (c) 1998-2002 Katsushi Kobayashi and Hidetoshi Shimokawa
63c60ba66SKatsushi Kobayashi  * All rights reserved.
73c60ba66SKatsushi Kobayashi  *
83c60ba66SKatsushi Kobayashi  * Redistribution and use in source and binary forms, with or without
93c60ba66SKatsushi Kobayashi  * modification, are permitted provided that the following conditions
103c60ba66SKatsushi Kobayashi  * are met:
113c60ba66SKatsushi Kobayashi  * 1. Redistributions of source code must retain the above copyright
123c60ba66SKatsushi Kobayashi  *    notice, this list of conditions and the following disclaimer.
133c60ba66SKatsushi Kobayashi  * 2. Redistributions in binary form must reproduce the above copyright
143c60ba66SKatsushi Kobayashi  *    notice, this list of conditions and the following disclaimer in the
153c60ba66SKatsushi Kobayashi  *    documentation and/or other materials provided with the distribution.
163c60ba66SKatsushi Kobayashi  * 3. All advertising materials mentioning features or use of this software
173c60ba66SKatsushi Kobayashi  *    must display the acknowledgement as bellow:
183c60ba66SKatsushi Kobayashi  *
193c60ba66SKatsushi Kobayashi  *    This product includes software developed by K. Kobayashi and H. Shimokawa
203c60ba66SKatsushi Kobayashi  *
213c60ba66SKatsushi Kobayashi  * 4. The name of the author may not be used to endorse or promote products
223c60ba66SKatsushi Kobayashi  *    derived from this software without specific prior written permission.
233c60ba66SKatsushi Kobayashi  *
243c60ba66SKatsushi Kobayashi  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
253c60ba66SKatsushi Kobayashi  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
263c60ba66SKatsushi Kobayashi  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
273c60ba66SKatsushi Kobayashi  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
283c60ba66SKatsushi Kobayashi  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
293c60ba66SKatsushi Kobayashi  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
303c60ba66SKatsushi Kobayashi  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
313c60ba66SKatsushi Kobayashi  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
323c60ba66SKatsushi Kobayashi  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
333c60ba66SKatsushi Kobayashi  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
343c60ba66SKatsushi Kobayashi  * POSSIBILITY OF SUCH DAMAGE.
353c60ba66SKatsushi Kobayashi  *
363c60ba66SKatsushi Kobayashi  *
373c60ba66SKatsushi Kobayashi  */
385364715aSHidetoshi Shimokawa 
395364715aSHidetoshi Shimokawa #define		DV_BROADCAST_ON (1<<30)
405364715aSHidetoshi Shimokawa #define		oMPR		0x900
415364715aSHidetoshi Shimokawa #define		oPCR		0x904
425364715aSHidetoshi Shimokawa #define		iMPR		0x980
435364715aSHidetoshi Shimokawa #define		iPCR		0x984
445364715aSHidetoshi Shimokawa 
453c60ba66SKatsushi Kobayashi struct ciphdr {
4677ee030bSHidetoshi Shimokawa #if BYTE_ORDER == BIG_ENDIAN
4703161bbcSDoug Rabson 	uint8_t eoh0:1,		/* 0 */
4877ee030bSHidetoshi Shimokawa 		form0:1,	/* 0 */
4977ee030bSHidetoshi Shimokawa 		src:6;
5077ee030bSHidetoshi Shimokawa #else
5103161bbcSDoug Rabson 	uint8_t src:6,
52d0035474SHidetoshi Shimokawa 		form0:1,	/* 0 */
53d0035474SHidetoshi Shimokawa 		eoh0:1;		/* 0 */
5477ee030bSHidetoshi Shimokawa #endif
5503161bbcSDoug Rabson 	uint8_t len;
5677ee030bSHidetoshi Shimokawa #if BYTE_ORDER == BIG_ENDIAN
5703161bbcSDoug Rabson 	uint8_t fn:2,
5877ee030bSHidetoshi Shimokawa 		qpc:3,
5977ee030bSHidetoshi Shimokawa 		sph:1,
6077ee030bSHidetoshi Shimokawa 		:2;
6177ee030bSHidetoshi Shimokawa #else
6203161bbcSDoug Rabson 	uint8_t :2,
63d0035474SHidetoshi Shimokawa 		sph:1,
64d0035474SHidetoshi Shimokawa 		qpc:3,
65cd1f52feSHidetoshi Shimokawa 		fn:2;
6677ee030bSHidetoshi Shimokawa #endif
6703161bbcSDoug Rabson 	uint8_t dbc;
6877ee030bSHidetoshi Shimokawa #if BYTE_ORDER == BIG_ENDIAN
6903161bbcSDoug Rabson 	uint8_t eoh1:1,		/* 1 */
7077ee030bSHidetoshi Shimokawa 		form1:1,	/* 0 */
7177ee030bSHidetoshi Shimokawa 		fmt:6;
7277ee030bSHidetoshi Shimokawa #else
7303161bbcSDoug Rabson 	uint8_t fmt:6,
74d0035474SHidetoshi Shimokawa 		form1:1,	/* 0 */
75d0035474SHidetoshi Shimokawa 		eoh1:1;		/* 1 */
7677ee030bSHidetoshi Shimokawa #endif
7777ee030bSHidetoshi Shimokawa #define CIP_FMT_DVCR	0
7877ee030bSHidetoshi Shimokawa #define CIP_FMT_MPEG	(1<<5)
79d0035474SHidetoshi Shimokawa 	union {
80d0035474SHidetoshi Shimokawa 		struct {
8177ee030bSHidetoshi Shimokawa #if BYTE_ORDER == BIG_ENDIAN
8203161bbcSDoug Rabson 			uint8_t fs:1,		/* 50/60 field system
8377ee030bSHidetoshi Shimokawa 								NTSC/PAL */
8477ee030bSHidetoshi Shimokawa 				stype:5,
8577ee030bSHidetoshi Shimokawa 				:2;
8677ee030bSHidetoshi Shimokawa #else
8703161bbcSDoug Rabson 			uint8_t :2,
88d0035474SHidetoshi Shimokawa 				stype:5,
8977ee030bSHidetoshi Shimokawa 		  		fs:1;		/* 50/60 field system
9077ee030bSHidetoshi Shimokawa 								NTSC/PAL */
9177ee030bSHidetoshi Shimokawa #endif
92d0035474SHidetoshi Shimokawa #define	CIP_STYPE_SD	0
93d0035474SHidetoshi Shimokawa #define	CIP_STYPE_SDL	1
94d0035474SHidetoshi Shimokawa #define	CIP_STYPE_HD	2
9503161bbcSDoug Rabson 	  		uint16_t cyc:16;	/* take care of byte order! */
96d0035474SHidetoshi Shimokawa 		} __attribute__ ((packed)) dv;
9703161bbcSDoug Rabson 		uint8_t bytes[3];
98d0035474SHidetoshi Shimokawa 	} fdf;
99d0035474SHidetoshi Shimokawa 
1003c60ba66SKatsushi Kobayashi };
1013c60ba66SKatsushi Kobayashi struct dvdbc {
10277ee030bSHidetoshi Shimokawa #if BYTE_ORDER == BIG_ENDIAN
10303161bbcSDoug Rabson 	uint8_t sct:3,		/* Section type */
10477ee030bSHidetoshi Shimokawa 		:1,		/* Reserved */
10577ee030bSHidetoshi Shimokawa 		arb:4;		/* Arbitrary bit */
10677ee030bSHidetoshi Shimokawa #else
10703161bbcSDoug Rabson 	uint8_t arb:4,		/* Arbitrary bit */
108d0035474SHidetoshi Shimokawa 		:1,		/* Reserved */
109d0035474SHidetoshi Shimokawa 		sct:3;		/* Section type */
11077ee030bSHidetoshi Shimokawa #endif
111d0035474SHidetoshi Shimokawa #define	DV_SCT_HEADER	0
112d0035474SHidetoshi Shimokawa #define	DV_SCT_SUBCODE	1
113d0035474SHidetoshi Shimokawa #define	DV_SCT_VAUX	2
114d0035474SHidetoshi Shimokawa #define	DV_SCT_AUDIO	3
115d0035474SHidetoshi Shimokawa #define	DV_SCT_VIDEO	4
11677ee030bSHidetoshi Shimokawa #if BYTE_ORDER == BIG_ENDIAN
11703161bbcSDoug Rabson 	uint8_t dseq:4,		/* DIF sequence number */
11877ee030bSHidetoshi Shimokawa 		fsc:1,		/* ID of a DIF block in each channel */
11977ee030bSHidetoshi Shimokawa 		:3;
12077ee030bSHidetoshi Shimokawa #else
12103161bbcSDoug Rabson 	uint8_t :3,
122d0035474SHidetoshi Shimokawa 		fsc:1,		/* ID of a DIF block in each channel */
123d0035474SHidetoshi Shimokawa 		dseq:4;		/* DIF sequence number */
12477ee030bSHidetoshi Shimokawa #endif
12503161bbcSDoug Rabson 	uint8_t dbn;		/* DIF block number */
12603161bbcSDoug Rabson 	uint8_t payload[77];
127d0035474SHidetoshi Shimokawa #define	DV_DSF_12	0x80	/* PAL: payload[0] in Header DIF */
1283c60ba66SKatsushi Kobayashi };
129