/* SPDX-License-Identifier: GPL-2.0+ */ #ifndef __SPI_CAMERA_H__ #define __SPI_CAMERA_H__ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include enum driver_state_flags { DRIVER_LPM, DRIVER_STREAM, DRIVER_BUSY, DRIVER_STATE_MAX, }; enum power_seq_cmd { PWR_OFF = 0, PWR_ON = 1, STBY_OFF = 2, STBY_ON = 3, }; /* buffer for one video frame */ struct spi_buffer { struct vb2_v4l2_buffer vb; struct videobuf_dmabuf *dma; int image_quality; struct list_head list; }; struct spi_dmaqueue { struct list_head active; /* Counters to control fps rate */ int frame; int ini_jiffies; }; struct spi_sensor { struct spi_device *spidev; struct v4l2_device v4l2_dev; struct video_device video; struct i2c_board_info sensor_i2c_board; struct v4l2_subdev *sd; struct vb2_queue vb_vidq; struct spi_dmaqueue vidq; spinlock_t slock; struct work_struct spi_rx_work; struct mutex spi_rx_mutex; int twi_id; int twi_addr; struct gpio_config sensor_pck; struct gpio_config sensor_mck; struct gpio_config sensor_hsync; struct gpio_config sensor_vsync; struct gpio_config sensor_pwdn; struct gpio_config sensor_cs; struct gpio_config sensor_cb; unsigned int sensor_pck_io; unsigned int sensor_mck_io; unsigned int sensor_hsync_io; unsigned int sensor_vsync_io; unsigned int sensor_pwdn_io; unsigned int sensor_cs_io; unsigned int sensor_cb_io; int cb_irq; struct clk *sensor_master_clk; struct clk *sensor_master_clk_src; struct mutex buf_lock; int width; int height; int code; struct spi_transfer transfer; struct spi_message message; unsigned long state; int strip_buffer; int frame_unit_size; int line_unit_size; }; #define driver_busy(dev) test_bit(DRIVER_BUSY, &(dev)->state) #define driver_streaming(dev) test_bit(DRIVER_STREAM, &(dev)->state) #endif /* __SPI_CAMERA_H__ */