团队、您好!
我们有一个基于 AM3354、运行内核5.10的定制平台。 在 GPMC 总线上、我们在第一个芯片选择(CS0)上有一个 NAND 闪存、其运行正常。 在第二个芯片选择(CS1)上、我们有多个兼容 NS16550的外部 UART (XR16M752)实例。
GPMC 片选会启用所有外部 UART、然后应根据 GPMC_A3/4/5的值选择其中一个。 我在器件树中使用以下代码段仅启用了 UART 的第一个实例
ext_uart@1,0 {
compatible = "ns16550a";
reg = <1 0 0x01000000>;
#address-cells = <1>;
#size-cells = <1>;
fifo-size = <64>;
clock-frequency = <3686400>;
bank-width = <1>;
gpmc,device-width = <1>; /* 8-bit data width */
gpmc,cs-on-ns = <0>; /* Assertion time */
gpmc,cs-rd-off-ns = <20>; /* Read deassertion time */
gpmc,cs-wr-off-ns = <20>; /* Write deassertion time */
gpmc,sync-clk-ps = <20000>;
};
捕获和存储数据。 在运行时、已成功探测器件、
[ 2.320974] 9000000.ext_uart: ttyS1 at MMIO 0x9000000 (irq = 0, base_baud = 230400) is a 16550A
但是、当我尝试写入 ttyS1时,
# echo 1 >/dev/ttyS1
目标挂起。 我正在继续我的调查,但希望在这个过程的早期得到专家的意见。
我有以下初始问题
- 对于将在同一芯片选择上使用多个子器件的 GPMC 总线、是否有可用的示例? 我知道 GPMC 驱动程序在某种程度上满足了这一需求(https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/memory/omap-gpmc.c?h=ti-linux-5.10.y#n2104)。
- 是否可以使用 GPMC_A3/4/5来选择子器件?
- 在尝试编写时是否发现有关最初挂起的任何想法?
此致、
阿瓦伊斯