On Thu, Nov 26, 2015 at 03:03:54PM +0800, Chris Zhong wrote:Yeah, got it, thanks. :)
Hi ThierryI don't understand. If you don't make bridge a pointer, but rather embed
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:I'm almost done with all the modifications according to your comments.
add Synopsys DesignWare MIPI DSI host controller driver support.struct drm_bridge already has a pointer to an encoder, can't you reuse
Signed-off-by: Chris Zhong <zyw@xxxxxxxxxxxxxx>
---
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;
that instead?
+ struct drm_bridge *bridge;Typically you'd embed the bridge into the driver structure.
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.
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.
I guess you mean this thread <https://patchwork.kernel.org/patch/5816991/>
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.
Thierry