有趣,再来个shell版本。
tigger 发布的帖子
-
回复: Tina Linux安装
tina v2.0 下载:
链接: https://pan.baidu.com/s/1rTyKuWIwMUlBY4xLJofWEg?pwd=awol
提取码:awol文件:
tina_d1_open_v2.tar.bz2.aa tina_d1_open_v2.tar.bz2.ab tina_d1_open_v2.tar.bz2.ac
①解压: cat tina_d1_open_v2.tar.bz2.a* | tar -xjv ②从本地repo仓库同步SDK repo sync -l. ③ source build/envsetup.sh ④ lunch ⑤ make ⑥ pack
-
R818 tina Linux 运行 mjpg-streamer + usb camera
R818 tina sdk 勾选:
# CONFIG_PACKAGE_live is not set CONFIG_PACKAGE_mjpg-streamer=y # CONFIG_MJPG_STREAMER_V4L2 is not set CONFIG_MJPG_STREAMER_INPUT_FILE=y CONFIG_MJPG_STREAMER_INPUT_UVC=y CONFIG_MJPG_STREAMER_INPUT_TESTPICTURE=y CONFIG_MJPG_STREAMER_OUTPUT_FILE=y CONFIG_MJPG_STREAMER_OUTPUT_HTTP=y CONFIG_MJPG_STREAMER_WWW=y
linux kernel勾选:
CONFIG_MEDIA_USB_SUPPORT=y # # Webcam devices # CONFIG_USB_VIDEO_CLASS=y CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y # CONFIG_USB_GSPCA is not set
和:
CONFIG_MEDIA_SUPPORT=y # # Multimedia core support # CONFIG_MEDIA_CAMERA_SUPPORT=y # CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set # CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set # CONFIG_MEDIA_RADIO_SUPPORT is not set # CONFIG_MEDIA_SDR_SUPPORT is not set CONFIG_MEDIA_RC_SUPPORT=y CONFIG_MEDIA_CONTROLLER=y # CONFIG_MEDIA_CONTROLLER_DVB is not set CONFIG_VIDEO_DEV=y CONFIG_VIDEO_V4L2_SUBDEV_API=y CONFIG_VIDEO_V4L2=y # CONFIG_VIDEO_ADV_DEBUG is not set # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set CONFIG_VIDEOBUF2_CORE=y CONFIG_VIDEOBUF2_MEMOPS=y CONFIG_VIDEOBUF2_DMA_CONTIG=m CONFIG_VIDEOBUF2_VMALLOC=y # CONFIG_TTPCI_EEPROM is not set
命令行运行:
mjpg_streamer -i "/usr/lib/input_uvc.so -r 1280x720 -d /dev/video4" -o "/usr/lib/output_http.so -w /www/webcam"
浏览器打开:
-
回复: 简单修改 哪吒d1 tina sdk 的 sys_config.fex 和 board.dts,让D1s先把Linux跑起来。
D1s USB device / host 切换:
echo usb_device > /sys/devices/platform/soc@3000000/soc@3000000:usbc0@0/otg_role
echo usb_host > /sys/devices/platform/soc@3000000/soc@3000000:usbc0@0/otg_role
-
回复: 有没有哪位大神在D1S上跑过ov5640或者其他sensor的,走DVP-CSI
lichee/linux-5.4/arch/riscv/boot/dts/sunxi/sun20iw1p1.dtsi
/* * Allwinner Technology CO., Ltd. sun20iw1p1 platform. * */ /memreserve/ 0x40000000 0x200000; /* opensbi */ /memreserve/ 0x42000000 0x100000; /* dsp used 1MB */ #include <dt-bindings/clock/sun8iw20-ccu.h> #include <dt-bindings/clock/sun8iw20-r-ccu.h> #include <dt-bindings/clock/sun8iw20-rtc.h> #include <dt-bindings/reset/sun8iw20-ccu.h> #include <dt-bindings/reset/sun8iw20-r-ccu.h> #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/gpio/sun4i-gpio.h> #include <dt-bindings/thermal/thermal.h> / { model = "sun20iw1p1"; compatible = "allwinner,sun20iw1p1"; #address-cells = <2>; #size-cells = <2>; aliases { serial0 = &uart0; serial1 = &uart1; serial2 = &uart2; serial3 = &uart3; serial4 = &uart4; serial5 = &uart5; spi0 = &spi0; spi1 = &spi1; twi0 = &twi0; twi1 = &twi1; twi2 = &twi2; twi3 = &twi3; mmc2 = &sdc2; pwm0 = &pwm0; pwm1 = &pwm1; pwm2 = &pwm2; pwm3 = &pwm3; pwm4 = &pwm4; pwm5 = &pwm5; pwm6 = &pwm6; pwm7 = &pwm7; ir0 = &s_cir0; ir1 = &ir1; mmc0 = &sdc0; tvd = &tvd; tvd0 = &tvd0; } ; chosen { bootargs = "console=ttyS0,115200n8 debug loglevel=7,initcall_debug=1 init=/init earlycon=sbi"; stdout-path = "serial0:115200n8"; linux,initrd-start = <0x42000000>; linux,initrd-end = <0x43000000>; }; cpus { #address-cells = <1>; #size-cells = <0>; timebase-frequency = <24000000>; idle-states { CPU_SLEEP: cpu-sleep { compatible = "riscv,idle-state"; local-timer-stop; entry-latency-us = <59>; exit-latency-us = <59>; min-residency-us = <5000>; }; }; CPU0: cpu@0 { device_type = "cpu"; reg = <0>; status = "okay"; compatible = "riscv"; riscv,isa = "rv64imafdcvsu"; /* riscv,priv-major = <1>;*/ /* riscv,priv-minor = <10>;*/ mmu-type = "riscv,sv39"; clocks = <&ccu CLK_RISCV>; clock-frequency = <24000000>; operating-points-v2 = <&cpu_opp_table>; cpu-idle-states = <&CPU_SLEEP>; #cooling-cells = <2>; /* d-cache-size = <0x8000>;*/ /* d-cache-line-size = <32>;*/ CPU0_intc: interrupt-controller { #interrupt-cells = <1>; interrupt-controller; compatible = "riscv,cpu-intc"; }; }; }; dram: dram { device_type = "dram"; compatible = "allwinner,dram"; clocks = <&ccu CLK_PLL_DDR0>; clock-names = "pll_ddr"; }; memory@40000000 { device_type = "memory"; reg = <0x0 0x40000000 0x0 0x8000000>; }; dump_reg: dump_reg@20000 { compatible = "allwinner,sunxi-dump-reg"; reg = <0x0 0x00020000 0x0 0x0004>; /* 0x00020000: dump_reg test addr, 0x0004: dump_reg test size */ }; cpu_opp_table: cpu-opp-table { compatible = "allwinner,sun50i-operating-points"; nvmem-cells = <&vf_table>; nvmem-cell-names = "speed"; opp-shared; opp@1008000000 { opp-hz = /bits/ 64 <1008000000>; clock-latency-ns = <244144>; /* 8 32k periods */ opp-microvolt-a0 = <1100000>; }; }; dcxo24M: dcxo24M_clk { #clock-cells = <0>; compatible = "fixed-clock"; clock-frequency = <24000000>; clock-output-names = "dcxo24M"; }; rc_16m: rc16m_clk { #clock-cells = <0>; compatible = "fixed-clock"; clock-frequency = <16000000>; clock-accuracy = <300000000>; clock-output-names = "rc-16m"; }; ext_32k: ext32k_clk { #clock-cells = <0>; compatible = "fixed-clock"; clock-frequency = <32768>; clock-output-names = "ext-32k"; }; reg_pio1_8: pio-18 { compatible = "regulator-fixed"; regulator-name = "pio-18"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; }; reg_pio3_3: pio-33 { compatible = "regulator-fixed"; regulator-name = "pio-33"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; }; thermal-zones { cpu_thermal_zone { polling-delay-passive = <500>; polling-delay = <1000>; thermal-sensors = <&ths 0>; sustainable-power = <1200>; cpu_trips: trips { cpu_threshold: trip-point@0 { temperature = <70000>; type = "passive"; hysteresis = <0>; }; cpu_target: trip-point@1 { temperature = <90000>; type = "passive"; hysteresis = <0>; }; cpu_crit: cpu_crit@0 { temperature = <110000>; type = "critical"; hysteresis = <0>; }; }; cooling-maps { map0 { trip = <&cpu_target>; cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; contribution = <1024>; }; }; }; }; mmu_aw: iommu@2010000 { compatible = "allwinner,sunxi-iommu"; reg = <0x0 0x02010000 0x0 0x1000>; interrupts-extended = <&plic0 80 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "iommu-irq"; clocks = <&ccu CLK_BUS_IOMMU>; clock-names = "iommu"; #iommu-cells = <2>; status = "okay"; }; soc: soc@3000000 { #address-cells = <2>; #size-cells = <2>; compatible = "simple-bus"; ranges; sram_ctrl: sram_ctrl@3000000 { compatible = "allwinner,sram_ctrl"; reg = <0x0 0x3000000 0 0x16C>; soc_ver { offset = <0x24>; mask = <0x7>; shift = <0>; ver_a = <0x18590000>; ver_b = <0x18590002>; }; soc_id { offset = <0x200>; mask = <0x1>; shift = <22>; }; soc_bin { offset = <0x0>; mask = <0x3ff>; shift = <0x0>; }; }; rtc_ccu: rtc_ccu@7090000 { compatible = "allwinner,sun20iw1-rtc-ccu"; device_type = "rtc-ccu"; reg = <0x0 0x07090000 0x0 0x320>; /* The same as rtc */ #clock-cells = <1>; }; ccu: clock@2001000 { compatible = "allwinner,sun20iw1-ccu"; reg = <0x0 0x02001000 0x0 0x1000>; clocks = <&dcxo24M>, <&rtc_ccu CLK_OSC32K>, <&rtc_ccu CLK_IOSC>; clock-names = "hosc", "losc", "iosc"; #clock-cells = <1>; #reset-cells = <1>; }; r_ccu: clock@7010000 { compatible = "allwinner,sun20iw1-r-ccu"; reg = <0x0 0x07010000 0x0 0x240>; clocks = <&dcxo24M>, <&rtc_ccu CLK_OSC32K>, <&rtc_ccu CLK_IOSC>, <&ccu CLK_PLL_PERIPH0>; clock-names = "hosc", "losc", "iosc", "pll-periph0"; #clock-cells = <1>; #reset-cells = <1>; }; plic0: interrupt-controller@10000000 { compatible = "riscv,plic0"; #address-cells = <2>; #interrupt-cells = <2>; interrupt-controller; reg = <0x0 0x10000000 0x0 0x4000000>; interrupts-extended = <&CPU0_intc 0xffffffff &CPU0_intc 9>; reg-names = "control"; riscv,max-priority = <7>; riscv,ndev=<200>; }; uart0: uart@2500000 { compatible = "allwinner,sun20i-uart"; device_type = "uart0"; reg = <0x0 0x02500000 0x0 0x400>; interrupts-extended = <&plic0 18 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_BUS_UART0>; clock-names = "uart0"; resets = <&ccu RST_BUS_UART0>; sunxi,uart-fifosize = <64>; uart0_port = <0>; uart0_type = <2>; status = "okay"; }; uart1: uart@2500400 { compatible = "allwinner,sun20i-uart"; device_type = "uart1"; reg = <0x0 0x02500400 0x0 0x400>; interrupts-extended = <&plic0 19 IRQ_TYPE_LEVEL_HIGH>; sunxi,uart-fifosize = <256>; clocks = <&ccu CLK_BUS_UART1>; clock-names = "uart1"; resets = <&ccu RST_BUS_UART1>; uart1_port = <1>; uart1_type = <4>; status = "disabled"; }; uart2: uart@2500800 { compatible = "allwinner,sun20i-uart"; device_type = "uart2"; reg = <0x0 0x02500800 0x0 0x400>; interrupts-extended = <&plic0 20 IRQ_TYPE_LEVEL_HIGH>; sunxi,uart-fifosize = <256>; clocks = <&ccu CLK_BUS_UART2>; clock-names = "uart2"; resets = <&ccu RST_BUS_UART2>; uart2_port = <2>; uart2_type = <4>; status = "disabled"; }; uart3: uart@2500c00 { compatible = "allwinner,sun20i-uart"; device_type = "uart3"; reg = <0x0 0x02500c00 0x0 0x400>; interrupts-extended = <&plic0 21 IRQ_TYPE_LEVEL_HIGH>; sunxi,uart-fifosize = <256>; clocks = <&ccu CLK_BUS_UART3>; clock-names = "uart3"; resets = <&ccu RST_BUS_UART3>; uart3_port = <3>; uart3_type = <4>; status = "disabled"; }; uart4: uart@2501000 { compatible = "allwinner,sun20i-uart"; device_type = "uart4"; reg = <0x0 0x02501000 0x0 0x400>; interrupts-extended = <&plic0 22 IRQ_TYPE_LEVEL_HIGH>; sunxi,uart-fifosize = <256>; clocks = <&ccu CLK_BUS_UART4>; clock-names = "uart4"; resets = <&ccu RST_BUS_UART4>; uart4_port = <4>; uart4_type = <2>; status = "disabled"; }; uart5: uart@2501400 { compatible = "allwinner,sun20i-uart"; device_type = "uart5"; reg = <0x0 0x02501400 0x0 0x400>; interrupts-extended = <&plic0 23 IRQ_TYPE_LEVEL_HIGH>; sunxi,uart-fifosize = <256>; clocks = <&ccu CLK_BUS_UART5>; clock-names = "uart5"; resets = <&ccu RST_BUS_UART5>; uart5_port = <5>; uart5_type = <2>; status = "disabled"; }; cryptoengine: ce@03040000 { compatible = "allwinner,sunxi-ce"; device_name = "ce"; reg = <0x0 0x03040000 0x0 0xa0>, /* non-secure space */ <0x0 0x03040800 0x0 0xa0>; /* secure space */ interrupts-extended = <&plic0 68 IRQ_TYPE_EDGE_RISING>, /*non-secure*/ <&plic0 69 IRQ_TYPE_EDGE_RISING>; /* secure*/ clock-frequency = <400000000>; /* 400MHz */ clocks = <&ccu CLK_BUS_CE>, <&ccu CLK_CE>, <&ccu CLK_MBUS_CE>, <&ccu CLK_PLL_PERIPH0_2X>; clock-names = "bus_ce", "ce_clk", "mbus_ce", "pll_periph0_2x"; resets = <&ccu RST_BUS_CE>; status = "okay"; }; s_cir0: s_cir@7040000 { compatible = "allwinner,s_cir"; reg = <0x0 0x07040000 0x0 0x400>; interrupts-extended = <&plic0 167 IRQ_TYPE_LEVEL_HIGH>; clocks = <&r_ccu CLK_R_APB0_BUS_IRRX>, <&dcxo24M>, <&r_ccu CLK_R_APB0_IRRX>; clock-names = "bus", "pclk", "mclk"; resets = <&r_ccu RST_R_APB0_BUS_IRRX>; supply = ""; supply_vol = ""; status = "disabled"; }; ir1: ir@2003000 { compatible = "allwinner,ir_tx"; reg = <0x0 0x02003000 0x0 0x400>; interrupts-extended = <&plic0 35 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_BUS_IR_TX>, <&dcxo24M>, <&ccu CLK_IR_TX>; clock-names = "bus", "pclk", "mclk"; resets = <&ccu RST_BUS_IR_TX>; status = "disabled"; }; di: deinterlace@5400000 { compatible = "allwinner,sunxi-deinterlace"; reg = <0x0 0x05400000 0x0 0x0000ffff>; interrupts-extended = <&plic0 104 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_DI>, <&ccu CLK_BUS_DI>, <&ccu CLK_PLL_PERIPH0_2X>; clock-names = "clk_di", "pll_periph", "clk_bus_di"; resets = <&ccu RST_BUS_DI>; reset-names = "rst_bus_di"; assigned-clocks = <&ccu CLK_DI>; assigned-clock-parents = <&ccu CLK_PLL_PERIPH0_2X>; assigned-clock-rates = <300000000>; iommus = <&mmu_aw 4 1>; status = "okay"; }; gmac0: eth@4500000 { compatible = "allwinner,sunxi-gmac"; reg = <0x0 0x04500000 0x0 0x10000>, <0x0 0x03000030 0x0 0x4>; interrupts-extended = <&plic0 62 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "gmacirq"; clocks = <&ccu CLK_BUS_EMAC0>, <&ccu CLK_EMAC0_25M>; clock-names = "gmac", "ephy"; resets = <&ccu RST_BUS_EMAC0>; device_type = "gmac0"; pinctrl-0 = <&gmac_pins_a>; pinctrl-1 = <&gmac_pins_b>; pinctrl-names = "default", "sleep"; phy-mode = "rgmii"; use_ephy25m = <1>; tx-delay = <7>; rx-delay = <31>; phy-rst = <&pio PA 14 GPIO_ACTIVE_LOW>; gmac-power0; gmac-power1; gmac-power2; status = "disabled"; }; rtc: rtc@7090000 { compatible = "allwinner,sun20iw1-rtc"; device_type = "rtc"; wakeup-source; interrupts-extended = <&plic0 160 IRQ_TYPE_LEVEL_HIGH>; reg = <0x0 0x07090000 0x0 0x320>; clocks = <&r_ccu CLK_R_AHB_BUS_RTC>, <&rtc_ccu CLK_RTC_SPI>, <&rtc_ccu CLK_RTC_1K>; clock-names = "r-ahb-rtc", "rtc-spi", "rtc-1k"; resets = <&r_ccu RST_R_AHB_BUS_RTC>; gpr_cur_pos = <6>; }; dma: dma-controller@3002000 { compatible = "allwinner,sun8i-riscv-dma"; reg = <0x0 0x03002000 0x0 0x1000>; interrupts-extended = <&plic0 66 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_BUS_DMA>, <&ccu CLK_MBUS_DMA>; clock-names = "bus", "mbus"; resets = <&ccu RST_BUS_DMA>; dma-channels = <16>; dma-requests = <48>; #dma-cells = <1>; status = "okay"; }; soc_timer0: timer@2050000 { compatible = "allwinner,sun4i-a10-timer"; device_type = "soc_timer"; reg = <0x0 0x02050000 0x0 0xA0>; interrupts-extended = <&plic0 75 IRQ_TYPE_LEVEL_HIGH>; clocks = <&dcxo24M>; status = "okay"; }; wdt: watchdog@6011000 { compatible = "allwinner,sun20i-wdt"; reg = <0x0 0x06011000 0x0 0x20>; interrupts-extended = <&plic0 147 IRQ_TYPE_LEVEL_HIGH>; }; mbus0:mbus-comtroller@3102000 { compatible = "allwinner,sun8i-mbus"; reg = <0x0 0x03102000 0x0 0x1000>; #mbus-cells = <1>; }; pmu: pmu { compatible = "riscv,c910_pmu"; }; ilde: idle { compatible = "riscv,idle"; }; pio: pinctrl@2000000 { compatible = "allwinner,sun20iw1-pinctrl"; reg = <0x0 0x02000000 0x0 0x500>; interrupts-extended = <&plic0 85 IRQ_TYPE_LEVEL_HIGH>, <&plic0 87 IRQ_TYPE_LEVEL_HIGH>, <&plic0 89 IRQ_TYPE_LEVEL_HIGH>, <&plic0 91 IRQ_TYPE_LEVEL_HIGH>, <&plic0 93 IRQ_TYPE_LEVEL_HIGH>, <&plic0 95 IRQ_TYPE_LEVEL_HIGH>; device_type = "pio"; clocks = <&ccu CLK_APB0>, <&dcxo24M>, <&rtc_ccu CLK_OSC32K>; clock-names = "apb", "hosc", "losc"; gpio-controller; #gpio-cells = <3>; interrupt-controller; #interrupt-cells = <3>; #size-cells = <0>; vcc-pf-supply = <®_pio1_8>; vcc-pfo-supply = <®_pio3_3>; test_pins_a: test_pins@0 { allwinner,pins = "PB0", "PB1"; allwinner,function = "test"; allwinner,muxsel = <0x7>; allwinner,drive = <1>; allwinner,pull = <1>; }; test_pins_b: test_pins@1 { pins = "PB0", "PB1"; function = "io_disabled"; allwinner,muxsel = <0xF>; allwinner,drive = <1>; allwinner,pull = <1>; }; gmac_pins_a: gmac@0 { pins = "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA10", "PA11", "PA12", "PA13", "PA17", "PA18", "PA28", "PA29", "PA30", "PA31"; function = "gmac0"; drive-strength = <10>; }; gmac_pins_b: gmac@1 { pins = "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA10", "PA11", "PA12", "PA13", "PA17", "PA18", "PA28", "PA29", "PA30", "PA31"; function = "gpio_in"; drive-strength = <10>; }; ir1_pins_a: ir1@0 { /* For FPGA board */ pins = "PG11"; function = "ir1"; drive-strength = <10>; }; csi_mclk0_pins_a: csi_mclk0@0 { pins = "PE3"; function = "csi0"; drive-strength = <10>; }; csi_mclk0_pins_b: csi_mclk0@1 { pins = "PE3"; function = "gpio_in"; }; csi0_pins_a: csi0@0 { pins = "PE2", "PE0", "PE1", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11"; function = "ncsi0"; drive-strength = <10>; }; csi0_pins_b: csi0@1 { pins = "PE2", "PE0", "PE1", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11"; function = "io_disabled"; drive-strength = <10>; }; lvds0_pins_a: lvds0@0 { pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9"; function = "lvds0"; drive-strength = <30>; bias-disable; }; lvds0_pins_b: lvds0@1 { pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9"; function = "io_disabled"; drive-strength = <30>; bias-disable; }; rgb24_pins_a: rgb24@0 { pins = "PB2", "PB3", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", \ "PB4", "PB5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", \ "PB6", "PB7", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", \ "PD18", "PD19", "PD20", "PD21"; function = "lcd0"; drive-strength = <30>; bias-disable; }; rgb24_pins_b: rgb24@1 { pins = "PB2", "PB3", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", \ "PB4", "PB5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", \ "PB6", "PB7", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", \ "PD18", "PD19", "PD20", "PD21"; function = "io_disabled"; bias-disable; }; rgb18_pins_a: rgb18@0 { pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", \ "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", \ "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", \ "PD18", "PD19", "PD20", "PD21"; function = "lcd0"; drive-strength = <30>; bias-disable; }; rgb18_pins_b: rgb18@1 { pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", \ "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", \ "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", \ "PD18", "PD19", "PD20", "PD21"; function = "io_disabled"; bias-disable; }; dsi4lane_pins_a: dsi4lane@0 { pins = "PD0", "PD1", "PD2", "PD3","PD4", "PD5","PD6", "PD7", "PD8", "PD9"; function = "dsi"; drive-strength = <30>; bias-disable; }; dsi4lane_pins_b: dsi4lane@1 { pins = "PD0", "PD1", "PD2", "PD3","PD4", "PD5","PD6", "PD7", "PD8", "PD9"; function = "io_disabled"; bias-disable; }; }; spi0: spi@4025000 { #address-cells = <1>; #size-cells = <0>; compatible = "allwinner,sun20i-spi"; device_type = "spi0"; reg = <0x0 0x04025000 0x0 0x300>; interrupts-extended = <&plic0 31 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_PLL_PERIPH0>, <&ccu CLK_SPI0>, <&ccu CLK_BUS_SPI0>; clock-names = "pll", "mod", "bus"; resets = <&ccu RST_BUS_SPI0>; clock-frequency = <100000000>; pinctrl-names = "default", "sleep"; spi0_cs_number = <1>; spi0_cs_bitmap = <1>; dmas = <&dma 22>, <&dma 22>; dma-names = "tx", "rx"; status = "disabled"; }; spi1: spi@4026000 { #address-cells = <1>; #size-cells = <0>; compatible = "allwinner,sun20i-spi"; reg = <0x0 0x04026000 0x0 0x1000>; interrupts-extended = <&plic0 32 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_PLL_PERIPH0>, <&ccu CLK_SPI1>, <&ccu CLK_BUS_SPI1>; clock-names = "pll", "mod", "bus"; resets = <&ccu RST_BUS_SPI1>; clock-frequency = <100000000>; spi1_cs_number = <1>; spi1_cs_bitmap = <1>; dmas = <&dma 23>, <&dma 23>; dma-names = "tx", "rx"; status = "disabled"; }; twi0: twi@2502000 { #address-cells = <1>; #size-cells = <0>; compatible = "allwinner,sun20i-twi"; device_type = "twi0"; reg = <0x0 0x02502000 0x0 0x400>; interrupts-extended= <&plic0 25 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_BUS_I2C0>; resets = <&ccu RST_BUS_I2C0>; clock-names = "bus"; clock-frequency = <400000>; dmas = <&dma 43>, <&dma 43>; dma-names = "tx", "rx"; status = "disabled"; }; twi1: twi@2502400 { #address-cells = <1>; #size-cells = <0>; compatible = "allwinner,sun20i-twi"; device_type = "twi1"; reg = <0x0 0x02502400 0x0 0x400>; interrupts-extended= <&plic0 26 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_BUS_I2C1>; resets = <&ccu RST_BUS_I2C1>; clock-names = "bus"; clock-frequency = <200000>; dmas = <&dma 44>, <&dma 44>; dma-names = "tx", "rx"; status = "disabled"; }; twi2: twi@2502800 { #address-cells = <1>; #size-cells = <0>; compatible = "allwinner,sun20i-twi"; device_type = "twi2"; reg = <0x0 0x02502800 0x0 0x400>; interrupts-extended = <&plic0 27 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_BUS_I2C2>; resets = <&ccu RST_BUS_I2C2>; clock-names = "bus"; clock-frequency = <100000>; dmas = <&dma 45>, <&dma 45>; dma-names = "tx", "rx"; status = "disabled"; }; twi3: twi@2502c00 { #address-cells = <1>; #size-cells = <0>; compatible = "allwinner,sun20i-twi"; device_type = "twi3"; reg = <0x0 0x02502c00 0x0 0x400>; interrupts-extended = <&plic0 28 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_BUS_I2C3>; resets = <&ccu RST_BUS_I2C3>; clock-names = "bus"; clock-frequency = <100000>; dmas = <&dma 46>, <&dma 46>; dma-names = "tx", "rx"; status = "disabled"; }; ledc: ledc@2008000 { #address-cells = <1>; #size-cells = <0>; compatible = "allwinner,sunxi-leds"; reg = <0x0 0x02008000 0x0 0x400>; interrupts-extended = <&plic0 36 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "ledcirq"; clocks = <&ccu CLK_LEDC>, <&ccu CLK_BUS_LEDC>; clock-names = "clk_ledc", "clk_cpuapb"; dmas = <&dma 42>, <&dma 42>; dma-names = "rx", "tx"; resets = <&ccu RST_BUS_LEDC>; reset-names = "ledc_reset"; status = "disable"; }; pwm: pwm@2000c00 { #pwm-cells = <0x3>; compatible = "allwinner,sunxi-pwm"; reg = <0x0 0x02000c00 0x0 0x3ff>; clocks = <&ccu CLK_BUS_PWM>; resets = <&ccu RST_BUS_PWM>; pwm-number = <8>; pwm-base = <0x0>; sunxi-pwms = <&pwm0>, <&pwm1>, <&pwm2>, <&pwm3>, <&pwm4>, <&pwm5>, <&pwm6>, <&pwm7>; }; keyboard0: keyboard@2009800 { compatible = "allwinner,keyboard_1350mv"; reg = <0x0 0x02009800 0x0 0x400>; interrupts-extended = <&plic0 77 IRQ_TYPE_EDGE_RISING>; clocks = <&ccu CLK_BUS_LRADC>; resets = <&ccu RST_BUS_LRADC>; key_cnt = <5>; key0 = <210 115>; key1 = <410 114>; key2 = <590 139>; key3 = <750 28>; key4 = <880 172>; status = "okay"; }; sid@3006000 { compatible = "allwinner,sun20iw1p1-sid", "allwinner,sunxi-sid"; reg = <0x0 0x03006000 0 0x1000>; #address-cells = <1>; #size-cells = <1>; chipid { reg = <0x0 0>; offset = <0x200>; size = <0x10>; }; secure_status { reg = <0x0 0>; offset = <0xa0>; size = <0x4>; }; vf_table: vf-table@00 { reg = <0x00 2>; }; ths_calib: calib@14 { reg = <0x14 8>; }; }; gpadc: gpadc@2009000 { compatible = "allwinner,sunxi-gpadc"; reg = <0x0 0x02009000 0x0 0x400>; interrupts-extended = <&plic0 73 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_BUS_GPADC>; clock-names = "bus"; resets = <&ccu RST_BUS_GPADC>; status = "okay"; }; ths: ths@02009400 { compatible = "allwinner,sun20iw1p1-ths"; reg = <0x0 0x02009400 0x0 0x400>; clocks = <&ccu CLK_BUS_THS>; clock-names = "bus"; resets = <&ccu RST_BUS_THS>; nvmem-cells = <&ths_calib>; nvmem-cell-names = "calibration"; #thermal-sensor-cells = <1>; }; rtp:rtp@2009c00 { compatible = "allwinner,sun8i-ts"; reg = <0x0 0x02009c00 0x0 0x400>; clocks = <&ccu CLK_TPADC>, <&ccu CLK_BUS_TPADC>; clock-names = "mod", "bus"; clock-frequency = <1000000>; resets = <&ccu RST_BUS_TPADC>; interrupts-extended = <&plic0 78 IRQ_TYPE_LEVEL_HIGH>; }; /* codec addr: 0x02030000, the others is invalid to avoid build warining */ codec:codec@2030000 { #sound-dai-cells = <0>; compatible = "allwinner,sunxi-internal-codec"; reg = <0x0 0x02030000 0x0 0x34c>; clocks = <&ccu CLK_PLL_AUDIO0>, <&ccu CLK_PLL_AUDIO1_DIV5>, <&ccu CLK_AUDIO_DAC>, <&ccu CLK_AUDIO_ADC>, <&ccu CLK_BUS_AUDIO_CODEC>; clock-names = "pll_audio0", "pll_audio1_div5", "audio_clk_dac", "audio_clk_adc", "audio_clk_bus"; resets = <&ccu RST_BUS_AUDIO_CODEC>; device_type = "codec"; status = "disabled"; }; dummy_cpudai:dummy_cpudai@203034c { compatible = "allwinner,sunxi-dummy-cpudai"; reg = <0x0 0x0203034c 0x0 0x4>; tx_fifo_size = <128>; rx_fifo_size = <256>; dac_txdata = <0x02030020>; adc_txdata = <0x02030040>; playback_cma = <128>; capture_cma = <256>; device_type = "cpudai"; dmas = <&dma 7>, <&dma 7>; dma-names = "tx", "rx"; status = "disabled"; }; sndcodec:sound@2030340 { compatible = "allwinner,sunxi-codec-machine"; reg = <0x0 0x02030340 0x0 0x4>; interrupts-extended = <&plic0 41 IRQ_TYPE_LEVEL_HIGH>; sunxi,audio-codec = <&codec>; sunxi,cpudai-controller = <&dummy_cpudai>; device_type = "sndcodec"; status = "disabled"; }; sunxi_rpaf_dsp0:rpaf-dsp@203034c { compatible = "allwinner,rpaf-dsp0"; device_type = "sunxi_rpaf_dsp0"; dsp_id = <0x0>; status = "okay"; }; /* dmic addr: 0x02031000, the others is invalid to avoid build warining */ dmic:dmic@2031000{ #sound-dai-cells = <0>; compatible = "allwinner,sunxi-dmic"; reg = <0x0 0x02031000 0x0 0x50>; clocks = <&ccu CLK_PLL_AUDIO0>, <&ccu CLK_DMIC>, <&ccu CLK_BUS_DMIC>; clock-names = "pll_audio", "dmic", "dmic_bus"; resets = <&ccu RST_BUS_DMIC>; dmas = <&dma 8>; dma-names = "rx"; interrupts-extended = <&plic0 40 IRQ_TYPE_LEVEL_HIGH>; clk_parent = <0x1>; capture_cma = <256>; data_vol = <0xB0>; dmic_rxsync_en = <0x0>; rx_chmap = <0x76543210>; device_type = "dmic"; status = "disabled"; }; dmic_codec:sound@2031050{ #sound-dai-cells = <0>; compatible = "dmic-codec"; reg = <0x0 0x02031050 0x0 0x4>; num-channels = <8>; status = "disabled"; }; sounddmic:sounddmic@2031060 { reg = <0x0 0x02031060 0x0 0x4>; compatible = "sunxi,simple-audio-card"; simple-audio-card,name = "snddmic"; simple-audio-card,capture_only; status = "disabled"; /* simple-audio-card,format = "i2s"; */ simple-audio-card,cpu { sound-dai = <&dmic>; }; simple-audio-card,codec { sound-dai = <&dmic_codec>; }; }; /* daudio0 addr: 0x02032000, the others is invalid to avoid build warining */ daudio0:daudio@2032000 { #sound-dai-cells = <0>; compatible = "allwinner,sunxi-daudio"; reg = <0x0 0x02032000 0x0 0xa0>; clocks = <&ccu CLK_PLL_AUDIO0>, <&ccu CLK_I2S0>, <&ccu CLK_BUS_I2S0>; clock-names = "pll_audio", "i2s0", "i2s0_bus"; resets = <&ccu RST_BUS_I2S0>; dmas = <&dma 3>, <&dma 3>; dma-names = "tx", "rx"; interrupts-extended = <&plic0 42 IRQ_TYPE_LEVEL_HIGH>; sign_extend = <0x00>; tx_data_mode = <0x00>; rx_data_mode = <0x00>; msb_lsb_first = <0x00>; daudio_rxsync_en = <0x00>; pcm_lrck_period = <0x80>; slot_width_select = <0x20>; frametype = <0x00>; tdm_config = <0x01>; tdm_num = <0x00>; mclk_div = <0x00>; clk_parent = <0x01>; capture_cma = <128>; playback_cma = <128>; tx_num = <4>; tx_chmap1 = <0x76543210>; tx_chmap0 = <0xFEDCBA98>; rx_num = <4>; rx_chmap3 = <0x03020100>; rx_chmap2 = <0x07060504>; rx_chmap1 = <0x0B0A0908>; rx_chmap0 = <0x0F0E0D0C>; asrc_function_en = <0x00>; device_type = "daudio0"; status = "disabled"; }; sounddaudio0: sounddaudio0@20320a0 { reg = <0x0 0x020320a0 0x0 0x4>; compatible = "sunxi,simple-audio-card"; simple-audio-card,name = "snddaudio0"; simple-audio-card,format = "i2s"; status = "disabled"; /* simple-audio-card,frame-master = <&daudio0_master>; */ /* simple-audio-card,bitclock-master = <&daudio0_master>; */ /* simple-audio-card,bitclock-inversion; */ /* simple-audio-card,frame-inversion; */ simple-audio-card,cpu { sound-dai = <&daudio0>; }; }; /* daudio1 addr: 0x02033000, the others is invalid to avoid build warining */ daudio1:daudio@2033000 { #sound-dai-cells = <0>; compatible = "allwinner,sunxi-daudio"; reg = <0x0 0x02033000 0x0 0xa0>; clocks = <&ccu CLK_PLL_AUDIO0>, <&ccu CLK_I2S1>, <&ccu CLK_BUS_I2S1>; clock-names = "pll_audio", "i2s1", "i2s1_bus"; resets = <&ccu RST_BUS_I2S1>; dmas = <&dma 4>, <&dma 4>; dma-names = "tx", "rx"; interrupts-extended = <&plic0 43 IRQ_TYPE_LEVEL_HIGH>; sign_extend = <0x00>; tx_data_mode = <0x00>; rx_data_mode = <0x00>; msb_lsb_first = <0x00>; daudio_rxsync_en = <0x00>; pcm_lrck_period = <0x80>; slot_width_select = <0x20>; frametype = <0x00>; tdm_config = <0x01>; tdm_num = <0x01>; mclk_div = <0x00>; clk_parent = <0x01>; capture_cma = <128>; playback_cma = <128>; tx_num = <4>; tx_chmap1 = <0x76543210>; tx_chmap0 = <0xFEDCBA98>; rx_num = <4>; rx_chmap3 = <0x03020100>; rx_chmap2 = <0x07060504>; rx_chmap1 = <0x0B0A0908>; rx_chmap0 = <0x0F0E0D0C>; asrc_function_en = <0x00>; device_type = "daudio1"; status = "disabled"; }; sounddaudio1: sounddaudio1@20330a0 { reg = <0x0 0x020330a0 0x0 0x4>; compatible = "sunxi,simple-audio-card"; simple-audio-card,name = "snddaudio1"; simple-audio-card,format = "i2s"; status = "disabled"; simple-audio-card,cpu { sound-dai = <&daudio1>; }; }; /* daudio2 addr: 0x02034000, the others is invalid to avoid build warining */ daudio2:daudio@2034000 { #sound-dai-cells = <0>; compatible = "allwinner,sunxi-daudio"; reg = <0x0 0x02034000 0x0 0xa0>; clocks = <&ccu CLK_PLL_AUDIO0>, <&ccu CLK_I2S2>, <&ccu CLK_BUS_I2S2>, <&ccu CLK_PLL_AUDIO0_4X>, <&ccu CLK_I2S2_ASRC>; resets = <&ccu RST_BUS_I2S2>; dmas = <&dma 5>, <&dma 5>; dma-names = "tx", "rx"; interrupts-extended = <&plic0 44 IRQ_TYPE_LEVEL_HIGH>; sign_extend = <0x00>; tx_data_mode = <0x00>; rx_data_mode = <0x00>; msb_lsb_first = <0x00>; daudio_rxsync_en = <0x00>; pcm_lrck_period = <0x80>; slot_width_select = <0x20>; frametype = <0x00>; tdm_config = <0x01>; tdm_num = <0x02>; mclk_div = <0x01>; clk_parent = <0x01>; capture_cma = <128>; playback_cma = <128>; tx_num = <4>; tx_chmap1 = <0x76543210>; tx_chmap0 = <0xFEDCBA98>; rx_num = <4>; rx_chmap3 = <0x03020100>; rx_chmap2 = <0x07060504>; rx_chmap1 = <0x0B0A0908>; rx_chmap0 = <0x0F0E0D0C>; asrc_function_en = <0x00>; device_type = "daudio2"; status = "disabled"; }; sounddaudio2: sounddaudio2@20340a0 { reg = <0x0 0x020340a0 0x0 0x4>; compatible = "sunxi,simple-audio-card"; simple-audio-card,name = "snddaudio2"; simple-audio-card,format = "i2s"; status = "disabled"; simple-audio-card,cpu { sound-dai = <&daudio2>; }; }; hdmiaudio: hdmiaudio@20340a4 { #sound-dai-cells = <0>; reg = <0x0 0x020340a4 0x0 0x4>; compatible = "allwinner,sunxi-hdmiaudio"; status = "disabled"; }; /* spdif addr: 0x02036000, the others is invalid to avoid build warining */ spdif:spdif@2036000 { #sound-dai-cells = <0>; compatible = "allwinner,sunxi-spdif"; reg = <0x0 0x02036000 0x0 0x58>; clocks = <&ccu CLK_PLL_AUDIO0>, <&ccu CLK_SPDIF_TX>, <&ccu CLK_BUS_SPDIF>, <&ccu CLK_PLL_AUDIO1>, <&ccu CLK_PLL_AUDIO1_DIV5>, <&ccu CLK_SPDIF_RX>; clock-names = "pll_audio", "spdif", "spdif_bus", "pll_audio1", "pll_audio1_div5", "spdif_rx"; resets = <&ccu RST_BUS_SPDIF>; dmas = <&dma 2>, <&dma 2>; dma-names = "tx", "rx"; interrupts-extended = <&plic0 41 IRQ_TYPE_LEVEL_HIGH>; clk_parent = <0x1>; playback_cma = <128>; capture_cma = <128>; device_type = "spdif"; status = "disabled"; }; soundspdif:soundspdif@2036040 { reg = <0x0 0x02036040 0x0 0x4>; compatible = "sunxi,simple-audio-card"; simple-audio-card,name = "sndspdif"; status = "disabled"; /* simple-audio-card,format = "i2s"; */ simple-audio-card,cpu { sound-dai = <&spdif>; }; simple-audio-card,codec { /*snd-soc-dummy*/ }; }; g2d: g2d@5410000 { compatible = "allwinner,sunxi-g2d"; reg = <0x0 0x05410000 0x0 0x3ffff>; /* interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;*/ interrupts-extended = <&plic0 105 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_BUS_G2D>, <&ccu CLK_G2D>, <&ccu CLK_MBUS_G2D>; clock-names = "bus", "g2d", "mbus_g2d"; resets = <&ccu RST_BUS_G2D>; iommus = <&mmu_aw 3 1>; status = "okay"; }; disp: disp@5000000 { compatible = "allwinner,sunxi-disp"; reg = <0x0 0x05000000 0x0 0x3fffff>, /* de0 */ <0x0 0x05460000 0x0 0xfff>, /*display_if_top*/ <0x0 0x05461000 0x0 0xfff>, /* tcon-lcd0 */ <0x0 0x05470000 0x0 0xfff>, /* tcon-tv */ <0x0 0x05450000 0x0 0x1fff>; /* dsi0*/ /* interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,tcon-lcd0 <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>,tcon-tv <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;dsi*/ interrupts-extended = <&plic0 106 IRQ_TYPE_LEVEL_HIGH>, <&plic0 107 IRQ_TYPE_LEVEL_HIGH>, <&plic0 108 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_DE0>, <&ccu CLK_DE0>, <&ccu CLK_BUS_DE0>, <&ccu CLK_BUS_DE0>, <&ccu CLK_BUS_DPSS_TOP0>, <&ccu CLK_BUS_DPSS_TOP0>, <&ccu CLK_MIPI_DSI>, <&ccu CLK_BUS_MIPI_DSI>, <&ccu CLK_TCON_LCD0>, <&ccu CLK_TCON_TV>, <&ccu CLK_BUS_TCON_LCD0>, <&ccu CLK_BUS_TCON_TV>, <&ccu CLK_MIPI_DSI>, <&ccu CLK_BUS_MIPI_DSI>; clock-names = "clk_de0", "clk_de1", "clk_bus_de0", "clk_bus_de1", "clk_bus_dpss_top0", "clk_bus_dpss_top1", "clk_mipi_dsi0", "clk_bus_mipi_dsi0", "clk_tcon0", "clk_tcon1",/*tcon-tv actually*/ "clk_bus_tcon0", "clk_bus_tcon1",/*tcon-tv actually*/ "clk_mipi_dsi0", "clk_bus_mipi_dsi0"; resets = <&ccu RST_BUS_DE0>, <&ccu RST_BUS_DE0>, <&ccu RST_BUS_DPSS_TOP0>, <&ccu RST_BUS_DPSS_TOP0>, <&ccu RST_BUS_MIPI_DSI>, <&ccu RST_BUS_TCON_LCD0>, <&ccu RST_BUS_TCON_TV>, <&ccu RST_BUS_LVDS0>; reset-names = "rst_bus_de0", "rst_bus_de1", "rst_bus_dpss_top0", "rst_bus_dpss_top1", "rst_bus_mipi_dsi0", "rst_bus_tcon0", "rst_bus_tcon1", "rst_bus_lvds0"; assigned-clocks = <&ccu CLK_DE0>, <&ccu CLK_MIPI_DSI>, <&ccu CLK_TCON_LCD0>, <&ccu CLK_TCON_TV>; assigned-clock-parents = <&ccu CLK_PLL_PERIPH0_2X>, <&ccu CLK_PLL_PERIPH0>, <&ccu CLK_PLL_VIDEO0_4X>, <&ccu CLK_PLL_VIDEO1_4X>; assigned-clock-rates = <300000000>, <0>, <0>, <0>; boot_disp = <0>; boot_disp1 = <0>; boot_disp2 = <0>; fb_base = <0>; iommus = <&mmu_aw 2 0>; status = "okay"; }; ve: ve@1c0e000 { compatible = "allwinner,sunxi-cedar-ve"; reg = <0x0 0x01c0e000 0x0 0x1000>, <0x0 0x03000000 0x0 0x10>, <0x0 0x03001000 0x0 0x1000>; interrupts-extended = <&plic0 82 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_BUS_VE>, <&ccu CLK_VE>, <&ccu CLK_MBUS_VE>; clock-names = "bus_ve", "ve", "mbus_ve"; resets = <&ccu RST_BUS_VE>; iommus = <&mmu_aw 0 1>; status = "okay"; }; msgbox: msgbox@0601f000 { compatible = "sunxi,msgbox-amp"; reg = <0x0 0x03003000 0x0 0x1000>, <0x0 0x01701000 0x0 0x1000>, <0x0 0x0601f000 0x0 0x1000>; interrupts-extended = <&plic0 144 IRQ_TYPE_LEVEL_HIGH>, <&plic0 102 IRQ_TYPE_LEVEL_HIGH>, <&plic0 140 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_BUS_MSGBOX2>; rpmsg_id = "sunxi,dsp-msgbox"; resets = <&ccu RST_BUS_MSGBOX2>; reset-names = "rst"; msgbox_amp_counts = <3>; msgbox_amp_local = <2>; rpmsg_amp_remote-0 = <1>; rpmsg_read_channel-0 = <2>; rpmsg_write_channel-0 = <2>; }; lcd0: lcd0@1c0c000 { compatible = "allwinner,sunxi-lcd0"; reg = <0x0 0x1c0c000 0x0 0x0>; /* Fake registers to avoid dtc compiling warnings */ pinctrl-names = "active","sleep"; status = "okay"; }; sdc2: sdmmc@4022000 { compatible = "allwinner,sunxi-mmc-v4p6x"; device_type = "sdc2"; reg = <0x0 0x04022000 0x0 0x1000>; interrupts-extended = <&plic0 58 IRQ_TYPE_LEVEL_HIGH>; clocks = <&dcxo24M>, <&ccu CLK_PLL_PERIPH0_2X>, <&ccu CLK_MMC2>, <&ccu CLK_BUS_MMC2>; clock-names = "osc24m","pll_periph","mmc","ahb"; resets = <&ccu RST_BUS_MMC2>; reset-names = "rst"; pinctrl-names = "default","sleep"; pinctrl-0 = <&sdc2_pins_a>; pinctrl-1 = <&sdc2_pins_b>; bus-width = <4>; req-page-count = <2>; cap-mmc-highspeed; cap-cmd23; mmc-cache-ctrl; non-removable; /*max-frequency = <200000000>;*/ max-frequency = <50000000>; cap-erase; mmc-high-capacity-erase-size; no-sdio; no-sd; /*-- speed mode --*/ /*sm0: DS26_SDR12*/ /*sm1: HSSDR52_SDR25*/ /*sm2: HSDDR52_DDR50*/ /*sm3: HS200_SDR104*/ /*sm4: HS400*/ /*-- frequency point --*/ /*f0: CLK_400K*/ /*f1: CLK_25M*/ /*f2: CLK_50M*/ /*f3: CLK_100M*/ /*f4: CLK_150M*/ /*f5: CLK_200M*/ sdc_tm4_sm0_freq0 = <0>; sdc_tm4_sm0_freq1 = <0>; sdc_tm4_sm1_freq0 = <0x00000000>; sdc_tm4_sm1_freq1 = <0>; sdc_tm4_sm2_freq0 = <0x00000000>; sdc_tm4_sm2_freq1 = <0>; sdc_tm4_sm3_freq0 = <0x05000000>; sdc_tm4_sm3_freq1 = <0x00000005>; sdc_tm4_sm4_freq0 = <0x00050000>; sdc_tm4_sm4_freq1 = <0x00000004>; sdc_tm4_sm4_freq0_cmd = <0>; sdc_tm4_sm4_freq1_cmd = <0>; /*vmmc-supply = <®_3p3v>;*/ /*vqmc-supply = <®_3p3v>;*/ /*vdmc-supply = <®_3p3v>;*/ /*vmmc = "vcc-card";*/ /*vqmc = "";*/ /*vdmc = "";*/ /*sunxi-power-save-mode;*/ }; sdc0: sdmmc@4020000 { compatible = "allwinner,sunxi-mmc-v5p3x"; device_type = "sdc0"; reg = <0x0 0x04020000 0x0 0x1000>; interrupts-extended = <&plic0 56 IRQ_TYPE_LEVEL_HIGH>; clocks = <&dcxo24M>, <&ccu CLK_PLL_PERIPH0_2X>, <&ccu CLK_MMC0>, <&ccu CLK_BUS_MMC0>; clock-names = "osc24m","pll_periph","mmc","ahb"; resets = <&ccu RST_BUS_MMC0>; reset-names = "rst"; pinctrl-names = "default","mmc_1v8","sleep","uart_jtag"; pinctrl-0 = <&sdc0_pins_a>; pinctrl-1 = <&sdc0_pins_b>; pinctrl-2 = <&sdc0_pins_c>; pinctrl-3 = <&sdc0_pins_d &sdc0_pins_e>; max-frequency = <50000000>; bus-width = <4>; req-page-count = <2>; /*non-removable;*/ /*broken-cd;*/ /*cd-inverted*/ /*cd-gpios = <&pio PF 6 GPIO_ACTIVE_LOW>;*/ /* vmmc-supply = <®_3p3v>;*/ /* vqmc-supply = <®_3p3v>;*/ /* vdmc-supply = <®_3p3v>;*/ /*vmmc = "vcc-card";*/ /*vqmc = "";*/ /*vdmc = "";*/ cap-sd-highspeed; cap-wait-while-busy; no-sdio; no-mmc; /*sd-uhs-sdr50;*/ /*sd-uhs-ddr50;*/ /*cap-sdio-irq;*/ /*keep-power-in-suspend;*/ /*ignore-pm-notify;*/ /*sunxi-power-save-mode;*/ /*sunxi-dly-400k = <1 0 0 0>; */ /*sunxi-dly-26M = <1 0 0 0>;*/ /*sunxi-dly-52M = <1 0 0 0>;*/ /*sunxi-dly-52M-ddr4 = <1 0 0 0>;*/ /*sunxi-dly-52M-ddr8 = <1 0 0 0>;*/ /*sunxi-dly-104M = <1 0 0 0>;*/ /*sunxi-dly-208M = <1 0 0 0>;*/ /*sunxi-dly-104M-ddr = <1 0 0 0>;*/ /*sunxi-dly-208M-ddr = <1 0 0 0>;*/ status = "okay"; }; sdc1: sdmmc@4021000 { compatible = "allwinner,sunxi-mmc-v5p3x"; device_type = "sdc1"; reg = <0x0 0x04021000 0x0 0x1000>; interrupts-extended = <&plic0 57 IRQ_TYPE_LEVEL_HIGH>; clocks = <&dcxo24M>, <&ccu CLK_PLL_PERIPH0_2X>, <&ccu CLK_MMC1>, <&ccu CLK_BUS_MMC1>; clock-names = "osc24m","pll_periph","mmc","ahb"; resets = <&ccu RST_BUS_MMC1>; reset-names = "rst"; pinctrl-names = "default","sleep"; pinctrl-0 = <&sdc1_pins_a>; pinctrl-1 = <&sdc1_pins_b>; max-frequency = <50000000>; bus-width = <4>; /*broken-cd;*/ /*cd-inverted*/ /*cd-gpios = <&pio PG 6 6 1 2 0>;*/ /* vmmc-supply = <®_3p3v>;*/ /* vqmc-supply = <®_3p3v>;*/ /* vdmc-supply = <®_3p3v>;*/ /*vmmc = "vcc-card";*/ /*vqmc = "";*/ /*vdmc = "";*/ cap-sd-highspeed; no-mmc; /*sd-uhs-sdr50;*/ /*sd-uhs-ddr50;*/ /*sd-uhs-sdr104;*/ /*cap-sdio-irq;*/ keep-power-in-suspend; /*ignore-pm-notify;*/ /*sunxi-power-save-mode;*/ /*sunxi-dly-400k = <1 0 0 0 0>; */ /*sunxi-dly-26M = <1 0 0 0 0>;*/ /*sunxi-dly-52M = <1 0 0 0 0>;*/ sunxi-dly-52M-ddr4 = <1 0 0 0 2>; /*sunxi-dly-52M-ddr8 = <1 0 0 0 0>;*/ sunxi-dly-104M = <1 0 0 0 1>; /*sunxi-dly-208M = <1 1 0 0 0>;*/ sunxi-dly-208M = <1 0 0 0 1>; /*sunxi-dly-104M-ddr = <1 0 0 0 0>;*/ /*sunxi-dly-208M-ddr = <1 0 0 0 0>;*/ status = "disabled"; }; hdmi: hdmi@5500000 { compatible = "allwinner,sunxi-hdmi"; reg = <0x0 0x05500000 0x0 0xfffff>; interrupts-extended = <&plic0 93 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_24M>, <&ccu CLK_HDMI_CEC>, <&ccu CLK_TCON_TV>; clock-names = "clk_bus_hdmi", "clk_ddc", "clk_cec", "clk_tcon_tv"; resets = <&ccu RST_BUS_HDMI_SUB>, <&ccu RST_BUS_HDMI_MAIN>; reset-names = "rst_bus_sub", "rst_bus_main"; assigned-clocks = <&ccu CLK_HDMI_CEC>; assigned-clock-parents = <&ccu CLK_HDMI_CEC_32K>; assigned-clock-rates = <0>; status = "okay"; }; usbc0:usbc0@0 { device_type = "usbc0"; compatible = "allwinner,sunxi-otg-manager"; usb_port_type = <2>; usb_detect_type = <1>; usb_id_gpio; usb_det_vbus_gpio; usb_regulator_io = "nocare"; usb_wakeup_suspend = <0>; usb_luns = <3>; usb_serial_unique = <0>; usb_serial_number = "20080411"; rndis_wceis = <1>; status = "okay"; }; udc:udc-controller@0x04100000 { compatible = "allwinner,sunxi-udc"; reg = <0x0 0x04100000 0x0 0x1000>, /*udc base*/ <0x0 0x00000000 0x0 0x100>; /*sram base*/ interrupts-extended = <&plic0 45 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_BUS_OTG>; clock-names = "bus_otg"; resets = <&ccu RST_BUS_OTG>, <&ccu RST_USB_PHY0>; reset-names = "otg", "phy"; status = "okay"; }; ehci0:ehci0-controller@0x04101000 { compatible = "allwinner,sunxi-ehci0"; reg = <0x0 0x04101000 0x0 0xFFF>, /*hci0 base*/ <0x0 0x00000000 0x0 0x100>, /*sram base*/ <0x0 0x04100000 0x0 0x1000>; /*otg base*/ interrupts-extended = <&plic0 46 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_BUS_EHCI0>; clock-names = "bus_hci"; resets = <&ccu RST_BUS_EHCI0>, <&ccu RST_USB_PHY0>; reset-names = "hci", "phy"; hci_ctrl_no = <0>; status = "okay"; }; ohci0:ohci0-controller@0x04101400 { compatible = "allwinner,sunxi-ohci0"; reg = <0x0 0x04101400 0x0 0xFFF>, /*hci0 base*/ <0x0 0x00000000 0x0 0x100>, /*sram base*/ <0x0 0x04100000 0x0 0x1000>; /*otg base*/ interrupts-extended = <&plic0 47 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_BUS_OHCI0>, <&ccu CLK_USB_OHCI0>; clock-names = "bus_hci", "ohci"; resets = <&ccu RST_BUS_OHCI0>, <&ccu RST_USB_PHY0>; reset-names = "hci", "phy"; hci_ctrl_no = <0>; status = "okay"; }; usbc1:usbc1@0 { device_type = "usbc1"; usb_regulator_io = "nocare"; usb_wakeup_suspend = <0>; status = "disable"; }; ehci1:ehci1-controller@0x04200000 { compatible = "allwinner,sunxi-ehci1"; reg = <0x0 0x04200000 0x0 0xFFF>, /*ehci1 base*/ <0x0 0x00000000 0x0 0x100>, /*sram base*/ <0x0 0x04100000 0x0 0x1000>; /*otg base*/ interrupts-extended = <&plic0 49 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_BUS_EHCI1>; clock-names = "bus_hci"; resets = <&ccu RST_BUS_EHCI1>, <&ccu RST_USB_PHY1>; reset-names = "hci", "phy"; hci_ctrl_no = <1>; status = "disable"; }; ohci1:ohci1-controller@0x04200400 { compatible = "allwinner,sunxi-ohci1"; reg = <0x0 0x04200400 0x0 0xFFF>, /*ohci1 base*/ <0x0 0x00000000 0x0 0x100>, /*sram base*/ <0x0 0x04100000 0x0 0x1000>; /*otg base*/ interrupts-extended = <&plic0 50 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_BUS_OHCI1>, <&ccu CLK_USB_OHCI1>; clock-names = "bus_hci", "ohci"; resets = <&ccu RST_BUS_OHCI1>, <&ccu RST_USB_PHY1>; reset-names = "hci", "phy"; hci_ctrl_no = <1>; status = "disable"; }; pwm0: pwm0@2000c10 { compatible = "allwinner,sunxi-pwm0"; reg = <0x0 0x02000c10 0x0 0x4>; reg_base = <0x02000c00>; }; pwm1: pwm1@2000c11 { compatible = "allwinner,sunxi-pwm1"; reg = <0x0 0x02000c11 0x0 0x4>; reg_base = <0x02000c00>; }; pwm2: pwm2@2000c12 { compatible = "allwinner,sunxi-pwm2"; reg = <0x0 0x02000c12 0x0 0x4>; reg_base = <0x02000c00>; }; pwm3: pwm3@2000c13 { compatible = "allwinner,sunxi-pwm3"; reg = <0x0 0x02000c13 0x0 0x4>; reg_base = <0x02000c00>; }; pwm4: pwm4@2000c14 { compatible = "allwinner,sunxi-pwm4"; reg = <0x0 0x02000c14 0x0 0x4>; reg_base = <0x02000c00>; }; pwm5: pwm5@2000c15 { compatible = "allwinner,sunxi-pwm5"; reg = <0x0 0x02000c15 0x0 0x4>; reg_base = <0x02000c00>; }; pwm6: pwm6@2000c16 { compatible = "allwinner,sunxi-pwm6"; reg = <0x0 0x02000c16 0x0 0x4>; reg_base = <0x02000c00>; }; pwm7: pwm7@2000c17 { compatible = "allwinner,sunxi-pwm7"; reg = <0x0 0x02000c17 0x0 0x4>; reg_base = <0x02000c00>; }; vind0: vind@5800800 { compatible = "allwinner,sunxi-vin-media", "simple-bus"; #address-cells = <2>; #size-cells = <2>; ranges; device_id = <0>; csi_top = <336000000>; csi_isp = <327000000>; reg = <0x0 0x05800800 0x0 0x200>, <0x0 0x05800000 0x0 0x800>; clocks = <&ccu CLK_CSI_TOP>, <&ccu CLK_PLL_VIDEO1_2X>, <&ccu CLK_CSI0_MCLK>, <&dcxo24M>, <&ccu CLK_PLL_VIDEO1>, <&ccu CLK_BUS_CSI>, <&ccu CLK_MBUS_CSI>; clock-names = "csi_top", "csi_top_src", "csi_mclk0", "csi_mclk0_24m", "csi_mclk0_pll", "csi_bus", "csi_mbus"; resets = <&ccu RST_BUS_CSI>; reset-names = "csi_ret"; pinctrl-names = "mclk0-default", "mclk0-sleep"; pinctrl-0 = <&csi_mclk0_pins_a>; pinctrl-1 = <&csi_mclk0_pins_b>; status = "okay"; csi0: csi@5801000{ compatible = "allwinner,sunxi-csi"; reg = <0x0 0x05801000 0x0 0x1000>; interrupts-extended = <&plic0 116 IRQ_TYPE_LEVEL_HIGH>; pinctrl-names = "default","sleep"; pinctrl-0 = <&csi0_pins_a>; pinctrl-1 = <&csi0_pins_b>; device_id = <0>; iommus = <&mmu_aw 1 1>; status = "okay"; }; isp0: isp@5809410 { compatible = "allwinner,sunxi-isp"; reg = <0x0 0x05809410 0x0 0x10>; device_id = <0xfe>; status = "okay"; }; isp1: isp@5809420 { compatible = "allwinner,sunxi-isp"; reg = <0x0 0x05809420 0x0 0x10>; device_id = <0xff>; status = "okay"; }; scaler0: scaler@5809430 { compatible = "allwinner,sunxi-scaler"; reg = <0x0 0x05809430 0x0 0x10>; device_id = <0xfe>; status = "okay"; }; scaler1: scaler@5809440 { compatible = "allwinner,sunxi-scaler"; reg = <0x0 0x05809440 0x0 0x10>; device_id = <0xff>; status = "okay"; }; actuator0: actuator@5809450 { compatible = "allwinner,sunxi-actuator"; device_type = "actuator0"; reg = <0x0 0x05809450 0x0 0x10>; actuator0_name = "ad5820_act"; actuator0_slave = <0x18>; actuator0_af_pwdn = <>; actuator0_afvdd = "afvcc-csi"; actuator0_afvdd_vol = <2800000>; status = "disabled"; }; flash0: flash@5809460 { device_type = "flash0"; compatible = "allwinner,sunxi-flash"; reg = <0x0 0x05809460 0x0 0x10>; flash0_type = <2>; flash0_en = <>; flash0_mode = <>; flash0_flvdd = ""; flash0_flvdd_vol = <>; device_id = <0>; status = "disabled"; }; 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 PE 9 GPIO_ACTIVE_LOW>; sensor0_pwdn = <&pio PE 8 GPIO_ACTIVE_LOW>; sensor0_sm_vs = <>; flash_handle = <&flash0>; act_handle = <&actuator0>; device_id = <0>; status = "okay"; }; sensor1: sensor@5809480 { reg = <0x0 0x05809480 0x0 0x10>; device_type = "sensor1"; compatible = "allwinner,sunxi-sensor"; 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>; sensor1_sm_vs = <>; flash_handle = <>; act_handle = <>; device_id = <1>; status = "okay"; }; vinc0: vinc@5809000 { compatible = "allwinner,sunxi-vin-core"; device_type = "vinc0"; reg = <0x0 0x05809000 0x0 0x200>; interrupts-extended = <&plic0 111 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"; }; vinc1: vinc@5809200 { device_type = "vinc1"; compatible = "allwinner,sunxi-vin-core"; reg = <0x0 0x05809200 0x0 0x200>; interrupts-extended = <&plic0 112 IRQ_TYPE_LEVEL_HIGH>; vinc1_csi_sel = <0>; vinc1_mipi_sel = <0xff>; vinc1_isp_sel = <1>; vinc1_tdm_rx_sel = <0xff>; vinc1_rear_sensor_sel = <0>; vinc1_front_sensor_sel = <0>; vinc1_sensor_list = <0>; device_id = <1>; iommus = <&mmu_aw 1 1>; status = "okay"; }; }; tvd: tvd@05c00000 { compatible = "allwinner,sunxi-tvd"; reg = <0x0 0x05c00000 0x0 0x00010000>;/*tvd_top*/ interrupts-extended = <&plic0 123 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_BUS_TVD_TOP>, <&ccu CLK_MBUS_TVIN>; clock-names = "clk_bus_tvd_top", "clk_mbus_tvd"; resets = <&ccu RST_BUS_TVD_TOP>; reset-names = "rst_bus_tvd_top"; tvd-number = <1>; tvds = <&tvd0>; status = "okay"; }; tvd0: tvd0@05c01000 { compatible = "allwinner,sunxi-tvd0"; reg = <0x0 0x05c01000 0x0 0x00010000>; interrupts-extended = <&plic0 123 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ccu CLK_TVD>, <&ccu CLK_BUS_TVD>; clock-names = "clk_tvd0","clk_bus_tvd0"; resets = <&ccu RST_BUS_TVD>; reset-names = "rst_bus_tvd0"; assigned-clocks = <&ccu CLK_TVD>; assigned-clock-parents = <&ccu CLK_PLL_VIDEO1>; tvd_used = <1>; tvd_if = <0>; status = "okay"; }; }; };
里面已经包含了 ov5460 驱动了:
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 PE 9 GPIO_ACTIVE_LOW>; sensor0_pwdn = <&pio PE 8 GPIO_ACTIVE_LOW>; sensor0_sm_vs = <>; flash_handle = <&flash0>; act_handle = <&actuator0>; device_id = <0>; status = "okay"; }; sensor1: sensor@5809480 { reg = <0x0 0x05809480 0x0 0x10>; device_type = "sensor1"; compatible = "allwinner,sunxi-sensor"; 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>; sensor1_sm_vs = <>; flash_handle = <>; act_handle = <>; device_id = <1>; status = "okay"; };
-
回复: 有没有哪位大神在D1S上跑过ov5640或者其他sensor的,走DVP-CSI
看了一下驱动是有了,能不能用不清楚
勾选 :
- CONFIG_SUNXI_PLATFORM_DRIVERS=y
- CONFIG_VIDEO_SUNXI_VIN=y
- CONFIG_CSI_VIN=m
这样驱动都编译好了:
make[4]: Entering directory '/opt/D1/tina_d1_open_v1.0_debug2/lichee/linux-5.4' scripts/Makefile.asm-generic:25: redundant generic-y found in arch/riscv/include/asm/Kbuild: device.h CALL scripts/checksyscalls.sh CALL scripts/atomic/check-atomics.sh CHK include/generated/compile.h CC [M] drivers/media/common/videobuf2/videobuf2-memops.o CC [M] drivers/media/common/videobuf2/videobuf2-dma-contig.o CC [M] drivers/media/platform/sunxi-vin/modules/actuator/actuator.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/nvp6158/nvp6158c.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/nvp6158/nvp6158_drv.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/nvp6158/video_auto_detect.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/nvp6158/video_eq.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/nvp6158/coax_protocol.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/nvp6158/video.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/nvp6158/motion.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/nvp6158/audio.o LD [M] drivers/media/platform/sunxi-vin/modules/sensor/nvp6158/nvp6158.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/ov5640.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/gc0310_mipi.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/gc030a_mipi.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/gc2385_mipi.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/gc5025_mipi.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/c2590_mipi.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/sp5409_mipi.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/ov8858_r2a_4lane.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/ov2680_mipi.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/imx278_mipi.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/imx278_2lane_mipi.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/imx386_2lane_mipi.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/imx386_mipi.o CC [M] drivers/media/platform/sunxi-vin/vin-cci/cci_helper.o CC [M] drivers/media/platform/sunxi-vin/vin-cci/sunxi_cci.o CC [M] drivers/media/platform/sunxi-vin/utility/vin_supply.o CC [M] drivers/media/platform/sunxi-vin/utility/vin_os.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/sensor-compat-ioctl32.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor/sensor_helper.o CC [M] drivers/media/platform/sunxi-vin/vin-cci/csi_cci_reg.o CC [M] drivers/media/platform/sunxi-vin/vin-cci/bsp_cci.o LD [M] drivers/media/platform/sunxi-vin/vin_io.o CC [M] drivers/media/platform/sunxi-vin/vin-csi/sunxi_csi.o CC [M] drivers/media/platform/sunxi-vin/vin-csi/parser_reg.o CC [M] drivers/media/platform/sunxi-vin/vin-mipi/sunxi_mipi.o CC [M] drivers/media/platform/sunxi-vin/vin-mipi/bsp_mipi_csi_null.o CC [M] drivers/media/platform/sunxi-vin/vin-mipi/combo_rx/combo_rx_reg_null.o CC [M] drivers/media/platform/sunxi-vin/vin-isp/sunxi_isp.o CC [M] drivers/media/platform/sunxi-vin/vin-isp/isp500/isp500_reg_cfg.o CC [M] drivers/media/platform/sunxi-vin/modules/sensor-list/sensor_list.o CC [M] drivers/media/platform/sunxi-vin/vin-vipp/sunxi_scaler.o CC [M] drivers/media/platform/sunxi-vin/vin-vipp/vipp_reg.o CC [M] drivers/media/platform/sunxi-vin/modules/flash/flash.o CC [M] drivers/media/platform/sunxi-vin/utility/bsp_common.o CC [M] drivers/media/platform/sunxi-vin/utility/config.o CC [M] drivers/media/platform/sunxi-vin/vin-stat/vin_h3a.o CC [M] drivers/media/platform/sunxi-vin/vin-video/vin_video.o CC [M] drivers/media/platform/sunxi-vin/vin-video/vin_core.o CC [M] drivers/media/platform/sunxi-vin/vin-video/dma_reg.o CC [M] drivers/media/platform/sunxi-vin/top_reg.o CC [M] drivers/media/platform/sunxi-vin/vin.o LD [M] drivers/media/platform/sunxi-vin/vin_v4l2.o OBJCOPY arch/riscv/boot/Image DTC arch/riscv/boot/dts/sunxi/board.dtb Building modules, stage 2. MODPOST 40 modules CC [M] drivers/media/common/videobuf2/videobuf2-dma-contig.mod.o LD [M] drivers/media/common/videobuf2/videobuf2-dma-contig.ko CC [M] drivers/media/common/videobuf2/videobuf2-memops.mod.o LD [M] drivers/media/common/videobuf2/videobuf2-memops.ko CC [M] drivers/media/platform/sunxi-vin/modules/actuator/actuator.mod.o LD [M] drivers/media/platform/sunxi-vin/modules/actuator/actuator.ko CC [M] drivers/media/platform/sunxi-vin/modules/sensor/c2590_mipi.mod.o LD [M] drivers/media/platform/sunxi-vin/modules/sensor/c2590_mipi.ko CC [M] drivers/media/platform/sunxi-vin/modules/sensor/gc030a_mipi.mod.o LD [M] drivers/media/platform/sunxi-vin/modules/sensor/gc030a_mipi.ko CC [M] drivers/media/platform/sunxi-vin/modules/sensor/gc0310_mipi.mod.o LD [M] drivers/media/platform/sunxi-vin/modules/sensor/gc0310_mipi.ko CC [M] drivers/media/platform/sunxi-vin/modules/sensor/gc2385_mipi.mod.o LD [M] drivers/media/platform/sunxi-vin/modules/sensor/gc2385_mipi.ko CC [M] drivers/media/platform/sunxi-vin/modules/sensor/gc5025_mipi.mod.o LD [M] drivers/media/platform/sunxi-vin/modules/sensor/gc5025_mipi.ko CC [M] drivers/media/platform/sunxi-vin/modules/sensor/imx278_2lane_mipi.mod.o LD [M] drivers/media/platform/sunxi-vin/modules/sensor/imx278_2lane_mipi.ko CC [M] drivers/media/platform/sunxi-vin/modules/sensor/imx278_mipi.mod.o LD [M] drivers/media/platform/sunxi-vin/modules/sensor/imx278_mipi.ko CC [M] drivers/media/platform/sunxi-vin/modules/sensor/imx386_2lane_mipi.mod.o LD [M] drivers/media/platform/sunxi-vin/modules/sensor/imx386_2lane_mipi.ko CC [M] drivers/media/platform/sunxi-vin/modules/sensor/imx386_mipi.mod.o LD [M] drivers/media/platform/sunxi-vin/modules/sensor/imx386_mipi.ko CC [M] drivers/media/platform/sunxi-vin/modules/sensor/nvp6158/nvp6158.mod.o LD [M] drivers/media/platform/sunxi-vin/modules/sensor/nvp6158/nvp6158.ko CC [M] drivers/media/platform/sunxi-vin/modules/sensor/ov2680_mipi.mod.o LD [M] drivers/media/platform/sunxi-vin/modules/sensor/ov2680_mipi.ko CC [M] drivers/media/platform/sunxi-vin/modules/sensor/ov5640.mod.o LD [M] drivers/media/platform/sunxi-vin/modules/sensor/ov5640.ko CC [M] drivers/media/platform/sunxi-vin/modules/sensor/ov8858_r2a_4lane.mod.o LD [M] drivers/media/platform/sunxi-vin/modules/sensor/ov8858_r2a_4lane.ko CC [M] drivers/media/platform/sunxi-vin/modules/sensor/sp5409_mipi.mod.o LD [M] drivers/media/platform/sunxi-vin/modules/sensor/sp5409_mipi.ko CC [M] drivers/media/platform/sunxi-vin/vin_io.mod.o LD [M] drivers/media/platform/sunxi-vin/vin_io.ko CC [M] drivers/media/platform/sunxi-vin/vin_v4l2.mod.o LD [M] drivers/media/platform/sunxi-vin/vin_v4l2.ko make[4]: Leaving directory '/opt/D1/tina_d1_open_v1.0_debug2/lichee/linux-5.4'
dts得重新配置一下.
-
回复: D1 / D1s 可以用的 5.5元的 1280*400 长条形MIPI屏, 未验证
某网站下载的初始化驱动 mipi_ota7290b.c:
/* * drivers/video/mmp/panel/mipi_ota7290b.c * active panel using DSI interface to do init * * Copyright (C) 2013 Marvell Technology Group Ltd. * Authors: Yonghai Huang <huangyh@marvell.com> * Xiaolong Ye <yexl@marvell.com> * Guoqing Li <ligq@marvell.com> * Lisa Du <cldu@marvell.com> * Zhou Zhu <zzhu3@marvell.com> * Jing Xiang <jxiang@marvell.com> * * 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, see <http://www.gnu.org/licenses/>. * */ #include <linux/module.h> #include <linux/moduleparam.h> #include <linux/kernel.h> #include <linux/errno.h> #include <linux/string.h> #include <linux/delay.h> #include <linux/platform_device.h> #include <linux/err.h> #include <linux/of.h> #include <linux/kthread.h> #include <linux/of_gpio.h> #include <linux/regulator/consumer.h> #include <linux/slab.h> #include <linux/fb.h> #include <video/mmp_disp.h> #include <video/mipi_display.h> #include <video/mmp_esd.h> #define TRACE pr_err("@@ %s, %d\n", __func__, __LINE__); static int vcom_pwm = 0; //static struct task_struct *vcom_task = NULL; struct ota7290b_plat_data { struct mmp_panel *panel; u32 esd_enable; int vcom_pin; int power_pin; void (*plat_onoff)(int status); void (*plat_set_backlight)(struct mmp_panel *panel, int level); }; static char exit_sleep[] = {0x11}; static char display_on[] = {0x29}; #define OTA7290B_ID 0xE3 #define HSM 0 #define LPM 1 static char ota7290b_on_cmd0[] = {0xB0,0x5A}; static char ota7290b_on_cmd1[] = {0xB1,0x00}; static char ota7290b_on_cmd2[] = {0x89,0x01}; static char ota7290b_on_cmd3[] = {0x91,0x17}; static char ota7290b_on_cmd4[] = {0xB1,0x03}; static char ota7290b_on_cmd5[] = {0x2C,0x28}; static char ota7290b_on_cmd6[] = {0x00,0xB7}; static char ota7290b_on_cmd7[] = {0x01,0x1B}; static char ota7290b_on_cmd8[] = {0x02,0x00}; static char ota7290b_on_cmd9[] = {0x03,0x00}; static char ota7290b_on_cmd10[] = {0x04,0x00}; static char ota7290b_on_cmd11[] = {0x05,0x00}; static char ota7290b_on_cmd12[] = {0x06,0x00}; static char ota7290b_on_cmd13[] = {0x07,0x00}; static char ota7290b_on_cmd14[] = {0x08,0x00}; static char ota7290b_on_cmd15[] = {0x09,0x00}; static char ota7290b_on_cmd16[] = {0x0A,0x01}; static char ota7290b_on_cmd17[] = {0x0B,0x01}; static char ota7290b_on_cmd18[] = {0x0C,0x00}; static char ota7290b_on_cmd19[] = {0x0D,0x00}; static char ota7290b_on_cmd20[] = {0x0E,0x24}; static char ota7290b_on_cmd21[] = {0x0F,0x1C}; static char ota7290b_on_cmd22[] = {0x10,0xC9}; static char ota7290b_on_cmd23[] = {0x11,0x60}; static char ota7290b_on_cmd24[] = {0x12,0x70}; static char ota7290b_on_cmd25[] = {0x13,0x01}; static char ota7290b_on_cmd26[] = {0x14,0xE7}; static char ota7290b_on_cmd27[] = {0x15,0xFF}; static char ota7290b_on_cmd28[] = {0x16,0x3D}; static char ota7290b_on_cmd29[] = {0x17,0x0E}; static char ota7290b_on_cmd30[] = {0x18,0x01}; static char ota7290b_on_cmd31[] = {0x19,0x00}; static char ota7290b_on_cmd32[] = {0x1A,0x00}; static char ota7290b_on_cmd33[] = {0x1B,0xFC}; static char ota7290b_on_cmd34[] = {0x1C,0x0B}; static char ota7290b_on_cmd35[] = {0x1D,0xA0}; static char ota7290b_on_cmd36[] = {0x1E,0x03}; static char ota7290b_on_cmd37[] = {0x1F,0x04}; static char ota7290b_on_cmd38[] = {0x20,0x0C}; static char ota7290b_on_cmd39[] = {0x21,0x00}; static char ota7290b_on_cmd40[] = {0x22,0x04}; static char ota7290b_on_cmd41[] = {0x23,0x81}; static char ota7290b_on_cmd42[] = {0x24,0x1F}; static char ota7290b_on_cmd43[] = {0x25,0x10}; static char ota7290b_on_cmd44[] = {0x26,0x9B}; static char ota7290b_on_cmd45[] = {0x2D,0x01}; static char ota7290b_on_cmd46[] = {0x2E,0x84}; static char ota7290b_on_cmd47[] = {0x2F,0x00}; static char ota7290b_on_cmd48[] = {0x30,0x02}; static char ota7290b_on_cmd49[] = {0x31,0x08}; static char ota7290b_on_cmd50[] = {0x32,0x01}; static char ota7290b_on_cmd51[] = {0x33,0x1C}; static char ota7290b_on_cmd52[] = {0x34,0x40}; static char ota7290b_on_cmd53[] = {0x35,0xFF}; static char ota7290b_on_cmd54[] = {0x36,0xFF}; static char ota7290b_on_cmd55[] = {0x37,0xFF}; static char ota7290b_on_cmd56[] = {0x38,0xFF}; static char ota7290b_on_cmd57[] = {0x39,0xFF}; static char ota7290b_on_cmd58[] = {0x3A,0x05}; static char ota7290b_on_cmd59[] = {0x3B,0x00}; static char ota7290b_on_cmd60[] = {0x3C,0x00}; static char ota7290b_on_cmd61[] = {0x3D,0x00}; static char ota7290b_on_cmd62[] = {0x3E,0xCF}; static char ota7290b_on_cmd63[] = {0x3F,0x84}; static char ota7290b_on_cmd64[] = {0x40,0x2F}; static char ota7290b_on_cmd65[] = {0x41,0xFC}; static char ota7290b_on_cmd66[] = {0x42,0x01}; static char ota7290b_on_cmd67[] = {0x43,0x40}; static char ota7290b_on_cmd68[] = {0x44,0x05}; static char ota7290b_on_cmd69[] = {0x45,0xE8}; static char ota7290b_on_cmd70[] = {0x46,0x16}; static char ota7290b_on_cmd71[] = {0x47,0x00}; static char ota7290b_on_cmd72[] = {0x48,0x00}; static char ota7290b_on_cmd73[] = {0x49,0x88}; static char ota7290b_on_cmd74[] = {0x4A,0x08}; static char ota7290b_on_cmd75[] = {0x4B,0x05}; static char ota7290b_on_cmd76[] = {0x4C,0x03}; static char ota7290b_on_cmd77[] = {0x4D,0xD0}; static char ota7290b_on_cmd78[] = {0x4E,0x13}; static char ota7290b_on_cmd79[] = {0x4F,0xFF}; static char ota7290b_on_cmd80[] = {0x50,0x0A}; static char ota7290b_on_cmd81[] = {0x51,0x53}; static char ota7290b_on_cmd82[] = {0x52,0x26}; static char ota7290b_on_cmd83[] = {0x53,0x22}; static char ota7290b_on_cmd84[] = {0x54,0x09}; static char ota7290b_on_cmd85[] = {0x55,0x22}; static char ota7290b_on_cmd86[] = {0x56,0x00}; static char ota7290b_on_cmd87[] = {0x57,0x1C}; static char ota7290b_on_cmd88[] = {0x58,0x03}; static char ota7290b_on_cmd89[] = {0x59,0x3F}; static char ota7290b_on_cmd90[] = {0x5A,0x28}; static char ota7290b_on_cmd91[] = {0x5B,0x01}; static char ota7290b_on_cmd92[] = {0x5C,0xCC}; static char ota7290b_on_cmd93[] = {0x5D,0x21}; static char ota7290b_on_cmd94[] = {0x5E,0x84}; static char ota7290b_on_cmd95[] = {0x5F,0x10}; static char ota7290b_on_cmd96[] = {0x60,0x42}; static char ota7290b_on_cmd97[] = {0x61,0x08}; static char ota7290b_on_cmd98[] = {0x62,0x21}; static char ota7290b_on_cmd99[] = {0x63,0x84}; static char ota7290b_on_cmd100[] = {0x64,0x80}; static char ota7290b_on_cmd101[] = {0x65,0x0C}; static char ota7290b_on_cmd102[] = {0x66,0x74}; static char ota7290b_on_cmd103[] = {0x67,0x4C}; static char ota7290b_on_cmd104[] = {0x68,0x09}; static char ota7290b_on_cmd105[] = {0x69,0x12}; static char ota7290b_on_cmd106[] = {0x6A,0x42}; static char ota7290b_on_cmd107[] = {0x6B,0x08}; static char ota7290b_on_cmd108[] = {0x6C,0x21}; static char ota7290b_on_cmd109[] = {0x6D,0x84}; static char ota7290b_on_cmd110[] = {0x6E,0x10}; static char ota7290b_on_cmd111[] = {0x6F,0x42}; static char ota7290b_on_cmd112[] = {0x70,0x08}; static char ota7290b_on_cmd113[] = {0x71,0xE9}; static char ota7290b_on_cmd114[] = {0x72,0xC4}; static char ota7290b_on_cmd115[] = {0x73,0xD7}; static char ota7290b_on_cmd116[] = {0x74,0xD6}; static char ota7290b_on_cmd117[] = {0x75,0x28}; static char ota7290b_on_cmd118[] = {0x76,0x00}; static char ota7290b_on_cmd119[] = {0x77,0x00}; static char ota7290b_on_cmd120[] = {0x78,0x0F}; static char ota7290b_on_cmd121[] = {0x79,0xE0}; static char ota7290b_on_cmd122[] = {0x7A,0x01}; static char ota7290b_on_cmd123[] = {0x7B,0xFF}; static char ota7290b_on_cmd124[] = {0x7C,0xFF}; static char ota7290b_on_cmd125[] = {0x7D,0x0F}; static char ota7290b_on_cmd126[] = {0x7E,0x41}; static char ota7290b_on_cmd127[] = {0x7F,0xFE}; static char ota7290b_on_cmd128[] = {0xB1,0x02}; static char ota7290b_on_cmd129[] = {0x00,0xFF}; static char ota7290b_on_cmd130[] = {0x01,0x05}; static char ota7290b_on_cmd131[] = {0x02,0xF0}; static char ota7290b_on_cmd132[] = {0x03,0x00}; static char ota7290b_on_cmd133[] = {0x04,0x94}; static char ota7290b_on_cmd134[] = {0x05,0x48}; static char ota7290b_on_cmd135[] = {0x06,0xC8}; static char ota7290b_on_cmd136[] = {0x07,0x0A}; static char ota7290b_on_cmd137[] = {0x08,0x00}; static char ota7290b_on_cmd138[] = {0x09,0x00}; static char ota7290b_on_cmd139[] = {0x0A,0x00}; static char ota7290b_on_cmd140[] = {0x0B,0x10}; static char ota7290b_on_cmd141[] = {0x0C,0xE6}; static char ota7290b_on_cmd142[] = {0x0D,0x0D}; static char ota7290b_on_cmd143[] = {0x0F,0x00}; static char ota7290b_on_cmd144[] = {0x10,0xF9}; static char ota7290b_on_cmd145[] = {0x11,0x4D}; static char ota7290b_on_cmd146[] = {0x12,0x9E}; static char ota7290b_on_cmd147[] = {0x13,0x8F}; static char ota7290b_on_cmd148[] = {0x14,0xDF}; static char ota7290b_on_cmd149[] = {0x15,0x15}; static char ota7290b_on_cmd150[] = {0x16,0xE4}; static char ota7290b_on_cmd151[] = {0x17,0x6A}; static char ota7290b_on_cmd152[] = {0x18,0xAB}; static char ota7290b_on_cmd153[] = {0x19,0xD7}; static char ota7290b_on_cmd154[] = {0x1A,0x78}; static char ota7290b_on_cmd155[] = {0x1B,0xFE}; static char ota7290b_on_cmd156[] = {0x1C,0xFF}; static char ota7290b_on_cmd157[] = {0x1D,0xFF}; static char ota7290b_on_cmd158[] = {0x1E,0xFF}; static char ota7290b_on_cmd159[] = {0x1F,0xFF}; static char ota7290b_on_cmd160[] = {0x20,0xFF}; static char ota7290b_on_cmd161[] = {0x21,0xFF}; static char ota7290b_on_cmd162[] = {0x22,0xFF}; static char ota7290b_on_cmd163[] = {0x23,0xFF}; static char ota7290b_on_cmd164[] = {0x24,0xFF}; static char ota7290b_on_cmd165[] = {0x25,0xFF}; static char ota7290b_on_cmd166[] = {0x26,0xFF}; static char ota7290b_on_cmd167[] = {0x27,0x1F}; static char ota7290b_on_cmd168[] = {0x28,0xFF}; static char ota7290b_on_cmd169[] = {0x29,0xFF}; static char ota7290b_on_cmd170[] = {0x2A,0xFF}; static char ota7290b_on_cmd171[] = {0x2B,0xFF}; static char ota7290b_on_cmd172[] = {0x2C,0xFF}; static char ota7290b_on_cmd173[] = {0x2D,0x07}; static char ota7290b_on_cmd174[] = {0x33,0x3F}; static char ota7290b_on_cmd175[] = {0x35,0x7F}; static char ota7290b_on_cmd176[] = {0x36,0x3F}; static char ota7290b_on_cmd177[] = {0x38,0xFF}; static char ota7290b_on_cmd178[] = {0x3A,0x80}; static char ota7290b_on_cmd179[] = {0x3B,0x01}; static char ota7290b_on_cmd180[] = {0x3C,0x00}; static char ota7290b_on_cmd181[] = {0x3D,0x2F}; static char ota7290b_on_cmd182[] = {0x3E,0x00}; static char ota7290b_on_cmd183[] = {0x3F,0xE0}; static char ota7290b_on_cmd184[] = {0x40,0x05}; static char ota7290b_on_cmd185[] = {0x41,0x00}; static char ota7290b_on_cmd186[] = {0x42,0xBC}; static char ota7290b_on_cmd187[] = {0x43,0x00}; static char ota7290b_on_cmd188[] = {0x44,0x80}; static char ota7290b_on_cmd189[] = {0x45,0x07}; static char ota7290b_on_cmd190[] = {0x46,0x00}; static char ota7290b_on_cmd191[] = {0x47,0x00}; static char ota7290b_on_cmd192[] = {0x48,0x9B}; static char ota7290b_on_cmd193[] = {0x49,0xD2}; static char ota7290b_on_cmd194[] = {0x4A,0xC1}; static char ota7290b_on_cmd195[] = {0x4B,0x83}; static char ota7290b_on_cmd196[] = {0x4C,0x17}; static char ota7290b_on_cmd197[] = {0x4D,0xC0}; static char ota7290b_on_cmd198[] = {0x4E,0x0F}; static char ota7290b_on_cmd199[] = {0x4F,0xF1}; static char ota7290b_on_cmd200[] = {0x50,0x78}; static char ota7290b_on_cmd201[] = {0x51,0x7A}; static char ota7290b_on_cmd202[] = {0x52,0x34}; static char ota7290b_on_cmd203[] = {0x53,0x99}; static char ota7290b_on_cmd204[] = {0x54,0xA2}; static char ota7290b_on_cmd205[] = {0x55,0x02}; static char ota7290b_on_cmd206[] = {0x56,0x14}; static char ota7290b_on_cmd207[] = {0x57,0xB8}; static char ota7290b_on_cmd208[] = {0x58,0xDC}; static char ota7290b_on_cmd209[] = {0x59,0xD4}; static char ota7290b_on_cmd210[] = {0x5A,0xEF}; static char ota7290b_on_cmd211[] = {0x5B,0xF7}; static char ota7290b_on_cmd212[] = {0x5C,0xFB}; static char ota7290b_on_cmd213[] = {0x5D,0xFD}; static char ota7290b_on_cmd214[] = {0x5E,0x7E}; static char ota7290b_on_cmd215[] = {0x5F,0xBF}; static char ota7290b_on_cmd216[] = {0x60,0xEF}; static char ota7290b_on_cmd217[] = {0x61,0xE6}; static char ota7290b_on_cmd218[] = {0x62,0x76}; static char ota7290b_on_cmd219[] = {0x63,0x73}; static char ota7290b_on_cmd220[] = {0x64,0xBB}; static char ota7290b_on_cmd221[] = {0x65,0xDD}; static char ota7290b_on_cmd222[] = {0x66,0x6E}; static char ota7290b_on_cmd223[] = {0x67,0x37}; static char ota7290b_on_cmd224[] = {0x68,0x8C}; static char ota7290b_on_cmd225[] = {0x69,0x08}; static char ota7290b_on_cmd226[] = {0x6A,0x31}; static char ota7290b_on_cmd227[] = {0x6B,0xB8}; static char ota7290b_on_cmd228[] = {0x6C,0xB8}; static char ota7290b_on_cmd229[] = {0x6D,0xB8}; static char ota7290b_on_cmd230[] = {0x6E,0xB8}; static char ota7290b_on_cmd231[] = {0x6F,0xB8}; static char ota7290b_on_cmd232[] = {0x70,0x5C}; static char ota7290b_on_cmd233[] = {0x71,0x2E}; static char ota7290b_on_cmd234[] = {0x72,0x17}; static char ota7290b_on_cmd235[] = {0x73,0x00}; static char ota7290b_on_cmd236[] = {0x74,0x00}; static char ota7290b_on_cmd237[] = {0x75,0x00}; static char ota7290b_on_cmd238[] = {0x76,0x00}; static char ota7290b_on_cmd239[] = {0x77,0x00}; static char ota7290b_on_cmd240[] = {0x78,0x00}; static char ota7290b_on_cmd241[] = {0x79,0x00}; static char ota7290b_on_cmd242[] = {0x7A,0xDC}; static char ota7290b_on_cmd243[] = {0x7B,0xDC}; static char ota7290b_on_cmd244[] = {0x7C,0xDC}; static char ota7290b_on_cmd245[] = {0x7D,0xDC}; static char ota7290b_on_cmd246[] = {0x7E,0xDC}; static char ota7290b_on_cmd247[] = {0x7F,0x6E}; static char ota7290b_on_cmd248[] = {0x0B,0x00}; static char ota7290b_on_cmd249[] = {0xB1,0x03}; static char ota7290b_on_cmd250[] = {0x2C,0x2C}; static char ota7290b_on_cmd251[] = {0xB1,0x00}; static char ota7290b_on_cmd252[] = {0x89,0x03}; static struct mmp_dsi_cmd_desc ota7290b_cpt_display_on_cmds[] = { {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd0),ota7290b_on_cmd0}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd1),ota7290b_on_cmd1}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd2),ota7290b_on_cmd2}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd3),ota7290b_on_cmd3}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd4),ota7290b_on_cmd4}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd5),ota7290b_on_cmd5}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd6),ota7290b_on_cmd6}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd7),ota7290b_on_cmd7}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd8),ota7290b_on_cmd8}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd9),ota7290b_on_cmd9}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd10),ota7290b_on_cmd10}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd11),ota7290b_on_cmd11}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd12),ota7290b_on_cmd12}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd13),ota7290b_on_cmd13}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd14),ota7290b_on_cmd14}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd15),ota7290b_on_cmd15}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd16),ota7290b_on_cmd16}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd17),ota7290b_on_cmd17}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd18),ota7290b_on_cmd18}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd19),ota7290b_on_cmd19}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd20),ota7290b_on_cmd20}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd21),ota7290b_on_cmd21}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd22),ota7290b_on_cmd22}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd23),ota7290b_on_cmd23}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd24),ota7290b_on_cmd24}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd25),ota7290b_on_cmd25}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd26),ota7290b_on_cmd26}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd27),ota7290b_on_cmd27}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd28),ota7290b_on_cmd28}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd29),ota7290b_on_cmd29}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd30),ota7290b_on_cmd30}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd31),ota7290b_on_cmd31}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd32),ota7290b_on_cmd32}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd33),ota7290b_on_cmd33}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd34),ota7290b_on_cmd34}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd35),ota7290b_on_cmd35}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd36),ota7290b_on_cmd36}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd37),ota7290b_on_cmd37}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd38),ota7290b_on_cmd38}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd39),ota7290b_on_cmd39}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd40),ota7290b_on_cmd40}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd41),ota7290b_on_cmd41}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd42),ota7290b_on_cmd42}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd43),ota7290b_on_cmd43}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd44),ota7290b_on_cmd44}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd45),ota7290b_on_cmd45}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd46),ota7290b_on_cmd46}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd47),ota7290b_on_cmd47}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd48),ota7290b_on_cmd48}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd49),ota7290b_on_cmd49}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd50),ota7290b_on_cmd50}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd51),ota7290b_on_cmd51}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd52),ota7290b_on_cmd52}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd53),ota7290b_on_cmd53}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd54),ota7290b_on_cmd54}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd55),ota7290b_on_cmd55}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd56),ota7290b_on_cmd56}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd57),ota7290b_on_cmd57}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd58),ota7290b_on_cmd58}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd59),ota7290b_on_cmd59}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd60),ota7290b_on_cmd60}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd61),ota7290b_on_cmd61}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd62),ota7290b_on_cmd62}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd63),ota7290b_on_cmd63}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd64),ota7290b_on_cmd64}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd65),ota7290b_on_cmd65}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd66),ota7290b_on_cmd66}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd67),ota7290b_on_cmd67}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd68),ota7290b_on_cmd68}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd69),ota7290b_on_cmd69}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd70),ota7290b_on_cmd70}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd71),ota7290b_on_cmd71}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd72),ota7290b_on_cmd72}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd73),ota7290b_on_cmd73}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd74),ota7290b_on_cmd74}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd75),ota7290b_on_cmd75}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd76),ota7290b_on_cmd76}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd77),ota7290b_on_cmd77}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd78),ota7290b_on_cmd78}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd79),ota7290b_on_cmd79}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd80),ota7290b_on_cmd80}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd81),ota7290b_on_cmd81}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd82),ota7290b_on_cmd82}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd83),ota7290b_on_cmd83}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd84),ota7290b_on_cmd84}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd85),ota7290b_on_cmd85}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd86),ota7290b_on_cmd86}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd87),ota7290b_on_cmd87}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd88),ota7290b_on_cmd88}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd89),ota7290b_on_cmd89}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd90),ota7290b_on_cmd90}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd91),ota7290b_on_cmd91}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd92),ota7290b_on_cmd92}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd93),ota7290b_on_cmd93}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd94),ota7290b_on_cmd94}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd95),ota7290b_on_cmd95}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd96),ota7290b_on_cmd96}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd97),ota7290b_on_cmd97}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd98),ota7290b_on_cmd98}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd99),ota7290b_on_cmd99}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd100),ota7290b_on_cmd100}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd101),ota7290b_on_cmd101}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd102),ota7290b_on_cmd102}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd103),ota7290b_on_cmd103}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd104),ota7290b_on_cmd104}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd105),ota7290b_on_cmd105}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd106),ota7290b_on_cmd106}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd107),ota7290b_on_cmd107}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd108),ota7290b_on_cmd108}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd109),ota7290b_on_cmd109}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd110),ota7290b_on_cmd110}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd111),ota7290b_on_cmd111}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd112),ota7290b_on_cmd112}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd113),ota7290b_on_cmd113}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd114),ota7290b_on_cmd114}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd115),ota7290b_on_cmd115}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd116),ota7290b_on_cmd116}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd117),ota7290b_on_cmd117}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd118),ota7290b_on_cmd118}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd119),ota7290b_on_cmd119}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd120),ota7290b_on_cmd120}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd121),ota7290b_on_cmd121}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd122),ota7290b_on_cmd122}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd123),ota7290b_on_cmd123}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd124),ota7290b_on_cmd124}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd125),ota7290b_on_cmd125}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd126),ota7290b_on_cmd126}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd127),ota7290b_on_cmd127}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd128),ota7290b_on_cmd128}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd129),ota7290b_on_cmd129}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd130),ota7290b_on_cmd130}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd131),ota7290b_on_cmd131}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd132),ota7290b_on_cmd132}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd133),ota7290b_on_cmd133}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd134),ota7290b_on_cmd134}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd135),ota7290b_on_cmd135}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd136),ota7290b_on_cmd136}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd137),ota7290b_on_cmd137}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd138),ota7290b_on_cmd138}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd139),ota7290b_on_cmd139}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd140),ota7290b_on_cmd140}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd141),ota7290b_on_cmd141}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd142),ota7290b_on_cmd142}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd143),ota7290b_on_cmd143}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd144),ota7290b_on_cmd144}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd145),ota7290b_on_cmd145}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd146),ota7290b_on_cmd146}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd147),ota7290b_on_cmd147}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd148),ota7290b_on_cmd148}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd149),ota7290b_on_cmd149}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd150),ota7290b_on_cmd150}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd151),ota7290b_on_cmd151}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd152),ota7290b_on_cmd152}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd153),ota7290b_on_cmd153}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd154),ota7290b_on_cmd154}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd155),ota7290b_on_cmd155}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd156),ota7290b_on_cmd156}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd157),ota7290b_on_cmd157}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd158),ota7290b_on_cmd158}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd159),ota7290b_on_cmd159}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd160),ota7290b_on_cmd160}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd161),ota7290b_on_cmd161}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd162),ota7290b_on_cmd162}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd163),ota7290b_on_cmd163}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd164),ota7290b_on_cmd164}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd165),ota7290b_on_cmd165}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd166),ota7290b_on_cmd166}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd167),ota7290b_on_cmd167}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd168),ota7290b_on_cmd168}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd169),ota7290b_on_cmd169}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd170),ota7290b_on_cmd170}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd171),ota7290b_on_cmd171}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd172),ota7290b_on_cmd172}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd173),ota7290b_on_cmd173}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd174),ota7290b_on_cmd174}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd175),ota7290b_on_cmd175}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd176),ota7290b_on_cmd176}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd177),ota7290b_on_cmd177}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd178),ota7290b_on_cmd178}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd179),ota7290b_on_cmd179}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd180),ota7290b_on_cmd180}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd181),ota7290b_on_cmd181}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd182),ota7290b_on_cmd182}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd183),ota7290b_on_cmd183}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd184),ota7290b_on_cmd184}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd185),ota7290b_on_cmd185}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd186),ota7290b_on_cmd186}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd187),ota7290b_on_cmd187}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd188),ota7290b_on_cmd188}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd189),ota7290b_on_cmd189}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd190),ota7290b_on_cmd190}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd191),ota7290b_on_cmd191}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd192),ota7290b_on_cmd192}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd193),ota7290b_on_cmd193}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd194),ota7290b_on_cmd194}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd195),ota7290b_on_cmd195}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd196),ota7290b_on_cmd196}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd197),ota7290b_on_cmd197}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd198),ota7290b_on_cmd198}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd199),ota7290b_on_cmd199}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd200),ota7290b_on_cmd200}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd201),ota7290b_on_cmd201}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd202),ota7290b_on_cmd202}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd203),ota7290b_on_cmd203}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd204),ota7290b_on_cmd204}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd205),ota7290b_on_cmd205}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd206),ota7290b_on_cmd206}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd207),ota7290b_on_cmd207}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd208),ota7290b_on_cmd208}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd209),ota7290b_on_cmd209}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd210),ota7290b_on_cmd210}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd211),ota7290b_on_cmd211}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd212),ota7290b_on_cmd212}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd213),ota7290b_on_cmd213}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd214),ota7290b_on_cmd214}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd215),ota7290b_on_cmd215}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd216),ota7290b_on_cmd216}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd217),ota7290b_on_cmd217}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd218),ota7290b_on_cmd218}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd219),ota7290b_on_cmd219}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd220),ota7290b_on_cmd220}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd221),ota7290b_on_cmd221}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd222),ota7290b_on_cmd222}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd223),ota7290b_on_cmd223}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd224),ota7290b_on_cmd224}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd225),ota7290b_on_cmd225}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd226),ota7290b_on_cmd226}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd227),ota7290b_on_cmd227}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd228),ota7290b_on_cmd228}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd229),ota7290b_on_cmd229}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd230),ota7290b_on_cmd230}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd231),ota7290b_on_cmd231}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd232),ota7290b_on_cmd232}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd233),ota7290b_on_cmd233}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd234),ota7290b_on_cmd234}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd235),ota7290b_on_cmd235}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd236),ota7290b_on_cmd236}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd237),ota7290b_on_cmd237}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd238),ota7290b_on_cmd238}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd239),ota7290b_on_cmd239}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd240),ota7290b_on_cmd240}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd241),ota7290b_on_cmd241}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd242),ota7290b_on_cmd242}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd243),ota7290b_on_cmd243}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd244),ota7290b_on_cmd244}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd245),ota7290b_on_cmd245}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd246),ota7290b_on_cmd246}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd247),ota7290b_on_cmd247}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd248),ota7290b_on_cmd248}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd249),ota7290b_on_cmd249}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd250),ota7290b_on_cmd250}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd251),ota7290b_on_cmd251}, {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_on_cmd252),ota7290b_on_cmd252}, {MIPI_DSI_DCS_SHORT_WRITE, 1, 120, sizeof(exit_sleep),exit_sleep}, {MIPI_DSI_DCS_SHORT_WRITE, 1, 150, sizeof(display_on),display_on}, }; static char enter_sleep[] = {0x10}; static char display_off[] = {0x28}; static struct mmp_dsi_cmd_desc ota7290b_display_off_cmds[] = { {MIPI_DSI_DCS_SHORT_WRITE, 1, 10, sizeof(display_off), display_off}, {MIPI_DSI_DCS_SHORT_WRITE, 1, 200, sizeof(enter_sleep), enter_sleep}, }; static void ota7290b_panel_on(struct mmp_panel *panel, int status) { if (status) { mmp_panel_dsi_ulps_set_on(panel, 0); mmp_panel_dsi_tx_cmd_array(panel, ota7290b_cpt_display_on_cmds, ARRAY_SIZE(ota7290b_cpt_display_on_cmds)); } else { mmp_panel_dsi_tx_cmd_array(panel, ota7290b_display_off_cmds, ARRAY_SIZE(ota7290b_display_off_cmds)); mmp_panel_dsi_ulps_set_on(panel, 1); } } static ssize_t vcom_pwm_show(struct device *dev, struct device_attribute *attr, char *buf) { return sprintf(buf, "%d\n", vcom_pwm); } static ssize_t vcom_pwm_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { unsigned long data = 0; int error = 0; error = strict_strtoul(buf, 10, &data); if (error) return error; if((data < 0)||(data > 100)) return -EINVAL; vcom_pwm = data; return count; } static DEVICE_ATTR(vcom, S_IRUGO|S_IWUSR|S_IWGRP|S_IWOTH, vcom_pwm_show , vcom_pwm_store); static struct attribute *vcom_attributes[] = { &dev_attr_vcom.attr, NULL }; static struct attribute_group vcom_attribute_group= { .attrs = vcom_attributes }; int vcom_task_func(void *data) { int interval = 0; struct ota7290b_plat_data *plat = data; if((vcom_pwm >100)||(vcom_pwm < 0)){ return -EFAULT; } while(!kthread_should_stop()){ set_current_state(TASK_UNINTERRUPTIBLE); if(vcom_pwm) { interval = vcom_pwm/5; gpio_set_value(plat->vcom_pin, 1); msleep(interval); // msleep(vcom_freq); gpio_set_value(plat->vcom_pin, 0); // msleep(vcom_freq); msleep(20 - interval); } else{ gpio_set_value(plat->vcom_pin, 0); schedule_timeout(1*HZ); } } return 0; } #ifdef CONFIG_OF static void ota7290b_panel_power(struct mmp_panel *panel, int skip_on, int on) { static struct regulator *lcd_iovdd, *lcd_avdd, *lcd_ldo; struct ota7290b_plat_data *plat = panel->plat_data; int lcd_rst_n, ret = 0; pr_debug("%s on=%d skip=%d +\n", __func__, on, skip_on); lcd_rst_n = of_get_named_gpio(panel->dev->of_node, "rst_gpio", 0); if (lcd_rst_n < 0) { pr_err("%s: of_get_named_gpio failed\n", __func__); return; } if (gpio_request(lcd_rst_n, "lcd reset gpio")) { pr_err("gpio %d request failed\n", lcd_rst_n); return; } /* FIXME: LCD_IOVDD, 1.8V from buck2 */ if (panel->is_iovdd && (!lcd_iovdd)) { lcd_iovdd = regulator_get(panel->dev, "iovdd"); if (IS_ERR(lcd_iovdd)) { pr_err("%s regulator get error!\n", __func__); ret = -EIO; goto regu_lcd_iovdd; } } if (panel->is_avdd && (!lcd_avdd)) { lcd_avdd = regulator_get(panel->dev, "avdd"); if (IS_ERR(lcd_avdd)) { pr_err("%s regulator get error!\n", __func__); ret = -EIO; goto regu_lcd_iovdd; } } if (panel->is_ldo && (!lcd_ldo)) { lcd_ldo = regulator_get(panel->dev, "ldo"); if (IS_ERR(lcd_ldo)) { pr_err("%s regulator get error!\n", __func__); ret = -EIO; goto regu_lcd_iovdd; } } if (on) { if (panel->is_avdd && lcd_avdd) { regulator_set_voltage(lcd_avdd, 3300000, 3300000); ret = regulator_enable(lcd_avdd); if (ret < 0) goto regu_lcd_iovdd; } if (panel->is_iovdd && lcd_iovdd) { regulator_set_voltage(lcd_iovdd, 1800000, 1800000); ret = regulator_enable(lcd_iovdd); if (ret < 0) goto regu_lcd_iovdd; } usleep_range(20000, 21000); if (panel->is_ldo && lcd_ldo) { regulator_set_voltage(lcd_ldo, 1800000, 1800000); ret = regulator_enable(lcd_ldo); if (ret < 0) goto regu_lcd_iovdd; } usleep_range(15000, 16000); gpio_set_value(plat->power_pin, 1); // vcom_pwm = 85; gpio_set_value(plat->vcom_pin, 1); if (!skip_on) { gpio_direction_output(lcd_rst_n, 1); usleep_range(10000, 11000); gpio_direction_output(lcd_rst_n, 0); usleep_range(10000, 12000); gpio_direction_output(lcd_rst_n, 1); msleep(120); } } else { /* set panel reset */ gpio_direction_output(lcd_rst_n, 0); gpio_set_value(plat->power_pin, 0); // vcom_pwm = 0; gpio_set_value(plat->vcom_pin, 0); /* disable LCD_IOVDD 1.8v */ if (panel->is_iovdd && lcd_iovdd) regulator_disable(lcd_iovdd); if (panel->is_avdd && lcd_avdd) regulator_disable(lcd_avdd); if (panel->is_ldo && lcd_ldo) regulator_disable(lcd_ldo); } regu_lcd_iovdd: gpio_free(lcd_rst_n); if (ret < 0) { lcd_iovdd = NULL; lcd_avdd = NULL; } } #else static void ota7290b_panel_power(struct mmp_panel *panel, int skip_on, int on) {} #endif static void ota7290b_set_status(struct mmp_panel *panel, int status) { struct ota7290b_plat_data *plat = panel->plat_data; int skip_on = (status == MMP_ON_REDUCED); if (status_is_on(status)) { /* power on */ if (plat->plat_onoff) plat->plat_onoff(1); else ota7290b_panel_power(panel, skip_on, 1); if (!skip_on) ota7290b_panel_on(panel, 1); } else if (status_is_off(status)) { ota7290b_panel_on(panel, 0); /* power off */ if (plat->plat_onoff) plat->plat_onoff(0); else ota7290b_panel_power(panel, 0, 0); } else dev_warn(panel->dev, "set status %s not supported\n", status_name(status)); } static void ota7290b_esd_onoff(struct mmp_panel *panel, int status) { struct ota7290b_plat_data *plat = panel->plat_data; if (status) { if (plat->esd_enable) esd_start(&panel->esd); } else { if (plat->esd_enable) esd_stop(&panel->esd); } } static void ota7290b_esd_recover(struct mmp_panel *panel) { struct mmp_path *path = mmp_get_path(panel->plat_path_name); static int count = 1; /* * FIXME: skip the first esd_recover * since the first esd check will fail. */ if (count++ > 1) esd_panel_recover(path); } /* * OTA7290B read id */ static char ota7290ba_pkt_size_cmd[] = {0x01}; static char ota7290b_manufacetrue_init[] = {0xB0, 0x5A, 0x03}; static char read_id_ota7290b[] = {0x14}; static struct mmp_dsi_cmd_desc ota7290ba_read_id_cmds[] = { {MIPI_DSI_DCS_SHORT_WRITE_PARAM, 1, 0, sizeof(ota7290b_manufacetrue_init), ota7290b_manufacetrue_init}, {MIPI_DSI_SET_MAXIMUM_RETURN_PACKET_SIZE, 1, 0, sizeof(ota7290ba_pkt_size_cmd), ota7290ba_pkt_size_cmd}, {MIPI_DSI_DCS_READ, 1, 0, sizeof(read_id_ota7290b), read_id_ota7290b}, }; static int ota7290b_get_status(struct mmp_panel *panel) { struct mmp_dsi_buf dbuf; u32 read_id = 0; int ret; return 0; ret = mmp_panel_dsi_rx_cmd_array(panel, &dbuf, ota7290ba_read_id_cmds, ARRAY_SIZE(ota7290ba_read_id_cmds)); if (ret < 0) { pr_err("[ERROR] DSI receive failure!\n"); return 1; } read_id = dbuf.data[0]; if (read_id != OTA7290B_ID) { pr_err("[ERROR] panel status is 0x%x\n", read_id); return 1; } else { pr_debug("panel status is 0x%x\n", read_id); } } static struct mmp_mode mmp_modes_ota7290b[] = { [0] = { .pixclock_freq = 51797760, .refresh = 60, .xres = 480, .yres = 1280, .real_xres = 480, .real_yres = 1280, .hsync_len = 2, .left_margin = 30, .right_margin = 146, .vsync_len = 2, .upper_margin = 14, .lower_margin = 16, .invert_pixclock = 0, .pix_fmt_out = PIXFMT_BGR888PACK, .hsync_invert = 0, .vsync_invert = 0, .height = 90, .width = 50, }, }; static int ota7290b_get_modelist(struct mmp_panel *panel, struct mmp_mode **modelist) { *modelist = mmp_modes_ota7290b; return 1; } static struct mmp_panel panel_ota7290b = { .name = "ota7290b", .panel_type = PANELTYPE_DSI_VIDEO, .is_iovdd = 0, .is_avdd = 0, .is_ldo = 0, .get_modelist = ota7290b_get_modelist, .set_status = ota7290b_set_status, //.get_status = ota7290b_get_status, //.panel_esd_recover = ota7290b_esd_recover, //.esd_set_onoff = ota7290b_esd_onoff, }; static int ota7290b_bl_update_status(struct backlight_device *bl) { struct ota7290b_plat_data *data = dev_get_drvdata(&bl->dev); struct mmp_panel *panel = data->panel; int level; if (bl->props.fb_blank == FB_BLANK_UNBLANK && bl->props.power == FB_BLANK_UNBLANK) level = bl->props.brightness; else level = 0; /* If there is backlight function of board, use it */ if (data && data->plat_set_backlight) { data->plat_set_backlight(panel, level); return 0; } if (panel && panel->set_brightness) panel->set_brightness(panel, level); return 0; } static int ota7290b_bl_get_brightness(struct backlight_device *bl) { if (bl->props.fb_blank == FB_BLANK_UNBLANK && bl->props.power == FB_BLANK_UNBLANK) return bl->props.brightness; return 0; } static DEFINE_SPINLOCK(bl_lock); static void ota7290b_panel_set_bl(struct mmp_panel *panel, int intensity) { int gpio_bl, bl_level, p_num; unsigned long flags; /* * FIXME * the initial value of bl_level_last is the * uboot backlight level, it should be aligned. */ static int bl_level_last = 17; gpio_bl = of_get_named_gpio(panel->dev->of_node, "bl_gpio", 0); if (gpio_bl < 0) { pr_err("%s: of_get_named_gpio failed\n", __func__); return; } if (gpio_request(gpio_bl, "lcd backlight")) { pr_err("gpio %d request failed\n", gpio_bl); return; } /* * Brightness is controlled by a series of pulses * generated by gpio. It has 32 leves and level 1 * is the brightest. Pull low for 3ms makes * backlight shutdown */ bl_level = (100 - intensity) * 32 / 100 + 1; if (bl_level == bl_level_last) goto set_bl_return; if (bl_level == 33) { /* shutdown backlight */ gpio_direction_output(gpio_bl, 0); goto set_bl_return; } if (bl_level > bl_level_last) p_num = bl_level - bl_level_last; else p_num = bl_level + 32 - bl_level_last; while (p_num--) { spin_lock_irqsave(&bl_lock, flags); gpio_direction_output(gpio_bl, 0); udelay(1); gpio_direction_output(gpio_bl, 1); spin_unlock_irqrestore(&bl_lock, flags); udelay(1); } set_bl_return: if (bl_level == 33) bl_level_last = 0; else bl_level_last = bl_level; gpio_free(gpio_bl); } static const struct backlight_ops ota7290b_bl_ops = { .get_brightness = ota7290b_bl_get_brightness, .update_status = ota7290b_bl_update_status, }; static int ota7290b_probe(struct platform_device *pdev) { struct mmp_mach_panel_info *mi; struct ota7290b_plat_data *plat_data; struct device_node *np = pdev->dev.of_node; const char *path_name; struct backlight_properties props; struct backlight_device *bl; int ret; u32 esd_enable; plat_data = devm_kzalloc(&pdev->dev, sizeof(*plat_data), GFP_KERNEL); if (!plat_data) return -ENOMEM; if (IS_ENABLED(CONFIG_OF)) { ret = of_property_read_string(np, "marvell,path-name", &path_name); if (ret < 0) { kfree(plat_data); return ret; } panel_ota7290b.plat_path_name = path_name; if (of_find_property(np, "iovdd-supply", NULL)) panel_ota7290b.is_iovdd = 1; if (of_find_property(np, "avdd-supply", NULL)) panel_ota7290b.is_avdd = 1; if (of_find_property(np, "ldo-supply", NULL)) panel_ota7290b.is_ldo = 1; if (of_property_read_u32(np, "panel_esd", &esd_enable)) plat_data->esd_enable = 0; plat_data->esd_enable = esd_enable; if (of_get_named_gpio(np, "bl_gpio", 0) < 0) pr_debug("%s: get bl_gpio failed\n", __func__); else plat_data->plat_set_backlight = ota7290b_panel_set_bl; plat_data->power_pin = of_get_named_gpio(np, "power_gpio", 0); if(plat_data->power_pin < 0) { pr_debug("%s: get power pin failed\n",__func__); } if(devm_gpio_request(&pdev->dev, plat_data->power_pin, "lcd power pin")) { pr_err("%s request power pin failed!\n",__func__); return -EINVAL; } gpio_direction_output(plat_data->power_pin, 1); plat_data->vcom_pin = of_get_named_gpio(np, "vcom_gpio", 0); if(plat_data->vcom_pin < 0) { pr_debug("%s: get vcom control pin failed\n",__func__); } if(devm_gpio_request(&pdev->dev, plat_data->vcom_pin, "lcd vcom pin")) { pr_err("%s request vcom control pin failed!\n",__func__); return -EINVAL; } gpio_direction_output(plat_data->vcom_pin, 1); // vcom_task = kthread_create(vcom_task_func, plat_data, "vcom_task func"); // if(IS_ERR(vcom_task)) // { // pr_err("Can't create thread vcom_task\n"); // vcom_task = NULL; // return -1; // } } else { /* get configs from platform data */ mi = pdev->dev.platform_data; if (mi == NULL) { dev_err(&pdev->dev, "no platform data defined\n"); kfree(plat_data); return -EINVAL; } plat_data->plat_onoff = mi->plat_set_onoff; panel_ota7290b.plat_path_name = mi->plat_path_name; plat_data->plat_set_backlight = mi->plat_set_backlight; plat_data->esd_enable = mi->esd_enable; } // ret = sysfs_create_group(&pdev->dev.kobj, // &vcom_attribute_group); // if (ret < 0) { // pr_err("%s: create group fail!\n", __func__); // return ret; // } plat_data->panel = &panel_ota7290b; panel_ota7290b.plat_data = plat_data; panel_ota7290b.dev = &pdev->dev; mmp_register_panel(&panel_ota7290b); if (plat_data->esd_enable) esd_init(&panel_ota7290b); /* * if no panel or plat associate backlight control, * don't register backlight device here. */ if (!panel_ota7290b.set_brightness && !plat_data->plat_set_backlight) return 0; memset(&props, 0, sizeof(struct backlight_properties)); props.max_brightness = 100; props.type = BACKLIGHT_RAW; bl = backlight_device_register("lcd-bl", &pdev->dev, plat_data, &ota7290b_bl_ops, &props); if (IS_ERR(bl)) { ret = PTR_ERR(bl); dev_err(&pdev->dev, "failed to register lcd-backlight\n"); return ret; } bl->props.fb_blank = FB_BLANK_UNBLANK; bl->props.power = FB_BLANK_UNBLANK; bl->props.brightness = 40; return 0; } static int ota7290b_remove(struct platform_device *dev) { mmp_unregister_panel(&panel_ota7290b); kfree(panel_ota7290b.plat_data); return 0; } #ifdef CONFIG_OF static const struct of_device_id mmp_ota7290b_dt_match[] = { { .compatible = "marvell,mmp-ota7290b" }, {}, }; #endif static struct platform_driver ota7290b_driver = { .driver = { .name = "mmp-ota7290b", .owner = THIS_MODULE, .of_match_table = of_match_ptr(mmp_ota7290b_dt_match), }, .probe = ota7290b_probe, .remove = ota7290b_remove, }; static int ota7290b_init(void) { return platform_driver_register(&ota7290b_driver); } static void ota7290b_exit(void) { platform_driver_unregister(&ota7290b_driver); } module_init(ota7290b_init); module_exit(ota7290b_exit); MODULE_AUTHOR("Yonghai Huang <huangyh@marvell.com>"); MODULE_DESCRIPTION("Panel driver for MIPI panel ILI9806E"); MODULE_LICENSE("GPL");
-
回复: USB Gadget 模拟摄像头 g_webcam: musb-hdrc.4.auto: failed to start g_webcam: -22
@wuhanstudio
确实, V3s 也不行:V3s Linux4.13执行modprobe g_webcam 出现端点错误, 是端点不够吗? 其他的 g_serial/g_ffs没问题
https://whycan.com/t_2915.html -
回复: D1s RTL8723DS 蓝牙起不来,大伙帮我瞅瞅。
@whycan
搞A133 碰到一模一样问题,CTS悬空了,飞线到GND就好了,应该串口是没有收到握手信号。
-
回复: Tina如何打包SPI NOR、SPI NAND固件
sys_config.fex storage_type storage_type 改为3:
;---------------------------------------------------------------------------------- ;storage_type = boot medium, 0-nand, 1-sd, 2-emmc, 3-nor, 4-emmc3, 5-spinand -1(defualt)auto scan ;---------------------------------------------------------------------------------- [target] storage_type = 3
打包:
$ pack --==========-- PACK_CHIP sun20iw1p1 PACK_PLATFORM tina PACK_BOARD d1-mangopi_mq_rgb800x480_gt9xx PACK_KERN PACK_DEBUG uart0 PACK_SIG none PACK_SECURE none PACK_MODE normal PACK_FUNC android PACK_PROGRAMMER none PACK_TAR_IMAGE none PACK_TOPDIR /opt/D1/tina_d1_open_v1.0_debug2 --==========-- No kernel param, parse it from d1 copying tools file copying configs file storage_type value is 3 storage type is nor image_nor.cfg is exist mv image_nor.cfg image.cfg copying boot resource LZMA 4.65 : Igor Pavlov : Public domain : 2009-02-03 copying boot file make user resource for : /opt/D1/tina_d1_open_v1.0_debug2/out/d1-mangopi_mq_rgb800x480_gt9xx/image/sys_partition_nor.fex handle partition user-res no user resource partitions APP_PART_DOWNLOAD_FILE = /opt/D1/tina_d1_open_v1.0_debug2/out/d1-mangopi_mq_rgb800x480_gt9xx/image/app.fex Need size of filesystem no data resource partitions don't build dtbo ... update_chip mv: cannot stat 'u-boot-spinor-crash.fex': No such file or directory pack boot package GetPrivateProfileSection read to end content_count=3 file /opt/D1/tina_d1_open_v1.0_debug2/out/d1-mangopi_mq_rgb800x480_gt9xx/image/u-boot-spinor.fex cant be open create package failed pack boot package GetPrivateProfileSection read to end content_count=3 packing for tina linux normal ERROR: dl file kernel.fex size too large ERROR: filename = kernel.fex ERROR: dl_file_size = 18644 sector ERROR: part_size = 13184 sector ERROR: update mbr file fail ERROR: update_mbr failed $
-
回复: 飞凌T507开发板实现SPI转CAN 全过程
全志T507处理器本身不支持CAN功能,那有什么方法可以实现CAN功能呢?
我们已知FETT507-C核心板是支持SPI接口的,但底板没有引出该接口,所以小编打算通过引脚复用方式,复用出SPI接口并做成SPI转CAN,来实现CAN功能。
本文所采用的方法是通过添加MCP2515驱动及配置,实现SPI转CAN功能。
一、选择引脚
首先确认要使用的引脚,由于飞凌嵌入T507开发板默认没有配置SPI,因此既要选用于SPI功能的引脚,也要选择用于can模块的中断引脚。SPI需要CS0、CLK、MOSI、MISO四个引脚,can模块需要一个中断引脚。中断引脚可以随便使用一个具有中断功能的引脚。打开硬件资料中的飞凌嵌入式T507核心板引脚复用对照表,先确认哪些引脚可以用做SPI,我们搜索SPI可以找到两组引脚
因为PC3、PC4和启动相关这里不考虑使用SPI0,我们用SPI1,SPI1使用的引脚默认为音频接口使用的引脚,音频将不能使用。所以我们的中断引脚也从音频使用的引脚中选择,我们选择PH9(用户可根据实际情况选择具有中断功能的引脚)。
我们需要的引脚已经确定了(加粗的5个引脚),现在进行软件修改
二、相关设备
首先查看设备树,本次使用到的设备树如下:-
kernel/linux-4.9/arch/arm64/boot/dts/sunxi/OKT507-C-Common.dtsi
-
kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1.dtsi
-
kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1-pinctrl.dtsi
-
kernel/linux-4.9/arch/arm64/boot/dts/sunxi/sun50iw9p1-clk.dtsi
三、去掉所选引脚原有配置
从核心板引脚功能复用表格可以看到,选用的引脚原本配置的功能:sun50iw9p1-pinctrl.dtsi搜索PH5引脚,可以看到ahub_daudio3_pins_a和ahub_daudio3_pins_b是用于音频,在设备树路径使用grep"ahub_daudio3_pins_a" ./ -nr指令可以查到,在sun50iw9p1.dtsi里有调用:
打开sun50iw9p1.dtsi,可以看到在ahub_daudio3节点有调用,将status设置为disabled(默认即为disablded状态)
这个设备树里设置的disabled,继续查找该设备树的上级设备树:OKT507-C-Common.dtsi。OKT507-C-Common.dtsi有做开启设置,需要将ahub_daudio3关掉,status= "disabled"。PH5、PH6、PH7、PH8、PH9的占用都解除了。
四、配置SPI1
4.1使能SPI1配置
搜索SPI1相关内容,在sun50iw9p1.dtsi中可以看到这个是对SPI1的注册,将status改为okay,这里对相关引脚和时钟做了配置。
4.2 SPI1的时钟及引脚配置
时钟:我们通过查看sun50iw9p1-clk.dtsi可以看到clk_pll_periph0和clk_spi1的内容,我们使用默认配置即可。这里不再贴图,可自行查看
引脚:我们查看sun50iw9p1-pinctrl.dtsi可以看到spi1_pins_a、spi1_pins_b和spi1_pins_c的内容,使用引脚为PH5、PH6、PH7、PH8。
五、配置SPI转CAN设备
5.1 添加设备
在OKT507-C-Common.dtsi中SPI0节点后添加SPI转CAN相关节点,添加内容如下:spi1: spi@05011000 { pinctrl-0 = <&spi1_pins_a &spi1_pins_b>; pinctrl-1 = <&spi1_pins_c>; spi_slave_mode = <0>; status = "okay"; can0: can@0 { compatible = "microchip,mcp2515"; pinctrl-names = "default"; pinctrl-0 = <&mcp2515_int>; reg = <0>; spi-max-frequency = <1000000>; clocks = <&clk_osc8m>; interrupt-parent = <&pio>; interrupts = <PH 9 IRQ_TYPE_LEVEL_LOW>; status = "okay"; }; };
其中中断引脚配置,请根据实际配置的引脚进行修改。
5.2 时钟配置
我们在注册can的时候用到了时钟和中断引脚,前边关掉音频时PH9已经可以使用了,但是我们用到的8M时钟clk_osc8m还没有注册。打开sun50iw9p1-clk.dtsi,添加clk_osc8m到clk_osc48m下边
clk_osc8m: osc8m { #clock-cells = <0>; compatible = "allwinner,fixed-clock"; clock-frequency = <8000000>; clock-output-names = "osc8m"; };
如果是选择24M晶振,也可注册clk_osc24m,clock-frequency改为24000000
5.3 中断引脚配置
在OKT507-C-Common.dtsi中添加,在该设备树中搜索:pio:pinctrl@0300b000,将以下配置添加到该节点里边。mcp2515_int: can0@0 { allwinner,pins = "PH9"; allwinner,pname = "mcp2515_int"; allwinner,function = "irq"; allwinner,muxsel = <6>; allwinner,drive = <1>; allwinner,pull = <0>; };
5.4 mcp2515驱动配置
到此,我们在设备树中的修改已经完成接下来,我们添加mcp2515驱动配置,驱动位于kernel/linux-4.9/drivers/net/can/spi/,可以看到mcp251x.c,我们可以打开该目录里的Makefile文件,Makefile文件中已经配置了CONFIG_CAN_MCP251X进入kernel/linux-4.9目录中,执行如下命令:
make sun50iw9p1smp_longan_defconfig make menuconfig ARCH=arm64
进入图形配置界面,我们添加mcp2515的编译,每一级目录选如下选项:
[*] Networking support ---> <*>CAN bus subsystem support ---> CAN Device Drivers ---> CAN SPI interfaces ---> <*> Microchip MCP251x SPI CAN controllers
前边括号里的内容通过空格键修改,“*”是编译进内核,“M”是编译成模块,空的是不编译。此处需要编译进内核
修改完成后按Esc键退出,最后选yes保存配置为.config。
修改完成,按照手册编译源码,生成镜像
注:
配置menuconfig后保存为.config,使用./build.sh kernel单步编译内核,会使用该.config
若使用./build.sh进行全编译,会重新把sun50iw9p1smp_longan_defconfig加载为.config,之前的配置将不生效。因此通过menuconfig修改完后,保存的.config要做好备份,在全编译前需要将文件,将其重命名为 sun50iw9p1smp_longan_defconfig,并替换kernel/linux-4.9/arch/arm64/configs下的同名文件
六、CAN测试
将编译好的镜像烧录到核心板中,并将资料里的相关测试工具:ip、cansend和candump拷贝到T507开发板根目录。硬件接好SPI转CAN模块,与PC机接好,使用USB转CAN插在电脑上
启动T507开发板执行以下程序进行测试:
ifconfig can0 down /ip link set can0 up type can bitrate 125000 triple-sampling on ifconfig can0 up /cansend can0 123#12345678 //发送数据 /candump can0 //接收数据
七、硬件修改方法
在飞凌嵌入式T507开发板上移植使用SPI转CAN模块首先要在T507开发板上去掉C132/U18这两个器件,之后通过飞线的方式将SPI转CAN的模块连接至T507开发板,连接方式如下:
SPI转CAN的5V主供电可以通过音频芯片正下方的R194和R199上获得,位置如下图:
-
-
回复: 新手第一次调试TINA的mipi-dsi 遇到一些问题,恳请大佬们有空指导!万分感谢
看起来和哪吒自带的显示屏是同一个驱动芯片,那这样把硬件做好就行,勾选同一个驱动就可以了。
-
回复: 请问 F1C200s 可以同时输出到LCD 和 TV 上吗?
@yuzukitsuru 在 请问 F1C200s 可以同时输出到LCD 和 TV 上吗? 中说:
我记得Arduino可以模拟CVBS,可以考虑软件模拟一个(?
好像是VGA 吧?CVBS也能模拟吗?
-
回复: 运行hello_word遇到GLIBC_2.29 not defined in file libc.so.6改怎么办
是不是用哪吒tina的SDK呢?如果用里面同一个gcc编译的话,libc.so.6 应该是 不会出这个错误提示的。
-
回复: 【DIY教程】D1的双屏异显第一弹来啦!D1同时支持两个屏幕,一共做UI交互,一边个播放视频
感谢楼主,固件在哪吒上面可以用,但是 tplayerdemo 的声音怎么从HDMI显示器播放呢?
-
回复: A100 运行OpenGL测试程序失败
root@TinaLinux:/# opengles_demo initializing EGL... [ 51.600508] PVR_K: 2182: (FAIL) PVRSRVRGXInitFirmwareKM: Incompatible compatibility struct version of driver (2) and firmware (16777216). [ 51.614542] PVR_K:(Error): 2182: InitFirmware: PVRSRVRGXInitFirmware failed (29) [ 51.623066] PVR_K:(Error): 2182: RGXInit: InitFirmware failed (29) [ 51.630146] PVR_K:(Error): 2182: PVRSRVDeviceInitialise: Initialisation of Rogue device failed (PVRSRV_ERROR_BVNC_MISMATCH) [ 51.642810] PVR_K:(Error): 2182: PVRSRVDeviceInitialise: Services failed to finalise the device (PVRSRV_ERROR_NOT_INITIALISED) line 555: eglGetError() = 0x3001[ 51.642828] PVR_K:(Error): 2182: PVRSRVCommonDeviceOpen: Failed to initialise device (PVRSRV_ERROR_NOT_INITIALISED) : not initialized [ 51.646127] PVR_K:(Error): 2182: PVRSRVCommonDeviceOpen: Driver already in bad state. Device open failed. root@TinaLinux:/#
又折腾N次,运行opengles_demo还是不行,算了,洗洗睡吧。
-
回复: A100 运行OpenGL测试程序失败
跟踪了半天代码,在 request_firmware( ) 函数加调试语句,发现需要 rgx.fw.22.102.54.38,然而我把这个文件复制到 /lib/firmware/ ,还是没啥用。
root@TinaLinux:/# glmark2-es2-fbdev [ 28.918618] ---> rgx.fw.22.102.54.38 [ 28.931238] res = 0 [ 28.938041] PVR_K: 2110: (FAIL) PVRSRVRGXInitFirmwareKM: Incompatible compatibility struct version of driver (2) and firmware (16777216). [ 28.952186] PVR_K:(Error): 2110: InitFirmware: PVRSRVRGXInitFirmware failed (29) [ 28.960736] PVR_K:(Error): 2110: RGXInit: InitFirmware failed (29) [ 28.967822] PVR_K:(Error): 2110: PVRSRVDeviceInitialise: Initialisation of Rogue device failed (PVRSRV_ERROR_BVNC_MISMATCH) [ 28.980518] PVR_K:(Error): 2110: PVRSRVDeviceInitialise: Services failed to finalise the device (PVRSRV_ERROR_NOT_INITIALISED) [ 28.993527] PVR_K:(Error): 2110: PVRSRVCommonDeviceOpen: Failed to initialise device (PVRSRV_ERROR_NOT_INITIALISED) [ 29.008808] PVR_K:(Error): 2110: PVRSRVCommonDeviceOpen: Driver already in bad state. Device open failed. Error: [ 29.023563] PVR_K:(Error): 2110: PVRSRVCommonDeviceOpen: Driver already in bad state. Device open failed. eglInitialize() failed with error: 0x3001 [ 29.040319] PVR_K:(Error): 2110: PVRSRVCommonDeviceOpen: Driver already in bad state. Device open failed. Error: eglInitialize() failed with error: 0x3001 Error: main: Could not initialize canvas root@TinaLinux:/#
-
回复: A100 运行OpenGL测试程序失败
编译ge8300 gpu驱动:
make -C lichee/linux-4.9/modules/gpu/img-rgx/linux/rogue_km/build/linux/sunxi_linux KERNELDIR=/opt/a133/tina/out/mr813-a3/compile_dir/target/linux-mr813-a3/linux-4.9.191 HOSTCFLAGS="-O2 -I/opt/a133/tina/out/host/include -I/opt/a133/tina/out/host/usr/include \-Wall -Wmissing-prototypes -Wstrict-prototypes" CROSS_COMPILE="/opt/a133/tina/prebuilt/gcc/linux-x86/aarch64/toolchain-sunxi-glibc/toolchain/bin/aarch64-openwrt-linux-gnu-" ARCH="arm64" KBUILD_HAVE_NLS=no KBUILD_BUILD_USER="" KBUILD_BUILD_HOST="" CONFIG_SHELL="bash" V='' CC="aarch64-openwrt-linux-gnu-gcc"
装上 pvrsvrkm.ko / dc_sunxi.ko 驱动:
root@TinaLinux:/# insmod /tmp/pvrsrvkm.ko -f [36837.459392] pvrsrvkm: loading out-of-tree module taints kernel. [36837.474740] pvrsrvkm: unknown parameter '-f' ignored [36837.494098] PVR_K: 2246: Read BVNC 22.102.54.38 from HW device registers [36837.501763] PVR_K: 2246: RGX Device initialised with BVNC 22.102.54.38 [36837.513679] [drm] Initialized pvr 1.10.5260539 20170530 on minor 0 root@TinaLinux:/# insmod /tmp/dc_sunxi.ko [36841.494514] Found usable fbdev device (): [36841.494514] range (physical) = 0xff800000-0xfffd0000 [36841.494514] size (bytes) = 0x7d0000 [36841.494514] xres x yres = 1280x800 [36841.494514] xres x yres (v) = 1280x1600 [36841.494514] img pix fmt = 89 [36841.494514] flipping? = 1 root@TinaLinux:/#
发现又需要固件了:
root@TinaLinux:/# glmark2-es2-fbdev [36844.958471] PVR_K: 2255: (FAIL) PVRSRVRGXInitFirmwareKM: Incompatible compatibility struct version of driver (2) and firmware (16777216). [36844.972509] PVR_K:(Error): 2255: InitFirmware: PVRSRVRGXInitFirmware failed (29) [36844.981113] PVR_K:(Error): 2255: RGXInit: InitFirmware failed (29) [36844.988193] PVR_K:(Error): 2255: PVRSRVDeviceInitialise: Initialisation of Rogue device failed (PVRSRV_ERROR_BVNC_MISMATCH) [36845.000839] PVR_K:(Error): 2255: PVRSRVDeviceInitialise: Services failed to finalise the device (PVRSRV_ERROR_NOT_INITIALISED) Error: [36845.000858] PVR_K:(Error): 2255: PVRSRVCommonDeviceOpen: Failed to initialise device (PVRSRV_ERROR_NOT_INITIALISED) eglInitialize() failed with erro[36845.004122] PVR_K:(Error): 2255: PVRSRVCommonDeviceOpen: Driver already in bad state. Device open failed. r: 0x3001 [36845.027384] PVR_K:(Error): 2255: PVRSRVCommonDeviceOpen: Driver already in bad state. Device open failed. Error: eglInitialize([36845.030678] PVR_K:(Error): 2255: PVRSRVCommonDeviceOpen: Driver already in bad state. Device open failed. ) failed with error: 0x3001 Error: main: Could not initialize canvas root@TinaLinux:/#
-
A100 运行OpenGL测试程序失败
root@TinaLinux:/# glmark2-es2-fbdev Error: eglInitialize() failed with error: 0x3001 Error: eglInitialize() failed with error: 0x3001 Error: main: Could not initialize canvas root@TinaLinux:/#
-
回复: A133 BOARD_HAS_SECURE_OS
[123]HELLO! BOOT0 is starting! [126]BOOT0 commit : dc54be6 [128]set pll start [130]periph0 has been enabled [134]set pll end [135][pmu]: bus read error [138][pmu]: bus read error [146]vaild para:1 select dram para0 [149]board init ok [151]DRAM BOOT DRIVE INFO: V0.19 [155]the chip id is 0x2400 [157]the chip id is 0x2400 [160]the chip id is 0x2400 [163]the chip id is 0x2400 [165]the chip id is 0x2400 [168]chip id check OK [170]DRAM_VCC set to 1100 mv [173]DRAM CLK =792 MHZ [175]DRAM Type =8 (3:DDR3,4:DDR4,7:LPDDR3,8:LPDDR4) [183]DRAM SIZE =1024 MBytes, para1 = 30fa, para2 = 4000000, dram_tpr13 = 6063 [196]DRAM simple test OK. [198]dram size =1024 [200]chipid = 53002400 [203]nsi init ok 2020-4-7 [206]card no is 2 [208]sdcard 2 line count 8 [210][mmc]: mmc driver ver 2020-05-25 09:40 [220][mmc]: Wrong media type 0x0 [223][mmc]: ***Try SD card 2*** [227][mmc]: mmc 2 cmd 8 timeout, err 100 [231][mmc]: mmc 2 cmd 8 err 100 [234][mmc]: mmc 2 send if cond failed [239][mmc]: mmc 2 cmd 55 timeout, err 100 [243][mmc]: mmc 2 cmd 55 err 100 [246][mmc]: mmc 2 send app cmd failed [250][mmc]: ***Try MMC card 2*** [307][mmc]: RMCA OK! [309][mmc]: mmc 2 bias 4 [313][mmc]: MMC 5.0 [315][mmc]: HSSDR52/SDR25 8 bit [318][mmc]: 50000000 Hz [320][mmc]: 7456 MB [322][mmc]: ***SD/MMC 2 init OK!!!*** [377]Loading boot-pkg Succeed(index=0). [381]Entry_name = u-boot [388]Entry_name = monitor [391]Entry_name = scp [399]set arisc reset to de-assert state [403]Entry_name = dtb [407]tunning data addr:0x4a0003e8 [410]Jump to second Boot. NOTICE: BL3-1: v1.0(debug):cc1f5d7 NOTICE: BL3-1: Built : 10:23:25, 2020-04-08 NOTICE: BL3-1 commit: 8 ERROR: Error initializing runtime service tspd_fast NOTICE: BL3-1: Preparing for EL3 exit to normal world NOTICE: BL3-1: Next image address = 0x4a000000 NOTICE: BL3-1: Next image spsr = 0x1d3 U-Boot 2018.05 (Feb 14 2022 - 13:42:55 +0800) Allwinner Technology [00.489]CPU: Allwinner Family [00.492]Model: sun50iw10 I2C: ready [00.736]DRAM: 1 GiB [00.739]Relocation Offset is: 35f17000 [00.769]secure enable bit: 0 [00.771][ARISC] :arisc initialize [00.776][ARISC ERROR] :get [allwinner,sunxi-hwspinlock] device node error CACHE: Misaligned operation at range [7ffa72a0, 7ffa75b8] [00.788][ARISC] :arisc para ok [SCP] :sunxi-arisc driver begin startup 2 [SCP] :0x1 [SCP] :arisc version: [] [SCP] :arisc startup ready [SCP] :arisc startup notify message feedback [SCP] :send hard sync feedback message: 0x900200 [SCP] :sunxi-arisc driver v1.10 is starting [00.815][ARISC] :sunxi-arisc driver startup succeeded [00.820]pmu_axp81X_probe pmic_bus_read fail [00.824]pmu_axp858_probe pmic_bus_read fail [00.828]PMU: no found [00.830]CPU=1008 MHz,PLL6=600 Mhz,AHB=200 Mhz, APB1=100Mhz MBus=400Mhz [00.837]init_clocks:finish [00.839]not need merged sunxi overlay [00.843]drv_disp_init request pwm success, pwm8:pwm8:0x300a000. pwm_request: err:this pwm has been requested! [00.878]drv_disp_init finish [00.886]gic: sec monitor mode [00.889]flash init start [00.891]workmode = 0,storage type = 2 [00.894][mmc]: mmc driver ver uboot2018:2020-5-25 9:26:00-20201021190 [00.908][mmc]: SUNXI SDMMC Controller Version:0x50300 [00.983][mmc]: Best spd md: 2-HSDDR52/DDR50, freq: 2-50000000, Bus width: 8 [00.990]sunxi flash init ok [00.993]Loading Environment from SUNXI_FLASH... OK [01.002]no secure os for keybox operation [01.006]try to burn key [01.009]out of usb burn from boot: not need burn key [01.014]boot_gui_init:start [01.018]set disp.dev2_output_type fail. using defval=0 [01.023]disp 1, clk: pll(490000000),clk(490000000),dclk(70000000) dsi_rate(490000000) clk real:pll(492000000),clk(492000000),dclk(70285714) dsi_rate(0) [01.040]switch device: sel=1, type=1, mode=4, format=0, bits=0, eotf=4, cs=260 [01.047]boot_gui_init:finish [01.049]bmp_name=bootlogo.bmp 2764854 bytes read in 33 ms (79.9 MiB/s) [01.102]read item0 copy0 [01.114]Item0 (Map) magic is bad [01.117]the secure storage item0 copy[01.120]soc ic_ver:0x0, qa_val:0x0, markid:0x53002400 dclk[0-9999] 0 magic is bad [01.137]Item0 (Map) magic is bad [01.140]the secure storage item0 copy1 magic is bad [01.145]Item0 (Map) magic is bad [01.148]the secure storage map is empty [01.151]no item name device_unlock in the map [01.155]no item name fastboot_status_flag in the map [01.160]sunxi secure storage has no flag [01.166][mmc]: delete mmc-hs400-1_8v from dtb [01.169][mmc]: delete mmc-hs200-1_8v from dtb [01.175](weak)update dtb dram start [01.179]update dtb dram end [01.182]update dts [01.184]no item name snum in the map ** Unrecognized filesystem type ** [01.197]load file(ULI/factory/snum.txt) error. [01.201]no item name mac in the map ** Unrecognized filesystem type ** [01.215]load file(ULI/factory/mac.txt) error. [01.219]no item name wifi_mac in the map [01.229]LCD open finish ** Unrecognized filesystem type ** [01.239]load file(ULI/factory/wifi_mac.txt) error. [01.243]no item name bt_mac in the map ** Unrecognized filesystem type ** [01.257]load file(ULI/factory/bt_mac.txt) error. [01.262]no item name specialstr in the map ** Unrecognized filesystem type ** [01.276]load file(ULI/factory/specialstr.txt) error. [01.289]update part info [01.292]key 0 [01.296]misc partition found [01.398]update bootcmd [01.399]serial num is: 0c001415a0c0876220d Hit any key to stop autoboot: 0 [03.414]partinfo: name boot, start 0x2a000, size 0x10000 [03.707]read data in addr ret = 1 [03.709]magic = AVB0 [03.712]major version = 1 minor version = 0 [03.716]authentication_data_block_size = 240 [03.720]auxiliary_data_block_size = d40 [03.723]vbmeta_size = 4224 [03.726]algorithm_type = 0 [03.728]flag = 1 [03.730]release tool = avbtool 1.1.0 [03.747]read data in addr ret = 1 [03.750]magic = AVB0 [03.752]major version = 1 minor version = 0 [03.756]authentication_data_block_size = 140 [03.760]auxiliary_data_block_size = 3c0 [03.764]vbmeta_size = 1536 [03.766]algorithm_type = 0 [03.769]flag = 0 [03.770]release tool = avbtool 1.1.0 [03.788]read data in addr ret = 1 [03.791]magic = AVB0 [03.793]major version = 1 minor version = 0 [03.797]authentication_data_block_size = 140 [03.801]auxiliary_data_block_size = 340 [03.805]vbmeta_size = 1408 [03.807]algorithm_type = 0 [03.810]flag = 0 [03.811]release tool = avbtool 1.1.0 [03.815]total_size = 7168 [03.817]alloc block = 17 [03.861]vbmeta hash is 5639a0abfa80d7a29b777a9fc9dea4a1fb40797ec8ad6fd229bd60db8c6d52c1[03.870]in boot normal mode,pass normal para to cmdline [03.876]android.hardware = sun50iw10p1 [03.879]line:56 dtbo_idx= 0 [03.882]dtbo_idx= 64 [03.962]partinfo: name dtbo, start 0x8c2000, size 0x1000 [04.016]Starting kernel ... [04.018][mmc]: mmc exit start [04.106][mmc]: mmc 2 exit ok [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 4.9.170 (tigger@ubuntu) (gcc version 5.3.1 20160412 (Linaro GCC 5.3-2016.05) ) #6 SMP PREEMPT Mon Feb 14 19:34:12 CST 2022 [ 0.000000] Boot CPU: AArch64 Processor [410fd034] [ 0.000000] bootconsole [earlycon0] enabled [ 0.000000] disp reserve base 0x7bf65080 ,size 0x3e8000 [ 0.000000] cma: Reserved 8 MiB at 0x000000007f800000 [ 0.000000] On node 0 totalpages: 262144 [ 0.000000] DMA zone: 4096 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 262144 pages, LIFO batch:31 [ 0.000000] psci: probing for conduit method from DT. [ 0.000000] psci: PSCIv1.0 detected in firmware. [ 0.000000] psci: Using standard PSCI v0.2 function IDs [ 0.000000] psci: Trusted OS migration not required [ 0.000000] psci: SMC Calling Convention v1.0 [ 0.000000] percpu: Embedded 23 pages/cpu @ffffffc03f704000 s53376 r8192 d32640 u94208 [ 0.000000] pcpu-alloc: s53376 r8192 d32640 u94208 alloc=23*4096 [ 0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 [ 0.000000] Detected VIPT I-cache on CPU0 [ 0.000000] CPU features: enabling workaround for ARM erratum 845719 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 258048 [ 0.000000] Kernel command line: earlyprintk=sunxi-uart,0x05000000 initcall_debug=0 console=ttyS0,115200 loglevel=8 root=/dev/mmcblk0p4 init=/init partitions=bootloader@mmcblk0p1:env@mmcblk0p2:boot@mmcblk0p3:super@mmcblk0p4:misc@mmcblk0p5:recovery@mmcblk0p6:cache@mmcblk0p7:vbmeta@mmcblk0p8:vbmeta_system@mmcblk0p9:vbmeta_vendor@mmcblk0p10:metadata@mmcblk0p11:private@mmcblk0p12:frp@mmcblk0p13:empty@mmcblk0p14:dtbo@mmcblk0p15:media_data@mmcblk0p16:UDISK@mmcblk0p17 cma=8M snum=0c001415a0c0876220d mac_addr= wifi_mac= bt_mac= specialstr= gpt=1 androidboot.vbmeta.avb_version=2.0 androidboot.vbmeta.hash_alg=sha256 androidboot.vbmeta.size=7168 androidboot.vbmeta.digest=5639a0abfa80d7a29b777a9fc9dea4a1fb40797ec8ad6fd229bd60db8c6d52c1 androidboot.vbmeta.device_state=locked androidboot.mode=normal androidboot.serialno=0c001415a0c0876220d androidboot.hardware=sun50iw10p1 boot_type=2 androidboot.boot_type=2 androidboot.secure_os_exist=0 androidboot.trustchain=false gpt=1 uboot_message=2018.05(02/14/2[ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes) [ 0.000000] Memory: 977428K/1048576K available (11390K kernel code, 2192K rwdata, 4040K rodata, 4416K init, 600K bss, 62956K reserved, 8192K cma-reserved) [ 0.000000] Virtual kernel memory layout: [ 0.000000] modules : 0xffffff8000000000 - 0xffffff8008000000 ( 128 MB) [ 0.000000] vmalloc : 0xffffff8008000000 - 0xffffffbebfff0000 ( 250 GB) [ 0.000000] .text : 0xffffff8008080000 - 0xffffff8008ba0000 ( 11392 KB) [ 0.000000] .rodata : 0xffffff8008ba0000 - 0xffffff8008fa0000 ( 4096 KB) [ 0.000000] .init : 0xffffff8008fa0000 - 0xffffff80093f0000 ( 4416 KB) [ 0.000000] .data : 0xffffff80093f0000 - 0xffffff8009614008 ( 2193 KB) [ 0.000000] .bss : 0xffffff8009614008 - 0xffffff80096aa018 ( 601 KB) [ 0.000000] fixed : 0xffffffbefe7fb000 - 0xffffffbefec00000 ( 4116 KB) [ 0.000000] PCI I/O : 0xffffffbefee00000 - 0xffffffbeffe00000 ( 16 MB) [ 0.000000] vmemmap : 0xffffffbf00000000 - 0xffffffc000000000 ( 4 GB maximum) [ 0.000000] 0xffffffbf00000000 - 0xffffffbf01000000 ( 16 MB actual) [ 0.000000] memory : 0xffffffc000000000 - 0xffffffc040000000 ( 1024 MB) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 [ 0.000000] Preemptible hierarchical RCU implementation. [ 0.000000] Build-time adjustment of leaf fanout to 64. [ 0.000000] NR_IRQS:64 nr_irqs:64 0 [ 0.000000] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns [ 0.000000] arm_arch_timer: Architected cp15 timer(s) running at 24.00MHz (virt). [ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x588fe9dc0, max_idle_ns: 440795202592 ns [ 0.000004] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns [ 0.008146] Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=80000) [ 0.018200] pid_max: default: 32768 minimum: 301 [ 0.023030] Security Framework initialized [ 0.026879] SELinux: Initializing. [ 0.030474] SELinux: Starting in permissive mode [ 0.035135] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes) [ 0.041697] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes) [ 0.049576] ftrace: allocating 34487 entries in 135 pages [ 0.133178] sched-energy: CPU device node has no sched-energy-costs [ 0.133820] Invalid sched_group_energy for CPU0 [ 0.138357] CPU0: update cpu_capacity 1024 [ 0.152464] ASID allocator initialised with 32768 entries [ 0.171401] BOOTEVENT: 171.390957: ON [ 0.199434] Detected VIPT I-cache on CPU1 [ 0.199486] Invalid sched_group_energy for CPU1 [ 0.199488] CPU1: update cpu_capacity 1024 [ 0.199491] CPU1: Booted secondary processor [410fd034] [ 0.222806] Detected VIPT I-cache on CPU2 [ 0.222832] Invalid sched_group_energy for CPU2 [ 0.222835] CPU2: update cpu_capacity 1024 [ 0.222837] CPU2: Booted secondary processor [410fd034] [ 0.246220] Detected VIPT I-cache on CPU3 [ 0.246245] Invalid sched_group_energy for CPU3 [ 0.246248] CPU3: update cpu_capacity 1024 [ 0.246250] CPU3: Booted secondary processor [410fd034] [ 0.246334] Brought up 4 CPUs [ 0.296969] SMP: Total of 4 processors activated. [ 0.301660] CPU features: detected feature: 32-bit EL0 Support [ 0.307466] CPU features: detected feature: Kernel page table isolation (KPTI) [ 0.318493] CPU: All CPU(s) started at EL1 [ 0.318737] alternatives: patching kernel code [ 0.323346] Invalid sched_group_energy for CPU3 [ 0.327663] CPU3: update max cpu_capacity 1024 [ 0.332079] Invalid sched_group_energy for Cluster3 [ 0.336932] Invalid sched_group_energy for CPU2 [ 0.341439] Invalid sched_group_energy for Cluster2 [ 0.346291] Invalid sched_group_energy for CPU1 [ 0.350799] Invalid sched_group_energy for Cluster1 [ 0.355651] Invalid sched_group_energy for CPU0 [ 0.360159] Invalid sched_group_energy for Cluster0 [ 0.365541] CPU1: update max cpu_capacity 1024 [ 0.370156] devtmpfs: initialized [ 0.412316] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 6370867519511994 ns [ 0.416457] futex hash table entries: 1024 (order: 5, 131072 bytes) [ 0.423259] atomic64_test: passed [ 0.425951] pinctrl core: initialized pinctrl subsystem [ 0.433244] NET: Registered protocol family 16 [ 0.436992] dump_class_init,861, success [ 0.456219] cpuidle: using governor menu [ 0.457555] sunxi iommu: irq = 9 [ 0.458517] vdso: 2 pages (1 code @ ffffff8008ba8000, 1 data @ ffffff80093f4000) [ 0.465121] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers. [ 0.473295] DMA: preallocated 256 KiB pool for atomic allocations [ 0.481138] sun50iw10p1-r-pinctrl r_pio: initialized sunXi PIO driver [ 0.501695] sun50iw10p1-pinctrl pio: initialized sunXi PIO driver [ 0.506244] iommu: Adding device 1c0e000.ve to group 0 [ 0.514561] iommu: Adding device 6000000.disp to group 0 [ 0.515414] iommu: Adding device 6480000.g2d to group 0 [ 0.523478] iommu: Adding device csi0 to group 0 [ 0.524467] iommu: Adding device csi1 to group 0 [ 0.529717] iommu: Adding device 2108000.tdm to group 0 [ 0.534293] iommu: Adding device 2100000.isp to group 0 [ 0.539474] iommu: Adding device 2102000.isp to group 0 [ 0.544523] iommu: Adding device 2110000.scaler to group 0 [ 0.549978] iommu: Adding device 2110400.scaler to group 0 [ 0.555432] iommu: Adding device 2110800.scaler to group 0 [ 0.560900] iommu: Adding device 2110c00.scaler to group 0 [ 0.601407] pwm module init! [ 0.606625] sunxi-pm debug v3.10 [ 0.608113] SCSI subsystem initialized [ 0.608885] usbcore: registered new interface driver usbfs [ 0.613566] usbcore: registered new interface driver hub [ 0.618833] usbcore: registered new device driver usb [ 0.623993] sunxi_i2c_adap_init()2541 - init [ 0.628560] sunxi_i2c_probe()2289 - [i2c0] twi_drv_used = 0 [ 0.633552] sunxi_i2c_probe()2293 - [i2c0] twi_pkt_interval = 0 [ 0.639442] twi0 supply twi not found, using dummy regulator [ 0.645141] twi_request_gpio()453 - [i2c0] init name: twi0 [ 0.651253] sunxi_i2c_probe()2289 - [i2c1] twi_drv_used = 0 [ 0.656070] sunxi_i2c_probe()2293 - [i2c1] twi_pkt_interval = 0 [ 0.661985] twi1 supply twi not found, using dummy regulator [ 0.667666] twi_request_gpio()453 - [i2c1] init name: twi1 [ 0.673896] sunxi_i2c_probe()2289 - [i2c2] twi_drv_used = 0 [ 0.678606] sunxi_i2c_probe()2293 - [i2c2] twi_pkt_interval = 0 [ 0.684505] twi2 supply twi not found, using dummy regulator [ 0.690198] twi_request_gpio()453 - [i2c2] init name: twi2 [ 0.696176] sunxi_i2c_probe()2289 - [i2c3] twi_drv_used = 0 [ 0.701135] sunxi_i2c_probe()2293 - [i2c3] twi_pkt_interval = 0 [ 0.707037] twi3 supply twi not found, using dummy regulator [ 0.712748] twi_request_gpio()453 - [i2c3] init name: twi3 [ 0.718700] media: Linux media interface: v0.10 [ 0.722685] Linux video capture interface: v2.00 [ 0.728248] ion_parse_dt_heap_common: id 0 type 0 name sys_user align 1000 [ 0.734297] ion_parse_dt_heap_common: id 4 type 4 name cma align 1000 [ 0.740665] ion_parse_dt_heap_common: id 6 type 6 name secure align 1000 [ 0.747474] drm config service not available: FFFFFFFF [ 0.752543] Advanced Linux Sound Architecture Driver Initialized. [ 0.759054] Bluetooth: Core ver 2.22 [ 0.761946] NET: Registered protocol family 31 [ 0.766304] Bluetooth: HCI device and connection manager initialized [ 0.772645] Bluetooth: HCI socket layer initialized [ 0.777490] Bluetooth: L2CAP socket layer initialized [ 0.782557] Bluetooth: SCO socket layer initialized [ 0.788150] ncs8801s init:************************* [ 0.792378] script_ncs8801s_gpio_init: ncs8801s is not used [ 0.798430] clocksource: Switched to clocksource arch_sys_counter [ 0.880819] VFS: Disk quotas dquot_6.6.0 [ 0.880960] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 0.888742] udc_init,0 [ 0.889952] NET: Registered protocol family 2 [ 0.905297] TCP established hash table entries: 8192 (order: 4, 65536 bytes) [ 0.906769] TCP bind hash table entries: 8192 (order: 5, 131072 bytes) [ 0.913354] TCP: Hash tables configured (established 8192 bind 8192) [ 0.919621] UDP hash table entries: 512 (order: 2, 16384 bytes) [ 0.925464] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes) [ 0.932113] NET: Registered protocol family 1 [ 0.936399] Trying to unpack rootfs image as initramfs... [ 0.969166] Freeing initrd memory: 752K [ 0.970710] hw perfevents: enabled with armv8_pmuv3 PMU driver, 7 counters available [ 0.977696] audit: initializing netlink subsys (disabled) [ 0.980560] audit: type=2000 audit(0.806:1): initialized [ 0.986820] workingset: timestamp_bits=45 max_order=18 bucket_order=0 [ 1.003938] Registering sdcardfs 0.1 [ 1.004520] ntfs: driver 2.1.32 [Flags: R/W]. [ 1.006779] fuse init (API version 7.26) [ 1.012420] SELinux: Registering netfilter hooks [ 1.019334] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250) [ 1.022237] io scheduler noop registered [ 1.026079] io scheduler deadline registered [ 1.030636] io scheduler cfq registered (default) [ 1.036606] [DISP]disp_module_init [ 1.039578] [DISP] disp_init,line:2260: [ 1.042041] smooth display screen:1 type:1 mode:4 [ 1.130480] [DISP] lcd_clk_config,line:665: ;▒▒▒▒J"ͥ}Ʌѕ▒490000000) [ 1.130527] clk real:pll(492000000),clk(492000000),dclk(70285714) dsi_rate(0) [ 1.132303] [DISP]disp_module_init finish [ 1.134375] uart uart0: get regulator failed [ 1.134390] uart0 supply uart not found, using dummy regulator [ 1.134676] uart0: ttyS0 at MMIO 0x5000000 (irq = 349, base_baud = 1500000) is a SUNXI [ 1.134695] sw_console_setup()1731 - console setup baud 115200 parity n bits 8, flow n [ 1.168933] console [ttyS0] enabled [ 1.168933] console [ttyS0] enabled [ 1.178463] bootconsole [earlycon0] disabled [ 1.178463] bootconsole [earlycon0] disabled [ 1.187529] uart uart1: get regulator failed [ 1.195757] uart1 supply uart not found, using dummy regulator [ 1.202592] uart1: ttyS1 at MMIO 0x5000400 (irq = 350, base_baud = 1500000) is a SUNXI [ 1.212515] misc dump reg init [ 1.217055] G2D: Module initialized.major:246 [ 1.223260] [drm] Initialized [ 1.226792] Unable to detect cache hierarchy for CPU 0 [ 1.246250] brd: module loaded [ 1.265453] loop: module loaded [ 1.269941] zram: Added device: zram0 [ 1.274272] [NAND][NE] Not found valid nand node on dts [ 1.281243] sunxi-wlan soc@03000000:wlan@0: wlan_busnum (1) [ 1.287559] sunxi-wlan soc@03000000:wlan@0: Missing wlan_power. [ 1.294289] sunxi-wlan soc@03000000:wlan@0: wlan_power_name ((null)) [ 1.301464] sunxi-wlan soc@03000000:wlan@0: Missing wlan_io_regulator. [ 1.308823] sunxi-wlan soc@03000000:wlan@0: io_regulator_name ((null)) [ 1.316237] sunxi-wlan soc@03000000:wlan@0: wlan_regon gpio=357 mul-sel=1 pull=-1 drv_level=-1 data=0 [ 1.327044] sunxi-wlan soc@03000000:wlan@0: get gpio chip_en failed [ 1.334119] sunxi-wlan soc@03000000:wlan@0: get gpio power_en failed [ 1.341297] sunxi-wlan soc@03000000:wlan@0: wlan_hostwake gpio=358 mul-sel=1 pull=-1 drv_level=-1 data=0 [ 1.352456] sunxi-wlan soc@03000000:wlan@0: clk not config [ 1.358643] sunxi-wlan soc@03000000:wlan@0: dcxo not config [ 1.364952] sunxi-wlan soc@03000000:wlan@0: pinctrl_lookup_state(default) failed! return ffffffffffffffed [ 1.376818] [ADDR_MGT] addr_mgt_probe: success. [ 1.383990] it6612_init-<629>:it6612 init:************************* [ 1.391805] it6612_probe-<497>:it6612 probe:************************* [ 1.403256] twi_stop()514 - [i2c0] STOP can't sendout! [ 1.409031] sunxi_i2c_core_process()1751 - [i2c0] STOP failed! [ 1.415619] sunxi_i2c_do_xfer()1946 - [i2c0] incomplete xfer (status: 0x20, dev addr: 0x4c) [ 1.425232] sunxi_i2c_do_xfer()1946 - [i2c1] incomplete xfer (status: 0x20, dev addr: 0x4c) [ 1.434870] sunxi_i2c_do_xfer()1946 - [i2c2] incomplete xfer (status: 0x20, dev addr: 0x4c) [ 1.444505] sunxi_i2c_do_xfer()1946 - [i2c3] incomplete xfer (status: 0x20, dev addr: 0x4c) [ 1.454626] libphy: Fixed MDIO Bus: probed [ 1.459261] tun: Universal TUN/TAP device driver, 1.6 [ 1.464964] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com> [ 1.473710] gmac-power0: NULL [ 1.477072] gmac-power1: NULL [ 1.480442] gmac-power2: NULL [ 1.484692] PPP generic driver version 2.4.2 [ 1.489784] PPP BSD Compression module registered [ 1.495126] PPP Deflate Compression module registered [ 1.500846] PPP MPPE Compression module registered [ 1.506254] NET: Registered protocol family 24 [ 1.511261] PPTP driver version 0.8.5 [ 1.515777] usbcore: registered new interface driver rtl8150 [ 1.522231] usbcore: registered new interface driver r8152 [ 1.528502] usbcore: registered new interface driver asix [ 1.534654] usbcore: registered new interface driver ax88179_178a [ 1.541580] usbcore: registered new interface driver cdc_ether [ 1.548237] usbcore: registered new interface driver smsc75xx [ 1.554791] usbcore: registered new interface driver smsc95xx [ 1.561321] usbcore: registered new interface driver net1080 [ 1.567766] usbcore: registered new interface driver cdc_subset [ 1.574492] usbcore: registered new interface driver zaurus [ 1.580842] usbcore: registered new interface driver MOSCHIP usb-ethernet driver [ 1.589251] usbcore: registered new interface driver cdc_ncm [ 1.595640] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 1.603353] get ehci0-controller, regulator_io is no nocare [ 1.609641] get ehci0-controller wakeup-source is fail. [ 1.615769] sunxi ehci0-controller don't init wakeup source [ 1.622051] [sunxi-ehci0]: probe, pdev->name: 5101000.ehci0-controller, sunxi_ehci: 0xffffff8009695ac0, 0x:ffffff80097c4000, irq_no:164 [ 1.635769] [sunxi-ehci0]: Not init ehci0 [ 1.640417] get ehci1-controller, regulator_io is no nocare [ 1.646888] [sunxi-ehci1]: probe, pdev->name: 5200000.ehci1-controller, sunxi_ehci: 0xffffff8009695e48, 0x:ffffff80097ce000, irq_no:166 [ 1.660625] 5200000.ehci1-controller supply drvvbus not found, using dummy regulator [ 1.669495] sunxi-ehci 5200000.ehci1-controller: SW USB2.0 'Enhanced' Host Controller (EHCI) Driver [ 1.679722] sunxi-ehci 5200000.ehci1-controller: new USB bus registered, assigned bus number 1 [ 1.689927] sunxi-ehci 5200000.ehci1-controller: irq 358, io mem 0xffffffc03da84810 [ 1.711785] sunxi-ehci 5200000.ehci1-controller: USB 0.0 started, EHCI 1.00 [ 1.720729] hub 1-0:1.0: USB hub found [ 1.724997] hub 1-0:1.0: 1 port detected [ 1.730378] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 1.737700] get ohci0-controller, regulator_io is no nocare [ 1.743988] get ohci0-controller wakeup-source is fail. [ 1.750092] sunxi ohci0-controller don't init wakeup source [ 1.756490] [sunxi-ohci0]: probe, pdev->name: 5101000.ohci0-controller, sunxi_ohci: 0xffffff8009696558 [ 1.766972] [sunxi-ohci0]: Not init ohci0 [ 1.771605] get ohci1-controller, regulator_io is no nocare [ 1.778166] [sunxi-ohci1]: probe, pdev->name: 5200000.ohci1-controller, sunxi_ohci: 0xffffff80096968e0 [ 1.788671] 5200000.ohci1-controller supply drvvbus not found, using dummy regulator [ 1.797511] sunxi-ohci 5200000.ohci1-controller: SW USB2.0 'Open' Host Controller (OHCI) Driver [ 1.807331] sunxi-ohci 5200000.ohci1-controller: new USB bus registered, assigned bus number 2 [ 1.817104] sunxi-ohci 5200000.ohci1-controller: irq 359, io mem 0xffffffc03da84c00 [ 1.886797] hub 2-0:1.0: USB hub found [ 1.891061] hub 2-0:1.0: 1 port detected [ 1.896595] usbcore: registered new interface driver uas [ 1.902715] usbcore: registered new interface driver usb-storage [ 1.909545] usbcore: registered new interface driver ums-alauda [ 1.916269] usbcore: registered new interface driver ums-cypress [ 1.923094] usbcore: registered new interface driver ums-datafab [ 1.929915] usbcore: registered new interface driver ums_eneub6250 [ 1.936935] usbcore: registered new interface driver ums-freecom [ 1.943755] usbcore: registered new interface driver ums-isd200 [ 1.950482] usbcore: registered new interface driver ums-jumpshot [ 1.957403] usbcore: registered new interface driver ums-karma [ 1.964032] usbcore: registered new interface driver ums-onetouch [ 1.970968] usbcore: registered new interface driver ums-realtek [ 1.977793] usbcore: registered new interface driver ums-sddr09 [ 1.984517] usbcore: registered new interface driver ums-sddr55 [ 1.991244] usbcore: registered new interface driver ums-usbat [ 1.997949] usbcore: registered new interface driver usbserial [ 2.004721] usbcore: registered new interface driver option [ 2.011051] usbserial: USB Serial support registered for GSM modem (1-port) [ 2.019158] usb_serial_number:20080411 [ 2.024150] sunxikbd_key_init: key0 vol= 210 code= 115 [ 2.029956] sunxikbd_key_init: key1 vol= 410 code= 114 [ 2.035748] sunxikbd_key_init: key2 vol= 590 code= 139 [ 2.041544] sunxikbd_key_init: key3 vol= 750 code= 28 [ 2.047237] sunxikbd_key_init: key4 vol= 880 code= 102 [ 2.053366] input: sunxi-keyboard as /devices/virtual/input/input0 [ 2.062417] sunxi-rtc rtc: rtc core: registered sunxi-rtc as rtc0 [ 2.069350] sunxi-rtc rtc: RTC enabled [ 2.073890] i2c /dev entries driver [ 2.078809] sunxi cedar version 0.1 [ 2.082884] VE: install start!!! [ 2.082884] [ 2.088327] cedar_ve: cedar-ve the get irq is 347 [ 2.094042] VE: get debugfs_mpp_root is NULL, please check mpp [ 2.094042] [ 2.102285] VE: sunxi ve debug register driver failed! [ 2.102285] [ 2.111997] device-mapper: uevent: version 1.0.3 [ 2.117718] device-mapper: ioctl: 4.35.0-ioctl (2016-06-23) initialised: dm-devel@redhat.com [ 2.127413] device-mapper: verity-avb: AVB error handler initialized with vbmeta device: [ 2.136638] Bluetooth: HCI UART driver ver 2.3 [ 2.141659] Bluetooth: HCI UART protocol H4 registered [ 2.147450] Bluetooth: HCI UART protocol LL registered [ 2.153243] Bluetooth: HCI UART protocol Three-wire (H5) registered [ 2.164483] sunxi-mmc sdc2: SD/MMC/SDIO Host Controller Driver(v3.46 2020-6-1 11:33-202006021635) [ 2.174628] sunxi-mmc sdc2: No vmmc regulator found [ 2.180137] sunxi-mmc sdc2: No vqmmc regulator found [ 2.185732] sunxi-mmc sdc2: No vdmmc regulator found [ 2.191331] sunxi-mmc sdc2: No vd33sw regulator found [ 2.197024] sunxi-mmc sdc2: No vd18sw regulator found [ 2.202721] sunxi-mmc sdc2: No vq33sw regulator found [ 2.208412] sunxi-mmc sdc2: No vq18sw regulator found [ 2.214668] sunxi-mmc sdc2: set host busy [ 2.219269] mmc:failed to get gpios [ 2.223475] sunxi-mmc sdc2: sdc set ios:clk 0Hz bm PP pm UP vdd 21 width 1 timing LEGACY(SDR12) dt B [ 2.248454] sunxi-mmc sdc2: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B [ 2.275133] sunxi-mmc sdc2: detmode:alway in(non removable) [ 2.275155] sunxi-mmc sdc2: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B [ 2.283528] sunxi-mmc sdc2: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B [ 2.284597] sunxi-mmc sdc2: sdc set ios:clk 400000Hz bm OD pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B [ 2.295450] sunxi-mmc sdc2: sdc set ios:clk 400000Hz bm OD pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B [ 2.295517] sunxi-mmc sdc2: sdc set ios:clk 400000Hz bm OD pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B [ 2.308365] sunxi-mmc sdc2: sdc set ios:clk 400000Hz bm OD pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B [ 2.352884] sun50iw10p1-pinctrl pio: expect_func as:uart0_jtag, but muxsel(3) is func:jtag0 [ 2.362321] sun50iw10p1-pinctrl pio: expect_func as:uart0_jtag, but muxsel(3) is func:jtag0 [ 2.371734] sunxi-mmc sdc2: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B [ 2.382624] sun50iw10p1-pinctrl pio: expect_func as:uart0_jtag, but muxsel(3) is func:uart0 [ 2.392065] sun50iw10p1-pinctrl pio: expect_func as:uart0_jtag, but muxsel(3) is func:jtag0 [ 2.401474] sun50iw10p1-pinctrl pio: expect_func as:uart0_jtag, but muxsel(3) is func:uart0 [ 2.410908] sun50iw10p1-pinctrl pio: expect_func as:uart0_jtag, but muxsel(3) is func:jtag0 [ 2.420645] sunxi-mmc sdc0: SD/MMC/SDIO Host Controller Driver(v3.46 2020-6-1 11:33-202006021635) [ 2.430742] sunxi-mmc sdc0: ***ctl-spec-caps*** 8 [ 2.436053] sunxi-mmc sdc2: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing MMC-HS(SDR20) dt B [ 2.446913] sunxi-mmc sdc2: sdc set ios:clk 20000000Hz bm PP pm ON vdd 21 width 1 timing MMC-HS(SDR20) dt B [ 2.458168] sunxi-mmc sdc2: sdc set ios:clk 20000000Hz bm PP pm ON vdd 21 width 8 timing MMC-HS(SDR20) dt B [ 2.469152] sunxi-mmc sdc0: No vmmc regulator found [ 2.469156] sunxi-mmc sdc0: No vqmmc regulator found [ 2.469161] sunxi-mmc sdc0: No vdmmc regulator found [ 2.469165] sunxi-mmc sdc0: No vd33sw regulator found [ 2.469169] sunxi-mmc sdc0: No vd18sw regulator found [ 2.469173] sunxi-mmc sdc0: No vq33sw regulator found [ 2.469177] sunxi-mmc sdc0: No vq18sw regulator found [ 2.474983] sunxi-mmc sdc0: set host busy [ 2.475048] sunxi-mmc sdc0: Got CD GPIO [ 2.475425] sunxi-mmc sdc0: sdc set ios:clk 0Hz bm PP pm UP vdd 21 width 1 timing LEGACY(SDR12) dt B [ 2.475451] sunxi-mmc sdc0: no vqmmc,Check if there is regulator [ 2.491795] sunxi-mmc sdc0: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B [ 2.508727] sunxi-mmc sdc0: detmode:gpio irq [ 2.509248] sunxi-mmc sdc1: SD/MMC/SDIO Host Controller Driver(v3.46 2020-6-1 11:33-202006021635) [ 2.509326] sunxi-mmc sdc1: ***ctl-spec-caps*** 8 [ 2.509379] sunxi-mmc sdc1: No vmmc regulator found [ 2.509383] sunxi-mmc sdc1: No vqmmc regulator found [ 2.509388] sunxi-mmc sdc1: No vdmmc regulator found [ 2.509392] sunxi-mmc sdc1: No vd33sw regulator found [ 2.509396] sunxi-mmc sdc1: No vd18sw regulator found [ 2.509400] sunxi-mmc sdc1: No vq33sw regulator found [ 2.509404] sunxi-mmc sdc1: No vq18sw regulator found [ 2.509990] sunxi-mmc sdc1: set host busy [ 2.510065] mmc:failed to get gpios [ 2.510090] sunxi-mmc sdc1: min-frequency:400000 [ 2.510326] sunxi-mmc sdc1: sdc set ios:clk 0Hz bm PP pm UP vdd 21 width 1 timing LEGACY(SDR12) dt B [ 2.510351] sunxi-mmc sdc1: no vqmmc,Check if there is regulator [ 2.525177] sunxi-mmc sdc1: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B [ 2.541845] sunxi-mmc sdc1: detmode:manually by software [ 2.542684] sunxi-mmc sdc1: smc 2 p1 err, cmd 52, RTO !! [ 2.543176] hidraw: raw HID events driver (C) Jiri Kosina [ 2.543515] sunxi-mmc sdc1: smc 2 p1 err, cmd 52, RTO !! [ 2.543540] sunxi-mmc sdc1: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B [ 2.546025] sunxi-mmc sdc1: sdc set ios:clk 400000Hz bm PP pm ON vdd 21 width 1 timing LEGACY(SDR12) dt B [ 2.547928] sunxi-mmc sdc1: smc 2 p1 err, cmd 5, RTO !! [ 2.548758] sunxi-mmc sdc1: smc 2 p1 err, cmd 5, RTO !! [ 2.549597] sunxi-mmc sdc1: smc 2 p1 err, cmd 5, RTO !! [ 2.549972] usbcore: registered new interface driver usbhid [ 2.549975] usbhid: USB HID core driver [ 2.550393] ashmem: initialized [ 2.550428] sunxi-mmc sdc1: smc 2 p1 err, cmd 5, RTO !! [ 2.550459] sunxi-mmc sdc1: sdc set ios:clk 0Hz bm PP pm OFF vdd 0 width 1 timing LEGACY(SDR12) dt B [ 2.551975] optee: probing for conduit method from DT. [ 2.551983] optee: api uid mismatch [ 2.552406] usbcore: registered new interface driver snd-usb-audio [ 2.554107] u32 classifier [ 2.554109] Actions configured [ 2.554119] Netfilter messages via NETLINK v0.30. [ 2.554136] nfnl_acct: registering with nfnetlink. [ 2.554456] nf_conntrack version 0.5.0 (8192 buckets, 32768 max) [ 2.554684] ctnetlink v0.93: registering with nfnetlink. [ 2.555236] xt_time: kernel timezone is -0000 [ 2.555336] ipip: IPv4 and MPLS over IPv4 tunneling driver [ 2.556050] gre: GRE over IPv4 demultiplexor driver [ 2.556053] ip_gre: GRE over IPv4 tunneling driver [ 2.557314] IPv4 over IPsec tunneling driver [ 2.560370] ip_tables: (C) 2000-2006 Netfilter Core Team [ 2.560621] arp_tables: arp_tables: (C) 2002 David S. Miller [ 2.565633] Initializing XFRM netlink socket [ 2.565668] IPsec XFRM device driver [ 2.566468] NET: Registered protocol family 10 [ 2.568294] mip6: Mobile IPv6 [ 2.568326] ip6_tables: (C) 2000-2006 Netfilter Core Team [ 2.583435] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver [ 2.584944] NET: Registered protocol family 17 [ 2.584986] NET: Registered protocol family 15 [ 2.585019] l2tp_core: L2TP core driver, V2.0 [ 2.585034] l2tp_ppp: PPPoL2TP kernel driver, V2.0 [ 2.588002] Registered cp15_barrier emulation handler [ 2.588017] Registered setend emulation handler [ 2.588975] registered taskstats version 1 [ 2.603835] get usb_detect_mode is fail, 22 [ 2.605130] sunxi-rtc rtc: setting system clock to 1970-01-01 00:00:06 UTC (6) [ 2.606169] usb1-vbus: disabling [ 2.606174] ALSA device list: [ 2.606176] No soundcards found. [ 2.711876] sunxi-mmc sdc0: sdc set ios:clk 0Hz bm PP pm OFF vdd 0 width 1 timing LEGACY(SDR12) dt B [ 2.926451] sunxi-mmc sdc2: sdc set ios:clk 20000000Hz bm PP pm ON vdd 21 width 8 timing MMC-DDR52 dt B [ 2.928750] Freeing unused kernel memory: 4416K [ 2.928844] Kernel init done [ 2.937487] init: init first stage started! [ 2.938800] init: [libfs_mgr]ReadFstabFromDt(): failed to read fstab from dt [ 2.941333] init: Using Android DT directory /proc/device-tree/firmware/android/ [ 2.966966] mmc0: new DDR MMC card at address 0001 [ 2.973315] mmcblk0: mmc0:0001 8WPD3R 7.28 GiB [ 2.982229] mmcblk0boot0: mmc0:0001 8WPD3R partition 1 4.00 MiB [ 2.992683] mmcblk0boot1: mmc0:0001 8WPD3R partition 2 4.00 MiB [ 3.003136] mmcblk0rpmb: mmc0:0001 8WPD3R partition 3 512 KiB [ 3.012332] mmcblk0: p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 [ 3.039402] init: [libfs_mgr]Created logical partition system on device /dev/block/dm-0 [ 3.050369] init: [libfs_mgr]Created logical partition vendor on device /dev/block/dm-1 [ 3.061334] init: [libfs_mgr]Created logical partition product on device /dev/block/dm-2 [ 3.071638] init: [libfs_mgr]superblock s_max_mnt_count:65535,/dev/block/by-name/metadata [ 3.081230] init: [libfs_mgr]Filesystem on /dev/block/by-name/metadata was not cleanly shutdown; state flags: 0x1, incompat feature flags: 0x46 [ 3.096340] init: [libfs_mgr]check_fs(): mount(/dev/block/by-name/metadata,/metadata,ext4)=-1: No such file or directory [ 3.108807] init: [libfs_mgr]Not running /system/bin/e2fsck on /dev/block/mmcblk0p11 (executable not in system image) [ 3.445765] EXT4-fs (mmcblk0p11): recovery complete [ 3.530584] EXT4-fs (mmcblk0p11): mounted filesystem with ordered data mode. Opts: errors=panic [ 3.547152] EXT4-fs (dm-0): mounted filesystem without journal. Opts: barrier=1 [ 3.570951] random: fast init done [ 3.578691] EXT4-fs (dm-1): mounted filesystem without journal. Opts: barrier=1 [ 3.592385] EXT4-fs (dm-2): mounted filesystem without journal. Opts: barrier=1 [ 3.624642] init: 12 output lines suppressed due to ratelimiting [ 3.647512] random: init: uninitialized urandom read (40 bytes read) [ 3.881880] random: init: uninitialized urandom read (40 bytes read) [ 3.917758] init: Loading SELinux policy [ 3.949307] SELinux: 8192 avtab hash slots, 22205 rules. [ 3.972399] SELinux: 8192 avtab hash slots, 22205 rules. [ 3.978431] SELinux: 1 users, 4 roles, 1369 types, 0 bools, 1 sens, 1024 cats [ 3.986593] SELinux: 97 classes, 22205 rules [ 3.996115] SELinux: Completing initialization. [ 4.001339] SELinux: Setting up existing superblocks. [ 4.142735] audit: type=1403 audit(8.036:2): policy loaded auid=4294967295 ses=4294967295 [ 4.152279] selinux: SELinux: Loaded policy from /vendor/etc/selinux/precompiled_sepolicy [ 4.152279] [ 4.173026] selinux: SELinux: Skipping /product/etc/selinux/product_file_contexts: empty file [ 4.173026] [ 4.184824] selinux: SELinux: Loaded file_contexts [ 4.184824] [ 4.200678] random: init: uninitialized urandom read (40 bytes read) [ 4.266645] init: init second stage started! [ 4.322473] init: Using Android DT directory /proc/device-tree/firmware/android/ [ 4.339654] selinux: SELinux: Skipping /product/etc/selinux/product_file_contexts: empty file [ 4.339654] [ 4.351401] selinux: SELinux: Loaded file_contexts [ 4.351401] [ 4.358523] init: Running restorecon... [ 4.385011] init: Overriding previous 'ro.' property 'pm.dexopt.shared':'speed' with new value 'quicken' [ 4.396081] init: Overriding previous 'ro.' property 'ro.kernel.android.checkjni':'0' with new value '1' [ 4.411061] selinux: avc: denied { set } for scontext=u:r:vendor_init:s0 tcontext=u:object_r:default_prop:s0 tclass=property_service permissive=1 [ 4.411061] [ 4.428893] selinux: avc: denied { set } for scontext=u:r:vendor_init:s0 tcontext=u:object_r:dalvik_prop:s0 tclass=property_service permissive=1 [ 4.428893] [ 4.445755] init: Overriding previous 'ro.' property 'dalvik.vm.heapsize':'256m' with new value '512m' [ 4.683683] urandom_read: 6 callbacks suppressed [ 4.683690] random: ueventd: uninitialized urandom read (40 bytes read) [ 4.702005] ueventd: ueventd started! [ 4.712674] selinux: SELinux: Skipping /product/etc/selinux/product_file_contexts: empty file [ 4.712674] [ 4.724525] selinux: SELinux: Loaded file_contexts [ 4.724525] [ 4.731981] ueventd: Parsing file /ueventd.rc... [ 4.738936] ueventd: Parsing file /vendor/ueventd.rc... [ 4.744527] apexd: Bootstrap subcommand detected [ 4.751255] ueventd: Parsing file /odm/ueventd.rc... [ 4.757025] ueventd: Unable to read config file '/odm/ueventd.rc': open() failed: No such file or directory [ 4.757160] apexd: Scanning /system/apex for embedded keys [ 4.759325] apexd: Scanning /product/apex for embedded keys [ 4.759545] apexd: ... does not exist. Skipping [ 4.759753] apexd: Scanning /system/apex looking for APEX packages. [ 4.760121] apexd: Found /system/apex/com.android.conscrypt [ 4.760584] apexd: Skipped when bootstrapping [ 4.760798] apexd: Found /system/apex/com.android.media [ 4.761254] apexd: Skipped when bootstrapping [ 4.761468] apexd: Found /system/apex/com.android.tzdata [ 4.768364] apexd: 9 output lines suppressed due to ratelimiting [ 4.827644] ueventd: Parsing file /ueventd.sun50iw10p1.rc... [ 4.834120] ueventd: Unable to read config file '/ueventd.sun50iw10p1.rc': open() failed: No such file or directory [ 5.118634] ueventd: Coldboot took 0.27 seconds [ 5.161721] Registered swp emulation handler [ 5.229387] init: wait for '/dev/block/by-name/media_data' took 0ms [ 5.243102] FAT-fs (mmcblk0p16): bogus number of reserved sectors [ 5.250257] FAT-fs (mmcblk0p16): Can't find a valid FAT filesystem [ 5.428493] fsck.f2fs: Info: Fix the reported corruption. [ 5.428493] [ 5.436352] fsck.f2fs: Info: No support kernel version! [ 5.436352] [ 5.445489] fsck.f2fs: Info: Segments per section = 1 [ 5.445489] [ 5.446312] logd.auditd: start [ 5.456559] fsck.f2fs: Info: Sections per zone = 1 [ 5.456559] [ 5.463735] fsck.f2fs: Info: sector size = 512 [ 5.463735] [ 5.470548] fsck.f2fs: Info: total sectors = 6049759 (2953 MB) [ 5.470548] [ 5.478903] fsck.f2fs: Info: MKFS version [ 5.478903] [ 5.485197] fsck.f2fs: "4.9.170 #6 SMP PREEMPT Mon Feb 14 19:34:12 CST 2022" [ 5.485197] [ 5.495108] fsck.f2fs: Info: FSCK version [ 5.495108] [ 5.501484] fsck.f2fs: from "4.9.170 #6 SMP PREEMPT Mon Feb 14 19:34:12 CST 2022" [ 5.501484] [ 5.780594] F2FS-fs (mmcblk0p17): recover_inode: ino = 26a, name = primary.prof, inline = 3 [ 5.790093] F2FS-fs (mmcblk0p17): recover_data: ino = 26a (i_size: recover) recovered = 0, err = 0 [ 5.800201] F2FS-fs (mmcblk0p17): recover_inode: ino = 261, name = primary.prof, inline = 3 [ 5.809628] F2FS-fs (mmcblk0p17): recover_data: ino = 261 (i_size: recover) recovered = 0, err = 0 [ 5.819733] F2FS-fs (mmcblk0p17): recover_inode: ino = 402, name = primary.prof, inline = 3 [ 5.829157] F2FS-fs (mmcblk0p17): recover_data: ino = 402 (i_size: recover) recovered = 0, err = 0 [ 5.839260] F2FS-fs (mmcblk0p17): recover_inode: ino = 34b, name = primary.prof, inline = 3 [ 5.848686] F2FS-fs (mmcblk0p17): recover_data: ino = 34b (i_size: recover) recovered = 0, err = 0 [ 5.858784] F2FS-fs (mmcblk0p17): recover_inode: ino = 36a, name = primary.prof, inline = 3 [ 5.868208] F2FS-fs (mmcblk0p17): recover_data: ino = 36a (i_size: recover) recovered = 0, err = 0 [ 5.878306] F2FS-fs (mmcblk0p17): recover_inode: ino = 735, name = sanity.xml, inline = b [ 5.888064] F2FS-fs (mmcblk0p17): recover_dentry: ino = 735, name = sanity.xml, dir = 6cb, err = 0 [ 5.898188] F2FS-fs (mmcblk0p17): recover_data: ino = 735 (i_size: recover) recovered = 0, err = 0 [ 5.908287] F2FS-fs (mmcblk0p17): recover_inode: ino = 470, name = primary.prof, inline = 3 [ 5.917711] F2FS-fs (mmcblk0p17): recover_data: ino = 470 (i_size: recover) recovered = 0, err = 0 [ 5.927808] F2FS-fs (mmcblk0p17): recover_inode: ino = 6d2, name = app_icons.db, inline = 1 [ 5.937316] F2FS-fs (mmcblk0p17): recover_data: ino = 6d2 (i_size: recover) recovered = 7, err = 0 [ 5.947419] F2FS-fs (mmcblk0p17): recover_inode: ino = 6d2, name = app_icons.db, inline = 1 [ 5.956876] F2FS-fs (mmcblk0p17): recover_data: ino = 6d2 (i_size: recover) recovered = 4, err = 0 [ 5.966980] F2FS-fs (mmcblk0p17): recover_inode: ino = 6c2, name = launcher.db, inline = 1 [ 5.976342] F2FS-fs (mmcblk0p17): recover_data: ino = 6c2 (i_size: recover) recovered = 2, err = 0 [ 5.986445] F2FS-fs (mmcblk0p17): recover_inode: ino = 6c2, name = launcher.db, inline = 1 [ 5.995799] F2FS-fs (mmcblk0p17): recover_data: ino = 6c2 (i_size: recover) recovered = 2, err = 0 [ 6.005900] F2FS-fs (mmcblk0p17): recover_inode: ino = 6d2, name = app_icons.db, inline = 1 [ 6.015379] F2FS-fs (mmcblk0p17): recover_data: ino = 6d2 (i_size: recover) recovered = 9, err = 0 [ 6.025478] F2FS-fs (mmcblk0p17): recover_inode: ino = 736, name = android.accounts.AccountAuthenticator.xml, inline = b [ 6.038849] F2FS-fs (mmcblk0p17): recover_dentry: ino = 736, name = android.accounts.AccountAuthenticator.xml, dir = 5af, err = 0 [ 6.052014] F2FS-fs (mmcblk0p17): recover_data: ino = 736 (i_size: recover) recovered = 0, err = 0 [ 6.062115] F2FS-fs (mmcblk0p17): recover_inode: ino = 6d2, name = app_icons.db, inline = 1 [ 6.071595] F2FS-fs (mmcblk0p17): recover_data: ino = 6d2 (i_size: recover) recovered = 5, err = 0 [ 6.081701] F2FS-fs (mmcblk0p17): recover_inode: ino = 6d2, name = app_icons.db, inline = 1 [ 6.091187] F2FS-fs (mmcblk0p17): recover_data: ino = 6d2 (i_size: recover) recovered = 12, err = 0 [ 6.101388] F2FS-fs (mmcblk0p17): recover_inode: ino = 6d2, name = app_icons.db, inline = 1 [ 6.110880] F2FS-fs (mmcblk0p17): recover_data: ino = 6d2 (i_size: recover) recovered = 5, err = 0 [ 6.120977] F2FS-fs (mmcblk0p17): recover_inode: ino = 6c2, name = launcher.db, inline = 1 [ 6.130337] F2FS-fs (mmcblk0p17): recover_data: ino = 6c2 (i_size: recover) recovered = 2, err = 0 [ 6.140433] F2FS-fs (mmcblk0p17): recover_inode: ino = 6d2, name = app_icons.db, inline = 1 [ 6.149902] F2FS-fs (mmcblk0p17): recover_data: ino = 6d2 (i_size: recover) recovered = 7, err = 0 [ 6.159999] F2FS-fs (mmcblk0p17): recover_inode: ino = 6d2, name = app_icons.db, inline = 1 [ 6.169484] F2FS-fs (mmcblk0p17): recover_data: ino = 6d2 (i_size: recover) recovered = 10, err = 0 [ 6.179692] F2FS-fs (mmcblk0p17): recover_inode: ino = 737, name = appwidgets.xml, inline = b [ 6.191212] F2FS-fs (mmcblk0p17): recover_dentry: ino = 737, name = appwidgets.xml, dir = 68, err = 0 [ 6.201666] F2FS-fs (mmcblk0p17): recover_data: ino = 737 (i_size: recover) recovered = 0, err = 0 [ 6.211780] F2FS-fs (mmcblk0p17): recover_inode: ino = 738, name = appwidgets.xml, inline = b [ 6.221415] F2FS-fs (mmcblk0p17): recover_dentry: ino = 738, name = appwidgets.xml, dir = 68, err = 0 [ 6.231866] F2FS-fs (mmcblk0p17): recover_data: ino = 738 (i_size: recover) recovered = 0, err = 0 [ 6.241975] F2FS-fs (mmcblk0p17): recover_inode: ino = 739, name = appwidgets.xml, inline = b [ 6.251598] F2FS-fs (mmcblk0p17): recover_dentry: ino = 739, name = appwidgets.xml, dir = 68, err = 0 [ 6.262002] F2FS-fs (mmcblk0p17): recover_data: ino = 739 (i_size: recover) recovered = 0, err = 0 [ 6.272099] F2FS-fs (mmcblk0p17): recover_inode: ino = 6d2, name = app_icons.db, inline = 1 [ 6.281573] F2FS-fs (mmcblk0p17): recover_data: ino = 6d2 (i_size: recover) recovered = 4, err = 0 [ 6.291668] F2FS-fs (mmcblk0p17): recover_inode: ino = 6d2, name = app_icons.db, inline = 1 [ 6.301142] F2FS-fs (mmcblk0p17): recover_data: ino = 6d2 (i_size: recover) recovered = 10, err = 0 [ 6.311337] F2FS-fs (mmcblk0p17): recover_inode: ino = 6d2, name = app_icons.db, inline = 1 [ 6.320803] F2FS-fs (mmcblk0p17): recover_data: ino = 6d2 (i_size: recover) recovered = 4, err = 0 [ 6.330903] F2FS-fs (mmcblk0p17): recover_inode: ino = 73a, name = settings_secure.xml, inline = 1 [ 6.341841] F2FS-fs (mmcblk0p17): recover_dentry: ino = 73a, name = settings_secure.xml, dir = 68, err = 0 [ 6.352791] F2FS-fs (mmcblk0p17): recover_data: ino = 73a (i_size: recover) recovered = 3, err = 0 [ 6.362937] F2FS-fs (mmcblk0p17): recover_inode: ino = 73b, name = roles.xml, inline = b [ 6.372714] F2FS-fs (mmcblk0p17): recover_dentry: ino = 73b, name = roles.xml, dir = 68, err = 0 [ 6.382636] F2FS-fs (mmcblk0p17): recover_data: ino = 73b (i_size: recover) recovered = 0, err = 0 [ 6.392741] F2FS-fs (mmcblk0p17): recover_inode: ino = 73c, name = settings_global.xml, inline = 1 [ 6.403533] F2FS-fs (mmcblk0p17): recover_dentry: ino = 73c, name = settings_global.xml, dir = 68, err = 0 [ 6.414475] F2FS-fs (mmcblk0p17): recover_data: ino = 73c (i_size: recover) recovered = 3, err = 0 [ 6.424580] F2FS-fs (mmcblk0p17): recover_inode: ino = 73d, name = settings_system.xml, inline = 1 [ 6.435368] F2FS-fs (mmcblk0p17): recover_dentry: ino = 73d, name = settings_system.xml, dir = 68, err = 0 [ 6.446315] F2FS-fs (mmcblk0p17): recover_data: ino = 73d (i_size: recover) recovered = 2, err = 0 [ 6.456416] F2FS-fs (mmcblk0p17): recover_inode: ino = 73e, name = package-restrictions.xml, inline = 1 [ 6.467707] F2FS-fs (mmcblk0p17): recover_dentry: ino = 73e, name = package-restrictions.xml, dir = 68, err = 0 [ 6.479140] F2FS-fs (mmcblk0p17): recover_data: ino = 73e (i_size: recover) recovered = 3, err = 0 [ 6.489283] F2FS-fs (mmcblk0p17): recover_inode: ino = 73f, name = shortcuts.xml, inline = 1 [ 6.500018] F2FS-fs (mmcblk0p17): recover_dentry: ino = 73f, name = shortcuts.xml, dir = 733, err = 0 [ 6.510466] F2FS-fs (mmcblk0p17): recover_data: ino = 73f (i_size: recover) recovered = 2, err = 0 [ 6.520563] F2FS-fs (mmcblk0p17): recover_inode: ino = 337, name = primary.prof, inline = 3 [ 6.529986] F2FS-fs (mmcblk0p17): recover_data: ino = 337 (i_size: recover) recovered = 0, err = 0 [ 6.626954] F2FS-fs (mmcblk0p17): checkpoint: version = 3eed3eb4 [ 6.634013] F2FS-fs (mmcblk0p17): Mounted with checkpoint version = 3eed3eb4 [ 6.645433] EXT4-fs (mmcblk0p7): Ignoring removed nomblk_io_submit option [ 6.666852] EXT4-fs (mmcblk0p7): recovery complete [ 6.672859] EXT4-fs (mmcblk0p7): mounted filesystem with ordered data mode. Opts: errors=remount-ro,nomblk_io_submit [ 6.822816] EXT4-fs (mmcblk0p7): Ignoring removed nomblk_io_submit option [ 6.833106] EXT4-fs (mmcblk0p7): mounted filesystem with ordered data mode. Opts: barrier=1,data=ordered,nomblk_io_submit,noauto_da_alloc,errors=panic [ 6.876866] init: 14 output lines suppressed due to ratelimiting [ 6.891155] zram0: detected capacity change from 0 to 760922112 [ 6.938931] mkswap: Swapspace size: 743084k, UUID=13ec065f-06ab-4190-aa10-9ee9de850d6b [ 6.948999] Adding 743084k swap on /dev/block/zram0. Priority:-1 extents:1 across:743084k SS console:/ $ [ 7.543825] usbcore: registered new interface driver uvcvideo [ 7.550354] USB Video Class driver (1.1.1) [ 7.785820] apexd: Marking APEXd as starting [ 7.792705] apexd: Scanning /system/apex for embedded keys [ 7.801662] apexd: Scanning /product/apex for embedded keys [ 7.808136] apexd: ... does not exist. Skipping [ 7.813425] apexd: Populating APEX database from mounts... [ 7.820276] apexd: Failed to walk /product/apex : Can't open /product/apex for reading : No such file or directory [ 7.832947] apexd: Found "/apex/com.android.tzdata@290000000" [ 7.839613] apexd: Found "/apex/com.android.runtime@1" [ 7.845739] apexd: 2 packages restored. [ 7.850210] apexd: Scanning /data/apex/sessions looking for sessions to be activated. [ 7.907029] vdc: Waited 0ms for vold [ 8.015232] type=1400 audit(11.906:3): avc: denied { setattr } for comm="init" name="audio_d" dev="mmcblk0p17" ino=118 scontext=u:r:vendor_init:s0 tcontext=u:object_r:audio_rw_data_file:s0 tclass=dir permissive=1 [ 8.242336] logd.daemon: reinit [ 8.688406] file system registered [ 8.711134] using random self ethernet address [ 8.716324] using random host ethernet address [ 8.998681] treadahead: /data/vendor/treadahead/readahead_file_offset not exist; [ 9.007664] treadahead: go to open trace [ 9.023060] healthd: No battery devices found [ 9.043346] healthd: battery none chg= [ 9.051835] [ 9.051835] insmod_device_driver [ 9.051835] [ 9.131513] type=1400 audit(11.906:3): avc: denied { setattr } for comm="init" name="audio_d" dev="mmcblk0p17" ino=118 scontext=u:r:vendor_init:s0 tcontext=u:object_r:audio_rw_data_file:s0 tclass=dir permissive=1 [ 9.147178] Bluetooth: XRadio Bluetooth LPM Mode Driver Ver 01.00.06 [ 9.161265] type=1400 audit(13.023:4): avc: denied { create } for comm="audio@2.0-servi" scontext=u:r:hal_audio_default:s0 tcontext=u:r:hal_audio_default:s0 tclass=tcp_socket permissive=1 [ 9.180372] type=1400 audit(13.023:4): avc: denied { create } for comm="audio@2.0-servi" scontext=u:r:hal_audio_default:s0 tcontext=u:r:hal_audio_default:s0 tclass=tcp_socket permissive=1 [ 9.199253] type=1400 audit(13.023:5): avc: denied { setopt } for comm="audio@2.0-servi" scontext=u:r:hal_audio_default:s0 tcontext=u:r:hal_audio_default:s0 tclass=tcp_socket permissive=1 [ 9.218463] type=1400 audit(13.023:5): avc: denied { setopt } for comm="audio@2.0-servi" scontext=u:r:hal_audio_default:s0 tcontext=u:r:hal_audio_default:s0 tclass=tcp_socket permissive=1 [ 9.237354] type=1400 audit(13.023:6): avc: denied { bind } for comm="audio@2.0-servi" scontext=u:r:hal_audio_default:s0 tcontext=u:r:hal_audio_default:s0 tclass=tcp_socket permissive=1 [ 9.256308] type=1400 audit(13.023:6): avc: denied { bind } for comm="audio@2.0-servi" scontext=u:r:hal_audio_default:s0 tcontext=u:r:hal_audio_default:s0 tclass=tcp_socket permissive=1 [ 9.278929] init: Command 'insmod /vendor/modules/xradio_btlpm.ko' action=persist.vendor.bluetooth_vendor=xradio (/vendor/etc/init/init.wireless.bluetooth.rc:25) took 471ms and failed: finit_module for "/vendor/modules/xradio_btlpm.ko" failed: No such device [ 9.305894] init: Service 'treadahead_process' (pid 1785) exited with status 0 [ 9.314220] init: Sending signal 9 to service 'treadahead_process' (pid 1785) process group... [ 9.324663] libprocessgroup: Successfully killed process cgroup uid 0 pid 1785 in 0ms [ 9.335076] init: Service 'preloaddata' (pid 1832) exited with status 0 [ 9.342732] init: Sending signal 9 to service 'preloaddata' (pid 1832) process group... [ 9.352418] libprocessgroup: Successfully killed process cgroup uid 0 pid 1832 in 0ms [ 9.362739] init: processing action (persist.vendor.bluetooth_vendor=xradio && vold.post_fs_data_done=1) from (/vendor/etc/init/init.wireless.bluetooth.rc:56) [ 9.396776] init: processing action (nonencrypted) from (/init.rc:760) [ 9.404551] init: Could not start service 'flash_recovery' as part of class 'main': Cannot find '/system/bin/install-recovery.sh': No such file or directory [ 9.426868] read descriptors [ 9.430259] read strings [ 11.951275] sunxi_set_cur_vol_work()403 WARN: get power supply failed [ 12.041706] android_work: sent uevent USB_STATE=CONNECTED [ 12.048129] sunxi_set_cur_vol_work()403 WARN: get power supply failed [ 12.174851] configfs-gadget gadget: high-speed config #1: b [ 12.181520] android_work: sent uevent USB_STATE=CONFIGURED [ 12.833440] pvrsrvkm: loading out-of-tree module taints kernel. [ 12.939251] pvrsrvkm gpu: set gpu core rate:504000000 freq:504000000-950000uV dfs:0x00000001 [ 12.949233] pvrsrvkm gpu: set gpu core rate:504000000 freq:472500000-950000uV dfs:0x00000002 [ 12.958876] pvrsrvkm gpu: set gpu core rate:504000000 freq:441000000-950000uV dfs:0x00000004 [ 12.968558] pvrsrvkm gpu: set gpu core rate:252000000 freq:252000000-950000uV dfs:0x00000001 [ 12.978797] pvrsrvkm gpu: idle:0 dvfs:0 power:0 No mode:1 volt:0 core:504000000 [ 12.987244] PVR_K: 1805: Read BVNC 22.102.54.38 from HW device registers [ 12.994979] PVR_K: 1805: RGX Device registered with BVNC 22.102.54.38 [ 13.003480] pvrsrvkm gpu: opp[1/4]: (252000000 Hz, 950000 uV) [ 13.010029] pvrsrvkm gpu: opp[2/4]: (441000000 Hz, 950000 uV) [ 13.016532] pvrsrvkm gpu: opp[3/4]: (472500000 Hz, 950000 uV) [ 13.023051] pvrsrvkm gpu: opp[4/4]: (504000000 Hz, 950000 uV) [ 13.030368] pvrsrvkm gpu: Cooling: power ops not registered, not enabling cooling [ 13.043205] [drm] Initialized pvr 1.11.5516664 20170530 on minor 0 [ 13.053539] type=1400 audit(13.933:9): avc: denied { write } for comm="radio_monitor" name="uevent" dev="sysfs" ino=17793 scontext=u:r:radio_monitor:s0 tcontext=u:object_r:sysfs_usb:s0 tclass=file permissive=1 [ 13.077228] type=1400 audit(16.946:10): avc: denied { read } for comm="pvrsrvctl" name="modules" dev="proc" ino=4026532037 scontext=u:r:pvr:s0 tcontext=u:object_r:proc_modules:s0 tclass=file permissive=1 [ 13.097908] type=1400 audit(16.946:10): avc: denied { read } for comm="pvrsrvctl" name="modules" dev="proc" ino=4026532037 scontext=u:r:pvr:s0 tcontext=u:object_r:proc_modules:s0 tclass=file permissive=1 [ 13.118406] type=1400 audit(16.950:11): avc: denied { open } for comm="pvrsrvctl" path="/proc/modules" dev="proc" ino=4026532037 scontext=u:r:pvr:s0 tcontext=u:object_r:proc_modules:s0 tclass=file permissive=1 [ 13.139694] type=1400 audit(16.950:11): avc: denied { open } for comm="pvrsrvctl" path="/proc/modules" dev="proc" ino=4026532037 scontext=u:r:pvr:s0 tcontext=u:object_r:proc_modules:s0 tclass=file permissive=1 [ 13.160934] type=1400 audit(16.950:12): avc: denied { getattr } for comm="pvrsrvctl" path="/proc/modules" dev="proc" ino=4026532037 scontext=u:r:pvr:s0 tcontext=u:object_r:proc_modules:s0 tclass=file permissive=1 [ 13.188174] PVR_K: 1796: RGX Firmware image 'rgx.fw.22.102.54.38' loaded [ 13.224495] logd: logdr: UID=1036 GID=1023 PID=1923 b tail=0 logMask=19 pid=0 start=0ns timeout=0ns [ 15.116961] init: Service 'bootanim' (pid 2016) exited with status 0 [ 15.124225] init: Sending signal 9 to service 'bootanim' (pid 2016) process group... [ 15.133414] libprocessgroup: Successfully killed process cgroup uid 1003 pid 2016 in 0ms [ 17.978867] healthd: battery none chg= [ 19.414084] random: crng init done [ 21.895625] binder: undelivered transaction 3466, process died. [ 21.904003] init: Service 'vendor.camera-provider-2-4' (pid 1932) exited with status 0 [ 21.913391] init: Sending signal 9 to service 'vendor.camera-provider-2-4' (pid 1932) process group... [ 21.924724] libprocessgroup: Successfully killed process cgroup uid 1047 pid 1932 in 0ms [ 22.676161] healthd: battery none chg= [ 22.686301] healthd: battery none chg= [ 23.286174] type=1400 audit(16.950:12): avc: denied { getattr } for comm="pvrsrvctl" path="/proc/modules" dev="proc" ino=4026532037 scontext=u:r:pvr:s0 tcontext=u:object_r:proc_modules:s0 tclass=file permissive=1 [ 23.312589] type=1400 audit(1644899277.263:13): avc: denied { read } for comm="android.ui" name="state" dev="sysfs" ino=17497 scontext=u:r:system_server:s0 tcontext=u:object_r:sysfs:s0 tclass=file permissive=1 [ 23.336158] type=1400 audit(1644899277.263:13): avc: denied { read } for comm="android.ui" name="state" dev="sysfs" ino=17497 scontext=u:r:system_server:s0 tcontext=u:object_r:sysfs:s0 tclass=file permissive=1 [ 23.355814] init: processing action (sys.sysctl.extra_free_kbytes=*) from (/init.rc:806) [ 23.367602] type=1400 audit(1644899277.263:14): avc: denied { open } for comm="android.ui" path="/sys/devices/platform/ite66121/extcon/hdmi/state" dev="sysfs" ino=17497 scontext=u:r:system_server:s0 tcontext=u:object_r:sysfs:s0 tclass=file permissive=1 [ 23.397743] type=1400 audit(1644899277.263:14): avc: denied { open } for comm="android.ui" path="/sys/devices/platform/ite66121/extcon/hdmi/state" dev="sysfs" ino=17497 scontext=u:r:system_server:s0 tcontext=u:object_r:sysfs:s0 tclass=file permissive=1 [ 23.425374] type=1400 audit(1644899277.263:15): avc: denied { getattr } for comm="android.ui" path="/sys/devices/platform/ite66121/extcon/hdmi/state" dev="sysfs" ino=17497 scontext=u:r:system_server:s0 tcontext=u:object_r:sysfs:s0 tclass=file permissive=1 [ 24.571628] acc_open [ 24.574153] acc_release [ 24.968766] init: Received control message 'interface_start' for 'android.hardware.wifi@1.0::IWifi/default' from pid: 1626 (/system/bin/hwservicemanager) [ 24.985790] init: starting service 'vendor.wifi_hal_legacy'... [ 24.996997] init: Received control message 'interface_start' for 'android.hardware.wifi@1.0::IWifi/default' from pid: 1626 (/system/bin/hwservicemanager) [ 25.316647] libphy: gmac0: probed [ 25.395552] sunxi-gmac gmac0 eth0: eth0: Type(7) PHY ID 001cc916 at 0 IRQ poll (gmac0-0:00) [ 32.518795] sunxi-gmac gmac0 eth0: Link is Up - 100Mbps/Full - flow control off [ 34.130237] init: processing action (sys.sysctl.tcp_def_init_rwnd=*) from (/init.rc:810) [ 34.437899] init: processing action (sys.boot_completed=1) from (/init.rc:800) [ 34.455563] init: processing action (sys.boot_completed=1) from (/vendor/etc/init/hw/init.device.rc:44) [ 34.514037] get ctp_power is fail, -22 [ 34.523106] sunxi_ctp_startup: ctp_power_io is invalid. [ 34.539084] get ctp_gesture_wakeup fail, no gesture wakeup [ 34.555190] 1-005d supply ctp not found, using dummy regulator [ 34.564047] sdcardfs version 2.0 [ 34.564054] sdcardfs: dev_name -> /data/media [ 34.564057] sdcardfs: options -> fsuid=1023,fsgid=1023,multiuser,derive_gid,default_normal,unshared_obb,mask=6,userid=0,gid=1015 [ 34.564063] sdcardfs: mnt -> ffffffc0158c9520 [ 34.564174] sdcardfs: mounted on top of /data/media type f2fs [ 34.566347] Remount options were mask=23,gid=9997 for vfsmnt ffffffc017078560. [ 34.566397] sdcardfs : options - debug:1 [ 34.566401] sdcardfs : options - gid:9997 [ 34.566404] sdcardfs : options - mask:23 [ 34.567539] Remount options were mask=7,gid=9997 for vfsmnt ffffffc017079520. [ 34.567576] sdcardfs : options - debug:1 [ 34.567582] sdcardfs : options - gid:9997 [ 34.567585] sdcardfs : options - mask:7 [ 34.568849] Remount options were mask=7,gid=9997 for vfsmnt ffffffc01707a3a0. [ 34.568885] sdcardfs : options - debug:1 [ 34.568893] sdcardfs : options - gid:9997 [ 34.568895] sdcardfs : options - mask:7 [ 34.859589] input: gt9xxnew_ts as /devices/virtual/input/input1 [ 34.872499] init: Command 'insmod /vendor/modules/gt9xxnew_ts.ko' action=sys.boot_completed=1 (/vendor/etc/init/hw/init.device.rc:46) took 404ms and succeeded [ 34.962294] init: Command 'insmod /vendor/modules/gt9xxnewdup_ts.ko' action=sys.boot_completed=1 (/vendor/etc/init/hw/init.device.rc:47) took 69ms and failed: finit_module for "/vendor/modules/gt9xxnewdup_ts.ko" failed: Operation not permitted [ 35.126238] init: processing action (sys.boot_completed=1) from (/system/etc/init/aw_thermal.rc:10) [ 35.131191] selinux: SELinux: Skipping restorecon on directory(/data/system_ce/0) [ 35.131191] [ 35.147206] init: starting service 'aw_thermal'... [ 35.156990] init: processing action (sys.boot_completed=1 && sys.logbootcomplete=1) from (/system/etc/init/bootstat.rc:78) [ 35.179784] init: starting service 'exec 11 (/system/bin/bootstat --record_boot_complete --record_boot_reason --record_time_since_factory_reset -l)'... [ 35.478920] treadahead: /data/vendor/treadahead/readahead_file_offset not exist; [ 35.487506] treadahead: go to read trace [ 35.558501] [DISP] de_enhance_set_mode,line:474: [ 35.563949] para excess! mode = 0, enhance_mode = 0, format=255 [ 35.570912] [DISP] de_enhance_set_mode,line:474: [ 35.575968] para excess! mode = 0, enhance_mode = 0, format=255 [ 35.583448] [DISP] de_enhance_set_mode,line:474: [ 35.588553] para excess! mode = 0, enhance_mode = 0, format=255 [ 35.595474] [DISP] de_enhance_set_mode,line:474: [ 35.600779] para excess! mode = 0, enhance_mode = 1, format=255 [ 35.607768] [DISP] de_enhance_set_mode,line:474: [ 35.615244] para excess! mode = 0, enhance_mode = 0, format=255 [ 35.622589] [DISP] de_enhance_set_mode,line:474: [ 35.627682] para excess! mode = 0, enhance_mode = 0, format=255 [ 35.634708] [DISP] de_enhance_set_mode,line:474: [ 35.639873] para excess! mode = 0, enhance_mode = 1, format=255 [ 35.646873] [DISP] de_enhance_set_mode,line:474: [ 35.652206] para excess! mode = 0, enhance_mode = 0, format=255 [ 35.659612] [DISP] de_enhance_set_mode,line:474: [ 35.664671] para excess! mode = 0, enhance_mode = 0, format=255 [ 35.671615] [DISP] de_enhance_set_mode,line:474: [ 35.676666] para excess! mode = 0, enhance_mode = 1, format=255 [ 35.683603] [DISP] de_enhance_set_mode,line:474: [ 35.688663] para excess! mode = 0, enhance_mode = 0, format=255 [ 39.282513] BOOTEVENT: 39282.498474: OFF [ 42.619131] apexd: Can't open /product/apex for reading : No such file or directory [ 43.413170] init: Received control message 'start' for 'gsid' from pid: 2076 (system_server) [ 43.428864] init: starting service 'gsid'... [ 43.896744] init: Received control message 'stop' for 'gsid' from pid: 2076 (system_server) [ 43.907949] init: Sending signal 9 to service 'gsid' (pid 3864) process group... [ 43.933988] libprocessgroup: Successfully killed process cgroup uid 0 pid 3864 in 11ms [ 43.947602] init: Service 'gsid' (pid 3864) received signal 9 [ 44.022976] type=1400 audit(1644899277.263:15): avc: denied { getattr } for comm="android.ui" path="/sys/devices/platform/ite66121/extcon/hdmi/state" dev="sysfs" ino=17497 scontext=u:r:system_server:s0 tcontext=u:object_r:sysfs:s0 tclass=file permissive=1 [ 44.095599] type=1400 audit(1645110582.574:16): avc: granted { read } for comm="main" name="u:object_r:net_dns_prop:s0" dev="tmpfs" ino=9595 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:net_dns_prop:s0 tclass=file app=com.android.email [ 45.189057] type=1400 audit(1645110582.574:16): avc: granted { read } for comm="main" name="u:object_r:net_dns_prop:s0" dev="tmpfs" ino=9595 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:net_dns_prop:s0 tclass=file app=com.android.email [ 45.214939] type=1400 audit(1645110583.740:17): avc: denied { dac_override } for comm="irqbalance" capability=1 scontext=u:r:shell:s0 tcontext=u:r:shell:s0 tclass=capability permissive=1 [ 52.557212] type=1400 audit(1645110583.740:17): avc: denied { dac_override } for comm="irqbalance" capability=1 scontext=u:r:shell:s0 tcontext=u:r:shell:s0 tclass=capability permissive=1 [ 52.562828] treadahead: read trace end [ 52.580709] type=1400 audit(1645110591.110:18): avc: denied { ptrace } for comm="crash_dump32" scontext=u:r:crash_dump:s0 tcontext=u:r:vendor_init:s0 tclass=process permissive=1 [ 52.726960] logd: logdr: UID=0 GID=0 PID=4034 n tail=50 logMask=8 pid=3477 start=0ns timeout=0ns [ 52.739258] logd: logdr: UID=0 GID=0 PID=4034 n tail=50 logMask=1 pid=3477 start=0ns timeout=0ns [ 52.754669] logd: logdr: UID=0 GID=0 PID=4034 n tail=0 logMask=8 pid=3477 start=0ns timeout=0ns [ 52.766251] logd: logdr: UID=0 GID=0 PID=4034 n tail=0 logMask=1 pid=3477 start=0ns timeout=0ns [ 52.784004] init: Untracked pid 4034 exited with status 0 [ 52.791447] init: Untracked pid 4036 exited with status 0 [ 52.849100] treadahead: parser trace end [ 52.888372] init: Service 'treadahead_trace' (pid 3477) exited with status 0 [ 52.896422] init: Sending signal 9 to service 'treadahead_trace' (pid 3477) process group... [ 52.906716] libprocessgroup: Successfully killed process cgroup uid 0 pid 3477 in 0ms [ 55.186537] type=1400 audit(1645110591.110:18): avc: denied { ptrace } for comm="crash_dump32" scontext=u:r:crash_dump:s0 tcontext=u:r:vendor_init:s0 tclass=process permissive=1 [ 55.204450] type=1400 audit(1645110593.740:19): avc: denied { dac_override } for comm="irqbalance" capability=1 scontext=u:r:shell:s0 tcontext=u:r:shell:s0 tclass=capability permissive=1
这是我的启动日志,你对比看看。
-
账户密码配置文件是公司登陆服务器签名编译服务器的人持有,其他同事的人没有持有这个文件编译的时候编译会出问题
各位做secureboot的时候,就是如何考虑下面的问题:账户密码配置文件是公司登陆服务器签名编译服务器的人持有,其他同事的人没有持有这个文件编译的时候编译会出问题。就算做出usr版本是签名版本的固件,usr-debug是非签名版本的固件,发给客户都是usr版本签名版本的固件,客户那边功能出了问题,应用层的人需要提示用usr-debug版本去定位问题不好定位,因为已经烧录了签名版本的固件,应用层的人没有持有配置文件不好调试设备会起不来。
-
请问vmware虚拟机网卡配置是NAT模式共享主机共享IP,局域网其他电脑怎么连接这个虚拟机呢?
请问vmware虚拟机网卡配置是NAT模式共享主机共享IP,局域网其他电脑怎么连接这个虚拟机呢?
-
回复: 第一次编译A133 Android SDK,请问这是什么问题呢?
https://github.com/GloDroid/glodroid_manifest/issues/21
https://dev.t-firefly.com/thread-104483-1-1.html
搜了几个网页,都说编译的电脑内存不够引起, 那再重新编译一次试一试。
-
回复: 第一次编译A133 Android SDK,请问这是什么问题呢?
Target buildinfo from: build/make/target/board/go_defaults_common.prop Target buildinfo from: build/make/target/board/go_defaults.prop Target buildinfo from: device/softwinner/common/system.prop [ 96% 82343/85072] //libcore/mmodules/core_platform_api:core-platform-api-stubs Metalava /opt/a133/android/external/bouncycastle/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/asn1/x500/style/BCStyle.java:17: warning: Public class com.android.org.bouncycastle.asn1.x500.style.BCStyle stripped of unavailable superclass com.android.org.bouncycastle.asn1.x500.style.AbstractX500NameStyle [HiddenSuperclass] [ 96% 82457/85072] //libcore/mmodules/core_platform_api:core-platform-api-stubs Metalava Check API /opt/a133/android/external/bouncycastle/repackaged/bcprov/src/main/java/com/android/org/bouncycastle/asn1/x500/style/BCStyle.java:17: warning: Public class com.android.org.bouncycastle.asn1.x500.style.BCStyle stripped of unavailable superclass com.android.org.bouncycastle.asn1.x500.style.AbstractX500NameStyle [HiddenSuperclass] [ 98% 83626/85072] //frameworks/base:system-api-stubs-docs Metalava Check API [ 98% 83855/85072] //prebuilts/sdk/current/support:android-support-v7-appcompat javac [ 98% 83887/85072] //frameworks/base:api-stubs-docs Metalava Check API FAILED: out/soong/.intermediates/frameworks/base/api-stubs-docs/android_common/check_last_released_api.timestamp ( rm -rf "out/soong/.intermediates/frameworks/base/api-stubs-docs/android_common/last-apicheck/srcjars" && mkdir -p "out/soong/.intermediates/frameworks/base/api-stubs-docs/android_common/last-apicheck/srcjars" && out/soong/host/linux-x86/bin/zipsync -d out/soong/.intermediates/frameworks/base/api-stubs-docs/android_common/last-apicheck/srcjars -l out/soong/.intermediates/frameworks/base/api-stubs-docs/android_common/last-apicheck/srcjars/list -f "*.java" out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/privacy.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/section.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/activitymanager.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/alarmmanager.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/notification.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/notification_channel.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/notification_channel_group.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/notificationmanager.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/pendingintent.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/profilerinfo.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/settings_enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/statusbarmanager.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/window_configuration.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/app/job/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/bluetooth/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/bluetooth/a2dp/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/bluetooth/hci/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/bluetooth/hfp/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/bluetooth/smp/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/content/activityinfo.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/content/clipdata.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/content/clipdescription.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/content/component_name.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/content/configuration.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/content/featureinfo.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/content/intent.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/content/locale.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/content/package_item_info.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/debug/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/graphics/pixelformat.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/graphics/point.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/graphics/rect.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/hardware/biometrics/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/hardware/sensor/assist/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/internal/locallog.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/internal/powerprofile.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/internal/processstats.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/media/audioattributes.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/net/network.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/net/networkcapabilities.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/net/networkrequest.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/backtrace.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/batterystats.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/batterytype.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/bundle.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/cpufreq.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/cpuinfo.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/data.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/header.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/incident.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/kernelwake.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/looper.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/message.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/messagequeue.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/metadata.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/pagetypeinfo.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/patternmatcher.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/persistablebundle.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/powermanager.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/procrank.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/ps.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/statsdata.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/system_properties.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/os/worksource.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/providers/settings.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/providers/settings/common.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/providers/settings/global.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/providers/settings/secure.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/providers/settings/system.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/activitymanagerservice.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/alarmmanagerservice.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/animationadapter.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/appwindowthumbnail.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/backup_chunks_metadata.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/face.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/fingerprint.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/forceappstandbytracker.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/intentresolver.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/jobscheduler.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/powermanagerservice.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/rolemanagerservice.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/statlogger.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/surfaceanimator.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/usagestatsservice.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/windowmanagerservice.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/windowmanagertrace.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/wirelesschargerdetector.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/connectivity/data_stall_event.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/job/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/server/location/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/adb.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/appwidget.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/battery.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/batterystats.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/diskstats.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/graphicsstats.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/netstats.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/network_watchlist.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/notification.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/package.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/print.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/procstats.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/procstats_enum.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/restricted_image.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/runtime.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/service/usb.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/connectivity/network_stack.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/devicepolicy/device_policy.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/devicepolicy/device_policy_enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/dnsresolver/dns_resolver.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/docsui/docsui_enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/intelligence/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/launcher/launcher.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/location/location_enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/mediametrics/mediametrics.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/storage/storage_enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/stats/style/style_enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/telecomm/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/telephony/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/util/common.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/util/event_log_tags.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/util/log.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/view/display.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/view/displaycutout.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/view/displayinfo.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/view/enums.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/view/remote_animation_target.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/view/surface.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/view/surfacecontrol.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/view/windowlayoutparams.srcjar out/soong/.intermediates/frameworks/base/framework-javastream-protos/gen/frameworks/base/core/proto/android/wifi/enums.srcjar out/soong/.intermediates/frameworks/base/framework/android_common/gen/sysprop/system/apex/apexd/sysprop/ApexProperties.srcjar out/soong/.intermediates/frameworks/base/framework/android_common/gen/sysprop/system/libsysprop/srcs/android/sysprop/AdbProperties.srcjar out/soong/.intermediates/frameworks/base/framework/android_common/gen/sysprop/system/libsysprop/srcs/android/sysprop/CarProperties.srcjar out/soong/.intermediates/frameworks/base/framework/android_common/gen/sysprop/system/libsysprop/srcs/android/sysprop/ContactsProperties.srcjar out/soong/.intermediates/frameworks/base/framework/android_common/gen/sysprop/system/libsysprop/srcs/android/sysprop/CryptoProperties.srcjar out/soong/.intermediates/frameworks/base/framework/android_common/gen/sysprop/system/libsysprop/srcs/android/sysprop/DisplayProperties.srcjar out/soong/.intermediates/frameworks/base/framework/android_common/gen/sysprop/system/libsysprop/srcs/android/sysprop/SetupWizardProperties.srcjar out/soong/.intermediates/frameworks/base/framework/android_common/gen/sysprop/system/libsysprop/srcs/android/sysprop/TraceProperties.srcjar out/soong/.intermediates/frameworks/base/framework/android_common/gen/sysprop/system/libsysprop/srcs/android/sysprop/VoldProperties.srcjar out/soong/.intermediates/frameworks/base/core/res/framework-res/android_common/gen/R.jar && prebuilts/jdk/jdk9/linux-x86/bin/java -jar out/soong/host/linux-x86/framework/metalava.jar -encoding UTF-8 -source 1.8 @out/soong/.intermediates/frameworks/base/api-stubs-docs/android_common/check_last_released_api.timestamp.rsp @out/soong/.intermediates/frameworks/base/api-stubs-docs/android_common/last-apicheck/srcjars/list -bootclasspath out/soong/.intermediates/libcore/mmodules/core_platform_api/core.platform.api.stubs/android_common/javac/core.platform.api.stubs.jar:out/soong/.intermediates/libcore/core-lambda-stubs/android_common/javac/core-lambda-stubs.jar -classpath out/soong/.intermediates/frameworks/base/ext/android_common/turbine-combined/ext.jar:out/soong/.intermediates/frameworks/base/framework/android_common/turbine-jarjar/framework.jar:out/soong/.intermediates/frameworks/base/media/updatable_media_stubs/android_common/turbine-combined/updatable_media_stubs.jar:out/soong/.intermediates/frameworks/base/ext/android_common/turbine-combined/ext.jar:out/soong/.intermediates/frameworks/base/framework/android_common/turbine-jarjar/framework.jar:out/soong/.intermediates/frameworks/opt/net/voip/voip-common/android_common/turbine-combined/voip-common.jar -sourcepath "frameworks/base/core/java:frameworks/base/graphics/java:frameworks/base/location/java:frameworks/base/media/java:frameworks/base/media/mca/effect/java:frameworks/base/media/mca/filterfw/java:frameworks/base/media/mca/filterpacks/java:frameworks/base/drm/java:frameworks/base/opengl/java:frameworks/base/sax/java:frameworks/base/telecomm/java:frameworks/base/telephony/java:frameworks/base/wifi/java:frameworks/base/lowpan/java:frameworks/base/keystore/java:frameworks/base/rs/java" --no-banner --color --quiet --format=v2 --manifest frameworks/base/core/res/AndroidManifest.xml --hide-package com.android.okhttp --hide-package com.android.org.conscrypt --hide-package com.android.server --error UnhiddenSystemApi --hide RequiresPermission --hide MissingPermission --hide BroadcastBehavior --hide HiddenSuperclass --hide DeprecationMismatch --hide UnavailableSymbol --hide SdkConstant --hide HiddenTypeParameter --hide Todo --hide Typo --check-compatibility:api:released out/soong/.intermediates/prebuilts/sdk/last-released-public-api/gen/last-released-api.txt --check-compatibility:removed:released frameworks/base/api/removed.txt --merge-qualifier-annotations tools/metalava/manual --merge-qualifier-annotations libcore/ojluni/annotations/sdk && touch out/soong/.intermediates/frameworks/base/api-stubs-docs/android_common/check_last_released_api.timestamp && rm -rf "out/soong/.intermediates/frameworks/base/api-stubs-docs/android_common/last-apicheck/srcjars") || ( echo -e "\n******************************\nYou have tried to change the API from what has been previously released in\nan SDK. Please fix the errors listed above.\n******************************\n" ; exit 38 ) Killed -e ****************************** You have tried to change the API from what has been previously released in an SDK. Please fix the errors listed above. ****************************** 23:11:47 ninja failed with: exit status 1 #### failed to build some targets (02:34:15 (hh:mm:ss)) #### ubuntu:/opt/a133/android$
-
回复: 在D1的tina上整上overlayfs
tigger@ubuntu:/opt/D1$ sudo unsquashfs /opt/D1/tina_d1_open/out/d1-nezha/image/rootfs.fex Parallel unsquashfs: Using 8 processors 1099 inodes (1149 blocks) to write [==============================================================================================================================================|] 1149/1149 100% created 796 files created 130 directories created 302 symlinks created 1 devices created 0 fifos tigger@ubuntu:/opt/D1/$
tigger@ubuntu:/opt/D1$ ls -l squashfs-root/ total 80 drwxr-xr-x 7 root root 4096 Dec 24 13:39 base drwxr-xr-x 2 root root 4096 Dec 24 13:39 bin drwxr-xr-x 2 root root 4096 Dec 24 13:39 dev drwxr-xr-x 20 root root 4096 Dec 24 13:39 etc drwxr-xr-x 10 root root 4096 Dec 24 13:39 lib drwxr-xr-x 2 root root 4096 Dec 24 13:39 lib64xthead drwxr-xr-x 6 root root 4096 Dec 24 13:39 mnt drwxr-xr-x 2 root root 4096 Dec 24 13:39 overlay drwxr-xr-x 2 root root 4096 Dec 24 13:39 proc -rwxrwxr-x 1 root root 78 Dec 24 13:39 rdinit drwxr-xr-x 3 root root 4096 Dec 24 13:39 riscv64-unknown-linux-gnu drwxrwxr-x 2 root root 4096 Dec 24 13:39 rom drwxr-xr-x 2 root root 4096 Dec 24 13:39 root drwxr-xr-x 2 root root 4096 Dec 24 13:39 sbin drwxr-xr-x 3 root root 4096 Dec 24 13:39 spec drwxr-xr-x 4 root root 4096 Dec 24 13:39 stress drwxr-xr-x 2 root root 4096 Dec 24 13:39 sys drwxrwxrwt 2 root root 4096 Dec 24 13:39 tmp drwxr-xr-x 9 root root 4096 Aug 14 18:32 usr lrwxrwxrwx 1 root root 4 Dec 24 13:39 var -> /tmp drwxr-xr-x 2 root root 4096 Dec 24 13:39 www tigger@ubuntu:/opt/D1$
解压 rootfs.fex (squashfs 文件格式) 到默认目录 squashfs-root
也可以mount 挂载 squashfs 文件系统:
$sudo mount -o loop,rw /opt/D1/tina_d1_open/out/d1-nezha/image/rootfs.fex /tmp/aaa/
但是是只读的,如果想重新打包,那要先解压,再打包:
https://sleeplessbeastie.eu/2012/05/27/how-to-modify-squashfs-image/ -
回复: 在D1的tina上整上overlayfs
果然在这个文档 D1_Tina_Linux_存储_开发指南.pdf 找到 rootfs_data 了。
在 A100 的 SDK也找到这玩意,
target/allwinner/xxx-a3/base-files/etc/config/fstab
config 'global' option anon_swap '0' option anon_mount '0' option auto_swap '1' option auto_mount '1' option delay_root '5' option check_fs '1' config 'mount' option target '/boot-res' option device '/dev/by-name/boot-res' option options 'ro,sync' option enabled '1' config 'mount' option target '/mnt/UDISK' option device '/dev/by-name/UDISK' option options 'rw,async' option enabled '1' config 'mount' option target '/overlay' option device '/dev/by-name/rootfs_data' option options 'rw,sync' option enabled '1' config 'mount' option target '/mnt/SDCARD' option device '/dev/mmcblk1' option options 'rw,async' option enabled '1' config 'mount' option target '/mnt/SDCARD' option device '/dev/mmcblk1p1' option options 'rw,async' option enabled '1' config 'mount' option target '/mnt/exUDISK' option device '/dev/sda1' option options 'rw,async' option enabled '1' config 'mount' option target '/mnt/exUDISK' option device '/dev/sda' option options 'rw,async' option enabled '1'
./device/config/chips/xxx/configs/a3/linux/sys_partition.fex
;--------------------------------------------------------------------------------------------------- ; 说明: 脚本中的字符串区分大小写,用户可以修改"="后面的数值,但是不要修改前面的字符串 ;--------------------------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------------------------- ; 固件下载参数配置 ;--------------------------------------------------------------------------------------------------- ;*************************************************************************************************** ; mbr的大小, 以Kbyte为单位 ;*************************************************************************************************** [mbr] size = 512 ;*************************************************************************************************** ; 分区配置 ; ; ; partition 定义范例: ; [partition] ; //表示是一个分区 ; name = USERFS2 ; //分区名称 ; size = 16384 ; //分区大小 单位: 扇区.分区表示个数最多2^31 * 512 = 2T ; downloadfile = "123.fex" ; //下载文件的路径和名称,可以使用相对路径,相对是指相对于image.cfg文件所在分区。也可以使用绝对路径 ; keydata = 1 ; //私有数据分区,重新量产数据将不丢失 ; encrypt = 1 ; //采用加密方式烧录,将提供数据加密,但损失烧录速度 ; = ? ; //私有用法 ; verify = 1 ; //要求量产完成后校验是否正确 ; ; 注:1、name唯一, 不允许同名 ; 2、name最大12个字符 ; 3、size = 0, 将创建一个无大小的空分区 ; 4、为了安全和效率考虑,分区大小最好保证为16M字节的整数倍 ;*************************************************************************************************** [partition_start] [partition] name = boot-resource size = 512 downloadfile = "boot-resource.fex" user_type = 0x8000 [partition] name = env size = 1024 downloadfile = "env.fex" user_type = 0x8000 [partition] name = env-redund size = 1024 downloadfile = "env.fex" user_type = 0x8000 [partition] name = boot size = 30720 downloadfile = "boot.fex" user_type = 0x8000 [partition] name = rootfs size = 131072 downloadfile = "rootfs.fex" user_type = 0x8000 [partition] name = rootfs_data ;size = 61440 size = 8192 user_type = 0x8000 [partition] name = private size = 1024 user_type = 0x8000 ; recovery分区说明 ; 如果启用了OTA升级,默认以boot_initramfs.img作为recovery.fex,否则recovery.fex为空 [partition] name = recovery size = 32768 downloadfile = "recovery.fex" user_type = 0x8000 ;[partition] ; name = misc ; size = 1024 ; user_type = 0x8000 [partition] name = UDISK user_type = 0x8100
rootfs_data 只有 size,没有 downloadfile。
-
回复: D1 LicheeRV Dock 移植RTL8723DS驱动
ifconfig -a
是不是有显示 wlan0 和 wlan1?
wlan1 是不是可以作为热点用?
-
回复: 【FAQ】全志D1芯片 如何解决Gstreamer:fb UI旋转(直接修改内核参数)后,sunxifbsink显示异常问题?
gstsunxifbsink.c 没有找到这个文件,请问哪里可以下载呢?
-
回复: [同济课堂问题]编译ncnn时产生cmake报错
CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles". CMAKE_MAKE_PROGRAM is not set You probably need to select a different build tool
CMake Error:CMAKEC COMPILER not set,after EnableLanguage CMake Error:CMAKE_CXX_COMPILER not set,after EnableLanguage
Configuring incomplete,errors occurred!看下这几个环境变量,是不是因为没有设置引起?
-
江湖救急!硬盘少了,换硬盘上面的主板可以解决问题吗?
我有一个3.5寸的硬盘接在硬盘盒里面,然后那个外部供电电压可能太高了,导致把硬盘给烧了,硬盘盒没有烧。
我现在是买了一个新的硬盘,买了一个新的硬盘盒,判断出来的。
我现在把硬盘上面那两块主板交换一下,原来那个硬盘的数据可以读出来吗?
-
回复: 如何生成tina 1.0.1的patchset
前面已经回复过了。
↓
去github.com克隆 Linux5.4.61,然后用 diff 命令比较两个目录,或者用 meld / diffuse 可视化比较工具比较两个目录,你会发现改得亲妈都不认识。
-
回复: 【新人上手】D1哪吒开发板Tina Linux下查看DDR参数、内核版本、uboot版本和系统版本
去github.com克隆 Linux5.4.61,然后你会发现改得亲妈都不认识。
-
回复: [同济课堂问题] 在交叉编译过程中引用了opencv库报错
error adding symbols: file in wrong format
看起来使用了不同指令集的gcc