主题中讨论的其他器件:TPD12S015
工具/软件:Linux
您好、香榭丽舍
我们希望禁用每个器件树中不使用的所有单元。 这适用于 RTC、PCI、ABB 和 SATA、但删除 DSS 不起作用。 我们尝试了如下方法:
DSS{
时钟=<&dummy_ck>;
};
或:
DSS{
STATUS =“禁用”;
};
但没有成功。
我们在这里缺少什么?
谢谢、此致、
1和0
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
您好、香榭丽舍
我们希望禁用每个器件树中不使用的所有单元。 这适用于 RTC、PCI、ABB 和 SATA、但删除 DSS 不起作用。 我们尝试了如下方法:
DSS{
时钟=<&dummy_ck>;
};
或:
DSS{
STATUS =“禁用”;
};
但没有成功。
我们在这里缺少什么?
谢谢、此致、
1和0
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";
};
删除时钟和时钟名称。
此致、
帕维尔
[引用 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
[引用 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。
此致、
帕维尔