]> git.lizzy.rs Git - plan9front.git/blob - sys/src/9/pc/devlml.h
kernel: cleanup makefile for $CONF.$O target
[plan9front.git] / sys / src / 9 / 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