]> Git Repo - J-linux.git/commitdiff
Merge tag 'drm-misc-next-2021-07-29' of git://anongit.freedesktop.org/drm/drm-misc...
authorDave Airlie <[email protected]>
Fri, 30 Jul 2021 04:51:22 +0000 (14:51 +1000)
committerDave Airlie <[email protected]>
Fri, 30 Jul 2021 04:52:00 +0000 (14:52 +1000)
drm-misc-next for v5.15:

UAPI Changes:
- Add modifiers for arm fixed rate compression.

Cross-subsystem Changes:
- Assorted dt binding fixes.
- Convert ssd1307fb to json-schema.
- Update a lot of irc channels to point to OFTC, as everyone moved there.
- Fix the same divide by zero for asilantfb, kyro, rivafb.

Core Changes:
- Document requirements for new atomic properties.
- Add drm_gem_fb_(begin/end)_cpu_access helpers, and use them in some drivers.
- Document drm_property_enum.value for bitfields.
- Add explicit _NO_ for MIPI_DSI flags that disable features.
- Assorted documentation fixes.
- Update fb_damage handling, and move drm_plane_enable_fb_damage_clips to core.
- Add logging and docs to RMFB ioctl.
- Assorted small fixes to dp_mst, master handling.
- Clarify drm lease usage.

Driver Changes:
- Assorted small fixes to panfrost, hibmc, bridge/nwl-dsi, rockchip, vc4.
- More drm -> linux irq conversions.
- Add support for some Logic Technologies and Multi-Inno panels.
- Expose phy-functionality for drm/rockchip, to allow controlling from the media subsystem.
- Add support for 2 AUO panels.
- Add damage handling to ssd1307fb.
- Improve FIFO handling on mxsfb.
- Assorted small fixes to vmwgfx, and bump version to 2.19 for the new ioctls.
- Improve sony acx424akp backlight handling.

Signed-off-by: Dave Airlie <[email protected]>
From: Maarten Lankhorst <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1  2 
drivers/gpu/drm/bridge/analogix/anx7625.c
drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
drivers/gpu/drm/bridge/tc358768.c
drivers/gpu/drm/mcde/mcde_dsi.c

index ef29197fed50168a0bfb4240573d60ce4c571706,be987c836891baf6892fdb8a0f6b117365cc22a3..920824d8df2f5b1899dc0a419ed344555481d815
@@@ -1307,7 -1307,7 +1307,7 @@@ static int anx7625_attach_dsi(struct an
        dsi->format = MIPI_DSI_FMT_RGB888;
        dsi->mode_flags = MIPI_DSI_MODE_VIDEO   |
                MIPI_DSI_MODE_VIDEO_SYNC_PULSE  |
-               MIPI_DSI_MODE_EOT_PACKET        |
+               MIPI_DSI_MODE_NO_EOT_PACKET     |
                MIPI_DSI_MODE_VIDEO_HSE;
  
        if (mipi_dsi_attach(dsi) < 0) {
@@@ -1359,8 -1359,11 +1359,8 @@@ static int anx7625_bridge_attach(struc
                err = drm_bridge_attach(bridge->encoder,
                                        ctx->pdata.panel_bridge,
                                        &ctx->bridge, flags);
 -              if (err) {
 -                      DRM_DEV_ERROR(dev,
 -                                    "Fail to attach panel bridge: %d\n", err);
 +              if (err)
                        return err;
 -              }
        }
  
        ctx->bridge_attached = 1;
index 7900da1d4325833df084c776251499b1fa3124d5,45f4515dda005980e5941defc8e895bd2f4fcff5..e44e18a0112afa148ba3045b7f688b908313b344
@@@ -246,6 -246,7 +246,7 @@@ struct dw_mipi_dsi 
  
        struct clk *pclk;
  
+       bool device_found;
        unsigned int lane_mbps; /* per lane */
        u32 channel;
        u32 lanes;
@@@ -309,13 -310,37 +310,37 @@@ static inline u32 dsi_read(struct dw_mi
        return readl(dsi->base + reg);
  }
  
+ static int dw_mipi_dsi_panel_or_bridge(struct dw_mipi_dsi *dsi,
+                                      struct device_node *node)
+ {
+       struct drm_bridge *bridge;
+       struct drm_panel *panel;
+       int ret;
+       ret = drm_of_find_panel_or_bridge(node, 1, 0, &panel, &bridge);
+       if (ret)
+               return ret;
+       if (panel) {
+               bridge = drm_panel_bridge_add_typed(panel,
+                                                   DRM_MODE_CONNECTOR_DSI);
+               if (IS_ERR(bridge))
+                       return PTR_ERR(bridge);
+       }
+       dsi->panel_bridge = bridge;
+       if (!dsi->panel_bridge)
+               return -EPROBE_DEFER;
+       return 0;
+ }
  static int dw_mipi_dsi_host_attach(struct mipi_dsi_host *host,
                                   struct mipi_dsi_device *device)
  {
        struct dw_mipi_dsi *dsi = host_to_dsi(host);
        const struct dw_mipi_dsi_plat_data *pdata = dsi->plat_data;
-       struct drm_bridge *bridge;
-       struct drm_panel *panel;
        int ret;
  
        if (device->lanes > dsi->plat_data->max_data_lanes) {
        dsi->format = device->format;
        dsi->mode_flags = device->mode_flags;
  
-       ret = drm_of_find_panel_or_bridge(host->dev->of_node, 1, 0,
-                                         &panel, &bridge);
-       if (ret)
-               return ret;
+       if (!dsi->device_found) {
+               ret = dw_mipi_dsi_panel_or_bridge(dsi, host->dev->of_node);
+               if (ret)
+                       return ret;
  
-       if (panel) {
-               bridge = drm_panel_bridge_add_typed(panel,
-                                                   DRM_MODE_CONNECTOR_DSI);
-               if (IS_ERR(bridge))
-                       return PTR_ERR(bridge);
+               dsi->device_found = true;
        }
  
-       dsi->panel_bridge = bridge;
-       drm_bridge_add(&dsi->bridge);
        if (pdata->host_ops && pdata->host_ops->attach) {
                ret = pdata->host_ops->attach(pdata->priv_data, device);
                if (ret < 0)
@@@ -999,6 -1016,16 +1016,16 @@@ static int dw_mipi_dsi_bridge_attach(st
        /* Set the encoder type as caller does not know it */
        bridge->encoder->encoder_type = DRM_MODE_ENCODER_DSI;
  
+       if (!dsi->device_found) {
+               int ret;
+               ret = dw_mipi_dsi_panel_or_bridge(dsi, dsi->dev->of_node);
+               if (ret)
+                       return ret;
+               dsi->device_found = true;
+       }
        /* Attach the panel-bridge to the dsi bridge */
        return drm_bridge_attach(bridge->encoder, dsi->panel_bridge, bridge,
                                 flags);
@@@ -1181,6 -1208,7 +1208,7 @@@ __dw_mipi_dsi_probe(struct platform_dev
  #ifdef CONFIG_OF
        dsi->bridge.of_node = pdev->dev.of_node;
  #endif
+       drm_bridge_add(&dsi->bridge);
  
        return dsi;
  }
@@@ -1229,7 -1257,15 +1257,7 @@@ EXPORT_SYMBOL_GPL(dw_mipi_dsi_remove)
   */
  int dw_mipi_dsi_bind(struct dw_mipi_dsi *dsi, struct drm_encoder *encoder)
  {
 -      int ret;
 -
 -      ret = drm_bridge_attach(encoder, &dsi->bridge, NULL, 0);
 -      if (ret) {
 -              DRM_ERROR("Failed to initialize bridge with drm\n");
 -              return ret;
 -      }
 -
 -      return ret;
 +      return drm_bridge_attach(encoder, &dsi->bridge, NULL, 0);
  }
  EXPORT_SYMBOL_GPL(dw_mipi_dsi_bind);
  
index 2495ea46b09198e19b94b40d6fecb7995f421f58,320f95ae60772ec8b2daf80beec514f3bff54a0c..a3db532bbdd167b16777e372a1a7666662fb21ce
@@@ -291,7 -291,7 +291,7 @@@ static int tc358768_calc_pll(struct tc3
                             const struct drm_display_mode *mode,
                             bool verify_only)
  {
 -      const u32 frs_limits[] = {
 +      static const u32 frs_limits[] = {
                1000000000,
                500000000,
                250000000,
@@@ -825,7 -825,7 +825,7 @@@ static void tc358768_bridge_pre_enable(
        if (!(dsi_dev->mode_flags & MIPI_DSI_CLOCK_NON_CONTINUOUS))
                val |= TC358768_DSI_CONTROL_HSCKMD;
  
-       if (dsi_dev->mode_flags & MIPI_DSI_MODE_EOT_PACKET)
+       if (dsi_dev->mode_flags & MIPI_DSI_MODE_NO_EOT_PACKET)
                val |= TC358768_DSI_CONTROL_EOTDIS;
  
        tc358768_write(priv, TC358768_DSI_CONFW, val);
index f3644667e24fdf4a7debb8d5a8cee721936116d1,524852ed68f1dba8c97e99297e9f33ded9775b74..180ebbccbedaf0e30c284f117fa78603afc8778d
@@@ -760,7 -760,7 +760,7 @@@ static void mcde_dsi_start(struct mcde_
                DSI_MCTL_MAIN_DATA_CTL_BTA_EN |
                DSI_MCTL_MAIN_DATA_CTL_READ_EN |
                DSI_MCTL_MAIN_DATA_CTL_REG_TE_EN;
-       if (!(d->mdsi->mode_flags & MIPI_DSI_MODE_EOT_PACKET))
+       if (!(d->mdsi->mode_flags & MIPI_DSI_MODE_NO_EOT_PACKET))
                val |= DSI_MCTL_MAIN_DATA_CTL_HOST_EOT_GEN;
        writel(val, d->regs + DSI_MCTL_MAIN_DATA_CTL);
  
@@@ -1052,6 -1052,7 +1052,6 @@@ static int mcde_dsi_bridge_attach(struc
  {
        struct mcde_dsi *d = bridge_to_mcde_dsi(bridge);
        struct drm_device *drm = bridge->dev;
 -      int ret;
  
        if (!drm_core_check_feature(drm, DRIVER_ATOMIC)) {
                dev_err(d->dev, "we need atomic updates\n");
        }
  
        /* Attach the DSI bridge to the output (panel etc) bridge */
 -      ret = drm_bridge_attach(bridge->encoder, d->bridge_out, bridge, flags);
 -      if (ret) {
 -              dev_err(d->dev, "failed to attach the DSI bridge\n");
 -              return ret;
 -      }
 -
 -      return 0;
 +      return drm_bridge_attach(bridge->encoder, d->bridge_out, bridge, flags);
  }
  
  static const struct drm_bridge_funcs mcde_dsi_bridge_funcs = {
This page took 0.068226 seconds and 4 git commands to generate.