On Mon, Apr 16, 2018 at 11:32:50AM +0530, spanda@codeaurora.org wrote:
On 2018-04-14 00:59, Sean Paul wrote:
On Fri, Apr 13, 2018 at 10:53:00AM +0530, Sandeep Panda wrote:
Add support for TI's sn65dsi86 dsi2edp bridge chip. The chip converts DSI transmitted signal to eDP signal, which is fed to the connected eDP panel.
This chip can be controlled via either i2c interface or dsi interface. Currently in driver all the control registers are being accessed through i2c interface only. Also as of now HPD support has not been added to bridge chip driver.
Signed-off-by: Sandeep Panda spanda@codeaurora.org
<snip />
+{
- struct mipi_dsi_host *host;
- struct mipi_dsi_device *dsi;
- struct sn65dsi86 *pdata = bridge_to_sn65dsi86(bridge);
- int ret;
- const struct mipi_dsi_device_info info = { .type = "sn65dsi86",
.channel = 0,
.node = NULL,
};
- if (!bridge->encoder) {
DRM_ERROR("Parent encoder object not found");
return -ENODEV;
- }
- /* HPD not supported */
- pdata->connector.polled = 0;
You'll need to refactor the below to accommodate panels. If you're not planning on supporting hotplug, you should probably remove all of the connector-related stuff from this driver, since you will always be using a panel driver.
Thanks for reviewing the patch in detail.
I have one doubt here. If we remove connector from bridge driver, then how will detect() and get_modes() called. If you are suggesting to use panel func's detect() and get_mode() then it might not work, because once upstream DSI driver sees an external bridge is connected to DSI, then it does not create a connector of it own, it expects the external bridge to create the connector node. I think here the external bridge has to create the connector and when detect() and get_modes() call come to external bridge then it should query connected panel's detect() and get_modes() API.
Right, thanks for setting me straight. You'll need to call the drm_panel_* helper functions if the panel is present for the connector hooks.
Sean
<snip />