<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">On 2014年09月25日 16:58, Mark yao wrote:<br>
    </div>
    <blockquote cite="mid:5423D951.4030703@rock-chips.com" type="cite">
      <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
      <div class="moz-cite-prefix">On 2014年09月25日 00:20, Daniel Kurtz
        wrote:<br>
      </div>
      <blockquote
cite="mid:CAGS+omBKKktuqOfiek0VN5Nk6KGC64Yc7i_HbM=Wf3gyJZC8bw@mail.gmail.com"
        type="cite">
        <pre wrap="">Hi Mark,

Please review comments inline...

On Wed, Sep 24, 2014 at 10:12 AM, Mark yao <a moz-do-not-send="true" class="moz-txt-link-rfc2396E" href="mailto:mark.yao@rock-chips.com"><mark.yao@rock-chips.com></a> wrote:
</pre>
      </blockquote>
      <blockquote
cite="mid:CAGS+omBKKktuqOfiek0VN5Nk6KGC64Yc7i_HbM=Wf3gyJZC8bw@mail.gmail.com"
        type="cite">
        <blockquote type="cite"> </blockquote>
        <pre wrap="">To match the enum name, use ROCKCHIP_OUTPUT_TYPE_*.
Also, no need to explicitly set the first one to 0.
However, see below.  I don't think we to modify the drm_display_mode
to include an output type.
</pre>
      </blockquote>
      but vop devices need know the connector type, connector enable
      register is in vop.<br>
      can I do that like under to  get connector type for crtc?<br>
      <br>
          static int rockchip_get_connector_type(struct drm_crtc *crtc)<br>
          {<br>
                struct drm_device *dev = crtc->dev;<br>
                struct drm_connector * connector;<br>
      <br>
                list_for_each_entry(connector,
      &dev->mode_config.connector_list, head) {<br>
                if (!connector->encoder)<br>
                        continue;<br>
                /*<br>
                 * one crtc only has one connector in my case, so just
      find the first connector at list.<br>
                 */<br>
                if (connector->encoder->crtc == crtc)<br>
                        break;<br>
          }<br>
      <br>
          if (!connector)<br>
                  return -EINVAL;<br>
      <br>
          return connector->connector_type;<br>
      } </blockquote>
    Oh, sorry, forgot to drop this comment, <br>
    for connector type problem, I try to new a help function for encoder
    to call as Daniel advices.<br>
    <blockquote cite="mid:5423D951.4030703@rock-chips.com" type="cite">
      <blockquote
cite="mid:CAGS+omBKKktuqOfiek0VN5Nk6KGC64Yc7i_HbM=Wf3gyJZC8bw@mail.gmail.com"
        type="cite">
        <blockquote type="cite">
          <pre wrap="">

+#define to_rockchip_plane(x) container_of(x, struct rockchip_plane, base)
+
+struct rockchip_plane {
+       int id;
+       struct drm_plane base;
+       const struct vop_win *win;
+       struct vop_context *ctx;
</pre>
        </blockquote>
      </blockquote>
      <blockquote
cite="mid:CAGS+omBKKktuqOfiek0VN5Nk6KGC64Yc7i_HbM=Wf3gyJZC8bw@mail.gmail.com"
        type="cite">
        <blockquote type="cite"> </blockquote>
        <pre wrap="">Isn't ctx just: to_vop_ctx(base->crtc)

</pre>
      </blockquote>
      OK. we can use to_vop_ctx(base->crtc) to get ctx. </blockquote>
    I have do a test to use "to_vop_ctx(base->crtc)", but found that
    "base->crtc" maybe not init.<br>
    for cursor plane, base->crtc always is NULL. and disable_plane
    will fail.<br>
    maybe we can add "base->crtc = crtc" at update_plane, but it
    seems not good.<br>
    so I think still use "rockchip_plane->ctx" would be better.<br>
    <br>
    -Mark<br>
  </body>
</html>