1d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 2b5dcee22SMauro Carvalho Chehab /* 3b5dcee22SMauro Carvalho Chehab * ov772x Camera 4b5dcee22SMauro Carvalho Chehab * 5b5dcee22SMauro Carvalho Chehab * Copyright (C) 2008 Renesas Solutions Corp. 6b5dcee22SMauro Carvalho Chehab * Kuninori Morimoto <morimoto.kuninori@renesas.com> 7b5dcee22SMauro Carvalho Chehab */ 8b5dcee22SMauro Carvalho Chehab 9b5dcee22SMauro Carvalho Chehab #ifndef __OV772X_H__ 10b5dcee22SMauro Carvalho Chehab #define __OV772X_H__ 11b5dcee22SMauro Carvalho Chehab 12b5dcee22SMauro Carvalho Chehab /* for flags */ 13b5dcee22SMauro Carvalho Chehab #define OV772X_FLAG_VFLIP (1 << 0) /* Vertical flip image */ 14b5dcee22SMauro Carvalho Chehab #define OV772X_FLAG_HFLIP (1 << 1) /* Horizontal flip image */ 15b5dcee22SMauro Carvalho Chehab 16b5dcee22SMauro Carvalho Chehab /* 17b5dcee22SMauro Carvalho Chehab * for Edge ctrl 18b5dcee22SMauro Carvalho Chehab * 19b5dcee22SMauro Carvalho Chehab * strength also control Auto or Manual Edge Control Mode 20b5dcee22SMauro Carvalho Chehab * see also OV772X_MANUAL_EDGE_CTRL 21b5dcee22SMauro Carvalho Chehab */ 22b5dcee22SMauro Carvalho Chehab struct ov772x_edge_ctrl { 23b5dcee22SMauro Carvalho Chehab unsigned char strength; 24b5dcee22SMauro Carvalho Chehab unsigned char threshold; 25b5dcee22SMauro Carvalho Chehab unsigned char upper; 26b5dcee22SMauro Carvalho Chehab unsigned char lower; 27b5dcee22SMauro Carvalho Chehab }; 28b5dcee22SMauro Carvalho Chehab 29b5dcee22SMauro Carvalho Chehab #define OV772X_MANUAL_EDGE_CTRL 0x80 /* un-used bit of strength */ 30b5dcee22SMauro Carvalho Chehab #define OV772X_EDGE_STRENGTH_MASK 0x1F 31b5dcee22SMauro Carvalho Chehab #define OV772X_EDGE_THRESHOLD_MASK 0x0F 32b5dcee22SMauro Carvalho Chehab #define OV772X_EDGE_UPPER_MASK 0xFF 33b5dcee22SMauro Carvalho Chehab #define OV772X_EDGE_LOWER_MASK 0xFF 34b5dcee22SMauro Carvalho Chehab 35b5dcee22SMauro Carvalho Chehab #define OV772X_AUTO_EDGECTRL(u, l) \ 36b5dcee22SMauro Carvalho Chehab { \ 37b5dcee22SMauro Carvalho Chehab .upper = (u & OV772X_EDGE_UPPER_MASK), \ 38b5dcee22SMauro Carvalho Chehab .lower = (l & OV772X_EDGE_LOWER_MASK), \ 39b5dcee22SMauro Carvalho Chehab } 40b5dcee22SMauro Carvalho Chehab 41b5dcee22SMauro Carvalho Chehab #define OV772X_MANUAL_EDGECTRL(s, t) \ 42b5dcee22SMauro Carvalho Chehab { \ 43b5dcee22SMauro Carvalho Chehab .strength = (s & OV772X_EDGE_STRENGTH_MASK) | \ 44b5dcee22SMauro Carvalho Chehab OV772X_MANUAL_EDGE_CTRL, \ 45b5dcee22SMauro Carvalho Chehab .threshold = (t & OV772X_EDGE_THRESHOLD_MASK), \ 46b5dcee22SMauro Carvalho Chehab } 47b5dcee22SMauro Carvalho Chehab 48762c2812SJacopo Mondi /** 49*a68a90b2SHans Verkuil * struct ov772x_camera_info - ov772x driver interface structure 50762c2812SJacopo Mondi * @flags: Sensor configuration flags 51762c2812SJacopo Mondi * @edgectrl: Sensor edge control 52b5dcee22SMauro Carvalho Chehab */ 53b5dcee22SMauro Carvalho Chehab struct ov772x_camera_info { 54b5dcee22SMauro Carvalho Chehab unsigned long flags; 55b5dcee22SMauro Carvalho Chehab struct ov772x_edge_ctrl edgectrl; 56b5dcee22SMauro Carvalho Chehab }; 57b5dcee22SMauro Carvalho Chehab 58b5dcee22SMauro Carvalho Chehab #endif /* __OV772X_H__ */ 59