[openfirmware] [commit] r3727 - dev/olpc
repository service
svn at openfirmware.info
Wed Jun 4 08:39:35 CEST 2014
Author: quozl
Date: Wed Jun 4 08:39:34 2014
New Revision: 3727
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3727
Log:
OLPC - add SIV121C camera sensor, as SIV120D is end-of-life
Modified:
dev/olpc/seti.fth
Modified: dev/olpc/seti.fth
==============================================================================
--- dev/olpc/seti.fth Sat May 10 05:44:05 2014 (r3726)
+++ dev/olpc/seti.fth Wed Jun 4 08:39:34 2014 (r3727)
@@ -1,14 +1,14 @@
-purpose: Driver for SETi image sensor
+purpose: Driver for SETi image sensors
hex
-: seti-config ( ycrcb? -- )
+: siv120d-config ( ycrcb? -- )
>r ( r: ycrcb? )
\ SNR
- 00 00 ov!
+ 00 00 ov! \ bank 0
00 04 ov!
- 03 05 ov!
-\ 33 07 ov!
+ 03 05 ov! \ CHIP_CNTR
+ \ 33 07 ov!
32 07 ov!
34 10 ov!
27 11 ov!
@@ -35,8 +35,8 @@
d4 70 ov! \ anti-sat on
07 74 ov! \ anti-sat ini
- 69 79 ov! \ anti-sat
-
+ 69 79 ov! \ anti-sat
+
\ AWB
02 00 ov!
d0 10 ov!
@@ -45,7 +45,7 @@
7f 13 ov!
7f 14 ov!
fe 15 ov! \ R gain Top
- 80 16 ov! \ R gain bottom
+ 80 16 ov! \ R gain bottom
cb 17 ov! \ B gain Top
70 18 ov! \ B gain bottom 0x80
94 19 ov! \ Cr top value 0x90
@@ -62,7 +62,7 @@
0f 26 ov!
01 27 ov! \ BRTSRT
b4 28 ov! \ BRTRGNTOP result 0xad
- b0 29 ov! \ BRTRGNBOT
+ b0 29 ov! \ BRTRGNBOT
92 2a ov! \ BRTBGNTOP result 0x90
8e 2b ov! \ BRTBGNBOT
88 2c ov! \ RGAINCONT
@@ -109,12 +109,13 @@
\ IDP
03 00 ov!
ff 10 ov!
- 1d 11 ov! \ Change PIXDATA on falling edge of clock for better timing
+ 1d 11 ov! \ SIGCNT
+ \ Change PIXDATA on falling edge of clock for better timing
3d 12 ov! \ YUV422 setting; changed later if RGB565
04 14 ov! \ don't change
\ DPCNR
-\ 28 17 ov! \DPCNRCTRL
+ \ 28 17 ov! \ DPCNRCTRL
00 18 ov! \ DPTHR
56 19 ov! \ C DP Number ( Normal [7:6] Dark [5:4] ) | [3:0] DPTHRMIN
56 1A ov! \ G DP Number ( Normal [7:6] Dark [5:4] ) | [3:0] DPTHRMAX
@@ -282,19 +283,386 @@
00 00 ov!
05 03 ov!
-
( r: ycrcb? ) r> 0= if ( )
03 00 ov! \ IDP
cb 12 ov! \ RGB565 setting
then
;
-: seti-set-mirrored ( mirrored? -- )
- 0 0 ov! 4 ov@ 1 ( mirrored? reg-value bit )
+: siv121c-config ( ycrcb? -- )
+ >r ( r: ycrcb? )
+
+ \ PMU
+ 00 00 ov!
+ 04 03 ov! \ CHIP_CNTR
+ \ [7:6] PCLK output drive capability select
+ \ 00: 3mA
+ \ 01: 5.6mA
+ \ 10: 5.6mA
+ \ 11: 8.2mA
+ \ [5:4] Other output drive capability select
+ \ 00: 3mA
+ \ 01: 5.6mA
+ \ 10: 5.6mA
+ \ 11: 8.2mA
+ \ [3] SDA output drive capability select
+ \ 0: 2.6mA
+ \ 1: 5.2mA
+ \ [2] Output pad enable - It activates an output pin operation.
+ \ 0 All output pads are in HI_Z state (except SDA)
+ \ 1 Normal operation mode
+ \ [1] Control a S/W stand-by (power-down) mode
+ \ 0 Normal operation mode
+ \ 1 Stand-by mode
+ \ [0] ?
+ \
+ \ XO-4,
+ \ f4 data inversions may appear after bright pixels of scan line
+ \ a4 normal image
+ \ 34 normal image
+ \ 04 normal image
+ 02 10 ov! \ LDO_LEVEL[1:0] = 2'b00
+
+ \ SNR
+ 01 00 ov!
+ 80 04 ov! \ CNTR_B
+ \ [7:6] Control fixed frame mode
+ \ 00 Normal operation mode
+ \ 01 Fixed frame mode @ exposure time <= frame size
+ \ Normal operation mode @ exposure time > frame size
+ \ 10/11 Fixed frame mode
+ \ [3:2] Clock (PCLK) divider – max 1/8 PCLK
+ \ 00: PCLK
+ \ 01: 1/2PCLK
+ \ 10: 1/4PCLK
+ \ 11: 1/8PCLK
+ \ [1] Control vertical flip image
+ \ 0 Normal image
+ \ 1 Vertical flip image
+ \ [0] Control horizontal flip (mirror) image
+ \ 0 Normal image
+ \ 1 Horizontal flip (mirror) image
+
+ \ registers 07, 09 through to 1f, are undocumented in datasheet
+ c1 07 ov! \ recommend, BLC_CAL
+ 1e 10 ov! \ recommend, ramp_ref
+ 81 11 ov! \ recommend, ramp_sig_start level
+ 54 12 ov! \ recommend
+ 01 13 ov! \ recommend
+ 31 14 ov! \ recommend
+ 21 15 ov! \ recommend, px bias
+
+ 84 17 ov! \ recommend, abs_cntr1
+ 00 18 ov! \ recommend
+ c3 19 ov! \ recommend
+
+ 00 20 ov! \ HBNK[11;8]/VBNK[11;8]
+ 65 21 ov! \ HBNK[7;0]
+ 03 22 ov! \ VBNK[7;0] //0x67
+
+ 63 23 ov! \ recommend
+ \ registers 25 through 50, reserved registers & sensor test
+ 52 42 ov! \ recommend
+ 00 43 ov! \ recommend
+
+ \ AE
+ 02 00 ov!
+ 80 10 ov!
+ 10 11 ov! \ MAX_SHUTSTEP
+ \ minimum exposure time when automatic exposure in use, reduce to increase frame rate at low light levels at the expense of image brightness
+ 78 12 ov! \ D65 target
+ 78 13 ov! \ CWF target
+ 78 14 ov! \ A target
+ 00 1e ov! \ recommend, Initial C gain
+ 28 22 ov! \ recommend, Initial F gain
+ 7d 34 ov! \ STST //0x96
+ 48 40 ov! \ recommend, Max x5
+
+ 40 42 ov! \ AG_TOP0
+ 20 44 ov! \ AG_MIN0
+ 21 45 ov! \ G50_dec
+ 2c 46 ov! \ G33_dec
+ 31 47 ov! \ G25_dec
+ 34 48 ov! \ G20_dec
+ 37 49 ov! \ G12_dec
+ 3a 4a ov! \ G09_dec
+ 3c 4b ov! \ G06_dec
+ 3e 4c ov! \ G03_dec
+ 3f 4d ov! \ G100_inc
+ 2f 4e ov! \ G50_inc
+ 2a 4f ov! \ G33_inc
+ 27 50 ov! \ G25_inc
+ 26 51 ov! \ G20_inc
+ 24 52 ov! \ G12_inc
+ 23 53 ov! \ G09_inc
+ 22 54 ov! \ G06_inc
+ 21 55 ov! \ G03_inc
+
+ 02 56 ov!
+ 14 70 ov!
+ 58 79 ov!
+
+ \ AWB
+ 03 00 ov!
+ d3 10 ov!
+ c0 11 ov!
+ 80 12 ov!
+ 7e 13 ov! \ Cr target
+ 80 14 ov! \ Cb target
+ fe 15 ov! \ R gain Top
+ 70 16 ov! \ R gain bottom
+ cb 17 ov! \ B gain Top
+ 70 18 ov! \ B gain bottom 0x80
+ 94 19 ov! \ Cr top value 0x90
+ 6c 1a ov! \ Cr bottom value 0x70
+ 94 1b ov! \ Cb top value 0x90
+ 6c 1c ov! \ Cb bottom value 0x70
+ 94 1d ov! \ 0xa0
+ 6c 1e ov! \ 0x60
+ e8 20 ov! \ AWB luminous top value
+ 30 21 ov! \ AWB luminous bottom value 0x20
+ a4 22 ov!
+ 20 23 ov!
+ ff 24 ov!
+ 20 25 ov!
+ 0f 26 ov!
+ 04 27 ov! \ BRTSRT
+ a0 28 ov! \ BRTRGNTOP result 0xad
+ a0 29 ov! \ BRTRGNBOT
+ ae 2a ov! \ BRTBGNTOP result 0x90
+ 88 2b ov! \ BRTBGNBOT
+ 00 2c ov! \ RGAINCONT
+
+ 00 30 ov!
+ 10 31 ov!
+ 00 32 ov!
+ 10 33 ov!
+ 02 34 ov!
+ 76 35 ov!
+ 01 36 ov!
+ d6 37 ov!
+ 01 40 ov!
+ 04 41 ov!
+ 08 42 ov!
+ 10 43 ov!
+ 12 44 ov!
+ 35 45 ov!
+ 64 46 ov!
+
+ b3 63 ov! \ R D30 to D20
+ c3 64 ov! \ B D30 to D20
+ b3 65 ov! \ R D20 to D30
+ c3 66 ov! \ B D20 to D30
+
+ dd 67 ov! \ R D65 to D30
+ a0 68 ov! \ B D65 to D30
+ dd 69 ov! \ R D30 to D65
+ a0 6a ov! \ B D30 to D65
+
+ \ IDP
+ 04 00 ov!
+ 7f 10 ov! \ IPFUN
+ 1d 11 ov! \ SIGCNT
+ \ [7] Vertical Blank Time Control Enable
+ \ [6] VSYNC Data Selection
+ \ (1: Short VSYNC, 0: Long VSYNC)
+ \ [5] Dummy HSYNC Output Enable at Short VSYNC
+ \ [4] PCLK Clock Polarity Control
+ \ (1: Positive Data Sync, 0: Negative Data Sync)
+ \ [3] HSYNC Polarity Control
+ \ (1: Data Active at HIGH, 0: Data Active at LOW)
+ \ [2] VSYNC Polarity Control
+ \ (1: Data Active at LOW, 0: Data Active at HIGH)
+ \ [1] HSYNC Valid at VSYNC
+ \ (1: Valid, 0: Not Valid)
+ \ [0] PCLK Valid at VSYNC, HSYNC
+ 2d 12 ov! \ OUTFMT, set for yuv422 mode (see tail of word for rgb565 mode)
+
+ \ DPCNR
+ 8f 18 ov! \ recommend, DPCCTRL [7] DPC Enable
+ \ [6:4] Reserved
+ \ [3] G1/G2 Mixed DPC for Full Mode
+ \ [2] G1/G2 Mixed DPC for Sub Mode
+ \ [1] DPC Method for Gx channel
+ \ 0 : Median in 8-neighbors
+ \ 1 : Maximum/Minimum in8-Neighbors
+ \ [0] DPC Method for Rx/Bx channel
+ \ 0 : Median in 8-neighbors
+ \ 1 : Maximum/Minimum in 8-Neighbors
+ 0f 19 ov! \ BNRCTRL [7] Highly Illumination and Flat Pixel
+ \ [6] Highly Illumination Pixel
+ \ [5] Flat Pixel
+ \ [4] Reserved
+ \ [3] BNR Enable
+ \ [2] G1/G2 Mixed NR for Full Mode
+ \ [1] G1/G2 Mixed NR for Sub Mode
+ \ [0] Twice Weight of X-direction Pixel of NR
+ 04 1a ov! \ recommend, DPCTHV [7:0] DPC Threshold Value @ IllumiInfo < STRTNOR
+ 12 1b ov! \ recommend, DPCTHVSLP [7:4] Decreasing DPC Threshold Slope @ STRTNOR < IllumiInfo < STRTDRK
+ \ [3:0] Decreasing DPC Threshold Slope @ IllumiInfo > STRTDRK
+ 08 1c ov! \ recommend, DPCTHVDIFSRT [5:0] Increasing DPC Threshold Starting Value via SAD Value
+ 08 1d ov! \ recommend, DPCTHVDIFSLP [5:0] Increasing DPC Threshold Slope via SAD Value ( 1/8 resolution, 0.000~8.000 )
+ ff 1e ov! \ recommend, DPCTHVMAX [7:0] Maximum Limit of DPC Threshold Value
+ 5a 1f ov! \ recommend, DPCNUMGX [7:6] Gx DP Num @ Outdoor/Normal Condition for Full Mode
+ \ [5:4] Gx DP Num @ Outdoor/Normal Condition for Sub Mode
+ \ [3:2] Gx DP Num @ Dark Condition for Full Mode
+ \ [1:0] Gx DP Num @ Dark Condition for Sub Mode
+ 5a 20 ov! \ recommend, DPCNUMCX [7:6] Cx DP Num @ Outdoor/Normal Condition for Full Mode
+ \ [5:4] Cx DP Num @ Outdoor/Normal Condition for Sub Mode
+ \ [3:2] Cx DP Num @ Dark Condition for Full Mode
+ \ [1:0] Cx DP Num @ Dark Condition for Sub Mode
+ 08 21 ov! \ 0a \ BNRTHV [7:0] Bayer NR Threshold Value @ IllumiInfo < STRTNOR
+ 24 22 ov! \ 14 \ BNRTHVSLP [7:4] Increasing Bayer NR Threshold Slope @ STRTNOR < IllumiInfo < STRTDRK
+ \ [3:0] Increasing Bayer NR Threshold Slope @ IllumiInfo > STRTDRK
+ 00 23 ov! \ BNRNEICNT [7] Reserved
+ \ [6:4] Minimum NR Weight for + direction Pixel
+ \ [3] Reserved
+ \ [2:0] Minimum NR Weight for X direction Pixel
+ 04 24 ov! \ STRTNOR [7:0] IllumiInfo Threshold Point for Outdoor -> Indoor
+ 0f 25 ov! \ STRTDRK [7:0] IllumiInfo Threshold Point for Indoor -> Dark
+
+ ad 2e ov! \ recommend, blc_calib
+ 45 2f ov!
+
+ \ Gamma
+ 00 30 ov! \ 0x00
+ 08 31 ov! \ 0x08
+ 10 32 ov! \ 0x10
+ 1b 33 ov! \ 0x1b
+ 37 34 ov! \ 0x37
+ 4d 35 ov! \ 0x4d
+ 60 36 ov! \ 0x60
+ 72 37 ov! \ 0x72
+ 82 38 ov! \ 0x82
+ 91 39 ov! \ 0x91
+ a0 3a ov! \ 0xa0
+ ba 3b ov! \ 0xba
+ d3 3c ov! \ 0xd3
+ ea 3d ov! \ 0xeA
+ f5 3e ov! \ 0xf5
+ ff 3f ov! \ 0xff
+
+ \ Shading Register Setting
+ 0a 40 ov!
+ 87 41 ov!
+ 76 42 ov!
+ 65 43 ov!
+ 54 44 ov!
+ 43 45 ov!
+ 22 46 ov! \ left R gain[7:4], right R gain[3:0]
+ 31 47 ov! \ top R gain[7:4], bottom R gain[3:0]
+ 00 48 ov! \ left Gr gain[7:4], right Gr gain[3:0] 0x21
+ 10 49 ov! \ top Gr gain[7:4], bottom Gr gain[3:0]
+ 00 4a ov! \ left Gb gain[7:4], right Gb gain[3:0] 0x02
+ 10 4b ov! \ top Gb gain[7:4], bottom Gb gain[3:0]
+ 00 4c ov! \ left B gain[7:4], right B gain[3:0]
+ 11 4d ov! \ top B gain[7:4], bottom B gain[3:0]
+ 04 4e ov! \ X-axis center high[3:2], Y-axis center high[1:0]
+ 48 4f ov! \ X-axis center low[7:0] 0x50
+ d8 50 ov! \ Y-axis center low[7:0] 0xf6
+ 80 51 ov! \ Shading Center Gain
+ 00 52 ov! \ Shading R Offset
+ 00 53 ov! \ Shading Gr Offset
+ 00 54 ov! \ Shading Gb Offset
+ 00 55 ov! \ Shading B Offset
+
+ \ INTERPOLATION
+ b7 61 ov! \ INTCTRL outdoor
+ 10 64 ov! \ 0c
+
+ \ Color matrix (D65) - Daylight
+ 3B 71 ov!
+ CE 72 ov!
+ F7 73 ov!
+ 13 74 ov!
+ 25 75 ov!
+ 07 76 ov!
+ F2 77 ov!
+ C7 78 ov!
+ 47 79 ov!
+
+ \ Color matrix (D30) - CWF
+ 3B 7a ov!
+ CE 7b ov!
+ F7 7c ov!
+ 13 7d ov!
+ 25 7e ov!
+ 07 7f ov!
+ F2 80 ov!
+ C7 81 ov!
+ 47 82 ov!
+
+ \ Color matrix (D20) - A
+ 3c 83 ov!
+ c6 84 ov!
+ ff 85 ov!
+ 12 86 ov!
+ 24 87 ov!
+ 0a 88 ov!
+ ed 89 ov!
+ c2 8a ov!
+ 51 8b ov!
+
+ 10 8c ov! \ CMA select
+
+ \ G Edge
+ 20 90 ov! \ Upper gain
+ 20 91 ov! \ down gain
+ 11 92 ov! \ [7:4] upper coring [3:0] down coring
+ 13 9c ov!
+ 10 9d ov!
+ 84 af ov! \ Hue
+
+ 10 b9 ov!
+ 20 ba ov!
+
+ \ Window size
+ 24 c0 ov!
+ 00 c1 ov!
+ 80 c2 ov!
+ 00 c3 ov!
+ e0 c4 ov!
+
+
+ a0 de ov!
+
+ 15 e5 ov! \ recommend, MEMSPDA
+ 02 e6 ov! \ recommend, MEMSPDB
+ 04 e7 ov! \ recommend, MEMSPDC
+ \ 02 e8 ov! \ TSTFUN, test functions
+ \ [7] Memory Test Mode
+ \ [6] Value Clip Test Mode
+ \ [5] Fix Value Test Mode
+ \ [4] Ramp Test Mode
+ \ [3] Vertical Stripe Pattern Test Mode
+ \ [2] Color Bar Pattern Test Mode
+ \ [1] Reserved
+ \ [0] Value Clip Test Mode Selection for LSB 8 bits
+
+ \ Sensor On
+ 01 00 ov!
+ 01 03 ov! \ SNR Enable
+
+ ( r: ycrcb? ) r> 0= if ( )
+ 04 00 ov! \ IDP
+ cb 12 ov! \ OUTFMT, RGB565 setting
+ then
+;
+
+: (set-mirrored) ( mirrored? -- )
+ 4 ov@ 1 ( mirrored? reg-value bit )
rot if or else invert and then ( reg-value' )
4 ov!
;
+: siv120d-set-mirrored ( mirrored? -- )
+ 0 0 ov! (set-mirrored)
+;
+
+: siv121c-set-mirrored ( mirrored? -- )
+ 1 0 ov! (set-mirrored)
+;
+
: probe-seti ( -- found? )
h# 33 to camera-smb-slave ( )
camera-smb-on ( )
@@ -305,16 +673,28 @@
drop ( )
false exit ( -- false )
then ( regval )
- h# 12 <> if false exit then ( )
- " SETi,SIV120D" " sensor" string-property
+ dup h# 95 = if
+ " SETi,SIV121C" " sensor" string-property
[ifdef] set-sensor-properties
- " seti,siv120d" camera-smb-slave set-sensor-properties
+ " seti,siv121c" camera-smb-slave set-sensor-properties
[then]
+ ['] siv121c-set-mirrored to set-mirrored
+ ['] siv121c-config to camera-config
+ drop true exit
+ then
+
+ dup h# 12 = if
+ " SETi,SIV120D" " sensor" string-property
+[ifdef] set-sensor-properties
+ " seti,siv120d" camera-smb-slave set-sensor-properties
+[then]
+ ['] siv120d-set-mirrored to set-mirrored
+ ['] siv120d-config to camera-config
+ drop true exit
+ then
- ['] seti-set-mirrored to set-mirrored
- ['] seti-config to camera-config
- true
+ drop false
;
\ Chain of sensor recognizers
More information about the openfirmware
mailing list