media: atomisp: atomisp_cmd.c test ISP version in runtime
The logic there has lots of ifdef dependencies if the hardware is either ISP2400 or ISP2041. Replace them by runtime checks. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
e1ac35b39a
commit
ea419fdae5
File diff suppressed because it is too large
Load Diff
@ -40,13 +40,13 @@ struct atomisp_css_frame;
|
|||||||
#define MEMORY_SPACE_ENABLE 1
|
#define MEMORY_SPACE_ENABLE 1
|
||||||
#define INTR_IER 24
|
#define INTR_IER 24
|
||||||
#define INTR_IIR 16
|
#define INTR_IIR 16
|
||||||
#ifdef ISP2401
|
|
||||||
|
/* ISP2401 */
|
||||||
#define RUNMODE_MASK (ATOMISP_RUN_MODE_VIDEO | ATOMISP_RUN_MODE_STILL_CAPTURE \
|
#define RUNMODE_MASK (ATOMISP_RUN_MODE_VIDEO | ATOMISP_RUN_MODE_STILL_CAPTURE \
|
||||||
| ATOMISP_RUN_MODE_PREVIEW)
|
| ATOMISP_RUN_MODE_PREVIEW)
|
||||||
|
|
||||||
/* FIXME: check if can go */
|
/* FIXME: check if can go */
|
||||||
extern int atomisp_punit_hpll_freq;
|
extern int atomisp_punit_hpll_freq;
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Helper function
|
* Helper function
|
||||||
@ -59,11 +59,10 @@ struct atomisp_acc_pipe *atomisp_to_acc_pipe(struct video_device *dev);
|
|||||||
int atomisp_reset(struct atomisp_device *isp);
|
int atomisp_reset(struct atomisp_device *isp);
|
||||||
void atomisp_flush_bufs_and_wakeup(struct atomisp_sub_device *asd);
|
void atomisp_flush_bufs_and_wakeup(struct atomisp_sub_device *asd);
|
||||||
void atomisp_clear_css_buffer_counters(struct atomisp_sub_device *asd);
|
void atomisp_clear_css_buffer_counters(struct atomisp_sub_device *asd);
|
||||||
#ifndef ISP2401
|
/* ISP2400 */
|
||||||
bool atomisp_buffers_queued(struct atomisp_sub_device *asd);
|
bool atomisp_buffers_queued(struct atomisp_sub_device *asd);
|
||||||
#else
|
/* ISP2401 */
|
||||||
bool atomisp_buffers_queued_pipe(struct atomisp_video_pipe *pipe);
|
bool atomisp_buffers_queued_pipe(struct atomisp_video_pipe *pipe);
|
||||||
#endif
|
|
||||||
|
|
||||||
/* TODO:should be here instead of atomisp_helper.h
|
/* TODO:should be here instead of atomisp_helper.h
|
||||||
extern void __iomem *atomisp_io_base;
|
extern void __iomem *atomisp_io_base;
|
||||||
@ -103,14 +102,12 @@ bool atomisp_is_viewfinder_support(struct atomisp_device *isp);
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
#ifdef ISP2401
|
|
||||||
* Function to set sensor runmode by user when
|
* Function to set sensor runmode by user when
|
||||||
* ATOMISP_IOC_S_SENSOR_RUNMODE ioctl was called
|
* ATOMISP_IOC_S_SENSOR_RUNMODE ioctl was called
|
||||||
*/
|
*/
|
||||||
int atomisp_set_sensor_runmode(struct atomisp_sub_device *asd,
|
int atomisp_set_sensor_runmode(struct atomisp_sub_device *asd,
|
||||||
struct atomisp_s_runmode *runmode);
|
struct atomisp_s_runmode *runmode);
|
||||||
/*
|
/*
|
||||||
#endif
|
|
||||||
* Function to enable/disable lens geometry distortion correction (GDC) and
|
* Function to enable/disable lens geometry distortion correction (GDC) and
|
||||||
* chromatic aberration correction (CAC)
|
* chromatic aberration correction (CAC)
|
||||||
*/
|
*/
|
||||||
|
@ -28,13 +28,9 @@
|
|||||||
#include <media/media-device.h>
|
#include <media/media-device.h>
|
||||||
#include <media/v4l2-subdev.h>
|
#include <media/v4l2-subdev.h>
|
||||||
|
|
||||||
#ifndef ISP2401
|
/* ISP2400*/
|
||||||
#include "ia_css_types.h"
|
#include "ia_css_types.h"
|
||||||
#include "sh_css_legacy.h"
|
#include "sh_css_legacy.h"
|
||||||
#else
|
|
||||||
/*#include "ia_css_types.h"*/
|
|
||||||
/*#include "sh_css_legacy.h"*/
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "atomisp_csi2.h"
|
#include "atomisp_csi2.h"
|
||||||
#include "atomisp_file.h"
|
#include "atomisp_file.h"
|
||||||
@ -148,13 +144,12 @@
|
|||||||
#define ATOMISP_DEPTH_DEFAULT_MASTER_SENSOR 0
|
#define ATOMISP_DEPTH_DEFAULT_MASTER_SENSOR 0
|
||||||
#define ATOMISP_DEPTH_DEFAULT_SLAVE_SENSOR 1
|
#define ATOMISP_DEPTH_DEFAULT_SLAVE_SENSOR 1
|
||||||
|
|
||||||
#ifdef ISP2401
|
/* ISP2401 */
|
||||||
#define ATOMISP_ION_DEVICE_FD_OFFSET 16
|
#define ATOMISP_ION_DEVICE_FD_OFFSET 16
|
||||||
#define ATOMISP_ION_SHARED_FD_MASK (0xFFFF)
|
#define ATOMISP_ION_SHARED_FD_MASK (0xFFFF)
|
||||||
#define ATOMISP_ION_DEVICE_FD_MASK (~ATOMISP_ION_SHARED_FD_MASK)
|
#define ATOMISP_ION_DEVICE_FD_MASK (~ATOMISP_ION_SHARED_FD_MASK)
|
||||||
#define ION_FD_UNSET (-1)
|
#define ION_FD_UNSET (-1)
|
||||||
|
|
||||||
#endif
|
|
||||||
#define DIV_NEAREST_STEP(n, d, step) \
|
#define DIV_NEAREST_STEP(n, d, step) \
|
||||||
round_down((2 * (n) + (d) * (step)) / (2 * (d)), (step))
|
round_down((2 * (n) + (d) * (step)) / (2 * (d)), (step))
|
||||||
|
|
||||||
@ -271,9 +266,10 @@ struct atomisp_device {
|
|||||||
bool isp_fatal_error;
|
bool isp_fatal_error;
|
||||||
struct workqueue_struct *wdt_work_queue;
|
struct workqueue_struct *wdt_work_queue;
|
||||||
struct work_struct wdt_work;
|
struct work_struct wdt_work;
|
||||||
#ifndef ISP2401
|
|
||||||
|
/* ISP2400 */
|
||||||
atomic_t wdt_count;
|
atomic_t wdt_count;
|
||||||
#endif
|
|
||||||
atomic_t wdt_work_queued;
|
atomic_t wdt_work_queued;
|
||||||
|
|
||||||
spinlock_t lock; /* Just for streaming below */
|
spinlock_t lock; /* Just for streaming below */
|
||||||
@ -293,17 +289,19 @@ struct atomisp_device {
|
|||||||
extern struct device *atomisp_dev;
|
extern struct device *atomisp_dev;
|
||||||
|
|
||||||
#define atomisp_is_wdt_running(a) timer_pending(&(a)->wdt)
|
#define atomisp_is_wdt_running(a) timer_pending(&(a)->wdt)
|
||||||
#ifdef ISP2401
|
|
||||||
|
/* ISP2401 */
|
||||||
void atomisp_wdt_refresh_pipe(struct atomisp_video_pipe *pipe,
|
void atomisp_wdt_refresh_pipe(struct atomisp_video_pipe *pipe,
|
||||||
unsigned int delay);
|
unsigned int delay);
|
||||||
#endif
|
|
||||||
void atomisp_wdt_refresh(struct atomisp_sub_device *asd, unsigned int delay);
|
void atomisp_wdt_refresh(struct atomisp_sub_device *asd, unsigned int delay);
|
||||||
#ifndef ISP2401
|
|
||||||
|
/* ISP2400 */
|
||||||
void atomisp_wdt_start(struct atomisp_sub_device *asd);
|
void atomisp_wdt_start(struct atomisp_sub_device *asd);
|
||||||
#else
|
|
||||||
void atomisp_wdt_start(struct atomisp_video_pipe *pipe);
|
/* ISP2401 */
|
||||||
|
void atomisp_wdt_start_pipe(struct atomisp_video_pipe *pipe);
|
||||||
void atomisp_wdt_stop_pipe(struct atomisp_video_pipe *pipe, bool sync);
|
void atomisp_wdt_stop_pipe(struct atomisp_video_pipe *pipe, bool sync);
|
||||||
#endif
|
|
||||||
void atomisp_wdt_stop(struct atomisp_sub_device *asd, bool sync);
|
void atomisp_wdt_stop(struct atomisp_sub_device *asd, bool sync);
|
||||||
|
|
||||||
#endif /* __ATOMISP_INTERNAL_H__ */
|
#endif /* __ATOMISP_INTERNAL_H__ */
|
||||||
|
@ -106,16 +106,15 @@ struct atomisp_video_pipe {
|
|||||||
*/
|
*/
|
||||||
unsigned int frame_request_config_id[VIDEO_MAX_FRAME];
|
unsigned int frame_request_config_id[VIDEO_MAX_FRAME];
|
||||||
struct atomisp_css_params_with_list *frame_params[VIDEO_MAX_FRAME];
|
struct atomisp_css_params_with_list *frame_params[VIDEO_MAX_FRAME];
|
||||||
#ifdef ISP2401
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* move wdt from asd struct to create wdt for each pipe
|
* move wdt from asd struct to create wdt for each pipe
|
||||||
*/
|
*/
|
||||||
|
/* ISP2401 */
|
||||||
struct timer_list wdt;
|
struct timer_list wdt;
|
||||||
unsigned int wdt_duration; /* in jiffies */
|
unsigned int wdt_duration; /* in jiffies */
|
||||||
unsigned long wdt_expires;
|
unsigned long wdt_expires;
|
||||||
atomic_t wdt_count;
|
atomic_t wdt_count;
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct atomisp_acc_pipe {
|
struct atomisp_acc_pipe {
|
||||||
@ -314,13 +313,12 @@ struct atomisp_sub_device {
|
|||||||
struct v4l2_ctrl *continuous_raw_buffer_size;
|
struct v4l2_ctrl *continuous_raw_buffer_size;
|
||||||
struct v4l2_ctrl *continuous_viewfinder;
|
struct v4l2_ctrl *continuous_viewfinder;
|
||||||
struct v4l2_ctrl *enable_raw_buffer_lock;
|
struct v4l2_ctrl *enable_raw_buffer_lock;
|
||||||
#ifdef ISP2401
|
|
||||||
|
/* ISP2401 */
|
||||||
struct v4l2_ctrl *ion_dev_fd;
|
struct v4l2_ctrl *ion_dev_fd;
|
||||||
#endif
|
|
||||||
struct v4l2_ctrl *disable_dz;
|
|
||||||
#ifdef ISP2401
|
|
||||||
struct v4l2_ctrl *select_isp_version;
|
struct v4l2_ctrl *select_isp_version;
|
||||||
#endif
|
|
||||||
|
struct v4l2_ctrl *disable_dz;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
struct list_head fw;
|
struct list_head fw;
|
||||||
@ -400,20 +398,18 @@ struct atomisp_sub_device {
|
|||||||
int raw_buffer_locked_count;
|
int raw_buffer_locked_count;
|
||||||
spinlock_t raw_buffer_bitmap_lock;
|
spinlock_t raw_buffer_bitmap_lock;
|
||||||
|
|
||||||
#ifndef ISP2401
|
/* ISP 2400 */
|
||||||
struct timer_list wdt;
|
struct timer_list wdt;
|
||||||
unsigned int wdt_duration; /* in jiffies */
|
unsigned int wdt_duration; /* in jiffies */
|
||||||
unsigned long wdt_expires;
|
unsigned long wdt_expires;
|
||||||
|
|
||||||
#endif
|
/* ISP2401 */
|
||||||
|
bool re_trigger_capture;
|
||||||
|
|
||||||
struct atomisp_resolution sensor_array_res;
|
struct atomisp_resolution sensor_array_res;
|
||||||
bool high_speed_mode; /* Indicate whether now is a high speed mode */
|
bool high_speed_mode; /* Indicate whether now is a high speed mode */
|
||||||
int pending_capture_request; /* Indicates the number of pending capture requests. */
|
int pending_capture_request; /* Indicates the number of pending capture requests. */
|
||||||
#ifndef ISP2401
|
|
||||||
|
|
||||||
#else
|
|
||||||
bool re_trigger_capture;
|
|
||||||
#endif
|
|
||||||
unsigned int preview_exp_id;
|
unsigned int preview_exp_id;
|
||||||
unsigned int postview_exp_id;
|
unsigned int postview_exp_id;
|
||||||
};
|
};
|
||||||
@ -423,14 +419,16 @@ extern const struct atomisp_in_fmt_conv atomisp_in_fmt_conv[];
|
|||||||
u32 atomisp_subdev_uncompressed_code(u32 code);
|
u32 atomisp_subdev_uncompressed_code(u32 code);
|
||||||
bool atomisp_subdev_is_compressed(u32 code);
|
bool atomisp_subdev_is_compressed(u32 code);
|
||||||
const struct atomisp_in_fmt_conv *atomisp_find_in_fmt_conv(u32 code);
|
const struct atomisp_in_fmt_conv *atomisp_find_in_fmt_conv(u32 code);
|
||||||
#ifndef ISP2401
|
|
||||||
|
/* ISP2400 */
|
||||||
const struct atomisp_in_fmt_conv *atomisp_find_in_fmt_conv_by_atomisp_in_fmt(
|
const struct atomisp_in_fmt_conv *atomisp_find_in_fmt_conv_by_atomisp_in_fmt(
|
||||||
enum atomisp_input_format atomisp_in_fmt);
|
enum atomisp_input_format atomisp_in_fmt);
|
||||||
#else
|
|
||||||
|
/* ISP2401 */
|
||||||
const struct atomisp_in_fmt_conv
|
const struct atomisp_in_fmt_conv
|
||||||
*atomisp_find_in_fmt_conv_by_atomisp_in_fmt(enum atomisp_input_format
|
*atomisp_find_in_fmt_conv_by_atomisp_in_fmt(enum atomisp_input_format
|
||||||
atomisp_in_fmt);
|
atomisp_in_fmt);
|
||||||
#endif
|
|
||||||
const struct atomisp_in_fmt_conv *atomisp_find_in_fmt_conv_compressed(u32 code);
|
const struct atomisp_in_fmt_conv *atomisp_find_in_fmt_conv_compressed(u32 code);
|
||||||
bool atomisp_subdev_format_conversion(struct atomisp_sub_device *asd,
|
bool atomisp_subdev_format_conversion(struct atomisp_sub_device *asd,
|
||||||
unsigned int source_pad);
|
unsigned int source_pad);
|
||||||
|
Loading…
Reference in New Issue
Block a user