]> Git Repo - linux.git/commitdiff
Merge tag 'drm-misc-next-2019-01-16' of git://anongit.freedesktop.org/drm/drm-misc...
authorDave Airlie <[email protected]>
Thu, 17 Jan 2019 23:20:10 +0000 (09:20 +1000)
committerDave Airlie <[email protected]>
Thu, 17 Jan 2019 23:31:28 +0000 (09:31 +1000)
drm-misc-next for 5.1:

UAPI Changes:
 - New fourcc identifier for ARM Framebuffer Compression v1.3

Cross-subsystem Changes:

Core Changes:
 - Reorganisation of drm_device and drm_framebuffer headers
 - Cleanup of the drmP inclusion
 - Fix leaks in the fb-helpers
 - Allow for depth different from bpp in fb-helper fbdev emulation
 - Remove drm_mode_object from drm_display_mode

Driver Changes:
 - Add reflection properties to rockchip
 - a bunch of fixes for virtio
 - a bunch of fixes for dp_mst and drivers using it, and introduction of a
   new refcounting scheme
 - Convertion of bochs to atomic and generic fbdev emulation
 - Allow meson to remove the firmware framebuffers

[airlied: patch rcar-du to add drm_modes.h]
Signed-off-by: Dave Airlie <[email protected]>
From: Maxime Ripard <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/20190116200428.u2n4jbk4mzza7n6e@flea
1  2 
drivers/gpu/drm/bridge/analogix-anx78xx.c
drivers/gpu/drm/bridge/sii902x.c
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
drivers/gpu/drm/i2c/tda998x_drv.c
drivers/gpu/drm/mediatek/mtk_hdmi.c
drivers/gpu/drm/msm/dsi/dsi_manager.c
drivers/gpu/drm/msm/edp/edp_bridge.c
drivers/gpu/drm/msm/hdmi/hdmi_bridge.c
drivers/gpu/drm/rcar-du/rcar_dw_hdmi.c
drivers/gpu/drm/sti/sti_hdmi.c

index 705620e9f505e3b79620d4d9fdab25a62d1517c1,e11309e9bc4f595b1f93de0f9eb73e8a7cea5963..4cf7bc17ae149699c653936baebd41b1ee1fc5b4
@@@ -1082,8 -1082,8 +1082,8 @@@ static void anx78xx_bridge_disable(stru
  }
  
  static void anx78xx_bridge_mode_set(struct drm_bridge *bridge,
 -                                  struct drm_display_mode *mode,
 -                                  struct drm_display_mode *adjusted_mode)
 +                              const struct drm_display_mode *mode,
 +                              const struct drm_display_mode *adjusted_mode)
  {
        struct anx78xx *anx78xx = bridge_to_anx78xx(bridge);
        struct hdmi_avi_infoframe frame;
  
        mutex_lock(&anx78xx->lock);
  
-       err = drm_hdmi_avi_infoframe_from_display_mode(&frame, adjusted_mode,
-                                                      false);
+       err = drm_hdmi_avi_infoframe_from_display_mode(&frame,
+                                                      &anx78xx->connector,
+                                                      adjusted_mode);
        if (err) {
                DRM_ERROR("Failed to setup AVI infoframe: %d\n", err);
                goto unlock;
index a0b3a568dd9c37cf5097b088e121326f371fb125,a9b4f45ae87c95e71ec35960857952d4164dcc67..a5d58f7035c157cda4aeb27d7ecb32c0b2c2d9d3
@@@ -232,8 -232,8 +232,8 @@@ static void sii902x_bridge_enable(struc
  }
  
  static void sii902x_bridge_mode_set(struct drm_bridge *bridge,
 -                                  struct drm_display_mode *mode,
 -                                  struct drm_display_mode *adj)
 +                                  const struct drm_display_mode *mode,
 +                                  const struct drm_display_mode *adj)
  {
        struct sii902x *sii902x = bridge_to_sii902x(bridge);
        struct regmap *regmap = sii902x->regmap;
        if (ret)
                return;
  
-       ret = drm_hdmi_avi_infoframe_from_display_mode(&frame, adj, false);
+       ret = drm_hdmi_avi_infoframe_from_display_mode(&frame,
+                                                      &sii902x->connector, adj);
        if (ret < 0) {
                DRM_ERROR("couldn't fill AVI infoframe\n");
                return;
index 4fed3eda6ded9e9953de7bf4e334a8bf8fff5d4a,88b720b63126b61a17fa549528db653706355ba6..129f464cbeb19aaffe37d3be6831fd7801ef8f0f
@@@ -1344,7 -1344,8 +1344,8 @@@ static void hdmi_config_AVI(struct dw_h
        u8 val;
  
        /* Initialise info frame from DRM mode */
-       drm_hdmi_avi_infoframe_from_display_mode(&frame, mode, false);
+       drm_hdmi_avi_infoframe_from_display_mode(&frame,
+                                                &hdmi->connector, mode);
  
        if (hdmi_bus_fmt_is_yuv444(hdmi->hdmi_data.enc_out_bus_format))
                frame.colorspace = HDMI_COLORSPACE_YUV444;
@@@ -1998,8 -1999,8 +1999,8 @@@ dw_hdmi_bridge_mode_valid(struct drm_br
  }
  
  static void dw_hdmi_bridge_mode_set(struct drm_bridge *bridge,
 -                                  struct drm_display_mode *orig_mode,
 -                                  struct drm_display_mode *mode)
 +                                  const struct drm_display_mode *orig_mode,
 +                                  const struct drm_display_mode *mode)
  {
        struct dw_hdmi *hdmi = bridge->driver_private;
  
index a6ba461749b2d7bd65cea02392534b91ffd6dc66,80e4ff33a37a0da2290e4bad6695d7eaeba9b090..ecdb8070ed357823c5f4383b14c212f27532265c
@@@ -845,11 -845,12 +845,12 @@@ static int tda998x_write_aif(struct tda
  }
  
  static void
 -tda998x_write_avi(struct tda998x_priv *priv, struct drm_display_mode *mode)
 +tda998x_write_avi(struct tda998x_priv *priv, const struct drm_display_mode *mode)
  {
        union hdmi_infoframe frame;
  
-       drm_hdmi_avi_infoframe_from_display_mode(&frame.avi, mode, false);
+       drm_hdmi_avi_infoframe_from_display_mode(&frame.avi,
+                                                &priv->connector, mode);
        frame.avi.quantization_range = HDMI_QUANTIZATION_RANGE_FULL;
  
        tda998x_write_if(priv, DIP_IF_FLAGS_IF2, REG_IF2_HB0, &frame);
@@@ -1122,7 -1123,6 +1123,6 @@@ static void tda998x_connector_destroy(s
  }
  
  static const struct drm_connector_funcs tda998x_connector_funcs = {
-       .dpms = drm_helper_connector_dpms,
        .reset = drm_atomic_helper_connector_reset,
        .fill_modes = drm_helper_probe_single_connector_modes,
        .detect = tda998x_connector_detect,
@@@ -1339,8 -1339,8 +1339,8 @@@ static void tda998x_bridge_disable(stru
  }
  
  static void tda998x_bridge_mode_set(struct drm_bridge *bridge,
 -                                  struct drm_display_mode *mode,
 -                                  struct drm_display_mode *adjusted_mode)
 +                                  const struct drm_display_mode *mode,
 +                                  const struct drm_display_mode *adjusted_mode)
  {
        struct tda998x_priv *priv = bridge_to_tda998x_priv(bridge);
        unsigned long tmds_clock;
index 994f0d8646bfeafea84d545a14215ffc7c3c0ffe,f3ef7bf80563fcfe68e67ed2c7922805a268d1a7..12ad00d010630adf9637f8c87c18c1511658b91c
@@@ -981,7 -981,8 +981,8 @@@ static int mtk_hdmi_setup_avi_infoframe
        u8 buffer[17];
        ssize_t err;
  
-       err = drm_hdmi_avi_infoframe_from_display_mode(&frame, mode, false);
+       err = drm_hdmi_avi_infoframe_from_display_mode(&frame,
+                                                      &hdmi->conn, mode);
        if (err < 0) {
                dev_err(hdmi->dev,
                        "Failed to get AVI infoframe from mode: %zd\n", err);
@@@ -1370,8 -1371,8 +1371,8 @@@ static void mtk_hdmi_bridge_post_disabl
  }
  
  static void mtk_hdmi_bridge_mode_set(struct drm_bridge *bridge,
 -                                   struct drm_display_mode *mode,
 -                                   struct drm_display_mode *adjusted_mode)
 +                              const struct drm_display_mode *mode,
 +                              const struct drm_display_mode *adjusted_mode)
  {
        struct mtk_hdmi *hdmi = hdmi_ctx_from_bridge(bridge);
  
index bdb063b2dc4a238a8686ab4a17fa75586e3c7ed2,7c8352a8ea97556976dee98fbae2fd03d6553837..979a8e9293412349f1d29d894fb4e2f64d1d5cc2
@@@ -527,8 -527,8 +527,8 @@@ disable_phy
  }
  
  static void dsi_mgr_bridge_mode_set(struct drm_bridge *bridge,
 -              struct drm_display_mode *mode,
 -              struct drm_display_mode *adjusted_mode)
 +              const struct drm_display_mode *mode,
 +              const struct drm_display_mode *adjusted_mode)
  {
        int id = dsi_mgr_bridge_get_id(bridge);
        struct msm_dsi *msm_dsi = dsi_mgr_get_dsi(id);
        struct mipi_dsi_host *host = msm_dsi->host;
        bool is_dual_dsi = IS_DUAL_DSI();
  
-       DBG("set mode: %d:\"%s\" %d %d %d %d %d %d %d %d %d %d 0x%x 0x%x",
-                       mode->base.id, mode->name,
-                       mode->vrefresh, mode->clock,
-                       mode->hdisplay, mode->hsync_start,
-                       mode->hsync_end, mode->htotal,
-                       mode->vdisplay, mode->vsync_start,
-                       mode->vsync_end, mode->vtotal,
-                       mode->type, mode->flags);
+       DBG("set mode: " DRM_MODE_FMT, DRM_MODE_ARG(mode));
  
        if (is_dual_dsi && !IS_MASTER_DSI_LINK(id))
                return;
index 86366ba03e6076d4963ae0845e9d172d04cd118a,153f350ce017cc40165448feea1bdd6a57442749..11166bf232ffcdecc56dc5a9925455a784fa00ee
@@@ -52,22 -52,15 +52,15 @@@ static void edp_bridge_post_disable(str
  }
  
  static void edp_bridge_mode_set(struct drm_bridge *bridge,
 -              struct drm_display_mode *mode,
 -              struct drm_display_mode *adjusted_mode)
 +              const struct drm_display_mode *mode,
 +              const struct drm_display_mode *adjusted_mode)
  {
        struct drm_device *dev = bridge->dev;
        struct drm_connector *connector;
        struct edp_bridge *edp_bridge = to_edp_bridge(bridge);
        struct msm_edp *edp = edp_bridge->edp;
  
-       DBG("set mode: %d:\"%s\" %d %d %d %d %d %d %d %d %d %d 0x%x 0x%x",
-                       mode->base.id, mode->name,
-                       mode->vrefresh, mode->clock,
-                       mode->hdisplay, mode->hsync_start,
-                       mode->hsync_end, mode->htotal,
-                       mode->vdisplay, mode->vsync_start,
-                       mode->vsync_end, mode->vtotal,
-                       mode->type, mode->flags);
+       DBG("set mode: " DRM_MODE_FMT, DRM_MODE_ARG(mode));
  
        list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
                if ((connector->encoder != NULL) &&
index b42feb80531b3203082e09578750c013c1b1d2ec,7ba6f52ed72cc76610695ea3dae8d99b4150c4ef..03197b8959ba640e73f63b0201797edebb9e941e
@@@ -101,7 -101,8 +101,8 @@@ static void msm_hdmi_config_avi_infofra
        u32 val;
        int len;
  
-       drm_hdmi_avi_infoframe_from_display_mode(&frame.avi, mode, false);
+       drm_hdmi_avi_infoframe_from_display_mode(&frame.avi,
+                                                hdmi->connector, mode);
  
        len = hdmi_infoframe_pack(&frame, buffer, sizeof(buffer));
        if (len < 0) {
@@@ -207,8 -208,8 +208,8 @@@ static void msm_hdmi_bridge_post_disabl
  }
  
  static void msm_hdmi_bridge_mode_set(struct drm_bridge *bridge,
 -               struct drm_display_mode *mode,
 -               struct drm_display_mode *adjusted_mode)
 +               const struct drm_display_mode *mode,
 +               const struct drm_display_mode *adjusted_mode)
  {
        struct hdmi_bridge *hdmi_bridge = to_hdmi_bridge(bridge);
        struct hdmi *hdmi = hdmi_bridge->hdmi;
index 603bb340e8cfa3bc65c153cc760ce49d22d7adde,790d499daa1007c558a2b9331cc5f942bcb7e01b..452461dc96f28bb7028e4cd9cefaf6e3e45cbff1
@@@ -7,10 -7,11 +7,12 @@@
   * Contact: Laurent Pinchart ([email protected])
   */
  
+ #include <linux/mod_devicetable.h>
  #include <linux/module.h>
  #include <linux/platform_device.h>
  
  #include <drm/bridge/dw_hdmi.h>
++#include <drm/drm_modes.h>
  
  #define RCAR_HDMI_PHY_OPMODE_PLLCFG   0x06    /* Mode of operation and PLL dividers */
  #define RCAR_HDMI_PHY_PLLCURRGMPCTRL  0x10    /* PLL current and Gmp (conductance) */
@@@ -35,20 -36,6 +37,20 @@@ static const struct rcar_hdmi_phy_param
        { ~0UL,      0x0000, 0x0000, 0x0000 },
  };
  
 +static enum drm_mode_status
 +rcar_hdmi_mode_valid(struct drm_connector *connector,
 +                   const struct drm_display_mode *mode)
 +{
 +      /*
 +       * The maximum supported clock frequency is 297 MHz, as shown in the PHY
 +       * parameters table.
 +       */
 +      if (mode->clock > 297000)
 +              return MODE_CLOCK_HIGH;
 +
 +      return MODE_OK;
 +}
 +
  static int rcar_hdmi_phy_configure(struct dw_hdmi *hdmi,
                                   const struct dw_hdmi_plat_data *pdata,
                                   unsigned long mpixelclock)
@@@ -73,7 -60,6 +75,7 @@@
  }
  
  static const struct dw_hdmi_plat_data rcar_dw_hdmi_plat_data = {
 +      .mode_valid = rcar_hdmi_mode_valid,
        .configure_phy  = rcar_hdmi_phy_configure,
  };
  
index fbef4ad6c8efc63cd841327353f2c4b93377a6ec,4b86878f8ddfa2281ad5fe77502b6a04ec884447..458fcb5a93f2233742abc5909c743be614ec8449
@@@ -434,7 -434,8 +434,8 @@@ static int hdmi_avi_infoframe_config(st
  
        DRM_DEBUG_DRIVER("\n");
  
-       ret = drm_hdmi_avi_infoframe_from_display_mode(&infoframe, mode, false);
+       ret = drm_hdmi_avi_infoframe_from_display_mode(&infoframe,
+                                                      hdmi->drm_connector, mode);
        if (ret < 0) {
                DRM_ERROR("failed to setup AVI infoframe: %d\n", ret);
                return ret;
@@@ -917,8 -918,8 +918,8 @@@ static void sti_hdmi_pre_enable(struct 
  }
  
  static void sti_hdmi_set_mode(struct drm_bridge *bridge,
 -              struct drm_display_mode *mode,
 -              struct drm_display_mode *adjusted_mode)
 +                            const struct drm_display_mode *mode,
 +                            const struct drm_display_mode *adjusted_mode)
  {
        struct sti_hdmi *hdmi = bridge->driver_private;
        int ret;
This page took 0.108722 seconds and 4 git commands to generate.