/*
 *  Driver for the Conexant CX25821 PCIe bridge
 *
 *  Copyright (C) 2009 Conexant Systems Inc.
 *  Authors  <hiep.huynh@conexant.com>, <shu.lin@conexant.com>
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#include <linux/mutex.h>
#include <linux/workqueue.h>

#define OUTPUT_FRMT_656       0
#define OPEN_FILE_1           0
#define NUM_PROGS             8
#define NUM_FRAMES            2
#define ODD_FIELD             0
#define EVEN_FIELD            1
#define TOP_OFFSET            0
#define FIFO_DISABLE          0
#define FIFO_ENABLE           1
#define TEST_FRAMES           5
#define END_OF_FILE           0
#define IN_PROGRESS           1
#define RESET_STATUS          -1
#define NUM_NO_OPS            5

/* PAL and NTSC line sizes and number of lines. */
#define WIDTH_D1              720
#define NTSC_LINES_PER_FRAME  480
#define PAL_LINES_PER_FRAME   576
#define PAL_LINE_SZ           1440
#define Y422_LINE_SZ          1440
#define Y411_LINE_SZ          1080
#define NTSC_FIELD_HEIGHT     240
#define NTSC_ODD_FLD_LINES    241
#define PAL_FIELD_HEIGHT      288

#define FRAME_SIZE_NTSC_Y422    (NTSC_LINES_PER_FRAME * Y422_LINE_SZ)
#define FRAME_SIZE_NTSC_Y411    (NTSC_LINES_PER_FRAME * Y411_LINE_SZ)
#define FRAME_SIZE_PAL_Y422     (PAL_LINES_PER_FRAME * Y422_LINE_SZ)
#define FRAME_SIZE_PAL_Y411     (PAL_LINES_PER_FRAME * Y411_LINE_SZ)

#define NTSC_DATA_BUF_SZ        (Y422_LINE_SZ * NTSC_LINES_PER_FRAME)
#define PAL_DATA_BUF_SZ         (Y422_LINE_SZ * PAL_LINES_PER_FRAME)

#define RISC_WRITECR_INSTRUCTION_SIZE   16
#define RISC_SYNC_INSTRUCTION_SIZE      4
#define JUMP_INSTRUCTION_SIZE           12
#define MAXSIZE_NO_OPS                  36
#define DWORD_SIZE                      4

#define USE_RISC_NOOP_VIDEO   1

#ifdef USE_RISC_NOOP_VIDEO
#define PAL_US_VID_PROG_SIZE						\
	(PAL_FIELD_HEIGHT * 3 * DWORD_SIZE +				\
	 RISC_WRITECR_INSTRUCTION_SIZE + RISC_SYNC_INSTRUCTION_SIZE +	\
	 NUM_NO_OPS * DWORD_SIZE)

#define PAL_RISC_BUF_SIZE           (2 * PAL_US_VID_PROG_SIZE)

#define PAL_VID_PROG_SIZE						\
	((PAL_FIELD_HEIGHT * 2) * 3 * DWORD_SIZE +			\
	 2 * RISC_SYNC_INSTRUCTION_SIZE + RISC_WRITECR_INSTRUCTION_SIZE + \
	 JUMP_INSTRUCTION_SIZE + 2 * NUM_NO_OPS * DWORD_SIZE)

#define ODD_FLD_PAL_PROG_SIZE						\
	(PAL_FIELD_HEIGHT * 3 * DWORD_SIZE +				\
	 RISC_SYNC_INSTRUCTION_SIZE + RISC_WRITECR_INSTRUCTION_SIZE +	\
	 NUM_NO_OPS * DWORD_SIZE)

#define ODD_FLD_NTSC_PROG_SIZE						\
	(NTSC_ODD_FLD_LINES * 3 * DWORD_SIZE +				\
	 RISC_SYNC_INSTRUCTION_SIZE + RISC_WRITECR_INSTRUCTION_SIZE +	\
	 NUM_NO_OPS * DWORD_SIZE)

#define NTSC_US_VID_PROG_SIZE						\
	((NTSC_ODD_FLD_LINES + 1) * 3 * DWORD_SIZE +			\
	 RISC_WRITECR_INSTRUCTION_SIZE + JUMP_INSTRUCTION_SIZE +	\
	 NUM_NO_OPS * DWORD_SIZE)

#define NTSC_RISC_BUF_SIZE						\
	(2 * (RISC_SYNC_INSTRUCTION_SIZE + NTSC_US_VID_PROG_SIZE))

#define FRAME1_VID_PROG_SIZE						\
	((NTSC_ODD_FLD_LINES + NTSC_FIELD_HEIGHT) * 3 * DWORD_SIZE +	\
	 2 * RISC_SYNC_INSTRUCTION_SIZE + RISC_WRITECR_INSTRUCTION_SIZE + \
	 JUMP_INSTRUCTION_SIZE + 2 * NUM_NO_OPS * DWORD_SIZE)

#endif

#ifndef USE_RISC_NOOP_VIDEO
#define PAL_US_VID_PROG_SIZE						\
	(PAL_FIELD_HEIGHT * 3 * DWORD_SIZE +				\
	 RISC_WRITECR_INSTRUCTION_SIZE + RISC_SYNC_INSTRUCTION_SIZE +	\
	 JUMP_INSTRUCTION_SIZE)

#define PAL_RISC_BUF_SIZE		(2 * PAL_US_VID_PROG_SIZE)

#define PAL_VID_PROG_SIZE						\
	((PAL_FIELD_HEIGHT * 2) * 3 * DWORD_SIZE +			\
	 2 * RISC_SYNC_INSTRUCTION_SIZE + RISC_WRITECR_INSTRUCTION_SIZE + \
	 JUMP_INSTRUCTION_SIZE)

#define ODD_FLD_PAL_PROG_SIZE						\
	(PAL_FIELD_HEIGHT * 3 * DWORD_SIZE +				\
	 RISC_SYNC_INSTRUCTION_SIZE + RISC_WRITECR_INSTRUCTION_SIZE)

#define ODD_FLD_NTSC_PROG_SIZE						\
	(NTSC_ODD_FLD_LINES * 3 * DWORD_SIZE +				\
	 RISC_SYNC_INSTRUCTION_SIZE + RISC_WRITECR_INSTRUCTION_SIZE)

#define NTSC_US_VID_PROG_SIZE						\
	((NTSC_ODD_FLD_LINES + 1) * 3 * DWORD_SIZE +			\
	 RISC_WRITECR_INSTRUCTION_SIZE + JUMP_INSTRUCTION_SIZE)

#define NTSC_RISC_BUF_SIZE						\
	(2 * (RISC_SYNC_INSTRUCTION_SIZE + NTSC_US_VID_PROG_SIZE))

#define FRAME1_VID_PROG_SIZE						\
	((NTSC_ODD_FLD_LINES + NTSC_FIELD_HEIGHT) * 3 * DWORD_SIZE +	\
	 2 * RISC_SYNC_INSTRUCTION_SIZE + RISC_WRITECR_INSTRUCTION_SIZE + \
	 JUMP_INSTRUCTION_SIZE)

#endif
