Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/panel: add drm_connector argument to get_modes()

Today the bridge creates the drm_connector, but that is planned
to be moved to the display drivers.
To facilitate this, update drm_panel_funcs.get_modes() to
take drm_connector as an argument.
All panel drivers implementing get_modes() are updated.

v2:
- drop accidental change (Laurent)
- update docs for get_modes (Laurent)

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: David Airlie <airlied@linux.ie>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Jagan Teki <jagan@amarulasolutions.com>
Cc: Stefan Mavrodiev <stefan@olimex.com>
Cc: Robert Chiras <robert.chiras@nxp.com>
Cc: "Guido Günther" <agx@sigxcpu.org>
Cc: Purism Kernel Team <kernel@puri.sm>
Link: https://patchwork.freedesktop.org/patch/msgid/20191207140353.23967-6-sam@ravnborg.org

+142 -129
+1 -1
drivers/gpu/drm/drm_panel.c
··· 263 263 return -EINVAL; 264 264 265 265 if (panel->funcs && panel->funcs->get_modes) 266 - return panel->funcs->get_modes(panel); 266 + return panel->funcs->get_modes(panel, panel->connector); 267 267 268 268 return -EOPNOTSUPP; 269 269 }
+2 -2
drivers/gpu/drm/panel/panel-arm-versatile.c
··· 260 260 return 0; 261 261 } 262 262 263 - static int versatile_panel_get_modes(struct drm_panel *panel) 263 + static int versatile_panel_get_modes(struct drm_panel *panel, 264 + struct drm_connector *connector) 264 265 { 265 - struct drm_connector *connector = panel->connector; 266 266 struct versatile_panel *vpanel = to_versatile_panel(panel); 267 267 struct drm_display_mode *mode; 268 268
+2 -2
drivers/gpu/drm/panel/panel-feiyang-fy07024di26a30d.c
··· 162 162 .type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED, 163 163 }; 164 164 165 - static int feiyang_get_modes(struct drm_panel *panel) 165 + static int feiyang_get_modes(struct drm_panel *panel, 166 + struct drm_connector *connector) 166 167 { 167 - struct drm_connector *connector = panel->connector; 168 168 struct feiyang *ctx = panel_to_feiyang(panel); 169 169 struct drm_display_mode *mode; 170 170
+2 -2
drivers/gpu/drm/panel/panel-ilitek-ili9322.c
··· 641 641 .flags = 0, 642 642 }; 643 643 644 - static int ili9322_get_modes(struct drm_panel *panel) 644 + static int ili9322_get_modes(struct drm_panel *panel, 645 + struct drm_connector *connector) 645 646 { 646 - struct drm_connector *connector = panel->connector; 647 647 struct ili9322 *ili = panel_to_ili9322(panel); 648 648 struct drm_display_mode *mode; 649 649 struct drm_display_info *info;
+4 -4
drivers/gpu/drm/panel/panel-ilitek-ili9881c.c
··· 387 387 .vtotal = 1280 + 10 + 10 + 20, 388 388 }; 389 389 390 - static int ili9881c_get_modes(struct drm_panel *panel) 390 + static int ili9881c_get_modes(struct drm_panel *panel, 391 + struct drm_connector *connector) 391 392 { 392 - struct drm_connector *connector = panel->connector; 393 393 struct ili9881c *ctx = panel_to_ili9881c(panel); 394 394 struct drm_display_mode *mode; 395 395 ··· 407 407 mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; 408 408 drm_mode_probed_add(connector, mode); 409 409 410 - panel->connector->display_info.width_mm = 62; 411 - panel->connector->display_info.height_mm = 110; 410 + connector->display_info.width_mm = 62; 411 + connector->display_info.height_mm = 110; 412 412 413 413 return 1; 414 414 }
+6 -7
drivers/gpu/drm/panel/panel-innolux-p079zca.c
··· 403 403 .sleep_mode_delay = 100, /* T15 */ 404 404 }; 405 405 406 - static int innolux_panel_get_modes(struct drm_panel *panel) 406 + static int innolux_panel_get_modes(struct drm_panel *panel, 407 + struct drm_connector *connector) 407 408 { 408 409 struct innolux_panel *innolux = to_innolux_panel(panel); 409 410 const struct drm_display_mode *m = innolux->desc->mode; ··· 419 418 420 419 drm_mode_set_name(mode); 421 420 422 - drm_mode_probed_add(panel->connector, mode); 421 + drm_mode_probed_add(connector, mode); 423 422 424 - panel->connector->display_info.width_mm = 425 - innolux->desc->size.width; 426 - panel->connector->display_info.height_mm = 427 - innolux->desc->size.height; 428 - panel->connector->display_info.bpc = innolux->desc->bpc; 423 + connector->display_info.width_mm = innolux->desc->size.width; 424 + connector->display_info.height_mm = innolux->desc->size.height; 425 + connector->display_info.bpc = innolux->desc->bpc; 429 426 430 427 return 1; 431 428 }
+5 -4
drivers/gpu/drm/panel/panel-jdi-lt070me05000.c
··· 300 300 .flags = 0, 301 301 }; 302 302 303 - static int jdi_panel_get_modes(struct drm_panel *panel) 303 + static int jdi_panel_get_modes(struct drm_panel *panel, 304 + struct drm_connector *connector) 304 305 { 305 306 struct drm_display_mode *mode; 306 307 struct jdi_panel *jdi = to_jdi_panel(panel); ··· 317 316 318 317 drm_mode_set_name(mode); 319 318 320 - drm_mode_probed_add(panel->connector, mode); 319 + drm_mode_probed_add(connector, mode); 321 320 322 - panel->connector->display_info.width_mm = 95; 323 - panel->connector->display_info.height_mm = 151; 321 + connector->display_info.width_mm = 95; 322 + connector->display_info.height_mm = 151; 324 323 325 324 return 1; 326 325 }
+6 -5
drivers/gpu/drm/panel/panel-kingdisplay-kd097d04.c
··· 333 333 .vrefresh = 60, 334 334 }; 335 335 336 - static int kingdisplay_panel_get_modes(struct drm_panel *panel) 336 + static int kingdisplay_panel_get_modes(struct drm_panel *panel, 337 + struct drm_connector *connector) 337 338 { 338 339 struct drm_display_mode *mode; 339 340 ··· 348 347 349 348 drm_mode_set_name(mode); 350 349 351 - drm_mode_probed_add(panel->connector, mode); 350 + drm_mode_probed_add(connector, mode); 352 351 353 - panel->connector->display_info.width_mm = 147; 354 - panel->connector->display_info.height_mm = 196; 355 - panel->connector->display_info.bpc = 8; 352 + connector->display_info.width_mm = 147; 353 + connector->display_info.height_mm = 196; 354 + connector->display_info.bpc = 8; 356 355 357 356 return 1; 358 357 }
+2 -2
drivers/gpu/drm/panel/panel-lg-lb035q02.c
··· 141 141 .height_mm = 53, 142 142 }; 143 143 144 - static int lb035q02_get_modes(struct drm_panel *panel) 144 + static int lb035q02_get_modes(struct drm_panel *panel, 145 + struct drm_connector *connector) 145 146 { 146 - struct drm_connector *connector = panel->connector; 147 147 struct drm_display_mode *mode; 148 148 149 149 mode = drm_mode_duplicate(panel->drm, &lb035q02_mode);
+4 -4
drivers/gpu/drm/panel/panel-lg-lg4573.c
··· 209 209 .vrefresh = 60, 210 210 }; 211 211 212 - static int lg4573_get_modes(struct drm_panel *panel) 212 + static int lg4573_get_modes(struct drm_panel *panel, 213 + struct drm_connector *connector) 213 214 { 214 - struct drm_connector *connector = panel->connector; 215 215 struct drm_display_mode *mode; 216 216 217 217 mode = drm_mode_duplicate(panel->drm, &default_mode); ··· 227 227 mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; 228 228 drm_mode_probed_add(connector, mode); 229 229 230 - panel->connector->display_info.width_mm = 61; 231 - panel->connector->display_info.height_mm = 103; 230 + connector->display_info.width_mm = 61; 231 + connector->display_info.height_mm = 103; 232 232 233 233 return 1; 234 234 }
+2 -2
drivers/gpu/drm/panel/panel-lvds.c
··· 106 106 return 0; 107 107 } 108 108 109 - static int panel_lvds_get_modes(struct drm_panel *panel) 109 + static int panel_lvds_get_modes(struct drm_panel *panel, 110 + struct drm_connector *connector) 110 111 { 111 112 struct panel_lvds *lvds = to_panel_lvds(panel); 112 - struct drm_connector *connector = lvds->panel.connector; 113 113 struct drm_display_mode *mode; 114 114 115 115 mode = drm_mode_create(lvds->panel.drm);
+2 -2
drivers/gpu/drm/panel/panel-nec-nl8048hl11.c
··· 123 123 .height_mm = 53, 124 124 }; 125 125 126 - static int nl8048_get_modes(struct drm_panel *panel) 126 + static int nl8048_get_modes(struct drm_panel *panel, 127 + struct drm_connector *connector) 127 128 { 128 - struct drm_connector *connector = panel->connector; 129 129 struct drm_display_mode *mode; 130 130 131 131 mode = drm_mode_duplicate(panel->drm, &nl8048_mode);
+2 -2
drivers/gpu/drm/panel/panel-novatek-nt39016.c
··· 206 206 return 0; 207 207 } 208 208 209 - static int nt39016_get_modes(struct drm_panel *drm_panel) 209 + static int nt39016_get_modes(struct drm_panel *drm_panel, 210 + struct drm_connector *connector) 210 211 { 211 212 struct nt39016 *panel = to_nt39016(drm_panel); 212 213 const struct nt39016_panel_info *panel_info = panel->panel_info; 213 - struct drm_connector *connector = drm_panel->connector; 214 214 struct drm_display_mode *mode; 215 215 216 216 mode = drm_mode_duplicate(drm_panel->drm, &panel_info->display_mode);
+2 -2
drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c
··· 141 141 return 0; 142 142 } 143 143 144 - static int lcd_olinuxino_get_modes(struct drm_panel *panel) 144 + static int lcd_olinuxino_get_modes(struct drm_panel *panel, 145 + struct drm_connector *connector) 145 146 { 146 147 struct lcd_olinuxino *lcd = to_lcd_olinuxino(panel); 147 - struct drm_connector *connector = lcd->panel.connector; 148 148 struct lcd_olinuxino_info *lcd_info = &lcd->eeprom.info; 149 149 struct drm_device *drm = lcd->panel.drm; 150 150 struct lcd_olinuxino_mode *lcd_mode;
+5 -4
drivers/gpu/drm/panel/panel-orisetech-otm8009a.c
··· 349 349 return 0; 350 350 } 351 351 352 - static int otm8009a_get_modes(struct drm_panel *panel) 352 + static int otm8009a_get_modes(struct drm_panel *panel, 353 + struct drm_connector *connector) 353 354 { 354 355 struct drm_display_mode *mode; 355 356 ··· 365 364 drm_mode_set_name(mode); 366 365 367 366 mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; 368 - drm_mode_probed_add(panel->connector, mode); 367 + drm_mode_probed_add(connector, mode); 369 368 370 - panel->connector->display_info.width_mm = mode->width_mm; 371 - panel->connector->display_info.height_mm = mode->height_mm; 369 + connector->display_info.width_mm = mode->width_mm; 370 + connector->display_info.height_mm = mode->height_mm; 372 371 373 372 return 1; 374 373 }
+5 -4
drivers/gpu/drm/panel/panel-osd-osd101t2587-53ts.c
··· 112 112 .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC, 113 113 }; 114 114 115 - static int osd101t2587_panel_get_modes(struct drm_panel *panel) 115 + static int osd101t2587_panel_get_modes(struct drm_panel *panel, 116 + struct drm_connector *connector) 116 117 { 117 118 struct osd101t2587_panel *osd101t2587 = ti_osd_panel(panel); 118 119 struct drm_display_mode *mode; ··· 129 128 130 129 drm_mode_set_name(mode); 131 130 132 - drm_mode_probed_add(panel->connector, mode); 131 + drm_mode_probed_add(connector, mode); 133 132 134 - panel->connector->display_info.width_mm = 217; 135 - panel->connector->display_info.height_mm = 136; 133 + connector->display_info.width_mm = 217; 134 + connector->display_info.height_mm = 136; 136 135 137 136 return 1; 138 137 }
+5 -4
drivers/gpu/drm/panel/panel-panasonic-vvx10f034n00.c
··· 166 166 .vrefresh = 60, 167 167 }; 168 168 169 - static int wuxga_nt_panel_get_modes(struct drm_panel *panel) 169 + static int wuxga_nt_panel_get_modes(struct drm_panel *panel, 170 + struct drm_connector *connector) 170 171 { 171 172 struct drm_display_mode *mode; 172 173 ··· 181 180 182 181 drm_mode_set_name(mode); 183 182 184 - drm_mode_probed_add(panel->connector, mode); 183 + drm_mode_probed_add(connector, mode); 185 184 186 - panel->connector->display_info.width_mm = 217; 187 - panel->connector->display_info.height_mm = 136; 185 + connector->display_info.width_mm = 217; 186 + connector->display_info.height_mm = 136; 188 187 189 188 return 1; 190 189 }
+2 -2
drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c
··· 309 309 return 0; 310 310 } 311 311 312 - static int rpi_touchscreen_get_modes(struct drm_panel *panel) 312 + static int rpi_touchscreen_get_modes(struct drm_panel *panel, 313 + struct drm_connector *connector) 313 314 { 314 - struct drm_connector *connector = panel->connector; 315 315 struct drm_device *drm = panel->drm; 316 316 unsigned int i, num = 0; 317 317 static const u32 bus_format = MEDIA_BUS_FMT_RGB888_1X24;
+3 -3
drivers/gpu/drm/panel/panel-raydium-rm67191.c
··· 436 436 return 0; 437 437 } 438 438 439 - static int rad_panel_get_modes(struct drm_panel *panel) 439 + static int rad_panel_get_modes(struct drm_panel *panel, 440 + struct drm_connector *connector) 440 441 { 441 - struct drm_connector *connector = panel->connector; 442 442 struct drm_display_mode *mode; 443 443 444 444 mode = drm_mode_duplicate(panel->drm, &default_mode); ··· 451 451 452 452 drm_mode_set_name(mode); 453 453 mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; 454 - drm_mode_probed_add(panel->connector, mode); 454 + drm_mode_probed_add(connector, mode); 455 455 456 456 connector->display_info.width_mm = mode->width_mm; 457 457 connector->display_info.height_mm = mode->height_mm;
+5 -4
drivers/gpu/drm/panel/panel-raydium-rm68200.c
··· 335 335 return 0; 336 336 } 337 337 338 - static int rm68200_get_modes(struct drm_panel *panel) 338 + static int rm68200_get_modes(struct drm_panel *panel, 339 + struct drm_connector *connector) 339 340 { 340 341 struct drm_display_mode *mode; 341 342 ··· 351 350 drm_mode_set_name(mode); 352 351 353 352 mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; 354 - drm_mode_probed_add(panel->connector, mode); 353 + drm_mode_probed_add(connector, mode); 355 354 356 - panel->connector->display_info.width_mm = mode->width_mm; 357 - panel->connector->display_info.height_mm = mode->height_mm; 355 + connector->display_info.width_mm = mode->width_mm; 356 + connector->display_info.height_mm = mode->height_mm; 358 357 359 358 return 1; 360 359 }
+5 -4
drivers/gpu/drm/panel/panel-rocktech-jh057n00900.c
··· 230 230 .height_mm = 130, 231 231 }; 232 232 233 - static int jh057n_get_modes(struct drm_panel *panel) 233 + static int jh057n_get_modes(struct drm_panel *panel, 234 + struct drm_connector *connector) 234 235 { 235 236 struct jh057n *ctx = panel_to_jh057n(panel); 236 237 struct drm_display_mode *mode; ··· 247 246 drm_mode_set_name(mode); 248 247 249 248 mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; 250 - panel->connector->display_info.width_mm = mode->width_mm; 251 - panel->connector->display_info.height_mm = mode->height_mm; 252 - drm_mode_probed_add(panel->connector, mode); 249 + connector->display_info.width_mm = mode->width_mm; 250 + connector->display_info.height_mm = mode->height_mm; 251 + drm_mode_probed_add(connector, mode); 253 252 254 253 return 1; 255 254 }
+5 -5
drivers/gpu/drm/panel/panel-ronbo-rb070d30.c
··· 120 120 .height_mm = 85, 121 121 }; 122 122 123 - static int rb070d30_panel_get_modes(struct drm_panel *panel) 123 + static int rb070d30_panel_get_modes(struct drm_panel *panel, 124 + struct drm_connector *connector) 124 125 { 125 - struct drm_connector *connector = panel->connector; 126 126 struct rb070d30_panel *ctx = panel_to_rb070d30_panel(panel); 127 127 struct drm_display_mode *mode; 128 128 static const u32 bus_format = MEDIA_BUS_FMT_RGB888_1X24; ··· 140 140 mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; 141 141 drm_mode_probed_add(connector, mode); 142 142 143 - panel->connector->display_info.bpc = 8; 144 - panel->connector->display_info.width_mm = mode->width_mm; 145 - panel->connector->display_info.height_mm = mode->height_mm; 143 + connector->display_info.bpc = 8; 144 + connector->display_info.width_mm = mode->width_mm; 145 + connector->display_info.height_mm = mode->height_mm; 146 146 drm_display_info_set_bus_formats(&connector->display_info, 147 147 &bus_format, 1); 148 148
+2 -2
drivers/gpu/drm/panel/panel-samsung-ld9040.c
··· 261 261 return 0; 262 262 } 263 263 264 - static int ld9040_get_modes(struct drm_panel *panel) 264 + static int ld9040_get_modes(struct drm_panel *panel, 265 + struct drm_connector *connector) 265 266 { 266 - struct drm_connector *connector = panel->connector; 267 267 struct ld9040 *ctx = panel_to_ld9040(panel); 268 268 struct drm_display_mode *mode; 269 269
+2 -2
drivers/gpu/drm/panel/panel-samsung-s6d16d0.c
··· 143 143 return 0; 144 144 } 145 145 146 - static int s6d16d0_get_modes(struct drm_panel *panel) 146 + static int s6d16d0_get_modes(struct drm_panel *panel, 147 + struct drm_connector *connector) 147 148 { 148 - struct drm_connector *connector = panel->connector; 149 149 struct drm_display_mode *mode; 150 150 151 151 mode = drm_mode_duplicate(panel->drm, &samsung_s6d16d0_mode);
+2 -2
drivers/gpu/drm/panel/panel-samsung-s6e3ha2.c
··· 645 645 .type = HF2_TYPE, 646 646 }; 647 647 648 - static int s6e3ha2_get_modes(struct drm_panel *panel) 648 + static int s6e3ha2_get_modes(struct drm_panel *panel, 649 + struct drm_connector *connector) 649 650 { 650 - struct drm_connector *connector = panel->connector; 651 651 struct s6e3ha2 *ctx = container_of(panel, struct s6e3ha2, panel); 652 652 struct drm_display_mode *mode; 653 653
+2 -2
drivers/gpu/drm/panel/panel-samsung-s6e63j0x03.c
··· 400 400 return 0; 401 401 } 402 402 403 - static int s6e63j0x03_get_modes(struct drm_panel *panel) 403 + static int s6e63j0x03_get_modes(struct drm_panel *panel, 404 + struct drm_connector *connector) 404 405 { 405 - struct drm_connector *connector = panel->connector; 406 406 struct drm_display_mode *mode; 407 407 408 408 mode = drm_mode_duplicate(panel->drm, &default_mode);
+2 -2
drivers/gpu/drm/panel/panel-samsung-s6e63m0.c
··· 362 362 return 0; 363 363 } 364 364 365 - static int s6e63m0_get_modes(struct drm_panel *panel) 365 + static int s6e63m0_get_modes(struct drm_panel *panel, 366 + struct drm_connector *connector) 366 367 { 367 - struct drm_connector *connector = panel->connector; 368 368 struct drm_display_mode *mode; 369 369 370 370 mode = drm_mode_duplicate(panel->drm, &default_mode);
+2 -2
drivers/gpu/drm/panel/panel-samsung-s6e8aa0.c
··· 920 920 return 0; 921 921 } 922 922 923 - static int s6e8aa0_get_modes(struct drm_panel *panel) 923 + static int s6e8aa0_get_modes(struct drm_panel *panel, 924 + struct drm_connector *connector) 924 925 { 925 - struct drm_connector *connector = panel->connector; 926 926 struct s6e8aa0 *ctx = panel_to_s6e8aa0(panel); 927 927 struct drm_display_mode *mode; 928 928
+5 -4
drivers/gpu/drm/panel/panel-seiko-43wvf1g.c
··· 56 56 return container_of(panel, struct seiko_panel, base); 57 57 } 58 58 59 - static int seiko_panel_get_fixed_modes(struct seiko_panel *panel) 59 + static int seiko_panel_get_fixed_modes(struct seiko_panel *panel, 60 + struct drm_connector *connector) 60 61 { 61 - struct drm_connector *connector = panel->base.connector; 62 62 struct drm_device *drm = panel->base.drm; 63 63 struct drm_display_mode *mode; 64 64 unsigned int i, num = 0; ··· 208 208 return 0; 209 209 } 210 210 211 - static int seiko_panel_get_modes(struct drm_panel *panel) 211 + static int seiko_panel_get_modes(struct drm_panel *panel, 212 + struct drm_connector *connector) 212 213 { 213 214 struct seiko_panel *p = to_seiko_panel(panel); 214 215 215 216 /* add hard-coded panel modes */ 216 - return seiko_panel_get_fixed_modes(p); 217 + return seiko_panel_get_fixed_modes(p, connector); 217 218 } 218 219 219 220 static int seiko_panel_get_timings(struct drm_panel *panel,
+5 -4
drivers/gpu/drm/panel/panel-sharp-lq101r1sx01.c
··· 278 278 .vrefresh = 60, 279 279 }; 280 280 281 - static int sharp_panel_get_modes(struct drm_panel *panel) 281 + static int sharp_panel_get_modes(struct drm_panel *panel, 282 + struct drm_connector *connector) 282 283 { 283 284 struct drm_display_mode *mode; 284 285 ··· 293 292 294 293 drm_mode_set_name(mode); 295 294 296 - drm_mode_probed_add(panel->connector, mode); 295 + drm_mode_probed_add(connector, mode); 297 296 298 - panel->connector->display_info.width_mm = 217; 299 - panel->connector->display_info.height_mm = 136; 297 + connector->display_info.width_mm = 217; 298 + connector->display_info.height_mm = 136; 300 299 301 300 return 1; 302 301 }
+2 -2
drivers/gpu/drm/panel/panel-sharp-ls037v7dw01.c
··· 100 100 .height_mm = 75, 101 101 }; 102 102 103 - static int ls037v7dw01_get_modes(struct drm_panel *panel) 103 + static int ls037v7dw01_get_modes(struct drm_panel *panel, 104 + struct drm_connector *connector) 104 105 { 105 - struct drm_connector *connector = panel->connector; 106 106 struct drm_display_mode *mode; 107 107 108 108 mode = drm_mode_duplicate(panel->drm, &ls037v7dw01_mode);
+5 -4
drivers/gpu/drm/panel/panel-sharp-ls043t1le01.c
··· 210 210 .vrefresh = 60, 211 211 }; 212 212 213 - static int sharp_nt_panel_get_modes(struct drm_panel *panel) 213 + static int sharp_nt_panel_get_modes(struct drm_panel *panel, 214 + struct drm_connector *connector) 214 215 { 215 216 struct drm_display_mode *mode; 216 217 ··· 225 224 226 225 drm_mode_set_name(mode); 227 226 228 - drm_mode_probed_add(panel->connector, mode); 227 + drm_mode_probed_add(connector, mode); 229 228 230 - panel->connector->display_info.width_mm = 54; 231 - panel->connector->display_info.height_mm = 95; 229 + connector->display_info.width_mm = 54; 230 + connector->display_info.height_mm = 95; 232 231 233 232 return 1; 234 233 }
+15 -13
drivers/gpu/drm/panel/panel-simple.c
··· 117 117 return container_of(panel, struct panel_simple, base); 118 118 } 119 119 120 - static unsigned int panel_simple_get_timings_modes(struct panel_simple *panel) 120 + static unsigned int panel_simple_get_timings_modes(struct panel_simple *panel, 121 + struct drm_connector *connector) 121 122 { 122 - struct drm_connector *connector = panel->base.connector; 123 123 struct drm_device *drm = panel->base.drm; 124 124 struct drm_display_mode *mode; 125 125 unsigned int i, num = 0; ··· 150 150 return num; 151 151 } 152 152 153 - static unsigned int panel_simple_get_display_modes(struct panel_simple *panel) 153 + static unsigned int panel_simple_get_display_modes(struct panel_simple *panel, 154 + struct drm_connector *connector) 154 155 { 155 - struct drm_connector *connector = panel->base.connector; 156 156 struct drm_device *drm = panel->base.drm; 157 157 struct drm_display_mode *mode; 158 158 unsigned int i, num = 0; ··· 181 181 return num; 182 182 } 183 183 184 - static int panel_simple_get_non_edid_modes(struct panel_simple *panel) 184 + static int panel_simple_get_non_edid_modes(struct panel_simple *panel, 185 + struct drm_connector *connector) 185 186 { 186 - struct drm_connector *connector = panel->base.connector; 187 187 struct drm_device *drm = panel->base.drm; 188 188 struct drm_display_mode *mode; 189 189 bool has_override = panel->override_mode.type; ··· 204 204 205 205 /* Only add timings if override was not there or failed to validate */ 206 206 if (num == 0 && panel->desc->num_timings) 207 - num = panel_simple_get_timings_modes(panel); 207 + num = panel_simple_get_timings_modes(panel, connector); 208 208 209 209 /* 210 210 * Only add fixed modes if timings/override added no mode. ··· 214 214 */ 215 215 WARN_ON(panel->desc->num_timings && panel->desc->num_modes); 216 216 if (num == 0) 217 - num = panel_simple_get_display_modes(panel); 217 + num = panel_simple_get_display_modes(panel, connector); 218 218 219 219 connector->display_info.bpc = panel->desc->bpc; 220 220 connector->display_info.width_mm = panel->desc->size.width; ··· 304 304 return 0; 305 305 } 306 306 307 - static int panel_simple_get_modes(struct drm_panel *panel) 307 + static int panel_simple_get_modes(struct drm_panel *panel, 308 + struct drm_connector *connector) 308 309 { 309 310 struct panel_simple *p = to_panel_simple(panel); 310 311 int num = 0; 311 312 312 313 /* probe EDID if a DDC bus is available */ 313 314 if (p->ddc) { 314 - struct edid *edid = drm_get_edid(panel->connector, p->ddc); 315 - drm_connector_update_edid_property(panel->connector, edid); 315 + struct edid *edid = drm_get_edid(connector, p->ddc); 316 + 317 + drm_connector_update_edid_property(connector, edid); 316 318 if (edid) { 317 - num += drm_add_edid_modes(panel->connector, edid); 319 + num += drm_add_edid_modes(connector, edid); 318 320 kfree(edid); 319 321 } 320 322 } 321 323 322 324 /* add hard-coded panel modes */ 323 - num += panel_simple_get_non_edid_modes(p); 325 + num += panel_simple_get_non_edid_modes(p, connector); 324 326 325 327 return num; 326 328 }
+5 -4
drivers/gpu/drm/panel/panel-sitronix-st7701.c
··· 264 264 return 0; 265 265 } 266 266 267 - static int st7701_get_modes(struct drm_panel *panel) 267 + static int st7701_get_modes(struct drm_panel *panel, 268 + struct drm_connector *connector) 268 269 { 269 270 struct st7701 *st7701 = panel_to_st7701(panel); 270 271 const struct drm_display_mode *desc_mode = st7701->desc->mode; ··· 281 280 } 282 281 283 282 drm_mode_set_name(mode); 284 - drm_mode_probed_add(panel->connector, mode); 283 + drm_mode_probed_add(connector, mode); 285 284 286 - panel->connector->display_info.width_mm = desc_mode->width_mm; 287 - panel->connector->display_info.height_mm = desc_mode->height_mm; 285 + connector->display_info.width_mm = desc_mode->width_mm; 286 + connector->display_info.height_mm = desc_mode->height_mm; 288 287 289 288 return 1; 290 289 }
+4 -4
drivers/gpu/drm/panel/panel-sitronix-st7789v.c
··· 170 170 .vrefresh = 60, 171 171 }; 172 172 173 - static int st7789v_get_modes(struct drm_panel *panel) 173 + static int st7789v_get_modes(struct drm_panel *panel, 174 + struct drm_connector *connector) 174 175 { 175 - struct drm_connector *connector = panel->connector; 176 176 struct drm_display_mode *mode; 177 177 178 178 mode = drm_mode_duplicate(panel->drm, &default_mode); ··· 188 188 mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; 189 189 drm_mode_probed_add(connector, mode); 190 190 191 - panel->connector->display_info.width_mm = 61; 192 - panel->connector->display_info.height_mm = 103; 191 + connector->display_info.width_mm = 61; 192 + connector->display_info.height_mm = 103; 193 193 194 194 return 1; 195 195 }
+2 -2
drivers/gpu/drm/panel/panel-sony-acx565akm.c
··· 521 521 .height_mm = 46, 522 522 }; 523 523 524 - static int acx565akm_get_modes(struct drm_panel *panel) 524 + static int acx565akm_get_modes(struct drm_panel *panel, 525 + struct drm_connector *connector) 525 526 { 526 - struct drm_connector *connector = panel->connector; 527 527 struct drm_display_mode *mode; 528 528 529 529 mode = drm_mode_duplicate(panel->drm, &acx565akm_mode);
+2 -2
drivers/gpu/drm/panel/panel-tpo-td028ttec1.c
··· 287 287 .height_mm = 58, 288 288 }; 289 289 290 - static int td028ttec1_get_modes(struct drm_panel *panel) 290 + static int td028ttec1_get_modes(struct drm_panel *panel, 291 + struct drm_connector *connector) 291 292 { 292 - struct drm_connector *connector = panel->connector; 293 293 struct drm_display_mode *mode; 294 294 295 295 mode = drm_mode_duplicate(panel->drm, &td028ttec1_mode);
+2 -2
drivers/gpu/drm/panel/panel-tpo-td043mtea1.c
··· 346 346 .height_mm = 56, 347 347 }; 348 348 349 - static int td043mtea1_get_modes(struct drm_panel *panel) 349 + static int td043mtea1_get_modes(struct drm_panel *panel, 350 + struct drm_connector *connector) 350 351 { 351 - struct drm_connector *connector = panel->connector; 352 352 struct drm_display_mode *mode; 353 353 354 354 mode = drm_mode_duplicate(panel->drm, &td043mtea1_mode);
+2 -2
drivers/gpu/drm/panel/panel-tpo-tpg110.c
··· 384 384 * presents the mode that is configured for the system under use, 385 385 * and which is detected by reading the registers of the display. 386 386 */ 387 - static int tpg110_get_modes(struct drm_panel *panel) 387 + static int tpg110_get_modes(struct drm_panel *panel, 388 + struct drm_connector *connector) 388 389 { 389 - struct drm_connector *connector = panel->connector; 390 390 struct tpg110 *tpg = to_tpg110(panel); 391 391 struct drm_display_mode *mode; 392 392
+2 -2
drivers/gpu/drm/panel/panel-truly-nt35597.c
··· 454 454 return 0; 455 455 } 456 456 457 - static int truly_nt35597_get_modes(struct drm_panel *panel) 457 + static int truly_nt35597_get_modes(struct drm_panel *panel, 458 + struct drm_connector *connector) 458 459 { 459 - struct drm_connector *connector = panel->connector; 460 460 struct truly_nt35597 *ctx = panel_to_ctx(panel); 461 461 struct drm_display_mode *mode; 462 462 const struct nt35597_config *config;
+2 -1
include/drm/drm_panel.h
··· 110 110 * 111 111 * This function is mandatory. 112 112 */ 113 - int (*get_modes)(struct drm_panel *panel); 113 + int (*get_modes)(struct drm_panel *panel, 114 + struct drm_connector *connector); 114 115 115 116 /** 116 117 * @get_timings: