Hi Guys,
I try to enable UART5 with device tree overlay. The UART is enabled and showed up in the /dev/ttymxc4 and in the boot log:
[ 3.719766] 21f4000.serial: ttymxc4 at MMIO 0x21f4000 (irq = 302, base_baud = 5000000) is a IMX
But I can not measure any TX mgs.
device tree overlay:
/dts-v1/;
/plugin/;
#include <dt-bindings/interrupt-controller/irq.h>
#include "imx6q-pinfunc.h"
/ {
fragment@0{
target = <&pinctrl_uart5>;
__overlay__ {
fsl,pins = <
MX6QDL_PAD_CSI0_DAT14__UART5_TX_DATA 0x1b0b1 /* M4 CSI0_DAT14 UART5_TX_DATA */
MX6QDL_PAD_CSI0_DAT15__UART5_RX_DATA 0x1b0b1 /* M5 CSI0_DAT15 UART5_RX_DATA */
MX6QDL_PAD_CSI0_DAT19__UART5_CTS_B 0x1b0b1 /* L6 CSI0_DAT19 UART5_CTS_B */
MX6QDL_PAD_CSI0_DAT18__UART5_RTS_B 0x1b0b1 /* M6 CSI0_DAT18 UART5_RTS_B */
MX6QDL_PAD_RGMII_TD0__GPIO6_IO20 0x80000000 /* C22 RGMII_TD0 GPIO6_IO20 */
MX6QDL_PAD_RGMII_TD1__GPIO6_IO21 0x80000000 /* F20 RGMII_TD1 GPIO6_IO21 */
MX6QDL_PAD_RGMII_TD2__GPIO6_IO22 0x80000000 /* E21 RGMII_TD2 GPIO6_IO22 */
>;
};
};
fragment@1{
target = <&uart5>;
__overlay__ {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart5>;
};
};
};
in base devtree:
&iomuxc {
uart5 {
/* empty group for device tree overlay */
pinctrl_uart5: uart5grp {
};
};
};
_________________________________________________________________________________________
If I do the configuration in the "normal" device tree. Everything works fine and I can measure the TX out msgs.
[ 1.115512] 21f4000.serial: ttymxc4 at MMIO 0x21f4000 (irq = 70, base_baud = 5000000) is a IMX
normal Device tree:
&iomuxc {
uart5 {
/* empty group for device tree overlay */
pinctrl_uart5: uart5grp {
fsl,pins = <
MX6QDL_PAD_CSI0_DAT14__UART5_TX_DATA 0x1b0b1 /* M4 CSI0_DAT14 UART5_TX_DATA */
MX6QDL_PAD_CSI0_DAT15__UART5_RX_DATA 0x1b0b1 /* M5 CSI0_DAT15 UART5_RX_DATA */
MX6QDL_PAD_CSI0_DAT19__UART5_CTS_B 0x1b0b1 /* L6 CSI0_DAT19 UART5_CTS_B */
MX6QDL_PAD_CSI0_DAT18__UART5_RTS_B 0x1b0b1 /* M6 CSI0_DAT18 UART5_RTS_B */
MX6QDL_PAD_RGMII_TD0__GPIO6_IO20 0x80000000 /* C22 RGMII_TD0 GPIO6_IO20 */
MX6QDL_PAD_RGMII_TD1__GPIO6_IO21 0x80000000 /* F20 RGMII_TD1 GPIO6_IO21 */
MX6QDL_PAD_RGMII_TD2__GPIO6_IO22 0x80000000 /* E21 RGMII_TD2 GPIO6_IO22 */
>;
};
};
};
&uart5 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart5>;
};
I do not see any reason, why this should not work with devtree overlay...
kernel version
Linux 4.9.123-10 #1 SMP Thu Oct 31 22:12:41 UTC 2019 armv7l armv7l armv7l GNU/Linux
Board:
:~# cat /proc/cpuinfo
processor : 0
model name : ARMv7 Processor rev 10 (v7l)
BogoMIPS : 3.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x2
CPU part : 0xc09
CPU revision : 10
processor : 1
model name : ARMv7 Processor rev 10 (v7l)
BogoMIPS : 3.00
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpd32
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x2
CPU part : 0xc09
CPU revision : 10
Hardware : Freescale i.MX6 Quad/DualLite (Device Tree)
Revision : 0000
Serial : 0000000000000000
Thanks for your Help
regards
tom
OK, I think I got it. Unfortunately it looks like it is not possible to do the pin muxing in a overlay fragment...
at least with my used kernel version....