| .. | .. |
|---|
| 12 | 12 | #include <linux/regmap.h> |
|---|
| 13 | 13 | #include <linux/mfd/rk618.h> |
|---|
| 14 | 14 | |
|---|
| 15 | | -#include <drm/drmP.h> |
|---|
| 15 | +#include <drm/drm_drv.h> |
|---|
| 16 | 16 | #include <drm/drm_of.h> |
|---|
| 17 | 17 | #include <drm/drm_atomic.h> |
|---|
| 18 | 18 | #include <drm/drm_crtc_helper.h> |
|---|
| 19 | 19 | #include <drm/drm_atomic_helper.h> |
|---|
| 20 | 20 | #include <drm/drm_panel.h> |
|---|
| 21 | +#include <drm/drm_probe_helper.h> |
|---|
| 21 | 22 | |
|---|
| 22 | 23 | #include <video/of_display_timing.h> |
|---|
| 23 | 24 | #include <video/videomode.h> |
|---|
| .. | .. |
|---|
| 70 | 71 | u32 bus_format = MEDIA_BUS_FMT_RGB888_1X24; |
|---|
| 71 | 72 | int num_modes = 0; |
|---|
| 72 | 73 | |
|---|
| 73 | | - num_modes = drm_panel_get_modes(lvds->panel); |
|---|
| 74 | + num_modes = drm_panel_get_modes(lvds->panel, connector); |
|---|
| 74 | 75 | |
|---|
| 75 | 76 | if (info->num_bus_formats) |
|---|
| 76 | 77 | lvds->bus_format = info->bus_formats[0]; |
|---|
| .. | .. |
|---|
| 97 | 98 | |
|---|
| 98 | 99 | static void rk618_lvds_connector_destroy(struct drm_connector *connector) |
|---|
| 99 | 100 | { |
|---|
| 100 | | - struct rk618_lvds *lvds = connector_to_lvds(connector); |
|---|
| 101 | | - |
|---|
| 102 | | - drm_panel_detach(lvds->panel); |
|---|
| 103 | 101 | drm_connector_cleanup(connector); |
|---|
| 104 | 102 | } |
|---|
| 105 | 103 | |
|---|
| .. | .. |
|---|
| 124 | 122 | rk618_frc_dither_init(lvds->parent, lvds->bus_format); |
|---|
| 125 | 123 | |
|---|
| 126 | 124 | switch (lvds->bus_format) { |
|---|
| 127 | | - case MEDIA_BUS_FMT_RGB666_1X7X3_JEIDA: |
|---|
| 128 | | - format = LVDS_FORMAT_JEIDA_18BIT; |
|---|
| 129 | | - break; |
|---|
| 130 | 125 | case MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA: |
|---|
| 131 | 126 | format = LVDS_FORMAT_JEIDA_24BIT; |
|---|
| 132 | 127 | break; |
|---|
| .. | .. |
|---|
| 170 | 165 | clk_disable_unprepare(lvds->clock); |
|---|
| 171 | 166 | } |
|---|
| 172 | 167 | |
|---|
| 173 | | -static int rk618_lvds_bridge_attach(struct drm_bridge *bridge) |
|---|
| 168 | +static int rk618_lvds_bridge_attach(struct drm_bridge *bridge, |
|---|
| 169 | + enum drm_bridge_attach_flags flags) |
|---|
| 174 | 170 | { |
|---|
| 175 | 171 | struct rk618_lvds *lvds = bridge_to_lvds(bridge); |
|---|
| 176 | 172 | struct drm_connector *connector = &lvds->connector; |
|---|
| .. | .. |
|---|
| 186 | 182 | |
|---|
| 187 | 183 | drm_connector_helper_add(connector, &rk618_lvds_connector_helper_funcs); |
|---|
| 188 | 184 | drm_connector_attach_encoder(connector, bridge->encoder); |
|---|
| 189 | | - |
|---|
| 190 | | - ret = drm_panel_attach(lvds->panel, connector); |
|---|
| 191 | | - if (ret) { |
|---|
| 192 | | - dev_err(lvds->dev, "Failed to attach panel\n"); |
|---|
| 193 | | - return ret; |
|---|
| 194 | | - } |
|---|
| 195 | 185 | |
|---|
| 196 | 186 | lvds->sub_dev.connector = &lvds->connector; |
|---|
| 197 | 187 | lvds->sub_dev.of_node = lvds->dev->of_node; |
|---|