@awwwwa 非常感谢您的解答,经过与板厂和硬件工程师沟通,有很大可能是layout的走线问题导致,板厂这边已经决定给我寄新版本的硬件板子。
L
liefyuan 发布的帖子
-
回复: T113-s3使用PhoenixSuit的一键刷机功能USB更新EMMC固件400M,一个小时刷成功一次正常吗?
-
回复: T113-s3使用PhoenixSuit的一键刷机功能USB更新EMMC固件400M,一个小时刷成功一次正常吗?
@awwwwa 确认了一下8GB EMMC是妙存科技的 ARTMEM AT70B08G3
1.使用了USB HUB和直接插机箱,都是一直卡在那里。
2.EMMC型号是ARTMEM AT70B08G3。
3.USB连接无法确认是不是不稳定。
4.供电不足也无法确认。
5.emmc布局走线这个也无法确认。您的PhoenixSuit V2.0可以分享一下下载链接吗?
-
T113-s3使用PhoenixSuit的一键刷机功能USB更新EMMC固件400M,一个小时刷成功一次正常吗?
我不知道我是不是个例(大怨种!),我确实使用PhoenixSuit的一键刷机功能USB更新EMMC固件,测试了一个小时约30几次,就TM成功了一次!一次啊!心态真的崩溃了(说实话想把板子扔了!)。
特向大佬们求教。
我在使用REVB-T113开发板,开发板配置是:
- 芯片:T113-s3
- ROM:8GB EMMC
然后使用USB更新EMMC的固件(约400MB)
串口打印记录:
[3493]fes begin commit:5224261 [3495]set pll start [3497]fix vccio detect value:0xc0 [3505]periph0 has been enabled [3508]set pll end [3509][pmu]: bus read error [3512]board init ok [3514]beign to init dram [3516]ZQ value = 0x2e [3518]get_pmu_exist() = -1 [3521]ddr_efuse_type: 0xa [3523]mark_id: 0x60 [3525]trefi:7.8ms [3528][AUTO DEBUG] single rank and full DQ! [3532]ddr_efuse_type: 0xa [3534]mark_id: 0x60 [3536]trefi:7.8ms [3539][AUTO DEBUG] rank 0 row = 13 [3542][AUTO DEBUG] rank 0 bank = 8 [3545][AUTO DEBUG] rank 0 page size = 2 KB [3549]DRAM BOOT DRIVE INFO: V0.32 [3553]DRAM CLK = 792 MHz [3555]DRAM Type = 3 (2:DDR2,3:DDR3) [3558]DRAMC read ODT off. [3561]DRAM ODT value: 0x42. [3564]ddr_efuse_type: 0xa [3566]mark_id: 0x60 [3569]DRAM SIZE =128 M [3571]PLL_DDR_CTRL_REG:0xf8004100 [3574]DRAM_CLK_REG:0xc0000000 [3577][TIMING DEBUG] MR2= 0x18 [3581]DRAM simple test OK. [3583]rtc standby flag is 0x0, super standby flag is 0x0 [3589]init dram ok U-Boot 2018.05-g2a24076 (Feb 22 2022 - 02:02:08 +0000) Allwinner Technology [05.186]CPU: Allwinner Family [05.189]Model: sun8iw20 [05.191]DRAM: 128 MiB [05.195]Relocation Offset is: 04ec5000 [05.221]secure enable bit: 0 [05.224]CPU=1008 MHz,PLL6=600 Mhz,AHB=200 Mhz, APB1=100Mhz MBus=300Mhz [05.230]gic: normal mode [05.232]flash init start [05.235]workmode = 16,storage type = 0 try card 2 set card number 2 get card number 2 [05.242][mmc]: mmc driver ver uboot2018:2021-09-07 19:43:00 [05.249][mmc]: Is not Boot mode! [05.252][mmc]: SUNXI SDMMC Controller Version:0x50310 [05.263][mmc]: ************Try SD card 2************ [05.268][mmc]: mmc 2 cmd timeout 100 status 100 [05.272][mmc]: smc 2 err, cmd 8, RTO [05.276][mmc]: mmc 2 close bus gating and reset [05.281][mmc]: mmc 2 cmd timeout 100 status 100 [05.285][mmc]: smc 2 err, cmd 55, RTO [05.288][mmc]: mmc 2 close bus gating and reset [05.293][mmc]: ************Try MMC card 2************ [05.316][mmc]: mmc 2 cmd timeout 100 status 100 [05.320][mmc]: smc 2 err, cmd 8, RTO [05.323][mmc]: mmc 2 close bus gating and reset [05.329][mmc]: mmc 2 cmd timeout 100 status 100 [05.333][mmc]: smc 2 err, cmd 55, RTO [05.336][mmc]: mmc 2 close bus gating and reset [05.352][mmc]: gen_tuning_blk_bus8: total blk 10 [05.356][mmc]: gen_tuning_blk_bus4: total blk 6 [05.360][mmc]: Using 4 bit tuning now [05.364][mmc]: write_tuning_try_freq: write ok [05.369][mmc]: Pattern compare ok [05.372][mmc]: Write tuning pattern ok [05.375][mmc]: ================== HSSDR52_SDR25... [05.380][mmc]: skip freq 400000 [05.383][mmc]: skip freq 25000000 [05.386][mmc]: freq: 2-50000000-64-4 [05.533][mmc]: [0-54|55] [05.536][mmc]: ================== HSDDR52_DDR50... [05.540][mmc]: skip freq 400000 [05.543][mmc]: freq: 1-25000000-64-4 [05.676][mmc]: freq: 2-50000000-64-4 [05.749][mmc]: [0-48|49] [05.751][mmc]: [5-47|43] [05.754][mmc]: DS26/SDR12: 0xffffffff 0xffffffff [05.758][mmc]: HSSDR52/SDR25: 0xff1bffff 0xffffffff [05.762][mmc]: HSDDR52/DDR50: 0xff1a18ff 0xffffffff [05.767][mmc]: HS200/SDR104: 0xffffffff 0xffffffff [05.771][mmc]: HS400: 0xffffffff 0xffffffff [05.775][mmc]: HS400: 0xffffffff 0xffffffff [05.779][mmc]: Best spd md: 2-HSDDR52/DDR50, freq: 2-50000000, Bus width: 4 [05.786]Loading Environment from SUNXI_FLASH... OK [05.791]try to burn key [05.793]out of usb burn from boot: not boot mode Hit any key to stop autoboot: 0 sunxi work mode=0x10 run usb efex buf queue page size = 65536 delay time 2500 weak:otg_phy_config usb init ok set address 0x25 set address 0x25 ok set address 0x26 set address 0x26 ok SUNXI_EFEX_ERASE_TAG erase_flag = 0x1 origin_erase_flag = 0x1 FEX_CMD_fes_verify_status FEX_CMD_fes_verify last err=0 the 0 mbr table is ok the 1 mbr table is ok the 2 mbr table is ok the 3 mbr table is ok *************MBR DUMP*************** total mbr part 8 part[0] name :boot-resource part[0] classname :DISK part[0] addrlo :0x8000 part[0] lenlo :0x8686 part[0] user_type :32768 part[0] keydata :0 part[0] ro :0 part[1] name :env part[1] classname :DISK part[1] addrlo :0x10686 part[1] lenlo :0x800 part[1] user_type :32768 part[1] keydata :0 part[1] ro :0 part[2] name :env-redund part[2] classname :DISK part[2] addrlo :0x10e86 part[2] lenlo :0x800 part[2] user_type :32768 part[2] keydata :0 part[2] ro :0 part[3] name :boot part[3] classname :DISK part[3] addrlo :0x11686 part[3] lenlo :0x9c40 part[3] user_type :32768 part[3] keydata :0 part[3] ro :0 part[4] name :rootfs part[4] classname :DISK part[4] addrlo :0x1b2c6 part[4] lenlo :0x200000 part[4] user_type :32768 part[4] keydata :0 part[4] ro :0 part[5] name :dsp0 part[5] classname :DISK part[5] addrlo :0x21b2c6 part[5] lenlo :0x800 part[5] user_type :32768 part[5] keydata :0 part[5] ro :0 part[6] name :private part[6] classname :DISK part[6] addrlo :0x21bac6 part[6] lenlo :0x8000 part[6] user_type :32768 part[6] keydata :0 part[6] ro :0 part[7] name :UDISK part[7] classname :DISK part[7] addrlo :0x223ac6 part[7] lenlo :0x0 part[7] user_type :33024 part[7] keydata :0 part[7] ro :0 total part: 9 mbr 0, 8000, 8000 boot-resource 1, 8686, 8000 env 2, 800, 8000 env-redund 3, 800, 8000 boot 4, 9c40, 8000 rootfs 5, 200000, 8000 dsp0 6, 800, 8000 private 7, 8000, 8000 UDISK 8, 0, 8100 [08.933]erase all part start need erase flash: 1 private part exist GPT:boot-resource: 12000 1a685 GPT:env : 1a686 1ae85 GPT:env-redund : 1ae86 1b685 GPT:boot : 1b686 252c5 GPT:rootfs : 252c6 2252c5 GPT:dsp0 : 2252c6 225ac5 GPT:private : 225ac6 22dac5 GPT:UDISK : 22dac6 e73fde begin to store data part 0 name boot-resource keydata = 0x0 part 1 name env keydata = 0x0 part 2 name env-redund keydata = 0x0 part 3 name boot keydata = 0x0 part 4 name rootfs keydata = 0x0 part 5 name dsp0 keydata = 0x0 part 6 name private keydata = 0x0 find keypart private keypart read start: 0x21bac6, sectors 0x8000 keypart part private read 0x21bac6, sectors 0x8000 part 7 name UDISK keydata = 0x0 begin to erase [09.382]erase all part start card2 erase boot0 erase env part [09.394][mmc]: erase from: 108544, to: 109567, cnt: 1024, erase_group: 1024 [09.402][mmc]: sunxi_mmc_do_send_cmd_common: cmd 38 wait rsp busy 0x2 ms [09.409][mmc]: mmc_mmc_erase: some sectors in emmc are ignored! [09.414][mmc]: --0: from108166 nr378 [09.418][mmc]: --1: from109568 nr646 erase env-redund part [09.437][mmc]: erase from: 110592, to: 111615, cnt: 1024, erase_group: 1024 [09.445][mmc]: sunxi_mmc_do_send_cmd_common: cmd 38 wait rsp busy 0x1 ms [09.452][mmc]: mmc_mmc_erase: some sectors in emmc are ignored! [09.457][mmc]: --0: from110214 nr378 [09.461][mmc]: --1: from111616 nr646 erase boot part [09.479][mmc]: erase from: 112640, to: 151551, cnt: 38912, erase_group: 1024 [09.498][mmc]: sunxi_mmc_do_send_cmd_common: cmd 38 wait rsp busy 0xc ms [09.504][mmc]: mmc_mmc_erase: some sectors in emmc are ignored! [09.510][mmc]: --0: from112262 nr378 [09.513][mmc]: --1: from151552 nr710 erase rootfs part [09.532][mmc]: erase from: 152576, to: 2248703, cnt: 2096128, erase_group: 1024 [09.623][mmc]: sunxi_mmc_do_send_cmd_common: cmd 38 wait rsp busy 0x54 ms [09.630][mmc]: mmc_mmc_erase: some sectors in emmc are ignored! [09.635][mmc]: --0: from152262 nr314 [09.639][mmc]: --1: from2248704 nr710 erase dsp0 part [09.658][mmc]: erase from: 2249728, to: 2250751, cnt: 1024, erase_group: 1024 [09.666][mmc]: sunxi_mmc_do_send_cmd_common: cmd 38 wait rsp busy 0x2 ms [09.673][mmc]: mmc_mmc_erase: some sectors in emmc are ignored! [09.678][mmc]: --0: from2249414 nr314 [09.682][mmc]: --1: from2250752 nr710 erase private part [09.700][mmc]: erase from: 2251776, to: 2283519, cnt: 31744, erase_group: 1024 [09.718][mmc]: sunxi_mmc_do_send_cmd_common: cmd 38 wait rsp busy 0xb ms [09.725][mmc]: mmc_mmc_erase: some sectors in emmc are ignored! [09.730][mmc]: --0: from2251462 nr314 [09.734][mmc]: --1: from2283520 nr710 erase UDISK part sunxi_sprite_mmc_phyerase: @nr is 0, erase from @from to end [09.758][mmc]: erase from: 2284544, to: 15154175, cnt: 12869632, erase_group: 1024 [09.784][mmc]: sunxi_mmc_do_send_cmd_common: cmd 38 wait rsp busy 0x13 ms [09.791][mmc]: mmc_mmc_erase: some sectors in emmc are ignored! [09.796][mmc]: --0: from2284230 nr314 [09.800][mmc]: --1: from15154176 nr1023 card erase all finish erase rewrite write primary GPT success write Backup GPT success [09.883]update partition map keypart write start: 0x21bac6, sectors 0x8000 flash exit SUNXI_EFEX_MBR_TAG mbr size = 0x10000 write primary GPT success write Backup GPT success [10.281]update partition map FEX_CMD_fes_verify_status FEX_CMD_fes_verify last err=0 ******Has init FEX_CMD_fes_verify_value, start 0x8000, size high 0x0:low 0xdad400 FEX_CMD_fes_verify_value 0xaa6ef260 FEX_CMD_fes_verify_value, start 0x10686, size high 0x0:low 0x20000 FEX_CMD_fes_verify_value 0x62389c75 FEX_CMD_fes_verify_value, start 0x10e86, size high 0x0:low 0x20000 FEX_CMD_fes_verify_value 0x62389c75 FEX_CMD_fes_verify_value, start 0x11686, size high 0x0:low 0x118a000 FEX_CMD_fes_verify_value 0xb7bfb965
这是开发板上对应的更新固件的描述:
-
回复: T113驱动ov5640 报错
@null037 大佬,我是使用的mangopi的MQ-R,现在是一直都识别不出来ov5640摄像头:
[ 3.489803] vin_csi 5801000.csi: Adding to iommu group 0 [ 3.496961] sunxi-vin-core 5809000.vinc: Adding to iommu group 0 [ 3.505032] [VIN_WARN]get csi isp clk fail [ 3.509630] [VIN_WARN]get csi isp src clk fail [ 3.514654] [VIN_WARN]get csi mipi clk fail [ 3.519368] [VIN_WARN]get csi mipi src clk fail [ 3.524528] [VIN_WARN]get csi isp clk fail [ 3.529139] [VIN_WARN]Get isp reset control fail [ 3.535348] ov5640 2-003c: endpoint node not found [ 3.540781] ov5640: probe of 2-003c failed with error -22 [ 3.547061] [VIN_ERR]registering ov5640, No such device! [ 3.553072] [VIN]vinc1 is null
请问您这边是怎么解决这个问题的呢?
-
回复: 求救:Tina T113-s3(MQ-R) DVP摄像头(OV5640)无法生成/dev/video0设备
修改了一下board.dts文件中摄像头设备树:
&vind0 { csi_top = <378000000>; csi_isp = <327000000>; status = "okay"; /* enable twi and ver1 spi-nand max freq 30M */ sensor0: sensor@5809470 { reg = <0x0 0x05809470 0x0 0x10>; device_type = "sensor0"; compatible = "allwinner,sunxi-sensor"; sensor0_mname = "ov5640"; sensor0_twi_cci_id = <2>; sensor0_twi_addr = <0x78>; sensor0_mclk_id = <0>; sensor0_pos = "rear"; sensor0_isp_used = <0>; sensor0_fmt = <0>; sensor0_stby_mode = <0>; sensor0_vflip = <0>; sensor0_hflip = <0>; sensor0_iovdd-supply = <>; sensor0_iovdd_vol = <>; sensor0_avdd-supply = <>; sensor0_avdd_vol = <>; sensor0_dvdd-supply = <>; sensor0_dvdd_vol = <>; sensor0_power_en = <>; sensor0_reset = <&pio PB 5 GPIO_ACTIVE_LOW>; sensor0_pwdn = <&pio PB 4 GPIO_ACTIVE_LOW>; flash_handle = <&flash0>; act_handle = <&actuator0>; sensor0_sm_vs = <>; device_id = <0>; status = "okay"; }; vinc0: vinc@5809000 { compatible = "allwinner,sunxi-vin-core"; device_type = "vinc0"; reg = <0x0 0x05809000 0x0 0x200>; interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>; vinc0_csi_sel = <0>; vinc0_mipi_sel = <0xff>; vinc0_isp_sel = <0>; vinc0_tdm_rx_sel = <0xff>; vinc0_rear_sensor_sel = <0>; vinc0_front_sensor_sel = <0>; vinc0_sensor_list = <0>; device_id = <0>; iommus = <&mmu_aw 1 1>; status = "okay"; }; };
还是识别不出来:
[ 3.282172] get ctp_gesture_wakeup fail, no gesture wakeup [ 3.288343] gt9xxnew_ts 2-0014: 2-0014 supply ctp not found, using dummy regulator [ 3.481837] input: gt9xxnew_ts as /devices/virtual/input/input1 [ 3.489803] vin_csi 5801000.csi: Adding to iommu group 0 [ 3.496961] sunxi-vin-core 5809000.vinc: Adding to iommu group 0 [ 3.505032] [VIN_WARN]get csi isp clk fail [ 3.509630] [VIN_WARN]get csi isp src clk fail [ 3.514654] [VIN_WARN]get csi mipi clk fail [ 3.519368] [VIN_WARN]get csi mipi src clk fail [ 3.524528] [VIN_WARN]get csi isp clk fail [ 3.529139] [VIN_WARN]Get isp reset control fail [ 3.535348] ov5640 2-003c: endpoint node not found [ 3.540781] ov5640: probe of 2-003c failed with error -22 [ 3.547061] [VIN_ERR]registering ov5640, No such device! [ 3.553072] [VIN]vinc1 is null
检测一下twi2:
root@TinaLinux:/# i2cdetect -r -y 2 0 1 2 3 4 5 6 7 8 9 a b c d e f[ 54.824048] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x3) 00: [ 54.836025] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x4) -- [ 54.844682] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x5) -- [ 54.852541] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x6) -- [ 54.860239] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x7) -- [ 54.868087] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x8) -- [ 54.875834] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x9) -- [ 54.883681] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0xa) -- [ 54.891383] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0xb) -- [ 54.899259] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0xc) -- [ 54.906986] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0xd) -- [ 54.914835] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0xe) -- [ 54.922575] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0xf) -- [ 54.930413] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x10) -- 10: [ 54.938256] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x11) -- [ 54.946718] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x12) -- [ 54.954545] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x13) -- -- UU [ 54.962535] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x15) -- [ 54.970826] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x16) -- [ 54.978822] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x17) -- [ 54.986731] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x18) -- [ 54.994696] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x19) -- [ 55.002636] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x1a) -- [ 55.010581] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x1b) -- [ 55.018499] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x1c) -- [ 55.026460] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x1d) -- [ 55.034387] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x1e) -- [ 55.042367] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x1f) -- [ 55.050271] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x20) 20: [ 55.058255] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x21) -- [ 55.066336] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x22) -- [ 55.074257] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x23) -- [ 55.082110] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x24) -- [ 55.090020] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x25) -- [ 55.097940] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x26) -- [ 55.105815] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x27) -- [ 55.113658] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x28) -- [ 55.121588] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x29) -- [ 55.129446] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x2a) -- [ 55.137367] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x2b) -- [ 55.145219] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x2c) -- [ 55.153160] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x2d) -- [ 55.160974] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x2e) -- [ 55.168954] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x2f) -- [ 55.176780] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x30) -- 30: [ 55.184736] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x31) -- [ 55.193067] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x32) -- [ 55.200995] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x33) -- [ 55.208838] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x34) -- [ 55.216787] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x35) -- [ 55.224659] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x36) -- [ 55.232561] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x37) -- [ 55.240402] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x38) -- -- [ 55.249135] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x39) -- [ 55.257044] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x3a) -- [ 55.265065] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x3b) -- [ 55.272997] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x3c) -- [ 55.280979] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x3d) -- [ 55.288888] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x3e) -- [ 55.300106] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x3f) -- [ 55.308076] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x40) 40: [ 55.316033] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x41) -- [ 55.324132] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x42) -- [ 55.332082] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x43) -- [ 55.339879] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x44) -- -- [ 55.352152] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x45) -- [ 55.360282] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x46) -- [ 55.368419] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x47) -- [ 55.376354] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x48) -- [ 55.384355] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x49) -- [ 55.392276] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x4a) -- [ 55.400230] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x4b) -- [ 55.408181] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x4c) -- [ 55.416142] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x4d) -- [ 55.424060] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x4e) -- [ 55.432039] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x4f) -- [ 55.439945] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x50) 50: [ 55.447902] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x51) -- [ 55.455990] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x52) -- -- [ 55.463976] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x53) -- [ 55.472029] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x54) -- [ 55.479979] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x55) -- [ 55.487938] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x56) -- [ 55.495928] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x57) -- [ 55.503856] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x58) -- [ 55.511822] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x59) -- [ 55.519709] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x5a) -- [ 55.527702] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x5b) -- [ 55.535611] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x5c) -- [ 55.543571] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x5d) -- [ 55.551468] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x5e) -- [ 55.559440] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x5f) -- [ 55.567404] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x60) 60: [ 55.575348] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x61) -- [ 55.583464] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x62) -- [ 55.591380] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x63) -- [ 55.599221] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x64) -- [ 55.607176] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x65) -- [ 55.615037] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x66) -- [ 55.622938] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x67) -- [ 55.630767] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x68) -- [ 55.638706] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x69) -- [ 55.646597] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x6a) -- [ 55.654491] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x6b) -- [ 55.662334] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x6c) -- [ 55.670262] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x6d) -- [ 55.678121] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x6e) -- [ 55.686038] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x6f) -- [ 55.693914] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x70) -- 70: [ 55.701841] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x71) -- [ 55.710176] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x72) -- [ 55.718109] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x73) -- [ 55.725955] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x74) -- [ 55.733927] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x75) -- [ 55.741765] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x76) -- [ 55.749673] sunxi-i2c sunxi-i2c2: engine-mode: xfer failed(dev addr:0x77) -- --
-
求救:Tina T113-s3(MQ-R) DVP摄像头(OV5640)无法生成/dev/video0设备
改了默认串口为uart1,因为uart0占用了csi接口的引脚,显示的错误基本上都没有了,现在就是无法识别到ov5640,OV5640摄像头确认是好的,在正点原子板子上试过的。
板子是mangopi的MQ-R T113-s3。
触摸屏没有问题,都是挂载在twi2上面的:
[ 3.449598] vin_csi 5801000.csi: Adding to iommu group 0 [ 3.458434] sunxi-vin-core 5809000.vinc: Adding to iommu group 0 [ 3.466527] [VIN_WARN]get csi isp clk fail [ 3.471127] [VIN_WARN]get csi isp src clk fail [ 3.476151] [VIN_WARN]get csi mipi clk fail [ 3.480842] [VIN_WARN]get csi mipi src clk fail [ 3.485956] [VIN_WARN]get csi isp clk fail [ 3.490560] [VIN_WARN]Get isp reset control fail [ 3.496426] ov5640 2-003c: endpoint node not found [ 3.501868] ov5640: probe of 2-003c failed with error -22 [ 3.508118] [VIN_ERR]registering ov5640, No such device! [ 3.514136] [VIN]vinc1 is null
上电打印信息:
[ 2.390009] [VIN_WARN]sensor_helper_probe: cannot get sensor0_cameravdd supply, setting it to NULL! [ 2.400196] [VIN_WARN]sensor_helper_probe: cannot get sensor0_iovdd supply, setting it to NULL! [ 2.409990] [VIN_WARN]sensor_helper_probe: cannot get sensor0_avdd supply, setting it to NULL! [ 2.419666] [VIN_WARN]sensor_helper_probe: cannot get sensor0_dvdd supply, setting it to NULL! ... [ 3.124069] sunxi-i2c sunxi-i2c2: sunxi-i2c2 supply twi not found, using dummy regulator [ 3.133772] sunxi-i2c sunxi-i2c2: probe success [ 3.140117] sun8iw20-pinctrl 2000000.pinctrl: 2000000.pinctrl supply vcc-pb not found, using dummy regulator [ 3.152419] sunxi-audio-card 203605c.soundspdif: use dummy codec for simple card. [ 3.160969] debugfs: Directory '2036000.spdif' with parent 'sndspdif' already present! [ 3.170318] sunxi-audio-card 203605c.soundspdif: snd-soc-dummy-dai <-> 2036000.spdif mapping ok [ 3.181085] get ehci0-controller wakeup-source is fail. [ 3.187098] sunxi ehci0-controller don't init wakeup source [ 3.193415] [sunxi-ehci0]: probe, pdev->name: 4101000.ehci0-controller, sunxi_ehci: 0xc0c6e1e0, 0x:c88c9000, irq_no:37 [ 3.205429] [sunxi-ehci0]: Not init ehci0 [ 3.210240] get ohci0-controller wakeup-source is fail. [ 3.216239] sunxi ohci0-controller don't init wakeup source [ 3.222513] [sunxi-ohci0]: probe, pdev->name: 4101400.ohci0-controller, sunxi_ohci: 0xc0c6e470 [ 3.232184] [sunxi-ohci0]: Not init ohci0 [ 3.238012] get usb_detect_mode is fail, -22 [ 3.242854] get det_vbus is fail, -84 [ 3.246959] get id is fail, -84 [ 3.251382] get ctp_power is fail, -22 [ 3.255654] get ctp_power_ldo_vol is fail, -22 [ 3.260649] sunxi_ctp_startup: ctp_power_io is invalid. [ 3.266557] get ctp_gesture_wakeup fail, no gesture wakeup [ 3.272740] gt9xxnew_ts 2-0014: 2-0014 supply ctp not found, using dummy regulator [ 3.461823] input: gt9xxnew_ts as /devices/virtual/input/input1 [ 3.469793] vin_csi 5801000.csi: Adding to iommu group 0 [ 3.478700] sunxi-vin-core 5809000.vinc: Adding to iommu group 0 [ 3.486738] [VIN_WARN]get csi isp clk fail [ 3.491338] [VIN_WARN]get csi isp src clk fail [ 3.496359] [VIN_WARN]get csi mipi clk fail [ 3.501071] [VIN_WARN]get csi mipi src clk fail [ 3.506226] [VIN_WARN]get csi isp clk fail [ 3.510836] [VIN_WARN]Get isp reset control fail [ 3.517036] ov5640 2-003c: endpoint node not found [ 3.522495] ov5640: probe of 2-003c failed with error -22 [ 3.528759] [VIN_ERR]registering ov5640, No such device! [ 3.534777] [VIN]vinc1 is null
这是vin相关的:
&twi2 { clock-frequency = <400000>; pinctrl-0 = <&twi2_pins_a>; pinctrl-1 = <&twi2_pins_b>; pinctrl-names = "default", "sleep"; dmas = <&dma 45>, <&dma 45>; dma-names = "tx", "rx"; status = "okay"; ctp@14 { compatible = "allwinner,goodix"; device_type = "ctp"; reg = <0x14>; status = "okay"; ctp_name = "gt9xxnew_ts"; ctp_twi_id = <0x2>; ctp_twi_addr = <0x14>; ctp_screen_max_x = <0x320>; ctp_screen_max_y = <0x1e0>; ctp_revert_x_flag = <0x0>; ctp_revert_y_flag = <0x0>; ctp_exchange_x_y_flag = <0x0>; ctp_int_port = <&pio PB 3 GPIO_ACTIVE_HIGH>; ctp_wakeup = <&pio PB 2 GPIO_ACTIVE_HIGH>; /*ctp-supply = <®_aldo2>;*/ /*ctp_power_ldo = <®_aldo2>;*/ /*ctp_power_ldo_vol = <3300>;*/ }; }; &vind0 { csi_top = <378000000>; csi_isp = <327000000>; status = "okay"; /* enable twi and ver1 spi-nand max freq 30M */ actuator0: actuator@5809450 { device_type = "actuator0"; actuator0_name = "ad5820_act"; actuator0_slave = <0x18>; actuator0_af_pwdn = <>; actuator0_afvdd = "afvcc-csi"; actuator0_afvdd_vol = <2800000>; status = "okay"; }; flash0: flash@5809460 { device_type = "flash0"; flash0_type = <2>; flash0_en = <>; flash0_mode = <>; flash0_flvdd = ""; flash0_flvdd_vol = <>; device_id = <0>; status = "okay"; }; sensor0: sensor@5809470 { reg = <0x0 0x05809470 0x0 0x10>; device_type = "sensor0"; compatible = "allwinner,sunxi-sensor"; sensor0_mname = "ov5640"; sensor0_twi_cci_id = <2>; sensor0_twi_addr = <0x78>; sensor0_mclk_id = <0>; sensor0_pos = "rear"; sensor0_isp_used = <0>; sensor0_fmt = <0>; sensor0_stby_mode = <0>; sensor0_vflip = <>; sensor0_hflip = <>; sensor0_iovdd-supply = <>; sensor0_iovdd_vol = <2800000>; sensor0_avdd-supply = <0>; sensor0_avdd_vol = <2800000>; sensor0_dvdd-supply = <>; sensor0_dvdd_vol = <1200000>; sensor0_power_en = <>; sensor0_reset = <&pio PB 5 GPIO_ACTIVE_LOW>; sensor0_pwdn = <&pio PB 4 GPIO_ACTIVE_LOW>; flash_handle = <&flash0>; act_handle = <&actuator0>; sensor0_sm_vs = <>; device_id = <0>; status = "okay"; }; sensor1:sensor@5809480 { device_type = "sensor1"; sensor1_mname = "ov5647"; sensor1_twi_cci_id = <3>; sensor1_twi_addr = <0x6c>; sensor1_mclk_id = <1>; sensor1_pos = "front"; sensor1_isp_used = <0>; sensor1_fmt = <0>; sensor1_stby_mode = <0>; sensor1_vflip = <0>; sensor1_hflip = <0>; sensor1_iovdd-supply = <>; sensor1_iovdd_vol = <>; sensor1_avdd-supply = <>; sensor1_avdd_vol = <>; sensor1_dvdd-supply = <>; sensor1_dvdd_vol = <>; sensor1_power_en = <>; sensor1_reset = <&pio PE 7 GPIO_ACTIVE_LOW>; sensor1_pwdn = <&pio PE 6 GPIO_ACTIVE_LOW>; status = "disabled"; }; vinc0:vinc@5809000 { compatible = "allwinner,sunxi-vin-core"; device_type = "vinc0"; vinc0_csi_sel = <0>; vinc0_mipi_sel = <0xff>; vinc0_isp_sel = <0>; vinc0_isp_tx_ch = <0>; vinc0_tdm_rx_sel = <0xff>; vinc0_rear_sensor_sel = <0>; vinc0_front_sensor_sel = <1>; vinc0_sensor_list = <0>; status = "okay"; }; vinc1:vinc@5809200 { vinc1_csi_sel = <0>; vinc1_mipi_sel = <0xff>; vinc1_isp_sel = <0>; vinc1_isp_tx_ch = <1>; vinc1_tdm_rx_sel = <0xff>; vinc1_rear_sensor_sel = <0>; vinc1_front_sensor_sel = <1>; vinc1_sensor_list = <0>; status = "disabled"; }; };
触摸已经调好了,没有问题。
这是完整的board.dts
/* * Allwinner Technology CO., Ltd. */ /dts-v1/; /* optee used 7MB: SHM 2M: OS: 1M: TA:4M*/ /memreserve/ 0x41B00000 0x00100000; /* DSP used 1MB */ /*/memreserve/ 0x42000000 0x00100000;*/ #include "sun8iw20p1.dtsi" /{ model = "sun8iw20"; compatible = "allwinner,r528", "arm,sun8iw20p1"; reg_vdd_cpu: vdd-cpu { compatible = "sunxi-pwm-regulator"; pwms = <&pwm 3 5000 0>; regulator-name = "vdd_cpu"; regulator-min-microvolt = <810000>; regulator-max-microvolt = <1160000>; regulator-ramp-delay = <25>; regulator-always-on; regulator-boot-on; status = "okay"; }; reg_usb1_vbus: usb1-vbus { compatible = "regulator-fixed"; regulator-name = "usb1-vbus"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; regulator-enable-ramp-delay = <1000>; gpio = <&pio PB 10 GPIO_ACTIVE_HIGH>; enable-active-high; }; }; &cpu0 { cpu-supply = <®_vdd_cpu>; }; &pio { sdc0_pins_a: sdc0@0 { allwinner,pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5"; allwinner,function = "sdc0"; allwinner,muxsel = <2>; allwinner,drive = <3>; allwinner,pull = <1>; pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5"; function = "sdc0"; drive-strength = <30>; bias-pull-up; power-source = <3300>; }; sdc0_pins_b: sdc0@1 { pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5"; function = "sdc0"; drive-strength = <30>; bias-pull-up; power-source = <1800>; }; sdc0_pins_c: sdc0@2 { pins = "PF0", "PF1", "PF2", "PF3", "PF4", "PF5"; function = "gpio_in"; }; /* TODO: add jtag pin */ sdc0_pins_d: sdc0@3 { pins = "PF2", "PF4"; function = "uart0"; drive-strength = <10>; bias-pull-up; }; sdc0_pins_e: sdc0@4 { pins = "PF0", "PF1", "PF3", "PF5"; function = "jtag"; drive-strength = <10>; bias-pull-up; }; sdc1_pins_a: sdc1@0 { pins = "PG0", "PG1", "PG2", "PG3", "PG4", "PG5"; function = "sdc1"; drive-strength = <30>; bias-pull-up; }; sdc1_pins_b: sdc1@1 { pins = "PG0", "PG1", "PG2", "PG3", "PG4", "PG5"; function = "gpio_in"; }; sdc2_pins_a: sdc2@0 { allwinner,pins = "PC2", "PC3", "PC4", "PC5", "PC6", "PC7"; allwinner,function = "sdc2"; allwinner,muxsel = <3>; allwinner,drive = <3>; allwinner,pull = <1>; pins = "PC2", "PC3", "PC4", "PC5", "PC6", "PC7"; function = "sdc2"; drive-strength = <30>; bias-pull-up; }; sdc2_pins_b: sdc2@1 { pins = "PC2", "PC3", "PC4", "PC5", "PC6", "PC7"; function = "gpio_in"; }; wlan_pins_a:wlan@0 { pins = "PG11"; function = "clk_fanout1"; }; // uart0_pins_a: uart0_pins@0 { /* For mangopi board */ // pins = "PE2", "PE3"; // function = "uart0"; // drive-strength = <10>; // bias-pull-up; // }; // uart0_pins_b: uart0_pins@1 { /* For mangopi board */ // pins = "PE2", "PE3"; // function = "gpio_in"; // }; uart1_pins_a: uart1_pins@0 { // For EVB1 board pins = "PG6", "PG7"; function = "uart1"; drive-strength = <10>; bias-pull-up; }; uart1_pins_b: uart1_pins { // For EVB1 board pins = "PG6", "PG7"; function = "gpio_in"; }; uart2_pins_a: uart2_pins@0 { /* For EVB1 board */ pins = "PC0", "PC1"; function = "uart2"; drive-strength = <10>; bias-pull-up; }; uart2_pins_b: uart2_pins@1 { /* For EVB1 board */ pins = "PC0", "PC1"; function = "gpio_in"; }; uart3_pins_a: uart3_pins@0 { /* For EVB1 board */ pins = "PD10", "PD11"; function = "uart3"; muxsel = <5>; drive-strength = <10>; bias-pull-up; }; twi0_pins_a: twi0@0 { pins = "PB10", "PB11"; /*sck sda*/ function = "twi0"; drive-strength = <10>; }; twi0_pins_b: twi0@1 { pins = "PB10", "PB11"; function = "gpio_in"; }; twi1_pins_a: twi1@0 { pins = "PB4", "PB5"; function = "twi1"; drive-strength = <10>; }; twi1_pins_b: twi1@1 { pins = "PB4", "PB5"; function = "gpio_in"; }; twi2_pins_a: twi2@0 { pins = "PE12", "PE13"; function = "twi2"; drive-strength = <10>; }; twi2_pins_b: twi2@1 { pins = "PE12", "PE13"; function = "gpio_in"; }; twi3_pins_a: twi3@0 { pins = "PE6", "PE7"; function = "twi3"; drive-strength = <10>; }; twi3_pins_b: twi3@1 { pins = "PE6", "PE7"; function = "gpio_in"; }; /* gmac_pins_a: gmac@0 { pins = "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15"; function = "gmac0"; drive-strength = <10>; }; gmac_pins_b: gmac@1 { pins = "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15"; function = "gpio_in"; }; */ dmic_pins_a: dmic@0 { /* DMIC_PIN: CLK, DATA0, DATA1, DATA2, DATA3*/ pins = "PB12", "PB11", "PB10", "PE14", "PB8"; function = "dmic"; drive-strength = <20>; bias-disable; }; dmic_pins_b: dmic@1 { pins = "PB12", "PB11", "PB10", "PE14", "PB8"; function = "io_disabled"; drive-strength = <20>; bias-disable; }; daudio0_pins_a: daudio0@0 { pins = "PE17", "PE16", "PE15", "PE14", "PE13"; function = "i2s0"; drive-strength = <20>; bias-disable; }; daudio0_pins_b: daudio0_sleep@0 { pins = "PE17", "PE16", "PE15", "PE14", "PE13"; function = "io_disabled"; drive-strength = <20>; bias-disable; }; daudio1_pins_a: daudio1@0 { pins = "PG11", "PG12", "PG13", "PG14", "PG15"; function = "i2s1"; drive-strength = <20>; bias-disable; }; daudio1_pins_b: daudio1_sleep@0 { pins = "PG11", "PG12", "PG13", "PG14", "PG15"; function = "io_disabled"; drive-strength = <20>; bias-disable; }; daudio2_pins_a: daudio2@0 { /* I2S_PIN: MCLK, BCLK, LRCK */ pins = "PF6", "PF3", "PF5"; function = "i2s2"; drive-strength = <20>; bias-disable; }; daudio2_pins_b: daudio2@1 { /* I2S_PIN: DOUT0 */ pins = "PF1"; function = "i2s2_dout"; drive-strength = <20>; bias-disable; }; daudio2_pins_c: daudio2@2 { /* I2S_PIN: DIN0 */ pins = "PF0"; function = "i2s2_din"; drive-strength = <20>; bias-disable; }; daudio2_pins_d: daudio2_sleep@0 { pins = "PF6", "PF3", "PF5", "PF1", "PF0"; function = "io_disabled"; drive-strength = <20>; bias-disable; }; spdif_pins_a: spdif@0 { /* SPDIF_PIN: SPDIF_OUT */ pins = "PG18"; function = "spdif"; drive-strength = <20>; bias-disable; }; spdif_pins_b: spdif_sleep@0 { pins = "PG18"; function = "io_disabled"; drive-strength = <20>; bias-disable; }; spi0_pins_a: spi0@0 { pins = "PC2", "PC4", "PC5"; /* clk, mosi, miso */ function = "spi0"; muxsel = <2>; drive-strength = <10>; }; spi0_pins_b: spi0@1 { pins = "PC3", "PC7", "PC6"; function = "spi0"; muxsel = <2>; drive-strength = <10>; bias-pull-up; /* cs, hold, wp should be pulled up */ }; spi0_pins_c: spi0@2 { pins = "PC2", "PC3", "PC4", "PC5","PC6", "PC7"; function = "gpio_in"; muxsel = <0>; drive-strength = <10>; }; spi1_pins_a: spi1@0 { pins = "PD11", "PD12", "PD13"; /* clk, mosi, miso */ function = "spi1"; drive-strength = <10>; }; spi1_pins_b: spi1@1 { pins = "PD10", "PD14", "PD15"; function = "spi1"; drive-strength = <10>; bias-pull-up; /* cs, hold, wp should be pulled up */ }; spi1_pins_c: spi1@2 { pins = "PD10", "PD11", "PD12", "PD13","PD14", "PD15"; function = "gpio_in"; drive-strength = <10>; }; ledc_pins_a: ledc@0 { pins = "PC0"; function = "ledc"; drive-strength = <10>; }; ledc_pins_b: ledc@1 { pins = "PC0"; function = "gpio_in"; }; pwm0_pin_a: pwm0@0 { pins = "PD16"; function = "pwm0"; drive-strength = <10>; bias-pull-up; }; pwm0_pin_b: pwm0@1 { pins = "PD16"; function = "gpio_in"; bias-disable; }; pwm2_pin_a: pwm2@0 { pins = "PD18"; function = "pwm2"; drive-strength = <10>; bias-pull-up; }; pwm2_pin_b: pwm2@1 { pins = "PD18"; function = "gpio_out"; }; pwm7_pin_a: pwm7@0 { pins = "PD22"; function = "pwm7"; drive-strength = <10>; bias-pull-up; }; pwm7_pin_b: pwm7@1 { pins = "PD22"; function = "gpio_in"; }; s_cir0_pins_a: s_cir@0 { pins = "PB7"; function = "ir"; drive-strength = <10>; bias-pull-up; }; s_cir0_pins_b: s_cir@1 { pins = "PB7"; function = "gpio_in"; }; ir1_pins_a: ir1@0 { pins = "PB0"; function = "ir"; drive-strength = <10>; bias-pull-up; }; ir1_pins_b: ir1@1 { pins = "PB0"; function = "gpio_in"; }; }; // &uart0 { // pinctrl-names = "default", "sleep"; // pinctrl-0 = <&uart0_pins_a>; // pinctrl-1 = <&uart0_pins_b>; // status = "okay"; // }; &uart1 { pinctrl-names = "default", "sleep"; pinctrl-0 = <&uart1_pins_a>; pinctrl-1 = <&uart1_pins_b>; status = "okay"; }; &uart2 { pinctrl-names = "default", "sleep"; pinctrl-0 = <&uart2_pins_a>; pinctrl-1 = <&uart2_pins_b>; status = "disabled"; }; &uart3 { compatible = "allwinner,sun20iw1-dsp-uart"; pinctrl-names = "default", "sleep"; pinctrl-0 = <&uart3_pins_a>; pinctrl-1 = <&uart3_pins_a>; status = "disabled"; }; &soc { card0_boot_para@2 { /* * Avoid dtc compiling warnings. * @TODO: Developer should modify this to the actual value */ reg = <0x0 0x2 0x0 0x0>; device_type = "card0_boot_para"; card_ctrl = <0x0>; card_high_speed = <0x1>; card_line = <0x4>; pinctrl-0 = <&sdc0_pins_a>; }; card2_boot_para@3 { /* * Avoid dtc compiling warnings. * @TODO: Developer should modify this to the actual value */ reg = <0x0 0x3 0x0 0x0>; device_type = "card2_boot_para"; card_ctrl = <0x2>; card_high_speed = <0x1>; card_line = <0x4>; pinctrl-0 = <&sdc2_pins_a>; /*pinctrl-0 = <&sdc0_pins_a>;*/ /*sdc_ex_dly_used = <0x2>;*/ sdc_io_1v8 = <0x1>; /*sdc_type = "tm4";*/ sdc_tm4_hs200_max_freq = <150>; sdc_tm4_hs400_max_freq = <100>; sdc_ex_dly_used = <2>; /*sdc_tm4_win_th = <8>;*/ /*sdc_dis_host_caps = <0x180>;*/ }; rfkill: rfkill@0 { compatible = "allwinner,sunxi-rfkill"; chip_en; power_en; pinctrl-0 = <&wlan_pins_a>; pinctrl-names = "default"; status = "okay"; wlan: wlan@0 { compatible = "allwinner,sunxi-wlan"; clock-names = "32k-fanout1"; clocks = <&ccu CLK_FANOUT1_OUT>; wlan_busnum = <0x1>; wlan_regon = <&pio PG 12 GPIO_ACTIVE_HIGH>; wlan_hostwake = <&pio PG 10 GPIO_ACTIVE_HIGH>; /*wlan_power = "VCC-3V3";*/ /*wlan_power_vol = <3300000>;*/ /*interrupt-parent = <&pio>; interrupts = < PG 10 IRQ_TYPE_LEVEL_HIGH>;*/ wakeup-source; }; bt: bt@0 { compatible = "allwinner,sunxi-bt"; clock-names = "32k-fanout1"; clocks = <&ccu CLK_FANOUT1_OUT>; /*bt_power_num = <0x01>;*/ /*bt_power = "axp803-dldo1";*/ /*bt_io_regulator = "axp803-dldo1";*/ /*bt_io_vol = <3300000>;*/ /*bt_power_vol = <330000>;*/ bt_rst_n = <&pio PG 15 GPIO_ACTIVE_LOW>; status = "disabled"; }; }; btlpm: btlpm@0 { compatible = "allwinner,sunxi-btlpm"; uart_index = <0x1>; bt_wake = <&pio PG 14 GPIO_ACTIVE_HIGH>; bt_hostwake = <&pio PG 13 GPIO_ACTIVE_HIGH>; status = "disabled"; }; addr_mgt: addr_mgt@0 { compatible = "allwinner,sunxi-addr_mgt"; type_addr_wifi = <0x0>; type_addr_bt = <0x0>; type_addr_eth = <0x0>; status = "okay"; }; }; &sdc2 { non-removable; bus-width = <4>; mmc-ddr-1_8v; mmc-hs200-1_8v; no-sdio; no-sd; ctl-spec-caps = <0x308>; cap-mmc-highspeed; sunxi-power-save-mode; sunxi-dis-signal-vol-sw; mmc-bootpart-noacc; max-frequency = <150000000>; /*vmmc-supply = <®_dcdc1>;*/ /*emmc io vol 3.3v*/ /*vqmmc-supply = <®_aldo1>;*/ /*emmc io vol 1.8v*/ /*vqmmc-supply = <®_eldo1>;*/ status = "disabled"; }; &sdc0 { bus-width = <4>; cd-gpios = <&pio PF 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* mangopi */ /*non-removable;*/ /*broken-cd;*/ /*cd-inverted;*/ /*data3-detect;*/ /*card-pwr-gpios = <&pio PH 14 1 1 2 0xffffffff>;*/ /*cd-used-24M;*/ cap-sd-highspeed; /*sd-uhs-sdr50;*/ /*sd-uhs-ddr50;*/ /*sd-uhs-sdr104;*/ no-sdio; no-mmc; sunxi-power-save-mode; /*sunxi-dis-signal-vol-sw;*/ max-frequency = <150000000>; ctl-spec-caps = <0x8>; /*vmmc-supply = <®_dcdc1>;*/ /*vqmmc33sw-supply = <®_dcdc1>;*/ /*vdmmc33sw-supply = <®_dcdc1>;*/ /*vqmmc18sw-supply = <®_eldo1>;*/ /*vdmmc18sw-supply = <®_eldo1>;*/ status = "okay"; }; &sdc1 { bus-width = <4>; no-mmc; no-sd; cap-sd-highspeed; /*sd-uhs-sdr12*/ /*sd-uhs-sdr25;*/ /*sd-uhs-sdr50;*/ /*sd-uhs-ddr50;*/ /*sd-uhs-sdr104;*/ /*sunxi-power-save-mode;*/ /*sunxi-dis-signal-vol-sw;*/ cap-sdio-irq; keep-power-in-suspend; ignore-pm-notify; max-frequency = <150000000>; ctl-spec-caps = <0x8>; status = "okay"; }; /* tvd configuration used (create device, 0: do not create device, 1: create device) agc_auto_enable (0: agc manual mode,agc_manual_value is valid; 1: agc auto mode) agc_manual_value (agc manual value, default value is 64) cagc_enable (cagc 0: disable, 1: enable) fliter_used (3d fliter 0: disable, 1: enable) support two PMU power (tvd_power0, tvd_power1) support two GPIO power (tvd_gpio0, tvd_gpio1) NOTICE: If tvd need pmu power or gpio power,params need be configured under [tvd] tvd_sw (the switch of all tvd driver.) tvd_interface (0: cvbs, 1: ypbpr,) tvd_format (0:TVD_PL_YUV420 , 1: MB_YUV420, 2: TVD_PL_YUV422) tvd_system (0:ntsc, 1:pal) tvd_row (total row number in multi channel mode 1-2) tvd_column (total column number in multi channel mode 1-2) tvd_channelx_en (0:disable, 1~4:position in multi channel mode,In single channel mode,mean enable) tvd_row*tvd_column is the total tvd channel number to be used in multichannel mode +--------------------+--------------------+ | | | | | | | 1 | 2 | | | | | | | +--------------------+--------------------+ | | | | | | | 3 | 4 | | | | | | | +--------------------+--------------------+ */ &tvd { tvd_sw = <1>; tvd_interface = <0>; tvd_format = <0>; tvd_system = <1>; tvd_row = <1>; tvd_column = <1>; tvd_channel0_en = <1>; tvd_channel1_en = <0>; tvd_channel2_en = <0>; tvd_channel3_en = <0>; /*tvd_gpio0 = <&pio PD 22 GPIO_ACTIVE_HIGH>;*/ /*tvd_gpio1 = <&pio PD 23 GPIO_ACTIVE_HIGH>;*/ /*tvd_gpio2 = <&pio PD 24 GPIO_ACTIVE_HIGH>;*/ /* dc1sw-supply = <®_dc1sw>;*/ /* eldo3-supply = <®_eldo3>;*/ /*tvd_power0 = "dc1sw"*/ /*tvd_power1 = "eldo3"*/ }; &tvd0 { used = <1>; agc_auto_enable = <1>; agc_manual_value = <64>; cagc_enable = <1>; fliter_used = <1>; }; /* Audio Driver modules */ &sunxi_rpaf_dsp0 { status = "disabled"; }; /* if audiocodec is used, sdc0 and uart0 should be closed to enable PA. */ &codec { /* MIC and headphone gain setting */ mic1gain = <0x1F>; mic2gain = <0x1F>; mic3gain = <0x1F>; /* ADC/DAC DRC/HPF func enabled */ /* 0x1:DAP_HP_EN; 0x2:DAP_SPK_EN; 0x3:DAP_HPSPK_EN */ adcdrc_cfg = <0x0>; adchpf_cfg = <0x1>; dacdrc_cfg = <0x0>; dachpf_cfg = <0x0>; /* Volume about */ digital_vol = <0x00>; lineout_vol = <0x1a>; headphonegain = <0x03>; /* Pa enabled about */ pa_level = <0x01>; pa_pwr_level = <0x01>; pa_msleep_time = <0x78>; /* gpio-spk = <&pio PF 2 GPIO_ACTIVE_HIGH>;*/ /* gpio-spk-pwr = <&pio PF 4 GPIO_ACTIVE_HIGH>; */ /* CMA config about */ playback_cma = <128>; capture_cma = <256>; /* regulator about */ /* avcc-supply = <®_aldo1>; */ /* hpvcc-supply = <®_eldo1>; */ status = "okay"; }; &sndcodec { hp_detect_case = <0x00>; jack_enable = <0x01>; status = "okay"; }; &dummy_cpudai { status = "okay"; }; &dmic { pinctrl-names = "default","sleep"; pinctrl-0 = <&dmic_pins_a>; pinctrl-1 = <&dmic_pins_b>; status = "disabled"; }; &dmic_codec { status = "okay"; }; &sounddmic { status = "okay"; }; /*----------------------------------------------------------------------------- * pcm_lrck_period 16/32/64/128/256 * slot_width_select 16bits/20bits/24bits/32bits * frametype 0 --> short frame = 1 clock width; * 1 --> long frame = 2 clock width; * tdm_config 0 --> pcm * 1 --> i2s * mclk_div 0 --> not output * 1/2/4/6/8/12/16/24/32/48/64/96/128/176/192 * (set mclk as external codec clk source, freq is pll_audio/mclk_div) * pinctrl_used 0 --> I2S/PCM use for internal * 1 --> I2S/PCM use for external audio * daudio_type: 0 --> external audio type *---------------------------------------------------------------------------*/ &daudio0 { mclk_div = <0x01>; frametype = <0x00>; tdm_config = <0x01>; sign_extend = <0x00>; msb_lsb_first = <0x00>; pcm_lrck_period = <0x80>; slot_width_select = <0x20>; pinctrl-names = "default", "sleep"; pinctrl-0 = <&daudio0_pins_a>; pinctrl-1 = <&daudio0_pins_b>; pinctrl_used = <0x0>; status = "disabled"; }; /*----------------------------------------------------------------------------- * simple-audio-card,name name of sound card, e.g. * "snddaudio0" --> use for external audio * sound-dai "snd-soc-dummy" --> use for I2S * "ac108" --> use for external audio of ac108 *---------------------------------------------------------------------------*/ &sounddaudio0 { /* simple-audio-card,format = "i2s"; */ /* simple-audio-card,frame-master = <&daudio0_master>; */ /* simple-audio-card,bitclock-master = <&daudio0_master>; */ /* simple-audio-card,bitclock-inversion; */ /* simple-audio-card,frame-inversion; */ status = "disabled"; daudio0_master: simple-audio-card,codec { /* sound-dai = <&ac108>; */ }; }; &daudio1 { mclk_div = <0x01>; frametype = <0x00>; tdm_config = <0x01>; sign_extend = <0x00>; msb_lsb_first = <0x00>; pcm_lrck_period = <0x80>; slot_width_select = <0x20>; pinctrl-names = "default", "sleep"; pinctrl-0 = <&daudio1_pins_a>; pinctrl-1 = <&daudio1_pins_b>; pinctrl_used = <0x0>; status = "disabled"; }; &sounddaudio1 { status = "disabled"; daudio1_master: simple-audio-card,codec { /* sound-dai = <&ac108>; */ }; }; &daudio2 { mclk_div = <0x01>; frametype = <0x00>; tdm_config = <0x01>; sign_extend = <0x00>; tx_data_mode = <0x00>; rx_data_mode = <0x00>; msb_lsb_first = <0x00>; pcm_lrck_period = <0x80>; slot_width_select = <0x20>; asrc_function_en = <0x00>; pinctrl-names = "default", "sleep"; pinctrl-0 = <&daudio2_pins_a &daudio2_pins_b &daudio2_pins_c>; pinctrl-1 = <&daudio2_pins_d>; pinctrl_used = <0x1>; daudio_type = <0x0>; status = "disabled"; }; &sounddaudio2 { status = "disabled"; /* mangopi */ daudio2_master: simple-audio-card,codec { /* sound-dai = <&ac108>; */ }; }; &spdif { pinctrl-names = "default","sleep"; pinctrl-0 = <&spdif_pins_a>; pinctrl-1 = <&spdif_pins_b>; status = "okay"; }; &soundspdif { status = "okay"; }; /* *usb_port_type: usb mode. 0-device, 1-host, 2-otg. *usb_detect_type: usb hotplug detect mode. 0-none, 1-vbus/id detect, 2-id/dpdm detect. *usb_detect_mode: 0-thread scan, 1-id gpio interrupt. *usb_id_gpio: gpio for id detect. *usb_det_vbus_gpio: gpio for id detect. gpio or "axp_ctrl"; *usb_wakeup_suspend:0-SUPER_STANDBY, 1-USB_STANDBY. */ &usbc0 { device_type = "usbc0"; usb_port_type = <0x0>; usb_detect_type = <0x0>; /* usb_detect_mode = <0>; usb_id_gpio = <&pio PB 8 GPIO_ACTIVE_HIGH>; enable-active-high; usb_det_vbus_gpio = <&pio PB 9 GPIO_ACTIVE_HIGH>; */ usb_wakeup_suspend = <0>; usb_serial_unique = <0>; usb_serial_number = "20080411"; rndis_wceis = <1>; status = "okay"; }; &ehci0 { drvvbus-supply = <®_usb1_vbus>; }; &ohci0 { drvvbus-supply = <®_usb1_vbus>; }; &usbc1 { device_type = "usbc1"; usb_port_type = <0x01>; usb_detect_type = <0x1>; usb_regulator_io = "nocare"; usb_wakeup_suspend = <0>; status = "okay"; }; &ehci1 { status = "okay"; }; &ohci1 { status = "okay"; }; &twi0 { clock-frequency = <400000>; pinctrl-0 = <&twi0_pins_a>; pinctrl-1 = <&twi0_pins_b>; pinctrl-names = "default", "sleep"; status = "disabled"; eeprom@50 { compatible = "atmel,24c16"; reg = <0x50>; status = "disabled"; }; }; &twi1 { clock-frequency = <400000>; pinctrl-0 = <&twi1_pins_a>; pinctrl-1 = <&twi1_pins_b>; pinctrl-names = "default", "sleep"; status = "disabled"; }; &twi2 { clock-frequency = <400000>; pinctrl-0 = <&twi2_pins_a>; pinctrl-1 = <&twi2_pins_b>; pinctrl-names = "default", "sleep"; dmas = <&dma 45>, <&dma 45>; dma-names = "tx", "rx"; status = "okay"; /* pcf8574-usage: * only use gpio0~7, 0 means PP0. * pin set: * gpios = <&pcf8574 0 GPIO_ACTIVE_LOW>; * interrupt set: * interrupt-parent = <&pcf8574>; * interrupts = <0 IRQ_TYPE_EDGE_FALLING>; */ /*pcf8574: gpio@38 { compatible = "nxp,pcf8574"; reg = <0x38>; gpio_base = <2020>; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; interrupt-parent = <&pio>; interrupts = <PB 2 IRQ_TYPE_EDGE_FALLING>; status = "disabled"; };*/ ctp@14 { compatible = "allwinner,goodix"; device_type = "ctp"; reg = <0x14>; status = "okay"; ctp_name = "gt9xxnew_ts"; ctp_twi_id = <0x2>; ctp_twi_addr = <0x14>; ctp_screen_max_x = <0x320>; ctp_screen_max_y = <0x1e0>; ctp_revert_x_flag = <0x0>; ctp_revert_y_flag = <0x0>; ctp_exchange_x_y_flag = <0x0>; ctp_int_port = <&pio PB 3 GPIO_ACTIVE_HIGH>; ctp_wakeup = <&pio PB 2 GPIO_ACTIVE_HIGH>; /*ctp-supply = <®_aldo2>;*/ /*ctp_power_ldo = <®_aldo2>;*/ /*ctp_power_ldo_vol = <3300>;*/ }; // ov5640@78 { // compatible = "ovti,ov2640"; // reg = <0x78>; // pinctrl-names = "default"; // pinctrl-0 = <> // } }; &twi3 { clock-frequency = <400000>; pinctrl-0 = <&twi3_pins_a>; pinctrl-1 = <&twi3_pins_b>; pinctrl-names = "default", "sleep"; status = "disabled"; }; /* &gmac0 { phy-mode = "rgmii"; use_ephy25m = <1>; pinctrl-0 = <&gmac_pins_a>; pinctrl-1 = <&gmac_pins_b>; pinctrl-names = "default", "sleep"; phy-rst = <&pio PE 16 GPIO_ACTIVE_HIGH>; tx-delay = <3>; //2~4 rx-delay = <0>; status = "disabled"; }; */ &spi0 { clock-frequency = <100000000>; pinctrl-0 = <&spi0_pins_a &spi0_pins_b>; pinctrl-1 = <&spi0_pins_c>; pinctrl-names = "default", "sleep"; /*spi-supply = <®_dcdc1>;*/ spi_slave_mode = <0>; spi0_cs_number = <1>; spi0_cs_bitmap = <1>; status = "okay"; spi-nand@0 { compatible = "spi-nand"; spi-max-frequency=<100000000>; reg = <0x0>; spi-rx-bus-width=<0x01>; spi-tx-bus-width=<0x01>; status="okay"; }; spi-nor@0 { compatible = "jedec,spi-nor"; spi-max-frequency=<30000000>; reg = <0x0>; spi-rx-bus-width=<0x01>; spi-tx-bus-width=<0x01>; status="disabled"; }; }; &spi1 { clock-frequency = <100000000>; pinctrl-0 = <&spi1_pins_a &spi1_pins_b>; pinctrl-1 = <&spi1_pins_c>; pinctrl-names = "default", "sleep"; spi_slave_mode = <0>; status = "disabled"; spi_board1@0 { device_type = "spi_board1"; compatible = "rohm,dh2228fv"; spi-max-frequency = <0x5f5e100>; reg = <0x0>; spi-rx-bus-width = <0x4>; spi-tx-bus-width = <0x4>; status = "disabled"; }; }; &ledc { pinctrl-names = "default", "sleep"; pinctrl-0 = <&ledc_pins_a>; pinctrl-1 = <&ledc_pins_b>; led_count = <12>; output_mode = "GRB"; reset_ns = <84>; t1h_ns = <800>; t1l_ns = <320>; t0h_ns = <300>; t0l_ns = <800>; wait_time0_ns = <84>; wait_time1_ns = <84>; wait_data_time_ns = <600000>; status = "disabled"; }; &keyboard0 { key0 = <210 0x160>; wakeup-source; status = "disabled"; }; /*---------------------------------------------------------------------------------- disp init configuration disp_mode (0:screen0<screen0,fb0>) screenx_output_type (0:none; 1:lcd; 2:tv; 5:vdpo) fbx format (4:RGB655 5:RGB565 6:RGB556 7:ARGB1555 8:RGBA5551 9:RGB888 10:ARGB8888 12:ARGB4444) fbx pixel sequence (0:ARGB 1:BGRA 2:ABGR 3:RGBA) fb0_scaler_mode_enable(scaler mode enable, used FE) fbx_width,fbx_height (framebuffer horizontal/vertical pixels, fix to output resolution while equal 0) lcdx_backlight (lcd init backlight,the range:[0,256],default:197 lcdx_yy (lcd init screen bright/contrast/saturation/hue, value:0~100, default:50/50/57/50) lcd0_contrast (LCD contrast, 0~100) lcd0_saturation (LCD saturation, 0~100) lcd0_hue (LCD hue, 0~100) framebuffer software rotation setting: disp_rotation_used: (0:disable; 1:enable,you must set fbX_width to lcd_y, set fbX_height to lcd_x) degreeX: (X:screen index; 0:0 degree; 1:90 degree; 3:270 degree) degreeX_Y: (X:screen index; Y:layer index 0~15; 0:0 degree; 1:90 degree; 3:270 degree) devX_output_type : config output type in bootGUI framework in UBOOT-2018. (0:none; 1:lcd; 2:tv;) devX_output_mode : config output resolution(see include/video/sunxi_display2.h) of bootGUI framework in UBOOT-2018 devX_screen_id : config display index of bootGUI framework in UBOOT-2018 devX_do_hpd : whether do hpd detectation or not in UBOOT-2018 chn_cfg_mode : Hardware DE channel allocation config. 0:single display with 6 channel, 1:dual display with 4 channel in main display and 2 channel in second display, 2:dual display with 3 channel in main display and 3 channel in second in display. ----------------------------------------------------------------------------------*/ &disp { disp_init_enable = <1>; disp_mode = <0>; screen0_output_type = <1>; screen0_output_mode = <4>; screen1_output_type = <3>; screen1_output_mode = <4>; screen1_output_format = <0>; screen1_output_bits = <0>; screen1_output_eotf = <4>; screen1_output_cs = <257>; screen1_output_range = <2>; screen1_output_scan = <0>; screen1_output_aspect_ratio = <8>; dev0_output_type = <1>; dev0_output_mode = <4>; dev0_screen_id = <0>; dev0_do_hpd = <0>; dev1_output_type = <4>; dev1_output_mode = <10>; dev1_screen_id = <1>; dev1_do_hpd = <1>; def_output_dev = <0>; disp_rotation_used = <1>; degree0 = <0>; fb0_format = <0>; fb0_buffer_num = <1>; /*fb0_width = <800>;*/ /*fb0_height = <480>;*/ /*read from lcd*/ fb1_format = <0>; fb1_width = <0>; fb1_height = <0>; chn_cfg_mode = <1>; disp_para_zone = <1>; /*VCC-LCD*/ /* dc1sw-supply = <®_dc1sw>;*/ /*VCC-DSI*/ /* eldo3-supply = <®_eldo3>;*/ /*VCC-PD*/ /* dcdc1-supply = <®_dcdc1>;*/ }; /*---------------------------------------------------------------------------------- ;lcd0 configuration ;lcd_if: 0:hv(sync+de); 1:8080; 2:ttl; 3:lvds; 4:dsi; 5:edp; 6:extend dsi ;lcd_hv_if 0:Parallel RGB; 8:Serial RGB; 10:Dummy RGB; 11: RGB Dummy;12:CCIR656 ;lcd_hv_clk_phase 0:0 degree;1:90 degree;2:180 degree;3:270 degree ;lcd_hv_sync_polarity 0:vs low,hs low; 1:vs high,hslow; 2:vs low,hs high; 3:vs high,hs high ;lcd_hv_syuv_seq 0:YUYV; 1:YVYU; 2:UYVY; 3:VYUY ;lcd_cpu_if 0:18bit/1 cycle parallel(RGB666); 4:16bit/1cycle parallel (RGB565) ; 6:18bit/3 cycle parallel(RGB666); 7:16bit/2cycle parallel (RGB565) ;lcd_cpu_te 0:frame auto trigger; 1:frame triggered by te rising edge; 2:frame triggered by te falling edge; ;lcd_dsi_if 0:video mode; 1: Command mode; 2:video burst mode ;lcd_dsi_te 0:frame auto trigger; 1:frame triggered by te rising edge; 2:frame triggered by te falling edge; ;lcd_x: lcd horizontal resolution ;lcd_y: lcd vertical resolution ;lcd_width: width of lcd in mm ;lcd_height: height of lcd in mm ;lcd_dclk_freq: in MHZ unit ;lcd_pwm_freq: in HZ unit ;lcd_pwm_pol: lcd backlight PWM polarity ;lcd_pwm_max_limit lcd backlight PWM max limit(<=255) ;lcd_hbp: hsync back porch(pixel) + hsync plus width(pixel); ;lcd_ht: hsync total cycle(pixel) ;lcd_vbp: vsync back porch(line) + vysnc plus width(line) ;lcd_vt: vysnc total cycle(line) ;lcd_hspw: hsync plus width(pixel) ;lcd_vspw: vysnc plus width(pixel) ;lcd_lvds_if: 0:single link; 1:dual link ;lcd_lvds_colordepth: 0:8bit; 1:6bit ;lcd_lvds_mode: 0:NS mode; 1:JEIDA mode ;lcd_frm: 0:disable; 1:enable rgb666 dither; 2:enable rgb656 dither ;lcd_io_phase: 0:noraml; 1:intert phase(0~3bit: vsync phase; 4~7bit:hsync phase; ; 8~11bit:dclk phase; 12~15bit:de phase) ;lcd_gamma_en lcd gamma correction enable ;lcd_bright_curve_en lcd bright curve correction enable ;lcd_cmap_en lcd color map function enable ;deu_mode 0:smoll lcd screen; 1:large lcd screen(larger than 10inch) ;lcdgamma4iep: Smart Backlight parameter, lcd gamma vale * 10; ; decrease it while lcd is not bright enough; increase while lcd is too bright ;smart_color 90:normal lcd screen 65:retina lcd screen(9.7inch) ;Pin setting for special function ie.LVDS, RGB data or vsync ; name(donot care) = port:PD12<pin function><pull up or pull down><drive ability><output level> ;Pin setting for gpio: ; lcd_gpio_X = port:PD12<pin function><pull up or pull down><drive ability><output level> ;Pin setting for backlight enable pin ; lcd_bl_en = port:PD12<pin function><pull up or pull down><drive ability><output level> ;fsync setting, pulse to csi ;lcd_fsync_en (0:disable fsync,1:enable) ;lcd_fsync_act_time (active time of fsync, unit:pixel) ;lcd_fsync_dis_time (disactive time of fsync, unit:pixel) ;lcd_fsync_pol (0:positive;1:negative) ;gpio config: <&pio for cpu or &r_pio for cpus, port, port num, pio function, pull up or pull down(default 0), driver level(default 1), data> ;For dual link lvds: use lvds2link_pins_a and lvds2link_pins_b instead ;For rgb24: use rgb24_pins_a and rgb24_pins_b instead ;For lvds1: use lvds1_pins_a and lvds1_pins_b instead ;For lvds0: use lvds0_pins_a and lvds0_pins_b instead ;----------------------------------------------------------------------------------*/ &lcd0 { lcd_used = <1>; // 启用lcd lcd_driver_name = "default_lcd"; // 使用 default_lcd 驱动 lcd_backlight = <50>; lcd_if = <0>; // 0:rgb 4:dsi // Part 1 lcd_x = <800>; // 宽度 lcd_y = <480>; // 高度 lcd_width = <108>; // 屏幕物理宽度,单位 mm lcd_height = <65>; // 屏幕物理高度,单位 mm // Part 2 lcd_pwm_used = <1>; // 启用背光 PWM lcd_pwm_ch = <7>; // 使用 PWM 通道 7 lcd_pwm_freq = <5000>; // PWM 频率,单位 Hz lcd_pwm_pol = <0>; // 背光 PWM 的极性 lcd_pwm_max_limit = <255>; // 背光 PWM 的最大值(<=255) // Part 3 lcd_dclk_freq = <22>; // 屏幕时钟,单位 MHz lcd_ht = <928>; // hsync total cycle(pixel) lcd_hbp = <88>; // hsync back porch(pixel) + hsync plus width(pixel); lcd_hspw = <48>; // hsync plus width(pixel) lcd_vt = <525>; // vsync total cycle(line) lcd_vbp = <32>; // vsync back porch(line) + vysnc plus width(line) lcd_vspw = <1>; // vsync plus width(pixel) // Part 4 lcd_lvds_if = <0>; lcd_lvds_colordepth = <1>; lcd_lvds_mode = <0>; lcd_frm = <0>; // 0:关闭; 1:启用rgb666抖动; 2:启用rgb656抖动 lcd_io_phase = <0x0000>; lcd_gamma_en = <0>; lcd_bright_curve_en = <0>; lcd_cmap_en = <0>; deu_mode = <0>; lcdgamma4iep = <22>; smart_color = <90>; // Part 5 pinctrl-0 = <&rgb18_pins_a>; pinctrl-1 = <&rgb18_pins_b>; }; &pwm0 { pinctrl-names = "active", "sleep"; pinctrl-0 = <&pwm0_pin_a>; pinctrl-1 = <&pwm0_pin_b>; status = "disabled"; }; &pwm2 { pinctrl-names = "active", "sleep"; pinctrl-0 = <&pwm2_pin_a>; pinctrl-1 = <&pwm2_pin_b>; status = "disabled"; }; &pwm7 { pinctrl-names = "active", "sleep"; pinctrl-0 = <&pwm7_pin_a>; pinctrl-1 = <&pwm7_pin_b>; status = "disabled"; }; &rtp { allwinner,tp-sensitive-adjust = <0xf>; allwinner,filter-type = <0x1>; allwinner,ts-attached; status = "disabled"; }; &tpadc { key_cnt = <5>; key1 = <420 115>; key2 = <870 114>; key3 = <1290 119>; key4 = <1630 373>; key5 = <1950 28>; status = "disabled"; }; &gpadc { channel_num = <1>; channel_select = <0x01>; channel_data_select = <0>; channel_compare_select = <0x01>; channel_cld_select = <0x01>; channel_chd_select = <0>; channel0_compare_lowdata = <1600000>; channel0_compare_higdata = <1200000>; channel1_compare_lowdata = <460000>; channel1_compare_higdata = <1200000>; key_cnt = <5>; key0_vol = <210>; key0_val = <0x19c>; key1_vol = <410>; key1_val = <0x197>; key2_vol = <590>; key2_val = <158>; key3_vol = <750>; key3_val = <28>; key4_vol = <880>; key4_val = <28>; status = "okay"; wakeup-source; }; &s_cir0 { pinctrl-names = "default", "sleep"; pinctrl-0 = <&s_cir0_pins_a>; pinctrl-1 = <&s_cir0_pins_b>; ir_protocol_used = <0>; ir_addr_code0 = <0x0>; status = "disabled"; }; &ir1 { pinctrl-names = "default", "sleep"; pinctrl-0 = <&ir1_pins_a>; pinctrl-1 = <&ir1_pins_b>; status = "disabled"; }; &vind0 { csi_top = <378000000>; csi_isp = <327000000>; status = "okay"; /* enable twi and ver1 spi-nand max freq 30M */ actuator0: actuator@5809450 { device_type = "actuator0"; actuator0_name = "ad5820_act"; actuator0_slave = <0x18>; actuator0_af_pwdn = <>; actuator0_afvdd = "afvcc-csi"; actuator0_afvdd_vol = <2800000>; status = "okay"; }; flash0: flash@5809460 { device_type = "flash0"; flash0_type = <2>; flash0_en = <>; flash0_mode = <>; flash0_flvdd = ""; flash0_flvdd_vol = <>; device_id = <0>; status = "okay"; }; sensor0: sensor@5809470 { reg = <0x0 0x05809470 0x0 0x10>; device_type = "sensor0"; compatible = "allwinner,sunxi-sensor"; sensor0_mname = "ov5640"; sensor0_twi_cci_id = <2>; sensor0_twi_addr = <0x78>; sensor0_mclk_id = <0>; sensor0_pos = "rear"; sensor0_isp_used = <0>; sensor0_fmt = <0>; sensor0_stby_mode = <0>; sensor0_vflip = <>; sensor0_hflip = <>; sensor0_iovdd-supply = <>; sensor0_iovdd_vol = <2800000>; sensor0_avdd-supply = <0>; sensor0_avdd_vol = <2800000>; sensor0_dvdd-supply = <>; sensor0_dvdd_vol = <1200000>; sensor0_power_en = <>; sensor0_reset = <&pio PB 5 GPIO_ACTIVE_LOW>; sensor0_pwdn = <&pio PB 4 GPIO_ACTIVE_LOW>; flash_handle = <&flash0>; act_handle = <&actuator0>; sensor0_sm_vs = <>; device_id = <0>; status = "okay"; }; sensor1:sensor@5809480 { device_type = "sensor1"; sensor1_mname = "ov5647"; sensor1_twi_cci_id = <3>; sensor1_twi_addr = <0x6c>; sensor1_mclk_id = <1>; sensor1_pos = "front"; sensor1_isp_used = <0>; sensor1_fmt = <0>; sensor1_stby_mode = <0>; sensor1_vflip = <0>; sensor1_hflip = <0>; sensor1_iovdd-supply = <>; sensor1_iovdd_vol = <>; sensor1_avdd-supply = <>; sensor1_avdd_vol = <>; sensor1_dvdd-supply = <>; sensor1_dvdd_vol = <>; sensor1_power_en = <>; sensor1_reset = <&pio PE 7 GPIO_ACTIVE_LOW>; sensor1_pwdn = <&pio PE 6 GPIO_ACTIVE_LOW>; status = "disabled"; }; vinc0:vinc@5809000 { compatible = "allwinner,sunxi-vin-core"; device_type = "vinc0"; vinc0_csi_sel = <0>; vinc0_mipi_sel = <0xff>; vinc0_isp_sel = <0>; vinc0_isp_tx_ch = <0>; vinc0_tdm_rx_sel = <0xff>; vinc0_rear_sensor_sel = <0>; vinc0_front_sensor_sel = <1>; vinc0_sensor_list = <0>; status = "okay"; }; vinc1:vinc@5809200 { vinc1_csi_sel = <0>; vinc1_mipi_sel = <0xff>; vinc1_isp_sel = <0>; vinc1_isp_tx_ch = <1>; vinc1_tdm_rx_sel = <0xff>; vinc1_rear_sensor_sel = <0>; vinc1_front_sensor_sel = <1>; vinc1_sensor_list = <0>; status = "disabled"; }; };
这是内核配置:
# # Multimedia core support # CONFIG_MEDIA_CAMERA_SUPPORT=y # CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y # CONFIG_MEDIA_RADIO_SUPPORT is not set # CONFIG_MEDIA_SDR_SUPPORT is not set # CONFIG_MEDIA_CEC_SUPPORT is not set CONFIG_MEDIA_CONTROLLER=y CONFIG_MEDIA_CONTROLLER_DVB=y CONFIG_VIDEO_DEV=y CONFIG_VIDEO_V4L2_SUBDEV_API=y CONFIG_VIDEO_V4L2=y CONFIG_VIDEO_V4L2_I2C=y CONFIG_VIDEO_ADV_DEBUG=y # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set CONFIG_V4L2_MEM2MEM_DEV=y CONFIG_V4L2_FWNODE=y CONFIG_DVB_CORE=y # CONFIG_DVB_MMAP is not set CONFIG_DVB_NET=y CONFIG_DVB_MAX_ADAPTERS=16 # CONFIG_DVB_DYNAMIC_MINORS is not set # CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set # CONFIG_DVB_ULE_DEBUG is not set # # Webcam, TV (analog/digital) USB devices # # CONFIG_VIDEO_EM28XX is not set CONFIG_V4L_PLATFORM_DRIVERS=y # CONFIG_VIDEO_CADENCE is not set # CONFIG_VIDEO_ASPEED is not set CONFIG_VIDEO_MUX=y # CONFIG_VIDEO_XILINX is not set # CONFIG_VIDEO_SUN4I_CSI is not set # CONFIG_VIDEO_SUN6I_CSI is not set CONFIG_VIDEO_SUNXI_TVD=y CONFIG_SUNXI_PLATFORM_DRIVERS=y CONFIG_VIDEO_SUNXI_VIN=y CONFIG_CSI_VIN=y CONFIG_ENABLE_SENSOR_FLIP_OPTION=y CONFIG_CSI_CCI=y # CONFIG_CCI is not set CONFIG_CCI_TO_TWI=y CONFIG_FLASH=y # CONFIG_ACTUATOR is not set # CONFIG_SENSOR_LIST is not set CONFIG_BUF_AUTO_UPDATE=y CONFIG_VIN_LOG=y # CONFIG_PIPELINE_RESET is not set # CONFIG_MULTI_FRAME is not set # CONFIG_SUPPORT_ISP_TDM is not set # CONFIG_DISPPLAY_SYNC is not set CONFIG_VIN_IOMMU=y # CONFIG_D3D is not set CONFIG_WDR=y CONFIG_WDR_COMPRESS_EN=y CONFIG_SAME_I2C=y # CONFIG_SENSOR_POWER is not set CONFIG_V4L_MEM2MEM_DRIVERS=y CONFIG_VIDEO_MEM2MEM_DEINTERLACE=y CONFIG_VIDEO_SH_VEU=y # CONFIG_V4L_TEST_DRIVERS is not set # CONFIG_DVB_PLATFORM_DRIVERS is not set # # Supported MMC/SDIO adapters # # CONFIG_SMS_SDIO_DRV is not set # CONFIG_CYPRESS_FIRMWARE is not set CONFIG_VIDEOBUF2_CORE=y CONFIG_VIDEOBUF2_V4L2=y CONFIG_VIDEOBUF2_MEMOPS=y CONFIG_VIDEOBUF2_DMA_CONTIG=y CONFIG_VIDEOBUF2_VMALLOC=y