saa7146.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:3k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*  
  2.     saa7146.h - definitions philips saa7146 based cards
  3.     Copyright (C) 1999 Nathan Laredo (laredo@gnu.org)
  4.     
  5.     This program is free software; you can redistribute it and/or modify
  6.     it under the terms of the GNU General Public License as published by
  7.     the Free Software Foundation; either version 2 of the License, or
  8.     (at your option) any later version.
  9.     This program is distributed in the hope that it will be useful,
  10.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.     GNU General Public License for more details.
  13.     You should have received a copy of the GNU General Public License
  14.     along with this program; if not, write to the Free Software
  15.     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  16. */
  17. #ifndef __SAA7146__
  18. #define __SAA7146__
  19. #define SAA7146_VERSION_CODE 0x000101
  20. #include <linux/types.h>
  21. #include <linux/wait.h>
  22. #include <linux/i2c.h>
  23. #include <linux/videodev.h>
  24. #ifndef O_NONCAP  
  25. #define O_NONCAP O_TRUNC
  26. #endif
  27. #define MAX_GBUFFERS 2
  28. #define FBUF_SIZE 0x190000
  29. #ifdef __KERNEL__
  30. struct saa7146_window 
  31. {
  32. int x, y;
  33. ushort width, height;
  34. ushort bpp, bpl;
  35. ushort swidth, sheight;
  36. short cropx, cropy;
  37. ushort cropwidth, cropheight;
  38. unsigned long vidadr;
  39. int color_fmt;
  40. ushort depth;
  41. };
  42. /*  Per-open data for handling multiple opens on one device */
  43. struct device_open
  44. {
  45. int      isopen;
  46. int      noncapturing;
  47. struct saa7146  *dev;
  48. };
  49. #define MAX_OPENS 3
  50. struct saa7146
  51. {
  52. struct video_device video_dev;
  53. struct video_picture picture;
  54. struct video_audio audio_dev;
  55. struct video_info vidinfo;
  56. int user;
  57. int cap;
  58. int capuser;
  59. int irqstate; /* irq routine is state driven */
  60. int writemode;
  61. int playmode;
  62.         unsigned int nr;
  63. unsigned long irq;          /* IRQ used by SAA7146 card */
  64. unsigned short id;
  65. struct i2c_bus i2c;
  66. struct pci_dev *dev;
  67. unsigned char revision;
  68. unsigned char boardcfg[64]; /* 64 bytes of config from eeprom */
  69. unsigned long saa7146_adr;   /* bus address of IO mem from PCI BIOS */
  70. struct saa7146_window win;
  71. unsigned char *saa7146_mem; /* pointer to mapped IO memory */
  72. struct device_open open_data[MAX_OPENS];
  73. #define MAX_MARKS 16
  74. /* for a/v sync */
  75. int endmark[MAX_MARKS], endmarkhead, endmarktail;
  76. u32 *dmaRPS1, *pageRPS1, *dmaRPS2, *pageRPS2, *dmavid1, *dmavid2,
  77. *dmavid3, *dmaa1in, *dmaa1out, *dmaa2in, *dmaa2out,
  78. *pagedebi, *pagevid1, *pagevid2, *pagevid3, *pagea1in,
  79. *pagea1out, *pagea2in, *pagea2out;
  80. wait_queue_head_t i2cq, debiq, audq, vidq;
  81. u8  *vidbuf, *audbuf, *osdbuf, *dmadebi;
  82. int audhead, vidhead, osdhead, audtail, vidtail, osdtail;
  83. spinlock_t lock; /* the device lock */
  84. };
  85. #endif
  86. #ifdef _ALPHA_SAA7146
  87. #define saawrite(dat,adr)    writel((dat),(char *) (saa->saa7146_adr+(adr)))
  88. #define saaread(adr)         readl(saa->saa7146_adr+(adr))
  89. #else
  90. #define saawrite(dat,adr)    writel((dat), (char *) (saa->saa7146_mem+(adr)))
  91. #define saaread(adr)         readl(saa->saa7146_mem+(adr))
  92. #endif
  93. #define saaand(dat,adr)      saawrite((dat) & saaread(adr), adr)
  94. #define saaor(dat,adr)       saawrite((dat) | saaread(adr), adr)
  95. #define saaaor(dat,mask,adr) saawrite((dat) | ((mask) & saaread(adr)), adr)
  96. /* bitmask of attached hardware found */
  97. #define SAA7146_UNKNOWN 0x00000000
  98. #define SAA7146_SAA7111 0x00000001
  99. #define SAA7146_SAA7121 0x00000002
  100. #define SAA7146_IBMMPEG 0x00000004
  101. #endif