summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/odm_kit/query/whistler/include/nvodm_imager_guids.h
blob: 869aedf1eb678f481542bb661403cd2195536a64 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
/*
 * Copyright (c) 2009 NVIDIA Corporation.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 *
 * Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the following disclaimer in the documentation
 * and/or other materials provided with the distribution.
 *
 * Neither the name of the NVIDIA Corporation nor the names of its contributors
 * may be used to endorse or promote products derived from this software
 * without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 */
#ifndef NVODM_IMAGER_GUIDS_H
#define NVODM_IMAGER_GUIDS_H

#include "nvodm_query_discovery.h"

// E912-A02 and Concorde2 Sensors
#define OV5630_GUID NV_ODM_GUID('s','_','O','V','5','6','3','0')

// E911 Sensors
#define MI5130_GUID NV_ODM_GUID('s','_','M','I','5','1','3','0')
#define SEMCOVGA_GUID NV_ODM_GUID('S','E','M','C','O','V','G','A')

// E911 Focusers
// focuser for MI5130
#define DW9710_GUID NV_ODM_GUID('f','_','D','W','9','7','1','0')

/// focuser for OV5630
#define AD5820_GUID NV_ODM_GUID('f','_','A','D','5','8','2','0')

// E911 Flash
#define LTC3216_GUID NV_ODM_GUID('l','_','L','T','3','2','1','6')

// io addresses common to all imagers (clock)
#define COMMONIMAGER_GUID NV_ODM_GUID('s', '_', 'c', 'o', 'm', 'm', 'o', 'n')

// Pin Use Codes:
// VI/CSI Parallel and Serial Pins and GPIO Pins

// More than one device may be retrieved thru the query
#define NVODM_CAMERA_DEVICE_IS_DEFAULT   (1)

// The imager devices can connect to the parallel bus or the serial bus
// Parallel connections use pins VD0 thru VD9.
// Serial connections use the mipi pins (ex: CSI_D1AN/CSI_D1AP)
#define NVODM_CAMERA_DATA_PIN_SHIFT      (1)
#define NVODM_CAMERA_DATA_PIN_MASK       0x0F
#define NVODM_CAMERA_PARALLEL_VD0_TO_VD9 (1 << NVODM_CAMERA_DATA_PIN_SHIFT)
#define NVODM_CAMERA_PARALLEL_VD0_TO_VD7 (2 << NVODM_CAMERA_DATA_PIN_SHIFT)
#define NVODM_CAMERA_SERIAL_CSI_D1A      (4 << NVODM_CAMERA_DATA_PIN_SHIFT)
#define NVODM_CAMERA_SERIAL_CSI_D2A      (5 << NVODM_CAMERA_DATA_PIN_SHIFT)
#define NVODM_CAMERA_SERIAL_CSI_D1A_D2A  (6 << NVODM_CAMERA_DATA_PIN_SHIFT)
#define NVODM_CAMERA_SERIAL_CSI_D1B      (7 << NVODM_CAMERA_DATA_PIN_SHIFT)

// Switching the encoding from the VideoInput module address to use with
// each GPIO module address.
// NVODM_IMAGER_GPIO will tell the nvodm imager how to use each gpio
// A gpio can be used for powerdown (lo, hi) or !powerdown (hi, lo)
// used for reset (hi, lo, hi) or for !reset (lo, hi, lo)
// Or, for mclk or pwm (unimplemented yet)
// We have moved the flash to its own, so it is not needed here
#define NVODM_IMAGER_GPIO_PIN_SHIFT    (24)
#define NVODM_IMAGER_UNUSED            (0x0)
#define NVODM_IMAGER_RESET             (0x1 << NVODM_IMAGER_GPIO_PIN_SHIFT)
#define NVODM_IMAGER_RESET_AL          (0x2 << NVODM_IMAGER_GPIO_PIN_SHIFT)
#define NVODM_IMAGER_POWERDOWN         (0x3 << NVODM_IMAGER_GPIO_PIN_SHIFT)
#define NVODM_IMAGER_POWERDOWN_AL      (0x4 << NVODM_IMAGER_GPIO_PIN_SHIFT)
// only on VGP0
#define NVODM_IMAGER_MCLK              (0x8 << NVODM_IMAGER_GPIO_PIN_SHIFT)
// only on VGP6
#define NVODM_IMAGER_PWM               (0x9 << NVODM_IMAGER_GPIO_PIN_SHIFT)
// If flash code wants the gpio's labelled
// use for any purpose, or not at all
#define NVODM_IMAGER_FLASH0           (0x5 << NVODM_IMAGER_GPIO_PIN_SHIFT)
#define NVODM_IMAGER_FLASH1           (0x6 << NVODM_IMAGER_GPIO_PIN_SHIFT)
#define NVODM_IMAGER_FLASH2           (0x7 << NVODM_IMAGER_GPIO_PIN_SHIFT)
// Shutter control
#define NVOSM_IMAGER_SHUTTER          (0xA << NVODM_IMAGER_GPIO_PIN_SHIFT)
// 

#define NVODM_IMAGER_MASK              (0xF << NVODM_IMAGER_GPIO_PIN_SHIFT)
#define NVODM_IMAGER_CLEAR(_s)         ((_s) & ~(NVODM_IMAGER_MASK))
#define NVODM_IMAGER_IS_SET(_s)        (((_s) & (NVODM_IMAGER_MASK)) != 0)
#define NVODM_IMAGER_FIELD(_s)         ((_s) >> NVODM_IMAGER_GPIO_PIN_SHIFT)

// The imager devices can connect to the vi gpio (VGP) pins
// for various reasons: flash, powerdown, reset, pwm, mclk.
// Only certain pins can be used for certain activities.
// These flags should be OR'd together to form the proper 'address'
// in the NvOdmIoAddress for VideoInput.
// VGP1 & VGP2 are used for i2c
// _AL means 'active low', otherwise active high is assumed

#define NVODM_CAMERA_GPIO_PIN_SHIFT        (8)
#define NVODM_CAMERA_GPIO_PIN_MASK         (0x7)
#define NVODM_CAMERA_GPIO_PIN_WIDTH         3
#define NVODM_CAMERA_GPIO_PIN_COUNT         7

#define NVODM_CAMERA_UNUSED                (0x0)
#define NVODM_CAMERA_RESET(_s)         (0x1 << (_s+NVODM_CAMERA_GPIO_PIN_SHIFT))
#define NVODM_CAMERA_RESET_AL(_s)      (0x2 << (_s+NVODM_CAMERA_GPIO_PIN_SHIFT))
#define NVODM_CAMERA_POWERDOWN(_s)     (0x3 << (_s+NVODM_CAMERA_GPIO_PIN_SHIFT))
#define NVODM_CAMERA_POWERDOWN_AL(_s)  (0x4 << (_s+NVODM_CAMERA_GPIO_PIN_SHIFT))
#define NVODM_CAMERA_FLASH_LOW(_s)     (0x5 << (_s+NVODM_CAMERA_GPIO_PIN_SHIFT))
#define NVODM_CAMERA_FLASH_HIGH(_s)    (0x6 << (_s+NVODM_CAMERA_GPIO_PIN_SHIFT))
// only on VGP0
#define NVODM_CAMERA_MCLK(_s)          (0x7 << (_s+NVODM_CAMERA_GPIO_PIN_SHIFT))
// only on VGP6
#define NVODM_CAMERA_PWM(_s)           (0x7 << (_s+NVODM_CAMERA_GPIO_PIN_SHIFT))

#define NVODM_VGP0_SHIFT            0
#define NVODM_VD10_SHIFT            (1*NVODM_CAMERA_GPIO_PIN_WIDTH)
#define NVODM_VD11_SHIFT            (2*NVODM_CAMERA_GPIO_PIN_WIDTH)
#define NVODM_VGP3_SHIFT            (3*NVODM_CAMERA_GPIO_PIN_WIDTH)
#define NVODM_VGP4_SHIFT            (4*NVODM_CAMERA_GPIO_PIN_WIDTH)
#define NVODM_VGP5_SHIFT            (5*NVODM_CAMERA_GPIO_PIN_WIDTH)
#define NVODM_VGP6_SHIFT            (6*NVODM_CAMERA_GPIO_PIN_WIDTH)

// VGP0
#define NVODM_CAMERA_VGP0_RESET        NVODM_CAMERA_RESET(NVODM_VGP0_SHIFT)
#define NVODM_CAMERA_VGP0_RESET_AL     NVODM_CAMERA_RESET_AL(NVODM_VGP0_SHIFT)
#define NVODM_CAMERA_VGP0_POWERDOWN    NVODM_CAMERA_POWERDOWN(NVODM_VGP0_SHIFT)
#define NVODM_CAMERA_VGP0_POWERDOWN_AL NVODM_CAMERA_POWERDOWN_AL(NVODM_VGP0_SHIFT)
#define NVODM_CAMERA_VGP0_FLASH_LOW    NVODM_CAMERA_FLASH_LOW(NVODM_VGP0_SHIFT)
#define NVODM_CAMERA_VGP0_FLASH_HIGH   NVODM_CAMERA_FLASH_HIGH(NVODM_VGP0_SHIFT)
#define NVODM_CAMERA_VGP0_MCLK         NVODM_CAMERA_MCLK(NVODM_VGP0_SHIFT)
// VD10
#define NVODM_CAMERA_VD10_RESET        NVODM_CAMERA_RESET(NVODM_VD10_SHIFT)
#define NVODM_CAMERA_VD10_RESET_AL     NVODM_CAMERA_RESET_AL(NVODM_VD10_SHIFT)
#define NVODM_CAMERA_VD10_POWERDOWN    NVODM_CAMERA_POWERDOWN(NVODM_VD10_SHIFT)
#define NVODM_CAMERA_VD10_POWERDOWN_AL NVODM_CAMERA_POWERDOWN_AL(NVODM_VD10_SHIFT)
#define NVODM_CAMERA_VD10_FLASH_LOW    NVODM_CAMERA_FLASH_LOW(NVODM_VD10_SHIFT)
#define NVODM_CAMERA_VD10_FLASH_HIGH   NVODM_CAMERA_FLASH_HIGH(NVODM_VD10_SHIFT)
// VD11
#define NVODM_CAMERA_VD11_RESET        NVODM_CAMERA_RESET(NVODM_VD11_SHIFT)
#define NVODM_CAMERA_VD11_RESET_AL     NVODM_CAMERA_RESET_AL(NVODM_VD11_SHIFT)
#define NVODM_CAMERA_VD11_POWERDOWN    NVODM_CAMERA_POWERDOWN(NVODM_VD11_SHIFT)
#define NVODM_CAMERA_VD11_POWERDOWN_AL NVODM_CAMERA_POWERDOWN_AL(NVODM_VD11_SHIFT)
#define NVODM_CAMERA_VD11_FLASH_LOW    NVODM_CAMERA_FLASH_LOW(NVODM_VD11_SHIFT)
#define NVODM_CAMERA_VD11_FLASH_HIGH   NVODM_CAMERA_FLASH_HIGH(NVODM_VD11_SHIFT)
// VGP3
#define NVODM_CAMERA_VGP3_RESET        NVODM_CAMERA_RESET(NVODM_VGP3_SHIFT)
#define NVODM_CAMERA_VGP3_RESET_AL     NVODM_CAMERA_RESET_AL(NVODM_VGP3_SHIFT)
#define NVODM_CAMERA_VGP3_POWERDOWN    NVODM_CAMERA_POWERDOWN(NVODM_VGP3_SHIFT)
#define NVODM_CAMERA_VGP3_POWERDOWN_AL NVODM_CAMERA_POWERDOWN_AL(NVODM_VGP3_SHIFT)
#define NVODM_CAMERA_VGP3_FLASH_LOW    NVODM_CAMERA_FLASH_LOW(NVODM_VGP3_SHIFT)
#define NVODM_CAMERA_VGP3_FLASH_HIGH   NVODM_CAMERA_FLASH_HIGH(NVODM_VGP3_SHIFT)
// VGP4
#define NVODM_CAMERA_VGP4_RESET        NVODM_CAMERA_RESET(NVODM_VGP4_SHIFT)
#define NVODM_CAMERA_VGP4_RESET_AL     NVODM_CAMERA_RESET_AL(NVODM_VGP4_SHIFT)
#define NVODM_CAMERA_VGP4_POWERDOWN    NVODM_CAMERA_POWERDOWN(NVODM_VGP4_SHIFT)
#define NVODM_CAMERA_VGP4_POWERDOWN_AL NVODM_CAMERA_POWERDOWN_AL(NVODM_VGP4_SHIFT)
#define NVODM_CAMERA_VGP4_FLASH_LOW    NVODM_CAMERA_FLASH_LOW(NVODM_VGP4_SHIFT)
#define NVODM_CAMERA_VGP4_FLASH_HIGH   NVODM_CAMERA_FLASH_HIGH(NVODM_VGP4_SHIFT)
// VGP5
#define NVODM_CAMERA_VGP5_RESET        NVODM_CAMERA_RESET(NVODM_VGP5_SHIFT)
#define NVODM_CAMERA_VGP5_RESET_AL     NVODM_CAMERA_RESET_AL(NVODM_VGP5_SHIFT)
#define NVODM_CAMERA_VGP5_POWERDOWN    NVODM_CAMERA_POWERDOWN(NVODM_VGP5_SHIFT)
#define NVODM_CAMERA_VGP5_POWERDOWN_AL NVODM_CAMERA_POWERDOWN_AL(NVODM_VGP5_SHIFT)
#define NVODM_CAMERA_VGP5_FLASH_LOW    NVODM_CAMERA_FLASH_LOW(NVODM_VGP5_SHIFT)
#define NVODM_CAMERA_VGP5_FLASH_HIGH   NVODM_CAMERA_FLASH_HIGH(NVODM_VGP5_SHIFT)
// VGP6
#define NVODM_CAMERA_VGP6_RESET        NVODM_CAMERA_RESET(NVODM_VGP6_SHIFT)
#define NVODM_CAMERA_VGP6_RESET_AL     NVODM_CAMERA_RESET_AL(NVODM_VGP6_SHIFT)
#define NVODM_CAMERA_VGP6_POWERDOWN    NVODM_CAMERA_POWERDOWN(NVODM_VGP6_SHIFT)
#define NVODM_CAMERA_VGP6_POWERDOWN_AL NVODM_CAMERA_POWERDOWN_AL(NVODM_VGP6_SHIFT)
#define NVODM_CAMERA_VGP6_FLASH_LOW    NVODM_CAMERA_FLASH_LOW(NVODM_VGP6_SHIFT)
#define NVODM_CAMERA_VGP6_FLASH_HIGH   NVODM_CAMERA_FLASH_HIGH(NVODM_VGP6_SHIFT)
#define NVODM_CAMERA_VGP6_PWM          NVODM_CAMERA_PWM(NVODM_VGP6_SHIFT)

#endif