| .. | .. |
|---|
| 13 | 13 | #include <linux/regmap.h> |
|---|
| 14 | 14 | #include <linux/mfd/rk618.h> |
|---|
| 15 | 15 | |
|---|
| 16 | | -#include <drm/drmP.h> |
|---|
| 16 | +#include <drm/drm_drv.h> |
|---|
| 17 | 17 | #include <drm/drm_of.h> |
|---|
| 18 | 18 | #include <drm/drm_atomic.h> |
|---|
| 19 | 19 | #include <drm/drm_crtc_helper.h> |
|---|
| 20 | 20 | #include <drm/drm_atomic_helper.h> |
|---|
| 21 | 21 | #include <drm/drm_panel.h> |
|---|
| 22 | +#include <drm/drm_probe_helper.h> |
|---|
| 22 | 23 | |
|---|
| 23 | 24 | #include <video/videomode.h> |
|---|
| 24 | 25 | |
|---|
| .. | .. |
|---|
| 64 | 65 | u32 bus_format = MEDIA_BUS_FMT_RGB888_1X24; |
|---|
| 65 | 66 | int num_modes = 0; |
|---|
| 66 | 67 | |
|---|
| 67 | | - num_modes = drm_panel_get_modes(rgb->panel); |
|---|
| 68 | + num_modes = drm_panel_get_modes(rgb->panel, connector); |
|---|
| 68 | 69 | |
|---|
| 69 | 70 | if (info->num_bus_formats) |
|---|
| 70 | 71 | rgb->bus_format = info->bus_formats[0]; |
|---|
| .. | .. |
|---|
| 91 | 92 | |
|---|
| 92 | 93 | static void rk618_rgb_connector_destroy(struct drm_connector *connector) |
|---|
| 93 | 94 | { |
|---|
| 94 | | - struct rk618_rgb *rgb = connector_to_rgb(connector); |
|---|
| 95 | | - |
|---|
| 96 | | - drm_panel_detach(rgb->panel); |
|---|
| 97 | 95 | drm_connector_cleanup(connector); |
|---|
| 98 | 96 | } |
|---|
| 99 | 97 | |
|---|
| .. | .. |
|---|
| 161 | 159 | clk_disable_unprepare(rgb->clock); |
|---|
| 162 | 160 | } |
|---|
| 163 | 161 | |
|---|
| 164 | | -static int rk618_rgb_bridge_attach(struct drm_bridge *bridge) |
|---|
| 162 | +static int rk618_rgb_bridge_attach(struct drm_bridge *bridge, |
|---|
| 163 | + enum drm_bridge_attach_flags flags) |
|---|
| 165 | 164 | { |
|---|
| 166 | 165 | struct rk618_rgb *rgb = bridge_to_rgb(bridge); |
|---|
| 167 | 166 | struct device *dev = rgb->dev; |
|---|
| .. | .. |
|---|
| 181 | 180 | drm_connector_helper_add(connector, |
|---|
| 182 | 181 | &rk618_rgb_connector_helper_funcs); |
|---|
| 183 | 182 | drm_connector_attach_encoder(connector, bridge->encoder); |
|---|
| 184 | | - drm_panel_attach(rgb->panel, connector); |
|---|
| 185 | 183 | |
|---|
| 186 | 184 | rgb->sub_dev.connector = &rgb->connector; |
|---|
| 187 | 185 | rgb->sub_dev.of_node = rgb->dev->of_node; |
|---|
| 188 | 186 | rockchip_drm_register_sub_dev(&rgb->sub_dev); |
|---|
| 189 | 187 | } else { |
|---|
| 190 | | - ret = drm_bridge_attach(bridge->encoder, rgb->bridge, bridge); |
|---|
| 188 | + ret = drm_bridge_attach(bridge->encoder, rgb->bridge, bridge, 0); |
|---|
| 191 | 189 | if (ret) { |
|---|
| 192 | 190 | dev_err(dev, "failed to attach bridge\n"); |
|---|
| 193 | 191 | return ret; |
|---|