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. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABAgAGBQJUZKenAAoJEN0jrNd/PrOhNwkQAJTGxhol/k0Vj+P+HVj+MROU 9EEw67mh/c2Y4zQxEmWRE/rHdIgoz4zPL5hoJLLjPmorvKil6BIfURUybxYu9n3b MrunoA7adxvL+Uce+XMkuvWUE2fxFNaEwU+FT66Ib+Lo8A25FZXBqo125/RmhAHZ EQKcr0MBH76jybYoyB1H1pf/O3i6qODmh3kXT4Fved3jf5mZNPl5wgCSSr/4ilOZ wx3pzG3BvIrsyvGF6Q0oAjDEbaBTOhglfAvPFhC16cfhtPJMzVvx6v/abtipMjRv pUY3t96BvL1pyszcEc/ykjDX/ODlY00uOe1GgRSSXS/bThF0HJP14rTpjO+6ycON rap17o2feRuK3c2NzLMqv4bjkaNF/ut+2YnByulJWnpg1dDjIpJOzJ6Heep5D6+H lV5QP0B9LGI4718le2tv5hkH0NnQygiyRlACRzLBpq9gnXuSoSZYxjo6SuVid1X8 Ebs+QKNoTl1NEYeEvT/CnC552MdWzntcNjE9SA1yj0RgrIS87x8bmXqh/zAwa2dI 1Lq1wZ965ruDUPCGrd6jE8JiiEEXJjJr0y6zA4LBnR+OvmR/2GN7KCwjX+jwBthq 9dyO9YEnxSXT/dFEUumx3F4ZKcPUntT61pT6ZblIljiJ5vw6SegDXdWDc+eZ4QyD y2YyxRL+KxPftkeyfU4j =OUaP -----END PGP SIGNATURE----- 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
This commit is contained in:
		
						commit
						4fb2ac6ebe
					
				| @ -1386,12 +1386,13 @@ EXPORT_SYMBOL(drm_mode_create_dvi_i_properties); | ||||
|  * responsible for allocating a list of format names and passing them to | ||||
|  * this routine. | ||||
|  */ | ||||
| int drm_mode_create_tv_properties(struct drm_device *dev, int num_modes, | ||||
| int drm_mode_create_tv_properties(struct drm_device *dev, | ||||
| 				  unsigned int num_modes, | ||||
| 				  char *modes[]) | ||||
| { | ||||
| 	struct drm_property *tv_selector; | ||||
| 	struct drm_property *tv_subconnector; | ||||
| 	int i; | ||||
| 	unsigned int i; | ||||
| 
 | ||||
| 	if (dev->mode_config.tv_select_subconnector_property) | ||||
| 		return 0; | ||||
| @ -2260,7 +2261,7 @@ static int __setplane_internal(struct drm_plane *plane, | ||||
| { | ||||
| 	int ret = 0; | ||||
| 	unsigned int fb_width, fb_height; | ||||
| 	int i; | ||||
| 	unsigned int i; | ||||
| 
 | ||||
| 	/* No fb means shut it down */ | ||||
| 	if (!fb) { | ||||
| @ -3911,8 +3912,9 @@ done: | ||||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| static struct drm_property_blob *drm_property_create_blob(struct drm_device *dev, int length, | ||||
| 							  void *data) | ||||
| static struct drm_property_blob * | ||||
| drm_property_create_blob(struct drm_device *dev, size_t length, | ||||
| 			 const void *data) | ||||
| { | ||||
| 	struct drm_property_blob *blob; | ||||
| 	int ret; | ||||
| @ -4006,11 +4008,11 @@ done: | ||||
|  * Zero on success, errno on failure. | ||||
|  */ | ||||
| int drm_mode_connector_set_path_property(struct drm_connector *connector, | ||||
| 					 char *path) | ||||
| 					 const char *path) | ||||
| { | ||||
| 	struct drm_device *dev = connector->dev; | ||||
| 	int ret, size; | ||||
| 	size = strlen(path) + 1; | ||||
| 	size_t size = strlen(path) + 1; | ||||
| 	int ret; | ||||
| 
 | ||||
| 	connector->path_blob_ptr = drm_property_create_blob(connector->dev, | ||||
| 							    size, path); | ||||
| @ -4036,10 +4038,11 @@ EXPORT_SYMBOL(drm_mode_connector_set_path_property); | ||||
|  * Zero on success, errno on failure. | ||||
|  */ | ||||
| int drm_mode_connector_update_edid_property(struct drm_connector *connector, | ||||
| 					    struct edid *edid) | ||||
| 					    const struct edid *edid) | ||||
| { | ||||
| 	struct drm_device *dev = connector->dev; | ||||
| 	int ret, size; | ||||
| 	size_t size; | ||||
| 	int ret; | ||||
| 
 | ||||
| 	/* ignore requests to set edid when overridden */ | ||||
| 	if (connector->override_edid) | ||||
|  | ||||
| @ -188,7 +188,7 @@ drm_gem_remove_prime_handles(struct drm_gem_object *obj, struct drm_file *filp) | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|  * drm_gem_object_free - release resources bound to userspace handles | ||||
|  * drm_gem_object_handle_free - release resources bound to userspace handles | ||||
|  * @obj: GEM object to clean up. | ||||
|  * | ||||
|  * Called after the last handle to the object has been closed | ||||
|  | ||||
| @ -669,7 +669,7 @@ int drm_prime_fd_to_handle_ioctl(struct drm_device *dev, void *data, | ||||
|  * the driver is responsible for mapping the pages into the | ||||
|  * importers address space for use with dma_buf itself. | ||||
|  */ | ||||
| struct sg_table *drm_prime_pages_to_sg(struct page **pages, int nr_pages) | ||||
| struct sg_table *drm_prime_pages_to_sg(struct page **pages, unsigned int nr_pages) | ||||
| { | ||||
| 	struct sg_table *sg = NULL; | ||||
| 	int ret; | ||||
|  | ||||
| @ -25,6 +25,7 @@ | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/freezer.h> | ||||
| #include <video/mipi_display.h> | ||||
| 
 | ||||
| #include "mdfld_dsi_output.h" | ||||
| #include "mdfld_dsi_pkg_sender.h" | ||||
| @ -32,20 +33,6 @@ | ||||
| 
 | ||||
| #define MDFLD_DSI_READ_MAX_COUNT		5000 | ||||
| 
 | ||||
| enum data_type { | ||||
| 	DSI_DT_GENERIC_SHORT_WRITE_0	= 0x03, | ||||
| 	DSI_DT_GENERIC_SHORT_WRITE_1	= 0x13, | ||||
| 	DSI_DT_GENERIC_SHORT_WRITE_2	= 0x23, | ||||
| 	DSI_DT_GENERIC_READ_0		= 0x04, | ||||
| 	DSI_DT_GENERIC_READ_1		= 0x14, | ||||
| 	DSI_DT_GENERIC_READ_2		= 0x24, | ||||
| 	DSI_DT_GENERIC_LONG_WRITE	= 0x29, | ||||
| 	DSI_DT_DCS_SHORT_WRITE_0	= 0x05, | ||||
| 	DSI_DT_DCS_SHORT_WRITE_1	= 0x15, | ||||
| 	DSI_DT_DCS_READ			= 0x06, | ||||
| 	DSI_DT_DCS_LONG_WRITE		= 0x39, | ||||
| }; | ||||
| 
 | ||||
| enum { | ||||
| 	MDFLD_DSI_PANEL_MODE_SLEEP = 0x1, | ||||
| }; | ||||
| @ -321,9 +308,9 @@ static int send_pkg_prepare(struct mdfld_dsi_pkg_sender *sender, u8 data_type, | ||||
| 	u8 cmd; | ||||
| 
 | ||||
| 	switch (data_type) { | ||||
| 	case DSI_DT_DCS_SHORT_WRITE_0: | ||||
| 	case DSI_DT_DCS_SHORT_WRITE_1: | ||||
| 	case DSI_DT_DCS_LONG_WRITE: | ||||
| 	case MIPI_DSI_DCS_SHORT_WRITE: | ||||
| 	case MIPI_DSI_DCS_SHORT_WRITE_PARAM: | ||||
| 	case MIPI_DSI_DCS_LONG_WRITE: | ||||
| 		cmd = *data; | ||||
| 		break; | ||||
| 	default: | ||||
| @ -334,12 +321,12 @@ static int send_pkg_prepare(struct mdfld_dsi_pkg_sender *sender, u8 data_type, | ||||
| 	sender->status = MDFLD_DSI_PKG_SENDER_BUSY; | ||||
| 
 | ||||
| 	/*wait for 120 milliseconds in case exit_sleep_mode just be sent*/ | ||||
| 	if (unlikely(cmd == DCS_ENTER_SLEEP_MODE)) { | ||||
| 	if (unlikely(cmd == MIPI_DCS_ENTER_SLEEP_MODE)) { | ||||
| 		/*TODO: replace it with msleep later*/ | ||||
| 		mdelay(120); | ||||
| 	} | ||||
| 
 | ||||
| 	if (unlikely(cmd == DCS_EXIT_SLEEP_MODE)) { | ||||
| 	if (unlikely(cmd == MIPI_DCS_EXIT_SLEEP_MODE)) { | ||||
| 		/*TODO: replace it with msleep later*/ | ||||
| 		mdelay(120); | ||||
| 	} | ||||
| @ -352,9 +339,9 @@ static int send_pkg_done(struct mdfld_dsi_pkg_sender *sender, u8 data_type, | ||||
| 	u8 cmd; | ||||
| 
 | ||||
| 	switch (data_type) { | ||||
| 	case DSI_DT_DCS_SHORT_WRITE_0: | ||||
| 	case DSI_DT_DCS_SHORT_WRITE_1: | ||||
| 	case DSI_DT_DCS_LONG_WRITE: | ||||
| 	case MIPI_DSI_DCS_SHORT_WRITE: | ||||
| 	case MIPI_DSI_DCS_SHORT_WRITE_PARAM: | ||||
| 	case MIPI_DSI_DCS_LONG_WRITE: | ||||
| 		cmd = *data; | ||||
| 		break; | ||||
| 	default: | ||||
| @ -362,15 +349,15 @@ static int send_pkg_done(struct mdfld_dsi_pkg_sender *sender, u8 data_type, | ||||
| 	} | ||||
| 
 | ||||
| 	/*update panel status*/ | ||||
| 	if (unlikely(cmd == DCS_ENTER_SLEEP_MODE)) { | ||||
| 	if (unlikely(cmd == MIPI_DCS_ENTER_SLEEP_MODE)) { | ||||
| 		sender->panel_mode |= MDFLD_DSI_PANEL_MODE_SLEEP; | ||||
| 		/*TODO: replace it with msleep later*/ | ||||
| 		mdelay(120); | ||||
| 	} else if (unlikely(cmd == DCS_EXIT_SLEEP_MODE)) { | ||||
| 	} else if (unlikely(cmd == MIPI_DCS_EXIT_SLEEP_MODE)) { | ||||
| 		sender->panel_mode &= ~MDFLD_DSI_PANEL_MODE_SLEEP; | ||||
| 		/*TODO: replace it with msleep later*/ | ||||
| 		mdelay(120); | ||||
| 	} else if (unlikely(cmd == DCS_SOFT_RESET)) { | ||||
| 	} else if (unlikely(cmd == MIPI_DCS_SOFT_RESET)) { | ||||
| 		/*TODO: replace it with msleep later*/ | ||||
| 		mdelay(5); | ||||
| 	} | ||||
| @ -405,19 +392,19 @@ static int send_pkg(struct mdfld_dsi_pkg_sender *sender, u8 data_type, | ||||
| 	} | ||||
| 
 | ||||
| 	switch (data_type) { | ||||
| 	case DSI_DT_GENERIC_SHORT_WRITE_0: | ||||
| 	case DSI_DT_GENERIC_SHORT_WRITE_1: | ||||
| 	case DSI_DT_GENERIC_SHORT_WRITE_2: | ||||
| 	case DSI_DT_GENERIC_READ_0: | ||||
| 	case DSI_DT_GENERIC_READ_1: | ||||
| 	case DSI_DT_GENERIC_READ_2: | ||||
| 	case DSI_DT_DCS_SHORT_WRITE_0: | ||||
| 	case DSI_DT_DCS_SHORT_WRITE_1: | ||||
| 	case DSI_DT_DCS_READ: | ||||
| 	case MIPI_DSI_GENERIC_SHORT_WRITE_0_PARAM: | ||||
| 	case MIPI_DSI_GENERIC_SHORT_WRITE_1_PARAM: | ||||
| 	case MIPI_DSI_GENERIC_SHORT_WRITE_2_PARAM: | ||||
| 	case MIPI_DSI_GENERIC_READ_REQUEST_0_PARAM: | ||||
| 	case MIPI_DSI_GENERIC_READ_REQUEST_1_PARAM: | ||||
| 	case MIPI_DSI_GENERIC_READ_REQUEST_2_PARAM: | ||||
| 	case MIPI_DSI_DCS_SHORT_WRITE: | ||||
| 	case MIPI_DSI_DCS_SHORT_WRITE_PARAM: | ||||
| 	case MIPI_DSI_DCS_READ: | ||||
| 		ret = send_short_pkg(sender, data_type, data[0], data[1], hs); | ||||
| 		break; | ||||
| 	case DSI_DT_GENERIC_LONG_WRITE: | ||||
| 	case DSI_DT_DCS_LONG_WRITE: | ||||
| 	case MIPI_DSI_GENERIC_LONG_WRITE: | ||||
| 	case MIPI_DSI_DCS_LONG_WRITE: | ||||
| 		ret = send_long_pkg(sender, data_type, data, len, hs); | ||||
| 		break; | ||||
| 	} | ||||
| @ -440,7 +427,7 @@ int mdfld_dsi_send_mcs_long(struct mdfld_dsi_pkg_sender *sender, u8 *data, | ||||
| 	} | ||||
| 
 | ||||
| 	spin_lock_irqsave(&sender->lock, flags); | ||||
| 	send_pkg(sender, DSI_DT_DCS_LONG_WRITE, data, len, hs); | ||||
| 	send_pkg(sender, MIPI_DSI_DCS_LONG_WRITE, data, len, hs); | ||||
| 	spin_unlock_irqrestore(&sender->lock, flags); | ||||
| 
 | ||||
| 	return 0; | ||||
| @ -461,10 +448,10 @@ int mdfld_dsi_send_mcs_short(struct mdfld_dsi_pkg_sender *sender, u8 cmd, | ||||
| 	data[0] = cmd; | ||||
| 
 | ||||
| 	if (param_num) { | ||||
| 		data_type = DSI_DT_DCS_SHORT_WRITE_1; | ||||
| 		data_type = MIPI_DSI_DCS_SHORT_WRITE_PARAM; | ||||
| 		data[1] = param; | ||||
| 	} else { | ||||
| 		data_type = DSI_DT_DCS_SHORT_WRITE_0; | ||||
| 		data_type = MIPI_DSI_DCS_SHORT_WRITE; | ||||
| 		data[1] = 0; | ||||
| 	} | ||||
| 
 | ||||
| @ -489,17 +476,17 @@ int mdfld_dsi_send_gen_short(struct mdfld_dsi_pkg_sender *sender, u8 param0, | ||||
| 
 | ||||
| 	switch (param_num) { | ||||
| 	case 0: | ||||
| 		data_type = DSI_DT_GENERIC_SHORT_WRITE_0; | ||||
| 		data_type = MIPI_DSI_GENERIC_SHORT_WRITE_0_PARAM; | ||||
| 		data[0] = 0; | ||||
| 		data[1] = 0; | ||||
| 		break; | ||||
| 	case 1: | ||||
| 		data_type = DSI_DT_GENERIC_SHORT_WRITE_1; | ||||
| 		data_type = MIPI_DSI_GENERIC_SHORT_WRITE_1_PARAM; | ||||
| 		data[0] = param0; | ||||
| 		data[1] = 0; | ||||
| 		break; | ||||
| 	case 2: | ||||
| 		data_type = DSI_DT_GENERIC_SHORT_WRITE_2; | ||||
| 		data_type = MIPI_DSI_GENERIC_SHORT_WRITE_2_PARAM; | ||||
| 		data[0] = param0; | ||||
| 		data[1] = param1; | ||||
| 		break; | ||||
| @ -523,7 +510,7 @@ int mdfld_dsi_send_gen_long(struct mdfld_dsi_pkg_sender *sender, u8 *data, | ||||
| 	} | ||||
| 
 | ||||
| 	spin_lock_irqsave(&sender->lock, flags); | ||||
| 	send_pkg(sender, DSI_DT_GENERIC_LONG_WRITE, data, len, hs); | ||||
| 	send_pkg(sender, MIPI_DSI_GENERIC_LONG_WRITE, data, len, hs); | ||||
| 	spin_unlock_irqrestore(&sender->lock, flags); | ||||
| 
 | ||||
| 	return 0; | ||||
| @ -594,7 +581,7 @@ int mdfld_dsi_read_mcs(struct mdfld_dsi_pkg_sender *sender, u8 cmd, | ||||
| 		return -EINVAL; | ||||
| 	} | ||||
| 
 | ||||
| 	return __read_panel_data(sender, DSI_DT_DCS_READ, &cmd, 1, | ||||
| 	return __read_panel_data(sender, MIPI_DSI_DCS_READ, &cmd, 1, | ||||
| 				data, len, hs); | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -62,18 +62,6 @@ struct mdfld_dsi_pkg_sender { | ||||
| 	u32 mipi_cmd_len_reg; | ||||
| }; | ||||
| 
 | ||||
| /* DCS definitions */ | ||||
| #define DCS_SOFT_RESET			0x01 | ||||
| #define DCS_ENTER_SLEEP_MODE		0x10 | ||||
| #define DCS_EXIT_SLEEP_MODE		0x11 | ||||
| #define DCS_SET_DISPLAY_OFF		0x28 | ||||
| #define DCS_SET_DISPLAY_ON		0x29 | ||||
| #define DCS_SET_COLUMN_ADDRESS		0x2a | ||||
| #define DCS_SET_PAGE_ADDRESS		0x2b | ||||
| #define DCS_WRITE_MEM_START		0x2c | ||||
| #define DCS_SET_TEAR_OFF		0x34 | ||||
| #define DCS_SET_TEAR_ON			0x35 | ||||
| 
 | ||||
| extern int mdfld_dsi_pkg_sender_init(struct mdfld_dsi_connector *dsi_connector, | ||||
| 					int pipe); | ||||
| extern void mdfld_dsi_pkg_sender_destroy(struct mdfld_dsi_pkg_sender *sender); | ||||
|  | ||||
| @ -385,7 +385,7 @@ static void intel_connector_remove_from_fbdev(struct intel_connector *connector) | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| static struct drm_connector *intel_dp_add_mst_connector(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port, char *pathprop) | ||||
| 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) | ||||
| { | ||||
| 	struct intel_dp *intel_dp = container_of(mgr, struct intel_dp, mst_mgr); | ||||
| 	struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); | ||||
|  | ||||
| @ -986,7 +986,7 @@ extern void drm_gem_dmabuf_release(struct dma_buf *dma_buf); | ||||
| 
 | ||||
| extern int drm_prime_sg_to_page_addr_arrays(struct sg_table *sgt, struct page **pages, | ||||
| 					    dma_addr_t *addrs, int max_pages); | ||||
| extern struct sg_table *drm_prime_pages_to_sg(struct page **pages, int nr_pages); | ||||
| extern struct sg_table *drm_prime_pages_to_sg(struct page **pages, unsigned int nr_pages); | ||||
| extern void drm_prime_gem_destroy(struct drm_gem_object *obj, struct sg_table *sg); | ||||
| 
 | ||||
| 
 | ||||
| @ -1028,10 +1028,25 @@ void drm_pci_agp_destroy(struct drm_device *dev); | ||||
| 
 | ||||
| extern int drm_pci_init(struct drm_driver *driver, struct pci_driver *pdriver); | ||||
| extern void drm_pci_exit(struct drm_driver *driver, struct pci_driver *pdriver); | ||||
| #ifdef CONFIG_PCI | ||||
| extern int drm_get_pci_dev(struct pci_dev *pdev, | ||||
| 			   const struct pci_device_id *ent, | ||||
| 			   struct drm_driver *driver); | ||||
| extern int drm_pci_set_busid(struct drm_device *dev, struct drm_master *master); | ||||
| #else | ||||
| static inline int drm_get_pci_dev(struct pci_dev *pdev, | ||||
| 				  const struct pci_device_id *ent, | ||||
| 				  struct drm_driver *driver) | ||||
| { | ||||
| 	return -ENOSYS; | ||||
| } | ||||
| 
 | ||||
| static inline int drm_pci_set_busid(struct drm_device *dev, | ||||
| 				    struct drm_master *master) | ||||
| { | ||||
| 	return -ENOSYS; | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| #define DRM_PCIE_SPEED_25 1 | ||||
| #define DRM_PCIE_SPEED_50 2 | ||||
|  | ||||
| @ -197,7 +197,7 @@ struct drm_framebuffer { | ||||
| struct drm_property_blob { | ||||
| 	struct drm_mode_object base; | ||||
| 	struct list_head head; | ||||
| 	unsigned int length; | ||||
| 	size_t length; | ||||
| 	unsigned char data[]; | ||||
| }; | ||||
| 
 | ||||
| @ -1162,9 +1162,9 @@ extern void drm_mode_config_reset(struct drm_device *dev); | ||||
| extern void drm_mode_config_cleanup(struct drm_device *dev); | ||||
| 
 | ||||
| extern int drm_mode_connector_set_path_property(struct drm_connector *connector, | ||||
| 						char *path); | ||||
| 						const char *path); | ||||
| extern int drm_mode_connector_update_edid_property(struct drm_connector *connector, | ||||
| 						struct edid *edid); | ||||
| 						   const struct edid *edid); | ||||
| 
 | ||||
| static inline bool drm_property_type_is(struct drm_property *property, | ||||
| 		uint32_t type) | ||||
| @ -1225,8 +1225,9 @@ extern void drm_property_destroy(struct drm_device *dev, struct drm_property *pr | ||||
| extern int drm_property_add_enum(struct drm_property *property, int index, | ||||
| 				 uint64_t value, const char *name); | ||||
| extern int drm_mode_create_dvi_i_properties(struct drm_device *dev); | ||||
| extern int drm_mode_create_tv_properties(struct drm_device *dev, int num_formats, | ||||
| 				     char *formats[]); | ||||
| extern int drm_mode_create_tv_properties(struct drm_device *dev, | ||||
| 					 unsigned int num_modes, | ||||
| 					 char *modes[]); | ||||
| extern int drm_mode_create_scaling_mode_property(struct drm_device *dev); | ||||
| extern int drm_mode_create_aspect_ratio_property(struct drm_device *dev); | ||||
| extern int drm_mode_create_dirty_info_property(struct drm_device *dev); | ||||
|  | ||||
| @ -371,7 +371,7 @@ struct drm_dp_sideband_msg_tx { | ||||
| struct drm_dp_mst_topology_mgr; | ||||
| struct drm_dp_mst_topology_cbs { | ||||
| 	/* create a connector for a port */ | ||||
| 	struct drm_connector *(*add_connector)(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port, char *path); | ||||
| 	struct drm_connector *(*add_connector)(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port, const char *path); | ||||
| 	void (*destroy_connector)(struct drm_dp_mst_topology_mgr *mgr, | ||||
| 				  struct drm_connector *connector); | ||||
| 	void (*hotplug)(struct drm_dp_mst_topology_mgr *mgr); | ||||
|  | ||||
| @ -1,9 +1,24 @@ | ||||
| /*
 | ||||
|  * Copyright (C) 2012 Avionic Design GmbH | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License version 2 as | ||||
|  * published by the Free Software Foundation. | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining a | ||||
|  * copy of this software and associated documentation files (the "Software"), | ||||
|  * to deal in the Software without restriction, including without limitation | ||||
|  * the rights to use, copy, modify, merge, publish, distribute, sub license, | ||||
|  * and/or sell copies of the Software, and to permit persons to whom the | ||||
|  * Software is furnished to do so, subject to the following conditions: | ||||
|  * | ||||
|  * The above copyright notice and this permission notice (including the | ||||
|  * next paragraph) shall be included in all copies or substantial portions | ||||
|  * of the Software. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|  * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL | ||||
|  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||||
|  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||
|  * DEALINGS IN THE SOFTWARE. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef __LINUX_HDMI_H_ | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user