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/AM5728:禁用每个器件树的 DSS

Guru**** 2589275 points
Other Parts Discussed in Thread: TPD12S015

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/586524/linux-am5728-disabling-dss-per-device-tree

器件型号:AM5728
主题中讨论的其他器件:TPD12S015

工具/软件:Linux

您好、香榭丽舍

我们希望禁用每个器件树中不使用的所有单元。 这适用于 RTC、PCI、ABB 和 SATA、但删除 DSS 不起作用。 我们尝试了如下方法:

DSS{

           时钟=<&dummy_ck>;

};

或:

DSS{

           STATUS =“禁用”;

};

但没有成功。

我们在这里缺少什么?

谢谢、此致、

1和0

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

    您正修改哪些文件? 应修改的 DTS 文件包括:

    linux-kernel/arch/arm/boot/dts/dra7.dtsi
    linux-kernel/arch/arm/boot/dts/dra74x.dtsi

    您还可以从 menuconfig 中删除 DSS 支持、请参阅下面的 wiki 页面:

    processors.wiki.ti.com/.../Linux_Core_DSS_User's_Guide

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

    您好、Pavel、

    使用 menuconfig/omapdrm 不是一个选项。

    我们已按照我之前的帖子中所述修改了 dra7器件树文件。

    您能否提供更详细的指导、因为标准程序显然不起作用。 也许您可以在结尾处重现此问题

    此致、

    1和0  

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

    您能否附加 DRA7器件树文件(dra7.dtsi 和 dra74x.dtsi)的修改版本、我想看一看。

    您能否还提供更多详细信息、了解修改 DRA7器件树文件后会发生什么情况? LCD 显示屏上是否仍然有矩阵 GUI?

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

    one and zere 说:
    使用 menuconfig/omapdrm 不是一个选项。

    为什么? 您能否提供更多详细信息、了解哪些因素会阻止您通过 menuconfig/omapdrm 从 Linux 内核中删除 DSS 支持?


    DSS 支持默认从 tisdk_am57xx-evm_defconfig 文件中启用。 您可以通过 menuconfig 禁用它:

    设备驱动程序->图形支持

    < > OMAP DRM

    < > 针对 TI LCDC 显示控制器的 DRM 支持

    此致、
    帕维尔

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

    您好、Pavel、

    这是针对不带显示屏的产品构建的客户内核。 因此、我们不希望内核中提供图形支持。 我们不想从 c 源中手动删除代码。

    因此、选择的方法是通过修改器件树进行配置。 但在添加时不起作用

    DSS{

               时钟=<&dummy_ck>;

    };

    或:

    DSS{

               STATUS =“禁用”;

    };

    Linux 内核/arch/arm/boot/dts/dra7.dtsi
    linux-kernel/arch/arm/boot/dts/dra74x.dtsi

    我们认为应该这样做。

    此致、

    1和0

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

    1和0、

    [引用 user="one 和 zero ]*这是为不带显示屏的产品构建的客户内核。 因此、我们不希望内核中提供图形支持。 我们不希望从 c 源中手动删除代码。

    因此、您应该使用特定于定制板的 defconfig 文件、不能使用适用于 AM572x EVM 的 tisdk_am57xx-evm_defconfig。 在 defconfig 文件中,应删除 omapdrm 支持,因此无需通过 menuconfig 进行任何更改。

    因此,选择的方法是通过修改设备树进行配置。 但它不起作用

    默认情况下、我们有:

    dra7.dtsi

    DSS:DSS@58000000{
             兼容="ti、dra7-dss";
             /*在 dra72x.dtsi 和 dra74x.dtsi 中定义的'reg'*
             /*在 dra72x.dtsi 和 dra74x.dtsi 中定义的"时钟"*/
             STATUS ="禁用";
             ti、hwmods ="dss_core";
             /* CTRL_CORE_DSS_PLL_CONTROL *
             SYSCON-PLL-Ctrl =<&SCM_conf 0x538>;
             #address-cells =<1>;
             大小单元格=<1>;
             范围;

             dispc@58001000{
                compatible ="ti,dra7-dispc";
                reg =<0x58001000 0x1000>;
                中断= ;
                ti、hwmods ="DSS_dispc";
                时钟=<&DSS_DSS_clk>;
                时钟名称="Fck";
                /* CTRL_CORE_SMA_SW_1 */
                SYSCON-POL =<&SCM_conf 0x534>;
             };

             HDMI:编码器@58060000{
                兼容="ti、dra7-HDMI";
                REG =<0x58040000 0x200>、
                     0x58040200 0x80>、
                     0x58040300 0x80>、
                     0x58060000 0x19000>;
                reg-names ="wP"、"pll"、"phy"、"core";
                中断= ;
                STATUS ="禁用";
                ti、hwmods ="DSS_HDMI";
                时钟=<&DSS_48MHz_clk>、<&DSS_HDMI_clk>;
                时钟名称="fck"、"sys_clk";
                DMA =<&sdma_Xbar 76>;
                dma-names ="Audio:TX";
             };
          };

    删除了 SYSCON-PLL-Ctrl、dispc 和 HDMI。

    dra74x.dtsi

    DSS{
       REG =<0x58000000 0x80>、
            0x58004054 0x4>、
            0x58004300 0x20>、
            0x58009054 0x4>、
            0x58009300 0x20>;
       reg-names ="DSS"、"pll1_clkctrl"、"pll1"、
             "pll2_clkctrl"、"pll2";

       时钟=<&DSS_DSS_clk>、
          <&DS_video_clk>、
          <&DS_video2_clk>;
       时钟名称="Fck、"video1_clk"、"video2_clk";
    };

    删除时钟和时钟名称。

    此致、
    帕维尔

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

    这不是我们真正想要做的事情。 建议您仍然修改原始内核中的两个现有文件,我们认为这是“修补”–我们不希望这样做。
    我们只希望从我们自己的器件树中过载设置。 请建议如何做到这一点。

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

    [引用 user="one 和 zer"]建议您仍修改原始内核中的两个现有文件

    如果我们将 zImage 视为内核、我的建议不会修改 zImage。

    对于 AM572x TI EVM、我们有 MLO、u-boot-spl.bin、u-boot.img、zImage 和 am57xx-evm.dTB。 当修改 dra74x.dtsi 和 dra7.dtsi 文件时、将产生新的 am57xx-evm.dtb、但 zImage 仍然相同。

    要删除 DSS 支持、我可以考虑3种方法:

    1.直接修改 Linux 内核代码并从代码中删除 DSS 支持。 这将导致新的 zImage。 不建议采用这种方法。

    2.修改 defconfig 文件。 这将导致新的 zImage。

    3.修改设备树文件。 这将导致新的设备树出现斑点。

    [引用 user="one 和 zere">我们只想从我们自己的器件树中过载设置。 请告知如何执行此操作。[/报价]

    您能否提供有关"仅我们自己的器件树"定义的更多详细信息? 您的设备树是什么?

    此致、
    帕维尔

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

    您好、Pavel、

    我附加了当前器件树文件。 请注意、这仍然包含大量实验材料、需要一些清理、但它显示了我们想要实现的目标。

    有趣的部分是底部带有“STATUS=DISABLED”的所有部分。

    我们设法禁用了大部分未使用的单元、但与 DSS 有关的所有内容都不显示所需的效果。

    我怀疑根本原因是代码中的缺陷,无法正确执行“status=disabled”设置。

    是否可以在 Linux 内核中提供修复此问题的补丁? 或提供适当的权变措施。

    或者、我们还试图通过告诉子系统它在固定的0Hz 时钟上运行、或者在关闭的电源域上运行来欺骗系统、但这也没有帮助。

    此致、

    1和0

    e2e.ti.com/.../8308.Custom.zip

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

    [引用 user="one 和 zero "]

    我附加了当前器件树文件。 请注意、这仍然包含大量实验材料、需要一些清理、但它显示了我们想要实现的目标。

    有趣的部分是底部带有“STATUS=DISABLED”的所有部分。

    [/报价]

    在 AM572x TI EVM 中、该 dts 主文件是 am57xx-evm.dts、其中包括 am57xx-beagle-x15.dts、am57xx-beagle-x15-common.dtsi、dra74x.dtsi、dra7.dtsi。 在 dra7x.dtsi 中、我们介绍了 DSS 并使其禁用(status ="disabled")。 然后在 am57xx-beagle-x15-common.dtsi 中、我们将启用它:

    DSS{
       状态="ok";

       VDDA_VIDEO_SUPPLY =<&ldoln_reg>;
    };

    HDMI{(&H)
       状态="ok";
       VDDA-SUPPLY =<&ldo4_reg>;

       端口{
          HDMI_OUT:端点{
             远程端点=<&tpd12s015_in_>;
          };
       };
    };

    而主 DTS 文件是 Custom.dts、其中包括 dra74x.dtsi、dra7.dtsi。 您需要从 dts 主文件 Custom.dts 中禁用 DSS。

    我建议键入 Custom.dts 文件的更新:

    1.删除对 DSS、HDMI、dispc、dss_dss_clk、dss_video1_clk、 dss_video2_clk、dss_dcdcp_clk。 由于 DSS 在 dra7.dtsi 中默认处于禁用状态、因此您只需在 Custom.dts 中启用它即可。 请尝试使用此方法、并告诉我结果。

    请参阅 am57xx-beagle-x15-common.dtsi、我们可以看到:

    DSS{
       状态="ok";

       VDDA_VIDEO_SUPPLY =<&ldoln_reg>;
    };

    HDMI{(&H)
       状态="ok";
       VDDA-SUPPLY =<&ldo4_reg>;

       端口{
          HDMI_OUT:端点{
             远程端点=<&tpd12s015_in_>;
          };
       };
    };

    仅在 Custom.dts 文件中添加这两个条目、并将仅状态从"确定"更改为"禁用"。 请尝试使用此方法、并告诉我结果。

    [引用 user="one 和 zero"]我怀疑根本原因是代码中存在缺陷,无法正确执行“status=disabled”设置。

    状态设置在以下文件和函数中进行检查:

    linux-kernel/drivers/of /base.c

    静态 bool __of _device_is 可用(const 结构 device_node *设备)

       const char * status;
       int statlen;

       如果(!device)
          返回 false;

       status =__for_get_property (device、"status"、statlen);
       if (status == NULL)
          返回 true;

       如果(statlen >0){
          if (!strcmp (status、"oke")||!strcmp (status、"ok"))
             返回 true;
       }

       返回 false;

     

    您能否检查在调用 DSS 时此函数返回什么(true/enable 或 false/disable)?

    此函数在中调用:

    linux-kernel/arch/arm/mach-omap2/display.c -> omapdss_init_of ()-> of _device_is_available (node);

    linux-kernel/drivers/GPU/DRM/omapdrm/dss/omapdss-boot-init.c -> omapdss_boot_init ()-> of _device_is_available (dss);

    linux-kernel/drivers/video/fbdev/omapfb/dss/omapdss-boot-init.c -> of_device_is 可用(dss);

     

     

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

    1和0、

    我对 AM572x TI EVM 修订版 A2进行了一次测试。 我可以成功地从 am57xx-beagle-x15-common.dtsi 文件中删除 DSS 支持(该文件应与您的自定义文件对应)。 DTS 文件)。

    首先、当我使用默认的 am57xx-evm.dtb 文件时、我在 LCD 屏幕上显示"Matrix App Launcher v2 P1"、并在内核启动期间显示以下消息:

    OMAP DSS 6.1版

    omapdss_dss 58000000.dss:bound 58001000.dispc (ops dispc_component_ops)

    omapdss_DSS 58000000.dss:bound 58040000.encoder (ops hdmi5_component_ops)

    OMAP-HDMI-AUDIO omap-hdmi-audio.0.auto: snd-so-dummy dai <->58040000编码器映射正常

    [DRM]支持 vblank 时间戳缓存修订版2 (2013年10月21日)

    [DRM]不支持 vblank 时间戳查询的驱动程序。

    [DRM]启用 DMM 回绕滚动

    omapdrm omapdrm.0:fb0:omapdrm 帧缓冲器件

    [DRM]在次要0上初始化 omapdrm 1.0.0 20110917

     

    我在用户空间中具有以下寄存器值:

    CM_DSS_CLKSTCTRL = 0x703

    CM_DSS_DSS_CLKCTRL = 0x1102

    CM_DSS_PWRST= 0x37

     

    当我仅修改 am57xx-beagle-x15-common.dtsi 文件(如下所示)时、我删除了 DSS 支持。

    DSS{
       STATUS ="禁用";//STATUS ="确定";

       VDDA_VIDEO_SUPPLY =<&ldoln_reg>;
    };

    bb2d{(&B)
       STATUS ="禁用";//STATUS ="确定";
    };

    HDMI{(&H)
       STATUS ="禁用";//STATUS ="确定";
       VDDA-SUPPLY =<&ldo4_reg>;

       端口{
          HDMI_OUT:端点{
             远程端点=<&tpd12s015_in_>;
          };
       };
    };

     

    我生成新的 am57xx-evm.dtb 文件(基于修改后的 am57xx-beagle-x15-common.dtsi 文件)、因此我没有与 DSS、HDMI 和 DRM (上面列出)相关的内核消息、LCD 显示屏上没有任何内容(没有"Matrix App Launcher v2 P1")。

    我在用户空间中具有以下寄存器值:

    CM_DSS_CLKSTCTRL = 0x3

    CM_DSS_DSS_CLKCTRL = 0x70000

    CM_DSS_PWRST= 0x0

     

    此致、
    帕维尔

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

    我还尝试了以下修改。 在 am57xx-beagle-x15-common.dtsi 中、我只需删除 DSS 节点(不再需要):

    oppdm_core{(&O)

    VDD-SUPPLY =<&S;

    };

    /*&DSS{

    状态="ok";

    VDDA_VIDEO_SUPPLY =<&ldoln_reg>;

    };*/

    bb2d{(&B)

    状态="正常";

    };

    HDMI{(&H)

    状态="ok";

    VDDA-SUPPLY =<&ldo4_reg>;

    端口{

    HDMI_OUT:端点{

    远程端点=<&tpd12s015_in_>;

    };

    };

    };

     

    采用这种方法时、也会在 AM572x TI EVM 上成功禁用 DSS。

     

    此致、
    帕维尔