This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM4379:TW9906视频解码器问题

Guru**** 2551880 points
Other Parts Discussed in Thread: AM4379, AM4372, TLV320AIC3111, TPS65218

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/620126/linux-am4379-tw9906-video-decoder-issue

器件型号:AM4379
主题中讨论的其他器件: AM4372TLV320AIC3111TPS65218

工具/软件:Linux

Sitara 处理器论坛:

我的客户设计了一个定制板、它使用 AM4379处理器从 Techwell TW9906视频解码器捕获视频。

TW9906有8条数据线路通过 CAM_7连接到 CAM_0、 解码器 的 PCLK、VSYNC 和 HSYNC 也 连接到 AM4379上各自的引脚。 在此设计中、解码器的 I2C 信号路由到 AM4379的 I2C2_SDA 和 I2C2_SCL 引脚。

我已根据"Linux Core VPFE 用户指南"文档中包含的信息配置了内核、但有一个例外:我选择了 TW9906解码器支持、而不是 OV2659传感器支持。 我还将"多媒体支持"编译为 一个模块。

我已经修改了 am43x-epos-evm.dts、以包括用于 CAM_0至 CAM_7引脚以及 PCLK、VSYNC 和 HSYNC 引脚的正确引脚多路复用设置。 我还将 I2C 绑定从 I2C1移动到 I2C2、并将每次发生的 ov2659替换为 tw9906。

内核成功引导 至定制板上的命令行、modprobe 显示模块可用。

# modprobe -D tw9906
insmod /lib/modules/4.9.40/kernel/drivers/media/media.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/v4l2-core/videodev.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/v4l2-core/v4l2-common.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/i2c/tw9906.ko

# modprobe -D AM437X-VPFE.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/media.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/v4l2-core/videodev.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/v4l2-core/videobuf2-core.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/v4l2-core/videobuf2-v4l2.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/v4l2-core/videobuf2-memops.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/v4l2-core/v4l2-common.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/v4l2-core/videobuf2-dma-contig.ko
insmod /lib/modules/4.9.40/kernel/drivers/media/platform/am437x/am437x-vpfe.ko

我可以手动加载所有相关模块和 tw9906.ko、没有任何错误。

但是、在我加载所有 AM437X-VPFE.ko 相关模块并最终加载 AM437X-VPFE.ko 后、我会得到以下错误:

# modprobe -v media.ko
[281.958715]介质:Linux 介质接口:v0.10
# modprobe -v video.ko
[289.847537] Linux 视频捕捉接口:v2.00
# modprobe -v videobf2-core.ko
# modprobe -v videobuf2-v4l2.ko
# modprobe -v videobf2-memops.ko
# modprobe -v v4l2-common.ko
# modprobe -v video/dma-contg.ko
# modprobe -v AM437X-VPFE.ko
[349601145] VPFE 48326000.VPFE:无效总线宽度。
[349606027] VPFE 48326000.VPFE:无平台数据
[349612628] VPFE:48326000.VPFE 的探测失败,错误-22

我有三个问题:
1) 1)我的设计步骤是否正确?
2) 2)错误是什么意思?
3) 3)如何修复配置、以便能够从视频解码器捕获视频。

我们将感谢您的所有帮助和建议。

~Gary

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请共享您的 DTS 文件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ====

    此 DTS 文件适用于 ARM MPU AM437X 入门套件 EVM、因此 tw9906解码器驱动程序绑定到 i2c1。

    ====

    /*
    *版权所有(C) 2013德州仪器(TI)公司- http://www.ti.com/
    *
    *此程序是免费软件;您可以重新分发和/或修改
    *根据 GNU 通用公共许可证第2版的条款,如所示
    *由免费软件基金会发布。
    *

    /* AM43x EPOS EVM */

    /DTS-v1/;

    #include "am4372.dtsi"
    #include
    #include
    #include
    #include

    /{
    型号="TI AM43x EPOS EVM";
    兼容="ti、am43x-epos-evm"、"ti、am438x"、"ti、am43";

    别名{
    display0 = lcd0;
    };

    vmmcsd_fixed:fixedreguler-SD{
    兼容="稳压器固定";
    reguler-name ="vmmcsd_fixed";
    稳压器最小微伏=<3300000>;
    稳压器最大值微伏=<3300000>;
    使能端高电平有效;
    };

    VBAT:fixedregulator0{
    兼容="稳压器固定";
    稳压器名称="VBAT";
    稳压器最小微伏=<5000000>;
    稳压器最大值微伏=<5000000>;
    稳压器启动;
    };

    lcd0:显示{
    /*从英里'dt 开始。 这些时序在 u-boot 中起作用*/
    兼容="面板-dpi";
    标签="lcd";

    面板正时{
    /*时钟频率=<71100000>;*/
    时钟频率=<61100000>;
    停用=<1>;
    像素时钟激活=<0>;

    hactive =<1280>;
    后沿=<53>;
    前沿=<53>;
    HSYNC-LEN =<53>;
    HSYNC-ACTIVE =<1>;


    Vactive =<800>;
    后沿=<8>;
    垂直前沿=<8>;
    vsync-len =<8>;
    vsync-active =<1>;
    /*
    时钟频率=<9440000>;
    hactive =<1280>;
    Vactive =<800>;
    前沿=<30>;
    后沿=<30>;
    HSYNC-LEN =<20>;
    垂直前沿=<1>;
    后沿=<1>;
    vsync-len =<8>;
    HSYNC-ACTIVE =<1>;
    vsync-active =<1>;
    停用=<1>;
    像素时钟激活=<0>;
    *
    };

    端口{
    LCD_IN:端点{
    远程端点=<&dp_dout>;
    };
    };
    };

    /*固定12MHz 振荡器*/
    REFCLK:振荡器{
    #clock-cells =<0>;
    兼容="固定时钟";
    时钟频率=<12000000>;
    };

    matrial_keypad0{
    兼容="GPIO-matrial-keypad";
    去抖延迟 ms =<5>;
    col-scan-delay-us =<2>;

    ROT-GPIO =<&GPIO0 12 GPIO_ACTIVE_HIGH/*组0、pin12 *
    GPIO0 13 GPIO_ACTIVE_HIGH/*组0、pin13 *
    GPIO0 14 GPIO_ACTIVE_HIGH/*组0、pin14 *
    GPIO0 15 GPIO_ACTIVE_HIGH>;/*组0、pin15 */

    COF-GPIO =<&GPIO3 9 GPIO_ACTIVE_HIGH/*组3、pin9 *
    GPIO3 10 GPIO_ACTIVE_HIGH/*组3、pin10 *
    GPIO2 18 GPIO_ACTIVE_HIGH/*组2、pin18 *
    GPIO2 19 GPIO_ACTIVE_HIGH>;/*组2、pin19 *

    Linux、keymap =<0x00000201/* P1 */
    0x01000204/* P4 */
    0x02000207/* P7 */
    0x0300020a/* numeral_star *
    0x00010202/* P2 */
    0x01010205/* P5 */
    0x02010208/* P8 */
    0x03010200/* P0 */
    0x00020203/* P3 */
    0x01020206//* P6 *
    0x02020209/* P9 */
    0x03020b/* numeral_#*/
    0x00030067/*向上*/
    0x0103006A/*右*/
    0x0203006c/*向下*/
    0x03030069>;/*左*/
    };

    背光{
    兼容="PWM 背光";
    PWM =<&ecap0 50000 PWM_POLICAL_INPLEVINTED;
    亮度等级=<0 51 53 56 62 75 101 152 255>;
    default-brightse-level =<8>;
    };

    ??Sound0:Sound0{
    兼容="简单音频卡";
    simple-audio-card、name ="AM43-EPos-evm";
    simple-audio-card、小工具=
    "麦克风"、"麦克风插孔"、
    "耳机"、"耳机插孔"、
    "扬声器"、"扬声器";
    简单音频卡,路由=
    "MIC1LP"、"麦克风插孔"、
    "MIC1RP"、"麦克风插孔"、
    "MIC1LP"、"MICBIAS"、
    "MIC1RP"、"MICBIAS"、
    "耳机插孔"、"HPL"、
    "耳机插孔"、"HPR"、
    "扬声器"、"SPL"、
    "扬声器"、"SPR";
    simple-audio-card、format ="DSP_b";
    simple-audio-card、bitclock-master =<&sound0_master>;
    simple-audio-card、frame-master =<&sound0_master>;
    简单音频卡、位时钟反转;

    简单音频卡、CPU{
    Sound-Dai =<&McASP1>;
    系统时钟频率=<12000000>;
    };

    sound0_master:simple-audio-card、codec{
    Sound-Dai =<&TLV320AIC3111>;
    系统时钟频率=<12000000>;
    };
    };
    };

    am43xx_pinmux{(am43xx_pinmux)}
    pinctrl-names ="default"、"sleep";
    pinctrl-0 =<&wlan_pins_default>;
    pinctrl-1 =<&wlan_pins_sleep>;

    cpsw_default:cpsw_default{
    pinctrl-single、pins =<
    /*从属设备1 */
    AM4372_IOPAD (0x90c、PIN_INPUT 下拉| MUX_MODE1)/* mii1_crs.rmii1_crs *
    AM4372_IOPAD (0x910、PIN_INPUT 下拉| MUX_MODE1)/* mii1_rxerr.rmii1_rxer*
    AM4372_IOPAD (0x914、PIN_OUTPUT 下拉| MUX_MODE1)/* mii1_txen.rmii1_txen *
    AM4372_IOPAD (0x918、PIN_INPUT 下拉| MUX_MODE1)/* mii1_rxdv.rmii1_rxdv *
    AM4372_IOPAD (0x924、PIN_OUTPUT 下拉| MUX_MODE1)/* mii1_txd1.rmii1_txd1 *
    AM4372_IOPAD (0x928、PIN_OUTPUT 下拉| MUX_MODE1)/* mii1_txd0.rmii1_txd0 *
    AM4372_IOPAD (0x93c、PIN_INPUT 下拉| MUX_MODE1)/* mii1_rxd1.rmii1_rxd1 *
    AM4372_IOPAD (0x940、PIN_INPUT 下拉| MUX_MODE1)/* mii1_rxd0.rmii1_rxd0 *
    AM4372_IOPAD (0x944、PIN_INPUT 下拉| MUX_MODE0)/* rmii1_REFCLK/rmii1_REFCLK *
    >;
    };

    cpsw_sleep:cpsw_sleep{
    pinctrl-single、pins =<
    /*从器件1复位值*/
    AM4372_IOPAD (0x90c、PIN_INPUT 下拉| MUX_MODE7)
    AM4372_IOPAD (0x910、PIN_INPUT 下拉| MUX_MODE7)
    AM4372_IOPAD (0x914、PIN_INPUT 下拉| MUX_MODE7)
    AM4372_IOPAD (0x918、PIN_INPUT 下拉| MUX_MODE7)
    AM4372_IOPAD (0x924、PIN_INPUT 下拉| MUX_MODE7)
    AM4372_IOPAD (0x928、PIN_INPUT 下拉| MUX_MODE7)
    AM4372_IOPAD (0x93c、PIN_INPUT 下拉| MUX_MODE7)
    AM4372_IOPAD (0x940、PIN_INPUT 下拉| MUX_MODE7)
    AM4372_IOPAD (0x944、PIN_INPUT 下拉| MUX_MODE7)
    >;
    };

    DaVinci_MDIO_DEFAULT:DaVinci_MDIO_DEFAULT{
    pinctrl-single、pins =<
    /* MDIO */
    AM4372_IOPAD (0x948、PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)/* MDIO_DATA.MDIO_DATA *
    AM4372_IOPAD (0x94c、PIN_OUTPUT 上拉| MUX_MODE0)/* MDIO_clk.MDIO_clk *
    >;
    };

    DaVinci_MDIO_SLEEP:DaVinci_MDIO_SLEEP{
    pinctrl-single、pins =<
    /* MDIO 复位值*/
    AM4372_IOPAD (0x948、PIN_INPUT 下拉| MUX_MODE7)
    AM4372_IOPAD (0x94c、PIN_INPUT 下拉| MUX_MODE7)
    >;
    };

    i2c0_pins:pinmux_i2c0_pins{
    pinctrl-single、pins =<
    AM4372_IOPAD (0x988、PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)/* i2c0_sda.i2c0_sda *
    AM4372_IOPAD (0x98c、PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)/* i2c0_SCL.i2c0_SCL *
    >;
    };

    i2c1_pins:pinmux_i2c1_pins{
    pinctrl-single、pins =<
    AM4372_IOPAD (0x95c、PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_Mode2)/* spi0_cs0.i2cl_SCL *
    AM4372_IOPAD (0x958、PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_Mode2)/* spi0_D1.i2c1_sda *
    >;
    };

    i2c2_pins:pinmux_i2c2_pins{
    pinctrl-single、pins =<
    AM4372_IOPAD (0x9e8、PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE3)/* i2c2_sda.i2c2_sda *
    AM4372_IOPAD (0x9ec、PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE3)/* i2c2_SCL.i2c2_SCL *
    >;
    };

    NAND_FLASH_x8:NAND_FLASH_x8{
    pinctrl-single、pins =<
    AM4372_IOPAD (0x840、PIN_OUTPUT 下拉| MUX_MODE7)/* GPMC_a0.SELQSPIorNAND/GPIO *
    AM4372_IOPAD (0x800、PIN_INPUT_PULLUGDOWN | MUX_MODE0)/* GPMC_AD0.GPMC_AD0 *
    AM4372_IOPAD (0x804、PIN_INPUT_PULLUGDOWN | MUX_MODE0)/* GPMC_AD1.GPMC_AD1 *
    AM4372_IOPAD (0x808、PIN_INPUT_PULLUGDOWN | MUX_MODE0)/* GPMC_AD2.GPMC_AD2 *
    AM4372_IOPAD (0x80c、PIN_INPUT_PULLUGDOWN | MUX_MODE0)/* GPMC_AD3.GPMC_AD3 *
    AM4372_IOPAD (0x810、PIN_INPUT 下拉| MUX_MODE0)/* GPMC_AD4.GPMC_AD4 *
    AM4372_IOPAD (0x814、PIN_INPUT 下拉| MUX_MODE0)/* GPMC_AD5.GPMC_AD5 *
    AM4372_IOPAD (0x818、PIN_INPUT 下拉| MUX_MODE0)/* GPMC_AD6.GPMC_AD6 *
    AM4372_IOPAD (0x81c、PIN_INPUT_PULLUGDOWN | MUX_MODE0)/* GPMC_AD7.GPMC_AD7 *
    AM4372_IOPAD (0x870、PIN_INPUT_PULLUP | MUX_MODE0)/* GPMC_wait0.GPMC_wait0 *
    AM4372_IOPAD (0x874、PIN_OUTPUT 上拉| MUX_MODE7)/* GPMC_WPN.GPMC_WPN *
    AM4372_IOPAD (0x87c、PIN_OUTPUT | MUX_MODE0)/* GPMC_csn0.GPMC_csn0 *
    AM4372_IOPAD (0x890、PIN_OUTPUT | MUX_MODE0)/* GPMC_advn_ALe.GPMC_advn_ALE *
    AM4372_IOPAD (0x894、PIN_OUTPUT | MUX_MODE0)/* GPMC_oen_ren。GPMC_oen_ren *
    AM4372_IOPAD (0x898、PIN_OUTPUT | MUX_MODE0)/* GPMC_WN.GPMC_Wen *
    AM4372_IOPAD (0x89c、PIN_OUTPUT | MUX_MODE0)/* GPMC_be0n_cle。GPMC_be0n_cle *
    >;
    };

    ecap0_pins:backlight_pins{
    pinctrl-single、pins =<
    AM4372_IOPAD (0x964、MUX_MODE0) /* eCAP0_IN_PWM0_OUT.eCAP0_IN_PWM0_OUT MODE0 */
    >;
    };

    SPI1_Pins:pinmux_SPI1_Pins{
    pinctrl-single、pins =<
    AM4372_IOPAD (0x990、PIN_INPUT | MUX_MODE3) /* McASP0_aclkx.SPI1_clk *
    AM4372_IOPAD (0x994、PIN_OUTPUT | MUX_MODE3) /* McASP0_FSX.SPI1_d0 */
    AM4372_IOPAD (0x998、PIN_INPUT | MUX_MODE3) /* McASP0_axr0.SPI1_D1 */
    AM4372_IOPAD (0x99c、PIN_OUTPUT | MUX_MODE3) /* McASP0_ahclkr.SPI1_cs0 */
    >;
    };

    mmc1_pins:pinmux_mmc1_pins{
    pinctrl-single、pins =<
    AM4372_IOPAD (0x960、PIN_INPUT | MUX_MODE7)/* spi0_CS1.GPIO0_6 *
    >;
    };

    qspi1_default:qspi1_default{
    pinctrl-single、pins =<
    AM4372_IOPAD (0x87c、PIN_INPUT_PULLUP | MUX_MODE3)
    AM4372_IOPAD (0x888、PIN_INPUT_PULLUP | MUX_MODE2)
    AM4372_IOPAD (0x890、PIN_INPUT_PULLUP | MUX_MODE3)
    AM4372_IOPAD (0x894、PIN_INPUT_PULLUP | MUX_MODE3)
    AM4372_IOPAD (0x898、PIN_INPUT_PULLUP | MUX_MODE3)
    AM4372_IOPAD (0x89c、PIN_INPUT_PULLUP | MUX_MODE3)
    >;
    };

    像素 cir_ts_pins:像素 cir_ts_pins{
    pinctrl-single、pins =<
    AM4372_IOPAD (0x844、PIN_INPUT_PULLUP | MUX_MODE7)/* GPMC_A1.GPIO1_17 *
    >;
    };

    HDQ_Pins:pinmux_HDQ_Pins{
    pinctrl-single、pins =<
    AM4372_IOPAD (0xa34、PIN_INPUT_PULLUP | MUX_MODE1)/* CAM1_WN.HDQ_GPIO *
    >;
    };

    DSS_PINS:DSS_PINS{
    pinctrl-single、pins =<
    AM4372_IOPAD (0x820、PIN_OUTPUT 上拉| MUX_MODE1)/* GPMC AD 8 -> DSS 数据23 *
    AM4372_IOPAD (0x824、PIN_OUTPUT 上拉| MUX_MODE1)
    AM4372_IOPAD (0x828、PIN_OUTPUT 上拉| MUX_MODE1)
    AM4372_IOPAD (0x82c、PIN_OUTPUT 上拉| MUX_MODE1)
    AM4372_IOPAD (0x830、PIN_OUTPUT 上拉| MUX_MODE1)
    AM4372_IOPAD (0x834、PIN_OUTPUT 上拉| MUX_MODE1)
    AM4372_IOPAD (0x838、PIN_OUTPUT 上拉| MUX_MODE1)
    AM4372_IOPAD (0x83c、PIN_OUTPUT 上拉| MUX_MODE1)/* GPMC AD 15 -> DSS 数据16 *
    AM4372_IOPAD (0x8a0、PIN_OUTPUT 上拉| MUX_MODE0)/* DSS 数据0 *
    AM4372_IOPAD (0x8a4、PIN_OUTPUT 上拉| MUX_MODE0)
    AM4372_IOPAD (0x8a8、PIN_OUTPUT 上拉| MUX_MODE0)
    AM4372_IOPAD (0x8ac、PIN_OUTPUT 上拉| MUX_MODE0)
    AM4372_IOPAD (0x8b0、PIN_OUTPUT 上拉| MUX_MODE0)
    AM4372_IOPAD (0x8b4、PIN_OUTPUT 上拉| MUX_MODE0)
    AM4372_IOPAD (0x8B8、PIN_OUTPUT 上拉| MUX_MODE0)
    AM4372_IOPAD (0x8bc、PIN_OUTPUT 上拉| MUX_MODE0)
    AM4372_IOPAD (0x8c0、PIN_OUTPUT 上拉| MUX_MODE0)
    AM4372_IOPAD (0x8c4、PIN_OUTPUT 上拉| MUX_MODE0)
    AM4372_IOPAD (0x8c8、PIN_OUTPUT 上拉| MUX_MODE0)
    AM4372_IOPAD (0x8cc、PIN_OUTPUT 上拉| MUX_MODE0)
    AM4372_IOPAD (0x8d0、PIN_OUTPUT 上拉| MUX_MODE0)
    AM4372_IOPAD (0x8d4、PIN_OUTPUT 上拉| MUX_MODE0)
    AM4372_IOPAD (0x8d8、PIN_OUTPUT 上拉| MUX_MODE0)
    AM4372_IOPAD (0x8DC、PIN_OUTPUT 上拉| MUX_MODE0)/* DSS 数据15 *
    AM4372_IOPAD (0x8e0、PIN_OUTPUT 上拉| MUX_MODE0)/* DSS VSYNC *
    AM4372_IOPAD (0x8e4、PIN_OUTPUT 上拉| MUX_MODE0)/* DSS HSYNC *
    AM4372_IOPAD (0x8e8、PIN_OUTPUT 上拉| MUX_MODE0)/* DSS PCLK *
    AM4372_IOPAD (0x8ec、PIN_OUTPUT 上拉| MUX_MODE0)/* DSS 交流偏置 EN *
    >;
    };

    display_mux_pins:display_mux_pins{
    pinctrl-single、pins =<
    /* GPMC CLK -> GPIO 2_1以选择 LCD / HDMI */
    AM4372_IOPAD (0x88C、PIN_OUTPUT 上拉| MUX_MODE7)
    >;
    };

    vpfe0_pins_default:vpfe0_pins_default{
    pinctrl-single、pins =<
    AM4372_IOPAD (0x9b0、PIN_INPUT_PULLUP | MUX_MODE0)/* cam0_HD 模式0*/
    AM4372_IOPAD (0x9b4、PIN_INPUT_PULLUP | MUX_MODE0)/* cam0_VD 模式0*/
    AM4372_IOPAD (0x9b8、PIN_INPUT_PULLUP | MUX_MODE0)/* cam0_field 模式0*/
    AM4372_IOPAD (0x9bc、PIN_INPUT_PULLUP | MUX_MODE0)/* cam0_wen 模式0*/
    AM4372_IOPAD (0x9c0、PIN_INPUT_PULLUP | MUX_MODE0)/* cam0_pclk 模式0*/
    AM4372_IOPAD (0x9c4、PIN_INPUT_PULLUP | MUX_MODE0)/* cam0_data8模式0*/
    AM4372_IOPAD (0x9c8、PIN_INPUT_PULLUP | MUX_MODE0)/* cam0_data9模式0*/
    AM4372_IOPAD (0xa08、PIN_INPUT_PULLUP | MUX_MODE0)/* cam0_Data0模式0*/
    AM4372_IOPAD (0xa0c、PIN_INPUT_PULLUP | MUX_MODE0)/* cam0_data1模式0*/
    AM4372_IOPAD (0xa10、PIN_INPUT_PULLUP | MUX_MODE0)/* cam0_data2模式0*/
    AM4372_IOPAD (0xa14、PIN_INPUT_PULLUP | MUX_MODE0)/* cam0_data3模式0*/
    AM4372_IOPAD (0xa18、PIN_INPUT_PULLUP | MUX_MODE0)/* cam0_data4模式0*/
    AM4372_IOPAD (0xa1c、PIN_INPUT_PULLUP | MUX_MODE0)/* cam0_data5模式0*/
    AM4372_IOPAD (0xa20、PIN_INPUT_PULLUP | MUX_MODE0)/* cam0_data6模式0*/
    AM4372_IOPAD (0xa24、PIN_INPUT_PULLUP | MUX_MODE0)/* cam0_data7模式0*/
    >;
    };

    vpfe0_PINS_SLEEP:vpfe0_PINS_SLEEP{
    pinctrl-single、pins =<
    AM4372_IOPAD (0x9b0、DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)/* cam0_HD 模式0*/
    AM4372_IOPAD (0x9b4、DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)/* cam0_VD 模式0*/
    AM4372_IOPAD (0x9b8、DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)/* cam0_field 模式0*/
    AM4372_IOPAD (0x9bc、DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)/* cam0_wen 模式0*/
    AM4372_IOPAD (0x9c0、DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)/* cam0_pclk 模式0*/
    AM4372_IOPAD (0x9c4、DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)/* cam0_data8模式0*/
    AM4372_IOPAD (0x9c8、DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)/* cam0_data9模式0*/
    AM4372_IOPAD (0xa08、DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)/* cam0_Data0模式0*/
    AM4372_IOPAD (0xa0c、DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)/* cam0_data1模式0*/
    AM4372_IOPAD (0xa10、DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)/* cam0_data2模式0*/
    AM4372_IOPAD (0xa14、DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)/* cam0_data3模式0*/
    AM4372_IOPAD (0xa18、DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)/* cam0_data4模式0*/
    AM4372_IOPAD (0xa1c、DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)/* cam0_data5模式0*/
    AM4372_IOPAD (0xa20、DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)/* cam0_data6模式0*/
    AM4372_IOPAD (0xa24、DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)/* cam0_data7模式0*/
    >;
    };

    wlan_pins_default:pinmux_wlan_pins_default{
    pinctrl-single、pins =<
    AM4372_IOPAD (0x850、PIN_OUTPUT 下拉| MUX_MODE7)/* GPMC_A4.GPIO1_20 WL_EN *
    AM4372_IOPAD (0x85c、PIN_INPUT | WAKEUP_ENABLE | MUX_MODE7)/* GPMC_A7.GPIO1_23 WL_IRQ*/
    AM4372_IOPAD (0x840、PIN_OUTPUT 下拉| MUX_MODE7)/* GPMC_a0.GPIO1_16 BT_EN*/
    >;
    };

    wlan_pins_sleep:pinmux_wlan_pins_sleep{
    pinctrl-single、pins =<
    AM4372_IOPAD (0x850、PIN_OUTPUT 下拉| MUX_MODE7)/* GPMC_A4.GPIO1_20 WL_EN *
    AM4372_IOPAD (0x85c、PIN_INPUT | WAKEUP_ENABLE | MUX_MODE7)/* GPMC_A7.GPIO1_23 WL_IRQ*/
    AM4372_IOPAD (0x840、PIN_OUTPUT 上拉| MUX_MODE7)/* GPMC_a0.GPIO1_16 BT_EN*/
    >;
    };

    McASP1_PINS:McASP1_PINS{
    pinctrl-single、pins =<
    AM4372_IOPAD (0x9a0、PIN_INPUT 下拉| MUX_MODE3)/* McASP0_ACLKR/McASP1_ACLKX *
    AM4372_IOPAD (0x9a4、PIN_INPUT 下拉| MUX_MODE3)/* McASP0_FSR/McASP1_FSX *
    AM4372_IOPAD (0x9a8、PIN_OUTPUT 下拉| MUX_MODE3)/* McASP0_AXR1/McASP1_AXR0 *
    AM4372_IOPAD (0x9ac、PIN_INPUT 下拉| MUX_MODE3)/* McASP0_AHCLKX/McASP1_AXR1 *
    >;
    };

    McASP1_SLEEP_PINS:McASP1_SLEEP_PINS{
    pinctrl-single、pins =<
    AM4372_IOPAD (0x9a0、PIN_INPUT 下拉| MUX_MODE7)
    AM4372_IOPAD (0x9a4、PIN_INPUT 下拉| MUX_MODE7)
    AM4372_IOPAD (0x9a8、PIN_INPUT 下拉| MUX_MODE7)
    AM4372_IOPAD (0x9ac、PIN_INPUT 下拉| MUX_MODE7)
    >;
    };
    };

    mmc1{(&M)
    状态="正常";
    VMMC-SUPPLY =<&vmmcsd_fixed>;
    总线宽度=<4>;
    pinctrl-names ="default";
    pinctrl-0 =<&mmc1_PINs>;
    CD-GPIO =<&GPIO0 6 GPIO_ACTIVE_LOW>;
    };

    Mac{(&M)
    pinctrl-names ="default"、"sleep";
    pinctrl-0 =<&cpsw_default>;
    pinctrl-1 =<&cpsw_sleep>;
    状态="正常";
    };

    DaVinci_MDIO{
    pinctrl-names ="default"、"sleep";
    pinctrl-0 =<&Davinc_MDIO_default>;
    pinctrl-1 =<&Davinc_MDIO_SLEEP>;
    状态="正常";
    };

    cpsw_emac0{&cpsw_emac0}
    PHY_ID =<&Davinci_MDIO>、<16>;
    PHY-MODE ="RMII";
    };

    cpsw_emac1{&cpsw_emac1}
    PHY_ID =<&Davinci_MDIO>、<1>;
    PHY-MODE ="RMII";
    };

    phy_SEL{&
    RMII-时钟-外部;
    };

    i2c0{(&I)
    状态="正常";
    pinctrl-names ="default";
    pinctrl-0 =<&i2c0_PINs>;
    时钟频率=<400000>;

    tps65218:tps65218@24{
    reg =<0x24>;
    兼容="ti、tps65218";
    中断= ;/* nMIN */
    中断控制器;
    #interrupt-cells =<2>;

    dcdc1:电脑控制器- dcdc1{
    稳压器名称="VDD_CORE";
    稳压器最小微伏=<912000>;
    稳压器最大微伏=<1144000>;
    稳压器启动;
    稳压器常开;
    };

    dcdc2:reguler-dc2{
    稳压器名称="VDD_MPU";
    稳压器最小微伏=<912000>;
    稳压器最大值微伏=<1378000>;
    稳压器启动;
    稳压器常开;
    };

    dcdc3:reguler-dc3{
    电脑控制器名称="vdcdc3";
    稳压器最小微伏=<1500000>;
    稳压器最大值微伏=<1500000>;
    稳压器启动;
    稳压器常开;
    };

    dcdc4:reguler-dc4{
    电脑控制器名称="vdcdc4";
    稳压器最小微伏=<3300000>;
    稳压器最大值微伏=<3300000>;
    稳压器启动;
    稳压器常开;
    };

    dcdc5:reguler-dc5{
    电脑控制器名称="v1_0bat";
    稳压器最小微伏=<1000000>;
    稳压器最大微伏=<1000000>;
    };

    dcdc6:电脑控制器- dcdc6{
    电脑控制器名称="v1_8bat";
    稳压器最小微伏=<1800000>;
    稳压器最大值微伏=<1800000>;
    };

    ldo1:reguler-ldo1{
    稳压器最小微伏=<1800000>;
    稳压器最大值微伏=<1800000>;
    稳压器启动;
    稳压器常开;
    };
    };

    at24@50{
    兼容="at24、24c256";
    pagesize =<64>;
    reg =<0x50>;
    };

    PIXcir_ts@5c{
    兼容="Pixcir、pixcir_tangoc";
    pinctrl-names ="default";
    pinctrl-0 =<&pixcir_ts_pines>;
    reg =<0x5c>;
    interrupt-parent =<&GPIO1>;
    中断=<17 IRQ_TYPE_EDGE_FALLING>;

    attb-gpio =<&GPIO1 17 GPIO_ACTIVE_HIGH_>;

    触摸屏大小 x =<1024>;
    触摸屏大小-y =<600>;
    };

    TLV320AIC3111:TLV320AIC3111@18{
    #sound-di-cells =<0>;
    兼容="ti、TLV320AIC3111";
    reg =<0x18>;
    状态="正常";

    ai31xx 微偏置 vg = ;

    /*稳压器*/
    HPVDD-SUPPLY =<&dcdc4>;/* v3_3AUD -> V3_3D -> DCDC4 *
    SPRVDD 电源=<VBAT>;/* VBAT */
    SPLVDD-SUPPLY =<VBAT>;/* VBAT */
    AVDD-SUPPLY =<&dcdc4>;/* v3_3AUD -> V3_3D -> DCDC4 *
    IOVdd-supply =<&dcdc4>;/* V3_3D -> DCDC4 */
    DVDD 电源=<&ldo1>;/* V1_8AUD -> V1_8D -> LDO1 */
    };

    };

    i2c1{(&I)
    状态="正常";
    pinctrl-names ="default";
    pinctrl-0 =<&i2c1_PINs>;
    时钟频率=<100000 >;

    tw9906_1@30{
    兼容="techwell、tw9906";
    reg =<0x30>;

    时钟=<&REFCLK 0>;
    时钟名称="xvclk";

    端口{
    tw9906_1:端点{
    远程端点=<&V pfe0_EP>;
    链路频率=/bits/64 <70000000>;
    /*总线宽度=<8>;*/
    /* MCLK 频率=<12000000>;*/
    };
    };
    };
    };

    i2c2{(&I)
    状态="正常";
    pinctrl-names ="default";
    pinctrl-0 =<&i2c2_PINs>;
    };

    GPIO0{&gpio0}
    状态="正常";
    };

    GPIO1{&gpio1}
    状态="正常";
    };

    GPIO2{
    pinctrl-names ="default";
    pinctrl-0 =<&display_mux_pines>;
    状态="正常";

    P1{
    /*
    * SelLCDorHDMI 在显示和音频路径之间进行选择:
    *低:通过 HDMI 显示音频
    *高:通过 aic3111编解码器显示模拟音频的 LCD
    *
    GPIO-hog;
    GPIO =<1 GPIO_ACTIVE_HIGH_>;
    输出高电平;
    线路名称="SelLCDorHDMI";
    };
    };

    GPIO3{&G
    状态="正常";
    };

    等距{(&E)
    状态="正常";
    };

    GPMC{
    状态="正常";//启用 GPMC (NAND)时禁用 QSPI */
    pinctrl-names ="default";
    pinctrl-0 =</nand_flash_x8>;
    范围=<0 0x08000000 0x01000000>;/* CS0空间。 最小分区= 16MB */
    NAND@0、0{
    兼容="ti、OMAP2-nand";
    reg =<0 0 4>;/* CS0、偏移量0、IO 大小4 */
    interrupt-parent =<&GPMC>;
    中断=<0 IRQ_TYPE_NONE>、/* FIFO 事件*/
    <1 IRQ_TYPE_None>;// termCOUNT */
    RB-GPIO =<&GPMC 0 GPIO_ACTIVE_HIGH>;/* GPMC_wait0 */
    TI、nand-ecc-opt ="bch16";
    TI、elm-id =<和 elm>;
    NAND-BUS 宽度=<8>;
    GPMC、器件宽度=<1>;
    GPMC、SYNC-clk-ps =<0>;
    GPMC、cs-on-ns =<0>;
    GPMC、cs-rd-Off-ns =<40>;/* tCEA + tCHZ + 1 */
    GPMC、cs-wr-off-ns =<40>;
    GPMC、Adv-on-ns =<0>;/* cs-on-ns *
    GPMC、Adv-rd-Off-ns =<25>;/* min (tALH + TAL + 1)*
    GPMC、Adv-wr-off-ns =<25>;/* min (tALH + TAL + 1)*
    GPMC、WE-ON-ns =<0>;// cs-on-ns *
    GPMC、WE-OFF-ns =<20>;// WE-ON-TIME + TWP + 2 */
    GPMC、OE-ON-ns =<3>;/* cs-on-ns + TRR + 2 */
    GPMC、OE-OFF-ns =<30>;/* OE-ON-ns + TRP + 2 */
    GPMC、ACCESS ns =<30>;/* tCEA + 4*/
    GPMC、第周期-ns =<40>;
    GPMC、功率周期-ns =<40>;
    GPMC、总线翻转-ns =<0>;
    GPMC、cycle2cycle-delay-ns =<0>;
    GPMC、clk-activation-ns =<0>;
    GPMC、wr 访问-ns =<40>;
    GPMC、wr-data-mux-bus-ns =<0>;
    /* MTD 分区表*/
    /*所有 SPL-*分区的大小均为最小长度
    可独立编程。 原因
    * NAND 闪存这等于擦除块的大小*/
    #address-cells =<1>;
    大小单元格=<1>;
    分区@0{
    标签="NAND.SPL";
    REG =<0x00000000 0x00040000>;
    };
    分区@1{
    标签="NAND.SPL.Backup1";
    REG =<0x00040000 0x00040000>;
    };
    分区@2{
    标签="NAND.SPL.Backup2";
    REG =<0x00080000 0x00040000>;
    };
    分区@3{
    标签="NAND.SPL.backup3";
    REG =<0x000C0000 0x00040000>;
    };
    分区@4{
    标签="NAND.u-boot-spl-os";
    REG =<0x00100000 0x00080000>;
    };
    分区@5{
    标签="NAND.u-BOOT";
    REG =<0x00180000 0x00100000>;
    };
    分区@6{
    标签="NAND.u-boot-env";
    REG =<0x00280000 0x00040000>;
    };
    分区@7{
    标签="NAND.u-boot-env.Backup1";
    REG =<0x002C0000 0x00040000>;
    };
    分区@8{
    标签="NAND.kernel";
    REG =<0x00300000 0x00700000>;
    };
    分区@9{
    标签="NAND.file-system";
    REG =<0x00a00000 0x1f600000>;
    };
    };
    };

    epwms0{(&E)
    状态="正常";
    };

    tscadc{(&T)
    状态="正常";

    ADC{
    TI、ADC 通道=<0 1 2 3 4 5 6 7>;
    };
    };

    ecap0{(&E)
    状态="正常";
    pinctrl-names ="default";
    pinctrl-0 =<&ecap0_PINs>;
    };

    SPI1{(&S)
    pinctrl-names ="default";
    pinctrl-0 =<&SPI1_PINs>;
    状态="正常";
    };

    &USB2_phy1{
    状态="正常";
    };

    USB1{(&S)
    DR_MODE ="外设";
    状态="正常";
    };

    &USB2_phy2{
    状态="正常";
    };

    USB2{
    DR_MODE ="主机";
    状态="正常";
    };

    &QSPI{
    状态="禁用";//启用 QSPI 时禁用 GPMC (NAND)
    pinctrl-names ="default";
    pinctrl-0 =<&qspi1_default>;

    SPI-max-frequency =<48000000>;
    m25p80@0{
    兼容="mx66l51235l";
    SPI-max-frequency =<48000000>;
    reg =<0>;
    SPI-cpol;
    spi-cpha;
    SPI-TX-bus-width =<1>;
    SPI-Rx-bus-width =<4>;
    #address-cells =<1>;
    大小单元格=<1>;

    /* MTD 分区表。
    * ROM 检查第一个512KiB
    *用于引导有效文件(XIP)。
    *
    分区@0{
    标签="qspi.U_boot";
    REG =<0x00000000 0x000080000>;
    };
    分区@1{
    标签="qspi.U_boot.backup";
    REG =<0x00080000 0x00080000>;
    };
    分区@2{
    标签="qspi.U-boot-spL_os";
    REG =<0x00100000 0x00010000>;
    };
    分区@3{
    标签="QSPI.U_BOOT_ENV";
    REG =<0x00110000 0x00010000>;
    };
    分区@4{
    label ="qspi.U-boot-env.backup";
    REG =<0x00120000 0x00010000>;
    };
    分区@5{
    标签="qspi.kernel";
    REG =<0x00130000 0x0800000>;
    };
    分区@6{
    label ="qspi.filesystem;
    REG =<0x00930000 0x36D0000>;
    };
    };
    };

    HDQ{&d
    状态="正常";
    pinctrl-names ="default";
    pinctrl-0 =<&HDQ_PINs>;
    };

    DSS{
    状态="ok";

    pinctrl-names ="default";
    pinctrl-0 =<&dss_PINs>;

    端口{
    DPI_OUT:端点{
    远程端点=<&LCD_IN>;
    数据线=<24>;
    };
    };
    };

    vpfe0{_vpfe0}(&V)
    状态="正常";
    pinctrl-names ="default"、"sleep";
    pinctrl-0 =<&V vpfe0_PINS_DEFAULT>;
    pinctrl-1 =<&V vpfe0_PINS_SLEEP>;


    /*摄像机端口*/
    端口{
    vpfe0_EP:端点{
    远程端点=<&tw9906_1>;
    TI、AM437X-VPFE-interface =<0>;
    bus_width =<8>;
    HSYNC-ACTIVE =<0>;
    vsync-active =<0>;
    /* hdpol =<0>;*/
    /* vdpol =<0>;*/
    };
    };
    };


    McASP1{
    #sound-di-cells =<0>;
    pinctrl-names ="default"、"sleep";
    pinctrl-0 =<&McASP1_PINs>;
    pinctrl-1 =<&McASP1_SLEEP_PINs>;

    状态="正常";

    OP-MODE =<0>; /* mcasp_iis_mode */
    TDM-SLOTS =<2>;
    /* 4串行器*/
    serial-dir =</* 0:非活动、1:TX、2:Rx *
    1 2 0 0
    >;
    tx-num-evt =<32>;
    Rx-num-evt =<32>;
    };

    synctimer_32kclk{(synctimer_32kclk)
    分配的时钟=<&mux_synctimer32k_ck>;
    分配的时钟父级=<&clkdiv32k_ick>;
    };

    ====
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请在此处查看排印错误。 它应该是总线宽度。  


    /*摄像机端口*/
    端口{
    vpfe0_EP:端点{
    远程端点=<&tw9906_1>;
    TI、AM437X-VPFE-interface =<0>;
    bus_width =<8>;
    HSYNC-ACTIVE =<0>;
    vsync-active =<0>;
    /* hdpol =<0>;*/
    /* vdpol =<0>;*/
    };
    };
    };