Turn off HDMI programmatically

Hi,

is there a way to turn off/on the HDMI output from the Jetson TX2 (i.e. controlling the LCD_VDD_EN pin)?

Thanks.

igal.kroyter,

Yes, if you need to control it after system boot up, you could use that pin.

Please try

sudo -s 
echo disabled > /sys/class/regulator/regulator.18/state

Hi,
thanks for the reply.

I’m getting Permission Denied (even with sudo).

Another question, is this regulator is on the Jetson module or on the evaluation board?

Thanks.

Are you using devkit or your own custom carrier board?

Hi, WayneWWW.

We use our own carrier board.

Other questions have been raised as per NVIDIA Tegra Linux Driver Package - Development Guide 28.2 Release - Display Configuration and Bringup:

  1. Can a MIPI-DSI outpout displayed without mirroring or extension of neither HDMI nor DP?
  2. Turning off (or disconnecting HDMI from an EDID target device) might affect the MIPI-DSI display?

Regards.

Hi

  1. Yes, DSI can work alone without other display interface.

  2. Do you mean hotplug HDMI cable? Yes, it may affect the DSI display. It may blank DSI panel for a second.

Hi,

from Display Configuration and Bringup I cannot see a way to configure the DSI as a stand alone but as a mirror or extension.

  1. How should I configure the DSI as a standalone?
  2. Is there a way to activate the second DSI channel?
  3. Do both DSI channels share the same clock? that is are they synchronized?
  4. Currently while displaying the available display ports with xrandrn on the terminal I can see the supported resolutions for DSI-0 and HDMI-0, though physically we connect the HDMI-1 pins DP1_TXx_xxx / HDMI1_TXx to a monitor. Please elaborate.

Following is portion of the tegra186-quill-p3489-1000-a00-00-base.dts file which configures the DSI support

host1x {
		sor {
			status = "disabled";
			dp-display {
				status = "disabled";
			};
			hdmi-display {
				status = "disabled";
			};

			panel-s-edp-uhdtv-15-6 {
				smartdimmer {
					status = "disabled";
				};
			};
		};

		dpaux@155c0000 {
			status = "disabled";
		};

		sor1 {
			status = "okay";
			hdmi-display {
				status = "okay";
			};
			dp-display {
				status = "disabled";
			};
		};

		// Adding MIPI-DSI support 17.10.2018
		nvdisplay@15200000 {
			status = "okay";
			nvidia,dc-or-node = "/host1x/dsi";
		};		
		
		nvdisplay@15220000 {
			status = "disabled";
		};

		// Adding MIPI-DSI support 17.10.2018
		dsi{
			status = "okay";
			compatible = "nvidia,tegra186-dsi";
			nvidia,dsi-controller-vs = <DSI_VS_1>;
			nvidia,enable-hs-clk-in-lp-mode;

			panel-dsi-720p {
				status							= "okay";
				compatible						= "dsi,720p";
				nvidia,dsi-instance				= <DSI_INSTANCE_0>;
				nvidia,dsi-n-data-lanes			= <2>;
				nvidia,dsi-pixel-format			= <TEGRA_DSI_PIXEL_FORMAT_24BIT_P>;
				nvidia,dsi-refresh-rate			= <60>;
				nvidia,dsi-video-data-type		= <TEGRA_DSI_VIDEO_TYPE_VIDEO_MODE>;
				nvidia,dsi-video-clock-mode 	= <TEGRA_DSI_VIDEO_CLOCK_CONTINUOUS>;
				nvidia,dsi-video-burst-mode 	= <TEGRA_DSI_VIDEO_NONE_BURST_MODE_WITH_SYNC_END>;
				nvidia,dsi-virtual-channel		= <TEGRA_DSI_VIRTUAL_CHANNEL_0>;
				nvidia,dsi-panel-reset			= <TEGRA_DSI_DISABLE>;
				nvidia,dsi-power-saving-suspend = <TEGRA_DSI_DISABLE>;
				nvidia,dsi-ulpm-not-support		= <TEGRA_DSI_ENABLE>;
				nvidia,dsi-init-cmd				=	<TEGRA_DSI_DELAY_MS 160>,
													<0x0 DSI_DCS_WRITE_0_PARAM DSI_DCS_EXIT_SLEEP_MODE 0x0 0x0>,
													<TEGRA_DSI_SEND_FRAME 5>,
													<TEGRA_DSI_DELAY_MS 20>,
													<0x0 DSI_DCS_WRITE_0_PARAM DSI_DCS_SET_DISPLAY_ON 0x0 0x0>,
													<TEGRA_DSI_DELAY_MS 20>;
				nvidia,dsi-n-init-cmd			= <6>;
				nvidia,dsi-suspend-cmd			=	<0x0 DSI_DCS_WRITE_0_PARAM DSI_DCS_SET_DISPLAY_OFF 0x0 0x0>,
													<0x0 DSI_DCS_WRITE_0_PARAM DSI_DCS_ENTER_SLEEP_MODE 0x0 0x0>,
													<TEGRA_DSI_DELAY_MS 60>;
				nvidia,dsi-n-suspend-cmd		= <3>;
				disp-default-out {
					nvidia,out-type				= <TEGRA_DC_OUT_DSI>;
					nvidia,out-width			= <130>;
					nvidia,out-height			= <74>;
					nvidia,out-flags			= <TEGRA_DC_OUT_CONTINUOUS_MODE TEGRA_DC_OUT_INITIALIZED_MODE>;
					nvidia,out-parent-clk		= "pll_d";
					nvidia,out-xres				= <1280>;
					nvidia,out-yres				= <720>;
				};
				display-timings {
					1280x720-32 {
						clock-frequency			= <74250000>;//<69946560>;
						hactive					= <1280>;
						vactive					= <720>;
						hfront-porch			= <150>;//<112>;
						hback-porch				= <150>;//<30>;
						hsync-len				= <70>;//<32>;
						vfront-porch			= <10>;//<11>;
						vback-porch				= <10>;//<11>;
						vsync-len				= <10>;//<2>;
						nvidia,h-ref-to-sync	= <1>;
						nvidia,v-ref-to-sync	= <1>;
					};
				};
				smartdimmer {
					status = "disabled";
					nvidia,use-auto-pwm = <0>;
					nvidia,hw-update-delay = <0>;
					nvidia,bin-width = <0xffffffff>;
					nvidia,aggressiveness = <1>;
					nvidia,use-vid-luma = <0>;
					nvidia,phase-in-settings = <0>;
					nvidia,phase-in-adjustments = <0>;
					nvidia,k-limit-enable = <1>;
					nvidia,k-limit = <180>;
					nvidia,sd-window-enable = <0>;
					nvidia,soft-clipping-enable= <1>;
					nvidia,soft-clipping-threshold = <128>;
					nvidia,smooth-k-enable = <1>;
					nvidia,smooth-k-incr = <16>;
					nvidia,coeff = <5 9 2>;
					nvidia,fc = <0 0>;
					nvidia,blp = <1024 255>;
					nvidia,bltf = <57 65 73 82
							   92 103 114 125
							   138 150 164 178
							   193 208 224 241>;
					nvidia,lut = <255 255 255
							  199 199 199
							  153 153 153
							  116 116 116
							  85 85 85
							  59 59 59
							  36 36 36
							  17 17 17
							  0 0 0>;
					nvidia,bl-device-name = "pwm-backlight";
				};
				cmu {
					nvidia,cmu-csc = < 0x100 0x0 0x0
							   0x0 0x100 0x0
							   0x0 0x0 0x100 >;
					nvidia,cmu-lut2 = < 0 0 1 2 3 3 4 5
								6 6 7 8 8 9 10 10
								11 12 12 13 13 14 14 15
								16 16 17 17 18 18 19 19
								19 20 20 21 21 22 22 22
								23 23 24 24 24 25 25 25
								26 26 27 27 27 28 28 28
								28 29 29 29 30 30 30 31
								31 31 31 32 32 32 33 33
								33 33 34 34 34 35 35 35
								35 36 36 36 36 37 37 37
								38 38 38 38 39 39 39 39
								40 40 40 40 40 41 41 41
								41 42 42 42 42 43 43 43
								43 43 44 44 44 44 45 45
								45 45 45 46 46 46 46 46
								47 47 47 47 47 48 48 48
								48 48 49 49 49 49 49 49
								50 50 50 50 50 50 51 51
								51 51 51 51 52 52 52 52
								52 52 53 53 53 53 53 53
								54 54 54 54 54 54 54 55
								55 55 55 55 55 55 55 56
								56 56 56 56 56 56 57 57
								57 57 57 57 57 57 58 58
								58 58 58 58 58 58 58 59
								59 59 59 59 59 59 59 59
								60 60 60 60 60 60 60 60
								60 61 61 61 61 61 61 61
								61 61 61 62 62 62 62 62
								62 62 62 62 62 63 63 63
								63 63 63 63 63 63 63 63
								64 64 64 64 64 64 64 64
								64 64 64 65 65 65 65 65
								65 65 65 65 65 65 66 66
								66 66 66 66 66 66 66 66
								66 66 67 67 67 67 67 67
								67 67 67 67 67 67 68 68
								68 68 68 68 68 68 68 68
								68 68 69 69 69 69 69 69
								69 69 69 69 69 69 70 70
								70 70 70 70 70 70 70 70
								70 70 70 71 71 71 71 71
								71 71 71 71 71 71 71 71
								72 72 72 72 72 72 72 72
								72 72 72 72 72 73 73 73
								73 73 73 73 73 73 73 73
								73 73 73 74 74 74 74 74
								74 74 74 74 74 74 74 74
								75 75 75 75 75 75 75 75
								75 75 75 75 75 75 76 76
								76 76 76 76 76 76 76 76
								76 76 76 76 77 77 77 77
								77 77 77 77 77 77 77 77
								77 77 78 78 78 78 78 78
								78 78 78 78 78 78 78 78
								79 79 79 79 79 79 79 79
								79 79 79 79 79 79 80 80
								80 80 80 80 80 80 80 80
								80 80 80 80 81 81 81 81
								81 81 81 81 81 81 81 81
								81 81 82 82 82 82 82 82
								82 82 82 82 82 82 82 82
								83 83 83 83 83 83 83 83
								84 84 85 85 86 86 87 88
								88 89 89 90 90 91 92 92
								93 93 94 94 95 95 96 96
								97 97 98 98 99 99 100 100
								101 101 102 102 103 103 104 104
								105 105 106 106 107 107 107 108
								108 109 109 110 110 111 111 111
								112 112 113 113 114 114 114 115
								115 116 116 117 117 117 118 118
								119 119 119 120 120 121 121 121
								122 122 123 123 123 124 124 125
								125 126 126 126 127 127 128 128
								128 129 129 129 130 130 131 131
								131 132 132 133 133 133 134 134
								135 135 135 136 136 137 137 137
								138 138 138 139 139 140 140 140
								141 141 142 142 142 143 143 143
								144 144 145 145 145 146 146 146
								147 147 147 148 148 149 149 149
								150 150 150 151 151 151 152 152
								153 153 153 154 154 154 155 155
								156 156 156 157 157 157 158 158
								159 159 159 160 160 160 161 161
								162 162 162 163 163 164 164 164
								165 165 166 166 166 167 167 168
								168 168 169 169 170 170 170 171
								171 172 172 172 173 173 173 174
								174 175 175 175 176 176 176 177
								177 177 178 178 178 179 179 179
								180 180 180 180 181 181 181 182
								182 182 182 183 183 183 184 184
								184 184 185 185 185 185 186 186
								186 186 187 187 187 187 188 188
								188 188 189 189 189 190 190 190
								190 191 191 191 191 192 192 192
								193 193 193 193 194 194 194 195
								195 195 195 196 196 196 197 197
								197 198 198 198 198 199 199 199
								200 200 200 201 201 201 202 202
								202 203 203 204 204 204 205 205
								205 206 206 206 207 207 208 208
								208 209 209 209 210 210 211 211
								211 212 212 213 213 213 214 214
								215 215 215 216 216 217 217 217
								218 218 218 219 219 220 220 220
								221 221 221 222 222 222 223 223
								223 224 224 224 225 225 225 225
								226 226 226 226 227 227 227 227
								228 228 228 228 229 229 229 229
								229 230 230 230 230 231 231 231
								231 232 232 232 233 233 233 233
								234 234 234 235 235 235 236 236
								236 237 237 238 238 239 239 239
								240 240 241 241 242 242 243 244
								244 245 245 246 247 247 248 249
								250 250 251 252 253 254 254 255 >;
				};
			};
		};
	};

Regards.

Is there any one that can support me on this?
Regards.

Though we don’t have dts for standalone dsi, you could refer to some dts in our kernel source. For example, “tegra186-quill-p3310-1000-c03-00-dsi-dp.dts” is a sample that enables dsi + dp. You could just disable all dp related nodes.

Also, I think you need to understand how these terms in dts work.

SOR is for hdmi or dp display hardware. It is not related to dsi usecase, so you could just disable them.

DSI, as its name, is for dsi interface.

nvdisplay indicates tegra display controller. Each nvdisplay needs to have corresponding sor or dsi. Thus, you can see "nvidia,dc-or-node = “/host1x/dsi” is under “nvdisplay@15200000”, which means this nvdisplay is to output DSI panel.

There are up to 3 nvdisplay on tx2, so we can support up to 3 display panel simultaneously.

Forgot to mention… although we support 3 nvdisplay, there are only 2 dsi controllers on tx2, so it is not possible to output 3 dsi panel at once.

Moreover, we don’t enable the second dsi controller in the released driver, so I cannot guide you how to use dual dsi.

Fortunately, some forum users had such experience before, but I cannot find the thread now. Will update to you once I get it…

hi WayneWWW,

thank you for the info.

How should I debug the reason for no data output from the DSI (on nvdisplay@15200000)?

I see a clock but no data, maybe I don’t activate it?

I ses no errors on the terminal where DSI is involved.

Regards.

igal.kroyter,

You may need to dig into “tegradc_probe” as a start. tegradc_probe would eventually call your dsi panel drvier. DSI driver should have the power sequence of your panel and you should write this part yourself.

WayneWWW, hi.

Is your advise is also relevant for the fact that we have no panel but an FPGA which does not have back-light, power, reset and all other goodies that panels have?

igal.kroyter,

No, my advice is only for panel based on DSI interface.

WayneWWW,

OK.

How should I debug the reason for no data output from the DSI (on nvdisplay@15200000)?

I see a clock but no data, maybe I don’t activate it?

I ses no errors on the terminal where DSI is involved.
Regards.

I have already replied you in previous comment. You should be able to have some knowledge about linux kernel and device tree before starting this work.

Please start with dc.c first and see why it does not probe your panel driver. You neither shared what you’ve done nor any kernel log to me. I cannot help anything here.

I have modified the device tree file per message #7.
I have modified the file \kernel\display\drivers\video\tegra\dc\panel\board-panel.c to support “dsi,720p”.
I have modified the \kernel\t18x\drivers\video\tegra\dc\nvdisp\nvdisp_stub.c file to support the panel-dsi-720p “panel”.

and I see no errors in the terminal. Do you need me to upload some other files for you to observe?

I have also seen in the forum that the xorg.conf file has to be modified. Should I do it to support 720p?
Regards.

You could check /proc/device-tree on tegra after boot up. That is the real run-time dts that is loaded.

Please make sure your change is really on it. Plugin-manage may overwrite your setting.

That is, the file in this file may overwrite your DT during runtime.
./common/kernel-dts/t18x-common-plugin-manager/tegra186-quill-display-plugin-manager.dtsi

You can find which fragment overwrites dt by using “dmesg |grep plugin-manager”.

WayneWWW,

I have verified the device tree and it is identical to the one per message #7 herein, thus the plugin-manager did not overwritten the data.

Please look in the following terminal output. In both cases where I try to activate the DSI no data is output while the clock does.

export DISPLAY=:0

xrandr
Screen 0: minimum 8 x 8, current 1280 x 720, maximum 32767 x 32767
<b>DSI-0</b> connected (normal left inverted right x axis y axis)
   1280x720      60.00 +
<b>HDMI-0</b> connected primary 1280x720+0+0 (normal left inverted right x axis y axis) 1150mm x 650mm
   1920x1080     60.00 +  59.95    50.00    30.00    29.97    25.00    24.00    23.98  
   1920x1200     59.89  
   1680x1050     59.96  
   1600x1200     60.01  
   1440x900      59.89  
   1400x1050     59.98  
   1280x1024     60.00  
   1280x960      60.00  
   1280x800      59.81  
   1280x720      60.00*   59.94    50.00  
   1024x768      60.01  
   800x600       60.32  
   720x576       50.00  
   720x480       59.94  
   640x480       59.94  

xrandr --output --primary DSI-0 --mode 1280x720 --rate 60.00
[b]xrandr: unrecognized option 'DSI-0'
Try 'xrandr --help' for more information.
[/b]
xrandr --output HDMI-0 --mode 1280x720 --rate 60.00 --same-as DSI-0

Please let me what do you think.

To be honest, it would be better if you could share your dmesg.

This xrandr result only proves that this panel is detected by tegra display driver. However,there may be timing issue for DSI.