导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页
    1. 主页
    2. tigger
    3. 帖子
    • 资料
    • 关注 0
    • 粉丝 12
    • 我的积分 9409
    • 主题 93
    • 帖子 432
    • 最佳 29
    • 群组 0

    tigger 发布的帖子

    • 回复: 全志引脚计算器 AllwinnerPin 小工具发布

      有趣,再来个shell版本。

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 回复: 请问麻雀d1s用tina-sdk2.0打开 printk time,内核启动log还是没时间戳显示,如何解决?

      b445d3fe-eb8e-44c0-9c83-e6df9ec514e5-image.png

      c3e1d7e2-a65b-4492-92e0-ec5ee3f5346a-image.png

      R818 正常。

      发布在 MR Series
      tigger
      tigger
    • 回复: 请问T113S3到底有没有CAN总线?有的话,是那些引脚?

      理 论 上 有。

      发布在 MR Series
      tigger
      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
      
      发布在 代码下载问题专区
      tigger
      tigger
    • 回复: R818 tina Linux 运行 mjpg-streamer + usb camera

      D1哪吒开发板也是一模一样的操作。

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 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"
      

      浏览器打开:
      76e8dd6b-b53c-4989-a697-cd93f12a1454-cb505b21cb95342089c483b17d19686.png

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 回复: 收集 "焊"武帝们的杰作

      mmexport1647228831076.jpg

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 回复: 哪吒D1 wifi无法使用

      D1_Tina_Linux_Wi-Fi_开发指南.pdf

      发布在 MR Series
      tigger
      tigger
    • 回复: 简单修改 哪吒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

      发布在 MR Series
      tigger
      tigger
    • 回复: 如果全志出一个DIP封装的芯片。。。

      啊这。。。么大,除了老古董和学生,没人用吧?

      发布在 灌水区
      tigger
      tigger
    • 回复: 有没有哪位大神在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 = <&reg_pio1_8>;
                              vcc-pfo-supply = <&reg_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 = <&reg_3p3v>;*/
                              /*vqmc-supply = <&reg_3p3v>;*/
                              /*vdmc-supply = <&reg_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 = <&reg_3p3v>;*/
                              /* vqmc-supply = <&reg_3p3v>;*/
                              /* vdmc-supply = <&reg_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 = <&reg_3p3v>;*/
                              /* vqmc-supply = <&reg_3p3v>;*/
                              /* vdmc-supply = <&reg_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";
                              };
      
      发布在 MR Series
      tigger
      tigger
    • 回复: 有没有哪位大神在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得重新配置一下.

      发布在 MR Series
      tigger
      tigger
    • 回复: D1 / D1s 可以用的 5.5元的 1280*400 长条形MIPI屏, 未验证

      引脚定义: WTL078401G08-18M接口定义.xls

      芯片手册: OTA7290B_datasheet.pdf

      LCD手册: C078SWW2 R0.pdf

      发布在 MR Series
      tigger
      tigger
    • 回复: D1 / D1s 可以用的 5.5元的 1280*400 长条形MIPI屏, 未验证

      WTL068601G04-12M.jpg

      发布在 MR Series
      tigger
      tigger
    • 回复: 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");
      
      发布在 MR Series
      tigger
      tigger
    • D1 / D1s 可以用的 5.5元的 1280*400 长条形MIPI屏, 未验证

      购买链接: https://item.taobao.com/item.htm?id=669390481038

      未验证
      未验证
      未验证

      发布在 MR Series
      tigger
      tigger
    • 回复: 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

      发布在 Linux
      tigger
      tigger
    • 回复: D1s RTL8723DS 蓝牙起不来,大伙帮我瞅瞅。

      @whycan
      搞A133 碰到一模一样问题,

      CTS悬空了,飞线到GND就好了,应该串口是没有收到握手信号。

      发布在 MR Series
      tigger
      tigger
    • 回复: 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
      $
      
      发布在 MR Series
      tigger
      tigger
    • 回复: 请问怎么让D1的Linux log 显示 CST 时间呢?而不是UTC时间。

      同问 同问 同问

      发布在 MR Series
      tigger
      tigger
    • 回复: 飞凌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(用户可根据实际情况选择具有中断功能的引脚)。

      b23add3b-59cf-4f2e-9f4a-aec7c0027146-image.png

      我们需要的引脚已经确定了(加粗的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

      三、去掉所选引脚原有配置
      从核心板引脚功能复用表格可以看到,选用的引脚原本配置的功能:

      a4242d6b-fd75-49a7-a5a1-be2e4d8cf834-image.png

      sun50iw9p1-pinctrl.dtsi搜索PH5引脚,可以看到ahub_daudio3_pins_a和ahub_daudio3_pins_b是用于音频,在设备树路径使用grep"ahub_daudio3_pins_a" ./ -nr指令可以查到,在sun50iw9p1.dtsi里有调用:

      72b76570-a69d-495f-9a88-d1af9791af03-image.png

      打开sun50iw9p1.dtsi,可以看到在ahub_daudio3节点有调用,将status设置为disabled(默认即为disablded状态)

      01b2806a-aade-40e1-9ecd-3d7388fcbd5f-image.png

      这个设备树里设置的disabled,继续查找该设备树的上级设备树:OKT507-C-Common.dtsi。OKT507-C-Common.dtsi有做开启设置,需要将ahub_daudio3关掉,status= "disabled"。PH5、PH6、PH7、PH8、PH9的占用都解除了。

      6af097b3-db11-4523-b5fb-072a7057cfe0-image.png

      四、配置SPI1
      4.1使能SPI1配置
      搜索SPI1相关内容,在sun50iw9p1.dtsi中可以看到

      ad9c7e16-4be2-4a69-9c66-d66aae93c4fc-image.png

      这个是对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。

      5d60680e-5c02-4fee-8bc6-e3d622fa59f5-image.png

      五、配置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开发板,连接方式如下:

      2cb96832-6f3c-4087-a984-494a4254dab1-image.png

      818d4c2c-88d3-4ba6-8055-7fc925450bf9-image.png

      SPI转CAN的5V主供电可以通过音频芯片正下方的R194和R199上获得,位置如下图:

      416fccd4-dac6-46d0-9637-96c613d6d789-image.png

      发布在 飞凌嵌入式专区
      tigger
      tigger
    • 飞凌T507开发板实现SPI转CAN 全过程

      04609f05-a4a8-4942-bc45-60657a36b334-image.png

      转载:https://blog.csdn.net/m0_46665078/article/details/123041559

      发布在 飞凌嵌入式专区
      tigger
      tigger
    • 回复: d1s 哪吒mq spi 怎麼搞

      @kingz1993
      dts 是怎么配置的呢?

      发布在 MR Series
      tigger
      tigger
    • 回复: 请教Tian2.0sdk下更新kernel和设备树的方法

      在linux下面吗?

      发布在 MR Series
      tigger
      tigger
    • 回复: tplayer是否会支持同时播放3个视频

      同时播放,还是顺序播放?

      发布在 MR Series
      tigger
      tigger
    • 盲生,你发现了这个EDA的华点

      -b4693e288262f21.png

      -cb0978020ad9408.jpg

      发布在 灌水区
      tigger
      tigger
    • 回复: 围观 D1s EVB

      @kingz1993
      好像是,昨天q群看到一个,你看是不是

      https://gitee.com/GloomyGhost/d1s-melis

      发布在 MR Series
      tigger
      tigger
    • 回复: d1s 哪吒mq spi 怎麼搞

      多秀点log看看

      发布在 MR Series
      tigger
      tigger
    • 回复: 新手第一次调试TINA的mipi-dsi 遇到一些问题,恳请大佬们有空指导!万分感谢

      看起来和哪吒自带的显示屏是同一个驱动芯片,那这样把硬件做好就行,勾选同一个驱动就可以了。

      发布在 MR Series
      tigger
      tigger
    • 回复: 请问 F1C200s 可以同时输出到LCD 和 TV 上吗?

      @yuzukitsuru 在 请问 F1C200s 可以同时输出到LCD 和 TV 上吗? 中说:

      我记得Arduino可以模拟CVBS,可以考虑软件模拟一个(?

      好像是VGA 吧?CVBS也能模拟吗?

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 回复: 音视频播放器

      基于控制台版本 tplayerdemo 改一个出来

      发布在 MR Series
      tigger
      tigger
    • 回复: 关于我稀奇古怪的操作导致D1自带的WIFI模组挂菜了,求购大佬们搞一片WIFI模组(XR819)

      不应该是XR829吗?

      发布在 MR Series
      tigger
      tigger
    • 回复: 【FAQ】全志R328如何进入monitor模式

      这是配网模式吧,支持什么协议呢?支持哪些app呢?

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 回复: 运行hello_word遇到GLIBC_2.29 not defined in file libc.so.6改怎么办

      是不是用哪吒tina的SDK呢?如果用里面同一个gcc编译的话,libc.so.6 应该是 不会出这个错误提示的。

      发布在 MR Series
      tigger
      tigger
    • 回复: 全新 D1 SDK v2.0 开放下载了

      @liushijia1
      网络出问题了,或者本地硬盘满了?

      试一试重新来过。

      发布在 代码下载问题专区
      tigger
      tigger
    • 回复: 【DIY教程】D1的双屏异显第一弹来啦!D1同时支持两个屏幕,一共做UI交互,一边个播放视频

      感谢楼主,固件在哪吒上面可以用,但是 tplayerdemo 的声音怎么从HDMI显示器播放呢?

      发布在 MR Series
      tigger
      tigger
    • 回复: SD卡烧录系统后,不能启动

      @gkhan

      0e653690-f5e1-4c4d-b53e-f753a5649ea9-image.png

      这里能看到TF卡多个分区吗?

      发布在 MR Series
      tigger
      tigger
    • 回复: A133 BOARD_HAS_SECURE_OS

      @gworld
      和 LCD 没有关系, 我试过 LVDS 和 HV RGB 都是可以用的:

      0d47cb78-83d3-421d-ab13-4ff56ed2d770-8C7ACC575C25E94CE8F952ABE34B937A.jpg

      f7bfd98b-3303-4dc4-bb6a-f01c496b4597-C0DF872D38B33161FA1DDECB2076373D.jpg

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 回复: 搭建了一个 Tina 的 opkg 仓库,软件包逐渐完善中

      very有趣! 是放到自己管理的 webserver上吗?

      发布在 MR Series
      tigger
      tigger
    • 回复: 如果我想把某个linux系统移植到哪吒板上需要做些啥?

      哪吒跑的就是Linux

      发布在 MR Series
      tigger
      tigger
    • 回复: 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还是不行,算了,洗洗睡吧。

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 回复: 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:/#
      
      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 回复: 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:/#
      
      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 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:/#
      
      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 回复: 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
      

      这是我的启动日志,你对比看看。

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 回复: A133 BOARD_HAS_SECURE_OS

      533e491d-6c6a-48ca-b7b1-325f08cd1e6e-image.png

      BOARD_HAS_SECURE_OS ?= false

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 回复: A133 BOARD_HAS_SECURE_OS

      我的A133 35秒启动到桌面

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 账户密码配置文件是公司登陆服务器签名编译服务器的人持有,其他同事的人没有持有这个文件编译的时候编译会出问题

      各位做secureboot的时候,就是如何考虑下面的问题:账户密码配置文件是公司登陆服务器签名编译服务器的人持有,其他同事的人没有持有这个文件编译的时候编译会出问题。就算做出usr版本是签名版本的固件,usr-debug是非签名版本的固件,发给客户都是usr版本签名版本的固件,客户那边功能出了问题,应用层的人需要提示用usr-debug版本去定位问题不好定位,因为已经烧录了签名版本的固件,应用层的人没有持有配置文件不好调试设备会起不来。

      发布在 灌水区
      tigger
      tigger
    • 请问vmware虚拟机网卡配置是NAT模式共享主机共享IP,局域网其他电脑怎么连接这个虚拟机呢?

      请问vmware虚拟机网卡配置是NAT模式共享主机共享IP,局域网其他电脑怎么连接这个虚拟机呢?

      发布在 Linux
      tigger
      tigger
    • 回复: 哪吒板上用display显示yuv格式数据直接蓝屏

      具体是怎么操作的呢?

      发布在 MR Series
      tigger
      tigger
    • 回复: 第一次编译A133 Android SDK,请问这是什么问题呢?

      8d9158e3-882e-40fc-97b8-416ac1944fb1-image.png

      居然启动成功了! ^_^

      发布在 编译和烧写问题专区
      tigger
      tigger
    • 回复: 第一次编译A133 Android SDK,请问这是什么问题呢?

      d2d508e1-8265-4e4e-a7a8-9abfeecb7a7d-35c5bfa31f1d8a38196066bad756c2e.png

      烧录试一试。

      发布在 编译和烧写问题专区
      tigger
      tigger
    • 回复: 第一次编译A133 Android SDK,请问这是什么问题呢?

      cc622327-f4f5-40db-975e-953228a87826-4bdad3fda99408d6d0b90f23dcc4022.png

      这次居然成功了。

      发布在 编译和烧写问题专区
      tigger
      tigger
    • 回复: 第一次编译A133 Android SDK,请问这是什么问题呢?

      99b9aa82-c98b-4c3c-a9b5-2adc9e1a6b6d-53a60c0a8f6b507cc84abf4789b1d3a.png

      果然内存占用有点感人

      发布在 编译和烧写问题专区
      tigger
      tigger
    • 回复: 第一次编译A133 Android SDK,请问这是什么问题呢?

      https://github.com/GloDroid/glodroid_manifest/issues/21

      https://dev.t-firefly.com/thread-104483-1-1.html

      搜了几个网页,都说编译的电脑内存不够引起, 那再重新编译一次试一试。

      发布在 编译和烧写问题专区
      tigger
      tigger
    • 回复: 第一次编译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$
      
      发布在 编译和烧写问题专区
      tigger
      tigger
    • 回复: 第一次编译A133 Android SDK,请问这是什么问题呢?

      8427a44a-4ba2-4fc6-8a87-49213f0f198e-XW_9T`(5E5{MI3%ZIL%46~A.png

      发布在 编译和烧写问题专区
      tigger
      tigger
    • 第一次编译A133 Android SDK,请问这是什么问题呢?

      058b0530-300a-48b8-bdfd-84031308b8bf-image.png

      发布在 编译和烧写问题专区
      tigger
      tigger
    • 请问 PhoenixCard 烧卡软件的 【量产卡】与 【启动卡】菜单有什么区别呢?

      d75e7509-2568-4d59-b80a-39b03bd5527a-image.png

      发布在 编译和烧写问题专区
      tigger
      tigger
    • 回复: 在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/

      发布在 MR Series
      tigger
      tigger
    • 回复: 在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。

      发布在 MR Series
      tigger
      tigger
    • 回复: 在D1的tina上整上overlayfs

      @tevet
      谢谢楼主,原来如此,我明天试一试。

      发布在 MR Series
      tigger
      tigger
    • 回复: D1 LicheeRV Dock 移植RTL8723DS驱动

      @yuzukitsuru
      那岂不是可以蹭邻居家wifi给全村(家)人用😇😇😇

      发布在 MR Series
      tigger
      tigger
    • 回复: D1 LicheeRV Dock 移植RTL8723DS驱动

      ifconfig -a

      是不是有显示 wlan0 和 wlan1?

      wlan1 是不是可以作为热点用?

      发布在 MR Series
      tigger
      tigger
    • 请问TCON的TTL时序接口是指什么?HV是RGB,CPU是i80。

      mmexport1642694462926.png

      mmexport1642694466364.png

      发布在 MR Series
      tigger
      tigger
    • 回复: 搞嵌入式Linux开发 感觉就很离谱!

      啊!这,学到秃顶都学不完。

      发布在 MR Series
      tigger
      tigger
    • 回复: 【FAQ】全志D1芯片 如何解决Gstreamer:fb UI旋转(直接修改内核参数)后,sunxifbsink显示异常问题?

      @q1215200171

      gstsunxifbsink.c 没有找到这个文件,请问哪里可以下载呢?

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 回复: 请问这个判断BGA引脚有无虚焊的方法,靠谱吗?

      靠谱,我就是这么干的。

      发布在 灌水区
      tigger
      tigger
    • 回复: 分享一款二次元PCB设计

      有灵魂的PCB!

      发布在 灌水区
      tigger
      tigger
    • 回复: 请问D1可以驱动EDP屏吗?

      @l308622726
      点赞!这个可以有。

      发布在 MR Series
      tigger
      tigger
    • 回复: F133 SD/emmc 启动问题,能烧录但启动不了。

      8bit 还是 4bit模式?

      发布在 MR Series
      tigger
      tigger
    • 回复: XR806是否可用类似SDIO接口与CPU连接,并作为Linux的一个外设网卡设备?

      @langsir
      那用SPI吧

      发布在 Wireless & Analog Series
      tigger
      tigger
    • 回复: SIPEED Lichee RV DOCK 全志D1开发板

      @readme0
      HDMI有反应了吗?

      发布在 MR Series
      tigger
      tigger
    • 回复: 【芯片型号变更公告】D1芯片型号变更为D1-H

      @jmhh247
      管得真宽😂

      发布在 公告
      tigger
      tigger
    • 拆拆苹果手机专用U盘

      -2d564432ddf4a2f.jpg -5ec990666d871bec.jpg

      发布在 灌水区
      tigger
      tigger
    • 回复: D1哪吒开发板能跑chrome浏览器吗

      8bit的avr都能跑linux,只是要好几天才能到shell,D1跑chome肯定没有问题,只是可能会PPT而已。

      发布在 MR Series
      tigger
      tigger
    • 回复: 请教各位大老,执行tplayerdemo时报错,只有声音,没有视频

      首先确认声卡是否正常?

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 回复: 只要 1499元, V3s IAR 开发包带回家,还送开发板。

      @xiaowenge

      e67e70a4-0da4-4337-b0df-aa6ce6e8550b-image.png

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 回复: 只要 1499元, V3s IAR 开发包带回家,还送开发板。

      56dab40c-1368-4a4c-9685-06caefd91a08-image.png

      8ac7c31f-31b1-45d5-957f-f121f4b36063-image.png

      a7ee978f-e003-4d97-90b1-48535d5814b8-image.png

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 只要 1499元, V3s IAR 开发包带回家,还送开发板。

      https://item.taobao.com/item.htm?id=665140514348

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 请问D1可以驱动EDP屏吗?

      请问D1可以驱动EDP屏吗?

      发布在 MR Series
      tigger
      tigger
    • 回复: XR806是否可用类似SDIO接口与CPU连接,并作为Linux的一个外设网卡设备?

      应该要固件支持才行,不知官方有没有释放对应的固件或者源码?

      发布在 Wireless & Analog Series
      tigger
      tigger
    • 回复: [同济课堂问题]编译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!

      看下这几个环境变量,是不是因为没有设置引起?

      发布在 MR Series
      tigger
      tigger
    • 回复: A133 phy正常了,gmac无法识别phy,出现phyid了 这是啥情况

      phy id怎么出现的?

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 江湖救急!硬盘少了,换硬盘上面的主板可以解决问题吗?

      我有一个3.5寸的硬盘接在硬盘盒里面,然后那个外部供电电压可能太高了,导致把硬盘给烧了,硬盘盒没有烧。

      我现在是买了一个新的硬盘,买了一个新的硬盘盒,判断出来的。

      我现在把硬盘上面那两块主板交换一下,原来那个硬盘的数据可以读出来吗?

      发布在 灌水区
      tigger
      tigger
    • 回复: 如何生成tina 1.0.1的patchset

      前面已经回复过了。

      ↓

      去github.com克隆 Linux5.4.61,然后用 diff 命令比较两个目录,或者用 meld / diffuse 可视化比较工具比较两个目录,你会发现改得亲妈都不认识。

      发布在 MR Series
      tigger
      tigger
    • 回复: 【新人上手】D1哪吒开发板Tina Linux下查看DDR参数、内核版本、uboot版本和系统版本

      @juggernaut

      去github.com克隆 Linux5.4.61,然后你会发现改得亲妈都不认识。

      发布在 MR Series
      tigger
      tigger
    • 回复: [同济课堂问题] 在交叉编译过程中引用了opencv库报错

      error adding symbols: file in wrong format

      看起来使用了不同指令集的gcc

      发布在 MR Series
      tigger
      tigger
    • 回复: SDK目录/F1C200s/F1C200S Melis

      我的也是空空的,找对接的业务员吧。

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 回复: 带WiFi的【开源D1s开发板】来了,Xassette-Asterisk升级完成

      @sdtee 这个芯片带蓝牙吗?

      发布在 MR Series
      tigger
      tigger
    • 回复: f133 点LVDS屏做有线网络广告机 播放网络流 可行吗

      没 有 问 题 。

      发布在 MR Series
      tigger
      tigger
    • 回复: 请问荔枝派zero V3s 怎么修改 TF卡的频率?

      487befff-58ce-4d94-9c07-369e9c2ba2d1-image.png

      开机BROM自举 SPI CLK 也是 400 kHz

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 回复: D1S需要动态调压吗

      如果市电供电,且对功耗没有要求,可以不用考虑。

      发布在 MR Series
      tigger
      tigger
    • 回复: 请问荔枝派zero V3s 怎么修改 TF卡的频率?

      改成 50M,

      逻辑分析仪测量也是25M,

      是逻辑分析仪的问题,还是驱动限制了呢?

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 回复: 请问荔枝派zero V3s 怎么修改 TF卡的频率?

      e88cc0cc-e6b1-4130-910b-81f5df95977b-image.png

      6835e1b5-75c4-4664-923c-c4b1a0b7365e-0a2d9f0b419a5173d79485c16c34301.png

      完全 OK

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 回复: 请问荔枝派zero V3s 怎么修改 TF卡的频率?

      参考: http://lists.infradead.org/pipermail/linux-arm-kernel/2017-September/533627.html

      修改dts文件即可:

      92f45864-15eb-4302-930b-9c94bc1c94a9-9b00bd05d3f1fcf2620840f70c93875.png

      cac727b9-752c-44ea-aefc-33c31b6823b8-6be8c6df9807d100fe9303506c98b94.png

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 回复: 请问荔枝派zero V3s 怎么修改 TF卡的频率?

      cb23e555-a586-47af-9b87-d2783159b90a-image.png

      Linux跑起来后是 25Mhz

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 回复: 请问荔枝派zero V3s 怎么修改 TF卡的频率?

      f3ac7d4f-b447-425f-886a-a9707e406bd1-image.png

      逻辑分析仪安排上了,开机BROM读TF卡用低速 400khz。

      发布在 其它全志芯片讨论区
      tigger
      tigger
    • 1
    • 2
    • 3
    • 4
    • 5
    • 2 / 5