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

drm: rcar-du: Remove platform data support

All platforms now instantiate the DU through DT, platform data support
isn't needed anymore.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>

+38 -151
+9 -1
drivers/gpu/drm/rcar-du/rcar_du_crtc.h
··· 15 15 #define __RCAR_DU_CRTC_H__ 16 16 17 17 #include <linux/mutex.h> 18 - #include <linux/platform_data/rcar-du.h> 19 18 20 19 #include <drm/drmP.h> 21 20 #include <drm/drm_crtc.h> ··· 39 40 }; 40 41 41 42 #define to_rcar_crtc(c) container_of(c, struct rcar_du_crtc, crtc) 43 + 44 + enum rcar_du_output { 45 + RCAR_DU_OUTPUT_DPAD0, 46 + RCAR_DU_OUTPUT_DPAD1, 47 + RCAR_DU_OUTPUT_LVDS0, 48 + RCAR_DU_OUTPUT_LVDS1, 49 + RCAR_DU_OUTPUT_TCON, 50 + RCAR_DU_OUTPUT_MAX, 51 + }; 42 52 43 53 int rcar_du_crtc_create(struct rcar_du_group *rgrp, unsigned int index); 44 54 void rcar_du_crtc_enable_vblank(struct rcar_du_crtc *rcrtc, bool enable);
+1 -3
drivers/gpu/drm/rcar-du/rcar_du_drv.c
··· 146 146 { 147 147 struct platform_device *pdev = dev->platformdev; 148 148 struct device_node *np = pdev->dev.of_node; 149 - struct rcar_du_platform_data *pdata = pdev->dev.platform_data; 150 149 struct rcar_du_device *rcdu; 151 150 struct resource *mem; 152 151 int ret; 153 152 154 - if (pdata == NULL && np == NULL) { 153 + if (np == NULL) { 155 154 dev_err(dev->dev, "no platform data\n"); 156 155 return -ENODEV; 157 156 } ··· 162 163 } 163 164 164 165 rcdu->dev = &pdev->dev; 165 - rcdu->pdata = pdata; 166 166 rcdu->info = np ? of_match_device(rcar_du_of_table, rcdu->dev)->data 167 167 : (void *)platform_get_device_id(pdev)->driver_data; 168 168 rcdu->ddev = dev;
-2
drivers/gpu/drm/rcar-du/rcar_du_drv.h
··· 15 15 #define __RCAR_DU_DRV_H__ 16 16 17 17 #include <linux/kernel.h> 18 - #include <linux/platform_data/rcar-du.h> 19 18 20 19 #include "rcar_du_crtc.h" 21 20 #include "rcar_du_group.h" ··· 66 67 67 68 struct rcar_du_device { 68 69 struct device *dev; 69 - const struct rcar_du_platform_data *pdata; 70 70 const struct rcar_du_device_info *info; 71 71 72 72 void __iomem *mmio;
+2 -6
drivers/gpu/drm/rcar-du/rcar_du_encoder.c
··· 142 142 int rcar_du_encoder_init(struct rcar_du_device *rcdu, 143 143 enum rcar_du_encoder_type type, 144 144 enum rcar_du_output output, 145 - const struct rcar_du_encoder_data *data, 146 145 struct device_node *np) 147 146 { 148 147 struct rcar_du_encoder *renc; ··· 189 190 drm_encoder_helper_add(&renc->encoder, &encoder_helper_funcs); 190 191 191 192 switch (encoder_type) { 192 - case DRM_MODE_ENCODER_LVDS: { 193 - const struct rcar_du_panel_data *pdata = 194 - data ? &data->connector.lvds.panel : NULL; 195 - return rcar_du_lvds_connector_init(rcdu, renc, pdata, np); 196 - } 193 + case DRM_MODE_ENCODER_LVDS: 194 + return rcar_du_lvds_connector_init(rcdu, renc, np); 197 195 198 196 case DRM_MODE_ENCODER_DAC: 199 197 return rcar_du_vga_connector_init(rcdu, renc);
+7 -3
drivers/gpu/drm/rcar-du/rcar_du_encoder.h
··· 14 14 #ifndef __RCAR_DU_ENCODER_H__ 15 15 #define __RCAR_DU_ENCODER_H__ 16 16 17 - #include <linux/platform_data/rcar-du.h> 18 - 19 17 #include <drm/drm_crtc.h> 20 18 21 19 struct rcar_du_device; 22 20 struct rcar_du_lvdsenc; 21 + 22 + enum rcar_du_encoder_type { 23 + RCAR_DU_ENCODER_UNUSED = 0, 24 + RCAR_DU_ENCODER_NONE, 25 + RCAR_DU_ENCODER_VGA, 26 + RCAR_DU_ENCODER_LVDS, 27 + }; 23 28 24 29 struct rcar_du_encoder { 25 30 struct drm_encoder encoder; ··· 49 44 int rcar_du_encoder_init(struct rcar_du_device *rcdu, 50 45 enum rcar_du_encoder_type type, 51 46 enum rcar_du_output output, 52 - const struct rcar_du_encoder_data *data, 53 47 struct device_node *np); 54 48 55 49 #endif /* __RCAR_DU_ENCODER_H__ */
+7 -45
drivers/gpu/drm/rcar-du/rcar_du_kms.c
··· 190 190 .output_poll_changed = rcar_du_output_poll_changed, 191 191 }; 192 192 193 - static int rcar_du_encoders_init_pdata(struct rcar_du_device *rcdu) 194 - { 195 - unsigned int num_encoders = 0; 196 - unsigned int i; 197 - int ret; 198 - 199 - for (i = 0; i < rcdu->pdata->num_encoders; ++i) { 200 - const struct rcar_du_encoder_data *pdata = 201 - &rcdu->pdata->encoders[i]; 202 - const struct rcar_du_output_routing *route = 203 - &rcdu->info->routes[pdata->output]; 204 - 205 - if (pdata->type == RCAR_DU_ENCODER_UNUSED) 206 - continue; 207 - 208 - if (pdata->output >= RCAR_DU_OUTPUT_MAX || 209 - route->possible_crtcs == 0) { 210 - dev_warn(rcdu->dev, 211 - "encoder %u references unexisting output %u, skipping\n", 212 - i, pdata->output); 213 - continue; 214 - } 215 - 216 - ret = rcar_du_encoder_init(rcdu, pdata->type, pdata->output, 217 - pdata, NULL); 218 - if (ret < 0) 219 - return ret; 220 - 221 - num_encoders++; 222 - } 223 - 224 - return num_encoders; 225 - } 226 - 227 - static int rcar_du_encoders_init_dt_one(struct rcar_du_device *rcdu, 228 - enum rcar_du_output output, 229 - struct of_endpoint *ep) 193 + static int rcar_du_encoders_init_one(struct rcar_du_device *rcdu, 194 + enum rcar_du_output output, 195 + struct of_endpoint *ep) 230 196 { 231 197 static const struct { 232 198 const char *compatible; ··· 289 323 connector = entity; 290 324 } 291 325 292 - ret = rcar_du_encoder_init(rcdu, enc_type, output, NULL, connector); 326 + ret = rcar_du_encoder_init(rcdu, enc_type, output, connector); 293 327 of_node_put(encoder); 294 328 of_node_put(connector); 295 329 296 330 return ret < 0 ? ret : 1; 297 331 } 298 332 299 - static int rcar_du_encoders_init_dt(struct rcar_du_device *rcdu) 333 + static int rcar_du_encoders_init(struct rcar_du_device *rcdu) 300 334 { 301 335 struct device_node *np = rcdu->dev->of_node; 302 336 struct device_node *prev = NULL; ··· 343 377 } 344 378 345 379 /* Process the output pipeline. */ 346 - ret = rcar_du_encoders_init_dt_one(rcdu, output, &ep); 380 + ret = rcar_du_encoders_init_one(rcdu, output, &ep); 347 381 if (ret < 0) { 348 382 of_node_put(ep_node); 349 383 return ret; ··· 408 442 if (ret < 0) 409 443 return ret; 410 444 411 - if (rcdu->pdata) 412 - ret = rcar_du_encoders_init_pdata(rcdu); 413 - else 414 - ret = rcar_du_encoders_init_dt(rcdu); 415 - 445 + ret = rcar_du_encoders_init(rcdu); 416 446 if (ret < 0) 417 447 return ret; 418 448
+12 -14
drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c
··· 27 27 struct rcar_du_lvds_connector { 28 28 struct rcar_du_connector connector; 29 29 30 - struct rcar_du_panel_data panel; 30 + struct { 31 + unsigned int width_mm; /* Panel width in mm */ 32 + unsigned int height_mm; /* Panel height in mm */ 33 + struct videomode mode; 34 + } panel; 31 35 }; 32 36 33 37 #define to_rcar_lvds_connector(c) \ ··· 82 78 83 79 int rcar_du_lvds_connector_init(struct rcar_du_device *rcdu, 84 80 struct rcar_du_encoder *renc, 85 - const struct rcar_du_panel_data *panel, 86 81 /* TODO const */ struct device_node *np) 87 82 { 88 83 struct rcar_du_lvds_connector *lvdscon; 89 84 struct drm_connector *connector; 85 + struct display_timing timing; 90 86 int ret; 91 87 92 88 lvdscon = devm_kzalloc(rcdu->dev, sizeof(*lvdscon), GFP_KERNEL); 93 89 if (lvdscon == NULL) 94 90 return -ENOMEM; 95 91 96 - if (panel) { 97 - lvdscon->panel = *panel; 98 - } else { 99 - struct display_timing timing; 92 + ret = of_get_display_timing(np, "panel-timing", &timing); 93 + if (ret < 0) 94 + return ret; 100 95 101 - ret = of_get_display_timing(np, "panel-timing", &timing); 102 - if (ret < 0) 103 - return ret; 96 + videomode_from_timing(&timing, &lvdscon->panel.mode); 104 97 105 - videomode_from_timing(&timing, &lvdscon->panel.mode); 106 - 107 - of_property_read_u32(np, "width-mm", &lvdscon->panel.width_mm); 108 - of_property_read_u32(np, "height-mm", &lvdscon->panel.height_mm); 109 - } 98 + of_property_read_u32(np, "width-mm", &lvdscon->panel.width_mm); 99 + of_property_read_u32(np, "height-mm", &lvdscon->panel.height_mm); 110 100 111 101 connector = &lvdscon->connector.connector; 112 102 connector->display_info.width_mm = lvdscon->panel.width_mm;
-2
drivers/gpu/drm/rcar-du/rcar_du_lvdscon.h
··· 16 16 17 17 struct rcar_du_device; 18 18 struct rcar_du_encoder; 19 - struct rcar_du_panel_data; 20 19 21 20 int rcar_du_lvds_connector_init(struct rcar_du_device *rcdu, 22 21 struct rcar_du_encoder *renc, 23 - const struct rcar_du_panel_data *panel, 24 22 struct device_node *np); 25 23 26 24 #endif /* __RCAR_DU_LVDSCON_H__ */
-1
drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.h
··· 16 16 17 17 #include <linux/io.h> 18 18 #include <linux/module.h> 19 - #include <linux/platform_data/rcar-du.h> 20 19 21 20 struct rcar_drm_crtc; 22 21 struct rcar_du_lvdsenc;
-74
include/linux/platform_data/rcar-du.h
··· 1 - /* 2 - * rcar_du.h -- R-Car Display Unit DRM driver 3 - * 4 - * Copyright (C) 2013 Renesas Corporation 5 - * 6 - * Contact: Laurent Pinchart (laurent.pinchart@ideasonboard.com) 7 - * 8 - * This program is free software; you can redistribute it and/or modify 9 - * it under the terms of the GNU General Public License as published by 10 - * the Free Software Foundation; either version 2 of the License, or 11 - * (at your option) any later version. 12 - */ 13 - 14 - #ifndef __RCAR_DU_H__ 15 - #define __RCAR_DU_H__ 16 - 17 - #include <video/videomode.h> 18 - 19 - enum rcar_du_output { 20 - RCAR_DU_OUTPUT_DPAD0, 21 - RCAR_DU_OUTPUT_DPAD1, 22 - RCAR_DU_OUTPUT_LVDS0, 23 - RCAR_DU_OUTPUT_LVDS1, 24 - RCAR_DU_OUTPUT_TCON, 25 - RCAR_DU_OUTPUT_MAX, 26 - }; 27 - 28 - enum rcar_du_encoder_type { 29 - RCAR_DU_ENCODER_UNUSED = 0, 30 - RCAR_DU_ENCODER_NONE, 31 - RCAR_DU_ENCODER_VGA, 32 - RCAR_DU_ENCODER_LVDS, 33 - }; 34 - 35 - struct rcar_du_panel_data { 36 - unsigned int width_mm; /* Panel width in mm */ 37 - unsigned int height_mm; /* Panel height in mm */ 38 - struct videomode mode; 39 - }; 40 - 41 - struct rcar_du_connector_lvds_data { 42 - struct rcar_du_panel_data panel; 43 - }; 44 - 45 - struct rcar_du_connector_vga_data { 46 - /* TODO: Add DDC information for EDID retrieval */ 47 - }; 48 - 49 - /* 50 - * struct rcar_du_encoder_data - Encoder platform data 51 - * @type: the encoder type (RCAR_DU_ENCODER_*) 52 - * @output: the DU output the connector is connected to (RCAR_DU_OUTPUT_*) 53 - * @connector.lvds: platform data for LVDS connectors 54 - * @connector.vga: platform data for VGA connectors 55 - * 56 - * Encoder platform data describes an on-board encoder, its associated DU SoC 57 - * output, and the connector. 58 - */ 59 - struct rcar_du_encoder_data { 60 - enum rcar_du_encoder_type type; 61 - enum rcar_du_output output; 62 - 63 - union { 64 - struct rcar_du_connector_lvds_data lvds; 65 - struct rcar_du_connector_vga_data vga; 66 - } connector; 67 - }; 68 - 69 - struct rcar_du_platform_data { 70 - struct rcar_du_encoder_data *encoders; 71 - unsigned int num_encoders; 72 - }; 73 - 74 - #endif /* __RCAR_DU_H__ */