This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

SN65DSI83-Q1: Is this part - or the 84 or the 85 - compatible with the DSI interface from a Raspberry Pi - DSI clock input characteristics

Part Number: SN65DSI83-Q1
Other Parts Discussed in Thread: SN65DSI85

I am trying to bring up this part from a Raspberry Pi 3.  For now, I'm manually setting the I2C registers

The LVDS test pattern displays correctly using Extclock.

However, the device is not correctly receiving the DSI clock in that the PLL is not locking.

My spectrum analyser shows the clock at 333MHz (my 'scope does not go up that high so it shows as 'fuzz').

The data lane is discernable on my 'scope, exhibting expected sync periods etc.

Under the same conditions, the raspberry pi 'official' display is correctly receiving the clock and displaying the image.  The ribbon cable connecting the Pi to the display is 6"

The average DC level of the clock (as reprorted by my 100MHz scope) is very low - about 60mV on one leg, and -20mV on the other when connected to the TI chip

When connected to the Tosh chip in the official display, the average DC levels rise to about 170mV

The Tosh datasheet shows that there are registers to control the "Rx Bias resistance" on all the lanes.

Is it the case that one is expected to provide external bias resistors for the DSI Clock input to the Texas chip?

  • Hi Chris,

    There are no required external bias resistors for the DSI clock. However, it looks like the only way to use the Raspberry PI DSI interface is by using their official Raspberry Pi DSI screen display. You will need to consult with them for further questions.

    Regards,
    I.K.
  • Thank you for your rapid response, however there is work by Eric Anholt (who is a contributor to the Rasbperry Pi O/S dev team) which gets us past the official "it's impossible, don't ask" view,

    https://github.com/anholt/linux/wiki/Raspberry-Pi-and-other-MIPI-DSI-display-panels

    Also, the current kernel sources now contain DSI drivers for several [native DSI] panels, so I'm not going to give up hope just yet.

    I have found empirically that adding a 2.0k resistor from each DSI clock pin to Vcore brought the average DC voltage on the clock pins up to about 270mV, very comparable with what is seen when the bus is connected to the official display

    The status register (0xe5) now shows the PLL is locked,  and I get an LVDS clock output which is smack on the expected frequency when divided by the divisor register. 

    I am still seeing occasional sync errors, but I feel I am getting close.  

    I will post again for the benefit of others if I finally succeed.

  • Hi Chris,

    I see, I was not aware of that repository. Please do post again if you are successful.

    Regards,
    I.K.
  • OK - after a great deal of experimentation, I eventually concluded that the  only thing wrong related to sync information.

    Using the DSI Tuner, I established register settings which produce a partial picture, but bizzrely, this is with register 0x10 set to 0x3e as recommended by the Tuner (from the datasheet, I'd set a value of 0x18)

    The datasheet says that the top three bits are "reserved and should not be written" - well, one has to write SOMETHING, and I'd arbitarily chosen to set bits 7:5 at zero.

    However, the Tuner knows better, and as soon as I set that 0x20 bit in that register - BOOM! the LVDS outputs lit up.  That bit is described as "DSI Mode" in the Tuner (and simply 'reserved' in the datasheet

    I now have to work out why I have only half the panel lit up bit it is a start.

    It is almost as though the chip is expecting two lanes of data, even though I have only told it there is one.

    I shall continue to tinker.  I think this has proved, though, that in principle, these TI chips can display pictures from the R-Pi's DSI port - profound relief here from the UK!

  • Hi Chris,

    Can you share the panel datasheet and your .dsi file? I can take a look at it and see if anything's amiss.

    Regards,
    I.K.
  • AA070ME01_Datasheet.pdfFirstly, many thanks for your response - it is much appreciated.

    I attach the datasheet, and the .dsi file as requested.

    <original post contained a red herring here - deleted by Chris to reduce confusion>

    BUT - I just thought I'd experiement with these mysterious "DSI Channel Mode bits, and to my surprise and delight, when I put 0x5E in to register 0x10 - Bingo!  Full width display.

    I'm sure you will have an explanation for that, but to me those 'reserved' bits don't seem as innocent as the datasheet might imply!

    If you do have an explation for all this, it would doubtless be really helpful to others if you can post it - it's probably absorbed (I won't say wasted - I'm learning all the time) two days getting this last bit sorted out.

  • Hi Chris,

    Addresses 0x00 - 0x08 say DSI85 for all three of the DSI83, DSI84, and DSI85 devices. This is probably because they have the same die. 

    Those reserved bits in register 0x10 correspond to the SN65DSI85, which has a dual-channel DSI interface:

    With the DSI83, 6:5 should be 0b01 to disable DSI channel B. If you write 0b10 to it then both DSI channel A and channel B are enabled as separate DSI receivers, so I can see why it would work in this mode since channel A would be independent of channel B, but it's strange why 0b01 (single channel DSI receiver) doesn't work. 

    Can you try writing 0xDE and then 0xBE to register 0x10? I would like to see what effect bit 7 has.

    Regards,

    I.K. 

  • Doh! I feel a right dummy for not having thought to look in the datasheet for the x85 device, especially when the clue is writ large in the chip ID!
    However, I do feel the datasheet for the x83 device ought to state the correct settings for the 'reserved' bits (I guess some people would have read the register, modified all but the reserved bits then written it back, but that's a lot of extra work and I2c transactions compared with simply slamming a fixed value in there).
    Anyway.
    0xDE works correctly
    0xBE gives the "half a display" view, just like 0x3e
    0xD8 also works correctly
    So in summary, the left/right pixel bit seems to make no difference, but it seems that the only way to avoid half a picture is to use 0b01 in the 6:5 field.
    And whilst this is slightly surprising, I have a solution, so I am a satisfied customer, and am therefore marking this resolved.
    Once again, thank you for the interaction - it has been most helpful.
  • Hi Chris,

    Great, I'm glad you were able to arrive at a solution. Also, thanks for your help with testing the reserved bits. This will help with debugging future issues.

    Regards,
    I.K.