[Freedreno] [PATCH v5 01/19] drm/msm/dpu: remove debugfs support for misr

Sean Paul sean at poorly.run
Fri Sep 7 12:58:30 UTC 2018


On Wed, Sep 05, 2018 at 07:08:10PM -0700, Jeykumar Sankaran wrote:
> MISR support is the debug feature present in Snapdragon chipsets.
> At the layer mixer and interfaces, MISR algorithm can generate CRC
> signatures of the pixel data which can be used for validating
> the frames generated. Since there are no clients for this feature,
> strip down the support from the driver.
> 
> changes in v4:
> 	- changed introduced in the series
> changes in v5:
> 	- update commit text with the need for the change(Sean)

Awesome! Thank you!

Reviewed-by: Sean Paul <seanpaul at chromium.org>


> 
> Signed-off-by: Jeykumar Sankaran <jsanka at codeaurora.org>
> ---
>  drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c           | 139 ---------------------
>  drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h           |   6 -
>  drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c        | 127 -------------------
>  drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys.h   |   6 -
>  .../gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c   |  28 -----
>  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c        |  29 -----
>  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.h        |   7 --
>  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c          |  29 -----
>  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h          |   7 --
>  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.c        |   3 -
>  drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h        |   6 -
>  11 files changed, 387 deletions(-)
> 
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> index f0a5e77..1e0382f 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> @@ -47,8 +47,6 @@
>  #define LEFT_MIXER 0
>  #define RIGHT_MIXER 1
>  
> -#define MISR_BUFF_SIZE			256
> -
>  static inline struct dpu_kms *_dpu_crtc_get_kms(struct drm_crtc *crtc)
>  {
>  	struct msm_drm_private *priv;
> @@ -1272,8 +1270,6 @@ static void dpu_crtc_handle_power_event(u32 event_type, void *arg)
>  	struct drm_crtc *crtc = arg;
>  	struct dpu_crtc *dpu_crtc;
>  	struct drm_encoder *encoder;
> -	struct dpu_crtc_mixer *m;
> -	u32 i, misr_status;
>  
>  	if (!crtc) {
>  		DPU_ERROR("invalid crtc\n");
> @@ -1294,29 +1290,8 @@ static void dpu_crtc_handle_power_event(u32 event_type, void *arg)
>  
>  			dpu_encoder_virt_restore(encoder);
>  		}
> -
> -		for (i = 0; i < dpu_crtc->num_mixers; ++i) {
> -			m = &dpu_crtc->mixers[i];
> -			if (!m->hw_lm || !m->hw_lm->ops.setup_misr ||
> -					!dpu_crtc->misr_enable)
> -				continue;
> -
> -			m->hw_lm->ops.setup_misr(m->hw_lm, true,
> -					dpu_crtc->misr_frame_count);
> -		}
>  		break;
>  	case DPU_POWER_EVENT_PRE_DISABLE:
> -		for (i = 0; i < dpu_crtc->num_mixers; ++i) {
> -			m = &dpu_crtc->mixers[i];
> -			if (!m->hw_lm || !m->hw_lm->ops.collect_misr ||
> -					!dpu_crtc->misr_enable)
> -				continue;
> -
> -			misr_status = m->hw_lm->ops.collect_misr(m->hw_lm);
> -			dpu_crtc->misr_data[i] = misr_status ? misr_status :
> -							dpu_crtc->misr_data[i];
> -		}
> -		break;
>  	case DPU_POWER_EVENT_POST_DISABLE:
>  		/**
>  		 * Nothing to do. All the planes on the CRTC will be
> @@ -1846,113 +1821,6 @@ static int _dpu_debugfs_status_open(struct inode *inode, struct file *file)
>  	return single_open(file, _dpu_debugfs_status_show, inode->i_private);
>  }
>  
> -static ssize_t _dpu_crtc_misr_setup(struct file *file,
> -		const char __user *user_buf, size_t count, loff_t *ppos)
> -{
> -	struct dpu_crtc *dpu_crtc;
> -	struct dpu_crtc_mixer *m;
> -	int i = 0, rc;
> -	char buf[MISR_BUFF_SIZE + 1];
> -	u32 frame_count, enable;
> -	size_t buff_copy;
> -
> -	if (!file || !file->private_data)
> -		return -EINVAL;
> -
> -	dpu_crtc = file->private_data;
> -	buff_copy = min_t(size_t, count, MISR_BUFF_SIZE);
> -	if (copy_from_user(buf, user_buf, buff_copy)) {
> -		DPU_ERROR("buffer copy failed\n");
> -		return -EINVAL;
> -	}
> -
> -	buf[buff_copy] = 0; /* end of string */
> -
> -	if (sscanf(buf, "%u %u", &enable, &frame_count) != 2)
> -		return -EINVAL;
> -
> -	rc = _dpu_crtc_power_enable(dpu_crtc, true);
> -	if (rc)
> -		return rc;
> -
> -	mutex_lock(&dpu_crtc->crtc_lock);
> -	dpu_crtc->misr_enable = enable;
> -	dpu_crtc->misr_frame_count = frame_count;
> -	for (i = 0; i < dpu_crtc->num_mixers; ++i) {
> -		dpu_crtc->misr_data[i] = 0;
> -		m = &dpu_crtc->mixers[i];
> -		if (!m->hw_lm || !m->hw_lm->ops.setup_misr)
> -			continue;
> -
> -		m->hw_lm->ops.setup_misr(m->hw_lm, enable, frame_count);
> -	}
> -	mutex_unlock(&dpu_crtc->crtc_lock);
> -	_dpu_crtc_power_enable(dpu_crtc, false);
> -
> -	return count;
> -}
> -
> -static ssize_t _dpu_crtc_misr_read(struct file *file,
> -		char __user *user_buff, size_t count, loff_t *ppos)
> -{
> -	struct dpu_crtc *dpu_crtc;
> -	struct dpu_crtc_mixer *m;
> -	int i = 0, rc;
> -	u32 misr_status;
> -	ssize_t len = 0;
> -	char buf[MISR_BUFF_SIZE + 1] = {'\0'};
> -
> -	if (*ppos)
> -		return 0;
> -
> -	if (!file || !file->private_data)
> -		return -EINVAL;
> -
> -	dpu_crtc = file->private_data;
> -	rc = _dpu_crtc_power_enable(dpu_crtc, true);
> -	if (rc)
> -		return rc;
> -
> -	mutex_lock(&dpu_crtc->crtc_lock);
> -	if (!dpu_crtc->misr_enable) {
> -		len += snprintf(buf + len, MISR_BUFF_SIZE - len,
> -			"disabled\n");
> -		goto buff_check;
> -	}
> -
> -	for (i = 0; i < dpu_crtc->num_mixers; ++i) {
> -		m = &dpu_crtc->mixers[i];
> -		if (!m->hw_lm || !m->hw_lm->ops.collect_misr)
> -			continue;
> -
> -		misr_status = m->hw_lm->ops.collect_misr(m->hw_lm);
> -		dpu_crtc->misr_data[i] = misr_status ? misr_status :
> -							dpu_crtc->misr_data[i];
> -		len += snprintf(buf + len, MISR_BUFF_SIZE - len, "lm idx:%d\n",
> -					m->hw_lm->idx - LM_0);
> -		len += snprintf(buf + len, MISR_BUFF_SIZE - len, "0x%x\n",
> -							dpu_crtc->misr_data[i]);
> -	}
> -
> -buff_check:
> -	if (count <= len) {
> -		len = 0;
> -		goto end;
> -	}
> -
> -	if (copy_to_user(user_buff, buf, len)) {
> -		len = -EFAULT;
> -		goto end;
> -	}
> -
> -	*ppos += len;   /* increase offset */
> -
> -end:
> -	mutex_unlock(&dpu_crtc->crtc_lock);
> -	_dpu_crtc_power_enable(dpu_crtc, false);
> -	return len;
> -}
> -
>  #define DEFINE_DPU_DEBUGFS_SEQ_FOPS(__prefix)                          \
>  static int __prefix ## _open(struct inode *inode, struct file *file)	\
>  {									\
> @@ -2014,11 +1882,6 @@ static int _dpu_crtc_init_debugfs(struct drm_crtc *crtc)
>  		.llseek =	seq_lseek,
>  		.release =	single_release,
>  	};
> -	static const struct file_operations debugfs_misr_fops = {
> -		.open =		simple_open,
> -		.read =		_dpu_crtc_misr_read,
> -		.write =	_dpu_crtc_misr_setup,
> -	};
>  
>  	if (!crtc)
>  		return -EINVAL;
> @@ -2041,8 +1904,6 @@ static int _dpu_crtc_init_debugfs(struct drm_crtc *crtc)
>  			dpu_crtc->debugfs_root,
>  			&dpu_crtc->base,
>  			&dpu_crtc_debugfs_state_fops);
> -	debugfs_create_file("misr_data", 0600, dpu_crtc->debugfs_root,
> -					dpu_crtc, &debugfs_misr_fops);
>  
>  	return 0;
>  }
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
> index a896791..53484b1 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
> @@ -156,9 +156,6 @@ struct dpu_crtc_frame_event {
>   * @event_thread  : Pointer to event handler thread
>   * @event_worker  : Event worker queue
>   * @event_lock    : Spinlock around event handling code
> - * @misr_enable   : boolean entry indicates misr enable/disable status.
> - * @misr_frame_count  : misr frame count provided by client
> - * @misr_data     : store misr data before turning off the clocks.
>   * @phandle: Pointer to power handler
>   * @power_event   : registered power event handle
>   * @cur_perf      : current performance committed to clock/bandwidth driver
> @@ -206,9 +203,6 @@ struct dpu_crtc {
>  
>  	/* for handling internal event thread */
>  	spinlock_t event_lock;
> -	bool misr_enable;
> -	u32 misr_frame_count;
> -	u32 misr_data[CRTC_DUAL_MIXERS];
>  
>  	struct dpu_power_handle *phandle;
>  	struct dpu_power_event *power_event;
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
> index 5b0e944..991b22c 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
> @@ -65,8 +65,6 @@
>  
>  #define MAX_CHANNELS_PER_ENC 2
>  
> -#define MISR_BUFF_SIZE			256
> -
>  #define IDLE_SHORT_TIMEOUT	1
>  
>  #define MAX_VDISPLAY_SPLIT 1080
> @@ -161,8 +159,6 @@ enum dpu_enc_rc_states {
>   * @frame_done_timer:		watchdog timer for frame done event
>   * @vsync_event_timer:		vsync timer
>   * @disp_info:			local copy of msm_display_info struct
> - * @misr_enable:		misr enable/disable status
> - * @misr_frame_count:		misr frame count before start capturing the data
>   * @idle_pc_supported:		indicate if idle power collaps is supported
>   * @rc_lock:			resource control mutex lock to protect
>   *				virt encoder over various state changes
> @@ -202,8 +198,6 @@ struct dpu_encoder_virt {
>  	struct timer_list vsync_event_timer;
>  
>  	struct msm_display_info disp_info;
> -	bool misr_enable;
> -	u32 misr_frame_count;
>  
>  	bool idle_pc_supported;
>  	struct mutex rc_lock;
> @@ -1193,11 +1187,6 @@ static void dpu_encoder_virt_enable(struct drm_encoder *drm_enc)
>  			if (phys->ops.enable)
>  				phys->ops.enable(phys);
>  		}
> -
> -		if (dpu_enc->misr_enable && (dpu_enc->disp_info.capabilities &
> -		     MSM_DISPLAY_CAP_VID_MODE) && phys->ops.setup_misr)
> -			phys->ops.setup_misr(phys, true,
> -						dpu_enc->misr_frame_count);
>  	}
>  
>  	if (dpu_enc->cur_master->ops.enable)
> @@ -1949,113 +1938,6 @@ static int _dpu_encoder_debugfs_status_open(struct inode *inode,
>  	return single_open(file, _dpu_encoder_status_show, inode->i_private);
>  }
>  
> -static ssize_t _dpu_encoder_misr_setup(struct file *file,
> -		const char __user *user_buf, size_t count, loff_t *ppos)
> -{
> -	struct dpu_encoder_virt *dpu_enc;
> -	int i = 0, rc;
> -	char buf[MISR_BUFF_SIZE + 1];
> -	size_t buff_copy;
> -	u32 frame_count, enable;
> -
> -	if (!file || !file->private_data)
> -		return -EINVAL;
> -
> -	dpu_enc = file->private_data;
> -
> -	buff_copy = min_t(size_t, count, MISR_BUFF_SIZE);
> -	if (copy_from_user(buf, user_buf, buff_copy))
> -		return -EINVAL;
> -
> -	buf[buff_copy] = 0; /* end of string */
> -
> -	if (sscanf(buf, "%u %u", &enable, &frame_count) != 2)
> -		return -EINVAL;
> -
> -	rc = _dpu_encoder_power_enable(dpu_enc, true);
> -	if (rc)
> -		return rc;
> -
> -	mutex_lock(&dpu_enc->enc_lock);
> -	dpu_enc->misr_enable = enable;
> -	dpu_enc->misr_frame_count = frame_count;
> -	for (i = 0; i < dpu_enc->num_phys_encs; i++) {
> -		struct dpu_encoder_phys *phys = dpu_enc->phys_encs[i];
> -
> -		if (!phys || !phys->ops.setup_misr)
> -			continue;
> -
> -		phys->ops.setup_misr(phys, enable, frame_count);
> -	}
> -	mutex_unlock(&dpu_enc->enc_lock);
> -	_dpu_encoder_power_enable(dpu_enc, false);
> -
> -	return count;
> -}
> -
> -static ssize_t _dpu_encoder_misr_read(struct file *file,
> -		char __user *user_buff, size_t count, loff_t *ppos)
> -{
> -	struct dpu_encoder_virt *dpu_enc;
> -	int i = 0, len = 0;
> -	char buf[MISR_BUFF_SIZE + 1] = {'\0'};
> -	int rc;
> -
> -	if (*ppos)
> -		return 0;
> -
> -	if (!file || !file->private_data)
> -		return -EINVAL;
> -
> -	dpu_enc = file->private_data;
> -
> -	rc = _dpu_encoder_power_enable(dpu_enc, true);
> -	if (rc)
> -		return rc;
> -
> -	mutex_lock(&dpu_enc->enc_lock);
> -	if (!dpu_enc->misr_enable) {
> -		len += snprintf(buf + len, MISR_BUFF_SIZE - len,
> -			"disabled\n");
> -		goto buff_check;
> -	} else if (dpu_enc->disp_info.capabilities &
> -						~MSM_DISPLAY_CAP_VID_MODE) {
> -		len += snprintf(buf + len, MISR_BUFF_SIZE - len,
> -			"unsupported\n");
> -		goto buff_check;
> -	}
> -
> -	for (i = 0; i < dpu_enc->num_phys_encs; i++) {
> -		struct dpu_encoder_phys *phys = dpu_enc->phys_encs[i];
> -
> -		if (!phys || !phys->ops.collect_misr)
> -			continue;
> -
> -		len += snprintf(buf + len, MISR_BUFF_SIZE - len,
> -			"Intf idx:%d\n", phys->intf_idx - INTF_0);
> -		len += snprintf(buf + len, MISR_BUFF_SIZE - len, "0x%x\n",
> -					phys->ops.collect_misr(phys));
> -	}
> -
> -buff_check:
> -	if (count <= len) {
> -		len = 0;
> -		goto end;
> -	}
> -
> -	if (copy_to_user(user_buff, buf, len)) {
> -		len = -EFAULT;
> -		goto end;
> -	}
> -
> -	*ppos += len;   /* increase offset */
> -
> -end:
> -	mutex_unlock(&dpu_enc->enc_lock);
> -	_dpu_encoder_power_enable(dpu_enc, false);
> -	return len;
> -}
> -
>  static int _dpu_encoder_init_debugfs(struct drm_encoder *drm_enc)
>  {
>  	struct dpu_encoder_virt *dpu_enc;
> @@ -2070,12 +1952,6 @@ static int _dpu_encoder_init_debugfs(struct drm_encoder *drm_enc)
>  		.release =	single_release,
>  	};
>  
> -	static const struct file_operations debugfs_misr_fops = {
> -		.open = simple_open,
> -		.read = _dpu_encoder_misr_read,
> -		.write = _dpu_encoder_misr_setup,
> -	};
> -
>  	char name[DPU_NAME_SIZE];
>  
>  	if (!drm_enc || !drm_enc->dev || !drm_enc->dev->dev_private) {
> @@ -2099,9 +1975,6 @@ static int _dpu_encoder_init_debugfs(struct drm_encoder *drm_enc)
>  	debugfs_create_file("status", 0600,
>  		dpu_enc->debugfs_root, dpu_enc, &debugfs_status_fops);
>  
> -	debugfs_create_file("misr_data", 0600,
> -		dpu_enc->debugfs_root, dpu_enc, &debugfs_misr_fops);
> -
>  	for (i = 0; i < dpu_enc->num_phys_encs; i++)
>  		if (dpu_enc->phys_encs[i] &&
>  				dpu_enc->phys_encs[i]->ops.late_register)
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys.h
> index c7df8aa..b3917e0 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys.h
> @@ -114,8 +114,6 @@ struct dpu_encoder_virt_ops {
>   * @handle_post_kickoff:	Do any work necessary post-kickoff work
>   * @trigger_start:		Process start event on physical encoder
>   * @needs_single_flush:		Whether encoder slaves need to be flushed
> - * @setup_misr:		Sets up MISR, enable and disables based on sysfs
> - * @collect_misr:		Collects MISR data on frame update
>   * @hw_reset:			Issue HW recovery such as CTL reset and clear
>   *				DPU_ENC_ERR_NEEDS_HW_RESET state
>   * @irq_control:		Handler to enable/disable all the encoder IRQs
> @@ -154,10 +152,6 @@ struct dpu_encoder_phys_ops {
>  	void (*handle_post_kickoff)(struct dpu_encoder_phys *phys_enc);
>  	void (*trigger_start)(struct dpu_encoder_phys *phys_enc);
>  	bool (*needs_single_flush)(struct dpu_encoder_phys *phys_enc);
> -
> -	void (*setup_misr)(struct dpu_encoder_phys *phys_encs,
> -				bool enable, u32 frame_count);
> -	u32 (*collect_misr)(struct dpu_encoder_phys *phys_enc);
>  	void (*hw_reset)(struct dpu_encoder_phys *phys_enc);
>  	void (*irq_control)(struct dpu_encoder_phys *phys, bool enable);
>  	void (*prepare_idle_pc)(struct dpu_encoder_phys *phys_enc);
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c
> index 14fc7c2..6fc3d3f 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c
> @@ -756,32 +756,6 @@ static void dpu_encoder_phys_vid_irq_control(struct dpu_encoder_phys *phys_enc,
>  	}
>  }
>  
> -static void dpu_encoder_phys_vid_setup_misr(struct dpu_encoder_phys *phys_enc,
> -						bool enable, u32 frame_count)
> -{
> -	struct dpu_encoder_phys_vid *vid_enc;
> -
> -	if (!phys_enc)
> -		return;
> -	vid_enc = to_dpu_encoder_phys_vid(phys_enc);
> -
> -	if (vid_enc->hw_intf && vid_enc->hw_intf->ops.setup_misr)
> -		vid_enc->hw_intf->ops.setup_misr(vid_enc->hw_intf,
> -							enable, frame_count);
> -}
> -
> -static u32 dpu_encoder_phys_vid_collect_misr(struct dpu_encoder_phys *phys_enc)
> -{
> -	struct dpu_encoder_phys_vid *vid_enc;
> -
> -	if (!phys_enc)
> -		return 0;
> -	vid_enc = to_dpu_encoder_phys_vid(phys_enc);
> -
> -	return vid_enc->hw_intf && vid_enc->hw_intf->ops.collect_misr ?
> -		vid_enc->hw_intf->ops.collect_misr(vid_enc->hw_intf) : 0;
> -}
> -
>  static int dpu_encoder_phys_vid_get_line_count(
>  		struct dpu_encoder_phys *phys_enc)
>  {
> @@ -817,8 +791,6 @@ static void dpu_encoder_phys_vid_init_ops(struct dpu_encoder_phys_ops *ops)
>  	ops->prepare_for_kickoff = dpu_encoder_phys_vid_prepare_for_kickoff;
>  	ops->handle_post_kickoff = dpu_encoder_phys_vid_handle_post_kickoff;
>  	ops->needs_single_flush = dpu_encoder_phys_vid_needs_single_flush;
> -	ops->setup_misr = dpu_encoder_phys_vid_setup_misr;
> -	ops->collect_misr = dpu_encoder_phys_vid_collect_misr;
>  	ops->hw_reset = dpu_encoder_helper_hw_reset;
>  	ops->get_line_count = dpu_encoder_phys_vid_get_line_count;
>  }
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c
> index d280df5..9c6bba0 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.c
> @@ -65,9 +65,6 @@
>  #define   INTF_FRAME_COUNT              0x0AC
>  #define   INTF_LINE_COUNT               0x0B0
>  
> -#define INTF_MISR_CTRL			0x180
> -#define INTF_MISR_SIGNATURE		0x184
> -
>  static struct dpu_intf_cfg *_intf_offset(enum dpu_intf intf,
>  		struct dpu_mdss_cfg *m,
>  		void __iomem *addr,
> @@ -246,30 +243,6 @@ static void dpu_hw_intf_get_status(
>  	}
>  }
>  
> -static void dpu_hw_intf_setup_misr(struct dpu_hw_intf *intf,
> -						bool enable, u32 frame_count)
> -{
> -	struct dpu_hw_blk_reg_map *c = &intf->hw;
> -	u32 config = 0;
> -
> -	DPU_REG_WRITE(c, INTF_MISR_CTRL, MISR_CTRL_STATUS_CLEAR);
> -	/* clear misr data */
> -	wmb();
> -
> -	if (enable)
> -		config = (frame_count & MISR_FRAME_COUNT_MASK) |
> -			MISR_CTRL_ENABLE | INTF_MISR_CTRL_FREE_RUN_MASK;
> -
> -	DPU_REG_WRITE(c, INTF_MISR_CTRL, config);
> -}
> -
> -static u32 dpu_hw_intf_collect_misr(struct dpu_hw_intf *intf)
> -{
> -	struct dpu_hw_blk_reg_map *c = &intf->hw;
> -
> -	return DPU_REG_READ(c, INTF_MISR_SIGNATURE);
> -}
> -
>  static u32 dpu_hw_intf_get_line_count(struct dpu_hw_intf *intf)
>  {
>  	struct dpu_hw_blk_reg_map *c;
> @@ -289,8 +262,6 @@ static void _setup_intf_ops(struct dpu_hw_intf_ops *ops,
>  	ops->setup_prg_fetch  = dpu_hw_intf_setup_prg_fetch;
>  	ops->get_status = dpu_hw_intf_get_status;
>  	ops->enable_timing = dpu_hw_intf_enable_timing_engine;
> -	ops->setup_misr = dpu_hw_intf_setup_misr;
> -	ops->collect_misr = dpu_hw_intf_collect_misr;
>  	ops->get_line_count = dpu_hw_intf_get_line_count;
>  }
>  
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.h
> index a79d735..3b77df4 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_intf.h
> @@ -59,8 +59,6 @@ struct intf_status {
>   * @ setup_prog_fetch : enables/disables the programmable fetch logic
>   * @ enable_timing: enable/disable timing engine
>   * @ get_status: returns if timing engine is enabled or not
> - * @ setup_misr: enables/disables MISR in HW register
> - * @ collect_misr: reads and stores MISR data from HW register
>   * @ get_line_count: reads current vertical line counter
>   */
>  struct dpu_hw_intf_ops {
> @@ -77,11 +75,6 @@ struct dpu_hw_intf_ops {
>  	void (*get_status)(struct dpu_hw_intf *intf,
>  			struct intf_status *status);
>  
> -	void (*setup_misr)(struct dpu_hw_intf *intf,
> -			bool enable, u32 frame_count);
> -
> -	u32 (*collect_misr)(struct dpu_hw_intf *intf);
> -
>  	u32 (*get_line_count)(struct dpu_hw_intf *intf);
>  };
>  
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c
> index 4ab72b0..acb8dc8 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c
> @@ -34,9 +34,6 @@
>  #define LM_BLEND0_FG_ALPHA               0x04
>  #define LM_BLEND0_BG_ALPHA               0x08
>  
> -#define LM_MISR_CTRL			0x310
> -#define LM_MISR_SIGNATURE		0x314
> -
>  static struct dpu_lm_cfg *_lm_offset(enum dpu_lm mixer,
>  		struct dpu_mdss_cfg *m,
>  		void __iomem *addr,
> @@ -171,30 +168,6 @@ static void dpu_hw_lm_gc(struct dpu_hw_mixer *mixer,
>  {
>  }
>  
> -static void dpu_hw_lm_setup_misr(struct dpu_hw_mixer *ctx,
> -				bool enable, u32 frame_count)
> -{
> -	struct dpu_hw_blk_reg_map *c = &ctx->hw;
> -	u32 config = 0;
> -
> -	DPU_REG_WRITE(c, LM_MISR_CTRL, MISR_CTRL_STATUS_CLEAR);
> -	/* clear misr data */
> -	wmb();
> -
> -	if (enable)
> -		config = (frame_count & MISR_FRAME_COUNT_MASK) |
> -			MISR_CTRL_ENABLE | INTF_MISR_CTRL_FREE_RUN_MASK;
> -
> -	DPU_REG_WRITE(c, LM_MISR_CTRL, config);
> -}
> -
> -static u32 dpu_hw_lm_collect_misr(struct dpu_hw_mixer *ctx)
> -{
> -	struct dpu_hw_blk_reg_map *c = &ctx->hw;
> -
> -	return DPU_REG_READ(c, LM_MISR_SIGNATURE);
> -}
> -
>  static void _setup_mixer_ops(struct dpu_mdss_cfg *m,
>  		struct dpu_hw_lm_ops *ops,
>  		unsigned long features)
> @@ -207,8 +180,6 @@ static void _setup_mixer_ops(struct dpu_mdss_cfg *m,
>  	ops->setup_alpha_out = dpu_hw_lm_setup_color3;
>  	ops->setup_border_color = dpu_hw_lm_setup_border_color;
>  	ops->setup_gc = dpu_hw_lm_gc;
> -	ops->setup_misr = dpu_hw_lm_setup_misr;
> -	ops->collect_misr = dpu_hw_lm_collect_misr;
>  };
>  
>  static struct dpu_hw_blk_ops dpu_hw_ops = {
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h
> index e29e5da..5b036ac 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h
> @@ -66,13 +66,6 @@ struct dpu_hw_lm_ops {
>  	 */
>  	void (*setup_gc)(struct dpu_hw_mixer *mixer,
>  			void *cfg);
> -
> -	/* setup_misr: enables/disables MISR in HW register */
> -	void (*setup_misr)(struct dpu_hw_mixer *ctx,
> -			bool enable, u32 frame_count);
> -
> -	/* collect_misr: reads and stores MISR data from HW register */
> -	u32 (*collect_misr)(struct dpu_hw_mixer *ctx);
>  };
>  
>  struct dpu_hw_mixer {
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.c
> index 4cabae4..cb5c017 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.c
> @@ -50,9 +50,6 @@
>  #define QSEED3_CLK_CTRL0                   0x54
>  #define QSEED3_CLK_CTRL1                   0x58
>  #define QSEED3_CLK_STATUS                  0x5C
> -#define QSEED3_MISR_CTRL                   0x70
> -#define QSEED3_MISR_SIGNATURE_0            0x74
> -#define QSEED3_MISR_SIGNATURE_1            0x78
>  #define QSEED3_PHASE_INIT_Y_H              0x90
>  #define QSEED3_PHASE_INIT_Y_V              0x94
>  #define QSEED3_PHASE_INIT_UV_H             0x98
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h
> index 1240f50..cb02041 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_util.h
> @@ -325,12 +325,6 @@ void dpu_reg_write(struct dpu_hw_blk_reg_map *c,
>  #define DPU_REG_WRITE(c, off, val) dpu_reg_write(c, off, val, #off)
>  #define DPU_REG_READ(c, off) dpu_reg_read(c, off)
>  
> -#define MISR_FRAME_COUNT_MASK		0xFF
> -#define MISR_CTRL_ENABLE		BIT(8)
> -#define MISR_CTRL_STATUS		BIT(9)
> -#define MISR_CTRL_STATUS_CLEAR		BIT(10)
> -#define INTF_MISR_CTRL_FREE_RUN_MASK	BIT(31)
> -
>  void *dpu_hw_util_get_dir(void);
>  
>  void dpu_hw_setup_scaler3(struct dpu_hw_blk_reg_map *c,
> -- 
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
> a Linux Foundation Collaborative Project
> 

-- 
Sean Paul, Software Engineer, Google / Chromium OS


More information about the Freedreno mailing list