linux/drivers/media/pci/bt8xx/bt878.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-or-later */
   2/*
   3    bt878.h - Bt878 audio module (register offsets)
   4
   5    Copyright (C) 2002 Peter Hettkamp <peter.hettkamp@htp-tel.de>
   6
   7*/
   8
   9#ifndef _BT878_H_
  10#define _BT878_H_
  11
  12#include <linux/interrupt.h>
  13#include <linux/pci.h>
  14#include <linux/sched.h>
  15#include <linux/spinlock.h>
  16#include <linux/mutex.h>
  17
  18#include "bt848.h"
  19#include "bttv.h"
  20
  21#define BT878_VERSION_CODE 0x000000
  22
  23#define BT878_AINT_STAT         0x100
  24#define BT878_ARISCS            (0xf<<28)
  25#define BT878_ARISC_EN          (1<<27)
  26#define BT878_ASCERR            (1<<19)
  27#define BT878_AOCERR            (1<<18)
  28#define BT878_APABORT           (1<<17)
  29#define BT878_ARIPERR           (1<<16)
  30#define BT878_APPERR            (1<<15)
  31#define BT878_AFDSR             (1<<14)
  32#define BT878_AFTRGT            (1<<13)
  33#define BT878_AFBUS             (1<<12)
  34#define BT878_ARISCI            (1<<11)
  35#define BT878_AOFLOW            (1<<3)
  36
  37#define BT878_AINT_MASK         0x104
  38
  39#define BT878_AGPIO_DMA_CTL     0x10c
  40#define BT878_A_GAIN            (0xf<<28)
  41#define BT878_A_G2X             (1<<27)
  42#define BT878_A_PWRDN           (1<<26)
  43#define BT878_A_SEL             (3<<24)
  44#define BT878_DA_SCE            (1<<23)
  45#define BT878_DA_LRI            (1<<22)
  46#define BT878_DA_MLB            (1<<21)
  47#define BT878_DA_LRD            (0x1f<<16)
  48#define BT878_DA_DPM            (1<<15)
  49#define BT878_DA_SBR            (1<<14)
  50#define BT878_DA_ES2            (1<<13)
  51#define BT878_DA_LMT            (1<<12)
  52#define BT878_DA_SDR            (0xf<<8)
  53#define BT878_DA_IOM            (3<<6)
  54#define BT878_DA_APP            (1<<5)
  55#define BT878_ACAP_EN           (1<<4)
  56#define BT878_PKTP              (3<<2)
  57#define BT878_RISC_EN           (1<<1)
  58#define BT878_FIFO_EN           1
  59
  60#define BT878_APACK_LEN         0x110
  61#define BT878_AFP_LEN           (0xff<<16)
  62#define BT878_ALP_LEN           0xfff
  63
  64#define BT878_ARISC_START       0x114
  65
  66#define BT878_ARISC_PC          0x120
  67
  68/* BT878 FUNCTION 0 REGISTERS */
  69#define BT878_GPIO_DMA_CTL      0x10c
  70
  71/* Interrupt register */
  72#define BT878_INT_STAT          0x100
  73#define BT878_INT_MASK          0x104
  74#define BT878_I2CRACK           (1<<25)
  75#define BT878_I2CDONE           (1<<8)
  76
  77#define BT878_MAX 4
  78
  79#define BT878_RISC_SYNC_MASK    (1 << 15)
  80
  81
  82#define BTTV_BOARD_UNKNOWN                 0x00
  83#define BTTV_BOARD_PINNACLESAT             0x5e
  84#define BTTV_BOARD_NEBULA_DIGITV           0x68
  85#define BTTV_BOARD_PC_HDTV                 0x70
  86#define BTTV_BOARD_TWINHAN_DST             0x71
  87#define BTTV_BOARD_AVDVBT_771              0x7b
  88#define BTTV_BOARD_AVDVBT_761              0x7c
  89#define BTTV_BOARD_DVICO_DVBT_LITE         0x80
  90#define BTTV_BOARD_DVICO_FUSIONHDTV_5_LITE 0x87
  91
  92extern int bt878_num;
  93
  94struct bt878 {
  95        struct mutex gpio_lock;
  96        unsigned int nr;
  97        unsigned int bttv_nr;
  98        struct i2c_adapter *adapter;
  99        struct pci_dev *dev;
 100        unsigned int id;
 101        unsigned int TS_Size;
 102        unsigned char revision;
 103        unsigned int irq;
 104        unsigned long bt878_adr;
 105        volatile void __iomem *bt878_mem; /* function 1 */
 106
 107        volatile u32 finished_block;
 108        volatile u32 last_block;
 109        u32 block_count;
 110        u32 block_bytes;
 111        u32 line_bytes;
 112        u32 line_count;
 113
 114        u32 buf_size;
 115        u8 *buf_cpu;
 116        dma_addr_t buf_dma;
 117
 118        u32 risc_size;
 119        __le32 *risc_cpu;
 120        dma_addr_t risc_dma;
 121        u32 risc_pos;
 122
 123        struct tasklet_struct tasklet;
 124        int shutdown;
 125};
 126
 127extern struct bt878 bt878[BT878_MAX];
 128
 129void bt878_start(struct bt878 *bt, u32 controlreg, u32 op_sync_orin,
 130                u32 irq_err_ignore);
 131void bt878_stop(struct bt878 *bt);
 132
 133#define bmtwrite(dat,adr)  writel((dat), (adr))
 134#define bmtread(adr)       readl(adr)
 135
 136#endif
 137