@whycanservice2 感谢您的回复。这似乎已经修复了错误。我不再收到错误,我可以使用“cat /sys/kernel/debug/pinctrl/pio/pinmux-pins”来查看引脚是否已分配给 I2S。
但是我仍然无法通过 I2S 播放音频。我正在使用 tplayerdemo 播放带音频的视频。我会继续调查,但有什么想法吗?
此外,是否有资源或文档可以让我稍后自己查找此信息?我查看了 Tina SDK 手册,但似乎找不到此信息。
非常感谢您的帮助!
@whycanservice2 感谢您的回复。这似乎已经修复了错误。我不再收到错误,我可以使用“cat /sys/kernel/debug/pinctrl/pio/pinmux-pins”来查看引脚是否已分配给 I2S。
但是我仍然无法通过 I2S 播放音频。我正在使用 tplayerdemo 播放带音频的视频。我会继续调查,但有什么想法吗?
此外,是否有资源或文档可以让我稍后自己查找此信息?我查看了 Tina SDK 手册,但似乎找不到此信息。
非常感谢您的帮助!
我找到了解决方案:
在 gst1-omx Makefile(位于 t113-sdk/package/multimedia/gst1-omx)中,您需要将 t113 添加到 TARGET_BOARD_PLATFORM
之前:
ifeq ($(TARGET_BOARD_PLATFORM),$(filter $(TARGET_BOARD_PLATFORM), r16 r311 r58 r40 g102 r11 r7 r528))
OMX_COMPILE_TOOL_CHAIN = arm-openwrt-linux
endif
之后:
ifeq ($(TARGET_BOARD_PLATFORM),$(filter $(TARGET_BOARD_PLATFORM), r16 r311 r58 r40 g102 r11 r7 r528 t113))
OMX_COMPILE_TOOL_CHAIN = arm-openwrt-linux
endif
我们正在寻求开发一款 1080p 60hz 视频/媒体播放设备。我们需要一个视频播放系统,允许在播放另一个视频时以不可见的方式预加载一个视频,然后在这些视频之间无缝切换。
我们还需要视频无缝循环。
应用程序的大部分高级逻辑已经实现。然而,我们在视频播放的上述方面遇到了困难。
使用 Tina Linux SDK,我尝试改造 tplayer 库以实现上述目标,但没有成功。
我们愿意聘请某人开发或修改 T113-S3 芯片上的视频播放系统。
谢谢,
Daz
@zoenggit Many thanks for your suggestion and link. Using it, I was able to figure out how to edit the makefile to get spidev to correct build.
I created folder tina-d1-h/package/lang/python3-spidev, and in it I create Makefile. Below is the Makefile:
# Copyright (C) 2017 Onion Corporation
#
# Author: Lazar Demin <lazar@onion.io>
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=python-spidev
PKG_VERSION:=4.0.1
PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=HEAD
PKG_SOURCE_URL:=https://github.com/OnionIoT/python-spidev.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE).tar.gz
PKG_BUILD_DIR:=$(COMPILE_DIR)/$(PKG_NAME)
include $(BUILD_DIR)/package.mk
# python module package
define Package/python3-spidev
SECTION:=lang
CATEGORY:=Languages
SUBMENU:=Python
TITLE:=Python3 module with object that implements SPI transactions
DEPENDS:=+python3
endef
define Package/python3-spidev/description
Python3 module with object that implements SPI transactions
endef
TARGET_CFLAGS += $(FPIC)
TARGET_LIBS += -l m
PYTHON3_VERSION = 3.5
TARGET_PYTHON3_INC += "-I$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION)/"
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) wipe
$(MAKE) -C $(PKG_BUILD_DIR) \
CC="$(TARGET_CC)" \
CFLAGS="$(TARGET_CFLAGS)" \
LDFLAGS="$(TARGET_LDFLAGS)" \
LIB="$(TARGET_LIBS)" \
PYTHON_VERSION="$(PYTHON3_VERSION)" \
PYINC="$(TARGET_PYTHON3_INC)"
endef
define Package/python3-spidev/install
# install the python module
$(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON3_VERSION)
$(CP) $(PKG_BUILD_DIR)/lib/python$(PYTHON3_VERSION)/spidev.so $(1)/usr/lib/python$(PYTHON3_VERSION)
endef
$(eval $(call BuildPackage,python3-spidev))
I then included the package in "make menuconfig". Then I did make, and it seems that I do now have the spidev package!
Many thanks for your assistance!
@zoenggit Many thanks for your suggestion and link. Using it, I was able to figure out how to edit the makefile to get spidev to correct build.
I created folder tina-d1-h/package/lang/python3-spidev, and in it I create Makefile. Below is the Makefile:
# Copyright (C) 2017 Onion Corporation
#
# Author: Lazar Demin <lazar@onion.io>
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=python-spidev
PKG_VERSION:=4.0.1
PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=HEAD
PKG_SOURCE_URL:=https://github.com/OnionIoT/python-spidev.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE).tar.gz
PKG_BUILD_DIR:=$(COMPILE_DIR)/$(PKG_NAME)
include $(BUILD_DIR)/package.mk
# python module package
define Package/python3-spidev
SECTION:=lang
CATEGORY:=Languages
SUBMENU:=Python
TITLE:=Python3 module with object that implements SPI transactions
DEPENDS:=+python3
endef
define Package/python3-spidev/description
Python3 module with object that implements SPI transactions
endef
TARGET_CFLAGS += $(FPIC)
TARGET_LIBS += -l m
PYTHON3_VERSION = 3.5
TARGET_PYTHON3_INC += "-I$(STAGING_DIR)/usr/include/python$(PYTHON3_VERSION)/"
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) wipe
$(MAKE) -C $(PKG_BUILD_DIR) \
CC="$(TARGET_CC)" \
CFLAGS="$(TARGET_CFLAGS)" \
LDFLAGS="$(TARGET_LDFLAGS)" \
LIB="$(TARGET_LIBS)" \
PYTHON_VERSION="$(PYTHON3_VERSION)" \
PYINC="$(TARGET_PYTHON3_INC)"
endef
define Package/python3-spidev/install
# install the python module
$(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON3_VERSION)
$(CP) $(PKG_BUILD_DIR)/lib/python$(PYTHON3_VERSION)/spidev.so $(1)/usr/lib/python$(PYTHON3_VERSION)
endef
$(eval $(call BuildPackage,python3-spidev))
I then included the package in "make menuconfig". Then I did make, and it seems that I do now have the spidev package!
Many thanks for your assistance!
@zoenggit appreciate the response and link. I'm using the Tina Linux 2.0 SDK, which is based on OpenWRT. I'm using the Tina Linux build downloaded from this forum.
I believe the packaging system is a bit different to buildroot. I did attempt to include the spidev package in the build system, but couldn't figure how to make it work.
Do you have any experience or advice in how to get it to work?
大家好,
在 Tina Linux 中,我尝试安装适用于 Python 3.5 的 spidev Python 包。它不包含在 SDK make menuconfig 中
我一直在尝试交叉编译,但到目前为止还没有成功。
有人可以提供有关如何安装 Python 包的建议或说明吗?
谢谢!
Hi all,
In Tina Linux, I'm trying to install the spidev Python package for Python 3.5. It's not included in the SDK make menuconfig
I've been trying to cross compile, but so far I've had no success.
Can anyone provide advice or instructions on how to install a Python package.
Thank you!
谢谢你们的帮助。附件中的文档和链接非常有用。
我用示波器检查了引脚,可以看到 I2S 正在输出。在咨询了 Lontium 后,我终于能够将正确的 I2S 格式输入芯片中。
作为参考,该芯片是 Lontium LT9611UXC。
以下是我的完整 dts:
/*
* Allwinner Technology CO., Ltd.
*/
/dts-v1/;
/* optee used 7MB: SHM 2M: OS: 1M: TA:4M*/
/*/memreserve/ 0x41900000 0x00100000;*/
/* DSP used 1MB */
/* /memreserve/ 0x42000000 0x00100000; */
#include "sun8iw20p1.dtsi"
/{
model = "sun8iw20";
compatible = "allwinner,r528", "arm,sun8iw20p1";
reg_vdd_cpu: vdd-cpu {
compatible = "pwm-regulator";
pwms = <&pwm 3 5000 0>;
regulator-name = "vdd_cpu";
regulator-min-microvolt = <810000>;
regulator-max-microvolt = <1160000>;
regulator-settling-time-us = <4000>;
regulator-always-on;
regulator-boot-on;
status = "okay";
};
reg_usb1_vbus: usb1-vbus {
compatible = "regulator-fixed";
regulator-name = "usb1-vbus";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
regulator-enable-ramp-delay = <1000>;
enable-active-high;
};
reg_vdd_3v3: vdd_3v3 {
compatible = "regulator-fixed";
regulator-name = "vdd-3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
enable-active-high;
};
can0: can@0x0 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "allwinner,sun8i-can";
device_type = "can0";
id = <0>;
status = "disabled";
};
can1: can@0x1 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "allwinner,sun8i-can";
device_type = "can1";
id = <1>;
status = "disabled";
};
gpio-keys {
compatible = "gpio-keys";
status = "okay";
vol-down-key {
gpios = <&pio PE 1 GPIO_ACTIVE_LOW>;
linux,code = <114>;
label = "user key";
debounce-interval = <10>;
wakeup-source = <0x1>;
};
};
};
&cpu0 {
cpu-supply = <®_vdd_cpu>;
};
&pio {
sdc0_pins_a: sdc0@0 {
allwinner,pins = "PF0", "PF1", "PF2",
"PF3", "PF4", "PF5";
allwinner,function = "sdc0";
allwinner,muxsel = <2>;
allwinner,drive = <3>;
allwinner,pull = <1>;
pins = "PF0", "PF1", "PF2",
"PF3", "PF4", "PF5";
function = "sdc0";
drive-strength = <30>;
bias-pull-up;
power-source = <3300>;
};
sdc0_pins_b: sdc0@1 {
pins = "PF0", "PF1", "PF2",
"PF3", "PF4", "PF5";
function = "sdc0";
drive-strength = <30>;
bias-pull-up;
power-source = <1800>;
};
sdc0_pins_c: sdc0@2 {
pins = "PF0", "PF1", "PF2",
"PF3", "PF4", "PF5";
function = "gpio_in";
};
/* TODO: add jtag pin */
sdc0_pins_d: sdc0@3 {
pins = "PF2", "PF4";
function = "uart0";
drive-strength = <10>;
bias-pull-up;
};
sdc0_pins_e: sdc0@4 {
pins = "PF0", "PF1", "PF3",
"PF5";
function = "jtag";
drive-strength = <10>;
bias-pull-up;
};
sdc1_pins_a: sdc1@0 {
pins = "PG0", "PG1", "PG2",
"PG3", "PG4", "PG5";
function = "sdc1";
drive-strength = <30>;
bias-pull-up;
};
sdc1_pins_b: sdc1@1 {
pins = "PG0", "PG1", "PG2",
"PG3", "PG4", "PG5";
function = "sdc1";
};
sdc2_pins_a: sdc2@0 {
allwinner,pins = "PC2", "PC3", "PC4",
"PC5", "PC6", "PC7";
allwinner,function = "sdc2";
allwinner,muxsel = <3>;
allwinner,drive = <3>;
allwinner,pull = <1>;
pins = "PC2", "PC3", "PC4",
"PC5", "PC6", "PC7";
function = "sdc2";
drive-strength = <30>;
bias-pull-up;
};
sdc2_pins_b: sdc2@1 {
pins = "PC2", "PC3", "PC4",
"PC5", "PC6", "PC7";
function = "gpio_in";
};
wlan_pins_a:wlan@0 {
pins = "PG11";
function = "clk_fanout1";
};
uart0_pins_a: uart0_pins@0 { /* For EVB1 board */
pins = "PF2", "PF4";
function = "uart0";
drive-strength = <10>;
bias-pull-up;
};
uart0_pins_b: uart0_pins@1 { /* For EVB1 board */
pins = "PF2", "PF4";
function = "gpio_in";
};
uart1_pins_a: uart1_pins@0 { /* For EVB1 board */
pins = "PG6", "PG7", "PG8", "PG9";
function = "uart1";
drive-strength = <10>;
bias-pull-up;
};
uart1_pins_b: uart1_pins { /* For EVB1 board */
pins = "PG6", "PG7", "PG8", "PG9";
function = "gpio_in";
};
uart2_pins_a: uart2_pins@0 { /* For EVB1 board */
pins = "PC0", "PC1";
function = "uart2";
drive-strength = <10>;
bias-pull-up;
};
uart2_pins_b: uart2_pins@1 { /* For EVB1 board */
pins = "PC0", "PC1";
function = "gpio_in";
};
uart3_pins_a: uart3_pins@0 { /* For t113_evb */
pins = "PG8", "PG9";
function = "uart3";
drive-strength = <10>;
bias-pull-up;
};
uart4_pins_a: uart4_pins@0 {
pins = "PE4", "PE5";
function = "uart4";
drive-strength = <10>;
bias-pull-up;
};
uart4_pins_b: uart4_pins@1 {
pins = "PE4", "PE5";
function = "gpio_in";
};
uart5_pins_a: uart5_pins@0 {
pins = "PE6", "PE7";
function = "uart5";
drive-strength = <10>;
bias-pull-up;
};
uart5_pins_b: uart5_pins@1 {
pins = "PE6", "PE7";
function = "gpio_in";
};
twi1_pins_a: twi1@0 {
pins = "PE14", "PE15";
function = "twi1";
drive-strength = <10>;
};
twi1_pins_b: twi1@1 {
pins = "PE14", "PE15";
function = "gpio_in";
};
twi2_pins_a: twi2@0 {
pins = "PE12", "PE13";
function = "twi2";
drive-strength = <10>;
};
twi2_pins_b: twi2@1 {
pins = "PE12", "PE13";
function = "gpio_in";
};
twi3_pins_a: twi3@0 {
pins = "PB6", "PB7";
function = "twi3";
drive-strength = <10>;
};
twi3_pins_b: twi3@1 {
pins = "PB6", "PB7";
function = "gpio_in";
};
s_cir0_pins_a: s_cir0@0 {
pins = "PB1";
function = "ir";
drive-strength = <10>;
bias-pull-up;
};
s_cir0_pins_b: s_cir0@1 {
pins = "PB1";
function = "gpio_in";
};
ir1_pins_a: ir1@0 {
pins = "PB0";
function = "ir";
drive-strength = <10>;
bias-pull-up;
};
ir1_pins_b: ir1@1 {
pins = "PB0";
function = "gpio_in";
};
dmic_pins_a: dmic@0 {
/* DMIC_PIN: CLK, DATA0, DATA1, DATA2, DATA3*/
pins = "PB12", "PB11", "PB10", "PE14", "PB8";
function = "dmic";
drive-strength = <20>;
bias-disable;
};
dmic_pins_b: dmic@1 {
pins = "PB12", "PB11", "PB10", "PE14", "PB8";
allwinner,function = "io_disabled";
drive-strength = <20>;
bias-disable;
};
daudio0_pins_a: daudio0@0 {
pins = "PB7", "PB5", "PB6", "PB4";
allwinner,muxsel = <3>;
function = "i2s2";
drive-strength = <20>;
bias-disable;
};
daudio0_pins_b: daudio0_sleep@0 {
pins = "PB7", "PB6", "PB5", "PB4";
allwinner,muxsel = <3>;
function = "io_disabled";
drive-strength = <20>;
bias-disable;
};
daudio2_pins_a: daudio2@0 {
/* I2S_PIN: MCLK, BCLK, LRCK */
pins = "PB7", "PB5", "PB6";
function = "i2s2";
drive-strength = <20>;
bias-disable;
};
daudio2_pins_b: daudio2@1 {
/* I2S_PIN: DOUT0 */
pins = "PB4";
function = "i2s2_dout";
drive-strength = <20>;
bias-disable;
};
daudio2_pins_c: daudio2@2 {
/* I2S_PIN: DIN0 */
pins = "PB7", "PB5", "PB6", "PB4";
function = "io_disabled";
drive-strength = <20>;
bias-disable;
};
spdif_pins_a: spdif@0 {
/* SPDIF_PIN: SPDIF_OUT */
pins = "PG18";
function = "spdif";
drive-strength = <20>;
bias-disable;
};
spdif_pins_b: spdif_sleep@0 {
pins = "PG18";
function = "io_disabled";
drive-strength = <20>;
bias-disable;
};
gmac0_pins_a: gmac@0 {
allwinner,pins = "PG0", "PG1", "PG2", "PG3", "PG4",
"PG5", "PG12", "PG13", "PG14", "PG15";
allwinner,function = "gmac0";
allwinner,muxsel = <4>;
allwinner,drive = <1>;
allwinner,pull = <0>;
};
gmac0_pins_b: gmac@1 {
allwinner,pins = "PG0", "PG1", "PG2", "PG3", "PG4",
"PG5", "PG12", "PG13", "PG14", "PG15";
allwinner,function = "gpio_in";
allwinner,muxsel = <0>;
allwinner,drive = <1>;
allwinner,pull = <0>;
};
spi0_pins_a: spi0@0 {
pins = "PC2", "PC4", "PC5","PC7", "PC6"; /*clk mosi miso hold wp*/
function = "spi0";
drive-strength = <10>;
};
spi0_pins_b: spi0@1 {
pins = "PC3";
function = "spi0";
drive-strength = <10>;
bias-pull-up; /* only CS should be pulled up */
};
spi0_pins_c: spi0@2 {
pins = "PC2", "PC3", "PC4", "PC5","PC6", "PC7";
function = "gpio_in";
drive-strength = <10>;
};
spi1_pins_a: spi1@0 {
pins = "PB11", "PB10", "PB9","PB8", "PB0"; /*clk mosi miso hold wp*/
function = "spi1";
drive-strength = <10>;
};
spi1_pins_b: spi1@1 {
pins = "PB12";
function = "spi1";
drive-strength = <10>;
bias-pull-up; // only CS should be pulled up
};
spi1_pins_c: spi1@2 {
allwinner,pins = "PB0", "PB8", "PB9", "PB10","PB11", "PB12";
allwinner,function = "gpio_in";
allwinner,muxsel = <0>;
drive-strength = <10>;
};
pwm2_pin_a: pwm2@0 {
pins = "PE8";
function = "pwm2";
drive-strength = <10>;
bias-pull-up;
};
pwm2_pin_b: pwm2@1 {
pins = "PE8";
function = "gpio_in";
};
pwm3_pin_a: pwm3@0 {
pins = "PB0";
function = "pwm3";
drive-strength = <10>;
bias-pull-up;
};
pwm3_pin_b: pwm3@1 {
pins = "PB0";
function = "gpio_in";
};
dsi4lane_pins_a: dsi4lane@0 {
allwinner,pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9";
allwinner,pname = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9";
allwinner,function = "dsi4lane";
allwinner,muxsel = <4>;
allwinner,drive = <3>;
allwinner,pull = <0>;
};
dsi4lane_pins_b: dsi4lane@1 {
allwinner,pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9";
allwinner,pname = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9";
allwinner,function = "dsi4lane_suspend";
allwinner,muxsel = <7>;
allwinner,drive = <1>;
allwinner,pull = <0>;
};
};
&uart0 {
status = "disabled";
};
&uart1 {
status = "disabled";
};
&uart2 {
status = "disabled";
};
&uart3 {
status = "disabled";
};
&uart4 {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&uart4_pins_a>;
pinctrl-1 = <&uart4_pins_b>;
status = "okay";
};
&uart5 {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&uart5_pins_a>;
pinctrl-1 = <&uart5_pins_b>;
status = "okay";
};
&sdc2 {
non-removable;
bus-width = <4>;
mmc-ddr-1_8v;
mmc-hs200-1_8v;
no-sdio;
no-sd;
ctl-spec-caps = <0x308>;
cap-mmc-highspeed;
sunxi-power-save-mode;
sunxi-dis-signal-vol-sw;
mmc-bootpart-noacc;
max-frequency = <150000000>;
/*vmmc-supply = <®_dcdc1>;*/
/*emmc io vol 3.3v*/
/*vqmmc-supply = <®_aldo1>;*/
/*emmc io vol 1.8v*/
/*vqmmc-supply = <®_eldo1>;*/
status = "disabled";
};
&sdc0 {
bus-width = <4>;
cd-gpios = <&pio PF 6 (GPIO_ACTIVE_LOW | GPIO_PULL_DOWN)>;
/*non-removable;*/
broken-cd;
/*cd-inverted*/
/*data3-detect;*/
/*card-pwr-gpios = <&pio PH 14 1 1 2 0xffffffff>;*/
/*cd-used-24M;*/
cap-sd-highspeed;
/*sd-uhs-sdr50;*/
/*sd-uhs-ddr50;*/
/*sd-uhs-sdr104;*/
no-sdio;
no-mmc;
sunxi-power-save-mode;
/*sunxi-dis-signal-vol-sw;*/
max-frequency = <150000000>;
ctl-spec-caps = <0x8>;
/*vmmc-supply = <®_dcdc1>;*/
/*vqmmc33sw-supply = <®_dcdc1>;*/
/*vdmmc33sw-supply = <®_dcdc1>;*/
/*vqmmc18sw-supply = <®_eldo1>;*/
/*vdmmc18sw-supply = <®_eldo1>;*/
status = "okay";
};
&sdc1 {
bus-width = <4>;
no-mmc;
no-sd;
cap-sd-highspeed;
/*sd-uhs-sdr12*/
/*sd-uhs-sdr25;*/
/*sd-uhs-sdr50;*/
/*sd-uhs-ddr50;*/
/*sd-uhs-sdr104;*/
/*sunxi-power-save-mode;*/
/*sunxi-dis-signal-vol-sw;*/
cap-sdio-irq;
keep-power-in-suspend;
ignore-pm-notify;
max-frequency = <150000000>;
ctl-spec-caps = <0x8>;
status = "disabled";
};
&rtc {
status = "disabled";
};
&twi0 {
status = "disabled";
};
&twi1 {
clock-frequency = <400000>;
pinctrl-0 = <&twi1_pins_a>;
pinctrl-1 = <&twi1_pins_b>;
pinctrl-names = "default", "sleep";
// twi_drv_used = <1>;
// dmas = <&dma 45>, <&dma 45>;
// dma-names = "tx", "rx";
status = "okay";
rtc@32 {
compatible = "epson,rx8025t";
reg = <0x32>;
status = "okay";
};
edt-ft5x06@38 {
compatible = "edt,edt-ft5406", "edt,edt-ft5x06";
reg = <0x38>;
interrupt-parent = <&pio>;
interrupts = <PE 10 IRQ_TYPE_EDGE_FALLING>; //IRQ_TYPE_LEVEL_LOW
// reset-gpios = <&pio PD 23 1 0xffffffff 0xffffffff 1>;
// gpio-controller;
touchscreen-size-x=<1024>;
touchscreen-size-y=<600>;
status = "okay";
};
ctp {
device_type = "ctp";
status = "okay";
ctp_twi_id = <0x1>;
ctp_twi_addr = <0x38>;
ctp_screen_max_x = <0x400>;
ctp_screen_max_y = <0x258>;
ctp_revert_x_flag = <0x0>;
ctp_revert_y_flag = <0x1>;
ctp_exchange_x_y_flag = <0x1>;
ctp_int_port = <&pio PE 10 GPIO_ACTIVE_HIGH>;
// ctp_wakeup = <&pio PB 7 GPIO_ACTIVE_HIGH>;
ctp-supply = <®_vdd_3v3>;
ctp_power_ldo_vol = <3300>;
};
};
&twi2 {
status = "disabled";
};
&spi0 {
status = "disabled";
};
&spi1 {
status = "disabled";
};
&ledc {
status = "disabled";
};
&s_cir0 {
pinctrl-names = "default";
pinctrl-0 = <&s_cir0_pins_a>;
status = "okay";
};
&ir1 {
pinctrl-names = "default";
pinctrl-0 = <&ir1_pins_a>;
status = "disabled";
};
&gmac0 {
pinctrl-0 = <&gmac0_pins_a>;
pinctrl-1 = <&gmac0_pins_b>;
pinctrl-names = "default", "sleep";
phy-mode = "rmii";
use_ephy25m = <0>;//1
tx-delay = <7>;//7
rx-delay = <31>;//31
phy-rst = <&pio PG 6 GPIO_ACTIVE_HIGH>;
status = "okay";
};
&soc {
platform@45000004 {
reg = <0x0 0x45000004 0x0 0x0>;
eraseflag = <1>;
next_work = <3>;
debug_mode = <8>;
};
target@45000008 {
reg = <0x0 0x45000008 0x0 0x0>;
boot_clock = <1008>; /*CPU boot frequency, Unit: MHz*/
storage_type = <0xffffffff>; /*boot medium, 0-nand, 1-card0, 2-card2, -1(defualt)auto scan*/
burn_key = <0>; /*1:support burn key; 0:not support burn key*/
dragonboard_test = <0>; /*1:support card boot dragonboard; 0:not support card boot dragonboard*/
};
card0_boot_para@2 {
/*
* Avoid dtc compiling warnings.
* @TODO: Developer should modify this to the actual value
*/
reg = <0x0 0x2 0x0 0x0>;
device_type = "card0_boot_para";
card_ctrl = <0x0>;
card_high_speed = <0x1>;
card_line = <0x4>;
pinctrl-0 = <&sdc0_pins_a>;
};
card2_boot_para@3 {
/*
* Avoid dtc compiling warnings.
* @TODO: Developer should modify this to the actual value
*/
reg = <0x0 0x3 0x0 0x0>;
device_type = "card2_boot_para";
card_ctrl = <0x2>;
card_high_speed = <0x1>;
card_line = <0x4>;
pinctrl-0 = <&sdc2_pins_a>;
/*pinctrl-0 = <&sdc0_pins_a>;*/
/*sdc_ex_dly_used = <0x2>;*/
sdc_io_1v8 = <0x1>;
/*sdc_type = "tm4";*/
sdc_tm4_hs200_max_freq = <150>;
sdc_tm4_hs400_max_freq = <100>;
sdc_ex_dly_used = <2>;
/*sdc_tm4_win_th = <8>;*/
/*sdc_dis_host_caps = <0x180>;*/
};
rfkill: rfkill@0 {
status = "disabled";
};
btlpm: btlpm@0 {
status = "disabled";
};
car_reverse:car-reverse {
status = "disabled";
};
};
&vind0 {
csi_top = <378000000>;
csi_isp = <327000000>;
status = "disabled"; /* enable twi and ver1 spi-nand max freq 30M */
};
/*----------------------------------------------------------------------------------
;tv configuration
;interface (interface type,1<->cvbs,2<->YPBPR,4<->SVIDEO)
;dac_type (0<->composite,1<->luma,2<->chroma,3<->reserved,4<->y/green,
; 5<->u/pb/blue,6<->v/pr/red)
;dac_src (dac no,support dac_src0~dac_src3,dac num max is 4)
;NOTE: tv0,tv1 can not use the same dac_src.
;---------------------------------------------------------------------------------*/
&tv0 {
interface = <1>;
dac_type0 = <0>;
dac_src0 = <0>;
status = "okay";
};
/*
tvd configuration
used (create device, 0: do not create device, 1: create device)
agc_auto_enable (0: agc manual mode,agc_manual_value is valid; 1: agc auto mode)
agc_manual_value (agc manual value, default value is 64)
cagc_enable (cagc 0: disable, 1: enable)
fliter_used (3d fliter 0: disable, 1: enable)
support two PMU power (tvd_power0, tvd_power1)
support two GPIO power (tvd_gpio0, tvd_gpio1)
NOTICE: If tvd need pmu power or gpio power,params need be configured under [tvd]
tvd_sw (the switch of all tvd driver.)
tvd_interface (0: cvbs, 1: ypbpr,)
tvd_format (0:TVD_PL_YUV420 , 1: MB_YUV420, 2: TVD_PL_YUV422)
tvd_system (0:ntsc, 1:pal)
tvd_row (total row number in multi channel mode 1-2)
tvd_column (total column number in multi channel mode 1-2)
tvd_channelx_en (0:disable, 1~4:position in multi channel mode,In single channel
mode,mean enable)
tvd_row*tvd_column is the total tvd channel number to be used in multichannel mode
+--------------------+--------------------+
| | |
| | |
| 1 | 2 |
| | |
| | |
+--------------------+--------------------+
| | |
| | |
| 3 | 4 |
| | |
| | |
+--------------------+--------------------+
*/
&tvd {
tvd_sw = <1>;
tvd_interface = <0>;
tvd_format = <0>;
tvd_system = <1>;
tvd_row = <1>;
tvd_column = <1>;
tvd_channel0_en = <1>;
tvd_channel1_en = <0>;
tvd_channel2_en = <0>;
tvd_channel3_en = <0>;
/*tvd_gpio0 = <&pio PD 22 GPIO_ACTIVE_HIGH>;*/
/*tvd_gpio1 = <&pio PD 23 GPIO_ACTIVE_HIGH>;*/
/*tvd_gpio2 = <&pio PD 24 GPIO_ACTIVE_HIGH>;*/
/* dc1sw-supply = <®_dc1sw>;*/
/* eldo3-supply = <®_eldo3>;*/
/*tvd_power0 = "dc1sw"*/
/*tvd_power1 = "eldo3"*/
};
&tvd0 {
used = <1>;
agc_auto_enable = <1>;
agc_manual_value = <64>;
cagc_enable = <1>;
fliter_used = <1>;
};
&hdmi {
status = "disabled";
};
/* Audio Driver modules */
&codec {
/* MIC and headphone gain setting */
mic1gain = <0x1F>;
mic2gain = <0x1F>;
mic3gain = <0x1F>;
/* ADC/DAC DRC/HPF func enabled */
/* 0x1:DAP_HP_EN; 0x2:DAP_SPK_EN; 0x3:DAP_HPSPK_EN */
adcdrc_cfg = <0x0>;
adchpf_cfg = <0x1>;
dacdrc_cfg = <0x0>;
dachpf_cfg = <0x0>;
/* Volume about */
digital_vol = <0x00>;
lineout_vol = <0x1a>;
headphonegain = <0x03>;
/* Pa enabled about */
pa_level = <0x01>;
pa_pwr_level = <0x01>;
pa_msleep_time = <0x78>;
/* gpio-spk = <&pio PE 11 GPIO_ACTIVE_LOW>; */
/* CMA config about */
playback_cma = <128>;
capture_cma = <256>;
/* regulator about */
/* avcc-supply = <®_aldo1>; */
/* hpvcc-supply = <®_eldo1>; */
status = "okay";
};
&sndcodec {
hp_detect_case = <0x00>;
jack_enable = <0x01>;
status = "okay";
};
&dummy_cpudai {
playback_cma = <128>;
capture_cma = <256>;
status = "okay";
};
&dmic {
pinctrl-names = "default","sleep";
pinctrl-0 = <&dmic_pins_a>;
pinctrl-1 = <&dmic_pins_b>;
status = "okay";
};
&dmic_codec {
status = "okay";
};
&sounddmic {
status = "okay";
};
/*-----------------------------------------------------------------------------
* pcm_lrck_period 16/32/64/128/256
* (set 0x20 for HDMI audio out)
* slot_width_select 16bits/20bits/24bits/32bits
* (set 0x20 for HDMI audio out)
* frametype 0 --> short frame = 1 clock width;
* 1 --> long frame = 2 clock width;
* tdm_config 0 --> pcm
* 1 --> i2s
* (set 0x01 for HDMI audio out)
* mclk_div 0 --> not output
* 1/2/4/6/8/12/16/24/32/48/64/96/128/176/192
* (set mclk as external codec clk source, freq is pll_audio/mclk_div)
* pinctrl_used 0 --> I2S/PCM use for internal (e.g. HDMI)
* 1 --> I2S/PCM use for external audio
* daudio_type: 0 --> external audio type
* 1 --> HDMI audio type
*---------------------------------------------------------------------------*/
&daudio0 {
mclk_div = <0x01>;
frametype = <0x00>;
tdm_config = <0x01>;
sign_extend = <0x00>;
msb_lsb_first = <0x00>;
pcm_lrck_period = <0x80>;
slot_width_select = <0x20>;
pinctrl-names = "default", "sleep";
pinctrl-0 = <&daudio0_pins_a>;
pinctrl-1 = <&daudio0_pins_b>;
pinctrl_used = <0x0>;
status = "disabled";
};
/*-----------------------------------------------------------------------------
* simple-audio-card,name name of sound card, e.g.
* "snddaudio0" --> use for external audio
* "sndhdmi" --> use for HDMI audio
* sound-dai "snd-soc-dummy" --> use for I2S
* "hdmiaudio" --> use for HDMI audio
* "ac108" --> use for external audio of ac108
*---------------------------------------------------------------------------*/
&sounddaudio0 {
status = "disabled";
daudio0_master: simple-audio-card,codec {
/* sound-dai = <&ac108>; */
};
};
&daudio1 {
status = "disabled";
};
&sounddaudio1 {
status = "disabled";
daudio1_master: simple-audio-card,codec {
/* sound-dai = <&ac108>; */
};
};
/*-----------------------------------------------------------------------------
* pcm_lrck_period 16/32/64/128/256
* (set 0x20 for HDMI audio out)
* slot_width_select 16bits/20bits/24bits/32bits
* (set 0x20 for HDMI audio out)
* frametype 0 --> short frame = 1 clock width;
* 1 --> long frame = 2 clock width;
* tdm_config 0 --> pcm
* 1 --> i2s
* (set 0x01 for HDMI audio out)
* mclk_div 0 --> not output
* 1/2/4/6/8/12/16/24/32/48/64/96/128/176/192
* (set mclk as external codec clk source, freq is pll_audio/mclk_div)
* pinctrl_used 0 --> I2S/PCM use for internal (e.g. HDMI)
* 1 --> I2S/PCM use for external audio
* daudio_type: 0 --> external audio type
* 1 --> HDMI audio type
*---------------------------------------------------------------------------*/
&daudio2 {
mclk_div = <0x80>;
frametype = <0x01>;
tdm_config = <0x01>;
sign_extend = <0x00>;
msb_lsb_first = <0x00>;
pcm_lrck_period = <0x20>;
slot_width_select = <0x20>;
pinctrl-names = "default", "sleep";
pinctrl-0 = <&daudio2_pins_a &daudio2_pins_b>;
pinctrl-1 = <&daudio2_pins_c>;
pinctrl_used = <0x1>;
status = "okay";
};
/* if HDMI audio is used, daudio2 should be enable. */
&hdmiaudio {
status = "disabled";
};
&sounddaudio2 {
status = "okay";
daudio2_master: simple-audio-card,codec {
/* sound-dai = <&ac108>; */
};
};
&spdif {
status = "okay";
};
&soundspdif {
status = "okay";
};
/*
*usb_port_type: usb mode. 0-device, 1-host, 2-otg.
*usb_detect_type: usb hotplug detect mode. 0-none, 1-vbus/id detect, 2-id/dpdm detect.
*usb_detect_mode: 0-thread scan, 1-id gpio interrupt.
*usb_id_gpio: gpio for id detect.
*usb_det_vbus_gpio: gpio for id detect. gpio or "axp_ctrl";
*usb_wakeup_suspend:0-SUPER_STANDBY, 1-USB_STANDBY.
*/
&usbc0 {
device_type = "usbc0";
usb_port_type = <0x01>;
usb_detect_type = <0x1>;
usb_regulator_io = "nocare";
usb_wakeup_suspend = <0>;
status = "okay";
};
&ehci0 {
drvvbus-supply = <®_usb1_vbus>;
status = "okay";
};
&ohci0 {
drvvbus-supply = <®_usb1_vbus>;
status = "okay";
};
&usbc1 {
device_type = "usbc1";
usb_port_type = <0x01>;
usb_detect_type = <0x1>;
usb_regulator_io = "nocare";
usb_wakeup_suspend = <0>;
status = "okay";
};
&ehci1 {
drvvbus-supply = <®_usb1_vbus>;
status = "okay";
};
&ohci1 {
drvvbus-supply = <®_usb1_vbus>;
status = "okay";
};
/*----------------------------------------------------------------------------------
disp init configuration
disp_mode (0:screen0<screen0,fb0>)
screenx_output_type (0:none; 1:lcd; 2:tv; 3:hdmi;5:vdpo)
screenx_output_mode (used for hdmi output, 0:480i 1:576i 2:480p 3:576p 4:720p50)
(5:720p60 6:1080i50 7:1080i60 8:1080p24 9:1080p50 10:1080p60)
screenx_output_format (for hdmi, 0:RGB 1:yuv444 2:yuv422 3:yuv420)
screenx_output_bits (for hdmi, 0:8bit 1:10bit 2:12bit 2:16bit)
screenx_output_eotf (for hdmi, 0:reserve 4:SDR 16:HDR10 18:HLG)
screenx_output_cs (for hdmi, 0:undefined 257:BT709 260:BT601 263:BT2020)
screenx_output_dvi_hdmi (for hdmi, 0:undefined 1:dvi mode 2:hdmi mode)
screen0_output_range (for hdmi, 0:default 1:full 2:limited)
screen0_output_scan (for hdmi, 0:no data 1:overscan 2:underscan)
screen0_output_aspect_ratio (for hdmi, 8-same as original picture 9-4:3 10-16:9 11-14:9)
fbx format (4:RGB655 5:RGB565 6:RGB556 7:ARGB1555 8:RGBA5551 9:RGB888 10:ARGB8888 12:ARGB4444)
fbx pixel sequence (0:ARGB 1:BGRA 2:ABGR 3:RGBA)
fb0_scaler_mode_enable(scaler mode enable, used FE)
fbx_width,fbx_height (framebuffer horizontal/vertical pixels, fix to output resolution while equal 0)
lcdx_backlight (lcd init backlight,the range:[0,256],default:197
lcdx_yy (lcd init screen bright/contrast/saturation/hue, value:0~100, default:50/50/57/50)
lcd0_contrast (LCD contrast, 0~100)
lcd0_saturation (LCD saturation, 0~100)
lcd0_hue (LCD hue, 0~100)
framebuffer software rotation setting:
disp_rotation_used: (0:disable; 1:enable,you must set fbX_width to lcd_y,
set fbX_height to lcd_x)
degreeX: (X:screen index; 0:0 degree; 1:90 degree; 3:270 degree)
degreeX_Y: (X:screen index; Y:layer index 0~15; 0:0 degree; 1:90 degree; 3:270 degree)
devX_output_type : config output type in bootGUI framework in UBOOT-2018.
(0:none; 1:lcd; 2:tv; 4:hdmi;)
devX_output_mode : config output resolution(see include/video/sunxi_display2.h) of bootGUI framework in UBOOT-2018
devX_screen_id : config display index of bootGUI framework in UBOOT-2018
devX_do_hpd : whether do hpd detectation or not in UBOOT-2018
chn_cfg_mode : Hardware DE channel allocation config. 0:single display with 6
channel, 1:dual display with 4 channel in main display and 2 channel in second
display, 2:dual display with 3 channel in main display and 3 channel in second
in display.
----------------------------------------------------------------------------------*/
&disp {
disp_init_enable = <1>;
disp_mode = <0>;
screen0_output_type = <1>;
screen0_output_mode = <4>;
screen1_output_type = <1>;
screen1_output_mode = <4>;
screen1_output_format = <0>;
screen1_output_bits = <0>;
screen1_output_eotf = <4>;
screen1_output_cs = <257>;
screen1_output_dvi_hdmi = <2>;
screen1_output_range = <2>;
screen1_output_scan = <0>;
screen1_output_aspect_ratio = <8>;
dev0_output_type = <1>;
dev0_output_mode = <4>;
dev0_screen_id = <0>;
dev0_do_hpd = <0>;
dev1_output_type = <4>;
dev1_output_mode = <10>;
dev1_screen_id = <1>;
dev1_do_hpd = <1>;
def_output_dev = <0>;
hdmi_mode_check = <1>;
fb0_format = <0>;
fb0_width = <0>;
fb0_height = <0>;
fb1_format = <0>;
fb1_width = <0>;
fb1_height = <0>;
chn_cfg_mode = <1>;
disp_para_zone = <1>;
/*VCC-LCD*/
/* dc1sw-supply = <®_dc1sw>;*/
/*VCC-DSI*/
/* eldo3-supply = <®_eldo3>;*/
/*VCC-PD*/
/* dcdc1-supply = <®_dcdc1>;*/
};
/*----------------------------------------------------------------------------------
;lcd0 configuration
;lcd_if: 0:hv(sync+de); 1:8080; 2:ttl; 3:lvds; 4:dsi; 5:edp; 6:extend dsi
;lcd_hv_if 0:Parallel RGB; 8:Serial RGB; 10:Dummy RGB; 11: RGB Dummy;12:CCIR656
;lcd_hv_clk_phase 0:0 degree;1:90 degree;2:180 degree;3:270 degree
;lcd_hv_sync_polarity 0:vs low,hs low; 1:vs high,hslow; 2:vs low,hs high; 3:vs high,hs high
;lcd_hv_syuv_seq 0:YUYV; 1:YVYU; 2:UYVY; 3:VYUY
;lcd_cpu_if 0:18bit/1 cycle parallel(RGB666); 4:16bit/1cycle parallel (RGB565)
; 6:18bit/3 cycle parallel(RGB666); 7:16bit/2cycle parallel (RGB565)
;lcd_cpu_te 0:frame auto trigger; 1:frame triggered by te rising edge; 2:frame triggered by te falling edge;
;lcd_dsi_if 0:video mode; 1: Command mode; 2:video burst mode
;lcd_dsi_te 0:frame auto trigger; 1:frame triggered by te rising edge; 2:frame triggered by te falling edge;
;lcd_x: lcd horizontal resolution
;lcd_y: lcd vertical resolution
;lcd_width: width of lcd in mm
;lcd_height: height of lcd in mm
;lcd_dclk_freq: in MHZ unit
;lcd_pwm_freq: in HZ unit
;lcd_pwm_pol: lcd backlight PWM polarity
;lcd_pwm_max_limit lcd backlight PWM max limit(<=255)
;lcd_hbp: hsync back porch(pixel) + hsync plus width(pixel);
;lcd_ht: hsync total cycle(pixel)
;lcd_vbp: vsync back porch(line) + vysnc plus width(line)
;lcd_vt: vysnc total cycle(line)
;lcd_hspw: hsync plus width(pixel)
;lcd_vspw: vysnc plus width(pixel)
;lcd_lvds_if: 0:single link; 1:dual link
;lcd_lvds_colordepth: 0:8bit; 1:6bit
;lcd_lvds_mode: 0:NS mode; 1:JEIDA mode
;lcd_frm: 0:disable; 1:enable rgb666 dither; 2:enable rgb656 dither
;lcd_io_phase: 0:noraml; 1:intert phase(0~3bit: vsync phase; 4~7bit:hsync phase;
; 8~11bit:dclk phase; 12~15bit:de phase)
;lcd_gamma_en lcd gamma correction enable
;lcd_bright_curve_en lcd bright curve correction enable
;lcd_cmap_en lcd color map function enable
;deu_mode 0:smoll lcd screen; 1:large lcd screen(larger than 10inch)
;lcdgamma4iep: Smart Backlight parameter, lcd gamma vale * 10;
; decrease it while lcd is not bright enough; increase while lcd is too bright
;smart_color 90:normal lcd screen 65:retina lcd screen(9.7inch)
;Pin setting for special function ie.LVDS, RGB data or vsync
; name(donot care) = port:PD12<pin function><pull up or pull down><drive ability><output level>
;Pin setting for gpio:
; lcd_gpio_X = port:PD12<pin function><pull up or pull down><drive ability><output level>
;Pin setting for backlight enable pin
; lcd_bl_en = port:PD12<pin function><pull up or pull down><drive ability><output level>
;fsync setting, pulse to csi
;lcd_fsync_en (0:disable fsync,1:enable)
;lcd_fsync_act_time (active time of fsync, unit:pixel)
;lcd_fsync_dis_time (disactive time of fsync, unit:pixel)
;lcd_fsync_pol (0:positive;1:negative)
;gpio config: <&pio for cpu or &r_pio for cpus, port, port num, pio function,
pull up or pull down(default 0), driver level(default 1), data>
;For dual link lvds: use lvds2link_pins_a and lvds2link_pins_b instead
;For rgb24: use rgb24_pins_a and rgb24_pins_b instead
;For lvds1: use lvds1_pins_a and lvds1_pins_b instead
;For lvds0: use lvds0_pins_a and lvds0_pins_b instead
;----------------------------------------------------------------------------------*/
&lcd0 {
lcd_used = <1>;
lcd_driver_name = "he0801a068";
lcd_backlight = <50>;
lcd_if = <4>;
lcd_x = <1920>; // Horizontal Active
lcd_y = <1080>; // Vertical Active
lcd_width = <150>;
lcd_height = <94>;
lcd_dclk_freq = <149>; // Dot clock in MHz
lcd_pwm_used = <1>;
lcd_pwm_ch = <7>;
lcd_pwm_freq = <50000>;
lcd_pwm_pol = <1>;
lcd_pwm_max_limit = <255>;
lcd_hbp = <148>; // Horizontal Back Porch
lcd_ht = <2200>; // Horizontal Total
lcd_hspw = <44>; // Horizontal Sync Pulse Width
lcd_vbp = <36>; // Vertical Back Porch
lcd_vt = <1125>; // Vertical Total
lcd_vspw = <5>; // Vertical Sync Pulse Width
lcd_dsi_lane = <4>;
lcd_dsi_if = <0>;
lcd_dsi_format = <0>;
lcd_dsi_te = <0>;
lcd_frm = <0>;
lcd_io_phase = <0>;
lcd_gamma_en = <0>;
lcd_bright_curve_en = <0>;
lcd_cmap_en = <0>;
deu_mode = <0>;
lcdgamma4iep = <22>;
smart_color = <90>;
lcd_gpio_0 = <&pio PG 13 GPIO_ACTIVE_HIGH>;
pinctrl-0 = <&dsi4lane_pins_a>;
pinctrl-1 = <&dsi4lane_pins_b>;
};
&pwm2 {
pinctrl-names = "active", "sleep";
pinctrl-0 = <&pwm2_pin_a>;
pinctrl-1 = <&pwm2_pin_b>;
status = "okay";
};
&pwm3 {
pinctrl-names = "active", "sleep";
pinctrl-0 = <&pwm3_pin_a>;
pinctrl-1 = <&pwm3_pin_b>;
status = "okay";
};
&pwm5 {
status = "disabled";
};
&pwm7 {
status = "disabled";
};
&gpadc {
channel_num = <1>;
channel_select = <0x1>;
channel_data_select = <0>;
channel_compare_select = <0x1>;
channel_cld_select = <0x1>;
channel_chd_select = <0>;
channel0_compare_lowdata = <1700000>;
channel0_compare_higdata = <1200000>;
channel1_compare_lowdata = <460000>;
channel1_compare_higdata = <1200000>;
key_cnt = <5>;
key0_vol = <210>;
key0_val = <115>;
key1_vol = <410>;
key1_val = <114>;
key2_vol = <590>;
key2_val = <119>;
key3_vol = <750>;
key3_val = <373>;
key4_vol = <880>;
key4_val = <28>;
status = "okay";
};
&tpadc {
key_cnt = <4>;
key1 = <210 115>;
key2 = <410 114>;
key3 = <590 119>;
key4 = <750 373>;
status = "okay";
};
再次感谢!
@whycanservice2 感谢您的回复。这似乎已经修复了错误。我不再收到错误,我可以使用“cat /sys/kernel/debug/pinctrl/pio/pinmux-pins”来查看引脚是否已分配给 I2S。
但是我仍然无法通过 I2S 播放音频。我正在使用 tplayerdemo 播放带音频的视频。我会继续调查,但有什么想法吗?
此外,是否有资源或文档可以让我稍后自己查找此信息?我查看了 Tina SDK 手册,但似乎找不到此信息。
非常感谢您的帮助!
嗨。我正在尝试配置我的 T113,以将 I2S 音频输出到 Lontium LT9611UXC MIPI 到 HDMI 芯片。我已将我的 DTS 配置为输出 I2S。但是查看 dmesg 我发现我的 DOUT 引脚未正确初始化:
[ 1.881261] sun8iw20-pinctrl pio: unsupported function i2s2 on pin PB4
有什么帮助或想法吗?最后是我的 dts:
Hi. I'm trying to configure my T113 to output I2S audio to a Lontium LT9611UXC MIPI to HDMI chip. I've configured my DTS to output I2S. However looking at dmesg I see that my DOUT pin isn't properly initialised:
[ 1.881261] sun8iw20-pinctrl pio: unsupported function i2s2 on pin PB4
Any help or ideas? Below is my dts:
/*
* Allwinner Technology CO., Ltd.
*/
/dts-v1/;
/* optee used 7MB: SHM 2M: OS: 1M: TA:4M*/
/*/memreserve/ 0x41900000 0x00100000;*/
/* DSP used 1MB */
/* /memreserve/ 0x42000000 0x00100000; */
#include "sun8iw20p1.dtsi"
/{
model = "sun8iw20";
compatible = "allwinner,r528", "arm,sun8iw20p1";
reg_vdd_cpu: vdd-cpu {
compatible = "pwm-regulator";
pwms = <&pwm 3 5000 0>;
regulator-name = "vdd_cpu";
regulator-min-microvolt = <810000>;
regulator-max-microvolt = <1160000>;
regulator-settling-time-us = <4000>;
regulator-always-on;
regulator-boot-on;
status = "okay";
};
reg_usb1_vbus: usb1-vbus {
compatible = "regulator-fixed";
regulator-name = "usb1-vbus";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
regulator-enable-ramp-delay = <1000>;
enable-active-high;
};
reg_vdd_3v3: vdd_3v3 {
compatible = "regulator-fixed";
regulator-name = "vdd-3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
enable-active-high;
};
can0: can@0x0 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "allwinner,sun8i-can";
device_type = "can0";
id = <0>;
status = "disabled";
};
can1: can@0x1 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "allwinner,sun8i-can";
device_type = "can1";
id = <1>;
status = "disabled";
};
gpio-keys {
compatible = "gpio-keys";
status = "okay";
vol-down-key {
gpios = <&pio PE 1 GPIO_ACTIVE_LOW>;
linux,code = <114>;
label = "user key";
debounce-interval = <10>;
wakeup-source = <0x1>;
};
};
gpio-leds {
compatible = "gpio-leds";
status = "okay";
led-blue {
label = "led-blue";
gpios = <&pio PE 2 GPIO_ACTIVE_HIGH>;
linux,default-trigger = "heartbeat";
defaults-state = "on";
};
};
};
&cpu0 {
cpu-supply = <®_vdd_cpu>;
};
&pio {
sdc0_pins_a: sdc0@0 {
allwinner,pins = "PF0", "PF1", "PF2",
"PF3", "PF4", "PF5";
allwinner,function = "sdc0";
allwinner,muxsel = <2>;
allwinner,drive = <3>;
allwinner,pull = <1>;
pins = "PF0", "PF1", "PF2",
"PF3", "PF4", "PF5";
function = "sdc0";
drive-strength = <30>;
bias-pull-up;
power-source = <3300>;
};
sdc0_pins_b: sdc0@1 {
pins = "PF0", "PF1", "PF2",
"PF3", "PF4", "PF5";
function = "sdc0";
drive-strength = <30>;
bias-pull-up;
power-source = <1800>;
};
sdc0_pins_c: sdc0@2 {
pins = "PF0", "PF1", "PF2",
"PF3", "PF4", "PF5";
function = "gpio_in";
};
/* TODO: add jtag pin */
sdc0_pins_d: sdc0@3 {
pins = "PF2", "PF4";
function = "uart0";
drive-strength = <10>;
bias-pull-up;
};
sdc0_pins_e: sdc0@4 {
pins = "PF0", "PF1", "PF3",
"PF5";
function = "jtag";
drive-strength = <10>;
bias-pull-up;
};
sdc1_pins_a: sdc1@0 {
pins = "PG0", "PG1", "PG2",
"PG3", "PG4", "PG5";
function = "sdc1";
drive-strength = <30>;
bias-pull-up;
};
sdc1_pins_b: sdc1@1 {
pins = "PG0", "PG1", "PG2",
"PG3", "PG4", "PG5";
function = "sdc1";
};
sdc2_pins_a: sdc2@0 {
allwinner,pins = "PC2", "PC3", "PC4",
"PC5", "PC6", "PC7";
allwinner,function = "sdc2";
allwinner,muxsel = <3>;
allwinner,drive = <3>;
allwinner,pull = <1>;
pins = "PC2", "PC3", "PC4",
"PC5", "PC6", "PC7";
function = "sdc2";
drive-strength = <30>;
bias-pull-up;
};
sdc2_pins_b: sdc2@1 {
pins = "PC2", "PC3", "PC4",
"PC5", "PC6", "PC7";
function = "gpio_in";
};
wlan_pins_a:wlan@0 {
pins = "PG11";
function = "clk_fanout1";
};
uart0_pins_a: uart0_pins@0 { /* For EVB1 board */
pins = "PF2", "PF4";
function = "uart0";
drive-strength = <10>;
bias-pull-up;
};
uart0_pins_b: uart0_pins@1 { /* For EVB1 board */
pins = "PF2", "PF4";
function = "gpio_in";
};
uart1_pins_a: uart1_pins@0 { /* For EVB1 board */
pins = "PG6", "PG7", "PG8", "PG9";
function = "uart1";
drive-strength = <10>;
bias-pull-up;
};
uart1_pins_b: uart1_pins { /* For EVB1 board */
pins = "PG6", "PG7", "PG8", "PG9";
function = "gpio_in";
};
uart2_pins_a: uart2_pins@0 { /* For EVB1 board */
pins = "PC0", "PC1";
function = "uart2";
drive-strength = <10>;
bias-pull-up;
};
uart2_pins_b: uart2_pins@1 { /* For EVB1 board */
pins = "PC0", "PC1";
function = "gpio_in";
};
uart3_pins_a: uart3_pins@0 { /* For t113_evb */
pins = "PG8", "PG9";
function = "uart3";
drive-strength = <10>;
bias-pull-up;
};
uart4_pins_a: uart4_pins@0 {
pins = "PE4", "PE5";
function = "uart4";
drive-strength = <10>;
bias-pull-up;
};
uart4_pins_b: uart4_pins@1 {
pins = "PE4", "PE5";
function = "gpio_in";
};
uart5_pins_a: uart5_pins@0 {
pins = "PE6", "PE7";
function = "uart5";
drive-strength = <10>;
bias-pull-up;
};
uart5_pins_b: uart5_pins@1 {
pins = "PE6", "PE7";
function = "gpio_in";
};
twi1_pins_a: twi1@0 {
pins = "PE14", "PE15";
function = "twi1";
drive-strength = <10>;
};
twi1_pins_b: twi1@1 {
pins = "PE14", "PE15";
function = "gpio_in";
};
twi2_pins_a: twi2@0 {
pins = "PE12", "PE13";
function = "twi2";
drive-strength = <10>;
};
twi2_pins_b: twi2@1 {
pins = "PE12", "PE13";
function = "gpio_in";
};
twi3_pins_a: twi3@0 {
pins = "PB6", "PB7";
function = "twi3";
drive-strength = <10>;
};
twi3_pins_b: twi3@1 {
pins = "PB6", "PB7";
function = "gpio_in";
};
s_cir0_pins_a: s_cir0@0 {
pins = "PB1";
function = "ir";
drive-strength = <10>;
bias-pull-up;
};
s_cir0_pins_b: s_cir0@1 {
pins = "PB1";
function = "gpio_in";
};
ir1_pins_a: ir1@0 {
pins = "PB0";
function = "ir";
drive-strength = <10>;
bias-pull-up;
};
ir1_pins_b: ir1@1 {
pins = "PB0";
function = "gpio_in";
};
dmic_pins_a: dmic@0 {
/* DMIC_PIN: CLK, DATA0, DATA1, DATA2, DATA3*/
pins = "PB12", "PB11", "PB10", "PE14", "PB8";
function = "dmic";
drive-strength = <20>;
bias-disable;
};
dmic_pins_b: dmic@1 {
pins = "PB12", "PB11", "PB10", "PE14", "PB8";
allwinner,function = "io_disabled";
drive-strength = <20>;
bias-disable;
};
daudio0_pins_a: daudio0@0 {
pins = "PB7", "PB5", "PB6", "PB4";
function = "i2s2";
drive-strength = <20>;
bias-disable;
};
daudio0_pins_b: daudio0_sleep@0 {
pins = "PB7", "PB5", "PB6", "PB4";
function = "io_disabled";
drive-strength = <20>;
bias-disable;
};
daudio2_pins_a: daudio2@0 {
pins = "PB7", "PB5", "PB6", "PB4";
function = "i2s2";
drive-strength = <20>;
bias-disable;
};
daudio2_pins_b: daudio2_sleep@0 {
pins = "PB7", "PB5", "PB6", "PB4";
function = "io_disabled";
drive-strength = <20>;
bias-disable;
};
spdif_pins_a: spdif@0 {
/* SPDIF_PIN: SPDIF_OUT */
pins = "PG18";
function = "spdif";
drive-strength = <20>;
bias-disable;
};
spdif_pins_b: spdif_sleep@0 {
pins = "PG18";
function = "io_disabled";
drive-strength = <20>;
bias-disable;
};
gmac0_pins_a: gmac@0 {
allwinner,pins = "PG0", "PG1", "PG2", "PG3", "PG4",
"PG5", "PG12", "PG13", "PG14", "PG15";
allwinner,function = "gmac0";
allwinner,muxsel = <4>;
allwinner,drive = <1>;
allwinner,pull = <0>;
};
gmac0_pins_b: gmac@1 {
allwinner,pins = "PG0", "PG1", "PG2", "PG3", "PG4",
"PG5", "PG12", "PG13", "PG14", "PG15";
allwinner,function = "gpio_in";
allwinner,muxsel = <0>;
allwinner,drive = <1>;
allwinner,pull = <0>;
};
spi0_pins_a: spi0@0 {
pins = "PC2", "PC4", "PC5","PC7", "PC6"; /*clk mosi miso hold wp*/
function = "spi0";
drive-strength = <10>;
};
spi0_pins_b: spi0@1 {
pins = "PC3";
function = "spi0";
drive-strength = <10>;
bias-pull-up; /* only CS should be pulled up */
};
spi0_pins_c: spi0@2 {
pins = "PC2", "PC3", "PC4", "PC5","PC6", "PC7";
function = "gpio_in";
drive-strength = <10>;
};
spi1_pins_a: spi1@0 {
pins = "PB11", "PB10", "PB9","PB8", "PB0"; /*clk mosi miso hold wp*/
function = "spi1";
drive-strength = <10>;
};
spi1_pins_b: spi1@1 {
pins = "PB12";
function = "spi1";
drive-strength = <10>;
bias-pull-up; // only CS should be pulled up
};
spi1_pins_c: spi1@2 {
allwinner,pins = "PB0", "PB8", "PB9", "PB10","PB11", "PB12";
allwinner,function = "gpio_in";
allwinner,muxsel = <0>;
drive-strength = <10>;
};
pwm2_pin_a: pwm2@0 {
pins = "PE8";
function = "pwm2";
drive-strength = <10>;
bias-pull-up;
};
pwm2_pin_b: pwm2@1 {
pins = "PE8";
function = "gpio_in";
};
pwm3_pin_a: pwm3@0 {
pins = "PB0";
function = "pwm3";
drive-strength = <10>;
bias-pull-up;
};
pwm3_pin_b: pwm3@1 {
pins = "PB0";
function = "gpio_in";
};
pwm5_pin_a: pwm5@0 {
pins = "PE13";
function = "pwm5";
drive-strength = <10>;
bias-pull-up;
};
pwm5_pin_b: pwm5@1 {
pins = "PE13";
function = "gpio_in";
};
dsi4lane_pins_a: dsi4lane@0 {
allwinner,pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9";
allwinner,pname = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9";
allwinner,function = "dsi4lane";
allwinner,muxsel = <4>;
allwinner,drive = <3>;
allwinner,pull = <0>;
};
dsi4lane_pins_b: dsi4lane@1 {
allwinner,pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9";
allwinner,pname = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9";
allwinner,function = "dsi4lane_suspend";
allwinner,muxsel = <7>;
allwinner,drive = <1>;
allwinner,pull = <0>;
};
};
&uart0 {
status = "disabled";
};
&uart1 {
status = "disabled";
};
&uart2 {
status = "disabled";
};
&uart3 {
status = "disabled";
};
&uart4 {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&uart4_pins_a>;
pinctrl-1 = <&uart4_pins_b>;
status = "okay";
};
&uart5 {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&uart5_pins_a>;
pinctrl-1 = <&uart5_pins_b>;
status = "okay";
};
&sdc2 {
non-removable;
bus-width = <4>;
mmc-ddr-1_8v;
mmc-hs200-1_8v;
no-sdio;
no-sd;
ctl-spec-caps = <0x308>;
cap-mmc-highspeed;
sunxi-power-save-mode;
sunxi-dis-signal-vol-sw;
mmc-bootpart-noacc;
max-frequency = <150000000>;
/*vmmc-supply = <®_dcdc1>;*/
/*emmc io vol 3.3v*/
/*vqmmc-supply = <®_aldo1>;*/
/*emmc io vol 1.8v*/
/*vqmmc-supply = <®_eldo1>;*/
status = "disabled";
};
&sdc0 {
bus-width = <4>;
cd-gpios = <&pio PF 6 (GPIO_ACTIVE_LOW | GPIO_PULL_DOWN)>;
/*non-removable;*/
broken-cd;
/*cd-inverted*/
/*data3-detect;*/
/*card-pwr-gpios = <&pio PH 14 1 1 2 0xffffffff>;*/
/*cd-used-24M;*/
cap-sd-highspeed;
/*sd-uhs-sdr50;*/
/*sd-uhs-ddr50;*/
/*sd-uhs-sdr104;*/
no-sdio;
no-mmc;
sunxi-power-save-mode;
/*sunxi-dis-signal-vol-sw;*/
max-frequency = <150000000>;
ctl-spec-caps = <0x8>;
/*vmmc-supply = <®_dcdc1>;*/
/*vqmmc33sw-supply = <®_dcdc1>;*/
/*vdmmc33sw-supply = <®_dcdc1>;*/
/*vqmmc18sw-supply = <®_eldo1>;*/
/*vdmmc18sw-supply = <®_eldo1>;*/
status = "okay";
};
&sdc1 {
bus-width = <4>;
no-mmc;
no-sd;
cap-sd-highspeed;
/*sd-uhs-sdr12*/
/*sd-uhs-sdr25;*/
/*sd-uhs-sdr50;*/
/*sd-uhs-ddr50;*/
/*sd-uhs-sdr104;*/
/*sunxi-power-save-mode;*/
/*sunxi-dis-signal-vol-sw;*/
cap-sdio-irq;
keep-power-in-suspend;
ignore-pm-notify;
max-frequency = <150000000>;
ctl-spec-caps = <0x8>;
status = "disabled";
};
&rtc {
status = "disabled";
};
&twi0 {
status = "disabled";
};
&twi1 {
clock-frequency = <400000>;
pinctrl-0 = <&twi1_pins_a>;
pinctrl-1 = <&twi1_pins_b>;
pinctrl-names = "default", "sleep";
// twi_drv_used = <1>;
// dmas = <&dma 45>, <&dma 45>;
// dma-names = "tx", "rx";
status = "okay";
rtc@32 {
compatible = "epson,rx8025t";
reg = <0x32>;
status = "okay";
};
edt-ft5x06@38 {
compatible = "edt,edt-ft5406", "edt,edt-ft5x06";
reg = <0x38>;
interrupt-parent = <&pio>;
interrupts = <PE 10 IRQ_TYPE_EDGE_FALLING>; //IRQ_TYPE_LEVEL_LOW
// reset-gpios = <&pio PD 23 1 0xffffffff 0xffffffff 1>;
// gpio-controller;
touchscreen-size-x=<1024>;
touchscreen-size-y=<600>;
status = "okay";
};
ctp {
device_type = "ctp";
status = "okay";
ctp_twi_id = <0x1>;
ctp_twi_addr = <0x38>;
ctp_screen_max_x = <0x400>;
ctp_screen_max_y = <0x258>;
ctp_revert_x_flag = <0x0>;
ctp_revert_y_flag = <0x1>;
ctp_exchange_x_y_flag = <0x1>;
ctp_int_port = <&pio PE 10 GPIO_ACTIVE_HIGH>;
// ctp_wakeup = <&pio PB 7 GPIO_ACTIVE_HIGH>;
ctp-supply = <®_vdd_3v3>;
ctp_power_ldo_vol = <3300>;
};
};
&twi2 {
status = "disabled";
};
&spi0 {
status = "disabled";
};
&spi1 {
status = "disabled";
};
&ledc {
status = "disabled";
};
&s_cir0 {
pinctrl-names = "default";
pinctrl-0 = <&s_cir0_pins_a>;
status = "okay";
};
&ir1 {
pinctrl-names = "default";
pinctrl-0 = <&ir1_pins_a>;
status = "disabled";
};
&gmac0 {
pinctrl-0 = <&gmac0_pins_a>;
pinctrl-1 = <&gmac0_pins_b>;
pinctrl-names = "default", "sleep";
phy-mode = "rmii";
use_ephy25m = <0>;//1
tx-delay = <7>;//7
rx-delay = <31>;//31
phy-rst = <&pio PG 6 GPIO_ACTIVE_HIGH>;
status = "okay";
};
&soc {
platform@45000004 {
reg = <0x0 0x45000004 0x0 0x0>;
eraseflag = <1>;
next_work = <3>;
debug_mode = <8>;
};
target@45000008 {
reg = <0x0 0x45000008 0x0 0x0>;
boot_clock = <1008>; /*CPU boot frequency, Unit: MHz*/
storage_type = <0xffffffff>; /*boot medium, 0-nand, 1-card0, 2-card2, -1(defualt)auto scan*/
burn_key = <0>; /*1:support burn key; 0:not support burn key*/
dragonboard_test = <0>; /*1:support card boot dragonboard; 0:not support card boot dragonboard*/
};
card0_boot_para@2 {
/*
* Avoid dtc compiling warnings.
* @TODO: Developer should modify this to the actual value
*/
reg = <0x0 0x2 0x0 0x0>;
device_type = "card0_boot_para";
card_ctrl = <0x0>;
card_high_speed = <0x1>;
card_line = <0x4>;
pinctrl-0 = <&sdc0_pins_a>;
};
card2_boot_para@3 {
/*
* Avoid dtc compiling warnings.
* @TODO: Developer should modify this to the actual value
*/
reg = <0x0 0x3 0x0 0x0>;
device_type = "card2_boot_para";
card_ctrl = <0x2>;
card_high_speed = <0x1>;
card_line = <0x4>;
pinctrl-0 = <&sdc2_pins_a>;
/*pinctrl-0 = <&sdc0_pins_a>;*/
/*sdc_ex_dly_used = <0x2>;*/
sdc_io_1v8 = <0x1>;
/*sdc_type = "tm4";*/
sdc_tm4_hs200_max_freq = <150>;
sdc_tm4_hs400_max_freq = <100>;
sdc_ex_dly_used = <2>;
/*sdc_tm4_win_th = <8>;*/
/*sdc_dis_host_caps = <0x180>;*/
};
rfkill: rfkill@0 {
status = "disabled";
};
btlpm: btlpm@0 {
status = "disabled";
};
car_reverse:car-reverse {
status = "disabled";
};
};
&vind0 {
csi_top = <378000000>;
csi_isp = <327000000>;
status = "disabled"; /* enable twi and ver1 spi-nand max freq 30M */
};
/*----------------------------------------------------------------------------------
;tv configuration
;interface (interface type,1<->cvbs,2<->YPBPR,4<->SVIDEO)
;dac_type (0<->composite,1<->luma,2<->chroma,3<->reserved,4<->y/green,
; 5<->u/pb/blue,6<->v/pr/red)
;dac_src (dac no,support dac_src0~dac_src3,dac num max is 4)
;NOTE: tv0,tv1 can not use the same dac_src.
;---------------------------------------------------------------------------------*/
&tv0 {
interface = <1>;
dac_type0 = <0>;
dac_src0 = <0>;
status = "okay";
};
/*
tvd configuration
used (create device, 0: do not create device, 1: create device)
agc_auto_enable (0: agc manual mode,agc_manual_value is valid; 1: agc auto mode)
agc_manual_value (agc manual value, default value is 64)
cagc_enable (cagc 0: disable, 1: enable)
fliter_used (3d fliter 0: disable, 1: enable)
support two PMU power (tvd_power0, tvd_power1)
support two GPIO power (tvd_gpio0, tvd_gpio1)
NOTICE: If tvd need pmu power or gpio power,params need be configured under [tvd]
tvd_sw (the switch of all tvd driver.)
tvd_interface (0: cvbs, 1: ypbpr,)
tvd_format (0:TVD_PL_YUV420 , 1: MB_YUV420, 2: TVD_PL_YUV422)
tvd_system (0:ntsc, 1:pal)
tvd_row (total row number in multi channel mode 1-2)
tvd_column (total column number in multi channel mode 1-2)
tvd_channelx_en (0:disable, 1~4:position in multi channel mode,In single channel
mode,mean enable)
tvd_row*tvd_column is the total tvd channel number to be used in multichannel mode
+--------------------+--------------------+
| | |
| | |
| 1 | 2 |
| | |
| | |
+--------------------+--------------------+
| | |
| | |
| 3 | 4 |
| | |
| | |
+--------------------+--------------------+
*/
&tvd {
tvd_sw = <1>;
tvd_interface = <0>;
tvd_format = <0>;
tvd_system = <1>;
tvd_row = <1>;
tvd_column = <1>;
tvd_channel0_en = <1>;
tvd_channel1_en = <0>;
tvd_channel2_en = <0>;
tvd_channel3_en = <0>;
/*tvd_gpio0 = <&pio PD 22 GPIO_ACTIVE_HIGH>;*/
/*tvd_gpio1 = <&pio PD 23 GPIO_ACTIVE_HIGH>;*/
/*tvd_gpio2 = <&pio PD 24 GPIO_ACTIVE_HIGH>;*/
/* dc1sw-supply = <®_dc1sw>;*/
/* eldo3-supply = <®_eldo3>;*/
/*tvd_power0 = "dc1sw"*/
/*tvd_power1 = "eldo3"*/
};
&tvd0 {
used = <1>;
agc_auto_enable = <1>;
agc_manual_value = <64>;
cagc_enable = <1>;
fliter_used = <1>;
};
&hdmi {
status = "disabled";
};
/* Audio Driver modules */
&codec {
/* MIC and headphone gain setting */
mic1gain = <0x1F>;
mic2gain = <0x1F>;
mic3gain = <0x1F>;
/* ADC/DAC DRC/HPF func enabled */
/* 0x1:DAP_HP_EN; 0x2:DAP_SPK_EN; 0x3:DAP_HPSPK_EN */
adcdrc_cfg = <0x0>;
adchpf_cfg = <0x1>;
dacdrc_cfg = <0x0>;
dachpf_cfg = <0x0>;
/* Volume about */
digital_vol = <0x00>;
lineout_vol = <0x1a>;
headphonegain = <0x03>;
/* Pa enabled about */
pa_level = <0x01>;
pa_pwr_level = <0x01>;
pa_msleep_time = <0x78>;
/* gpio-spk = <&pio PE 11 GPIO_ACTIVE_LOW>; */
/* CMA config about */
playback_cma = <128>;
capture_cma = <256>;
/* regulator about */
/* avcc-supply = <®_aldo1>; */
/* hpvcc-supply = <®_eldo1>; */
status = "okay";
};
&sndcodec {
hp_detect_case = <0x00>;
jack_enable = <0x01>;
status = "okay";
};
&dummy_cpudai {
playback_cma = <128>;
capture_cma = <256>;
status = "okay";
};
&dmic {
pinctrl-names = "default","sleep";
pinctrl-0 = <&dmic_pins_a>;
pinctrl-1 = <&dmic_pins_b>;
status = "okay";
};
&dmic_codec {
status = "okay";
};
&sounddmic {
status = "okay";
};
/*-----------------------------------------------------------------------------
* pcm_lrck_period 16/32/64/128/256
* (set 0x20 for HDMI audio out)
* slot_width_select 16bits/20bits/24bits/32bits
* (set 0x20 for HDMI audio out)
* frametype 0 --> short frame = 1 clock width;
* 1 --> long frame = 2 clock width;
* tdm_config 0 --> pcm
* 1 --> i2s
* (set 0x01 for HDMI audio out)
* mclk_div 0 --> not output
* 1/2/4/6/8/12/16/24/32/48/64/96/128/176/192
* (set mclk as external codec clk source, freq is pll_audio/mclk_div)
* pinctrl_used 0 --> I2S/PCM use for internal (e.g. HDMI)
* 1 --> I2S/PCM use for external audio
* daudio_type: 0 --> external audio type
* 1 --> HDMI audio type
*---------------------------------------------------------------------------*/
&daudio0 {
mclk_div = <0x01>;
frametype = <0x00>;
tdm_config = <0x01>;
sign_extend = <0x00>;
msb_lsb_first = <0x00>;
pcm_lrck_period = <0x80>;
slot_width_select = <0x20>;
pinctrl-names = "default", "sleep";
pinctrl-0 = <&daudio0_pins_a>;
pinctrl-1 = <&daudio0_pins_b>;
pinctrl_used = <0x0>;
status = "disabled";
};
/*-----------------------------------------------------------------------------
* simple-audio-card,name name of sound card, e.g.
* "snddaudio0" --> use for external audio
* "sndhdmi" --> use for HDMI audio
* sound-dai "snd-soc-dummy" --> use for I2S
* "hdmiaudio" --> use for HDMI audio
* "ac108" --> use for external audio of ac108
*---------------------------------------------------------------------------*/
&sounddaudio0 {
status = "disabled";
daudio0_master: simple-audio-card,codec {
/* sound-dai = <&ac108>; */
};
};
&daudio1 {
status = "disabled";
};
&sounddaudio1 {
status = "disabled";
daudio1_master: simple-audio-card,codec {
/* sound-dai = <&ac108>; */
};
};
&daudio2 {
mclk_div = <0x00>;
frametype = <0x00>;
tdm_config = <0x01>;
sign_extend = <0x00>;
tx_data_mode = <0x00>;
rx_data_mode = <0x00>;
msb_lsb_first = <0x00>;
pcm_lrck_period = <0x20>;
slot_width_select = <0x20>;
asrc_function_en = <0x00>;
pinctrl-names = "default", "sleep";
pinctrl-0 = <&daudio2_pins_a>;
pinctrl-1 = <&daudio2_pins_b>;
pinctrl_used = <0x0>;
daudio_type = <0x1>;
status = "okay";
};
/* if HDMI audio is used, daudio2 should be enable. */
&hdmiaudio {
status = "okay";
};
&sounddaudio2 {
status = "okay";
simple-audio-card,name = "sndhdmi";
daudio2_master: simple-audio-card,codec {
sound-dai = <&hdmiaudio>;
};
};
&spdif {
status = "okay";
};
&soundspdif {
status = "okay";
};
/*
*usb_port_type: usb mode. 0-device, 1-host, 2-otg.
*usb_detect_type: usb hotplug detect mode. 0-none, 1-vbus/id detect, 2-id/dpdm detect.
*usb_detect_mode: 0-thread scan, 1-id gpio interrupt.
*usb_id_gpio: gpio for id detect.
*usb_det_vbus_gpio: gpio for id detect. gpio or "axp_ctrl";
*usb_wakeup_suspend:0-SUPER_STANDBY, 1-USB_STANDBY.
*/
&usbc0 {
device_type = "usbc0";
usb_port_type = <0x01>;
usb_detect_type = <0x1>;
usb_regulator_io = "nocare";
usb_wakeup_suspend = <0>;
status = "okay";
};
&ehci0 {
drvvbus-supply = <®_usb1_vbus>;
status = "okay";
};
&ohci0 {
drvvbus-supply = <®_usb1_vbus>;
status = "okay";
};
&usbc1 {
device_type = "usbc1";
usb_port_type = <0x01>;
usb_detect_type = <0x1>;
usb_regulator_io = "nocare";
usb_wakeup_suspend = <0>;
status = "okay";
};
&ehci1 {
drvvbus-supply = <®_usb1_vbus>;
status = "okay";
};
&ohci1 {
drvvbus-supply = <®_usb1_vbus>;
status = "okay";
};
/*----------------------------------------------------------------------------------
disp init configuration
disp_mode (0:screen0<screen0,fb0>)
screenx_output_type (0:none; 1:lcd; 2:tv; 3:hdmi;5:vdpo)
screenx_output_mode (used for hdmi output, 0:480i 1:576i 2:480p 3:576p 4:720p50)
(5:720p60 6:1080i50 7:1080i60 8:1080p24 9:1080p50 10:1080p60)
screenx_output_format (for hdmi, 0:RGB 1:yuv444 2:yuv422 3:yuv420)
screenx_output_bits (for hdmi, 0:8bit 1:10bit 2:12bit 2:16bit)
screenx_output_eotf (for hdmi, 0:reserve 4:SDR 16:HDR10 18:HLG)
screenx_output_cs (for hdmi, 0:undefined 257:BT709 260:BT601 263:BT2020)
screenx_output_dvi_hdmi (for hdmi, 0:undefined 1:dvi mode 2:hdmi mode)
screen0_output_range (for hdmi, 0:default 1:full 2:limited)
screen0_output_scan (for hdmi, 0:no data 1:overscan 2:underscan)
screen0_output_aspect_ratio (for hdmi, 8-same as original picture 9-4:3 10-16:9 11-14:9)
fbx format (4:RGB655 5:RGB565 6:RGB556 7:ARGB1555 8:RGBA5551 9:RGB888 10:ARGB8888 12:ARGB4444)
fbx pixel sequence (0:ARGB 1:BGRA 2:ABGR 3:RGBA)
fb0_scaler_mode_enable(scaler mode enable, used FE)
fbx_width,fbx_height (framebuffer horizontal/vertical pixels, fix to output resolution while equal 0)
lcdx_backlight (lcd init backlight,the range:[0,256],default:197
lcdx_yy (lcd init screen bright/contrast/saturation/hue, value:0~100, default:50/50/57/50)
lcd0_contrast (LCD contrast, 0~100)
lcd0_saturation (LCD saturation, 0~100)
lcd0_hue (LCD hue, 0~100)
framebuffer software rotation setting:
disp_rotation_used: (0:disable; 1:enable,you must set fbX_width to lcd_y,
set fbX_height to lcd_x)
degreeX: (X:screen index; 0:0 degree; 1:90 degree; 3:270 degree)
degreeX_Y: (X:screen index; Y:layer index 0~15; 0:0 degree; 1:90 degree; 3:270 degree)
devX_output_type : config output type in bootGUI framework in UBOOT-2018.
(0:none; 1:lcd; 2:tv; 4:hdmi;)
devX_output_mode : config output resolution(see include/video/sunxi_display2.h) of bootGUI framework in UBOOT-2018
devX_screen_id : config display index of bootGUI framework in UBOOT-2018
devX_do_hpd : whether do hpd detectation or not in UBOOT-2018
chn_cfg_mode : Hardware DE channel allocation config. 0:single display with 6
channel, 1:dual display with 4 channel in main display and 2 channel in second
display, 2:dual display with 3 channel in main display and 3 channel in second
in display.
----------------------------------------------------------------------------------*/
&disp {
disp_init_enable = <1>;
disp_mode = <0>;
screen0_output_type = <1>;
screen0_output_mode = <4>;
screen1_output_type = <1>;
screen1_output_mode = <4>;
screen1_output_format = <0>;
screen1_output_bits = <0>;
screen1_output_eotf = <4>;
screen1_output_cs = <257>;
screen1_output_dvi_hdmi = <2>;
screen1_output_range = <2>;
screen1_output_scan = <0>;
screen1_output_aspect_ratio = <8>;
dev0_output_type = <1>;
dev0_output_mode = <4>;
dev0_screen_id = <0>;
dev0_do_hpd = <0>;
dev1_output_type = <4>;
dev1_output_mode = <10>;
dev1_screen_id = <1>;
dev1_do_hpd = <1>;
def_output_dev = <0>;
hdmi_mode_check = <1>;
fb0_format = <0>;
fb0_width = <0>;
fb0_height = <0>;
fb1_format = <0>;
fb1_width = <0>;
fb1_height = <0>;
chn_cfg_mode = <1>;
disp_para_zone = <1>;
/*VCC-LCD*/
/* dc1sw-supply = <®_dc1sw>;*/
/*VCC-DSI*/
/* eldo3-supply = <®_eldo3>;*/
/*VCC-PD*/
/* dcdc1-supply = <®_dcdc1>;*/
};
/*----------------------------------------------------------------------------------
;lcd0 configuration
;lcd_if: 0:hv(sync+de); 1:8080; 2:ttl; 3:lvds; 4:dsi; 5:edp; 6:extend dsi
;lcd_hv_if 0:Parallel RGB; 8:Serial RGB; 10:Dummy RGB; 11: RGB Dummy;12:CCIR656
;lcd_hv_clk_phase 0:0 degree;1:90 degree;2:180 degree;3:270 degree
;lcd_hv_sync_polarity 0:vs low,hs low; 1:vs high,hslow; 2:vs low,hs high; 3:vs high,hs high
;lcd_hv_syuv_seq 0:YUYV; 1:YVYU; 2:UYVY; 3:VYUY
;lcd_cpu_if 0:18bit/1 cycle parallel(RGB666); 4:16bit/1cycle parallel (RGB565)
; 6:18bit/3 cycle parallel(RGB666); 7:16bit/2cycle parallel (RGB565)
;lcd_cpu_te 0:frame auto trigger; 1:frame triggered by te rising edge; 2:frame triggered by te falling edge;
;lcd_dsi_if 0:video mode; 1: Command mode; 2:video burst mode
;lcd_dsi_te 0:frame auto trigger; 1:frame triggered by te rising edge; 2:frame triggered by te falling edge;
;lcd_x: lcd horizontal resolution
;lcd_y: lcd vertical resolution
;lcd_width: width of lcd in mm
;lcd_height: height of lcd in mm
;lcd_dclk_freq: in MHZ unit
;lcd_pwm_freq: in HZ unit
;lcd_pwm_pol: lcd backlight PWM polarity
;lcd_pwm_max_limit lcd backlight PWM max limit(<=255)
;lcd_hbp: hsync back porch(pixel) + hsync plus width(pixel);
;lcd_ht: hsync total cycle(pixel)
;lcd_vbp: vsync back porch(line) + vysnc plus width(line)
;lcd_vt: vysnc total cycle(line)
;lcd_hspw: hsync plus width(pixel)
;lcd_vspw: vysnc plus width(pixel)
;lcd_lvds_if: 0:single link; 1:dual link
;lcd_lvds_colordepth: 0:8bit; 1:6bit
;lcd_lvds_mode: 0:NS mode; 1:JEIDA mode
;lcd_frm: 0:disable; 1:enable rgb666 dither; 2:enable rgb656 dither
;lcd_io_phase: 0:noraml; 1:intert phase(0~3bit: vsync phase; 4~7bit:hsync phase;
; 8~11bit:dclk phase; 12~15bit:de phase)
;lcd_gamma_en lcd gamma correction enable
;lcd_bright_curve_en lcd bright curve correction enable
;lcd_cmap_en lcd color map function enable
;deu_mode 0:smoll lcd screen; 1:large lcd screen(larger than 10inch)
;lcdgamma4iep: Smart Backlight parameter, lcd gamma vale * 10;
; decrease it while lcd is not bright enough; increase while lcd is too bright
;smart_color 90:normal lcd screen 65:retina lcd screen(9.7inch)
;Pin setting for special function ie.LVDS, RGB data or vsync
; name(donot care) = port:PD12<pin function><pull up or pull down><drive ability><output level>
;Pin setting for gpio:
; lcd_gpio_X = port:PD12<pin function><pull up or pull down><drive ability><output level>
;Pin setting for backlight enable pin
; lcd_bl_en = port:PD12<pin function><pull up or pull down><drive ability><output level>
;fsync setting, pulse to csi
;lcd_fsync_en (0:disable fsync,1:enable)
;lcd_fsync_act_time (active time of fsync, unit:pixel)
;lcd_fsync_dis_time (disactive time of fsync, unit:pixel)
;lcd_fsync_pol (0:positive;1:negative)
;gpio config: <&pio for cpu or &r_pio for cpus, port, port num, pio function,
pull up or pull down(default 0), driver level(default 1), data>
;For dual link lvds: use lvds2link_pins_a and lvds2link_pins_b instead
;For rgb24: use rgb24_pins_a and rgb24_pins_b instead
;For lvds1: use lvds1_pins_a and lvds1_pins_b instead
;For lvds0: use lvds0_pins_a and lvds0_pins_b instead
;----------------------------------------------------------------------------------*/
&lcd0 {
lcd_used = <1>;
lcd_driver_name = "he0801a068";
lcd_backlight = <50>;
lcd_if = <4>;
lcd_x = <1920>; // Horizontal Active
lcd_y = <1080>; // Vertical Active
lcd_width = <150>;
lcd_height = <94>;
lcd_dclk_freq = <149>; // Dot clock in MHz
lcd_pwm_used = <1>;
lcd_pwm_ch = <7>;
lcd_pwm_freq = <50000>;
lcd_pwm_pol = <1>;
lcd_pwm_max_limit = <255>;
lcd_hbp = <148>; // Horizontal Back Porch
lcd_ht = <2200>; // Horizontal Total
lcd_hspw = <44>; // Horizontal Sync Pulse Width
lcd_vbp = <36>; // Vertical Back Porch
lcd_vt = <1125>; // Vertical Total
lcd_vspw = <5>; // Vertical Sync Pulse Width
lcd_dsi_lane = <4>;
lcd_dsi_if = <0>;
lcd_dsi_format = <0>;
lcd_dsi_te = <0>;
lcd_frm = <0>;
lcd_io_phase = <0>;
lcd_gamma_en = <0>;
lcd_bright_curve_en = <0>;
lcd_cmap_en = <0>;
deu_mode = <0>;
lcdgamma4iep = <22>;
smart_color = <90>;
lcd_gpio_0 = <&pio PG 13 GPIO_ACTIVE_HIGH>;
pinctrl-0 = <&dsi4lane_pins_a>;
pinctrl-1 = <&dsi4lane_pins_b>;
};
&pwm2 {
pinctrl-names = "active", "sleep";
pinctrl-0 = <&pwm2_pin_a>;
pinctrl-1 = <&pwm2_pin_b>;
status = "okay";
};
&pwm3 {
pinctrl-names = "active", "sleep";
pinctrl-0 = <&pwm3_pin_a>;
pinctrl-1 = <&pwm3_pin_b>;
status = "okay";
};
&pwm5 {
pinctrl-names = "active", "sleep";
pinctrl-0 = <&pwm5_pin_a>;
pinctrl-1 = <&pwm5_pin_b>;
status = "okay";
};
&pwm7 {
status = "disabled";
};
&gpadc {
channel_num = <1>;
channel_select = <0x1>;
channel_data_select = <0>;
channel_compare_select = <0x1>;
channel_cld_select = <0x1>;
channel_chd_select = <0>;
channel0_compare_lowdata = <1700000>;
channel0_compare_higdata = <1200000>;
channel1_compare_lowdata = <460000>;
channel1_compare_higdata = <1200000>;
key_cnt = <5>;
key0_vol = <210>;
key0_val = <115>;
key1_vol = <410>;
key1_val = <114>;
key2_vol = <590>;
key2_val = <119>;
key3_vol = <750>;
key3_val = <373>;
key4_vol = <880>;
key4_val = <28>;
status = "okay";
};
&tpadc {
key_cnt = <4>;
key1 = <210 115>;
key2 = <410 114>;
key3 = <590 119>;
key4 = <750 373>;
status = "okay";
};
@lecndav Did you solve this? I have the same question
我想将 GPIO 输入设置为上拉。我见过各种驱动程序将 GPIO 配置为 LED 或按键输入:
https://bbs.aw-ol.com/topic/1421/mq_pro-tina-gpio驱动
https://whycan.com/t_6900.html#p66192
但是我只想将引脚设置为 GPIO 输入上拉,然后在我的应用程序中通过以下方式访问:/sys/class/gpio
有什么建议吗?非常感谢。
我们正在寻求开发一款 1080p 60hz 视频/媒体播放设备。我们需要一个视频播放系统,允许在播放另一个视频时以不可见的方式预加载一个视频,然后在这些视频之间无缝切换。
我们还需要视频无缝循环。
应用程序的大部分高级逻辑已经实现。然而,我们在视频播放的上述方面遇到了困难。
使用 Tina Linux SDK,我尝试改造 tplayer 库以实现上述目标,但没有成功。
我们愿意聘请某人开发或修改 T113-S3 芯片上的视频播放系统。
谢谢,
Daz