2 |
- |
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
|