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
drivers/staging/media/atomisp/pci/atomisp2
File diff suppressed because it is too large
Load Diff
@ -40,13 +40,13 @@ struct atomisp_css_frame;
|
||||
#define MEMORY_SPACE_ENABLE 1
|
||||
#define INTR_IER 24
|
||||
#define INTR_IIR 16
|
||||
#ifdef ISP2401
|
||||
|
||||
/* ISP2401 */
|
||||
#define RUNMODE_MASK (ATOMISP_RUN_MODE_VIDEO | ATOMISP_RUN_MODE_STILL_CAPTURE \
|
||||
| ATOMISP_RUN_MODE_PREVIEW)
|
||||
|
||||
/* FIXME: check if can go */
|
||||
extern int atomisp_punit_hpll_freq;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 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);
|
||||
void atomisp_flush_bufs_and_wakeup(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);
|
||||
#else
|
||||
/* ISP2401 */
|
||||
bool atomisp_buffers_queued_pipe(struct atomisp_video_pipe *pipe);
|
||||
#endif
|
||||
|
||||
/* TODO:should be here instead of atomisp_helper.h
|
||||
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
|
||||
* ATOMISP_IOC_S_SENSOR_RUNMODE ioctl was called
|
||||
*/
|
||||
int atomisp_set_sensor_runmode(struct atomisp_sub_device *asd,
|
||||
struct atomisp_s_runmode *runmode);
|
||||
/*
|
||||
#endif
|
||||
* Function to enable/disable lens geometry distortion correction (GDC) and
|
||||
* chromatic aberration correction (CAC)
|
||||
*/
|
||||
|
@ -28,13 +28,9 @@
|
||||
#include <media/media-device.h>
|
||||
#include <media/v4l2-subdev.h>
|
||||
|
||||
#ifndef ISP2401
|
||||
/* ISP2400*/
|
||||
#include "ia_css_types.h"
|
||||
#include "sh_css_legacy.h"
|
||||
#else
|
||||
/*#include "ia_css_types.h"*/
|
||||
/*#include "sh_css_legacy.h"*/
|
||||
#endif
|
||||
|
||||
#include "atomisp_csi2.h"
|
||||
#include "atomisp_file.h"
|
||||
@ -148,13 +144,12 @@
|
||||
#define ATOMISP_DEPTH_DEFAULT_MASTER_SENSOR 0
|
||||
#define ATOMISP_DEPTH_DEFAULT_SLAVE_SENSOR 1
|
||||
|
||||
#ifdef ISP2401
|
||||
/* ISP2401 */
|
||||
#define ATOMISP_ION_DEVICE_FD_OFFSET 16
|
||||
#define ATOMISP_ION_SHARED_FD_MASK (0xFFFF)
|
||||
#define ATOMISP_ION_DEVICE_FD_MASK (~ATOMISP_ION_SHARED_FD_MASK)
|
||||
#define ION_FD_UNSET (-1)
|
||||
|
||||
#endif
|
||||
#define DIV_NEAREST_STEP(n, d, step) \
|
||||
round_down((2 * (n) + (d) * (step)) / (2 * (d)), (step))
|
||||
|
||||
@ -271,9 +266,10 @@ struct atomisp_device {
|
||||
bool isp_fatal_error;
|
||||
struct workqueue_struct *wdt_work_queue;
|
||||
struct work_struct wdt_work;
|
||||
#ifndef ISP2401
|
||||
|
||||
/* ISP2400 */
|
||||
atomic_t wdt_count;
|
||||
#endif
|
||||
|
||||
atomic_t wdt_work_queued;
|
||||
|
||||
spinlock_t lock; /* Just for streaming below */
|
||||
@ -293,17 +289,19 @@ struct atomisp_device {
|
||||
extern struct device *atomisp_dev;
|
||||
|
||||
#define atomisp_is_wdt_running(a) timer_pending(&(a)->wdt)
|
||||
#ifdef ISP2401
|
||||
|
||||
/* ISP2401 */
|
||||
void atomisp_wdt_refresh_pipe(struct atomisp_video_pipe *pipe,
|
||||
unsigned int delay);
|
||||
#endif
|
||||
void atomisp_wdt_refresh(struct atomisp_sub_device *asd, unsigned int delay);
|
||||
#ifndef ISP2401
|
||||
|
||||
/* ISP2400 */
|
||||
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);
|
||||
#endif
|
||||
|
||||
void atomisp_wdt_stop(struct atomisp_sub_device *asd, bool sync);
|
||||
|
||||
#endif /* __ATOMISP_INTERNAL_H__ */
|
||||
|
@ -106,16 +106,15 @@ struct atomisp_video_pipe {
|
||||
*/
|
||||
unsigned int frame_request_config_id[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
|
||||
*/
|
||||
/* ISP2401 */
|
||||
struct timer_list wdt;
|
||||
unsigned int wdt_duration; /* in jiffies */
|
||||
unsigned long wdt_expires;
|
||||
atomic_t wdt_count;
|
||||
#endif
|
||||
};
|
||||
|
||||
struct atomisp_acc_pipe {
|
||||
@ -314,13 +313,12 @@ struct atomisp_sub_device {
|
||||
struct v4l2_ctrl *continuous_raw_buffer_size;
|
||||
struct v4l2_ctrl *continuous_viewfinder;
|
||||
struct v4l2_ctrl *enable_raw_buffer_lock;
|
||||
#ifdef ISP2401
|
||||
|
||||
/* ISP2401 */
|
||||
struct v4l2_ctrl *ion_dev_fd;
|
||||
#endif
|
||||
struct v4l2_ctrl *disable_dz;
|
||||
#ifdef ISP2401
|
||||
struct v4l2_ctrl *select_isp_version;
|
||||
#endif
|
||||
|
||||
struct v4l2_ctrl *disable_dz;
|
||||
|
||||
struct {
|
||||
struct list_head fw;
|
||||
@ -400,20 +398,18 @@ struct atomisp_sub_device {
|
||||
int raw_buffer_locked_count;
|
||||
spinlock_t raw_buffer_bitmap_lock;
|
||||
|
||||
#ifndef ISP2401
|
||||
/* ISP 2400 */
|
||||
struct timer_list wdt;
|
||||
unsigned int wdt_duration; /* in jiffies */
|
||||
unsigned long wdt_expires;
|
||||
|
||||
#endif
|
||||
/* ISP2401 */
|
||||
bool re_trigger_capture;
|
||||
|
||||
struct atomisp_resolution sensor_array_res;
|
||||
bool high_speed_mode; /* Indicate whether now is a high speed mode */
|
||||
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 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);
|
||||
bool atomisp_subdev_is_compressed(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(
|
||||
enum atomisp_input_format atomisp_in_fmt);
|
||||
#else
|
||||
|
||||
/* ISP2401 */
|
||||
const struct atomisp_in_fmt_conv
|
||||
*atomisp_find_in_fmt_conv_by_atomisp_in_fmt(enum atomisp_input_format
|
||||
atomisp_in_fmt);
|
||||
#endif
|
||||
|
||||
const struct atomisp_in_fmt_conv *atomisp_find_in_fmt_conv_compressed(u32 code);
|
||||
bool atomisp_subdev_format_conversion(struct atomisp_sub_device *asd,
|
||||
unsigned int source_pad);
|
||||
|
Loading…
Reference in New Issue
Block a user