blob: 0a69059058bd4e33df2f2f55495db13a2b465feb [file] [log] [blame]
#ifndef _FLASH_SUBDEV_H_
#define _FLASH_SUBDEV_H_
#include <media/v4l2-device.h>
#include <media/v4l2-subdev.h>
#include <media/v4l2-ctrls.h>
#include <media/b52socisp/host_isd.h>
struct flash_data {
struct v4l2_device *v4l2_dev;
struct isp_host_subdev *hsd;
};
struct flash_ctrls {
struct v4l2_ctrl_handler ctrl_hdl;
struct v4l2_ctrl *select_type;
};
struct flash_ops {
int (*init)(struct v4l2_subdev *);
int (*s_flash)(struct v4l2_subdev *, u8 on);
int (*s_torch)(struct v4l2_subdev *, u8 on);
};
struct flash_type {
const char *name;
struct flash_ops *ops;
};
struct flash_subdev {
char *name;
struct v4l2_subdev subdev;
struct device *dev;
struct media_pad pad;
/* Controls */
struct flash_ctrls flash_ctrl;
enum v4l2_flash_led_mode led_mode;
enum v4l2_flash_strobe_source strobe_source;
u32 timeout;
u32 flash_current;
u32 torch_current;
int flash_status;
struct flash_type b52_flash_type[10];
struct flash_type *current_type;
};
int flash_subdev_create(struct device *parent,
const char *name, int id, void *pdata);
#endif