linux/drivers/media/platform/vino.h
<<
>>
Prefs
   1/*
   2 * Driver for the VINO (Video In No Out) system found in SGI Indys.
   3 *
   4 * This file is subject to the terms and conditions of the GNU General Public
   5 * License version 2 as published by the Free Software Foundation.
   6 *
   7 * Copyright (C) 1999 Ulf Karlsson <ulfc@bun.falkenberg.se>
   8 * Copyright (C) 2003 Ladislav Michl <ladis@linux-mips.org>
   9 */
  10
  11#ifndef _VINO_H_
  12#define _VINO_H_
  13
  14#define VINO_BASE       0x00080000      /* Vino is in the EISA address space,
  15                                         * but it is not an EISA bus card */
  16#define VINO_PAGE_SIZE  4096
  17
  18struct sgi_vino_channel {
  19        u32 _pad_alpha;
  20        volatile u32 alpha;
  21
  22#define VINO_CLIP_X(x)          ((x) & 0x3ff)           /* bits 0:9 */
  23#define VINO_CLIP_ODD(x)        (((x) & 0x1ff) << 10)   /* bits 10:18 */
  24#define VINO_CLIP_EVEN(x)       (((x) & 0x1ff) << 19)   /* bits 19:27 */
  25        u32 _pad_clip_start;
  26        volatile u32 clip_start;
  27        u32 _pad_clip_end;
  28        volatile u32 clip_end;
  29
  30#define VINO_FRAMERT_FULL       0xfff
  31#define VINO_FRAMERT_PAL        (1<<0)                  /* 0=NTSC 1=PAL */
  32#define VINO_FRAMERT_RT(x)      (((x) & 0xfff) << 1)    /* bits 1:12 */
  33        u32 _pad_frame_rate;
  34        volatile u32 frame_rate;
  35
  36        u32 _pad_field_counter;
  37        volatile u32 field_counter;
  38        u32 _pad_line_size;
  39        volatile u32 line_size;
  40        u32 _pad_line_count;
  41        volatile u32 line_count;
  42        u32 _pad_page_index;
  43        volatile u32 page_index;
  44        u32 _pad_next_4_desc;
  45        volatile u32 next_4_desc;
  46        u32 _pad_start_desc_tbl;
  47        volatile u32 start_desc_tbl;
  48
  49#define VINO_DESC_JUMP          (1<<30)
  50#define VINO_DESC_STOP          (1<<31)
  51#define VINO_DESC_VALID         (1<<32)
  52        u32 _pad_desc_0;
  53        volatile u32 desc_0;
  54        u32 _pad_desc_1;
  55        volatile u32 desc_1;
  56        u32 _pad_desc_2;
  57        volatile u32 desc_2;
  58        u32 _pad_Bdesc_3;
  59        volatile u32 desc_3;
  60
  61        u32 _pad_fifo_thres;
  62        volatile u32 fifo_thres;
  63        u32 _pad_fifo_read;
  64        volatile u32 fifo_read;
  65        u32 _pad_fifo_write;
  66        volatile u32 fifo_write;
  67};
  68
  69struct sgi_vino {
  70#define VINO_CHIP_ID            0xb
  71#define VINO_REV_NUM(x)         ((x) & 0x0f)
  72#define VINO_ID_VALUE(x)        (((x) & 0xf0) >> 4)
  73        u32 _pad_rev_id;
  74        volatile u32 rev_id;
  75
  76#define VINO_CTRL_LITTLE_ENDIAN         (1<<0)
  77#define VINO_CTRL_A_EOF_INT             (1<<1)  /* Field transferred int */
  78#define VINO_CTRL_A_FIFO_INT            (1<<2)  /* FIFO overflow int */
  79#define VINO_CTRL_A_EOD_INT             (1<<3)  /* End of desc table int */
  80#define VINO_CTRL_A_INT                 (VINO_CTRL_A_EOF_INT | \
  81                                         VINO_CTRL_A_FIFO_INT | \
  82                                         VINO_CTRL_A_EOD_INT)
  83#define VINO_CTRL_B_EOF_INT             (1<<4)  /* Field transferred int */
  84#define VINO_CTRL_B_FIFO_INT            (1<<5)  /* FIFO overflow int */
  85#define VINO_CTRL_B_EOD_INT             (1<<6)  /* End of desc table int */
  86#define VINO_CTRL_B_INT                 (VINO_CTRL_B_EOF_INT | \
  87                                         VINO_CTRL_B_FIFO_INT | \
  88                                         VINO_CTRL_B_EOD_INT)
  89#define VINO_CTRL_A_DMA_ENBL            (1<<7)
  90#define VINO_CTRL_A_INTERLEAVE_ENBL     (1<<8)
  91#define VINO_CTRL_A_SYNC_ENBL           (1<<9)
  92#define VINO_CTRL_A_SELECT              (1<<10) /* 1=D1 0=Philips */
  93#define VINO_CTRL_A_RGB                 (1<<11) /* 1=RGB 0=YUV */
  94#define VINO_CTRL_A_LUMA_ONLY           (1<<12)
  95#define VINO_CTRL_A_DEC_ENBL            (1<<13) /* Decimation */
  96#define VINO_CTRL_A_DEC_SCALE_MASK      0x1c000 /* bits 14:17 */
  97#define VINO_CTRL_A_DEC_SCALE_SHIFT     (14)
  98#define VINO_CTRL_A_DEC_HOR_ONLY        (1<<17) /* Horizontal only */
  99#define VINO_CTRL_A_DITHER              (1<<18) /* 24 -> 8 bit dither */
 100#define VINO_CTRL_B_DMA_ENBL            (1<<19)
 101#define VINO_CTRL_B_INTERLEAVE_ENBL     (1<<20)
 102#define VINO_CTRL_B_SYNC_ENBL           (1<<21)
 103#define VINO_CTRL_B_SELECT              (1<<22) /* 1=D1 0=Philips */
 104#define VINO_CTRL_B_RGB                 (1<<23) /* 1=RGB 0=YUV */
 105#define VINO_CTRL_B_LUMA_ONLY           (1<<24)
 106#define VINO_CTRL_B_DEC_ENBL            (1<<25) /* Decimation */
 107#define VINO_CTRL_B_DEC_SCALE_MASK      0x1c000000      /* bits 26:28 */
 108#define VINO_CTRL_B_DEC_SCALE_SHIFT     (26)
 109#define VINO_CTRL_B_DEC_HOR_ONLY        (1<<29) /* Decimation horizontal only */
 110#define VINO_CTRL_B_DITHER              (1<<30) /* ChanB 24 -> 8 bit dither */
 111        u32 _pad_control;
 112        volatile u32 control;
 113
 114#define VINO_INTSTAT_A_EOF              (1<<0)  /* Field transferred int */
 115#define VINO_INTSTAT_A_FIFO             (1<<1)  /* FIFO overflow int */
 116#define VINO_INTSTAT_A_EOD              (1<<2)  /* End of desc table int */
 117#define VINO_INTSTAT_A                  (VINO_INTSTAT_A_EOF | \
 118                                         VINO_INTSTAT_A_FIFO | \
 119                                         VINO_INTSTAT_A_EOD)
 120#define VINO_INTSTAT_B_EOF              (1<<3)  /* Field transferred int */
 121#define VINO_INTSTAT_B_FIFO             (1<<4)  /* FIFO overflow int */
 122#define VINO_INTSTAT_B_EOD              (1<<5)  /* End of desc table int */
 123#define VINO_INTSTAT_B                  (VINO_INTSTAT_B_EOF | \
 124                                         VINO_INTSTAT_B_FIFO | \
 125                                         VINO_INTSTAT_B_EOD)
 126        u32 _pad_intr_status;
 127        volatile u32 intr_status;
 128
 129        u32 _pad_i2c_control;
 130        volatile u32 i2c_control;
 131        u32 _pad_i2c_data;
 132        volatile u32 i2c_data;
 133
 134        struct sgi_vino_channel a;
 135        struct sgi_vino_channel b;
 136};
 137
 138#endif
 139