Closed sani1486 closed 6 years ago
Hi
You can convert a dtb file back to a dts by using dtc:
dtc -I dtb -O dts <devicetree.dtb> -o <devicetree.dts>
I'll check wether we can find the source file.
On first glance it looks like your idea of commenting out the "host1x/vi/port@2" and "host1x/i2c7/tc358840xbg@1f" should work for disabling HDMI-In B.
Maybe there was a problem replacing the device tree? You can check your device tree nodes at run time by looking at "/proc/device-tree/". Each node should be represented as directory and you can check whether your changes have been applied.
Unfortunately we dont have the source for tegra210-jetson-tx1-p2597-2180-a01-devkit-hdmi2csi-hdmib-disabled.dtb anymore, but you can convert it back as mentioned..
Thanks for the suggestions , I think I will take the road of changing the dtb files back to dts . But i am wondering if i use the tegra210-jetson-tx1-p2597-2180-a01-devkit-hdmi2csi-hdmib-disabled.dtb , then what else i might need to change , should i still comment out the above dts ? or i can keep as it was before and just change the /boot/extlinux/extlinux.conf with the tegra210-jetson-tx1-p2597-2180-a01-devkit-hdmi2csi-hdmib-disabled.dtb .
and about replacing the device tree : I am not really an expert . and do you think it would work if i just simply copy the hdmi disabling dtb file to my own compiled /boot directory . I simply didn't change anything in the git repo except the version name ? what if i just copy the all the dtbs in /boot directory and paste it to my own version ? should that work ? Regards
Booting on the TX1 works in multiple stages: First Stage Boot Loader -> U-Boot -> Extlinux -> Linux
The best point to modify this in 24.2.1 is to change the /boot/extlinux/extlinux.conf file. You can define many boot options, which you can then choose in U-Boot if you have attached a serial console to the TX1 on J21 (see https://elinux.org/Jetson/TX1_Serial_Console). Or you can change the default option.
You can modify extlinux.conf to use the ...hdmib-disabled.dtb with your own kernel. Just change an existing boot option in the extlinux.conf or make a new boot option with your kernel and the desired .dtb.
Pay attention to the serial output after you selected your desired boot option. If it fails to find the .dtb (e.g. if you have a spelling mistake) it will fall back to a default device tree, which can be hard to debug..
For kernel compilation and changing the device tree we have written up some instructions on our wiki: https://github.com/InES-HPMM/linux-l4t/wiki/customKernelCompilation
Okay , I think i had changed the extlinux.conf in proper way and it is booting that correct dtb , howwever i also changed the u-boot . I mean i flashed the u-boot you provided for pre-built image . but whenever i run sudo modprobe tc358840
it gives the following error in the terminal
tc358840 6-000f: i2c_rd: reading register 0x0 from 0xf failed tc358840 6-000f: Invalid chip ID 0x0000
and that is one of the other few problems , i flashed the system and it was fine all along and when i ran sudo depmod to install the modules , and restart then tx1 wouldn't boot completely and no desktop appears in t he monitor . while in serial console it shows following message
tegra210_mixer tegra210-mixer: ASoC: hw_params() failed: -22 tegra-snd-t210ref-mobile-rt56x sound.27: ASoC: PRE_PMU: TX1 Transmit-MIXER-1 Receive event failed
NOTE: I didn't change anyhting at all from the repository code . Please advise.
Regards
The occurance of the tc358840 6-000f: i2c_rd: reading register 0x0 from 0xf failed tc358840 6-000f: Invalid chip ID 0x0000
is very unusal and may states that the tc chip is still in reset state.
As we do not know in which state your system currently is, I have the feeling we can not help much anymore.
You should bring your system to a defined state, therefore I strongly recommend using the pre-build image. https://github.com/InES-HPMM/linux-l4t/wiki/l4t_prebuilt_image
Alternatively you can try to follow the https://github.com/InES-HPMM/linux-l4t/wiki/customKernelCompilation Guide completely.
Yes , I understand . I have been trying to compile in the following way . just a while ago , i compiled following the instructions given in the wiki, while i was building dtbs , i found make dtb doesn't build the tegra210-jetson-tx1-p2597-2180-a01-devkit-hdmi2csi-hdmib-disabled.dts
file that i decompiled after copying the dtb from the pre-build image . so , is it necessary to make or i can jsut simply copy the dtb in the /boot directory is enough ?
The reason i can't use the pre-built image is i have another precompiled binaries for a driver made for 3.10.96-tegra . but pre-built image shows something like 3.10.96-gcxxx, which makes the modprobe fail for that usb module driver . so i was needing to compile the whole thing by myself so it could match the version names.
on a different note : I saw there is an updated version for l4t-4.4 that works with both tx1 and tx2 . I would like to know if i can disable the hdmi input B there too ?
Hello I have one question about the https://github.com/InES-HPMM/linux-l4t/wiki/customKernelCompilation guide .
Copy/install the kernel files you built onto the TX1
Replace the kernel Image (copy arch/arm64/boot/Image to the TX1 in /boot/Image (or call it differently if you want to use multiple extlinux configurations)
Replace the DTB (copy arch/arm64/boot/dts/tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb to the TX1 mount path and /boot/tegra210-jetson-tx1-p2597-2180-a01-devkit-hdmi-4k.dtb)
Install the modules (using make modules_install and the correct INSTALL_MOD_PATH environment variable to the TX1 mount path)
what does it mean ? should i remove the original tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb and paste the tegra210-jetson-tx1-p2597-2180-a01-devkit-hdmi-4k.dtb ? or should i remove the original tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb and then paste both the new compiled tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb and the tegra210-jetson-tx1-p2597-2180-a01-devkit-hdmi-4k.dtb? or should i keep the original tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb , where it was and just paste the new tegra210-jetson-tx1-p2597-2180-a01-devkit-hdmi-4k.dtb ? Please clarify . Regards
Ok, It doesn't matter how you name your devicetree and your kernel: important is that you,
You have 3 options:
Important is that you change LINUX /boot/<KERNELFILENAME>
and FDT /boot/<DTBFILENAME>
to match your filenames
Example for 1
TIMEOUT 30
DEFAULT InES
MENU TITLE p2371-2180 eMMC boot options
LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image
INITRD /boot/initrd
FDT /boot/tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb
APPEND fbcon=map:0 console=tty0 console=ttyS0,115200n8 androidboot.modem=none androidboot.serialno=P2180A00P00940c003fd androidboot.security=non-secure tegraid=21.1.2.0.0 ddr_die=2048M@2048M ddr_die=2048M@4096M section=256M memtype=0 usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 debug_uartport=lsport,0 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=${lp0_vec} nvdumper_reserved=${nvdumper_reserved} core_edp_mv=1125 core_edp_ma=4000 gpt android.kerneltype=normal androidboot.touch_vendor_id=0 androidboot.touch_panel_id=63 androidboot.touch_feature=0 androidboot.bootreason=pmc:software_reset,pmic:0x0 net.ifnames=0 root=/dev/mmcblk0p1 rw rootwait
LABEL InES
MENU LABEL HDMI2CSI 4k
LINUX /boot/Image_4k
INITRD /boot/initrd
FDT /boot/tegra210-jetson-tx1-p2597-2180-a01-devkit-hdmi.dtb
APPEND fbcon=map:0 console=tty0 console=ttyS0,115200n8 androidboot.modem=none androidboot.serialno=P2180A00P00940c003fd androidboot.security=non-secure tegraid=21.1.2.0.0 ddr_die=2048M@2048M ddr_die=2048M@4096M section=256M memtype=0 usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 debug_uartport=lsport,0 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=${lp0_vec} nvdumper_reserved=${nvdumper_reserved} core_edp_mv=1125 core_edp_ma=4000 gpt android.kerneltype=normal androidboot.touch_vendor_id=0 androidboot.touch_panel_id=63 androidboot.touch_feature=0 androidboot.bootreason=pmc:software_reset,pmic:0x0 net.ifnames=0 root=/dev/mmcblk0p1 rw rootwait
With the default entry you can choose the image and dtb that is loaded, if you have a serial console connected you also have the possibillity to choose your kernel while starting
Example for 2
TIMEOUT 30
DEFAULT primary
MENU TITLE p2371-2180 eMMC boot options
LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image_4k
INITRD /boot/initrd
FDT /boot/tegra210-jetson-tx1-p2597-2180-a01-devkit-hdmi.dtb
APPEND fbcon=map:0 console=tty0 console=ttyS0,115200n8 androidboot.modem=none androidboot.serialno=P2180A00P00940c003fd androidboot.security=non-secure tegraid=21.1.2.0.0 ddr_die=2048M@2048M ddr_die=2048M@4096M section=256M memtype=0 usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 debug_uartport=lsport,0 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=${lp0_vec} nvdumper_reserved=${nvdumper_reserved} core_edp_mv=1125 core_edp_ma=4000 gpt android.kerneltype=normal androidboot.touch_vendor_id=0 androidboot.touch_panel_id=63 androidboot.touch_feature=0 androidboot.bootreason=pmc:software_reset,pmic:0x0 net.ifnames=0 root=/dev/mmcblk0p1 rw rootwait
Yes, we have a newer version available here, https://github.com/InES-HPMM/linux-l4t-4.4/wiki/hdmi2csi it is based on l4t-r28.1. Of course you can disable HDMI-B here, by changing the device tree. Please note that the process changed and you need to follow the seperate compile instruction for 28.1 found here https://github.com/InES-HPMM/linux-l4t-4.4/wiki/customKernelCompilation
ok , so is there any isntruction how cna i change the dtb to disable the hdmi ? I am not really a programmer of any kind . Please Help Regards .
Short answer, no.
You can have a look at the tegra210-jetson-tx1-p2597-2180-a01-devkit-hdmi2csi-hdmib-disabled.dts
to see how it's done.
We will not do any further work in this direction because, a) we now work on lte-r28.1 and b) I don't think disable InputB is a widely demanded feature.
well , can you tell me which dtb fille i need to work on to disable it ?
make dtbs
in your source file directory (as described in https://github.com/InES-HPMM/linux-l4t/wiki/customKernelCompilation) to generate arch/arm64/boot/dts/tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb
/boot/
directory. Either replace the existing one or choose a new name:
tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb
then your TX1 will use your new device tree by default on every boottegra210-jetson-tx1-p2597-2180-a01-devkit-hdmi-4k.dtb
but then you need to modify /boot/extlinux/extlinux.conf
as described aboveThanks for the detail explanation, I have another question , what if i choose tc358840 not as a module . i mean to install it as a module i need to select 'm' in the .config file / menuconfig . what if i choose 'y' instead. should that work , or i need to make more changes to install the driver not as a module ? Please advise Regards
If you choose 'y' on the tc358840 in the kernel configuration, the compiler will include the driver in the kernel. This should work in theory but we have not tested it.
On the new L4T 28.1 (https://github.com/InES-HPMM/linux-l4t-4.4) it works for sure and is the default.
okay , i think I should open a new issue on l4t-4.4 repository
To answer your question about how to disable HDMI-In B:
I found the commit where we disabled it and this is also how we generated the tegra210-jetson-tx1-p2597-2180-a01-devkit-hdmi2csi-hdmib-disabled.dtb
. See this commit: https://github.com/InES-HPMM/linux-l4t/commit/994b6490a6adb4a4f4117d0fe0bb74e3e3cbc5b7
Hello I am looking for a way to change the device tree files to disable HDMI in B input . What i did was commenting out some of the lines in the device tree which i thought is related with HDMI in B Following is the file i changed . and it didn't seem to work ` /*
*/
include "tegra210-jetson-cv-base-p2597-2180-a00.dts"
/ { model = "jetson_tx1"; compatible = "nvidia,jetson-cv", "nvidia,tegra210"; nvidia,dtsfilename = FILE;
// cam2_pwdn_pt0 { // nvidia,enable-input =;
// nvidia,pull = ;
// nvidia,tristate = ;
// };
};
};
// / HDMI IN B (Full HD) / // tc358840xbg@1f { // compatible = "toshiba,tc358840xbg"; // reg = <0x1f>; // status = "okay"; // // / GPIO / // reset-gpios = <&gpio CAM1_RST_L GPIO_ACTIVE_LOW>; // // / Interrupt / // interrupt-parent = <&gpio>; // interrupts =;
//
// refclk_hz = <48000000>; / 40 - 50 MHz /
//
// ddc5v_delay = <1>; / 50 ms /
//
// / HDCP /
// / TODO: Not yet implemented /
// enable_hdcp = <0>;
//
// / CSI Output /
// csi_port = <1>; / Enable TX0 only /
//
// lineinitcnt = <0x00000FA0>;
// lptxtimecnt = <0x00000004>;
/// tclk_headercnt = <0x00180203>;
// tclk_trailcnt = <0x00040005>;
// ths_headercnt = <0x000D0004>;
// twakeup = <0x00003E80>;
// tclk_postcnt = <0x0000000A>;
// ths_trailcnt = <0x00080006>;
// hstxvregcnt = <0x00000020>;
//
// / PLL /
// / Bps per lane is (refclk_hz / pll_prd) pll_fbd */
// pll_prd = <10>;
// pll_fbd = <125>;
//
// port {
// hdmi_in_b: endpoint {
// remote-endpoint = <&csi_b>;
// };
// };
// };
};
};
// cam2_pwdn_pt0 { // nvidia,enable-input =;
// nvidia,pull = ;
// nvidia,tristate = ;
// };
};
};
// port@2 { // reg = <2>; //
// #address-cells = <1>; // #size-cells = <0>; // // csi_c: endpoint { // reg = <0>; // remote-endpoint = <&hdmi_in_b>; // clock-lanes = <0>; // data-lanes = <1 2 3 4>; // }; // }; }; };
}; `
However i saw a dtb file in the prebuilt image named tegra210-jetson-tx1-p2597-2180-a01-devkit-hdmi2csi-hdmib-disabled.dtb but i didnt find the source file of this binary . I am using l4t-24.2.1 . using the prebuilt image isn't an option for me because of other changes and drivers . I must compile by myself . So if you happen to have the source file of the hdmi B disabling dtb file (dtsi) it would mean a lot to me . Regards