sworteu
Posts: 14
Joined: Sat Nov 28, 2015 4:07 pm

CM3+ with 7" display on DSI0

Tue Apr 30, 2019 12:11 pm

Hi readers,

We have a customised CM3+ board which uses DSI0 (display port) to use the official raspberry pi 7" display.
The i2c connections are made for the display GPIO0 = SCL0 and GPIO1 = SDA0.

The dsi0 is connected using the flatcable to the 7" official display driver board.
The driver board is powered with a 5v and gnd connection to our main power (5v).

When power is applied to the board, the CM3+ and the display are fed power but the display won't turn on.
When connecting the display to a RPI 3B+ the display magically works.

Some important questions we would like to have confirmed about this:
- Is it true that DSI0 is not enabled by defaut? We tried to change the dt-blob to DSI "0" but that didn't seem to work.
- Which is the default I2C port (and which pins) that are used for the default display on a CM3+ ?

We'd like to use the DEFAULT display port and I2C (an others if any required) that come with the Raspbian OS if anyone can shed some light on what those are as it doesn't seem to be documented well for the Compute Module (3+).

Thanks.

6by9
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 6895
Joined: Wed Dec 04, 2013 11:27 am
Location: ZZ9 Plural Z Alpha, aka just outside Cambridge.

Re: CM3+ with 7" display on DSI0

Tue Apr 30, 2019 1:43 pm

sworteu wrote:
Tue Apr 30, 2019 12:11 pm
Some important questions we would like to have confirmed about this:
- Is it true that DSI0 is not enabled by defaut? We tried to change the dt-blob to DSI "0" but that didn't seem to work.
On the CM neither DSI port is enabled by default. The display requires I2C to function, and all resources are left for the user to assign as they see fit.
sworteu wrote:- Which is the default I2C port (and which pins) that are used for the default display on a CM3+ ?
There isn't one. See above.
We'd like to use the DEFAULT display port and I2C (an others if any required) that come with the Raspbian OS if anyone can shed some light on what those are as it doesn't seem to be documented well for the Compute Module (3+).
Documentation for configuring the display for a CM is at https://www.raspberrypi.org/documentati ... display.md.
It looks like the dt-blob and notes should be updated to add the section

Code: Select all

            [email protected]_DSI_PORT {
               type="internal";
               number=<1>;
};
to denote DSI1 as the default. You can set it to 0 to select DSI0 if you should so wish.
Software Engineer at Raspberry Pi Trading. Views expressed are still personal views.
I'm not interested in doing contracts for bespoke functionality - please don't ask.

sworteu
Posts: 14
Joined: Sat Nov 28, 2015 4:07 pm

Re: CM3+ with 7" display on DSI0

Wed May 01, 2019 8:35 am

Hi 6by9,

Thanks for your fast response.
So i've tested this, but it doesn't seem to work for me somehow.

This is my dt-blob.dts (i've compiled to be dt-blob.bin) part for the cm3 pins:
(i've left out the videocore stuff and other boards)

Code: Select all

pins_cm3 { // Pi 3 CM3
         pin_config {
            [email protected] {
               polarity = "active_high";
               termination = "pull_down";
               startup_state = "inactive";
               function = "input";
            }; // pin
            [email protected]  { function = "output"; termination = "no_pulling"; polarity = "active_low"; }; // CTMR POWER DOWN
            [email protected]  { function = "input"; termination = ""; polarity = ""; }; // CTMR TEMP SENSOR (1-wire)
            [email protected] { function = "uart0";  termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0
            [email protected] { function = "uart0";  termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0
            [email protected] { function = "input";   termination = "pull_up";    }; // SMPS_SCL
            [email protected] { function = "input";   termination = "pull_up";    }; // SMPS_SDA
            [email protected] { function = "sdcard"; termination = "pull_up";    drive_strength_mA = < 8 >; }; // SD CLK
            [email protected] { function = "sdcard"; termination = "pull_up";    drive_strength_mA = < 8 >; }; // SD CMD
            [email protected] { function = "sdcard"; termination = "pull_up";    drive_strength_mA = < 8 >; }; // SD D0
            [email protected] { function = "sdcard"; termination = "pull_up";    drive_strength_mA = < 8 >; }; // SD D1
            [email protected] { function = "sdcard"; termination = "pull_up";    drive_strength_mA = < 8 >; }; // SD D2
            [email protected] { function = "sdcard"; termination = "pull_up";    drive_strength_mA = < 8 >; }; // SD D3
            [email protected] { function = "input";  termination = "no_pulling"; polarity = "active_low"; }; // Hotplug
            [email protected] { function = "output"; termination = "no_pulling"; polarity = "active_low"; }; // EMMC_ENABLE_N
         }; // pin_config

         pin_defines {
            [email protected]_CONTROL_ATTACHED {
               type = "external";
               number = <0>;
            };
            [email protected]_ENABLE {
               type = "external";
               number = <1>;
            };
            [email protected]_CAMERAS {
               type = "internal";
               number = <0>;
            };
            [email protected]_LOW {
               type = "absent";
            };
            [email protected]_DISK_ACTIVITY {
               type = "absent";
            };
            [email protected]_RUN {
               type = "absent";
            };
            [email protected]_SDA {
               type = "internal";
               number = <46>;
            };
            [email protected]_SCL {
               type = "internal";
               number = <47>;
            };
            [email protected]_CLK {
               type = "absent";
            };
            [email protected]_LPO_CLK {
               type = "absent";
            };
            [email protected]_LIMIT_1A2 {
               type = "absent";
            };
            [email protected]_1V8_SEL {
               type = "absent";
            };
            [email protected] {
               type = "absent";
            };
            [email protected] {
               type = "absent";
            };
            [email protected]_MODE {
               type = "absent";
            };
            [email protected]_CARD_DETECT {
               type = "absent";
            };
            [email protected]_SDA {
               type = "absent";
            };
            [email protected]_SCL {
               type = "absent";
            };
            [email protected]_SDA {
               type = "internal";
               number = <0>;
            };
            [email protected]_SCL {
               type = "internal";
               number = <1>;
            };
            [email protected]_I2C_PORT {
               type="internal";
               number=<0>;
             };
             [email protected]_DSI_PORT {
		type="internal";
		number=<0>;
	     };
         }; // pin_defines
      }; // pins
We use I2C pins 0 and 1 and DSI0 (display port 0). As in the dts above DISPLAY_DSI_PORT is set to <0> ...
Are the I2C pins set correctly ?
The dt-blob.bin seems to be the right one, but the compute module doesn't want to activate the display on display port 0.
I've programmed the compute module from the waveshare CM IO Board using HDMI, maybe that's the cause?
The /boot/config.txt has not been modified should we have some entries there?

Thanks.

6by9
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 6895
Joined: Wed Dec 04, 2013 11:27 am
Location: ZZ9 Plural Z Alpha, aka just outside Cambridge.

Re: CM3+ with 7" display on DSI0

Wed May 01, 2019 9:46 am

sworteu wrote:
Wed May 01, 2019 8:35 am
This is my dt-blob.dts (i've compiled to be dt-blob.bin) part for the cm3 pins:
(i've left out the videocore stuff and other boards)
As long as they are present in the file you actually compiled, then that is fine.
sworteu wrote:

Code: Select all

pins_cm3 { // Pi 3 CM3
         pin_config {
            [email protected] {
               polarity = "active_high";
               termination = "pull_down";
               startup_state = "inactive";
               function = "input";
            }; // pin
            [email protected]  { function = "output"; termination = "no_pulling"; polarity = "active_low"; }; // CTMR POWER DOWN
            [email protected]  { function = "input"; termination = ""; polarity = ""; }; // CTMR TEMP SENSOR (1-wire)
            [email protected] { function = "uart0";  termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0
            [email protected] { function = "uart0";  termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0
            [email protected] { function = "input";   termination = "pull_up";    }; // SMPS_SCL
            [email protected] { function = "input";   termination = "pull_up";    }; // SMPS_SDA
            [email protected] { function = "sdcard"; termination = "pull_up";    drive_strength_mA = < 8 >; }; // SD CLK
            [email protected] { function = "sdcard"; termination = "pull_up";    drive_strength_mA = < 8 >; }; // SD CMD
            [email protected] { function = "sdcard"; termination = "pull_up";    drive_strength_mA = < 8 >; }; // SD D0
            [email protected] { function = "sdcard"; termination = "pull_up";    drive_strength_mA = < 8 >; }; // SD D1
            [email protected] { function = "sdcard"; termination = "pull_up";    drive_strength_mA = < 8 >; }; // SD D2
            [email protected] { function = "sdcard"; termination = "pull_up";    drive_strength_mA = < 8 >; }; // SD D3
            [email protected] { function = "input";  termination = "no_pulling"; polarity = "active_low"; }; // Hotplug
            [email protected] { function = "output"; termination = "no_pulling"; polarity = "active_low"; }; // EMMC_ENABLE_N
         }; // pin_config

         pin_defines {
            [email protected]_CONTROL_ATTACHED {
               type = "external";
               number = <0>;
            };
            [email protected]_ENABLE {
               type = "external";
               number = <1>;
            };
            [email protected]_CAMERAS {
               type = "internal";
               number = <0>;
            };
            [email protected]_LOW {
               type = "absent";
            };
            [email protected]_DISK_ACTIVITY {
               type = "absent";
            };
            [email protected]_RUN {
               type = "absent";
            };
            [email protected]_SDA {
               type = "internal";
               number = <46>;
            };
            [email protected]_SCL {
               type = "internal";
               number = <47>;
            };
            [email protected]_CLK {
               type = "absent";
            };
            [email protected]_LPO_CLK {
               type = "absent";
            };
            [email protected]_LIMIT_1A2 {
               type = "absent";
            };
            [email protected]_1V8_SEL {
               type = "absent";
            };
            [email protected] {
               type = "absent";
            };
            [email protected] {
               type = "absent";
            };
            [email protected]_MODE {
               type = "absent";
            };
            [email protected]_CARD_DETECT {
               type = "absent";
            };
            [email protected]_SDA {
               type = "absent";
            };
            [email protected]_SCL {
               type = "absent";
            };
            [email protected]_SDA {
               type = "internal";
               number = <0>;
            };
            [email protected]_SCL {
               type = "internal";
               number = <1>;
            };
            [email protected]_I2C_PORT {
               type="internal";
               number=<0>;
             };
             [email protected]_DSI_PORT {
		type="internal";
		number=<0>;
	     };
         }; // pin_defines
      }; // pins
We use I2C pins 0 and 1 and DSI0 (display port 0). As in the dts above DISPLAY_DSI_PORT is set to <0> ...
Are the I2C pins set correctly ?
The dt-blob.bin seems to be the right one, but the compute module doesn't want to activate the display on display port 0.
I've programmed the compute module from the waveshare CM IO Board using HDMI, maybe that's the cause?
The /boot/config.txt has not been modified should we have some entries there?
Your dt-blob.bin looks OK.
  • Use "vcgencmd get_config ignore_lcd" to confirm that the firmware has seen the I2C setup. It should be 0 (ie don't ignore).
  • Temporarily add "dtparam=i2c_vc=on" to config.txt to enable i2c-0 under Linux. "sudo i2cdetect -y 0" should detect all attached I2C peripheral addresses. The display should be on 0x38 and 0x45. If they aren't detected then look at your I2C wiring. (You may need to run "sudo modprobe i2c_dev" in order to provide userspace access to the I2C controllers.)
Software Engineer at Raspberry Pi Trading. Views expressed are still personal views.
I'm not interested in doing contracts for bespoke functionality - please don't ask.

sworteu
Posts: 14
Joined: Sat Nov 28, 2015 4:07 pm

Re: CM3+ with 7" display on DSI0

Wed May 01, 2019 12:53 pm

Hi 6by9,

- Use "vcgencmd get_config ignore_lcd" to confirm that the firmware has seen the I2C setup. It should be 0 (ie don't ignore).
-- Tried it was set to "1", so i added to /boot/config.txt "ignore_lcd=-0", then tested again and it showed "0" as expected.

- Temporarily add "dtparam=i2c_vc=on" to config.txt to enable i2c-0 under Linux. "sudo i2cdetect -y 0" should detect all attached I2C peripheral addresses. The display should be on 0x38 and 0x45. If they aren't detected then look at your I2C wiring. (You may need to run "sudo modprobe i2c_dev" in order to provide userspace access to the I2C controllers.)
-- i'm unable to do "sudo i2cdetect -y 0" as i've no USB, display, UART or anything to communicate with the CM3 from the board. It's designed to be compact and have minimal features.
-- it's connected in the hardware pcb to GPIO 0 and GPIO 1 (trough the DSI cable).


Could there be anything i'm missing?
for example the dt-blob.bin is added to /boot/config.txt using: "device-tree=dt-blob.bin" should that be correct?

i'm trying to confirm the issue is a faulty desing or wrong settings.

Thanks

6by9
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 6895
Joined: Wed Dec 04, 2013 11:27 am
Location: ZZ9 Plural Z Alpha, aka just outside Cambridge.

Re: CM3+ with 7" display on DSI0

Wed May 01, 2019 1:23 pm

sworteu wrote:
Wed May 01, 2019 12:53 pm
- Use "vcgencmd get_config ignore_lcd" to confirm that the firmware has seen the I2C setup. It should be 0 (ie don't ignore).
-- Tried it was set to "1", so i added to /boot/config.txt "ignore_lcd=-0", then tested again and it showed "0" as expected.
Your dt-blob.bin isn't being accepted then.
ignore_lcd is initialised to -1. If it finds a DISPLAY_SDA value defined via dt-blob.bin then it will be set to 0, otherwise 1.
Manually setting it in config.txt overrides that, but doesn't make the configuration valid.
sworteu wrote:- Temporarily add "dtparam=i2c_vc=on" to config.txt to enable i2c-0 under Linux. "sudo i2cdetect -y 0" should detect all attached I2C peripheral addresses. The display should be on 0x38 and 0x45. If they aren't detected then look at your I2C wiring. (You may need to run "sudo modprobe i2c_dev" in order to provide userspace access to the I2C controllers.)
-- i'm unable to do "sudo i2cdetect -y 0" as i've no USB, display, UART or anything to communicate with the CM3 from the board. It's designed to be compact and have minimal features.
-- it's connected in the hardware pcb to GPIO 0 and GPIO 1 (trough the DSI cable).
You've rather backed yourself into a corner if you have no way of debugging. Tacking wires on to get to the serial console would be the easiest bet if GPIOs 14&15 aren't used for other things. Alternatively put the CM back into a CMIO board, connect GPIO0 to CD0_SDA and GPIO1 to CD0_SCL, and get it working with the display there where you can at least debug things.
sworteu wrote: for example the dt-blob.bin is added to /boot/config.txt using: "device-tree=dt-blob.bin" should that be correct?
NO!
device-tree= sets the Linux kernel device-tree file, and that is very different from dt-blob.bin. They both use the same syntax, but are very different in function.
The firmware will always look at dt-blob.bin and no other file.
Software Engineer at Raspberry Pi Trading. Views expressed are still personal views.
I'm not interested in doing contracts for bespoke functionality - please don't ask.

sworteu
Posts: 14
Joined: Sat Nov 28, 2015 4:07 pm

Re: CM3+ with 7" display on DSI0

Wed May 01, 2019 1:27 pm

Got i2c command tested trough a log, with this output:
Error: Could not open file `/dev/i2c-0' or `/dev/i2c/0': No such file or directory
It seems the i2c0 is not being added correctly perhaps in the dtblob?

6by9
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 6895
Joined: Wed Dec 04, 2013 11:27 am
Location: ZZ9 Plural Z Alpha, aka just outside Cambridge.

Re: CM3+ with 7" display on DSI0

Wed May 01, 2019 1:51 pm

sworteu wrote:
Wed May 01, 2019 1:27 pm
Got i2c command tested trough a log, with this output:
Error: Could not open file `/dev/i2c-0' or `/dev/i2c/0': No such file or directory
It seems the i2c0 is not being added correctly perhaps in the dtblob?
Did you load i2c_dev? Either load it via modprobe, or add it to /etc/modules.
Software Engineer at Raspberry Pi Trading. Views expressed are still personal views.
I'm not interested in doing contracts for bespoke functionality - please don't ask.

sworteu
Posts: 14
Joined: Sat Nov 28, 2015 4:07 pm

Re: CM3+ with 7" display on DSI0

Wed May 01, 2019 2:28 pm

Your dt-blob.bin isn't being accepted then.
ignore_lcd is initialised to -1. If it finds a DISPLAY_SDA value defined via dt-blob.bin then it will be set to 0, otherwise 1.
Manually setting it in config.txt overrides that, but doesn't make the configuration valid.
i've removed the manual override in config.txt and am now testing the last updates to the dt blob. It still doesn't work for now.

You've rather backed yourself into a corner if you have no way of debugging. Tacking wires on to get to the serial console would be the easiest bet if GPIOs 14&15 aren't used for other things. Alternatively put the CM back into a CMIO board, connect GPIO0 to CD0_SDA and GPIO1 to CD0_SCL, and get it working with the display there where you can at least debug things.
We're going to redisign this so we can ssh into the device. For now i'll log it and use the CMIO board to read it.
Also i don't currently have the display adapter CMDK for the board so i can't test it on the CMIO board untill i received it.
NO!
device-tree= sets the Linux kernel device-tree file, and that is very different from dt-blob.bin. They both use the same syntax, but are very different in function.
The firmware will always look at dt-blob.bin and no other file.
Ok i've removed the "device-tree=dt-blob.bin" from the config.txt still doesn't work...
Did you load i2c_dev? Either load it via modprobe, or add it to /etc/modules.
I've done the command sudo modprobe i2c_dev
i'm not sure how to add it to /etc/modules ?

6by9
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 6895
Joined: Wed Dec 04, 2013 11:27 am
Location: ZZ9 Plural Z Alpha, aka just outside Cambridge.

Re: CM3+ with 7" display on DSI0

Wed May 01, 2019 2:44 pm

sworteu wrote:
Wed May 01, 2019 2:28 pm
Your dt-blob.bin isn't being accepted then.
ignore_lcd is initialised to -1. If it finds a DISPLAY_SDA value defined via dt-blob.bin then it will be set to 0, otherwise 1.
Manually setting it in config.txt overrides that, but doesn't make the configuration valid.
i've removed the manual override in config.txt and am now testing the last updates to the dt blob. It still doesn't work for now.
Stop and fix this first. You can do this solely with the CM in the CMIO, even without the display connected.
Until your dt-blob.bin results in ignore_lcd=0 you will be wasting your effort as the GPU won't start to look at probing the display.

Download the standard dt-blob.bin file from the documentation page and confirm that those give the intended result for ignore_lcd. Both DTS and BIN files are available at https://github.com/raspberrypi/document ... putemodule.
Post the output of "cat /proc/cpuinfo | grep Revision" if those don't work.
sworteu wrote:
Did you load i2c_dev? Either load it via modprobe, or add it to /etc/modules.
I've done the command sudo modprobe i2c_dev
i'm not sure how to add it to /etc/modules ?
The contents of my /etc/modules file

Code: Select all

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

i2c-dev
Or use raspi-config to enable i2c and it'll do that change for you.
Software Engineer at Raspberry Pi Trading. Views expressed are still personal views.
I'm not interested in doing contracts for bespoke functionality - please don't ask.

sworteu
Posts: 14
Joined: Sat Nov 28, 2015 4:07 pm

Re: CM3+ with 7" display on DSI0

Wed May 01, 2019 2:56 pm

6by9 wrote:
Wed May 01, 2019 2:44 pm
sworteu wrote:
Wed May 01, 2019 2:28 pm
Your dt-blob.bin isn't being accepted then.
ignore_lcd is initialised to -1. If it finds a DISPLAY_SDA value defined via dt-blob.bin then it will be set to 0, otherwise 1.
Manually setting it in config.txt overrides that, but doesn't make the configuration valid.
i've removed the manual override in config.txt and am now testing the last updates to the dt blob. It still doesn't work for now.
Stop and fix this first. You can do this solely with the CM in the CMIO, even without the display connected.
Until your dt-blob.bin results in ignore_lcd=0 you will be wasting your effort as the GPU won't start to look at probing the display.

Download the standard dt-blob.bin file from the documentation page and confirm that those give the intended result for ignore_lcd. Both DTS and BIN files are available at https://github.com/raspberrypi/document ... putemodule.
Post the output of "cat /proc/cpuinfo | grep Revision" if those don't work.
sworteu wrote:
Did you load i2c_dev? Either load it via modprobe, or add it to /etc/modules.
I've done the command sudo modprobe i2c_dev
i'm not sure how to add it to /etc/modules ?
The contents of my /etc/modules file

Code: Select all

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

i2c-dev
Or use raspi-config to enable i2c and it'll do that change for you.
output of "cat /proc/cpuinfo | grep Revision"":
Revision : a02100
as it should be, a CM3+ (that's correct)

- my /etc/modules looks the same.
module i2c_dev is loaded

John Westlake
Posts: 104
Joined: Thu Nov 09, 2017 4:34 am

Re: CM3+ with 7" display on DSI0

Thu May 02, 2019 10:18 am

Might be a silly question, your not missing I2C pull-up resistors or some such on your PCB are you by anychance?

(I'm not sure if the panel has them on its interface PCB or not - but just wondering if you have a hardware issue that's causing you to chase your tail...

sworteu
Posts: 14
Joined: Sat Nov 28, 2015 4:07 pm

Re: CM3+ with 7" display on DSI0

Thu May 02, 2019 10:32 am

John Westlake wrote:
Thu May 02, 2019 10:18 am
Might be a silly question, your not missing I2C pull-up resistors or some such on your PCB are you by anychance?

(I'm not sure if the panel has them on its interface PCB or not - but just wondering if you have a hardware issue that's causing you to chase your tail...
The i2c ports seems to be connected wrong way round.

This issue will be in the fridge for now. Hardware related.

Thanks for your support all!

John Westlake
Posts: 104
Joined: Thu Nov 09, 2017 4:34 am

Re: CM3+ with 7" display on DSI0

Thu May 02, 2019 1:52 pm

Great you can move forward now - this is always the hardest stage of development when your not sure if your battling a hardware or software issue!

sworteu
Posts: 14
Joined: Sat Nov 28, 2015 4:07 pm

Re: CM3+ with 7" display on DSI0

Fri May 03, 2019 11:26 am

John Westlake wrote:
Thu May 02, 2019 1:52 pm
Great you can move forward now - this is always the hardest stage of development when your not sure if your battling a hardware or software issue!
Yes it is, we'll report when it's working so it may be helpfull to others.

sworteu
Posts: 14
Joined: Sat Nov 28, 2015 4:07 pm

Re: CM3+ with 7" display on DSI0

Wed May 08, 2019 4:04 pm

We have it working. The device tree is functioning normally when set to display port 0 with i2c port 0 and sda scl on gpio 0 and 1.

We had the i2c hardware traces the wrong way round.

Thanks @6by9 @John Westlake

sworteu
Posts: 14
Joined: Sat Nov 28, 2015 4:07 pm

Re: CM3+ with 7" display on DSI0

Mon Jun 03, 2019 2:47 pm

So i'm back here to inform everyone of another issue i had.

When using DISPLAY_DSI_PORT <0> the screen colors are "inverted" sometimes.

It seems the DSI PORT 0 is unstable. Testing on DSI PORT 1 i can't seem to get any issues.
The colors seem to be fine always.

So having these dt-blob parts (_cm3+ module):
pins_cm3 { // Pi 3 CM3
pin_config {
[email protected] {
polarity = "active_high";
termination = "pull_down";
startup_state = "inactive";
function = "input";
}; // pin
[email protected] { function = "output"; termination = "pull_up"; polarity = "active_high"; startup_state = "active"; };
[email protected] { function = "input"; termination = "pull_up"; polarity = "active_low"; };
[email protected] { function = "uart0"; termination = "no_pulling"; drive_strength_mA = < 8 >; };
[email protected] { function = "uart0"; termination = "pull_up"; drive_strength_mA = < 8 >; };
[email protected] { function = "output"; termination = "pull_down"; polarity = "active_low"; startup_state = "active"; };
[email protected] { function = "input"; termination = "pull_up"; }; // SMPS_SCL
[email protected] { function = "input"; termination = "pull_up"; }; // SMPS_SDA
[email protected] { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK
[email protected] { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD
[email protected] { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0
[email protected] { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1
[email protected] { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2
[email protected] { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3
[email protected] { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Hotplug
[email protected] { function = "output"; termination = "no_pulling"; polarity = "active_low"; }; // EMMC_ENABLE_N
}; // pin_config

pin_defines {
[email protected]_CONTROL_ATTACHED {
type = "external";
number = <0>;
};
[email protected]_ENABLE {
type = "external";
number = <1>;
};
[email protected]_CAMERAS {
type = "internal";
number = <0>;
};
[email protected]_LOW {
type = "absent";
};
[email protected]_DISK_ACTIVITY {
type = "absent";
};
[email protected]_RUN {
type = "absent";
};
[email protected]_SDA {
type = "internal";
number = <46>;
};
[email protected]_SCL {
type = "internal";
number = <47>;
};
[email protected]_CLK {
type = "absent";
};
[email protected]_LPO_CLK {
type = "absent";
};
[email protected]_LIMIT_1A2 {
type = "absent";
};
[email protected]_1V8_SEL {
type = "absent";
};
[email protected] {
type = "absent";
};
[email protected] {
type = "absent";
};
[email protected]_MODE {
type = "absent";
};
[email protected]_CARD_DETECT {
type = "absent";
};
[email protected]_SDA {
type = "absent";
};
[email protected]_SCL {
type = "absent";
};
[email protected]_SDA {
type = "internal";
number = <0>;
};
[email protected]_SCL {
type = "internal";
number = <1>;
};
[email protected]_I2C_PORT {
type="internal";
number=<0>;
};
[email protected]_DSI_PORT {
type = "internal";
number = <1>;
};
}; // pin_defines
}; // pins
is indeed having issues with the official 7" display. It looks like a timing issue or something.
The colors of the display seem to be flipped sometimes, and "may" become normal if the display was off/on switched.

It's very odd, but i should say use "DSI PORT 1" instead of "DSI PORT 0" when you can.

I think the raspberry pi foundation should try to track this down, as it could be a serious issue.

The setup is using startx with a custom gui program, working fine without problems when using DSI PORT 1 but having inverted colors "sometimes" (50% of the time probably) when using DSI PORT 0.

Or somebody can tell me why this could happen?

jamesh
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 22728
Joined: Sat Jul 30, 2011 7:41 pm

Re: CM3+ with 7" display on DSI0

Mon Jun 03, 2019 2:51 pm

Odd. There's no real difference in the ports, and nothing like this has been previously reported (including time when the chip was used in other devices). Not sure what to suggest, if anything comes to mind will report back.
Principal Software Engineer at Raspberry Pi (Trading) Ltd.
Contrary to popular belief, humorous signatures are allowed. Here's an example...
"My grief counseller just died, luckily, he was so good, I didn't care."

sworteu
Posts: 14
Joined: Sat Nov 28, 2015 4:07 pm

Re: CM3+ with 7" display on DSI0

Mon Jun 03, 2019 3:03 pm

jamesh wrote:
Mon Jun 03, 2019 2:51 pm
Odd. There's no real difference in the ports, and nothing like this has been previously reported (including time when the chip was used in other devices). Not sure what to suggest, if anything comes to mind will report back.
hi jamesh, please do so. It's very odd and we can't find how this happens. We'll move to display port 1 and keep that.

6by9
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 6895
Joined: Wed Dec 04, 2013 11:27 am
Location: ZZ9 Plural Z Alpha, aka just outside Cambridge.

Re: CM3+ with 7" display on DSI0

Mon Jun 03, 2019 3:03 pm

Please create an issue in the firmware issue tracker with details and a link back to here
I can't promise that we'll look at it immediately, but it's less likely to get lost than a report as one of (currently) 1.38million other posts on the forum.
Software Engineer at Raspberry Pi Trading. Views expressed are still personal views.
I'm not interested in doing contracts for bespoke functionality - please don't ask.

sworteu
Posts: 14
Joined: Sat Nov 28, 2015 4:07 pm

Re: CM3+ with 7" display on DSI0

Mon Jun 03, 2019 3:14 pm

6by9 wrote:
Mon Jun 03, 2019 3:03 pm
Please create an issue in the firmware issue tracker with details and a link back to here
I can't promise that we'll look at it immediately, but it's less likely to get lost than a report as one of (currently) 1.38million other posts on the forum.
Done
https://github.com/raspberrypi/firmware/issues/1149

Return to “Compute Module”