.. | .. |
---|
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; |
---|