From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6024F898CC for ; Tue, 15 Jun 2021 09:11:16 +0000 (UTC) Date: Tue, 15 Jun 2021 12:13:10 +0300 From: Petri Latvala Message-ID: References: <20210611052005.303-1-venkata.sai.patnana@intel.com> <20210611052005.303-13-venkata.sai.patnana@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210611052005.303-13-venkata.sai.patnana@intel.com> Subject: Re: [igt-dev] [PATCH i-g-t 13/17] lib: Add helper functions to read/write dsc debugfs List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: venkata.sai.patnana@intel.com Cc: igt-dev@lists.freedesktop.org List-ID: On Fri, Jun 11, 2021 at 10:50:01AM +0530, venkata.sai.patnana@intel.com wrote: > From: Ankit Nautiyal > > Reuse code for reading and writing dsc debugfs and provide helper > functions to get dsc related parameters in lib igt_kms. > > Cc: Petri Latvala > Signed-off-by: Ankit Nautiyal > --- > lib/igt_kms.c | 135 ++++++++++++++++++++++++++++++++++++++++++++++++++ > lib/igt_kms.h | 9 ++++ > 2 files changed, 144 insertions(+) > > diff --git a/lib/igt_kms.c b/lib/igt_kms.c > index c7c69b6ea0..1520b2d16c 100644 > --- a/lib/igt_kms.c > +++ b/lib/igt_kms.c > @@ -5183,3 +5183,138 @@ void igt_dump_crtcs_fd(int drmfd) > > drmModeFreeResources(mode_resources); > } > + > +static > +bool check_dsc_debugfs(int drmfd, drmModeConnector *connector, > + const char *check_str) > +{ > + char file_name[128] = {0}; > + char buf[512]; > + > + sprintf(file_name, "%s-%d/i915_dsc_fec_support", > + kmstest_connector_type_str(connector->connector_type), > + connector->connector_type_id); > + > + igt_debugfs_read(drmfd, file_name, buf); > + > + return strstr(buf, check_str); > +} > + > +static > +int write_dsc_debugfs(int drmfd, drmModeConnector *connector, > + const char *file_name, > + const char *write_buf) > +{ > + int debugfs_fd = igt_debugfs_dir(drmfd); > + int len = strlen(write_buf); > + int ret; > + char file_path[128] = {0}; > + > + sprintf(file_path, "%s-%d/%s", > + kmstest_connector_type_str(connector->connector_type), > + connector->connector_type_id, > + file_name); > + > + ret = igt_sysfs_write(debugfs_fd, file_path, write_buf, len); > + > + close(debugfs_fd); > + > + return ret; > +} > + > +/* > + * igt_is_dp_dsc_supported: > + * @drmfd: A drm file descriptor > + * @connector: Pointer to libdrm connector > + * > + * Returns: True if DSC is supported for the given connector, false otherwise. > + */ > +bool igt_is_dp_dsc_supported(int drmfd, drmModeConnector *connector) > +{ > + return check_dsc_debugfs(drmfd, connector, "DSC_Sink_Support: yes"); > +} > + > +/* > + * igt_is_dp_fec_supported: > + * @drmfd: A drm file descriptor > + * @connector: Pointer to libdrm connector > + * > + * Returns: True if FEC is supported for the given connector, false otherwise. > + */ > +bool igt_is_dp_fec_supported(int drmfd, drmModeConnector *connector) > +{ > + > + return check_dsc_debugfs(drmfd, connector, "FEC_Sink_Support: yes"); There's an extra newline here. Otherwise, Reviewed-by: Petri Latvala > +} > + > +/* > + * igt_is_dp_dsc_enabled: > + * @drmfd: A drm file descriptor > + * @connector: Pointer to libdrm connector > + * > + * Returns: True if DSC is enabled for the given connector, false otherwise. > + */ > +bool igt_is_dp_dsc_enabled(int drmfd, drmModeConnector *connector) > +{ > + return check_dsc_debugfs(drmfd, connector, "DSC_Enabled: yes"); > +} > + > +/* > + * igt_is_force_dsc_enabled: > + * @drmfd: A drm file descriptor > + * @connector: Pointer to libdrm connector > + * > + * Returns: True if DSC is force enabled (via debugfs) for the given connector, > + * false otherwise. > + */ > +bool igt_is_force_dsc_enabled(int drmfd, drmModeConnector *connector) > +{ > + return check_dsc_debugfs(drmfd, connector, "Force_DSC_Enable: yes"); > +} > + > +/* > + * igt_force_dp_dsc_enable: > + * @drmfd: A drm file descriptor > + * @connector: Pointer to libdrm connector > + * > + * Returns: 1 on success or negative error code, in case of failure. > + */ > +int igt_force_dp_dsc_enable(int drmfd, drmModeConnector *connector) > +{ > + return write_dsc_debugfs(drmfd, connector, "i915_dsc_fec_support", "1"); > +} > + > +/* > + * igt_force_dp_dsc_enable: > + * @drmfd: A drm file descriptor > + * @connector: Pointer to libdrm connector > + * @bpp: Compressed bpp to be used with DSC > + * > + * Returns: No. of bytes written or negative error code, in case of failure. > + */ > +int igt_force_dp_dsc_enable_bpp(int drmfd, drmModeConnector *connector, int bpp) > +{ > + char buf[20] = {0}; > + > + sprintf(buf, "%d", bpp); > + > + return write_dsc_debugfs(drmfd, connector, "i915_dsc_bpp_support", buf); > +} > + > +/* > + * igt_get_dp_dsc_debugfs_fd: > + * @drmfd: A drm file descriptor > + * @connector: Pointer to libdrm connector > + * > + * Returns: fd of the DSC debugfs for the given connector, else returns -1. > + */ > +int igt_get_dp_dsc_debugfs_fd(int drmfd, drmModeConnector *connector) > +{ > + char file_name[128] = {0}; > + > + sprintf(file_name, "%s-%d/i915_dsc_fec_support", > + kmstest_connector_type_str(connector->connector_type), > + connector->connector_type_id); > + > + return openat(igt_debugfs_dir(drmfd), file_name, O_WRONLY); > +} > diff --git a/lib/igt_kms.h b/lib/igt_kms.h > index 8cde24b791..e87d1913e5 100644 > --- a/lib/igt_kms.h > +++ b/lib/igt_kms.h > @@ -917,4 +917,13 @@ void igt_dump_connectors_fd(int drmfd); > void igt_dump_crtcs_fd(int drmfd); > bool igt_override_all_active_output_modes_to_fit_bw(igt_display_t *display); > > +bool igt_is_dp_dsc_supported(int drmfd, drmModeConnector *connector); > +bool igt_is_dp_fec_supported(int drmfd, drmModeConnector *connector); > +bool igt_is_dp_dsc_enabled(int drmfd, drmModeConnector *connector); > +bool igt_is_force_dsc_enabled(int drmfd, drmModeConnector *connector); > +int igt_force_dp_dsc_enable(int drmfd, drmModeConnector *connector); > +int igt_force_dp_dsc_enable_bpp(int drmfd, drmModeConnector *connector, > + int bpp); > +int igt_get_dp_dsc_debugfs_fd(int drmfd, drmModeConnector *connector); > + > #endif /* __IGT_KMS_H__ */ > -- > 2.25.1 > _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev