summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/odm_kit/query/whistler/include/nvodm_imager_guids.h
blob: 3353705641cb27e637bc895443b39742c62fe776 (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
/*
 * arch/arm/mach-tegra/odm_kit/query/whistler/include/nvodm_imager_guids.h
 *
 * Copyright (c) 2009 NVIDIA Corporation.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */

#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