Fwd: DRM MIPI DSI device and I2C device?

Laurent Pinchart laurent.pinchart at ideasonboard.com
Thu Apr 5 11:39:44 UTC 2018


Hi Andrzej,

On Thursday, 5 April 2018 14:28:51 EEST Andrzej Hajda wrote:
> On 05.04.2018 12:28, Laurent Pinchart wrote:
> > On Wednesday, 4 April 2018 11:41:05 EEST Carsten Behling wrote:
> >>> Hi,
> >>> 
> >>> I would like to write a DRM bridge driver that is an I2C device and a
> >>> DRM MIPI DSI device.
> >>> 
> >>> It looks like that both - 'i2c-core.c: of_i2c_register_devices' and
> >>> 'drm_mipi_dsi.c: mipi_dsi_host_register'  are registering their devices
> >>> by iterating over devicetree child nodes with
> >>> for_each_available_child_of_node.
> >>> 
> >>> Since I can't make the bridge a child node of both, I don't know how to
> >>> resolve it.
> >> 
> >> Found the answer myself. adv7533 driver is a good example. Devicetree
> >> exists for qcom apq8016-sbc. No need to make the bridge a MIPI DSI child
> >> node.
> > 
> > This is an issue that has largely been ignored so far in Linux. Both DT
> > and the Linux kernel device model organize devices in a tree structure
> > based on the control buses. Devices that are connected to multiple control
> > buses haven't been taken into account in the design and are thus hard to
> > support.
> > 
> > As you may know, DSI can work in command mode or data mode. In data mode
> > the DSI bus is only use to transfer video data, while in command mode it
> > is also used to control the device (reading and writing registers).
> 
> I am not sure what you mean by data and command mode. MIPI DSI specs
> says about video and command mode - modes to transfer video data. In
> both cases DSI can be used to control the device.

Sorry, I meant pure video mode, when a panel only uses DSI to receive video 
data but handles all control communication through a separate control bus.

> > A DSI device operating in data mode and controlled through I2C isn't a
> > problem, as there's a single control bus in that case. The device should
> > be a child of the I2C controller in DT, and will be instantiated through
> > of_i2c_register_devices(). A DSI device operating in command mode without
> > any other control bus isn't a problem either, it will be a child of the
> > DSI master in DT, and will bee instantiated through
> > mipi_dsi_host_register().
> > 
> > A DSI device operating in command mode that also require configuration
> > through a separate control bus (such as I2C, but also SPI) is much more
> > problematic to support. Fortunately those devices are rare. Hopefully
> > your device won't fall in this category. If it does, we can discuss how
> > to best support it.
> 
> As you have already found adv bridge is a good example. It is not clear
> from the emails if DSI is used only to send video, or also to control?
> And if to control, is it used to pass only specific commands
> or can be used as alternative to i2c interface?

Carsten, could you please provide more information about the panel you're 
using ?

-- 
Regards,

Laurent Pinchart





More information about the dri-devel mailing list