Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4fb2ac6e authored by Dave Airlie's avatar Dave Airlie
Browse files

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
parents 8aa3dc3c 37d74578
Loading
Loading
Loading
Loading
+13 −10
Original line number Diff line number Diff line
@@ -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 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
	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 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
 * 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)
+1 −1
Original line number Diff line number Diff line
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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;
+31 −44
Original line number Diff line number Diff line
@@ -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);
}

+0 −12
Original line number Diff line number Diff line
@@ -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);
Loading