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
eb8e7115
Commit
eb8e7115
authored
Jan 24, 2018
by
Oleg Dzhimiev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
finished photo finish debugging
parent
fc2e9b23
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
71 additions
and
9 deletions
+71
-9
pgm_functions.c
src/drivers/elphel/pgm_functions.c
+25
-3
x393_videomem.c
src/drivers/elphel/x393_videomem.c
+46
-6
No files found.
src/drivers/elphel/pgm_functions.c
View file @
eb8e7115
...
...
@@ -1972,7 +1972,14 @@ int pgm_memsensor (int sensor_port, ///< sensor port number (
}
width_bursts
=
(
width_marg
>>
4
)
+
((
width_marg
&
0xf
)
?
1
:
0
);
pr_debug
(
"PGM: width_marg=%d height_marg=%d width_burts=%d"
,
width_marg
,
height_marg
,
width_bursts
);
pr_debug
(
"PGM_MEMSENSOR: sport=%d width_burts=%d width_marg=%d height_marg=%d left_margin=%d top_margin=%d
\n
"
,
sensor_port
,
width_bursts
,
width_marg
,
height_marg
,
0
,
0
);
/** shorter version: */
//width_bursts = (width_marg+0xf)>>4;
...
...
@@ -2086,7 +2093,6 @@ int pgm_memcompressor (int sensor_port, ///< sensor port number (
cmprs_frame_format
.
num_macro_cols_m1
=
(
width_marg
>>
4
)
-
1
;
// before adding margins
cmprs_frame_format
.
num_macro_rows_m1
=
(
height_marg
>>
4
)
-
1
;
// before adding margins;
switch
(
thispars
->
pars
[
P_COLOR
]){
case
COLORMODE_COLOR
:
overlap
=
2
;
...
...
@@ -2096,6 +2102,9 @@ int pgm_memcompressor (int sensor_port, ///< sensor port number (
overlap
=
4
;
break
;
}
cmprs_frame_format
.
left_margin
=
cmprs_top
;
// same as top - only for 18x18 tiles to keep Bayer shift (0/1)
if
(
overlap
){
width_marg
+=
(
2
*
COLOR_MARGINS
);
if
((
thispars
->
pars
[
P_PF_HEIGHT
]
&
0xffff
)
==
0
)
{
// not a photofinish
...
...
@@ -2105,7 +2114,6 @@ int pgm_memcompressor (int sensor_port, ///< sensor port number (
}
else
{
tile_width
=
4
;
}
cmprs_frame_format
.
left_margin
=
cmprs_top
;
// same as top - only for 18x18 tiles to keep Bayer shift (0/1)
width_bursts
=
(
width_marg
>>
4
)
+
((
width_marg
&
0xf
)
?
1
:
0
);
// Adjusting for tile width. TODO: probably not needed, handled in FPGA - verify (and remove 2 next lines)
...
...
@@ -2113,6 +2121,20 @@ int pgm_memcompressor (int sensor_port, ///< sensor port number (
if
((
tile_width
>
2
)
&&
(
width_bursts
&
2
))
width_bursts
+=
2
;
tile_height
=
16
+
overlap
;
pr_debug
(
"PGM_MEMCOMPRESSOR: sport=%d width_bursts=%d width_marg=%d height_marg=%d num_macro_rows_m1=%d tile_width=%d tile_height=%d margin_left=%d margin_top=%d P_TILES=%d
\n
"
,
sensor_port
,
width_bursts
,
width_marg
,
height_marg
,
(
cmprs_frame_format
.
num_macro_rows_m1
+
1
)
<<
4
,
tile_width
,
tile_height
,
0
,
cmprs_top
,
(
cmprs_frame_format
.
num_macro_cols_m1
+
1
)
*
(
cmprs_frame_format
.
num_macro_rows_m1
+
1
)
);
setup_compressor_memory
(
sensor_port
,
// sensor port number (0..3)
width_bursts
,
// 13-bit - in 8*16=128 bit bursts
(
cmprs_frame_format
.
num_macro_rows_m1
+
1
)
<<
4
,
...
...
src/drivers/elphel/x393_videomem.c
View file @
eb8e7115
...
...
@@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*******************************************************************************/
#define DEBUG
//
#define DEBUG
#include <linux/interrupt.h>
#include <linux/platform_device.h>
#include <linux/of_device.h>
...
...
@@ -1192,6 +1192,28 @@ static ssize_t get_raw_frame_info(struct device *dev, struct device_attribute *a
return
buf
-
buf0
;
}
static
ssize_t
get_mctrl_status_chn
(
struct
device
*
dev
,
struct
device_attribute
*
attr
,
char
*
buf
)
{
int
chn
=
get_channel_from_name
(
attr
);
x393_status_mcntrl_lintile_t
status
;
switch
(
chn
){
case
1
:
status
=
x393_mcntrl_chn1_status
();
break
;
case
2
:
status
=
x393_mcntrl_chn2_status
();
break
;
case
3
:
status
=
x393_mcntrl_chn3_status
();
break
;
case
4
:
status
=
x393_mcntrl_chn4_status
();
break
;
}
return
sprintf
(
buf
,
"0x%08x
\n
"
,
status
);
}
static
ssize_t
get_cmprs_status
(
struct
device
*
dev
,
struct
device_attribute
*
attr
,
char
*
buf
)
{
x393_cmprs_status_t
status
=
x393_cmprs_status
(
get_channel_from_name
(
attr
));
return
sprintf
(
buf
,
"0x%08x
\n
"
,
status
);
}
static
ssize_t
store_frame_start
(
struct
device
*
dev
,
struct
device_attribute
*
attr
,
const
char
*
buf
,
size_t
count
)
{
sscanf
(
buf
,
"%i"
,
&
buffer_settings
.
frame_start
[
get_channel_from_name
(
attr
)]);
...
...
@@ -1264,12 +1286,22 @@ static DEVICE_ATTR(membridge_start1, SYSFS_PERMISSIONS, NULL,
static
DEVICE_ATTR
(
membridge_start2
,
SYSFS_PERMISSIONS
,
NULL
,
set_membridge
);
static
DEVICE_ATTR
(
membridge_start3
,
SYSFS_PERMISSIONS
,
NULL
,
set_membridge
);
static
DEVICE_ATTR
(
video_frame_number
,
SYSFS_PERMISSIONS
,
get_video_frame_num
,
set_video_frame_num
);
static
DEVICE_ATTR
(
video_frame_number
,
SYSFS_PERMISSIONS
,
get_video_frame_num
,
set_video_frame_num
);
static
DEVICE_ATTR
(
raw_frame_info0
,
SYSFS_PERMISSIONS
,
get_raw_frame_info
,
NULL
);
static
DEVICE_ATTR
(
raw_frame_info1
,
SYSFS_PERMISSIONS
,
get_raw_frame_info
,
NULL
);
static
DEVICE_ATTR
(
raw_frame_info2
,
SYSFS_PERMISSIONS
,
get_raw_frame_info
,
NULL
);
static
DEVICE_ATTR
(
raw_frame_info3
,
SYSFS_PERMISSIONS
,
get_raw_frame_info
,
NULL
);
static
DEVICE_ATTR
(
mctrl_status_chn1
,
SYSFS_PERMISSIONS
,
get_mctrl_status_chn
,
NULL
);
static
DEVICE_ATTR
(
mctrl_status_chn2
,
SYSFS_PERMISSIONS
,
get_mctrl_status_chn
,
NULL
);
static
DEVICE_ATTR
(
mctrl_status_chn3
,
SYSFS_PERMISSIONS
,
get_mctrl_status_chn
,
NULL
);
static
DEVICE_ATTR
(
mctrl_status_chn4
,
SYSFS_PERMISSIONS
,
get_mctrl_status_chn
,
NULL
);
static
DEVICE_ATTR
(
raw_frame_info0
,
SYSFS_PERMISSIONS
,
get_raw_frame_info
,
NULL
);
static
DEVICE_ATTR
(
raw_frame_info1
,
SYSFS_PERMISSIONS
,
get_raw_frame_info
,
NULL
);
static
DEVICE_ATTR
(
raw_frame_info2
,
SYSFS_PERMISSIONS
,
get_raw_frame_info
,
NULL
);
static
DEVICE_ATTR
(
raw_frame_info3
,
SYSFS_PERMISSIONS
,
get_raw_frame_info
,
NULL
);
static
DEVICE_ATTR
(
compressor_status0
,
SYSFS_PERMISSIONS
,
get_cmprs_status
,
NULL
);
static
DEVICE_ATTR
(
compressor_status1
,
SYSFS_PERMISSIONS
,
get_cmprs_status
,
NULL
);
static
DEVICE_ATTR
(
compressor_status2
,
SYSFS_PERMISSIONS
,
get_cmprs_status
,
NULL
);
static
DEVICE_ATTR
(
compressor_status3
,
SYSFS_PERMISSIONS
,
get_cmprs_status
,
NULL
);
static
struct
attribute
*
root_dev_attrs
[]
=
{
&
dev_attr_frame_start0
.
attr
,
...
...
@@ -1298,6 +1330,14 @@ static struct attribute *root_dev_attrs[] = {
&
dev_attr_raw_frame_info1
.
attr
,
&
dev_attr_raw_frame_info2
.
attr
,
&
dev_attr_raw_frame_info3
.
attr
,
&
dev_attr_mctrl_status_chn1
.
attr
,
&
dev_attr_mctrl_status_chn2
.
attr
,
&
dev_attr_mctrl_status_chn3
.
attr
,
&
dev_attr_mctrl_status_chn4
.
attr
,
&
dev_attr_compressor_status0
.
attr
,
&
dev_attr_compressor_status1
.
attr
,
&
dev_attr_compressor_status2
.
attr
,
&
dev_attr_compressor_status3
.
attr
,
NULL
};
...
...
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