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

Commit 657a0357 authored by Samantha Tran's avatar Samantha Tran Committed by Gerrit - the friendly Code Review server
Browse files

Revert "drm/msm/disp/dpu: Remove dpu_kms_utils"



This reverts commit d9c7440d.

This reversion is happening as a result of disabling the
disp/dpu directory as it will not be used in 4.19 downstream
display driver and these changes are made in the common layer
which affects the downstream driver functionalities. Separate
patches are submitted to revert the upstream driver and
introduce the downstream version of the display driver.

Change-Id: I1c2ffc94f12df34b83f2900c89b59ad4a7694517
Signed-off-by: default avatarSamantha Tran <samtran@codeaurora.org>
parent 076e462a
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -71,6 +71,7 @@ msm-y := \
	disp/dpu1/dpu_io_util.o \
	disp/dpu1/dpu_irq.o \
	disp/dpu1/dpu_kms.o \
	disp/dpu1/dpu_kms_utils.o \
	disp/dpu1/dpu_mdss.o \
	disp/dpu1/dpu_plane.o \
	disp/dpu1/dpu_power_handle.o \
+112 −0
Original line number Diff line number Diff line
@@ -270,6 +270,118 @@ void *dpu_debugfs_get_root(struct dpu_kms *dpu_kms);
 */
#define DPU_KMS_INFO_MAX_SIZE	4096

/**
 * struct dpu_kms_info - connector information structure container
 * @data: Array of information character data
 * @len: Current length of information data
 * @staged_len: Temporary data buffer length, commit to
 *              len using dpu_kms_info_stop
 * @start: Whether or not a partial data entry was just started
 */
struct dpu_kms_info {
	char data[DPU_KMS_INFO_MAX_SIZE];
	uint32_t len;
	uint32_t staged_len;
	bool start;
};

/**
 * DPU_KMS_INFO_DATA - Macro for accessing dpu_kms_info data bytes
 * @S: Pointer to dpu_kms_info structure
 * Returns: Pointer to byte data
 */
#define DPU_KMS_INFO_DATA(S)    ((S) ? ((struct dpu_kms_info *)(S))->data : 0)

/**
 * DPU_KMS_INFO_DATALEN - Macro for accessing dpu_kms_info data length
 *			it adds an extra character length to count null.
 * @S: Pointer to dpu_kms_info structure
 * Returns: Size of available byte data
 */
#define DPU_KMS_INFO_DATALEN(S) ((S) ? ((struct dpu_kms_info *)(S))->len + 1 \
							: 0)

/**
 * dpu_kms_info_reset - reset dpu_kms_info structure
 * @info: Pointer to dpu_kms_info structure
 */
void dpu_kms_info_reset(struct dpu_kms_info *info);

/**
 * dpu_kms_info_add_keyint - add integer value to 'dpu_kms_info'
 * @info: Pointer to dpu_kms_info structure
 * @key: Pointer to key string
 * @value: Signed 64-bit integer value
 */
void dpu_kms_info_add_keyint(struct dpu_kms_info *info,
		const char *key,
		int64_t value);

/**
 * dpu_kms_info_add_keystr - add string value to 'dpu_kms_info'
 * @info: Pointer to dpu_kms_info structure
 * @key: Pointer to key string
 * @value: Pointer to string value
 */
void dpu_kms_info_add_keystr(struct dpu_kms_info *info,
		const char *key,
		const char *value);

/**
 * dpu_kms_info_start - begin adding key to 'dpu_kms_info'
 * Usage:
 *      dpu_kms_info_start(key)
 *      dpu_kms_info_append(val_1)
 *      ...
 *      dpu_kms_info_append(val_n)
 *      dpu_kms_info_stop
 * @info: Pointer to dpu_kms_info structure
 * @key: Pointer to key string
 */
void dpu_kms_info_start(struct dpu_kms_info *info,
		const char *key);

/**
 * dpu_kms_info_append - append value string to 'dpu_kms_info'
 * Usage:
 *      dpu_kms_info_start(key)
 *      dpu_kms_info_append(val_1)
 *      ...
 *      dpu_kms_info_append(val_n)
 *      dpu_kms_info_stop
 * @info: Pointer to dpu_kms_info structure
 * @str: Pointer to partial value string
 */
void dpu_kms_info_append(struct dpu_kms_info *info,
		const char *str);

/**
 * dpu_kms_info_append_format - append format code string to 'dpu_kms_info'
 * Usage:
 *      dpu_kms_info_start(key)
 *      dpu_kms_info_append_format(fourcc, modifier)
 *      ...
 *      dpu_kms_info_stop
 * @info: Pointer to dpu_kms_info structure
 * @pixel_format: FOURCC format code
 * @modifier: 64-bit drm format modifier
 */
void dpu_kms_info_append_format(struct dpu_kms_info *info,
		uint32_t pixel_format,
		uint64_t modifier);

/**
 * dpu_kms_info_stop - finish adding key to 'dpu_kms_info'
 * Usage:
 *      dpu_kms_info_start(key)
 *      dpu_kms_info_append(val_1)
 *      ...
 *      dpu_kms_info_append(val_n)
 *      dpu_kms_info_stop
 * @info: Pointer to dpu_kms_info structure
 */
void dpu_kms_info_stop(struct dpu_kms_info *info);

/**
 * Vblank enable/disable functions
 */
+153 −0
Original line number Diff line number Diff line
/* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#define pr_fmt(fmt)	"dpu-kms_utils:[%s] " fmt, __func__

#include "dpu_kms.h"

void dpu_kms_info_reset(struct dpu_kms_info *info)
{
	if (info) {
		info->len = 0;
		info->staged_len = 0;
	}
}

void dpu_kms_info_add_keyint(struct dpu_kms_info *info,
		const char *key,
		int64_t value)
{
	uint32_t len;

	if (info && key) {
		len = snprintf(info->data + info->len,
				DPU_KMS_INFO_MAX_SIZE - info->len,
				"%s=%lld\n",
				key,
				value);

		/* check if snprintf truncated the string */
		if ((info->len + len) < DPU_KMS_INFO_MAX_SIZE)
			info->len += len;
	}
}

void dpu_kms_info_add_keystr(struct dpu_kms_info *info,
		const char *key,
		const char *value)
{
	uint32_t len;

	if (info && key && value) {
		len = snprintf(info->data + info->len,
				DPU_KMS_INFO_MAX_SIZE - info->len,
				"%s=%s\n",
				key,
				value);

		/* check if snprintf truncated the string */
		if ((info->len + len) < DPU_KMS_INFO_MAX_SIZE)
			info->len += len;
	}
}

void dpu_kms_info_start(struct dpu_kms_info *info,
		const char *key)
{
	uint32_t len;

	if (info && key) {
		len = snprintf(info->data + info->len,
				DPU_KMS_INFO_MAX_SIZE - info->len,
				"%s=",
				key);

		info->start = true;

		/* check if snprintf truncated the string */
		if ((info->len + len) < DPU_KMS_INFO_MAX_SIZE)
			info->staged_len = info->len + len;
	}
}

void dpu_kms_info_append(struct dpu_kms_info *info,
		const char *str)
{
	uint32_t len;

	if (info) {
		len = snprintf(info->data + info->staged_len,
				DPU_KMS_INFO_MAX_SIZE - info->staged_len,
				"%s",
				str);

		/* check if snprintf truncated the string */
		if ((info->staged_len + len) < DPU_KMS_INFO_MAX_SIZE) {
			info->staged_len += len;
			info->start = false;
		}
	}
}

void dpu_kms_info_append_format(struct dpu_kms_info *info,
		uint32_t pixel_format,
		uint64_t modifier)
{
	uint32_t len;

	if (!info)
		return;

	if (modifier) {
		len = snprintf(info->data + info->staged_len,
				DPU_KMS_INFO_MAX_SIZE - info->staged_len,
				info->start ?
				"%c%c%c%c/%llX/%llX" : " %c%c%c%c/%llX/%llX",
				(pixel_format >> 0) & 0xFF,
				(pixel_format >> 8) & 0xFF,
				(pixel_format >> 16) & 0xFF,
				(pixel_format >> 24) & 0xFF,
				(modifier >> 56) & 0xFF,
				modifier & ((1ULL << 56) - 1));
	} else {
		len = snprintf(info->data + info->staged_len,
				DPU_KMS_INFO_MAX_SIZE - info->staged_len,
				info->start ?
				"%c%c%c%c" : " %c%c%c%c",
				(pixel_format >> 0) & 0xFF,
				(pixel_format >> 8) & 0xFF,
				(pixel_format >> 16) & 0xFF,
				(pixel_format >> 24) & 0xFF);
	}

	/* check if snprintf truncated the string */
	if ((info->staged_len + len) < DPU_KMS_INFO_MAX_SIZE) {
		info->staged_len += len;
		info->start = false;
	}
}

void dpu_kms_info_stop(struct dpu_kms_info *info)
{
	uint32_t len;

	if (info) {
		/* insert final delimiter */
		len = snprintf(info->data + info->staged_len,
				DPU_KMS_INFO_MAX_SIZE - info->staged_len,
				"\n");

		/* check if snprintf truncated the string */
		if ((info->staged_len + len) < DPU_KMS_INFO_MAX_SIZE)
			info->len = info->staged_len + len;
	}
}