FreeBSD/Linux Kernel Cross Reference
sys/pc/devlml.h
1 /* Lml 22 driver */
2
3 #define MJPG_VERSION "LML33 v0.2"
4 #define NLML 2
5
6 /*
7 * The following values can be modified to tune/set default behaviour of the
8 * driver.
9 */
10
11 /* The number of uS delay in I2C state transitions (probably >= 10) */
12 #define I2C_DELAY 50
13
14 /* The amount of spinning to do before the I2C bus is timed out */
15 #define I2C_TIMEOUT 10000000
16
17 /* The amount of spinning to do before the guest bus is timed out */
18 #define GUEST_TIMEOUT 10000000
19
20 /*
21 * The amount of spinning to do before the polling of the still
22 * transfer port is aborted.
23 */
24 #define STILL_TIMEOUT 1000000
25
26 /*
27 * The following number is the maximum number of cards permited. Each
28 * card found is mapped to a device minor number starting from 0.
29 */
30 #define MAX_CARDS 1
31
32 /* The following are the datastructures needed by the device. */
33 #define I2C_BUS 0x044
34 /* which bit of I2C_BUS is which */
35 #define I2C_SCL 1
36 #define I2C_SDA 2
37 #define INTR_JPEGREP 0x08000000
38 #define INTR_GIRQ0 0x20000000
39 #define INTR_STAT 0x03c
40
41 /* A Device records the properties of the various card types supported. */
42 typedef struct {
43 int number; /* The H33_CARDTYPE_ assigned */
44 char *card_name; /* A string name */
45 int zr060addr; /* Which guest bus address for the ZR36060 */
46 } Device;
47
48 /*
49 * The remainder of the #defs are constants which should not need changing.
50 *
51 * The PCI vendor and device ids of the zoran chipset on the dc30.
52 * these really belong in pci.h.
53 */
54 #define VENDOR_ZORAN 0x11de
55 #define ZORAN_36057 0x6057
56 #define ZORAN_36067 ZORAN_36057
57
58 #define BT819Addr 0x8a
59 #define BT856Addr 0x88
60
61 #define NBUF 4
62
63 #define FRAGM_FINAL_B 1
64 #define STAT_BIT 1
65
66 typedef struct HdrFragment HdrFragment;
67 typedef struct FrameHeader FrameHeader;
68 typedef union Fragment Fragment;
69 typedef struct FragmentTable FragmentTable;
70 typedef struct CodeData CodeData;
71
72 /* If we're on a little endian architecture, then 0xFF, 0xD8 byte sequence is */
73 #define MRK_SOI 0xD8FF
74 #define MRK_APP3 0xE3FF
75 #define APP_NAME "LML"
76
77 struct FrameHeader { /* Don't modify this struct, used by h/w */
78 ushort mrkSOI;
79 ushort mrkAPP3;
80 ushort lenAPP3;
81 char nm[4];
82 ushort frameNo;
83 vlong ftime;
84 ulong frameSize;
85 ushort frameSeqNo;
86 ushort SOIfiller;
87 };
88
89 #define FRAGSIZE (128*1024)
90
91 union Fragment {
92 FrameHeader fh;
93 char fb[FRAGSIZE];
94 };
95
96 struct HdrFragment {
97 uchar hdr[sizeof(FrameHeader)];
98 Fragment;
99 };
100
101 struct FragmentTable { /* Don't modify this struct, used by h/w */
102 ulong addr; /* Physical address */
103 ulong leng;
104 };
105
106 struct CodeData { /* Don't modify this struct, used by h/w */
107 ulong pamjpg; /* Physical addr of statCom[0] */
108 ulong pagrab; /* Physical addr of grab buffer */
109 ulong statCom[4]; /* Physical addresses of fragdescs */
110 FragmentTable fragdesc[4];
111 HdrFragment frag[4];
112 };
113
114 enum{
115 Codedatasize = (sizeof(CodeData) + BY2PG - 1) & ~(BY2PG - 1),
116 Grabdatasize = (730 * 568 * 2 * 2 + BY2PG - 1) & ~(BY2PG - 1),
117 };
118
119 #define POST_OFFICE 0x200
120 #define POST_PEND 0x02000000
121 #define POST_TIME 0x01000000
122 #define POST_DIR 0x00800000
123
124 #define GID060 0
Cache object: 57cb0e984524237955bde6749df4d453
|