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

Merge tag 'drm/fixes/for-3.19-rc1' of git://people.freedesktop.org/~tagr/linux into drm-next

drm: Miscellaneous fixes for v3.19-rc1

This is a small collection of fixes that I've been carrying around for a
while now. Many of these have been posted and reviewed or acked. The few
that haven't I deemed too trivial to bother.

* tag 'drm/fixes/for-3.19-rc1' of git://people.freedesktop.org/~tagr/linux:
video/hdmi: Relicense header under MIT license
drm/gma500: mdfld: Reuse video/mipi_display.h
drm: Make drm_mode_create_tv_properties() signature consistent
drm: Implement drm_get_pci_dev() dummy for !PCI
drm/prime: Use unsigned type for number of pages
drm/gem: Fix typo in kerneldoc
drm: Use const data when creating blob properties
drm: Use size_t for blob property sizes

+88 -79
+13 -10
drivers/gpu/drm/drm_crtc.c
··· 1386 1386 * responsible for allocating a list of format names and passing them to 1387 1387 * this routine. 1388 1388 */ 1389 - int drm_mode_create_tv_properties(struct drm_device *dev, int num_modes, 1389 + int drm_mode_create_tv_properties(struct drm_device *dev, 1390 + unsigned int num_modes, 1390 1391 char *modes[]) 1391 1392 { 1392 1393 struct drm_property *tv_selector; 1393 1394 struct drm_property *tv_subconnector; 1394 - int i; 1395 + unsigned int i; 1395 1396 1396 1397 if (dev->mode_config.tv_select_subconnector_property) 1397 1398 return 0; ··· 2261 2260 { 2262 2261 int ret = 0; 2263 2262 unsigned int fb_width, fb_height; 2264 - int i; 2263 + unsigned int i; 2265 2264 2266 2265 /* No fb means shut it down */ 2267 2266 if (!fb) { ··· 3912 3911 return ret; 3913 3912 } 3914 3913 3915 - static struct drm_property_blob *drm_property_create_blob(struct drm_device *dev, int length, 3916 - void *data) 3914 + static struct drm_property_blob * 3915 + drm_property_create_blob(struct drm_device *dev, size_t length, 3916 + const void *data) 3917 3917 { 3918 3918 struct drm_property_blob *blob; 3919 3919 int ret; ··· 4008 4006 * Zero on success, errno on failure. 4009 4007 */ 4010 4008 int drm_mode_connector_set_path_property(struct drm_connector *connector, 4011 - char *path) 4009 + const char *path) 4012 4010 { 4013 4011 struct drm_device *dev = connector->dev; 4014 - int ret, size; 4015 - size = strlen(path) + 1; 4012 + size_t size = strlen(path) + 1; 4013 + int ret; 4016 4014 4017 4015 connector->path_blob_ptr = drm_property_create_blob(connector->dev, 4018 4016 size, path); ··· 4038 4036 * Zero on success, errno on failure. 4039 4037 */ 4040 4038 int drm_mode_connector_update_edid_property(struct drm_connector *connector, 4041 - struct edid *edid) 4039 + const struct edid *edid) 4042 4040 { 4043 4041 struct drm_device *dev = connector->dev; 4044 - int ret, size; 4042 + size_t size; 4043 + int ret; 4045 4044 4046 4045 /* ignore requests to set edid when overridden */ 4047 4046 if (connector->override_edid)
+1 -1
drivers/gpu/drm/drm_gem.c
··· 188 188 } 189 189 190 190 /** 191 - * drm_gem_object_free - release resources bound to userspace handles 191 + * drm_gem_object_handle_free - release resources bound to userspace handles 192 192 * @obj: GEM object to clean up. 193 193 * 194 194 * Called after the last handle to the object has been closed
+1 -1
drivers/gpu/drm/drm_prime.c
··· 669 669 * the driver is responsible for mapping the pages into the 670 670 * importers address space for use with dma_buf itself. 671 671 */ 672 - struct sg_table *drm_prime_pages_to_sg(struct page **pages, int nr_pages) 672 + struct sg_table *drm_prime_pages_to_sg(struct page **pages, unsigned int nr_pages) 673 673 { 674 674 struct sg_table *sg = NULL; 675 675 int ret;
+31 -44
drivers/gpu/drm/gma500/mdfld_dsi_pkg_sender.c
··· 25 25 */ 26 26 27 27 #include <linux/freezer.h> 28 + #include <video/mipi_display.h> 28 29 29 30 #include "mdfld_dsi_output.h" 30 31 #include "mdfld_dsi_pkg_sender.h" 31 32 #include "mdfld_dsi_dpi.h" 32 33 33 34 #define MDFLD_DSI_READ_MAX_COUNT 5000 34 - 35 - enum data_type { 36 - DSI_DT_GENERIC_SHORT_WRITE_0 = 0x03, 37 - DSI_DT_GENERIC_SHORT_WRITE_1 = 0x13, 38 - DSI_DT_GENERIC_SHORT_WRITE_2 = 0x23, 39 - DSI_DT_GENERIC_READ_0 = 0x04, 40 - DSI_DT_GENERIC_READ_1 = 0x14, 41 - DSI_DT_GENERIC_READ_2 = 0x24, 42 - DSI_DT_GENERIC_LONG_WRITE = 0x29, 43 - DSI_DT_DCS_SHORT_WRITE_0 = 0x05, 44 - DSI_DT_DCS_SHORT_WRITE_1 = 0x15, 45 - DSI_DT_DCS_READ = 0x06, 46 - DSI_DT_DCS_LONG_WRITE = 0x39, 47 - }; 48 35 49 36 enum { 50 37 MDFLD_DSI_PANEL_MODE_SLEEP = 0x1, ··· 308 321 u8 cmd; 309 322 310 323 switch (data_type) { 311 - case DSI_DT_DCS_SHORT_WRITE_0: 312 - case DSI_DT_DCS_SHORT_WRITE_1: 313 - case DSI_DT_DCS_LONG_WRITE: 324 + case MIPI_DSI_DCS_SHORT_WRITE: 325 + case MIPI_DSI_DCS_SHORT_WRITE_PARAM: 326 + case MIPI_DSI_DCS_LONG_WRITE: 314 327 cmd = *data; 315 328 break; 316 329 default: ··· 321 334 sender->status = MDFLD_DSI_PKG_SENDER_BUSY; 322 335 323 336 /*wait for 120 milliseconds in case exit_sleep_mode just be sent*/ 324 - if (unlikely(cmd == DCS_ENTER_SLEEP_MODE)) { 337 + if (unlikely(cmd == MIPI_DCS_ENTER_SLEEP_MODE)) { 325 338 /*TODO: replace it with msleep later*/ 326 339 mdelay(120); 327 340 } 328 341 329 - if (unlikely(cmd == DCS_EXIT_SLEEP_MODE)) { 342 + if (unlikely(cmd == MIPI_DCS_EXIT_SLEEP_MODE)) { 330 343 /*TODO: replace it with msleep later*/ 331 344 mdelay(120); 332 345 } ··· 339 352 u8 cmd; 340 353 341 354 switch (data_type) { 342 - case DSI_DT_DCS_SHORT_WRITE_0: 343 - case DSI_DT_DCS_SHORT_WRITE_1: 344 - case DSI_DT_DCS_LONG_WRITE: 355 + case MIPI_DSI_DCS_SHORT_WRITE: 356 + case MIPI_DSI_DCS_SHORT_WRITE_PARAM: 357 + case MIPI_DSI_DCS_LONG_WRITE: 345 358 cmd = *data; 346 359 break; 347 360 default: ··· 349 362 } 350 363 351 364 /*update panel status*/ 352 - if (unlikely(cmd == DCS_ENTER_SLEEP_MODE)) { 365 + if (unlikely(cmd == MIPI_DCS_ENTER_SLEEP_MODE)) { 353 366 sender->panel_mode |= MDFLD_DSI_PANEL_MODE_SLEEP; 354 367 /*TODO: replace it with msleep later*/ 355 368 mdelay(120); 356 - } else if (unlikely(cmd == DCS_EXIT_SLEEP_MODE)) { 369 + } else if (unlikely(cmd == MIPI_DCS_EXIT_SLEEP_MODE)) { 357 370 sender->panel_mode &= ~MDFLD_DSI_PANEL_MODE_SLEEP; 358 371 /*TODO: replace it with msleep later*/ 359 372 mdelay(120); 360 - } else if (unlikely(cmd == DCS_SOFT_RESET)) { 373 + } else if (unlikely(cmd == MIPI_DCS_SOFT_RESET)) { 361 374 /*TODO: replace it with msleep later*/ 362 375 mdelay(5); 363 376 } ··· 392 405 } 393 406 394 407 switch (data_type) { 395 - case DSI_DT_GENERIC_SHORT_WRITE_0: 396 - case DSI_DT_GENERIC_SHORT_WRITE_1: 397 - case DSI_DT_GENERIC_SHORT_WRITE_2: 398 - case DSI_DT_GENERIC_READ_0: 399 - case DSI_DT_GENERIC_READ_1: 400 - case DSI_DT_GENERIC_READ_2: 401 - case DSI_DT_DCS_SHORT_WRITE_0: 402 - case DSI_DT_DCS_SHORT_WRITE_1: 403 - case DSI_DT_DCS_READ: 408 + case MIPI_DSI_GENERIC_SHORT_WRITE_0_PARAM: 409 + case MIPI_DSI_GENERIC_SHORT_WRITE_1_PARAM: 410 + case MIPI_DSI_GENERIC_SHORT_WRITE_2_PARAM: 411 + case MIPI_DSI_GENERIC_READ_REQUEST_0_PARAM: 412 + case MIPI_DSI_GENERIC_READ_REQUEST_1_PARAM: 413 + case MIPI_DSI_GENERIC_READ_REQUEST_2_PARAM: 414 + case MIPI_DSI_DCS_SHORT_WRITE: 415 + case MIPI_DSI_DCS_SHORT_WRITE_PARAM: 416 + case MIPI_DSI_DCS_READ: 404 417 ret = send_short_pkg(sender, data_type, data[0], data[1], hs); 405 418 break; 406 - case DSI_DT_GENERIC_LONG_WRITE: 407 - case DSI_DT_DCS_LONG_WRITE: 419 + case MIPI_DSI_GENERIC_LONG_WRITE: 420 + case MIPI_DSI_DCS_LONG_WRITE: 408 421 ret = send_long_pkg(sender, data_type, data, len, hs); 409 422 break; 410 423 } ··· 427 440 } 428 441 429 442 spin_lock_irqsave(&sender->lock, flags); 430 - send_pkg(sender, DSI_DT_DCS_LONG_WRITE, data, len, hs); 443 + send_pkg(sender, MIPI_DSI_DCS_LONG_WRITE, data, len, hs); 431 444 spin_unlock_irqrestore(&sender->lock, flags); 432 445 433 446 return 0; ··· 448 461 data[0] = cmd; 449 462 450 463 if (param_num) { 451 - data_type = DSI_DT_DCS_SHORT_WRITE_1; 464 + data_type = MIPI_DSI_DCS_SHORT_WRITE_PARAM; 452 465 data[1] = param; 453 466 } else { 454 - data_type = DSI_DT_DCS_SHORT_WRITE_0; 467 + data_type = MIPI_DSI_DCS_SHORT_WRITE; 455 468 data[1] = 0; 456 469 } 457 470 ··· 476 489 477 490 switch (param_num) { 478 491 case 0: 479 - data_type = DSI_DT_GENERIC_SHORT_WRITE_0; 492 + data_type = MIPI_DSI_GENERIC_SHORT_WRITE_0_PARAM; 480 493 data[0] = 0; 481 494 data[1] = 0; 482 495 break; 483 496 case 1: 484 - data_type = DSI_DT_GENERIC_SHORT_WRITE_1; 497 + data_type = MIPI_DSI_GENERIC_SHORT_WRITE_1_PARAM; 485 498 data[0] = param0; 486 499 data[1] = 0; 487 500 break; 488 501 case 2: 489 - data_type = DSI_DT_GENERIC_SHORT_WRITE_2; 502 + data_type = MIPI_DSI_GENERIC_SHORT_WRITE_2_PARAM; 490 503 data[0] = param0; 491 504 data[1] = param1; 492 505 break; ··· 510 523 } 511 524 512 525 spin_lock_irqsave(&sender->lock, flags); 513 - send_pkg(sender, DSI_DT_GENERIC_LONG_WRITE, data, len, hs); 526 + send_pkg(sender, MIPI_DSI_GENERIC_LONG_WRITE, data, len, hs); 514 527 spin_unlock_irqrestore(&sender->lock, flags); 515 528 516 529 return 0; ··· 581 594 return -EINVAL; 582 595 } 583 596 584 - return __read_panel_data(sender, DSI_DT_DCS_READ, &cmd, 1, 597 + return __read_panel_data(sender, MIPI_DSI_DCS_READ, &cmd, 1, 585 598 data, len, hs); 586 599 } 587 600
-12
drivers/gpu/drm/gma500/mdfld_dsi_pkg_sender.h
··· 62 62 u32 mipi_cmd_len_reg; 63 63 }; 64 64 65 - /* DCS definitions */ 66 - #define DCS_SOFT_RESET 0x01 67 - #define DCS_ENTER_SLEEP_MODE 0x10 68 - #define DCS_EXIT_SLEEP_MODE 0x11 69 - #define DCS_SET_DISPLAY_OFF 0x28 70 - #define DCS_SET_DISPLAY_ON 0x29 71 - #define DCS_SET_COLUMN_ADDRESS 0x2a 72 - #define DCS_SET_PAGE_ADDRESS 0x2b 73 - #define DCS_WRITE_MEM_START 0x2c 74 - #define DCS_SET_TEAR_OFF 0x34 75 - #define DCS_SET_TEAR_ON 0x35 76 - 77 65 extern int mdfld_dsi_pkg_sender_init(struct mdfld_dsi_connector *dsi_connector, 78 66 int pipe); 79 67 extern void mdfld_dsi_pkg_sender_destroy(struct mdfld_dsi_pkg_sender *sender);
+1 -1
drivers/gpu/drm/i915/intel_dp_mst.c
··· 385 385 #endif 386 386 } 387 387 388 - static struct drm_connector *intel_dp_add_mst_connector(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port, char *pathprop) 388 + static struct drm_connector *intel_dp_add_mst_connector(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port, const char *pathprop) 389 389 { 390 390 struct intel_dp *intel_dp = container_of(mgr, struct intel_dp, mst_mgr); 391 391 struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
+16 -1
include/drm/drmP.h
··· 986 986 987 987 extern int drm_prime_sg_to_page_addr_arrays(struct sg_table *sgt, struct page **pages, 988 988 dma_addr_t *addrs, int max_pages); 989 - extern struct sg_table *drm_prime_pages_to_sg(struct page **pages, int nr_pages); 989 + extern struct sg_table *drm_prime_pages_to_sg(struct page **pages, unsigned int nr_pages); 990 990 extern void drm_prime_gem_destroy(struct drm_gem_object *obj, struct sg_table *sg); 991 991 992 992 ··· 1028 1028 1029 1029 extern int drm_pci_init(struct drm_driver *driver, struct pci_driver *pdriver); 1030 1030 extern void drm_pci_exit(struct drm_driver *driver, struct pci_driver *pdriver); 1031 + #ifdef CONFIG_PCI 1031 1032 extern int drm_get_pci_dev(struct pci_dev *pdev, 1032 1033 const struct pci_device_id *ent, 1033 1034 struct drm_driver *driver); 1034 1035 extern int drm_pci_set_busid(struct drm_device *dev, struct drm_master *master); 1036 + #else 1037 + static inline int drm_get_pci_dev(struct pci_dev *pdev, 1038 + const struct pci_device_id *ent, 1039 + struct drm_driver *driver) 1040 + { 1041 + return -ENOSYS; 1042 + } 1043 + 1044 + static inline int drm_pci_set_busid(struct drm_device *dev, 1045 + struct drm_master *master) 1046 + { 1047 + return -ENOSYS; 1048 + } 1049 + #endif 1035 1050 1036 1051 #define DRM_PCIE_SPEED_25 1 1037 1052 #define DRM_PCIE_SPEED_50 2
+6 -5
include/drm/drm_crtc.h
··· 197 197 struct drm_property_blob { 198 198 struct drm_mode_object base; 199 199 struct list_head head; 200 - unsigned int length; 200 + size_t length; 201 201 unsigned char data[]; 202 202 }; 203 203 ··· 1162 1162 extern void drm_mode_config_cleanup(struct drm_device *dev); 1163 1163 1164 1164 extern int drm_mode_connector_set_path_property(struct drm_connector *connector, 1165 - char *path); 1165 + const char *path); 1166 1166 extern int drm_mode_connector_update_edid_property(struct drm_connector *connector, 1167 - struct edid *edid); 1167 + const struct edid *edid); 1168 1168 1169 1169 static inline bool drm_property_type_is(struct drm_property *property, 1170 1170 uint32_t type) ··· 1225 1225 extern int drm_property_add_enum(struct drm_property *property, int index, 1226 1226 uint64_t value, const char *name); 1227 1227 extern int drm_mode_create_dvi_i_properties(struct drm_device *dev); 1228 - extern int drm_mode_create_tv_properties(struct drm_device *dev, int num_formats, 1229 - char *formats[]); 1228 + extern int drm_mode_create_tv_properties(struct drm_device *dev, 1229 + unsigned int num_modes, 1230 + char *modes[]); 1230 1231 extern int drm_mode_create_scaling_mode_property(struct drm_device *dev); 1231 1232 extern int drm_mode_create_aspect_ratio_property(struct drm_device *dev); 1232 1233 extern int drm_mode_create_dirty_info_property(struct drm_device *dev);
+1 -1
include/drm/drm_dp_mst_helper.h
··· 371 371 struct drm_dp_mst_topology_mgr; 372 372 struct drm_dp_mst_topology_cbs { 373 373 /* create a connector for a port */ 374 - struct drm_connector *(*add_connector)(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port, char *path); 374 + struct drm_connector *(*add_connector)(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port, const char *path); 375 375 void (*destroy_connector)(struct drm_dp_mst_topology_mgr *mgr, 376 376 struct drm_connector *connector); 377 377 void (*hotplug)(struct drm_dp_mst_topology_mgr *mgr);
+18 -3
include/linux/hdmi.h
··· 1 1 /* 2 2 * Copyright (C) 2012 Avionic Design GmbH 3 3 * 4 - * This program is free software; you can redistribute it and/or modify 5 - * it under the terms of the GNU General Public License version 2 as 6 - * published by the Free Software Foundation. 4 + * Permission is hereby granted, free of charge, to any person obtaining a 5 + * copy of this software and associated documentation files (the "Software"), 6 + * to deal in the Software without restriction, including without limitation 7 + * the rights to use, copy, modify, merge, publish, distribute, sub license, 8 + * and/or sell copies of the Software, and to permit persons to whom the 9 + * Software is furnished to do so, subject to the following conditions: 10 + * 11 + * The above copyright notice and this permission notice (including the 12 + * next paragraph) shall be included in all copies or substantial portions 13 + * of the Software. 14 + * 15 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 18 + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 21 + * DEALINGS IN THE SOFTWARE. 7 22 */ 8 23 9 24 #ifndef __LINUX_HDMI_H_