Loading src/drivers/elphel/x393_videomem.c +30 −74 Original line number Original line Diff line number Diff line Loading @@ -100,6 +100,8 @@ static int hardware_initialized = 0; struct raw_info_t { struct raw_info_t { unsigned long frame_num[4]; unsigned long frame_num[4]; unsigned long sec[4]; unsigned long usec[4]; int width[4]; int width[4]; int height[4]; int height[4]; int bpp[4]; int bpp[4]; Loading @@ -108,6 +110,8 @@ struct raw_info_t { static struct raw_info_t raw_info = { static struct raw_info_t raw_info = { .frame_num = {0,0,0,0}, .frame_num = {0,0,0,0}, .sec = {0,0,0,0}, .usec = {0,0,0,0}, .width = {0,0,0,0}, .width = {0,0,0,0}, .height = {0,0,0,0}, .height = {0,0,0,0}, .bpp = {0,0,0,0}, .bpp = {0,0,0,0}, Loading Loading @@ -703,6 +707,7 @@ static inline int membridge_is_busy(void){ int membridge_start(int sensor_port, unsigned long target_frame){ int membridge_start(int sensor_port, unsigned long target_frame){ unsigned long frame_num; unsigned long frame_num; unsigned long seconds, useconds; //unsigned long frame_num_this, frame_num_past; //unsigned long frame_num_this, frame_num_past; int p_color, p_pf_height; int p_color, p_pf_height; int width_marg, height_marg, width_bursts; int width_marg, height_marg, width_bursts; Loading Loading @@ -771,6 +776,9 @@ int membridge_start(int sensor_port, unsigned long target_frame){ // if went through - get frame number and parameters // if went through - get frame number and parameters frame_num = getThisFrameNumber(sensor_port); frame_num = getThisFrameNumber(sensor_port); seconds = get_globalParam(sensor_port,G_SECONDS); useconds = get_globalParam(sensor_port,G_MICROSECONDS); //frame_num_this = get_imageParamsThis(sensor_port,P_FRAME); //frame_num_this = get_imageParamsThis(sensor_port,P_FRAME); //frame_num_past = get_imageParamsPast(sensor_port,P_FRAME,frame_num); //frame_num_past = get_imageParamsPast(sensor_port,P_FRAME,frame_num); Loading Loading @@ -841,7 +849,9 @@ int membridge_start(int sensor_port, unsigned long target_frame){ // fill out raw_info // fill out raw_info raw_info.frame_num[sensor_port] = frame_num; raw_info.frame_num[sensor_port] = frame_num; raw_info.width[sensor_port] = width_marg; raw_info.sec[sensor_port] = seconds; raw_info.usec[sensor_port] = useconds; raw_info.width[sensor_port] = width_bursts<<4; raw_info.height[sensor_port] = height_marg; raw_info.height[sensor_port] = height_marg; raw_info.bpp[sensor_port] = 8; raw_info.bpp[sensor_port] = 8; raw_info.offset[sensor_port] = 0; raw_info.offset[sensor_port] = 0; Loading Loading @@ -1153,17 +1163,6 @@ static ssize_t get_video_frame_num(struct device *dev, struct device_attribute * return sprintf(buf,"%d\n", video_frame_number); return sprintf(buf,"%d\n", video_frame_number); } } static char * print_raw_info(char *buf, int sensor_port){ buf += sprintf(buf,"absolute frame number = %lu\n",raw_info.frame_num[sensor_port]); buf += sprintf(buf,"width = %d\n" ,raw_info.width[sensor_port]); buf += sprintf(buf,"height = %d\n" ,raw_info.height[sensor_port]); buf += sprintf(buf,"bits per pixel = %d\n" ,raw_info.bpp[sensor_port]); buf += sprintf(buf,"buffer offset = 0x%08x\n" ,raw_info.offset[sensor_port]); return buf; } /** /** raw frame info file format (for read): raw frame info file format (for read): Loading @@ -1173,35 +1172,19 @@ raw frame info file format (for read): bits per pixel = xxx bits per pixel = xxx */ */ static ssize_t get_raw_frame_info0(struct device *dev, struct device_attribute *attr, char *buf) static ssize_t get_raw_frame_info(struct device *dev, struct device_attribute *attr, char *buf) { { int sensor_port = 0; char * buf0=buf; char * buf0=buf; buf = print_raw_info(buf,sensor_port); int sensor_port = get_channel_from_name(attr); return buf-buf0; } static ssize_t get_raw_frame_info1(struct device *dev, struct device_attribute *attr, char *buf) buf += sprintf(buf,"absolute frame number = %lu\n",raw_info.frame_num[sensor_port]); { buf += sprintf(buf,"timestamp,sec = %lu\n" ,raw_info.sec[sensor_port]); int sensor_port = 1; buf += sprintf(buf,"timestamp,usec = %lu\n" ,raw_info.usec[sensor_port]); char * buf0=buf; buf += sprintf(buf,"width = %d\n" ,raw_info.width[sensor_port]); buf = print_raw_info(buf,sensor_port); buf += sprintf(buf,"height = %d\n" ,raw_info.height[sensor_port]); return buf-buf0; buf += sprintf(buf,"bits per pixel = %d\n" ,raw_info.bpp[sensor_port]); } buf += sprintf(buf,"buffer offset = 0x%08x\n" ,raw_info.offset[sensor_port]); static ssize_t get_raw_frame_info2(struct device *dev, struct device_attribute *attr, char *buf) { int sensor_port = 2; char * buf0=buf; buf = print_raw_info(buf,sensor_port); return buf-buf0; } static ssize_t get_raw_frame_info3(struct device *dev, struct device_attribute *attr, char *buf) { int sensor_port = 3; char * buf0=buf; buf = print_raw_info(buf,sensor_port); return buf-buf0; return buf-buf0; } } Loading Loading @@ -1239,36 +1222,9 @@ static ssize_t set_membridge_status_reg(struct device *dev, struct device_attrib return count; return count; } } static ssize_t set_membridge0(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) static ssize_t set_membridge(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { int sensor_port = 0; unsigned long target_frame; sscanf(buf, "%lu", &target_frame); membridge_start(sensor_port,target_frame); return count; } static ssize_t set_membridge1(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { int sensor_port = 1; unsigned long target_frame; sscanf(buf, "%lu", &target_frame); membridge_start(sensor_port,target_frame); return count; } static ssize_t set_membridge2(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { int sensor_port = 2; unsigned long target_frame; sscanf(buf, "%lu", &target_frame); membridge_start(sensor_port,target_frame); return count; } static ssize_t set_membridge3(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { { int sensor_port = 3; int sensor_port = get_channel_from_name(attr); unsigned long target_frame; unsigned long target_frame; sscanf(buf, "%lu", &target_frame); sscanf(buf, "%lu", &target_frame); membridge_start(sensor_port,target_frame); membridge_start(sensor_port,target_frame); Loading Loading @@ -1299,17 +1255,17 @@ static DEVICE_ATTR(frames_in_buffer2, SYSFS_PERMISSIONS, show_frame static DEVICE_ATTR(frames_in_buffer3, SYSFS_PERMISSIONS, show_frames_in_buffer, store_frames_in_buffer); static DEVICE_ATTR(frames_in_buffer3, SYSFS_PERMISSIONS, show_frames_in_buffer, store_frames_in_buffer); static DEVICE_ATTR(membridge_status, SYSFS_PERMISSIONS, get_membridge_status, set_membridge_status_reg); static DEVICE_ATTR(membridge_status, SYSFS_PERMISSIONS, get_membridge_status, set_membridge_status_reg); static DEVICE_ATTR(membridge_start0, SYSFS_PERMISSIONS, NULL, set_membridge0); static DEVICE_ATTR(membridge_start0, SYSFS_PERMISSIONS, NULL, set_membridge); static DEVICE_ATTR(membridge_start1, SYSFS_PERMISSIONS, NULL, set_membridge1); static DEVICE_ATTR(membridge_start1, SYSFS_PERMISSIONS, NULL, set_membridge); static DEVICE_ATTR(membridge_start2, SYSFS_PERMISSIONS, NULL, set_membridge2); static DEVICE_ATTR(membridge_start2, SYSFS_PERMISSIONS, NULL, set_membridge); static DEVICE_ATTR(membridge_start3, SYSFS_PERMISSIONS, NULL, set_membridge3); 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_info0, 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_info1, 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_info2, 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_info3, NULL); static DEVICE_ATTR(raw_frame_info3, SYSFS_PERMISSIONS, get_raw_frame_info, NULL); static struct attribute *root_dev_attrs[] = { static struct attribute *root_dev_attrs[] = { &dev_attr_frame_start0.attr, &dev_attr_frame_start0.attr, Loading Loading
src/drivers/elphel/x393_videomem.c +30 −74 Original line number Original line Diff line number Diff line Loading @@ -100,6 +100,8 @@ static int hardware_initialized = 0; struct raw_info_t { struct raw_info_t { unsigned long frame_num[4]; unsigned long frame_num[4]; unsigned long sec[4]; unsigned long usec[4]; int width[4]; int width[4]; int height[4]; int height[4]; int bpp[4]; int bpp[4]; Loading @@ -108,6 +110,8 @@ struct raw_info_t { static struct raw_info_t raw_info = { static struct raw_info_t raw_info = { .frame_num = {0,0,0,0}, .frame_num = {0,0,0,0}, .sec = {0,0,0,0}, .usec = {0,0,0,0}, .width = {0,0,0,0}, .width = {0,0,0,0}, .height = {0,0,0,0}, .height = {0,0,0,0}, .bpp = {0,0,0,0}, .bpp = {0,0,0,0}, Loading Loading @@ -703,6 +707,7 @@ static inline int membridge_is_busy(void){ int membridge_start(int sensor_port, unsigned long target_frame){ int membridge_start(int sensor_port, unsigned long target_frame){ unsigned long frame_num; unsigned long frame_num; unsigned long seconds, useconds; //unsigned long frame_num_this, frame_num_past; //unsigned long frame_num_this, frame_num_past; int p_color, p_pf_height; int p_color, p_pf_height; int width_marg, height_marg, width_bursts; int width_marg, height_marg, width_bursts; Loading Loading @@ -771,6 +776,9 @@ int membridge_start(int sensor_port, unsigned long target_frame){ // if went through - get frame number and parameters // if went through - get frame number and parameters frame_num = getThisFrameNumber(sensor_port); frame_num = getThisFrameNumber(sensor_port); seconds = get_globalParam(sensor_port,G_SECONDS); useconds = get_globalParam(sensor_port,G_MICROSECONDS); //frame_num_this = get_imageParamsThis(sensor_port,P_FRAME); //frame_num_this = get_imageParamsThis(sensor_port,P_FRAME); //frame_num_past = get_imageParamsPast(sensor_port,P_FRAME,frame_num); //frame_num_past = get_imageParamsPast(sensor_port,P_FRAME,frame_num); Loading Loading @@ -841,7 +849,9 @@ int membridge_start(int sensor_port, unsigned long target_frame){ // fill out raw_info // fill out raw_info raw_info.frame_num[sensor_port] = frame_num; raw_info.frame_num[sensor_port] = frame_num; raw_info.width[sensor_port] = width_marg; raw_info.sec[sensor_port] = seconds; raw_info.usec[sensor_port] = useconds; raw_info.width[sensor_port] = width_bursts<<4; raw_info.height[sensor_port] = height_marg; raw_info.height[sensor_port] = height_marg; raw_info.bpp[sensor_port] = 8; raw_info.bpp[sensor_port] = 8; raw_info.offset[sensor_port] = 0; raw_info.offset[sensor_port] = 0; Loading Loading @@ -1153,17 +1163,6 @@ static ssize_t get_video_frame_num(struct device *dev, struct device_attribute * return sprintf(buf,"%d\n", video_frame_number); return sprintf(buf,"%d\n", video_frame_number); } } static char * print_raw_info(char *buf, int sensor_port){ buf += sprintf(buf,"absolute frame number = %lu\n",raw_info.frame_num[sensor_port]); buf += sprintf(buf,"width = %d\n" ,raw_info.width[sensor_port]); buf += sprintf(buf,"height = %d\n" ,raw_info.height[sensor_port]); buf += sprintf(buf,"bits per pixel = %d\n" ,raw_info.bpp[sensor_port]); buf += sprintf(buf,"buffer offset = 0x%08x\n" ,raw_info.offset[sensor_port]); return buf; } /** /** raw frame info file format (for read): raw frame info file format (for read): Loading @@ -1173,35 +1172,19 @@ raw frame info file format (for read): bits per pixel = xxx bits per pixel = xxx */ */ static ssize_t get_raw_frame_info0(struct device *dev, struct device_attribute *attr, char *buf) static ssize_t get_raw_frame_info(struct device *dev, struct device_attribute *attr, char *buf) { { int sensor_port = 0; char * buf0=buf; char * buf0=buf; buf = print_raw_info(buf,sensor_port); int sensor_port = get_channel_from_name(attr); return buf-buf0; } static ssize_t get_raw_frame_info1(struct device *dev, struct device_attribute *attr, char *buf) buf += sprintf(buf,"absolute frame number = %lu\n",raw_info.frame_num[sensor_port]); { buf += sprintf(buf,"timestamp,sec = %lu\n" ,raw_info.sec[sensor_port]); int sensor_port = 1; buf += sprintf(buf,"timestamp,usec = %lu\n" ,raw_info.usec[sensor_port]); char * buf0=buf; buf += sprintf(buf,"width = %d\n" ,raw_info.width[sensor_port]); buf = print_raw_info(buf,sensor_port); buf += sprintf(buf,"height = %d\n" ,raw_info.height[sensor_port]); return buf-buf0; buf += sprintf(buf,"bits per pixel = %d\n" ,raw_info.bpp[sensor_port]); } buf += sprintf(buf,"buffer offset = 0x%08x\n" ,raw_info.offset[sensor_port]); static ssize_t get_raw_frame_info2(struct device *dev, struct device_attribute *attr, char *buf) { int sensor_port = 2; char * buf0=buf; buf = print_raw_info(buf,sensor_port); return buf-buf0; } static ssize_t get_raw_frame_info3(struct device *dev, struct device_attribute *attr, char *buf) { int sensor_port = 3; char * buf0=buf; buf = print_raw_info(buf,sensor_port); return buf-buf0; return buf-buf0; } } Loading Loading @@ -1239,36 +1222,9 @@ static ssize_t set_membridge_status_reg(struct device *dev, struct device_attrib return count; return count; } } static ssize_t set_membridge0(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) static ssize_t set_membridge(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { int sensor_port = 0; unsigned long target_frame; sscanf(buf, "%lu", &target_frame); membridge_start(sensor_port,target_frame); return count; } static ssize_t set_membridge1(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { int sensor_port = 1; unsigned long target_frame; sscanf(buf, "%lu", &target_frame); membridge_start(sensor_port,target_frame); return count; } static ssize_t set_membridge2(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { int sensor_port = 2; unsigned long target_frame; sscanf(buf, "%lu", &target_frame); membridge_start(sensor_port,target_frame); return count; } static ssize_t set_membridge3(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { { int sensor_port = 3; int sensor_port = get_channel_from_name(attr); unsigned long target_frame; unsigned long target_frame; sscanf(buf, "%lu", &target_frame); sscanf(buf, "%lu", &target_frame); membridge_start(sensor_port,target_frame); membridge_start(sensor_port,target_frame); Loading Loading @@ -1299,17 +1255,17 @@ static DEVICE_ATTR(frames_in_buffer2, SYSFS_PERMISSIONS, show_frame static DEVICE_ATTR(frames_in_buffer3, SYSFS_PERMISSIONS, show_frames_in_buffer, store_frames_in_buffer); static DEVICE_ATTR(frames_in_buffer3, SYSFS_PERMISSIONS, show_frames_in_buffer, store_frames_in_buffer); static DEVICE_ATTR(membridge_status, SYSFS_PERMISSIONS, get_membridge_status, set_membridge_status_reg); static DEVICE_ATTR(membridge_status, SYSFS_PERMISSIONS, get_membridge_status, set_membridge_status_reg); static DEVICE_ATTR(membridge_start0, SYSFS_PERMISSIONS, NULL, set_membridge0); static DEVICE_ATTR(membridge_start0, SYSFS_PERMISSIONS, NULL, set_membridge); static DEVICE_ATTR(membridge_start1, SYSFS_PERMISSIONS, NULL, set_membridge1); static DEVICE_ATTR(membridge_start1, SYSFS_PERMISSIONS, NULL, set_membridge); static DEVICE_ATTR(membridge_start2, SYSFS_PERMISSIONS, NULL, set_membridge2); static DEVICE_ATTR(membridge_start2, SYSFS_PERMISSIONS, NULL, set_membridge); static DEVICE_ATTR(membridge_start3, SYSFS_PERMISSIONS, NULL, set_membridge3); 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_info0, 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_info1, 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_info2, 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_info3, NULL); static DEVICE_ATTR(raw_frame_info3, SYSFS_PERMISSIONS, get_raw_frame_info, NULL); static struct attribute *root_dev_attrs[] = { static struct attribute *root_dev_attrs[] = { &dev_attr_frame_start0.attr, &dev_attr_frame_start0.attr, Loading