* [PATCH v6 1/4] drm/dp: add crtc backpointer to drm_dp_aux
2017-03-03 13:39 [PATCH v6 0/4] drm/dp: Implement CRC debugfs API Tomeu Vizoso
@ 2017-03-03 13:39 ` Tomeu Vizoso
2017-03-03 13:39 ` [PATCH v6 2/4] drm/dp: add helpers for capture of frame CRCs Tomeu Vizoso
` (3 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Tomeu Vizoso @ 2017-03-03 13:39 UTC (permalink / raw)
To: linux-kernel
Cc: Ville Syrjälä, Sean Paul, Thierry Reding,
intel-gfx-trybot, Emil Velikov, Daniel Vetter, Benjamin Gaignard,
Tomeu Vizoso, Jani Nikula, dri-devel, David Airlie
This backpointer allows DP helpers to access the crtc it's currently
being used for.
v6: Have the backpointer be to drm_crtc (Sean Paul)
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
---
include/drm/drm_dp_helper.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
index ba89295c8651..a710e39b5f83 100644
--- a/include/drm/drm_dp_helper.h
+++ b/include/drm/drm_dp_helper.h
@@ -789,6 +789,7 @@ struct drm_dp_aux_msg {
* @name: user-visible name of this AUX channel and the I2C-over-AUX adapter
* @ddc: I2C adapter that can be used for I2C-over-AUX communication
* @dev: pointer to struct device that is the parent for this AUX channel
+ * @crtc: backpointer to the crtc that is currently using this AUX channel
* @hw_mutex: internal mutex used for locking transfers
* @transfer: transfers a message representing a single AUX transaction
*
@@ -825,6 +826,7 @@ struct drm_dp_aux {
const char *name;
struct i2c_adapter ddc;
struct device *dev;
+ struct drm_crtc *crtc;
struct mutex hw_mutex;
ssize_t (*transfer)(struct drm_dp_aux *aux,
struct drm_dp_aux_msg *msg);
--
2.9.3
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v6 2/4] drm/dp: add helpers for capture of frame CRCs
2017-03-03 13:39 [PATCH v6 0/4] drm/dp: Implement CRC debugfs API Tomeu Vizoso
2017-03-03 13:39 ` [PATCH v6 1/4] drm/dp: add crtc backpointer to drm_dp_aux Tomeu Vizoso
@ 2017-03-03 13:39 ` Tomeu Vizoso
2017-03-03 13:39 ` [PATCH v6 3/4] drm/bridge: analogix_dp: " Tomeu Vizoso
` (2 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Tomeu Vizoso @ 2017-03-03 13:39 UTC (permalink / raw)
To: linux-kernel
Cc: Ville Syrjälä, Sean Paul, Thierry Reding,
intel-gfx-trybot, Emil Velikov, Daniel Vetter, Benjamin Gaignard,
Tomeu Vizoso, Jani Nikula, dri-devel, David Airlie
Adds helpers for starting and stopping capture of frame CRCs through the
DPCD. When capture is on, a worker waits for vblanks and retrieves the
frame CRC to put it in the queue on the CRTC that is using the
eDP connector, so it's passed to userspace.
v2: Reuse drm_crtc_wait_one_vblank
Update locking, as drm_crtc_add_crc_entry now takes the lock
v3: Don't call wake_up_interruptible directly, that's now done in
drm_crtc_add_crc_entry.
v4: Style fixes (Sean Paul)
Reworked retry of CRC reads (Sean Paul)
Flush worker after stopping CRC generationa (Sean Paul)
v5: Move back to make the retry explicitly once
v6: Set and use the drm_crtc backpointer (Sean Paul)
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
---
drivers/gpu/drm/drm_dp_helper.c | 126 ++++++++++++++++++++++++++++++++++++++++
include/drm/drm_dp_helper.h | 7 +++
2 files changed, 133 insertions(+)
diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
index 68908c1d5ca1..c40cfe2e63ab 100644
--- a/drivers/gpu/drm/drm_dp_helper.c
+++ b/drivers/gpu/drm/drm_dp_helper.c
@@ -981,6 +981,78 @@ static const struct i2c_lock_operations drm_dp_i2c_lock_ops = {
.unlock_bus = unlock_bus,
};
+static int drm_dp_aux_get_crc(struct drm_dp_aux *aux, u8 *crc)
+{
+ u8 buf, count;
+ int ret;
+
+ ret = drm_dp_dpcd_readb(aux, DP_TEST_SINK, &buf);
+ if (ret < 0)
+ return ret;
+
+ WARN_ON(!(buf & DP_TEST_SINK_START));
+
+ ret = drm_dp_dpcd_readb(aux, DP_TEST_SINK_MISC, &buf);
+ if (ret < 0)
+ return ret;
+
+ count = buf & DP_TEST_COUNT_MASK;
+ if (count == aux->crc_count)
+ return -EAGAIN; /* No CRC yet */
+
+ aux->crc_count = count;
+
+ /*
+ * At DP_TEST_CRC_R_CR, there's 6 bytes containing CRC data, 2 bytes
+ * per component (RGB or CrYCb).
+ */
+ ret = drm_dp_dpcd_read(aux, DP_TEST_CRC_R_CR, crc, 6);
+ if (ret < 0)
+ return ret;
+
+ return 0;
+}
+
+static void drm_dp_aux_crc_work(struct work_struct *work)
+{
+ struct drm_dp_aux *aux = container_of(work, struct drm_dp_aux,
+ crc_work);
+ struct drm_crtc *crtc;
+ u8 crc_bytes[6];
+ uint32_t crcs[3];
+ int ret;
+
+ if (WARN_ON(!aux->crtc))
+ return;
+
+ crtc = aux->crtc;
+ while (crtc->crc.opened) {
+ drm_crtc_wait_one_vblank(crtc);
+ if (!crtc->crc.opened)
+ break;
+
+ ret = drm_dp_aux_get_crc(aux, crc_bytes);
+ if (ret == -EAGAIN) {
+ usleep_range(1000, 2000);
+ ret = drm_dp_aux_get_crc(aux, crc_bytes);
+ }
+
+ if (ret == -EAGAIN) {
+ DRM_DEBUG_KMS("Get CRC failed after retrying: %d\n",
+ ret);
+ continue;
+ } else if (ret) {
+ DRM_DEBUG_KMS("Failed to get a CRC: %d\n", ret);
+ continue;
+ }
+
+ crcs[0] = crc_bytes[0] | crc_bytes[1] << 8;
+ crcs[1] = crc_bytes[2] | crc_bytes[3] << 8;
+ crcs[2] = crc_bytes[4] | crc_bytes[5] << 8;
+ drm_crtc_add_crc_entry(crtc, false, 0, crcs);
+ }
+}
+
/**
* drm_dp_aux_init() - minimally initialise an aux channel
* @aux: DisplayPort AUX channel
@@ -993,6 +1065,7 @@ static const struct i2c_lock_operations drm_dp_i2c_lock_ops = {
void drm_dp_aux_init(struct drm_dp_aux *aux)
{
mutex_init(&aux->hw_mutex);
+ INIT_WORK(&aux->crc_work, drm_dp_aux_crc_work);
aux->ddc.algo = &drm_dp_i2c_algo;
aux->ddc.algo_data = aux;
@@ -1081,3 +1154,56 @@ int drm_dp_psr_setup_time(const u8 psr_cap[EDP_PSR_RECEIVER_CAP_SIZE])
EXPORT_SYMBOL(drm_dp_psr_setup_time);
#undef PSR_SETUP_TIME
+
+/**
+ * drm_dp_start_crc() - start capture of frame CRCs
+ * @aux: DisplayPort AUX channel
+ *
+ * Returns 0 on success or a negative error code on failure.
+ */
+int drm_dp_start_crc(struct drm_dp_aux *aux, struct drm_crtc *crtc)
+{
+ u8 buf;
+ int ret;
+
+ ret = drm_dp_dpcd_readb(aux, DP_TEST_SINK, &buf);
+ if (ret < 0)
+ return ret;
+
+ ret = drm_dp_dpcd_writeb(aux, DP_TEST_SINK, buf | DP_TEST_SINK_START);
+ if (ret < 0)
+ return ret;
+
+ aux->crc_count = 0;
+ aux->crtc = crtc;
+ schedule_work(&aux->crc_work);
+
+ return 0;
+}
+EXPORT_SYMBOL(drm_dp_start_crc);
+
+/**
+ * drm_dp_stop_crc() - stop capture of frame CRCs
+ * @aux: DisplayPort AUX channel
+ *
+ * Returns 0 on success or a negative error code on failure.
+ */
+int drm_dp_stop_crc(struct drm_dp_aux *aux)
+{
+ u8 buf;
+ int ret;
+
+ ret = drm_dp_dpcd_readb(aux, DP_TEST_SINK, &buf);
+ if (ret < 0)
+ return ret;
+
+ ret = drm_dp_dpcd_writeb(aux, DP_TEST_SINK, buf & ~DP_TEST_SINK_START);
+ if (ret < 0)
+ return ret;
+
+ flush_work(&aux->crc_work);
+ aux->crtc = NULL;
+
+ return 0;
+}
+EXPORT_SYMBOL(drm_dp_stop_crc);
diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
index a710e39b5f83..c0bd0d7651a9 100644
--- a/include/drm/drm_dp_helper.h
+++ b/include/drm/drm_dp_helper.h
@@ -791,6 +791,8 @@ struct drm_dp_aux_msg {
* @dev: pointer to struct device that is the parent for this AUX channel
* @crtc: backpointer to the crtc that is currently using this AUX channel
* @hw_mutex: internal mutex used for locking transfers
+ * @crc_work: worker that captures CRCs for each frame
+ * @crc_count: counter of captured frame CRCs
* @transfer: transfers a message representing a single AUX transaction
*
* The .dev field should be set to a pointer to the device that implements
@@ -828,6 +830,8 @@ struct drm_dp_aux {
struct device *dev;
struct drm_crtc *crtc;
struct mutex hw_mutex;
+ struct work_struct crc_work;
+ u8 crc_count;
ssize_t (*transfer)(struct drm_dp_aux *aux,
struct drm_dp_aux_msg *msg);
/**
@@ -906,4 +910,7 @@ void drm_dp_aux_init(struct drm_dp_aux *aux);
int drm_dp_aux_register(struct drm_dp_aux *aux);
void drm_dp_aux_unregister(struct drm_dp_aux *aux);
+int drm_dp_start_crc(struct drm_dp_aux *aux, struct drm_crtc *crtc);
+int drm_dp_stop_crc(struct drm_dp_aux *aux);
+
#endif /* _DRM_DP_HELPER_H_ */
--
2.9.3
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v6 3/4] drm/bridge: analogix_dp: add helpers for capture of frame CRCs
2017-03-03 13:39 [PATCH v6 0/4] drm/dp: Implement CRC debugfs API Tomeu Vizoso
2017-03-03 13:39 ` [PATCH v6 1/4] drm/dp: add crtc backpointer to drm_dp_aux Tomeu Vizoso
2017-03-03 13:39 ` [PATCH v6 2/4] drm/dp: add helpers for capture of frame CRCs Tomeu Vizoso
@ 2017-03-03 13:39 ` Tomeu Vizoso
2017-03-03 13:39 ` [PATCH v6 4/4] drm/rockchip: Implement CRC debugfs API Tomeu Vizoso
2017-03-06 17:19 ` [PATCH v6 0/4] drm/dp: " Sean Paul
4 siblings, 0 replies; 8+ messages in thread
From: Tomeu Vizoso @ 2017-03-03 13:39 UTC (permalink / raw)
To: linux-kernel
Cc: Ville Syrjälä, Sean Paul, Thierry Reding,
intel-gfx-trybot, Emil Velikov, Daniel Vetter, Benjamin Gaignard,
Tomeu Vizoso, Archit Taneja, David Airlie, dri-devel
Add two simple functions that just take the drm_dp_aux from our struct
and calls the corresponding DP helpers with it.
v6: Pass to the DP helper the drm_crtc of the current connector (Sean Paul)
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
---
drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 22 ++++++++++++++++++++++
include/drm/bridge/analogix_dp.h | 3 +++
2 files changed, 25 insertions(+)
diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
index e7cd1056ff2d..c26997afd3cf 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
@@ -1488,6 +1488,28 @@ int analogix_dp_resume(struct device *dev)
EXPORT_SYMBOL_GPL(analogix_dp_resume);
#endif
+int analogix_dp_start_crc(struct drm_connector *connector)
+{
+ struct analogix_dp_device *dp = to_dp(connector);
+
+ if (!connector->state->crtc) {
+ DRM_ERROR("Connector %s doesn't currently have a CRTC.\n",
+ connector->name);
+ return -EINVAL;
+ }
+
+ return drm_dp_start_crc(&dp->aux, connector->state->crtc);
+}
+EXPORT_SYMBOL_GPL(analogix_dp_start_crc);
+
+int analogix_dp_stop_crc(struct drm_connector *connector)
+{
+ struct analogix_dp_device *dp = to_dp(connector);
+
+ return drm_dp_stop_crc(&dp->aux);
+}
+EXPORT_SYMBOL_GPL(analogix_dp_stop_crc);
+
MODULE_AUTHOR("Jingoo Han <jg1.han@samsung.com>");
MODULE_DESCRIPTION("Analogix DP Core Driver");
MODULE_LICENSE("GPL v2");
diff --git a/include/drm/bridge/analogix_dp.h b/include/drm/bridge/analogix_dp.h
index f6f0c062205c..c99d6eaef1ac 100644
--- a/include/drm/bridge/analogix_dp.h
+++ b/include/drm/bridge/analogix_dp.h
@@ -49,4 +49,7 @@ int analogix_dp_bind(struct device *dev, struct drm_device *drm_dev,
struct analogix_dp_plat_data *plat_data);
void analogix_dp_unbind(struct device *dev, struct device *master, void *data);
+int analogix_dp_start_crc(struct drm_connector *connector);
+int analogix_dp_stop_crc(struct drm_connector *connector);
+
#endif /* _ANALOGIX_DP_H_ */
--
2.9.3
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v6 4/4] drm/rockchip: Implement CRC debugfs API
2017-03-03 13:39 [PATCH v6 0/4] drm/dp: Implement CRC debugfs API Tomeu Vizoso
` (2 preceding siblings ...)
2017-03-03 13:39 ` [PATCH v6 3/4] drm/bridge: analogix_dp: " Tomeu Vizoso
@ 2017-03-03 13:39 ` Tomeu Vizoso
2017-03-06 0:55 ` Mark yao
2017-03-06 17:58 ` Emil Velikov
2017-03-06 17:19 ` [PATCH v6 0/4] drm/dp: " Sean Paul
4 siblings, 2 replies; 8+ messages in thread
From: Tomeu Vizoso @ 2017-03-03 13:39 UTC (permalink / raw)
To: linux-kernel
Cc: Ville Syrjälä, Sean Paul, Thierry Reding,
intel-gfx-trybot, Emil Velikov, Daniel Vetter, Benjamin Gaignard,
Tomeu Vizoso, Mark Yao, Heiko Stuebner, dri-devel, linux-rockchip,
David Airlie, linux-arm-kernel
Implement the .set_crc_source() callback and call the DP helpers
accordingly to start and stop CRC capture.
This is only done if this CRTC is currently using the eDP connector.
v3: Remove superfluous check on rockchip_crtc_state->output_type
v6: Remove superfluous variable
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
---
drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 41 +++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
index 94d7b7327ff7..17ab16c4b922 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
@@ -19,6 +19,7 @@
#include <drm/drm_crtc_helper.h>
#include <drm/drm_flip_work.h>
#include <drm/drm_plane_helper.h>
+#include <drm/bridge/analogix_dp.h>
#include <linux/kernel.h>
#include <linux/module.h>
@@ -1111,6 +1112,45 @@ static void vop_crtc_destroy_state(struct drm_crtc *crtc,
kfree(s);
}
+static struct drm_connector *vop_get_edp_connector(struct vop *vop)
+{
+ struct drm_crtc *crtc = &vop->crtc;
+ struct drm_connector *connector;
+
+ mutex_lock(&crtc->dev->mode_config.mutex);
+ drm_for_each_connector(connector, crtc->dev)
+ if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) {
+ mutex_unlock(&crtc->dev->mode_config.mutex);
+ return connector;
+ }
+ mutex_unlock(&crtc->dev->mode_config.mutex);
+
+ return NULL;
+}
+
+static int vop_crtc_set_crc_source(struct drm_crtc *crtc,
+ const char *source_name, size_t *values_cnt)
+{
+ struct vop *vop = to_vop(crtc);
+ struct drm_connector *connector;
+ int ret;
+
+ connector = vop_get_edp_connector(vop);
+ if (!connector)
+ return -EINVAL;
+
+ *values_cnt = 3;
+
+ if (source_name && strcmp(source_name, "auto") == 0)
+ ret = analogix_dp_start_crc(connector);
+ else if (!source_name)
+ ret = analogix_dp_stop_crc(connector);
+ else
+ ret = -EINVAL;
+
+ return ret;
+}
+
static const struct drm_crtc_funcs vop_crtc_funcs = {
.set_config = drm_atomic_helper_set_config,
.page_flip = drm_atomic_helper_page_flip,
@@ -1120,6 +1160,7 @@ static const struct drm_crtc_funcs vop_crtc_funcs = {
.atomic_destroy_state = vop_crtc_destroy_state,
.enable_vblank = vop_crtc_enable_vblank,
.disable_vblank = vop_crtc_disable_vblank,
+ .set_crc_source = vop_crtc_set_crc_source,
};
static void vop_fb_unref_worker(struct drm_flip_work *work, void *val)
--
2.9.3
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH v6 4/4] drm/rockchip: Implement CRC debugfs API
2017-03-03 13:39 ` [PATCH v6 4/4] drm/rockchip: Implement CRC debugfs API Tomeu Vizoso
@ 2017-03-06 0:55 ` Mark yao
2017-03-06 17:58 ` Emil Velikov
1 sibling, 0 replies; 8+ messages in thread
From: Mark yao @ 2017-03-06 0:55 UTC (permalink / raw)
To: Tomeu Vizoso, linux-kernel
Cc: Ville Syrjälä, Sean Paul, Thierry Reding,
intel-gfx-trybot, Emil Velikov, Daniel Vetter, Benjamin Gaignard,
Heiko Stuebner, dri-devel, linux-rockchip, David Airlie,
linux-arm-kernel
On 2017年03月03日 21:39, Tomeu Vizoso wrote:
> Implement the .set_crc_source() callback and call the DP helpers
> accordingly to start and stop CRC capture.
>
> This is only done if this CRTC is currently using the eDP connector.
>
> v3: Remove superfluous check on rockchip_crtc_state->output_type
>
> v6: Remove superfluous variable
>
> Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> ---
looks good for me
Acked-by: Mark Yao <mark.yao@rock-chips.com>
> drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 41 +++++++++++++++++++++++++++++
> 1 file changed, 41 insertions(+)
>
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> index 94d7b7327ff7..17ab16c4b922 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> @@ -19,6 +19,7 @@
> #include <drm/drm_crtc_helper.h>
> #include <drm/drm_flip_work.h>
> #include <drm/drm_plane_helper.h>
> +#include <drm/bridge/analogix_dp.h>
>
> #include <linux/kernel.h>
> #include <linux/module.h>
> @@ -1111,6 +1112,45 @@ static void vop_crtc_destroy_state(struct drm_crtc *crtc,
> kfree(s);
> }
>
> +static struct drm_connector *vop_get_edp_connector(struct vop *vop)
> +{
> + struct drm_crtc *crtc = &vop->crtc;
> + struct drm_connector *connector;
> +
> + mutex_lock(&crtc->dev->mode_config.mutex);
> + drm_for_each_connector(connector, crtc->dev)
> + if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) {
> + mutex_unlock(&crtc->dev->mode_config.mutex);
> + return connector;
> + }
> + mutex_unlock(&crtc->dev->mode_config.mutex);
> +
> + return NULL;
> +}
> +
> +static int vop_crtc_set_crc_source(struct drm_crtc *crtc,
> + const char *source_name, size_t *values_cnt)
> +{
> + struct vop *vop = to_vop(crtc);
> + struct drm_connector *connector;
> + int ret;
> +
> + connector = vop_get_edp_connector(vop);
> + if (!connector)
> + return -EINVAL;
> +
> + *values_cnt = 3;
> +
> + if (source_name && strcmp(source_name, "auto") == 0)
> + ret = analogix_dp_start_crc(connector);
> + else if (!source_name)
> + ret = analogix_dp_stop_crc(connector);
> + else
> + ret = -EINVAL;
> +
> + return ret;
> +}
> +
> static const struct drm_crtc_funcs vop_crtc_funcs = {
> .set_config = drm_atomic_helper_set_config,
> .page_flip = drm_atomic_helper_page_flip,
> @@ -1120,6 +1160,7 @@ static const struct drm_crtc_funcs vop_crtc_funcs = {
> .atomic_destroy_state = vop_crtc_destroy_state,
> .enable_vblank = vop_crtc_enable_vblank,
> .disable_vblank = vop_crtc_disable_vblank,
> + .set_crc_source = vop_crtc_set_crc_source,
> };
>
> static void vop_fb_unref_worker(struct drm_flip_work *work, void *val)
--
Mark Yao
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH v6 4/4] drm/rockchip: Implement CRC debugfs API
2017-03-03 13:39 ` [PATCH v6 4/4] drm/rockchip: Implement CRC debugfs API Tomeu Vizoso
2017-03-06 0:55 ` Mark yao
@ 2017-03-06 17:58 ` Emil Velikov
1 sibling, 0 replies; 8+ messages in thread
From: Emil Velikov @ 2017-03-06 17:58 UTC (permalink / raw)
To: Tomeu Vizoso
Cc: Linux-Kernel@Vger. Kernel. Org, Ville Syrjälä,
Sean Paul, Thierry Reding, intel-gfx-trybot, Daniel Vetter,
Benjamin Gaignard, Mark Yao, Heiko Stuebner, ML dri-devel,
linux-rockchip, David Airlie, LAKML
Hi Tomeu,
Pardon for dropping in late.
On 3 March 2017 at 13:39, Tomeu Vizoso <tomeu.vizoso@collabora.com> wrote:
> Implement the .set_crc_source() callback and call the DP helpers
> accordingly to start and stop CRC capture.
>
> This is only done if this CRTC is currently using the eDP connector.
>
> v3: Remove superfluous check on rockchip_crtc_state->output_type
>
> v6: Remove superfluous variable
>
> Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> ---
>
> drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 41 +++++++++++++++++++++++++++++
> 1 file changed, 41 insertions(+)
>
I think this won't fly (build).
Afaict analogix_dp-rockchip.c (as guarded by ROCKCHIP_ANALOGIX_DP) is
the only piece that can/should have DRM_ANALOGIX_DP code. Perhaps
adding a simple wrapper/stubs will be the easier option here ?
-Emil
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v6 0/4] drm/dp: Implement CRC debugfs API
2017-03-03 13:39 [PATCH v6 0/4] drm/dp: Implement CRC debugfs API Tomeu Vizoso
` (3 preceding siblings ...)
2017-03-03 13:39 ` [PATCH v6 4/4] drm/rockchip: Implement CRC debugfs API Tomeu Vizoso
@ 2017-03-06 17:19 ` Sean Paul
4 siblings, 0 replies; 8+ messages in thread
From: Sean Paul @ 2017-03-06 17:19 UTC (permalink / raw)
To: Tomeu Vizoso
Cc: linux-kernel, linux-arm-kernel, Emil Velikov, linux-rockchip,
dri-devel, intel-gfx-trybot, Daniel Vetter
On Fri, Mar 03, 2017 at 02:39:32PM +0100, Tomeu Vizoso wrote:
> Hi,
>
> this series builds up on the API for exposing captured CRCs through
> debugfs.
>
> It adds new DP helpers for starting and stopping CRC capture and gets
> the Rockchip driver to use it.
>
> With these patches, tests in IGT such as kms_pipe_crc_basic and
> kms_plane do pass on RK3288.
>
> In this v6, the backpointer in drm_dp_aux becomes drm_crtc instead of
> drm_connector, following discussion with Sean Paul.
>
> Thanks,
Thanks for respinning this, Tomeu.
Applied to -misc
Sean
>
> Tomeu
>
>
> Tomeu Vizoso (4):
> drm/dp: add crtc backpointer to drm_dp_aux
> drm/dp: add helpers for capture of frame CRCs
> drm/bridge: analogix_dp: add helpers for capture of frame CRCs
> drm/rockchip: Implement CRC debugfs API
>
> drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 22 ++++
> drivers/gpu/drm/drm_dp_helper.c | 126 +++++++++++++++++++++
> drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 41 +++++++
> include/drm/bridge/analogix_dp.h | 3 +
> include/drm/drm_dp_helper.h | 9 ++
> 5 files changed, 201 insertions(+)
>
> --
> 2.9.3
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 8+ messages in thread