Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-elphel
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
linux-elphel
Commits
3db94829
Commit
3db94829
authored
Mar 08, 2018
by
Oleg Dzhimiev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
updated i2c macros to fix 5MPx
parent
1263965f
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
25 additions
and
24 deletions
+25
-24
mt9x001.c
src/drivers/elphel/mt9x001.c
+25
-24
No files found.
src/drivers/elphel/mt9x001.c
View file @
3db94829
...
@@ -805,6 +805,7 @@ int mt9x001_pgm_detectsensor (int sensor_port, ///< sensor port
...
@@ -805,6 +805,7 @@ int mt9x001_pgm_detectsensor (int sensor_port, ///< sensor port
name
=
get_name_by_code
(
pcfg
->
sensor
[
0
],
DETECT_SENSOR
);
name
=
get_name_by_code
(
pcfg
->
sensor
[
0
],
DETECT_SENSOR
);
dc
=
xi2c_dev_get
(
name
);
dc
=
xi2c_dev_get
(
name
);
if
(
dc
){
if
(
dc
){
dev_dbg
(
g_dev_ptr
,
"{%d} setting i2c_addr to 0x%02x
\n
"
,
sensor_port
,
dc
->
slave7
);
psensor
->
i2c_addr
=
dc
->
slave7
;
psensor
->
i2c_addr
=
dc
->
slave7
;
}
}
...
@@ -963,6 +964,7 @@ int mt9x001_pgm_initsensor (int sensor_port, ///< sensor port
...
@@ -963,6 +964,7 @@ int mt9x001_pgm_initsensor (int sensor_port, ///< sensor port
udelay
((
debug_delays
>>
8
)
&
0xff
);
// 100);
udelay
((
debug_delays
>>
8
)
&
0xff
);
// 100);
}
}
first_sensor_i2c
=
sensor
->
i2c_addr
;
first_sensor_i2c
=
sensor
->
i2c_addr
;
// TODO: get rid of first_sensor_i2c, leave only mux index
if
(
GLOBALPARS
(
sensor_port
,
G_SENS_AVAIL
))
{
if
(
GLOBALPARS
(
sensor_port
,
G_SENS_AVAIL
))
{
first_sensor_i2c
+=
I2C359_INC
*
((
GLOBALPARS
(
sensor_port
,
G_SENS_AVAIL
)
&
1
)
?
1
:
((
GLOBALPARS
(
sensor_port
,
G_SENS_AVAIL
)
&
2
)
?
2
:
3
));
first_sensor_i2c
+=
I2C359_INC
*
((
GLOBALPARS
(
sensor_port
,
G_SENS_AVAIL
)
&
1
)
?
1
:
((
GLOBALPARS
(
sensor_port
,
G_SENS_AVAIL
)
&
2
)
?
2
:
3
));
}
}
...
@@ -1019,9 +1021,8 @@ int mt9x001_pgm_initsensor (int sensor_port, ///< sensor port
...
@@ -1019,9 +1021,8 @@ int mt9x001_pgm_initsensor (int sensor_port, ///< sensor port
for
(
i
=
0
;
i
<
sensor_register_overwrites_number
;
i
++
)
{
// unconditionally set those registers NOTE: Should be < 63 of them!
for
(
i
=
0
;
i
<
sensor_register_overwrites_number
;
i
++
)
{
// unconditionally set those registers NOTE: Should be < 63 of them!
SET_SENSOR_MBPAR
(
sensor_port
,
SET_SENSOR_MBPAR
_LUT
(
sensor_port
,
frame16
,
// == -1 (immediate)
frame16
,
// == -1 (immediate)
sensor
->
i2c_addr
,
sensor_register_overwrites
[
2
*
i
],
sensor_register_overwrites
[
2
*
i
],
sensor_register_overwrites
[
2
*
i
+
1
]);
sensor_register_overwrites
[
2
*
i
+
1
]);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x,0x%x,0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
sensor_register_overwrites
[
2
*
i
],
(
int
)
sensor_register_overwrites
[
2
*
i
+
1
]);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x,0x%x,0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
sensor_register_overwrites
[
2
*
i
],
(
int
)
sensor_register_overwrites
[
2
*
i
+
1
]);
...
@@ -1105,7 +1106,7 @@ int mt9x001_pgm_window_common (int sensor_port, ///< sensor port
...
@@ -1105,7 +1106,7 @@ int mt9x001_pgm_window_common (int sensor_port, ///< sensor port
}
}
// program sensor width
// program sensor width
if
((
ww
-
1
)
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_WIDTH
])
{
if
((
ww
-
1
)
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_WIDTH
])
{
SET_SENSOR_MBPAR
(
sensor_port
,
frame16
,
sensor
->
i2c_addr
,
P_MT9X001_WIDTH
,
ww
-
1
);
SET_SENSOR_MBPAR
_LUT
(
sensor_port
,
frame16
,
P_MT9X001_WIDTH
,
ww
-
1
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_WIDTH
,
(
int
)
ww
-
1
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_WIDTH
,
(
int
)
ww
-
1
);
}
}
// height
// height
...
@@ -1117,7 +1118,7 @@ int mt9x001_pgm_window_common (int sensor_port, ///< sensor port
...
@@ -1117,7 +1118,7 @@ int mt9x001_pgm_window_common (int sensor_port, ///< sensor port
}
}
// program sensor height
// program sensor height
if
((
wh
-
1
)
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_HEIGHT
])
{
if
((
wh
-
1
)
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_HEIGHT
])
{
SET_SENSOR_MBPAR
(
sensor_port
,
frame16
,
sensor
->
i2c_addr
,
P_MT9X001_HEIGHT
,
wh
-
1
);
SET_SENSOR_MBPAR
_LUT
(
sensor_port
,
frame16
,
P_MT9X001_HEIGHT
,
wh
-
1
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_HEIGHT
,
(
int
)
wh
-
1
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_HEIGHT
,
(
int
)
wh
-
1
);
}
}
// Margins
// Margins
...
@@ -1165,13 +1166,13 @@ int mt9x001_pgm_window_common (int sensor_port, ///< sensor port
...
@@ -1165,13 +1166,13 @@ int mt9x001_pgm_window_common (int sensor_port, ///< sensor port
}
}
// Program sensor left margin
// Program sensor left margin
if
(
wl
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_COLSTART
])
{
if
(
wl
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_COLSTART
])
{
SET_SENSOR_MBPAR
(
sensor_port
,
frame16
,
sensor
->
i2c_addr
,
P_MT9X001_COLSTART
,
wl
);
SET_SENSOR_MBPAR
_LUT
(
sensor_port
,
frame16
,
P_MT9X001_COLSTART
,
wl
);
dev_dbg
(
g_dev_ptr
,
"{%d} XSET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_COLSTART
,
(
int
)
wl
);
dev_dbg
(
g_dev_ptr
,
"{%d} XSET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_COLSTART
,
(
int
)
wl
);
}
}
// Program sensor top margin
// Program sensor top margin
if
(
wt
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_ROWSTART
])
{
if
(
wt
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_ROWSTART
])
{
SET_SENSOR_MBPAR
(
sensor_port
,
frame16
,
sensor
->
i2c_addr
,
P_MT9X001_ROWSTART
,
wt
);
SET_SENSOR_MBPAR
_LUT
(
sensor_port
,
frame16
,
P_MT9X001_ROWSTART
,
wt
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%0x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_ROWSTART
,(
int
)
wt
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%0x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_ROWSTART
,(
int
)
wt
);
}
}
///TODO:Get rid of get_sensor_i2c_regs16 !!!
///TODO:Get rid of get_sensor_i2c_regs16 !!!
...
@@ -1179,19 +1180,19 @@ int mt9x001_pgm_window_common (int sensor_port, ///< sensor port
...
@@ -1179,19 +1180,19 @@ int mt9x001_pgm_window_common (int sensor_port, ///< sensor port
if
((
styp
==
MT9T_TYP
)
||
(
styp
==
MT9P_TYP
))
{
// 3MPix and 5MPix sensors
if
((
styp
==
MT9T_TYP
)
||
(
styp
==
MT9P_TYP
))
{
// 3MPix and 5MPix sensors
v
=
(
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_RAM
]
&
0xff88
)
|
((
bv
-
1
)
<<
4
)
|
(
dv
-
1
)
;
v
=
(
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_RAM
]
&
0xff88
)
|
((
bv
-
1
)
<<
4
)
|
(
dv
-
1
)
;
if
(
v
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_RAM
])
{
if
(
v
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_RAM
])
{
SET_SENSOR_PAR
(
sensor_port
,
frame16
,
sensor
->
i2c_addr
,
P_MT9X001_RAM
,
v
);
SET_SENSOR_PAR
_LUT
(
sensor_port
,
frame16
,
P_MT9X001_RAM
,
v
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_PAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_RAM
,
(
int
)
v
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_PAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_RAM
,
(
int
)
v
);
}
}
v
=
(
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_CAM
]
&
0xff88
)
|
((
bh
-
1
)
<<
4
)
|
(
dh
-
1
);
v
=
(
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_CAM
]
&
0xff88
)
|
((
bh
-
1
)
<<
4
)
|
(
dh
-
1
);
if
(
v
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_CAM
])
{
if
(
v
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_CAM
])
{
SET_SENSOR_PAR
(
sensor_port
,
frame16
,
sensor
->
i2c_addr
,
P_MT9X001_CAM
,
v
);
SET_SENSOR_PAR
_LUT
(
sensor_port
,
frame16
,
P_MT9X001_CAM
,
v
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_PAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_CAM
,
(
int
)
v
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_PAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_CAM
,
(
int
)
v
);
}
}
v
=
(
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_RMODE2
]
&
0x3fff
)
|
// preserve other bits from shadows
v
=
(
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_RMODE2
]
&
0x3fff
)
|
// preserve other bits from shadows
(
flipX
?
(
1
<<
14
)
:
0
)
|
// FLIPH - will control just alternative rows
(
flipX
?
(
1
<<
14
)
:
0
)
|
// FLIPH - will control just alternative rows
(
flipY
?
(
1
<<
15
)
:
0
)
;
// FLIPV
(
flipY
?
(
1
<<
15
)
:
0
)
;
// FLIPV
if
(
v
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_RMODE2
])
{
if
(
v
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_RMODE2
])
{
SET_SENSOR_MBPAR
(
sensor_port
,
frame16
,
sensor
->
i2c_addr
,
P_MT9X001_RMODE2
,
v
);
SET_SENSOR_MBPAR
_LUT
(
sensor_port
,
frame16
,
P_MT9X001_RMODE2
,
v
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_RMODE2
,
(
int
)
v
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_RMODE2
,
(
int
)
v
);
}
}
...
@@ -1202,7 +1203,7 @@ int mt9x001_pgm_window_common (int sensor_port, ///< sensor port
...
@@ -1202,7 +1203,7 @@ int mt9x001_pgm_window_common (int sensor_port, ///< sensor port
((
dh
==
8
)
?
(
1
<<
4
)
:
0
)
|
// Column skip 8
((
dh
==
8
)
?
(
1
<<
4
)
:
0
)
|
// Column skip 8
((
dv
==
8
)
?
(
1
<<
5
)
:
0
)
;
// Row skip 8
((
dv
==
8
)
?
(
1
<<
5
)
:
0
)
;
// Row skip 8
if
(
v
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_RMODE1
])
{
if
(
v
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_RMODE1
])
{
SET_SENSOR_MBPAR
(
sensor_port
,
frame16
,
sensor
->
i2c_addr
,
P_MT9X001_RMODE1
,
v
);
SET_SENSOR_MBPAR
_LUT
(
sensor_port
,
frame16
,
P_MT9X001_RMODE1
,
v
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_RMODE1
,
(
int
)
v
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_RMODE1
,
(
int
)
v
);
}
}
v
=
(
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_RMODE2
]
&
0x3fe7
)
|
// preserve other bits from shadows
v
=
(
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_RMODE2
]
&
0x3fe7
)
|
// preserve other bits from shadows
...
@@ -1211,7 +1212,7 @@ int mt9x001_pgm_window_common (int sensor_port, ///< sensor port
...
@@ -1211,7 +1212,7 @@ int mt9x001_pgm_window_common (int sensor_port, ///< sensor port
(
flipX
?
(
1
<<
14
)
:
0
)
|
// FLIPH - will control just alternative rows
(
flipX
?
(
1
<<
14
)
:
0
)
|
// FLIPH - will control just alternative rows
(
flipY
?
(
1
<<
15
)
:
0
)
;
// FLIPV
(
flipY
?
(
1
<<
15
)
:
0
)
;
// FLIPV
if
(
v
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_RMODE2
])
{
if
(
v
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_RMODE2
])
{
SET_SENSOR_MBPAR
(
sensor_port
,
frame16
,
sensor
->
i2c_addr
,
P_MT9X001_RMODE2
,
v
);
SET_SENSOR_MBPAR
_LUT
(
sensor_port
,
frame16
,
P_MT9X001_RMODE2
,
v
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_RMODE2
,
(
int
)
v
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_RMODE2
,
(
int
)
v
);
}
}
...
@@ -1384,7 +1385,7 @@ int mt9x001_pgm_limitfps (int sensor_port, ///< sensor port numb
...
@@ -1384,7 +1385,7 @@ int mt9x001_pgm_limitfps (int sensor_port, ///< sensor port numb
// schedule updating P_MT9X001_HORBLANK senosr register and shadow FIXME: Seems hor_blank is too high. is the width itself subtracted?
// schedule updating P_MT9X001_HORBLANK senosr register and shadow FIXME: Seems hor_blank is too high. is the width itself subtracted?
if
(
hor_blank
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_HORBLANK
])
{
if
(
hor_blank
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_HORBLANK
])
{
dev_dbg
(
g_dev_ptr
,
"{%d} hor_blank =%d(0x%x), thispars->pars[P_SENSOR_REGS+P_MT9X001_HORBLANK]=%d(0x%x)
\n
"
,
sensor_port
,
hor_blank
,
hor_blank
,(
int
)
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_HORBLANK
],(
int
)
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_HORBLANK
]);
dev_dbg
(
g_dev_ptr
,
"{%d} hor_blank =%d(0x%x), thispars->pars[P_SENSOR_REGS+P_MT9X001_HORBLANK]=%d(0x%x)
\n
"
,
sensor_port
,
hor_blank
,
hor_blank
,(
int
)
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_HORBLANK
],(
int
)
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_HORBLANK
]);
SET_SENSOR_MBPAR
(
sensor_port
,
frame16
,
sensor
->
i2c_addr
,
P_MT9X001_HORBLANK
,
hor_blank
);
SET_SENSOR_MBPAR
_LUT
(
sensor_port
,
frame16
,
P_MT9X001_HORBLANK
,
hor_blank
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_HORBLANK
,
(
int
)
hor_blank
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_HORBLANK
,
(
int
)
hor_blank
);
}
}
// Now calculate P_PERIOD (extending it as needed)
// Now calculate P_PERIOD (extending it as needed)
...
@@ -1469,7 +1470,7 @@ int mt9x001_pgm_limitfps (int sensor_port, ///< sensor port numb
...
@@ -1469,7 +1470,7 @@ int mt9x001_pgm_limitfps (int sensor_port, ///< sensor port numb
// schedule updating P_MT9X001_VERTBLANK sensor register and shadow
// schedule updating P_MT9X001_VERTBLANK sensor register and shadow
dev_dbg
(
g_dev_ptr
,
"{%d} thispars->pars[P_SENSOR_REGS+P_MT9X001_VERTBLANK] =%d(0x%x), vert_blank=%d(0x%x)
\n
"
,
sensor_port
,(
int
)
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_VERTBLANK
],(
int
)
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_VERTBLANK
],
vert_blank
,
vert_blank
);
dev_dbg
(
g_dev_ptr
,
"{%d} thispars->pars[P_SENSOR_REGS+P_MT9X001_VERTBLANK] =%d(0x%x), vert_blank=%d(0x%x)
\n
"
,
sensor_port
,(
int
)
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_VERTBLANK
],(
int
)
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_VERTBLANK
],
vert_blank
,
vert_blank
);
if
(
vert_blank
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_VERTBLANK
])
{
if
(
vert_blank
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_VERTBLANK
])
{
SET_SENSOR_MBPAR
(
sensor_port
,
frame16
,
sensor
->
i2c_addr
,
P_MT9X001_VERTBLANK
,
vert_blank
);
SET_SENSOR_MBPAR
_LUT
(
sensor_port
,
frame16
,
P_MT9X001_VERTBLANK
,
vert_blank
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MPAR(0x%x, 0x%x,0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_VERTBLANK
,
(
int
)
vert_blank
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MPAR(0x%x, 0x%x,0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_VERTBLANK
,
(
int
)
vert_blank
);
}
}
if
(
nupdate
)
setFramePars
(
sensor_port
,
thispars
,
nupdate
,
pars_to_update
);
// save changes to gains and sensor register shadows
if
(
nupdate
)
setFramePars
(
sensor_port
,
thispars
,
nupdate
,
pars_to_update
);
// save changes to gains and sensor register shadows
...
@@ -1637,12 +1638,12 @@ int mt9x001_pgm_exposure (int sensor_port, ///< sensor port
...
@@ -1637,12 +1638,12 @@ int mt9x001_pgm_exposure (int sensor_port, ///< sensor port
// schedule updating P_MT9X001_VERTBLANK sensor register and shadow
// schedule updating P_MT9X001_VERTBLANK sensor register and shadow
// high word of shutter width (>=3MPix)
// high word of shutter width (>=3MPix)
if
(((
styp
==
MT9T_TYP
)
||
(
styp
==
MT9P_TYP
))
&&
((
video_exposure
>>
16
)
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_SHTRWDTHU
]))
{
if
(((
styp
==
MT9T_TYP
)
||
(
styp
==
MT9P_TYP
))
&&
((
video_exposure
>>
16
)
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_SHTRWDTHU
]))
{
SET_SENSOR_MBPAR
(
sensor_port
,
frame16
,
sensor
->
i2c_addr
,
P_MT9X001_SHTRWDTHU
,
video_exposure
>>
16
);
SET_SENSOR_MBPAR
_LUT
(
sensor_port
,
frame16
,
P_MT9X001_SHTRWDTHU
,
video_exposure
>>
16
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_SHTRWDTHU
,
(
int
)
(
video_exposure
>>
16
));
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_SHTRWDTHU
,
(
int
)
(
video_exposure
>>
16
));
}
}
// low word of shutter width (all sensors)
// low word of shutter width (all sensors)
if
((
video_exposure
&
0xffff
)
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_SHTRWDTH
])
{
if
((
video_exposure
&
0xffff
)
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_SHTRWDTH
])
{
SET_SENSOR_MBPAR
(
sensor_port
,
frame16
,
sensor
->
i2c_addr
,
P_MT9X001_SHTRWDTH
,
video_exposure
&
0xffff
);
SET_SENSOR_MBPAR
_LUT
(
sensor_port
,
frame16
,
P_MT9X001_SHTRWDTH
,
video_exposure
&
0xffff
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_SHTRWDTH
,
(
int
)
(
video_exposure
&
0xffff
));
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_SHTRWDTH
,
(
int
)
(
video_exposure
&
0xffff
));
}
}
// dev_dbg(g_dev_ptr,"{%d} nupdate=0x%x\n",sensor_port, (int) nupdate);
// dev_dbg(g_dev_ptr,"{%d} nupdate=0x%x\n",sensor_port, (int) nupdate);
...
@@ -1937,7 +1938,7 @@ int mt9x001_pgm_gains (int sensor_port, ///< sensor port numb
...
@@ -1937,7 +1938,7 @@ int mt9x001_pgm_gains (int sensor_port, ///< sensor port numb
maxAnaGain
);
maxAnaGain
);
// apply sensor register gain red if it was changed
// apply sensor register gain red if it was changed
if
(
newRegGain
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_RED
])
{
if
(
newRegGain
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_RED
])
{
SET_SENSOR_MBPAR
(
sensor_port
,
frame16
,
sensor
->
i2c_addr
,
P_MT9X001_RED
,
newRegGain
);
SET_SENSOR_MBPAR
_LUT
(
sensor_port
,
frame16
,
P_MT9X001_RED
,
newRegGain
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_RED
,
(
int
)
newRegGain
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_RED
,
(
int
)
newRegGain
);
}
}
// schedule application of (residual after analog gain adjustment) digital gain to the red channel
// schedule application of (residual after analog gain adjustment) digital gain to the red channel
...
@@ -1955,7 +1956,7 @@ int mt9x001_pgm_gains (int sensor_port, ///< sensor port numb
...
@@ -1955,7 +1956,7 @@ int mt9x001_pgm_gains (int sensor_port, ///< sensor port numb
maxAnaGain
);
maxAnaGain
);
// apply sensor register gain green if it was changed
// apply sensor register gain green if it was changed
if
(
newRegGain
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_GREEN1
])
{
if
(
newRegGain
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_GREEN1
])
{
SET_SENSOR_MBPAR
(
sensor_port
,
frame16
,
sensor
->
i2c_addr
,
P_MT9X001_GREEN1
,
newRegGain
);
SET_SENSOR_MBPAR
_LUT
(
sensor_port
,
frame16
,
P_MT9X001_GREEN1
,
newRegGain
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_GREEN1
,
(
int
)
newRegGain
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_GREEN1
,
(
int
)
newRegGain
);
}
}
// schedule application of (residual after analog gain adjustment) digital gain to the green channel
// schedule application of (residual after analog gain adjustment) digital gain to the green channel
...
@@ -1972,7 +1973,7 @@ int mt9x001_pgm_gains (int sensor_port, ///< sensor port numb
...
@@ -1972,7 +1973,7 @@ int mt9x001_pgm_gains (int sensor_port, ///< sensor port numb
maxAnaGain
);
maxAnaGain
);
// apply sensor register gain blue if it was changed
// apply sensor register gain blue if it was changed
if
(
newRegGain
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_BLUE
])
{
if
(
newRegGain
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_BLUE
])
{
SET_SENSOR_MBPAR
(
sensor_port
,
frame16
,
sensor
->
i2c_addr
,
P_MT9X001_BLUE
,
newRegGain
);
SET_SENSOR_MBPAR
_LUT
(
sensor_port
,
frame16
,
P_MT9X001_BLUE
,
newRegGain
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%0x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_BLUE
,
(
int
)
newRegGain
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%0x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_BLUE
,
(
int
)
newRegGain
);
}
}
// schedule application of (residual after analog gain adjustment) digital gain to the blue channel
// schedule application of (residual after analog gain adjustment) digital gain to the blue channel
...
@@ -1990,7 +1991,7 @@ int mt9x001_pgm_gains (int sensor_port, ///< sensor port numb
...
@@ -1990,7 +1991,7 @@ int mt9x001_pgm_gains (int sensor_port, ///< sensor port numb
maxAnaGain
);
maxAnaGain
);
// apply sensor register gain second green if it was changed
// apply sensor register gain second green if it was changed
if
(
newRegGain
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_GREEN2
])
{
if
(
newRegGain
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_GREEN2
])
{
SET_SENSOR_MBPAR
(
sensor_port
,
frame16
,
sensor
->
i2c_addr
,
P_MT9X001_GREEN2
,
newRegGain
);
SET_SENSOR_MBPAR
_LUT
(
sensor_port
,
frame16
,
P_MT9X001_GREEN2
,
newRegGain
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_GREEN2
,
(
int
)
newRegGain
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_GREEN2
,
(
int
)
newRegGain
);
}
}
// schedule application of (residual after analog gain adjustment) digital gain to the second green channel
// schedule application of (residual after analog gain adjustment) digital gain to the second green channel
...
@@ -2001,7 +2002,7 @@ int mt9x001_pgm_gains (int sensor_port, ///< sensor port numb
...
@@ -2001,7 +2002,7 @@ int mt9x001_pgm_gains (int sensor_port, ///< sensor port numb
testmode
=
thispars
->
pars
[
P_TESTSENSOR
];
// (on?0x10000:0) | (Micron_tests_mode) 0x0 - off, 0x10000..0x1000F
testmode
=
thispars
->
pars
[
P_TESTSENSOR
];
// (on?0x10000:0) | (Micron_tests_mode) 0x0 - off, 0x10000..0x1000F
testmode
=
(
testmode
&
0x10000
)
?
(((
testmode
&
0xf
)
<<
3
)
|
1
)
:
0
;
testmode
=
(
testmode
&
0x10000
)
?
(((
testmode
&
0xf
)
<<
3
)
|
1
)
:
0
;
if
(
testmode
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_TEST
])
{
if
(
testmode
!=
thispars
->
pars
[
P_SENSOR_REGS
+
P_MT9X001_TEST
])
{
SET_SENSOR_MBPAR
(
sensor_port
,
frame16
,
sensor
->
i2c_addr
,
P_MT9X001_TEST
,
testmode
)
;
SET_SENSOR_MBPAR
_LUT
(
sensor_port
,
frame16
,
P_MT9X001_TEST
,
testmode
)
;
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_TEST
,
(
int
)
testmode
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_TEST
,
(
int
)
testmode
);
}
}
...
@@ -2056,7 +2057,7 @@ int mt9x001_pgm_triggermode (int sensor_port, ///< sensor p
...
@@ -2056,7 +2057,7 @@ int mt9x001_pgm_triggermode (int sensor_port, ///< sensor p
if
(
!
(
thispars
->
pars
[
P_TRIG
]
&
4
)){
if
(
!
(
thispars
->
pars
[
P_TRIG
]
&
4
)){
frame16
=
-
1
;
frame16
=
-
1
;
}
}
SET_SENSOR_MBPAR
(
sensor_port
,
frame16
,
sensor
->
i2c_addr
,
P_MT9X001_RMODE1
,
newreg
);
SET_SENSOR_MBPAR
_LUT
(
sensor_port
,
frame16
,
P_MT9X001_RMODE1
,
newreg
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_RMODE1
,
(
int
)
newreg
);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBPAR(0x%x, 0x%x, 0x%x, 0x%x, 0x%x)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
(
int
)
sensor
->
i2c_addr
,
(
int
)
P_MT9X001_RMODE1
,
(
int
)
newreg
);
}
}
if
(
nupdate
)
setFramePars
(
sensor_port
,
thispars
,
nupdate
,
pars_to_update
);
// save changes to gains and sensor register shadows
if
(
nupdate
)
setFramePars
(
sensor_port
,
thispars
,
nupdate
,
pars_to_update
);
// save changes to gains and sensor register shadows
...
@@ -2121,7 +2122,7 @@ int mt9x001_pgm_sensorregs (int sensor_port, ///< sensor port
...
@@ -2121,7 +2122,7 @@ int mt9x001_pgm_sensorregs (int sensor_port, ///< sensor port
for
(
index
=
(
index32
<<
5
);
mask
;
index
++
,
mask
>>=
1
)
{
for
(
index
=
(
index32
<<
5
);
mask
;
index
++
,
mask
>>=
1
)
{
if
(
mask
&
1
)
{
if
(
mask
&
1
)
{
// apply broadcast register write and schedule change the individual ones (if they are not modified)
// apply broadcast register write and schedule change the individual ones (if they are not modified)
SET_SENSOR_MBOPAR
(
sensor_port
,
frame16
,
sensor
->
i2c_addr
,
(
index
-
P_SENSOR_REGS
),
thispars
->
pars
[
index
]);
SET_SENSOR_MBOPAR
_LUT
(
sensor_port
,
frame16
,
(
index
-
P_SENSOR_REGS
),
thispars
->
pars
[
index
]);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBOPAR(0x%x, 0x%x, 0x%lx,0x%x,0x%lx)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
sensor
->
i2c_addr
,(
index
-
P_SENSOR_REGS
),
thispars
->
pars
[
index
]);
dev_dbg
(
g_dev_ptr
,
"{%d} SET_SENSOR_MBOPAR(0x%x, 0x%x, 0x%lx,0x%x,0x%lx)
\n
"
,
sensor_port
,
sensor_port
,
frame16
,
sensor
->
i2c_addr
,(
index
-
P_SENSOR_REGS
),
thispars
->
pars
[
index
]);
}
}
}
}
...
@@ -2141,9 +2142,9 @@ int mt9x001_pgm_sensorregs (int sensor_port, ///< sensor port
...
@@ -2141,9 +2142,9 @@ int mt9x001_pgm_sensorregs (int sensor_port, ///< sensor port
for
(
index
=
(
index32
<<
5
);
mask
&&
(
index
<
((
P_MULTI_REGS
)
+
((
MAX_SENSORS
)
*
(
P_MULTI_NUMREGS
))));
index
++
,
mask
>>=
1
)
{
for
(
index
=
(
index32
<<
5
);
mask
&&
(
index
<
((
P_MULTI_REGS
)
+
((
MAX_SENSORS
)
*
(
P_MULTI_NUMREGS
))));
index
++
,
mask
>>=
1
)
{
if
(
mask
&
1
)
{
if
(
mask
&
1
)
{
if
((
MULTIRVRSREG
(
sensor_port
,
index
))
>
0
)
{
if
((
MULTIRVRSREG
(
sensor_port
,
index
))
>
0
)
{
X3X3_I2C_SEND2
(
sensor_port
,
X3X3_I2C_SEND2
_LUT
(
sensor_port
,
frame16
,
frame16
,
sensor
->
i2c_addr
+
((
MULTIRVRSREG
(
sensor_port
,
index
)
>>
16
)
*
I2C359_INC
),
(
MULTIRVRSREG
(
sensor_port
,
index
)
>>
16
),
((
MULTIRVRSREG
(
sensor_port
,
index
)
&
0xffff
)
-
P_SENSOR_REGS
),
((
MULTIRVRSREG
(
sensor_port
,
index
)
&
0xffff
)
-
P_SENSOR_REGS
),
thispars
->
pars
[
index
]);
thispars
->
pars
[
index
]);
dev_dbg
(
g_dev_ptr
,
" X3X3_I2C_SEND2(0x%x, 0x%x, 0x%lx,0x%x,0x%lx)
\n
"
,
dev_dbg
(
g_dev_ptr
,
" X3X3_I2C_SEND2(0x%x, 0x%x, 0x%lx,0x%x,0x%lx)
\n
"
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment