On 11/26/2015 04:04 PM, Thierry Reding wrote: > On Thu, Nov 26, 2015 at 03:03:54PM +0800, Chris Zhong wrote: >> Hi Thierry >> >> Thanks for your feedback. >> >> >> On 11/21/2015 12:07 AM, Thierry Reding wrote: >>> On Fri, Nov 20, 2015 at 04:15:32PM +0800, Chris Zhong wrote: >>>> add Synopsys DesignWare MIPI DSI host controller driver support. >>>> >>>> Signed-off-by: Chris Zhong <zyw at rock-chips.com> >>>> --- >>>> >>>> Changes in v4: >>>> eliminate some warnning >>>> >>>> Changes in v3: None >>>> Changes in v2: None >>>> >>>> drivers/gpu/drm/bridge/Kconfig | 11 + >>>> drivers/gpu/drm/bridge/Makefile | 1 + >>>> drivers/gpu/drm/bridge/dw_mipi_dsi.c | 1056 ++++++++++++++++++++++++++++++++++ >>>> include/drm/bridge/dw_mipi_dsi.h | 27 + >>>> 4 files changed, 1095 insertions(+) >>>> create mode 100644 drivers/gpu/drm/bridge/dw_mipi_dsi.c >>>> create mode 100644 include/drm/bridge/dw_mipi_dsi.h >>>> >>>> >>>> +struct dw_mipi_dsi { >>>> + struct mipi_dsi_host dsi_host; >>>> + struct drm_connector connector; >>>> + struct drm_encoder *encoder; >>> struct drm_bridge already has a pointer to an encoder, can't you reuse >>> that instead? >>> >>>> + struct drm_bridge *bridge; >>> Typically you'd embed the bridge into the driver structure. >> I'm almost done with all the modifications according to your comments. >> Remaining this point I can not understand, the dsi is a pointer of >> drm_bridge, >> hence I can not get the bridge by container_of. >> Although, the "bridge->driver_private = dsi" have done in >> dw_mipi_dsi_register. > I don't understand. If you don't make bridge a pointer, but rather embed > it within the structure, then you can use container_of(), can't you? You > get it allocated automatically as part of allocating the dw_mipi_dsi > structure. See for example the ps8622 and ptn3460 bridge drivers. Yeah, got it, thanks. :) I am going to modify it in next version patch. > > On a slightly unrelated note, I'm not sure if we discussed this already > or if it was in another thread, but why is this even a bridge driver? A > bridge is typically some IC outside of the SoC, whereas this clearly is > IP designed into the SoC. So it's really more of an encoder rather than > a bridge. I guess you mean this thread <https://patchwork.kernel.org/patch/5816991/> I think the bridge is beneficial to share the dw-mipi driver for different soc with same version dw-mipi IP. > > Thierry