* [PATCH v7 0/9] drm: cec: convert DRM drivers to the new notifier API
@ 2019-08-14 10:44 Dariusz Marcinkiewicz
2019-08-14 10:44 ` [PATCH v7 1/9] drm_dp_cec: add connector info support Dariusz Marcinkiewicz
` (2 more replies)
0 siblings, 3 replies; 17+ messages in thread
From: Dariusz Marcinkiewicz @ 2019-08-14 10:44 UTC (permalink / raw)
To: dri-devel, linux-media, hverkuil-cisco
Cc: Dariusz Marcinkiewicz, Alex Deucher, Allison Randal, amd-gfx,
Andrzej Hajda, Chris Wilson, Colin Ian King, Daniel Vetter,
David Francis, Dhinakaran Pandiyan, Douglas Anderson,
Enrico Weigelt, Greg Kroah-Hartman, Hans Verkuil, Harry Wentland,
Imre Deak, intel-gfx, Jani Nikula, Jernej Skrabec
This series updates DRM drivers to use new CEC notifier API.
Changes since v6:
Made CEC notifiers' registration and de-registration symmetric
in tda998x and dw-hdmi drivers. Also, accidentally dropped one
patch in v6 (change to drm_dp_cec), brought it back now.
Changes since v5:
Fixed a warning about a missing comment for a new member of
drm_dp_aux_cec struct. Sending to a wider audience,
including maintainers of respective drivers.
Changes since v4:
Addressing review comments.
Changes since v3:
Updated adapter flags in dw-hdmi-cec.
Changes since v2:
Include all DRM patches from "cec: improve notifier support,
add connector info connector info" series.
Changes since v1:
Those patches delay creation of notifiers until respective
connectors are constructed. It seems that those patches, for a
couple of drivers, by adding the delay, introduce a race between
notifiers' creation and the IRQs handling threads - at least I
don't see anything obvious in there that would explicitly forbid
such races to occur. v2 adds a write barrier to make sure IRQ
threads see the notifier once it is created (replacing the
WRITE_ONCE I put in v1). The best thing to do here, I believe,
would be not to have any synchronization and make sure that an IRQ
only gets enabled after the notifier is created.
Dariusz Marcinkiewicz (9):
drm_dp_cec: add connector info support.
drm/i915/intel_hdmi: use cec_notifier_conn_(un)register
dw-hdmi-cec: use cec_notifier_cec_adap_(un)register
tda9950: use cec_notifier_cec_adap_(un)register
drm: tda998x: use cec_notifier_conn_(un)register
drm: sti: use cec_notifier_conn_(un)register
drm: tegra: use cec_notifier_conn_(un)register
drm: dw-hdmi: use cec_notifier_conn_(un)register
drm: exynos: exynos_hdmi: use cec_notifier_conn_(un)register
.../display/amdgpu_dm/amdgpu_dm_mst_types.c | 2 +-
drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c | 13 +++---
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 46 +++++++++++++------
drivers/gpu/drm/drm_dp_cec.c | 25 ++++++----
drivers/gpu/drm/exynos/exynos_hdmi.c | 31 +++++++------
drivers/gpu/drm/i2c/tda9950.c | 12 ++---
drivers/gpu/drm/i2c/tda998x_drv.c | 36 ++++++++++-----
drivers/gpu/drm/i915/display/intel_dp.c | 4 +-
drivers/gpu/drm/i915/display/intel_hdmi.c | 13 ++++--
drivers/gpu/drm/nouveau/nouveau_connector.c | 3 +-
drivers/gpu/drm/sti/sti_hdmi.c | 19 +++++---
drivers/gpu/drm/tegra/output.c | 28 ++++++++---
include/drm/drm_dp_helper.h | 17 ++++---
13 files changed, 155 insertions(+), 94 deletions(-)
--
2.23.0.rc1.153.gdeed80330f-goog
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH v7 1/9] drm_dp_cec: add connector info support.
2019-08-14 10:44 [PATCH v7 0/9] drm: cec: convert DRM drivers to the new notifier API Dariusz Marcinkiewicz
@ 2019-08-14 10:44 ` Dariusz Marcinkiewicz
2019-08-15 18:10 ` Lyude Paul
` (2 more replies)
2019-08-14 10:45 ` [PATCH v7 2/9] drm/i915/intel_hdmi: use cec_notifier_conn_(un)register Dariusz Marcinkiewicz
2019-08-19 9:38 ` [PATCH v7 0/9] drm: cec: convert DRM drivers to the new notifier API Hans Verkuil
2 siblings, 3 replies; 17+ messages in thread
From: Dariusz Marcinkiewicz @ 2019-08-14 10:44 UTC (permalink / raw)
To: dri-devel, linux-media, hverkuil-cisco
Cc: Dariusz Marcinkiewicz, Harry Wentland, Leo Li, Alex Deucher,
Christian König, David (ChunMing) Zhou, David Airlie,
Daniel Vetter, Maarten Lankhorst, Maxime Ripard, Sean Paul,
Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, Ben Skeggs,
Lyude Paul, Jerry (Fangzhi) Zuo, Anthony Koo, Thomas Lim
Pass the connector info to the CEC adapter. This makes it possible
to associate the CEC adapter with the corresponding drm connector.
Signed-off-by: Dariusz Marcinkiewicz <darekm@google.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
---
.../display/amdgpu_dm/amdgpu_dm_mst_types.c | 2 +-
drivers/gpu/drm/drm_dp_cec.c | 25 ++++++++++++-------
drivers/gpu/drm/i915/display/intel_dp.c | 4 +--
drivers/gpu/drm/nouveau/nouveau_connector.c | 3 +--
include/drm/drm_dp_helper.h | 17 ++++++-------
5 files changed, 27 insertions(+), 24 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
index 16218a202b591..5ec14efd4d8cb 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
@@ -416,7 +416,7 @@ void amdgpu_dm_initialize_dp_connector(struct amdgpu_display_manager *dm,
drm_dp_aux_register(&aconnector->dm_dp_aux.aux);
drm_dp_cec_register_connector(&aconnector->dm_dp_aux.aux,
- aconnector->base.name, dm->adev->dev);
+ &aconnector->base);
aconnector->mst_mgr.cbs = &dm_mst_cbs;
drm_dp_mst_topology_mgr_init(
&aconnector->mst_mgr,
diff --git a/drivers/gpu/drm/drm_dp_cec.c b/drivers/gpu/drm/drm_dp_cec.c
index b15cee85b702b..b457c16c3a8bb 100644
--- a/drivers/gpu/drm/drm_dp_cec.c
+++ b/drivers/gpu/drm/drm_dp_cec.c
@@ -8,7 +8,9 @@
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/slab.h>
+#include <drm/drm_connector.h>
#include <drm/drm_dp_helper.h>
+#include <drm/drmP.h>
#include <media/cec.h>
/*
@@ -295,7 +297,10 @@ static void drm_dp_cec_unregister_work(struct work_struct *work)
*/
void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid)
{
- u32 cec_caps = CEC_CAP_DEFAULTS | CEC_CAP_NEEDS_HPD;
+ struct drm_connector *connector = aux->cec.connector;
+ u32 cec_caps = CEC_CAP_DEFAULTS | CEC_CAP_NEEDS_HPD |
+ CEC_CAP_CONNECTOR_INFO;
+ struct cec_connector_info conn_info;
unsigned int num_las = 1;
u8 cap;
@@ -344,13 +349,17 @@ void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid)
/* Create a new adapter */
aux->cec.adap = cec_allocate_adapter(&drm_dp_cec_adap_ops,
- aux, aux->cec.name, cec_caps,
+ aux, connector->name, cec_caps,
num_las);
if (IS_ERR(aux->cec.adap)) {
aux->cec.adap = NULL;
goto unlock;
}
- if (cec_register_adapter(aux->cec.adap, aux->cec.parent)) {
+
+ cec_fill_conn_info_from_drm(&conn_info, connector);
+ cec_s_conn_info(aux->cec.adap, &conn_info);
+
+ if (cec_register_adapter(aux->cec.adap, connector->dev->dev)) {
cec_delete_adapter(aux->cec.adap);
aux->cec.adap = NULL;
} else {
@@ -406,22 +415,20 @@ EXPORT_SYMBOL(drm_dp_cec_unset_edid);
/**
* drm_dp_cec_register_connector() - register a new connector
* @aux: DisplayPort AUX channel
- * @name: name of the CEC device
- * @parent: parent device
+ * @connector: drm connector
*
* A new connector was registered with associated CEC adapter name and
* CEC adapter parent device. After registering the name and parent
* drm_dp_cec_set_edid() is called to check if the connector supports
* CEC and to register a CEC adapter if that is the case.
*/
-void drm_dp_cec_register_connector(struct drm_dp_aux *aux, const char *name,
- struct device *parent)
+void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
+ struct drm_connector *connector)
{
WARN_ON(aux->cec.adap);
if (WARN_ON(!aux->transfer))
return;
- aux->cec.name = name;
- aux->cec.parent = parent;
+ aux->cec.connector = connector;
INIT_DELAYED_WORK(&aux->cec.unregister_work,
drm_dp_cec_unregister_work);
}
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 1092499115760..de2486fe7bf2d 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -5497,7 +5497,6 @@ static int
intel_dp_connector_register(struct drm_connector *connector)
{
struct intel_dp *intel_dp = intel_attached_dp(connector);
- struct drm_device *dev = connector->dev;
int ret;
ret = intel_connector_register(connector);
@@ -5512,8 +5511,7 @@ intel_dp_connector_register(struct drm_connector *connector)
intel_dp->aux.dev = connector->kdev;
ret = drm_dp_aux_register(&intel_dp->aux);
if (!ret)
- drm_dp_cec_register_connector(&intel_dp->aux,
- connector->name, dev->dev);
+ drm_dp_cec_register_connector(&intel_dp->aux, connector);
return ret;
}
diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
index 330d7d29a6e34..8aa703347eb54 100644
--- a/drivers/gpu/drm/nouveau/nouveau_connector.c
+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
@@ -1416,8 +1416,7 @@ nouveau_connector_create(struct drm_device *dev,
switch (type) {
case DRM_MODE_CONNECTOR_DisplayPort:
case DRM_MODE_CONNECTOR_eDP:
- drm_dp_cec_register_connector(&nv_connector->aux,
- connector->name, dev->dev);
+ drm_dp_cec_register_connector(&nv_connector->aux, connector);
break;
}
diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
index 8364502f92cfe..7972b925a952b 100644
--- a/include/drm/drm_dp_helper.h
+++ b/include/drm/drm_dp_helper.h
@@ -1230,20 +1230,19 @@ struct drm_dp_aux_msg {
struct cec_adapter;
struct edid;
+struct drm_connector;
/**
* struct drm_dp_aux_cec - DisplayPort CEC-Tunneling-over-AUX
* @lock: mutex protecting this struct
* @adap: the CEC adapter for CEC-Tunneling-over-AUX support.
- * @name: name of the CEC adapter
- * @parent: parent device of the CEC adapter
+ * @connector: the connector this CEC adapter is associated with
* @unregister_work: unregister the CEC adapter
*/
struct drm_dp_aux_cec {
struct mutex lock;
struct cec_adapter *adap;
- const char *name;
- struct device *parent;
+ struct drm_connector *connector;
struct delayed_work unregister_work;
};
@@ -1451,8 +1450,8 @@ drm_dp_has_quirk(const struct drm_dp_desc *desc, enum drm_dp_quirk quirk)
#ifdef CONFIG_DRM_DP_CEC
void drm_dp_cec_irq(struct drm_dp_aux *aux);
-void drm_dp_cec_register_connector(struct drm_dp_aux *aux, const char *name,
- struct device *parent);
+void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
+ struct drm_connector *connector);
void drm_dp_cec_unregister_connector(struct drm_dp_aux *aux);
void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid);
void drm_dp_cec_unset_edid(struct drm_dp_aux *aux);
@@ -1461,9 +1460,9 @@ static inline void drm_dp_cec_irq(struct drm_dp_aux *aux)
{
}
-static inline void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
- const char *name,
- struct device *parent)
+static inline void
+drm_dp_cec_register_connector(struct drm_dp_aux *aux,
+ struct drm_connector *connector)
{
}
--
2.23.0.rc1.153.gdeed80330f-goog
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH v7 2/9] drm/i915/intel_hdmi: use cec_notifier_conn_(un)register
2019-08-14 10:44 [PATCH v7 0/9] drm: cec: convert DRM drivers to the new notifier API Dariusz Marcinkiewicz
2019-08-14 10:44 ` [PATCH v7 1/9] drm_dp_cec: add connector info support Dariusz Marcinkiewicz
@ 2019-08-14 10:45 ` Dariusz Marcinkiewicz
2019-08-22 8:03 ` Hans Verkuil
2019-08-26 12:08 ` Ville Syrjälä
2019-08-19 9:38 ` [PATCH v7 0/9] drm: cec: convert DRM drivers to the new notifier API Hans Verkuil
2 siblings, 2 replies; 17+ messages in thread
From: Dariusz Marcinkiewicz @ 2019-08-14 10:45 UTC (permalink / raw)
To: dri-devel, linux-media, hverkuil-cisco
Cc: Dariusz Marcinkiewicz, Jani Nikula, Joonas Lahtinen, Rodrigo Vivi,
David Airlie, Daniel Vetter, Ville Syrjälä,
Chris Wilson, Maarten Lankhorst, Shashank Sharma, Ramalingam C,
intel-gfx, linux-kernel
Use the new cec_notifier_conn_(un)register() functions to
(un)register the notifier for the HDMI connector, and fill in
the cec_connector_info.
Signed-off-by: Dariusz Marcinkiewicz <darekm@google.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
---
drivers/gpu/drm/i915/display/intel_hdmi.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
index b1ca8e5bdb56d..9fcf2c58c29c5 100644
--- a/drivers/gpu/drm/i915/display/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
@@ -2752,8 +2752,9 @@ intel_hdmi_connector_register(struct drm_connector *connector)
static void intel_hdmi_destroy(struct drm_connector *connector)
{
- if (intel_attached_hdmi(connector)->cec_notifier)
- cec_notifier_put(intel_attached_hdmi(connector)->cec_notifier);
+ struct cec_notifier *n = intel_attached_hdmi(connector)->cec_notifier;
+
+ cec_notifier_conn_unregister(n);
intel_connector_destroy(connector);
}
@@ -3068,6 +3069,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
struct drm_device *dev = intel_encoder->base.dev;
struct drm_i915_private *dev_priv = to_i915(dev);
enum port port = intel_encoder->port;
+ struct cec_connector_info conn_info;
DRM_DEBUG_KMS("Adding HDMI connector on port %c\n",
port_name(port));
@@ -3120,8 +3122,11 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
I915_WRITE(PEG_BAND_GAP_DATA, (temp & ~0xf) | 0xd);
}
- intel_hdmi->cec_notifier = cec_notifier_get_conn(dev->dev,
- port_identifier(port));
+ cec_fill_conn_info_from_drm(&conn_info, connector);
+
+ intel_hdmi->cec_notifier =
+ cec_notifier_conn_register(dev->dev, port_identifier(port),
+ &conn_info);
if (!intel_hdmi->cec_notifier)
DRM_DEBUG_KMS("CEC notifier get failed\n");
}
--
2.23.0.rc1.153.gdeed80330f-goog
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH v7 1/9] drm_dp_cec: add connector info support.
2019-08-14 10:44 ` [PATCH v7 1/9] drm_dp_cec: add connector info support Dariusz Marcinkiewicz
@ 2019-08-15 18:10 ` Lyude Paul
2019-08-26 9:05 ` Ben Skeggs
2019-08-22 8:08 ` Hans Verkuil
2019-08-28 15:05 ` Ville Syrjälä
2 siblings, 1 reply; 17+ messages in thread
From: Lyude Paul @ 2019-08-15 18:10 UTC (permalink / raw)
To: Dariusz Marcinkiewicz, dri-devel, linux-media, hverkuil-cisco
Cc: Harry Wentland, Leo Li, Alex Deucher, Christian König,
David (ChunMing) Zhou, David Airlie, Daniel Vetter,
Maarten Lankhorst, Maxime Ripard, Sean Paul, Jani Nikula,
Joonas Lahtinen, Rodrigo Vivi, Ben Skeggs, Jerry (Fangzhi) Zuo,
Anthony Koo, Thomas Lim, David Francis
Reviewed-by: Lyude Paul <lyude@redhat.com>
On Wed, 2019-08-14 at 12:44 +0200, Dariusz Marcinkiewicz wrote:
> Pass the connector info to the CEC adapter. This makes it possible
> to associate the CEC adapter with the corresponding drm connector.
>
> Signed-off-by: Dariusz Marcinkiewicz <darekm@google.com>
> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
> Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
> ---
> .../display/amdgpu_dm/amdgpu_dm_mst_types.c | 2 +-
> drivers/gpu/drm/drm_dp_cec.c | 25 ++++++++++++-------
> drivers/gpu/drm/i915/display/intel_dp.c | 4 +--
> drivers/gpu/drm/nouveau/nouveau_connector.c | 3 +--
> include/drm/drm_dp_helper.h | 17 ++++++-------
> 5 files changed, 27 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> index 16218a202b591..5ec14efd4d8cb 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> @@ -416,7 +416,7 @@ void amdgpu_dm_initialize_dp_connector(struct
> amdgpu_display_manager *dm,
>
> drm_dp_aux_register(&aconnector->dm_dp_aux.aux);
> drm_dp_cec_register_connector(&aconnector->dm_dp_aux.aux,
> - aconnector->base.name, dm->adev->dev);
> + &aconnector->base);
> aconnector->mst_mgr.cbs = &dm_mst_cbs;
> drm_dp_mst_topology_mgr_init(
> &aconnector->mst_mgr,
> diff --git a/drivers/gpu/drm/drm_dp_cec.c b/drivers/gpu/drm/drm_dp_cec.c
> index b15cee85b702b..b457c16c3a8bb 100644
> --- a/drivers/gpu/drm/drm_dp_cec.c
> +++ b/drivers/gpu/drm/drm_dp_cec.c
> @@ -8,7 +8,9 @@
> #include <linux/kernel.h>
> #include <linux/module.h>
> #include <linux/slab.h>
> +#include <drm/drm_connector.h>
> #include <drm/drm_dp_helper.h>
> +#include <drm/drmP.h>
> #include <media/cec.h>
>
> /*
> @@ -295,7 +297,10 @@ static void drm_dp_cec_unregister_work(struct work_struct
> *work)
> */
> void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid)
> {
> - u32 cec_caps = CEC_CAP_DEFAULTS | CEC_CAP_NEEDS_HPD;
> + struct drm_connector *connector = aux->cec.connector;
> + u32 cec_caps = CEC_CAP_DEFAULTS | CEC_CAP_NEEDS_HPD |
> + CEC_CAP_CONNECTOR_INFO;
> + struct cec_connector_info conn_info;
> unsigned int num_las = 1;
> u8 cap;
>
> @@ -344,13 +349,17 @@ void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const
> struct edid *edid)
>
> /* Create a new adapter */
> aux->cec.adap = cec_allocate_adapter(&drm_dp_cec_adap_ops,
> - aux, aux->cec.name, cec_caps,
> + aux, connector->name, cec_caps,
> num_las);
> if (IS_ERR(aux->cec.adap)) {
> aux->cec.adap = NULL;
> goto unlock;
> }
> - if (cec_register_adapter(aux->cec.adap, aux->cec.parent)) {
> +
> + cec_fill_conn_info_from_drm(&conn_info, connector);
> + cec_s_conn_info(aux->cec.adap, &conn_info);
> +
> + if (cec_register_adapter(aux->cec.adap, connector->dev->dev)) {
> cec_delete_adapter(aux->cec.adap);
> aux->cec.adap = NULL;
> } else {
> @@ -406,22 +415,20 @@ EXPORT_SYMBOL(drm_dp_cec_unset_edid);
> /**
> * drm_dp_cec_register_connector() - register a new connector
> * @aux: DisplayPort AUX channel
> - * @name: name of the CEC device
> - * @parent: parent device
> + * @connector: drm connector
> *
> * A new connector was registered with associated CEC adapter name and
> * CEC adapter parent device. After registering the name and parent
> * drm_dp_cec_set_edid() is called to check if the connector supports
> * CEC and to register a CEC adapter if that is the case.
> */
> -void drm_dp_cec_register_connector(struct drm_dp_aux *aux, const char *name,
> - struct device *parent)
> +void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
> + struct drm_connector *connector)
> {
> WARN_ON(aux->cec.adap);
> if (WARN_ON(!aux->transfer))
> return;
> - aux->cec.name = name;
> - aux->cec.parent = parent;
> + aux->cec.connector = connector;
> INIT_DELAYED_WORK(&aux->cec.unregister_work,
> drm_dp_cec_unregister_work);
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index 1092499115760..de2486fe7bf2d 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -5497,7 +5497,6 @@ static int
> intel_dp_connector_register(struct drm_connector *connector)
> {
> struct intel_dp *intel_dp = intel_attached_dp(connector);
> - struct drm_device *dev = connector->dev;
> int ret;
>
> ret = intel_connector_register(connector);
> @@ -5512,8 +5511,7 @@ intel_dp_connector_register(struct drm_connector
> *connector)
> intel_dp->aux.dev = connector->kdev;
> ret = drm_dp_aux_register(&intel_dp->aux);
> if (!ret)
> - drm_dp_cec_register_connector(&intel_dp->aux,
> - connector->name, dev->dev);
> + drm_dp_cec_register_connector(&intel_dp->aux, connector);
> return ret;
> }
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c
> b/drivers/gpu/drm/nouveau/nouveau_connector.c
> index 330d7d29a6e34..8aa703347eb54 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_connector.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
> @@ -1416,8 +1416,7 @@ nouveau_connector_create(struct drm_device *dev,
> switch (type) {
> case DRM_MODE_CONNECTOR_DisplayPort:
> case DRM_MODE_CONNECTOR_eDP:
> - drm_dp_cec_register_connector(&nv_connector->aux,
> - connector->name, dev->dev);
> + drm_dp_cec_register_connector(&nv_connector->aux, connector);
> break;
> }
>
> diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
> index 8364502f92cfe..7972b925a952b 100644
> --- a/include/drm/drm_dp_helper.h
> +++ b/include/drm/drm_dp_helper.h
> @@ -1230,20 +1230,19 @@ struct drm_dp_aux_msg {
>
> struct cec_adapter;
> struct edid;
> +struct drm_connector;
>
> /**
> * struct drm_dp_aux_cec - DisplayPort CEC-Tunneling-over-AUX
> * @lock: mutex protecting this struct
> * @adap: the CEC adapter for CEC-Tunneling-over-AUX support.
> - * @name: name of the CEC adapter
> - * @parent: parent device of the CEC adapter
> + * @connector: the connector this CEC adapter is associated with
> * @unregister_work: unregister the CEC adapter
> */
> struct drm_dp_aux_cec {
> struct mutex lock;
> struct cec_adapter *adap;
> - const char *name;
> - struct device *parent;
> + struct drm_connector *connector;
> struct delayed_work unregister_work;
> };
>
> @@ -1451,8 +1450,8 @@ drm_dp_has_quirk(const struct drm_dp_desc *desc, enum
> drm_dp_quirk quirk)
>
> #ifdef CONFIG_DRM_DP_CEC
> void drm_dp_cec_irq(struct drm_dp_aux *aux);
> -void drm_dp_cec_register_connector(struct drm_dp_aux *aux, const char *name,
> - struct device *parent);
> +void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
> + struct drm_connector *connector);
> void drm_dp_cec_unregister_connector(struct drm_dp_aux *aux);
> void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid);
> void drm_dp_cec_unset_edid(struct drm_dp_aux *aux);
> @@ -1461,9 +1460,9 @@ static inline void drm_dp_cec_irq(struct drm_dp_aux
> *aux)
> {
> }
>
> -static inline void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
> - const char *name,
> - struct device *parent)
> +static inline void
> +drm_dp_cec_register_connector(struct drm_dp_aux *aux,
> + struct drm_connector *connector)
> {
> }
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v7 0/9] drm: cec: convert DRM drivers to the new notifier API
2019-08-14 10:44 [PATCH v7 0/9] drm: cec: convert DRM drivers to the new notifier API Dariusz Marcinkiewicz
2019-08-14 10:44 ` [PATCH v7 1/9] drm_dp_cec: add connector info support Dariusz Marcinkiewicz
2019-08-14 10:45 ` [PATCH v7 2/9] drm/i915/intel_hdmi: use cec_notifier_conn_(un)register Dariusz Marcinkiewicz
@ 2019-08-19 9:38 ` Hans Verkuil
2019-08-19 11:28 ` Dariusz Marcinkiewicz
2019-08-19 14:48 ` Neil Armstrong
2 siblings, 2 replies; 17+ messages in thread
From: Hans Verkuil @ 2019-08-19 9:38 UTC (permalink / raw)
To: Dariusz Marcinkiewicz, dri-devel, linux-media
Cc: Kate Stewart, Neil Armstrong, Daniel Vetter, Hans Verkuil,
Dhinakaran Pandiyan, Sam Ravnborg, linux-samsung-soc,
David Francis, amd-gfx, Leo Li, Jerry (Fangzhi) Zuo,
linux-arm-kernel, nouveau, Jonas Karlman, Jani Nikula, intel-gfx,
Russell King, Sean Paul, Rodrigo Vivi, linux-tegra
Hi all,
The patches in this series can be applied independently from each other.
If you maintain one of these drivers and you want to merge it for v5.4
yourself, then please do so and let me know. If you prefer I commit it
to drm-misc, then please review and (hopefully) Ack the patch.
I would really like to get this in for v5.4 so I can get the userspace
bits in for v5.4 as well through the media subsystem.
Dariusz, can you post a v7.1 for patch 5/9 fixing the typo?
Thanks!
Hans
On 8/14/19 12:44 PM, Dariusz Marcinkiewicz wrote:
> This series updates DRM drivers to use new CEC notifier API.
>
> Changes since v6:
> Made CEC notifiers' registration and de-registration symmetric
> in tda998x and dw-hdmi drivers. Also, accidentally dropped one
> patch in v6 (change to drm_dp_cec), brought it back now.
> Changes since v5:
> Fixed a warning about a missing comment for a new member of
> drm_dp_aux_cec struct. Sending to a wider audience,
> including maintainers of respective drivers.
> Changes since v4:
> Addressing review comments.
> Changes since v3:
> Updated adapter flags in dw-hdmi-cec.
> Changes since v2:
> Include all DRM patches from "cec: improve notifier support,
> add connector info connector info" series.
> Changes since v1:
> Those patches delay creation of notifiers until respective
> connectors are constructed. It seems that those patches, for a
> couple of drivers, by adding the delay, introduce a race between
> notifiers' creation and the IRQs handling threads - at least I
> don't see anything obvious in there that would explicitly forbid
> such races to occur. v2 adds a write barrier to make sure IRQ
> threads see the notifier once it is created (replacing the
> WRITE_ONCE I put in v1). The best thing to do here, I believe,
> would be not to have any synchronization and make sure that an IRQ
> only gets enabled after the notifier is created.
> Dariusz Marcinkiewicz (9):
> drm_dp_cec: add connector info support.
> drm/i915/intel_hdmi: use cec_notifier_conn_(un)register
> dw-hdmi-cec: use cec_notifier_cec_adap_(un)register
> tda9950: use cec_notifier_cec_adap_(un)register
> drm: tda998x: use cec_notifier_conn_(un)register
> drm: sti: use cec_notifier_conn_(un)register
> drm: tegra: use cec_notifier_conn_(un)register
> drm: dw-hdmi: use cec_notifier_conn_(un)register
> drm: exynos: exynos_hdmi: use cec_notifier_conn_(un)register
>
> .../display/amdgpu_dm/amdgpu_dm_mst_types.c | 2 +-
> drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c | 13 +++---
> drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 46 +++++++++++++------
> drivers/gpu/drm/drm_dp_cec.c | 25 ++++++----
> drivers/gpu/drm/exynos/exynos_hdmi.c | 31 +++++++------
> drivers/gpu/drm/i2c/tda9950.c | 12 ++---
> drivers/gpu/drm/i2c/tda998x_drv.c | 36 ++++++++++-----
> drivers/gpu/drm/i915/display/intel_dp.c | 4 +-
> drivers/gpu/drm/i915/display/intel_hdmi.c | 13 ++++--
> drivers/gpu/drm/nouveau/nouveau_connector.c | 3 +-
> drivers/gpu/drm/sti/sti_hdmi.c | 19 +++++---
> drivers/gpu/drm/tegra/output.c | 28 ++++++++---
> include/drm/drm_dp_helper.h | 17 ++++---
> 13 files changed, 155 insertions(+), 94 deletions(-)
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v7 0/9] drm: cec: convert DRM drivers to the new notifier API
2019-08-19 9:38 ` [PATCH v7 0/9] drm: cec: convert DRM drivers to the new notifier API Hans Verkuil
@ 2019-08-19 11:28 ` Dariusz Marcinkiewicz
2019-08-19 12:00 ` Hans Verkuil
2019-08-19 14:48 ` Neil Armstrong
1 sibling, 1 reply; 17+ messages in thread
From: Dariusz Marcinkiewicz @ 2019-08-19 11:28 UTC (permalink / raw)
To: Hans Verkuil
Cc: dri-devel, linux-media, Kate Stewart, Neil Armstrong,
Daniel Vetter, Hans Verkuil, Dhinakaran Pandiyan, Sam Ravnborg,
linux-samsung-soc, David Francis, amd-gfx, Leo Li,
Jerry (Fangzhi) Zuo, linux-arm-kernel, nouveau, Jonas Karlman,
Jani Nikula, intel-gfx, Russell King, Sean Paul,
Rodrigo Vivi <rodrigo.v>
On Mon, Aug 19, 2019 at 11:38 AM Hans Verkuil <hverkuil-cisco@xs4all.nl> wrote:
>
> Hi all,
>
Hi Hans.
> The patches in this series can be applied independently from each other.
>
> If you maintain one of these drivers and you want to merge it for v5.4
> yourself, then please do so and let me know. If you prefer I commit it
> to drm-misc, then please review and (hopefully) Ack the patch.
>
> I would really like to get this in for v5.4 so I can get the userspace
> bits in for v5.4 as well through the media subsystem.
>
> Dariusz, can you post a v7.1 for patch 5/9 fixing the typo?
>
Done.
I think it would be good to test v7 changes to dw-hdmi and tda998x on
a real hardware. Hans, do you think you would be able to test those?
Thank you.
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v7 0/9] drm: cec: convert DRM drivers to the new notifier API
2019-08-19 11:28 ` Dariusz Marcinkiewicz
@ 2019-08-19 12:00 ` Hans Verkuil
0 siblings, 0 replies; 17+ messages in thread
From: Hans Verkuil @ 2019-08-19 12:00 UTC (permalink / raw)
To: Dariusz Marcinkiewicz
Cc: dri-devel, linux-media, Kate Stewart, Neil Armstrong,
Daniel Vetter, Hans Verkuil, Dhinakaran Pandiyan, Sam Ravnborg,
linux-samsung-soc, David Francis, amd-gfx, Leo Li,
Jerry (Fangzhi) Zuo, linux-arm-kernel, nouveau, Jonas Karlman,
Jani Nikula, intel-gfx, Russell King, Sean Paul,
Rodrigo Vivi <rodrigo.v>
On 8/19/19 1:28 PM, Dariusz Marcinkiewicz wrote:
> On Mon, Aug 19, 2019 at 11:38 AM Hans Verkuil <hverkuil-cisco@xs4all.nl> wrote:
>>
>> Hi all,
>>
> Hi Hans.
>> The patches in this series can be applied independently from each other.
>>
>> If you maintain one of these drivers and you want to merge it for v5.4
>> yourself, then please do so and let me know. If you prefer I commit it
>> to drm-misc, then please review and (hopefully) Ack the patch.
>>
>> I would really like to get this in for v5.4 so I can get the userspace
>> bits in for v5.4 as well through the media subsystem.
>>
>> Dariusz, can you post a v7.1 for patch 5/9 fixing the typo?
>>
> Done.
>
> I think it would be good to test v7 changes to dw-hdmi and tda998x on
> a real hardware. Hans, do you think you would be able to test those?
>
> Thank you.
>
I'll try to do this for dw-hdmi today, but the tda998x testing will have to wait
until next week.
Regards,
Hans
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v7 0/9] drm: cec: convert DRM drivers to the new notifier API
2019-08-19 9:38 ` [PATCH v7 0/9] drm: cec: convert DRM drivers to the new notifier API Hans Verkuil
2019-08-19 11:28 ` Dariusz Marcinkiewicz
@ 2019-08-19 14:48 ` Neil Armstrong
2019-08-19 14:55 ` Hans Verkuil
1 sibling, 1 reply; 17+ messages in thread
From: Neil Armstrong @ 2019-08-19 14:48 UTC (permalink / raw)
To: Hans Verkuil, Dariusz Marcinkiewicz, dri-devel, linux-media
Cc: Kate Stewart, Daniel Vetter, linux-kernel, Hans Verkuil,
Dhinakaran Pandiyan, Sam Ravnborg, linux-samsung-soc,
David Francis, amd-gfx, Jani Nikula, Jerry (Fangzhi) Zuo,
linux-arm-kernel, nouveau, Jonas Karlman, Leo Li, intel-gfx,
Russell King, Sean Paul, Rodrigo Vivi, linux-tegra,
Thomas Gleixner, Allison Randal, Thomas Lim, Jernej Skrabec
Hi Dariusz, Hans,
I can apply the dw-hdmi patches if necessary.
Neil
On 19/08/2019 11:38, Hans Verkuil wrote:
> Hi all,
>
> The patches in this series can be applied independently from each other.
>
> If you maintain one of these drivers and you want to merge it for v5.4
> yourself, then please do so and let me know. If you prefer I commit it
> to drm-misc, then please review and (hopefully) Ack the patch.
>
> I would really like to get this in for v5.4 so I can get the userspace
> bits in for v5.4 as well through the media subsystem.
>
> Dariusz, can you post a v7.1 for patch 5/9 fixing the typo?
>
> Thanks!
>
> Hans
>
> On 8/14/19 12:44 PM, Dariusz Marcinkiewicz wrote:
>> This series updates DRM drivers to use new CEC notifier API.
>>
>> Changes since v6:
>> Made CEC notifiers' registration and de-registration symmetric
>> in tda998x and dw-hdmi drivers. Also, accidentally dropped one
>> patch in v6 (change to drm_dp_cec), brought it back now.
>> Changes since v5:
>> Fixed a warning about a missing comment for a new member of
>> drm_dp_aux_cec struct. Sending to a wider audience,
>> including maintainers of respective drivers.
>> Changes since v4:
>> Addressing review comments.
>> Changes since v3:
>> Updated adapter flags in dw-hdmi-cec.
>> Changes since v2:
>> Include all DRM patches from "cec: improve notifier support,
>> add connector info connector info" series.
>> Changes since v1:
>> Those patches delay creation of notifiers until respective
>> connectors are constructed. It seems that those patches, for a
>> couple of drivers, by adding the delay, introduce a race between
>> notifiers' creation and the IRQs handling threads - at least I
>> don't see anything obvious in there that would explicitly forbid
>> such races to occur. v2 adds a write barrier to make sure IRQ
>> threads see the notifier once it is created (replacing the
>> WRITE_ONCE I put in v1). The best thing to do here, I believe,
>> would be not to have any synchronization and make sure that an IRQ
>> only gets enabled after the notifier is created.
>> Dariusz Marcinkiewicz (9):
>> drm_dp_cec: add connector info support.
>> drm/i915/intel_hdmi: use cec_notifier_conn_(un)register
>> dw-hdmi-cec: use cec_notifier_cec_adap_(un)register
>> tda9950: use cec_notifier_cec_adap_(un)register
>> drm: tda998x: use cec_notifier_conn_(un)register
>> drm: sti: use cec_notifier_conn_(un)register
>> drm: tegra: use cec_notifier_conn_(un)register
>> drm: dw-hdmi: use cec_notifier_conn_(un)register
>> drm: exynos: exynos_hdmi: use cec_notifier_conn_(un)register
>>
>> .../display/amdgpu_dm/amdgpu_dm_mst_types.c | 2 +-
>> drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c | 13 +++---
>> drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 46 +++++++++++++------
>> drivers/gpu/drm/drm_dp_cec.c | 25 ++++++----
>> drivers/gpu/drm/exynos/exynos_hdmi.c | 31 +++++++------
>> drivers/gpu/drm/i2c/tda9950.c | 12 ++---
>> drivers/gpu/drm/i2c/tda998x_drv.c | 36 ++++++++++-----
>> drivers/gpu/drm/i915/display/intel_dp.c | 4 +-
>> drivers/gpu/drm/i915/display/intel_hdmi.c | 13 ++++--
>> drivers/gpu/drm/nouveau/nouveau_connector.c | 3 +-
>> drivers/gpu/drm/sti/sti_hdmi.c | 19 +++++---
>> drivers/gpu/drm/tegra/output.c | 28 ++++++++---
>> include/drm/drm_dp_helper.h | 17 ++++---
>> 13 files changed, 155 insertions(+), 94 deletions(-)
>>
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v7 0/9] drm: cec: convert DRM drivers to the new notifier API
2019-08-19 14:48 ` Neil Armstrong
@ 2019-08-19 14:55 ` Hans Verkuil
0 siblings, 0 replies; 17+ messages in thread
From: Hans Verkuil @ 2019-08-19 14:55 UTC (permalink / raw)
To: Neil Armstrong, Dariusz Marcinkiewicz, dri-devel, linux-media
Cc: Kate Stewart, Daniel Vetter, Hans Verkuil, Dhinakaran Pandiyan,
Sam Ravnborg, linux-samsung-soc, David Francis, amd-gfx, Leo Li,
Jerry (Fangzhi) Zuo, linux-arm-kernel, nouveau, Jonas Karlman,
Jani Nikula, intel-gfx, Russell King, Sean Paul, Rodrigo Vivi,
linux-tegra, Thomas Gleixner, Allison Randal <allis>
On 8/19/19 4:48 PM, Neil Armstrong wrote:
> Hi Dariusz, Hans,
>
> I can apply the dw-hdmi patches if necessary.
I'd appreciate it if you can do that.
Thanks,
Hans
>
> Neil
>
> On 19/08/2019 11:38, Hans Verkuil wrote:
>> Hi all,
>>
>> The patches in this series can be applied independently from each other.
>>
>> If you maintain one of these drivers and you want to merge it for v5.4
>> yourself, then please do so and let me know. If you prefer I commit it
>> to drm-misc, then please review and (hopefully) Ack the patch.
>>
>> I would really like to get this in for v5.4 so I can get the userspace
>> bits in for v5.4 as well through the media subsystem.
>>
>> Dariusz, can you post a v7.1 for patch 5/9 fixing the typo?
>>
>> Thanks!
>>
>> Hans
>>
>> On 8/14/19 12:44 PM, Dariusz Marcinkiewicz wrote:
>>> This series updates DRM drivers to use new CEC notifier API.
>>>
>>> Changes since v6:
>>> Made CEC notifiers' registration and de-registration symmetric
>>> in tda998x and dw-hdmi drivers. Also, accidentally dropped one
>>> patch in v6 (change to drm_dp_cec), brought it back now.
>>> Changes since v5:
>>> Fixed a warning about a missing comment for a new member of
>>> drm_dp_aux_cec struct. Sending to a wider audience,
>>> including maintainers of respective drivers.
>>> Changes since v4:
>>> Addressing review comments.
>>> Changes since v3:
>>> Updated adapter flags in dw-hdmi-cec.
>>> Changes since v2:
>>> Include all DRM patches from "cec: improve notifier support,
>>> add connector info connector info" series.
>>> Changes since v1:
>>> Those patches delay creation of notifiers until respective
>>> connectors are constructed. It seems that those patches, for a
>>> couple of drivers, by adding the delay, introduce a race between
>>> notifiers' creation and the IRQs handling threads - at least I
>>> don't see anything obvious in there that would explicitly forbid
>>> such races to occur. v2 adds a write barrier to make sure IRQ
>>> threads see the notifier once it is created (replacing the
>>> WRITE_ONCE I put in v1). The best thing to do here, I believe,
>>> would be not to have any synchronization and make sure that an IRQ
>>> only gets enabled after the notifier is created.
>>> Dariusz Marcinkiewicz (9):
>>> drm_dp_cec: add connector info support.
>>> drm/i915/intel_hdmi: use cec_notifier_conn_(un)register
>>> dw-hdmi-cec: use cec_notifier_cec_adap_(un)register
>>> tda9950: use cec_notifier_cec_adap_(un)register
>>> drm: tda998x: use cec_notifier_conn_(un)register
>>> drm: sti: use cec_notifier_conn_(un)register
>>> drm: tegra: use cec_notifier_conn_(un)register
>>> drm: dw-hdmi: use cec_notifier_conn_(un)register
>>> drm: exynos: exynos_hdmi: use cec_notifier_conn_(un)register
>>>
>>> .../display/amdgpu_dm/amdgpu_dm_mst_types.c | 2 +-
>>> drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c | 13 +++---
>>> drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 46 +++++++++++++------
>>> drivers/gpu/drm/drm_dp_cec.c | 25 ++++++----
>>> drivers/gpu/drm/exynos/exynos_hdmi.c | 31 +++++++------
>>> drivers/gpu/drm/i2c/tda9950.c | 12 ++---
>>> drivers/gpu/drm/i2c/tda998x_drv.c | 36 ++++++++++-----
>>> drivers/gpu/drm/i915/display/intel_dp.c | 4 +-
>>> drivers/gpu/drm/i915/display/intel_hdmi.c | 13 ++++--
>>> drivers/gpu/drm/nouveau/nouveau_connector.c | 3 +-
>>> drivers/gpu/drm/sti/sti_hdmi.c | 19 +++++---
>>> drivers/gpu/drm/tegra/output.c | 28 ++++++++---
>>> include/drm/drm_dp_helper.h | 17 ++++---
>>> 13 files changed, 155 insertions(+), 94 deletions(-)
>>>
>>
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v7 2/9] drm/i915/intel_hdmi: use cec_notifier_conn_(un)register
2019-08-14 10:45 ` [PATCH v7 2/9] drm/i915/intel_hdmi: use cec_notifier_conn_(un)register Dariusz Marcinkiewicz
@ 2019-08-22 8:03 ` Hans Verkuil
2019-08-26 8:59 ` Hans Verkuil
2019-08-26 12:08 ` Ville Syrjälä
1 sibling, 1 reply; 17+ messages in thread
From: Hans Verkuil @ 2019-08-22 8:03 UTC (permalink / raw)
To: Dariusz Marcinkiewicz, dri-devel, linux-media
Cc: David Airlie, intel-gfx, linux-kernel, Rodrigo Vivi,
Ville Syrjälä
Ville or Rodrigo,
Can one of you either merge this patch or Ack it so that I can merge this?
Thank you!
Regards,
Hans
On 8/14/19 12:45 PM, Dariusz Marcinkiewicz wrote:
> Use the new cec_notifier_conn_(un)register() functions to
> (un)register the notifier for the HDMI connector, and fill in
> the cec_connector_info.
>
> Signed-off-by: Dariusz Marcinkiewicz <darekm@google.com>
> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
> Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
> ---
> drivers/gpu/drm/i915/display/intel_hdmi.c | 13 +++++++++----
> 1 file changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
> index b1ca8e5bdb56d..9fcf2c58c29c5 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
> @@ -2752,8 +2752,9 @@ intel_hdmi_connector_register(struct drm_connector *connector)
>
> static void intel_hdmi_destroy(struct drm_connector *connector)
> {
> - if (intel_attached_hdmi(connector)->cec_notifier)
> - cec_notifier_put(intel_attached_hdmi(connector)->cec_notifier);
> + struct cec_notifier *n = intel_attached_hdmi(connector)->cec_notifier;
> +
> + cec_notifier_conn_unregister(n);
>
> intel_connector_destroy(connector);
> }
> @@ -3068,6 +3069,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
> struct drm_device *dev = intel_encoder->base.dev;
> struct drm_i915_private *dev_priv = to_i915(dev);
> enum port port = intel_encoder->port;
> + struct cec_connector_info conn_info;
>
> DRM_DEBUG_KMS("Adding HDMI connector on port %c\n",
> port_name(port));
> @@ -3120,8 +3122,11 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
> I915_WRITE(PEG_BAND_GAP_DATA, (temp & ~0xf) | 0xd);
> }
>
> - intel_hdmi->cec_notifier = cec_notifier_get_conn(dev->dev,
> - port_identifier(port));
> + cec_fill_conn_info_from_drm(&conn_info, connector);
> +
> + intel_hdmi->cec_notifier =
> + cec_notifier_conn_register(dev->dev, port_identifier(port),
> + &conn_info);
> if (!intel_hdmi->cec_notifier)
> DRM_DEBUG_KMS("CEC notifier get failed\n");
> }
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v7 1/9] drm_dp_cec: add connector info support.
2019-08-14 10:44 ` [PATCH v7 1/9] drm_dp_cec: add connector info support Dariusz Marcinkiewicz
2019-08-15 18:10 ` Lyude Paul
@ 2019-08-22 8:08 ` Hans Verkuil
[not found] ` <38cda4f5-3299-2bd4-65f5-9a0f948902c6-qWit8jRvyhVmR6Xm/wNWPw@public.gmane.org>
2019-08-26 9:00 ` Hans Verkuil
2019-08-28 15:05 ` Ville Syrjälä
2 siblings, 2 replies; 17+ messages in thread
From: Hans Verkuil @ 2019-08-22 8:08 UTC (permalink / raw)
To: Dariusz Marcinkiewicz, dri-devel, linux-media
Cc: David Airlie, nouveau, Dhinakaran Pandiyan, Anthony Koo,
David Francis, amd-gfx, Jerry (Fangzhi) Zuo, Ben Skeggs, Leo Li,
intel-gfx, Maxime Ripard, Rodrigo Vivi, Sean Paul, Thomas Lim,
linux-kernel, Manasi Navare, Alex Deucher, Christian König,
Ville Syrjälä
Alex, Ville/Rodrigo, Ben,
Can you (hopefully) Ack this patch so that I can merge it?
Thank you!
Hans
On 8/14/19 12:44 PM, Dariusz Marcinkiewicz wrote:
> Pass the connector info to the CEC adapter. This makes it possible
> to associate the CEC adapter with the corresponding drm connector.
>
> Signed-off-by: Dariusz Marcinkiewicz <darekm@google.com>
> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
> Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
> ---
> .../display/amdgpu_dm/amdgpu_dm_mst_types.c | 2 +-
> drivers/gpu/drm/drm_dp_cec.c | 25 ++++++++++++-------
> drivers/gpu/drm/i915/display/intel_dp.c | 4 +--
> drivers/gpu/drm/nouveau/nouveau_connector.c | 3 +--
> include/drm/drm_dp_helper.h | 17 ++++++-------
> 5 files changed, 27 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> index 16218a202b591..5ec14efd4d8cb 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> @@ -416,7 +416,7 @@ void amdgpu_dm_initialize_dp_connector(struct amdgpu_display_manager *dm,
>
> drm_dp_aux_register(&aconnector->dm_dp_aux.aux);
> drm_dp_cec_register_connector(&aconnector->dm_dp_aux.aux,
> - aconnector->base.name, dm->adev->dev);
> + &aconnector->base);
> aconnector->mst_mgr.cbs = &dm_mst_cbs;
> drm_dp_mst_topology_mgr_init(
> &aconnector->mst_mgr,
> diff --git a/drivers/gpu/drm/drm_dp_cec.c b/drivers/gpu/drm/drm_dp_cec.c
> index b15cee85b702b..b457c16c3a8bb 100644
> --- a/drivers/gpu/drm/drm_dp_cec.c
> +++ b/drivers/gpu/drm/drm_dp_cec.c
> @@ -8,7 +8,9 @@
> #include <linux/kernel.h>
> #include <linux/module.h>
> #include <linux/slab.h>
> +#include <drm/drm_connector.h>
> #include <drm/drm_dp_helper.h>
> +#include <drm/drmP.h>
> #include <media/cec.h>
>
> /*
> @@ -295,7 +297,10 @@ static void drm_dp_cec_unregister_work(struct work_struct *work)
> */
> void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid)
> {
> - u32 cec_caps = CEC_CAP_DEFAULTS | CEC_CAP_NEEDS_HPD;
> + struct drm_connector *connector = aux->cec.connector;
> + u32 cec_caps = CEC_CAP_DEFAULTS | CEC_CAP_NEEDS_HPD |
> + CEC_CAP_CONNECTOR_INFO;
> + struct cec_connector_info conn_info;
> unsigned int num_las = 1;
> u8 cap;
>
> @@ -344,13 +349,17 @@ void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid)
>
> /* Create a new adapter */
> aux->cec.adap = cec_allocate_adapter(&drm_dp_cec_adap_ops,
> - aux, aux->cec.name, cec_caps,
> + aux, connector->name, cec_caps,
> num_las);
> if (IS_ERR(aux->cec.adap)) {
> aux->cec.adap = NULL;
> goto unlock;
> }
> - if (cec_register_adapter(aux->cec.adap, aux->cec.parent)) {
> +
> + cec_fill_conn_info_from_drm(&conn_info, connector);
> + cec_s_conn_info(aux->cec.adap, &conn_info);
> +
> + if (cec_register_adapter(aux->cec.adap, connector->dev->dev)) {
> cec_delete_adapter(aux->cec.adap);
> aux->cec.adap = NULL;
> } else {
> @@ -406,22 +415,20 @@ EXPORT_SYMBOL(drm_dp_cec_unset_edid);
> /**
> * drm_dp_cec_register_connector() - register a new connector
> * @aux: DisplayPort AUX channel
> - * @name: name of the CEC device
> - * @parent: parent device
> + * @connector: drm connector
> *
> * A new connector was registered with associated CEC adapter name and
> * CEC adapter parent device. After registering the name and parent
> * drm_dp_cec_set_edid() is called to check if the connector supports
> * CEC and to register a CEC adapter if that is the case.
> */
> -void drm_dp_cec_register_connector(struct drm_dp_aux *aux, const char *name,
> - struct device *parent)
> +void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
> + struct drm_connector *connector)
> {
> WARN_ON(aux->cec.adap);
> if (WARN_ON(!aux->transfer))
> return;
> - aux->cec.name = name;
> - aux->cec.parent = parent;
> + aux->cec.connector = connector;
> INIT_DELAYED_WORK(&aux->cec.unregister_work,
> drm_dp_cec_unregister_work);
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 1092499115760..de2486fe7bf2d 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -5497,7 +5497,6 @@ static int
> intel_dp_connector_register(struct drm_connector *connector)
> {
> struct intel_dp *intel_dp = intel_attached_dp(connector);
> - struct drm_device *dev = connector->dev;
> int ret;
>
> ret = intel_connector_register(connector);
> @@ -5512,8 +5511,7 @@ intel_dp_connector_register(struct drm_connector *connector)
> intel_dp->aux.dev = connector->kdev;
> ret = drm_dp_aux_register(&intel_dp->aux);
> if (!ret)
> - drm_dp_cec_register_connector(&intel_dp->aux,
> - connector->name, dev->dev);
> + drm_dp_cec_register_connector(&intel_dp->aux, connector);
> return ret;
> }
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
> index 330d7d29a6e34..8aa703347eb54 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_connector.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
> @@ -1416,8 +1416,7 @@ nouveau_connector_create(struct drm_device *dev,
> switch (type) {
> case DRM_MODE_CONNECTOR_DisplayPort:
> case DRM_MODE_CONNECTOR_eDP:
> - drm_dp_cec_register_connector(&nv_connector->aux,
> - connector->name, dev->dev);
> + drm_dp_cec_register_connector(&nv_connector->aux, connector);
> break;
> }
>
> diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
> index 8364502f92cfe..7972b925a952b 100644
> --- a/include/drm/drm_dp_helper.h
> +++ b/include/drm/drm_dp_helper.h
> @@ -1230,20 +1230,19 @@ struct drm_dp_aux_msg {
>
> struct cec_adapter;
> struct edid;
> +struct drm_connector;
>
> /**
> * struct drm_dp_aux_cec - DisplayPort CEC-Tunneling-over-AUX
> * @lock: mutex protecting this struct
> * @adap: the CEC adapter for CEC-Tunneling-over-AUX support.
> - * @name: name of the CEC adapter
> - * @parent: parent device of the CEC adapter
> + * @connector: the connector this CEC adapter is associated with
> * @unregister_work: unregister the CEC adapter
> */
> struct drm_dp_aux_cec {
> struct mutex lock;
> struct cec_adapter *adap;
> - const char *name;
> - struct device *parent;
> + struct drm_connector *connector;
> struct delayed_work unregister_work;
> };
>
> @@ -1451,8 +1450,8 @@ drm_dp_has_quirk(const struct drm_dp_desc *desc, enum drm_dp_quirk quirk)
>
> #ifdef CONFIG_DRM_DP_CEC
> void drm_dp_cec_irq(struct drm_dp_aux *aux);
> -void drm_dp_cec_register_connector(struct drm_dp_aux *aux, const char *name,
> - struct device *parent);
> +void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
> + struct drm_connector *connector);
> void drm_dp_cec_unregister_connector(struct drm_dp_aux *aux);
> void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid);
> void drm_dp_cec_unset_edid(struct drm_dp_aux *aux);
> @@ -1461,9 +1460,9 @@ static inline void drm_dp_cec_irq(struct drm_dp_aux *aux)
> {
> }
>
> -static inline void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
> - const char *name,
> - struct device *parent)
> +static inline void
> +drm_dp_cec_register_connector(struct drm_dp_aux *aux,
> + struct drm_connector *connector)
> {
> }
>
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v7 1/9] drm_dp_cec: add connector info support.
[not found] ` <38cda4f5-3299-2bd4-65f5-9a0f948902c6-qWit8jRvyhVmR6Xm/wNWPw@public.gmane.org>
@ 2019-08-22 12:40 ` Deucher, Alexander
0 siblings, 0 replies; 17+ messages in thread
From: Deucher, Alexander @ 2019-08-22 12:40 UTC (permalink / raw)
To: Hans Verkuil, Dariusz Marcinkiewicz,
dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: Maxime Ripard, Thomas Lim, David Airlie,
nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
Francis, David,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
Koenig, Christian, Manasi Navare, Li, Sun peng (Leo), Zuo, Jerry,
Dhinakaran Pandiyan, Rodrigo Vivi, Sean Paul, Koo, Anthony,
intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
Ville Syrjälä, Ben Skeggs
[-- Attachment #1.1: Type: text/plain, Size: 10635 bytes --]
Acked-by: Alex Deucher <alexander.deucher-5C7GfCeVMHo@public.gmane.org>
________________________________
From: Hans Verkuil <hverkuil-cisco-qWit8jRvyhVmR6Xm/wNWPw@public.gmane.org>
Sent: Thursday, August 22, 2019 4:08 AM
To: Dariusz Marcinkiewicz <darekm-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>; dri-devel-PD4FTy7X32lNgt0PjOBp9/rsn8yoX9R0@public.gmane.orgorg <dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org>; linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Cc: David Airlie <airlied-cv59FeDIM0c@public.gmane.org>; nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org <nouveau@lists.freedesktop.org>; Dhinakaran Pandiyan <dhinakaran.pandiyan-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>; Koo, Anthony <Anthony.Koo-5C7GfCeVMHo@public.gmane.org>; Francis, David <David.Francis-urvtwAKJhsc@public.gmane.orgm>; amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org <amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org>; Zuo, Jerry <Jerry.Zuo-5C7GfCeVMHo@public.gmane.org>; Ben Skeggs <bskeggs-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>; Li, Sun peng (Leo) <Sunpeng.Li-5C7GfCeVMHo@public.gmane.org>; intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org <intel-gfx-PD4FTy7X32mzQB+pC5nmwQ@public.gmane.orgedesktop.org>; Maxime Ripard <mripard-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>; Rodrigo Vivi <rodrigo.vivi-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>; Sean Paul <sean-p7yTbzM4H96eqtR555YLDQ@public.gmane.org>; Thomas Lim <Thomas.Lim-5C7GfCeVMHo@public.gmane.org>; linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>; Manasi Navare <manasi.d.navare-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>; Deucher, Alexander <Alexander.Deucher-urvtwAKJhsc@public.gmane.orgm>; Koenig, Christian <Christian.Koenig-5C7GfCeVMHo@public.gmane.org>; Ville Syrjälä <ville.syrjala-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
Subject: Re: [PATCH v7 1/9] drm_dp_cec: add connector info support.
Alex, Ville/Rodrigo, Ben,
Can you (hopefully) Ack this patch so that I can merge it?
Thank you!
Hans
On 8/14/19 12:44 PM, Dariusz Marcinkiewicz wrote:
> Pass the connector info to the CEC adapter. This makes it possible
> to associate the CEC adapter with the corresponding drm connector.
>
> Signed-off-by: Dariusz Marcinkiewicz <darekm-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
> Signed-off-by: Hans Verkuil <hverkuil-cisco-qWit8jRvyhVmR6Xm/wNWPw@public.gmane.org>
> Tested-by: Hans Verkuil <hverkuil-cisco-qWit8jRvyhVmR6Xm/wNWPw@public.gmane.org>
> ---
> .../display/amdgpu_dm/amdgpu_dm_mst_types.c | 2 +-
> drivers/gpu/drm/drm_dp_cec.c | 25 ++++++++++++-------
> drivers/gpu/drm/i915/display/intel_dp.c | 4 +--
> drivers/gpu/drm/nouveau/nouveau_connector.c | 3 +--
> include/drm/drm_dp_helper.h | 17 ++++++-------
> 5 files changed, 27 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> index 16218a202b591..5ec14efd4d8cb 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> @@ -416,7 +416,7 @@ void amdgpu_dm_initialize_dp_connector(struct amdgpu_display_manager *dm,
>
> drm_dp_aux_register(&aconnector->dm_dp_aux.aux);
> drm_dp_cec_register_connector(&aconnector->dm_dp_aux.aux,
> - aconnector->base.name, dm->adev->dev);
> + &aconnector->base);
> aconnector->mst_mgr.cbs = &dm_mst_cbs;
> drm_dp_mst_topology_mgr_init(
> &aconnector->mst_mgr,
> diff --git a/drivers/gpu/drm/drm_dp_cec.c b/drivers/gpu/drm/drm_dp_cec.c
> index b15cee85b702b..b457c16c3a8bb 100644
> --- a/drivers/gpu/drm/drm_dp_cec.c
> +++ b/drivers/gpu/drm/drm_dp_cec.c
> @@ -8,7 +8,9 @@
> #include <linux/kernel.h>
> #include <linux/module.h>
> #include <linux/slab.h>
> +#include <drm/drm_connector.h>
> #include <drm/drm_dp_helper.h>
> +#include <drm/drmP.h>
> #include <media/cec.h>
>
> /*
> @@ -295,7 +297,10 @@ static void drm_dp_cec_unregister_work(struct work_struct *work)
> */
> void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid)
> {
> - u32 cec_caps = CEC_CAP_DEFAULTS | CEC_CAP_NEEDS_HPD;
> + struct drm_connector *connector = aux->cec.connector;
> + u32 cec_caps = CEC_CAP_DEFAULTS | CEC_CAP_NEEDS_HPD |
> + CEC_CAP_CONNECTOR_INFO;
> + struct cec_connector_info conn_info;
> unsigned int num_las = 1;
> u8 cap;
>
> @@ -344,13 +349,17 @@ void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid)
>
> /* Create a new adapter */
> aux->cec.adap = cec_allocate_adapter(&drm_dp_cec_adap_ops,
> - aux, aux->cec.name, cec_caps,
> + aux, connector->name, cec_caps,
> num_las);
> if (IS_ERR(aux->cec.adap)) {
> aux->cec.adap = NULL;
> goto unlock;
> }
> - if (cec_register_adapter(aux->cec.adap, aux->cec.parent)) {
> +
> + cec_fill_conn_info_from_drm(&conn_info, connector);
> + cec_s_conn_info(aux->cec.adap, &conn_info);
> +
> + if (cec_register_adapter(aux->cec.adap, connector->dev->dev)) {
> cec_delete_adapter(aux->cec.adap);
> aux->cec.adap = NULL;
> } else {
> @@ -406,22 +415,20 @@ EXPORT_SYMBOL(drm_dp_cec_unset_edid);
> /**
> * drm_dp_cec_register_connector() - register a new connector
> * @aux: DisplayPort AUX channel
> - * @name: name of the CEC device
> - * @parent: parent device
> + * @connector: drm connector
> *
> * A new connector was registered with associated CEC adapter name and
> * CEC adapter parent device. After registering the name and parent
> * drm_dp_cec_set_edid() is called to check if the connector supports
> * CEC and to register a CEC adapter if that is the case.
> */
> -void drm_dp_cec_register_connector(struct drm_dp_aux *aux, const char *name,
> - struct device *parent)
> +void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
> + struct drm_connector *connector)
> {
> WARN_ON(aux->cec.adap);
> if (WARN_ON(!aux->transfer))
> return;
> - aux->cec.name = name;
> - aux->cec.parent = parent;
> + aux->cec.connector = connector;
> INIT_DELAYED_WORK(&aux->cec.unregister_work,
> drm_dp_cec_unregister_work);
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 1092499115760..de2486fe7bf2d 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -5497,7 +5497,6 @@ static int
> intel_dp_connector_register(struct drm_connector *connector)
> {
> struct intel_dp *intel_dp = intel_attached_dp(connector);
> - struct drm_device *dev = connector->dev;
> int ret;
>
> ret = intel_connector_register(connector);
> @@ -5512,8 +5511,7 @@ intel_dp_connector_register(struct drm_connector *connector)
> intel_dp->aux.dev = connector->kdev;
> ret = drm_dp_aux_register(&intel_dp->aux);
> if (!ret)
> - drm_dp_cec_register_connector(&intel_dp->aux,
> - connector->name, dev->dev);
> + drm_dp_cec_register_connector(&intel_dp->aux, connector);
> return ret;
> }
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
> index 330d7d29a6e34..8aa703347eb54 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_connector.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
> @@ -1416,8 +1416,7 @@ nouveau_connector_create(struct drm_device *dev,
> switch (type) {
> case DRM_MODE_CONNECTOR_DisplayPort:
> case DRM_MODE_CONNECTOR_eDP:
> - drm_dp_cec_register_connector(&nv_connector->aux,
> - connector->name, dev->dev);
> + drm_dp_cec_register_connector(&nv_connector->aux, connector);
> break;
> }
>
> diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
> index 8364502f92cfe..7972b925a952b 100644
> --- a/include/drm/drm_dp_helper.h
> +++ b/include/drm/drm_dp_helper.h
> @@ -1230,20 +1230,19 @@ struct drm_dp_aux_msg {
>
> struct cec_adapter;
> struct edid;
> +struct drm_connector;
>
> /**
> * struct drm_dp_aux_cec - DisplayPort CEC-Tunneling-over-AUX
> * @lock: mutex protecting this struct
> * @adap: the CEC adapter for CEC-Tunneling-over-AUX support.
> - * @name: name of the CEC adapter
> - * @parent: parent device of the CEC adapter
> + * @connector: the connector this CEC adapter is associated with
> * @unregister_work: unregister the CEC adapter
> */
> struct drm_dp_aux_cec {
> struct mutex lock;
> struct cec_adapter *adap;
> - const char *name;
> - struct device *parent;
> + struct drm_connector *connector;
> struct delayed_work unregister_work;
> };
>
> @@ -1451,8 +1450,8 @@ drm_dp_has_quirk(const struct drm_dp_desc *desc, enum drm_dp_quirk quirk)
>
> #ifdef CONFIG_DRM_DP_CEC
> void drm_dp_cec_irq(struct drm_dp_aux *aux);
> -void drm_dp_cec_register_connector(struct drm_dp_aux *aux, const char *name,
> - struct device *parent);
> +void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
> + struct drm_connector *connector);
> void drm_dp_cec_unregister_connector(struct drm_dp_aux *aux);
> void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid);
> void drm_dp_cec_unset_edid(struct drm_dp_aux *aux);
> @@ -1461,9 +1460,9 @@ static inline void drm_dp_cec_irq(struct drm_dp_aux *aux)
> {
> }
>
> -static inline void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
> - const char *name,
> - struct device *parent)
> +static inline void
> +drm_dp_cec_register_connector(struct drm_dp_aux *aux,
> + struct drm_connector *connector)
> {
> }
>
>
[-- Attachment #1.2: Type: text/html, Size: 18879 bytes --]
[-- Attachment #2: Type: text/plain, Size: 153 bytes --]
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v7 2/9] drm/i915/intel_hdmi: use cec_notifier_conn_(un)register
2019-08-22 8:03 ` Hans Verkuil
@ 2019-08-26 8:59 ` Hans Verkuil
0 siblings, 0 replies; 17+ messages in thread
From: Hans Verkuil @ 2019-08-26 8:59 UTC (permalink / raw)
To: Dariusz Marcinkiewicz, dri-devel, linux-media
Cc: David Airlie, intel-gfx, linux-kernel, Rodrigo Vivi,
Daniel Vetter
On 8/22/19 10:03 AM, Hans Verkuil wrote:
> Ville or Rodrigo,
>
> Can one of you either merge this patch or Ack it so that I can merge this?
Ping!
Regards,
Hans
>
> Thank you!
>
> Regards,
>
> Hans
>
> On 8/14/19 12:45 PM, Dariusz Marcinkiewicz wrote:
>> Use the new cec_notifier_conn_(un)register() functions to
>> (un)register the notifier for the HDMI connector, and fill in
>> the cec_connector_info.
>>
>> Signed-off-by: Dariusz Marcinkiewicz <darekm@google.com>
>> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
>> Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
>> ---
>> drivers/gpu/drm/i915/display/intel_hdmi.c | 13 +++++++++----
>> 1 file changed, 9 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
>> index b1ca8e5bdb56d..9fcf2c58c29c5 100644
>> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
>> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
>> @@ -2752,8 +2752,9 @@ intel_hdmi_connector_register(struct drm_connector *connector)
>>
>> static void intel_hdmi_destroy(struct drm_connector *connector)
>> {
>> - if (intel_attached_hdmi(connector)->cec_notifier)
>> - cec_notifier_put(intel_attached_hdmi(connector)->cec_notifier);
>> + struct cec_notifier *n = intel_attached_hdmi(connector)->cec_notifier;
>> +
>> + cec_notifier_conn_unregister(n);
>>
>> intel_connector_destroy(connector);
>> }
>> @@ -3068,6 +3069,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
>> struct drm_device *dev = intel_encoder->base.dev;
>> struct drm_i915_private *dev_priv = to_i915(dev);
>> enum port port = intel_encoder->port;
>> + struct cec_connector_info conn_info;
>>
>> DRM_DEBUG_KMS("Adding HDMI connector on port %c\n",
>> port_name(port));
>> @@ -3120,8 +3122,11 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
>> I915_WRITE(PEG_BAND_GAP_DATA, (temp & ~0xf) | 0xd);
>> }
>>
>> - intel_hdmi->cec_notifier = cec_notifier_get_conn(dev->dev,
>> - port_identifier(port));
>> + cec_fill_conn_info_from_drm(&conn_info, connector);
>> +
>> + intel_hdmi->cec_notifier =
>> + cec_notifier_conn_register(dev->dev, port_identifier(port),
>> + &conn_info);
>> if (!intel_hdmi->cec_notifier)
>> DRM_DEBUG_KMS("CEC notifier get failed\n");
>> }
>>
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v7 1/9] drm_dp_cec: add connector info support.
2019-08-22 8:08 ` Hans Verkuil
[not found] ` <38cda4f5-3299-2bd4-65f5-9a0f948902c6-qWit8jRvyhVmR6Xm/wNWPw@public.gmane.org>
@ 2019-08-26 9:00 ` Hans Verkuil
1 sibling, 0 replies; 17+ messages in thread
From: Hans Verkuil @ 2019-08-26 9:00 UTC (permalink / raw)
To: Dariusz Marcinkiewicz, dri-devel, linux-media
Cc: Maxime Ripard, Thomas Lim, David Airlie, nouveau, David Francis,
linux-kernel, amd-gfx, Christian König, Manasi Navare,
Leo Li, Jerry (Fangzhi) Zuo, Dhinakaran Pandiyan, Rodrigo Vivi,
Alex Deucher, Sean Paul, Anthony Koo, intel-gfx, Ben Skeggs,
Daniel Vetter
On 8/22/19 10:08 AM, Hans Verkuil wrote:
> Alex, Ville/Rodrigo, Ben,
>
> Can you (hopefully) Ack this patch so that I can merge it?
Ping!
Regards,
Hans
>
> Thank you!
>
> Hans
>
> On 8/14/19 12:44 PM, Dariusz Marcinkiewicz wrote:
>> Pass the connector info to the CEC adapter. This makes it possible
>> to associate the CEC adapter with the corresponding drm connector.
>>
>> Signed-off-by: Dariusz Marcinkiewicz <darekm@google.com>
>> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
>> Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
>> ---
>> .../display/amdgpu_dm/amdgpu_dm_mst_types.c | 2 +-
>> drivers/gpu/drm/drm_dp_cec.c | 25 ++++++++++++-------
>> drivers/gpu/drm/i915/display/intel_dp.c | 4 +--
>> drivers/gpu/drm/nouveau/nouveau_connector.c | 3 +--
>> include/drm/drm_dp_helper.h | 17 ++++++-------
>> 5 files changed, 27 insertions(+), 24 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
>> index 16218a202b591..5ec14efd4d8cb 100644
>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
>> @@ -416,7 +416,7 @@ void amdgpu_dm_initialize_dp_connector(struct amdgpu_display_manager *dm,
>>
>> drm_dp_aux_register(&aconnector->dm_dp_aux.aux);
>> drm_dp_cec_register_connector(&aconnector->dm_dp_aux.aux,
>> - aconnector->base.name, dm->adev->dev);
>> + &aconnector->base);
>> aconnector->mst_mgr.cbs = &dm_mst_cbs;
>> drm_dp_mst_topology_mgr_init(
>> &aconnector->mst_mgr,
>> diff --git a/drivers/gpu/drm/drm_dp_cec.c b/drivers/gpu/drm/drm_dp_cec.c
>> index b15cee85b702b..b457c16c3a8bb 100644
>> --- a/drivers/gpu/drm/drm_dp_cec.c
>> +++ b/drivers/gpu/drm/drm_dp_cec.c
>> @@ -8,7 +8,9 @@
>> #include <linux/kernel.h>
>> #include <linux/module.h>
>> #include <linux/slab.h>
>> +#include <drm/drm_connector.h>
>> #include <drm/drm_dp_helper.h>
>> +#include <drm/drmP.h>
>> #include <media/cec.h>
>>
>> /*
>> @@ -295,7 +297,10 @@ static void drm_dp_cec_unregister_work(struct work_struct *work)
>> */
>> void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid)
>> {
>> - u32 cec_caps = CEC_CAP_DEFAULTS | CEC_CAP_NEEDS_HPD;
>> + struct drm_connector *connector = aux->cec.connector;
>> + u32 cec_caps = CEC_CAP_DEFAULTS | CEC_CAP_NEEDS_HPD |
>> + CEC_CAP_CONNECTOR_INFO;
>> + struct cec_connector_info conn_info;
>> unsigned int num_las = 1;
>> u8 cap;
>>
>> @@ -344,13 +349,17 @@ void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid)
>>
>> /* Create a new adapter */
>> aux->cec.adap = cec_allocate_adapter(&drm_dp_cec_adap_ops,
>> - aux, aux->cec.name, cec_caps,
>> + aux, connector->name, cec_caps,
>> num_las);
>> if (IS_ERR(aux->cec.adap)) {
>> aux->cec.adap = NULL;
>> goto unlock;
>> }
>> - if (cec_register_adapter(aux->cec.adap, aux->cec.parent)) {
>> +
>> + cec_fill_conn_info_from_drm(&conn_info, connector);
>> + cec_s_conn_info(aux->cec.adap, &conn_info);
>> +
>> + if (cec_register_adapter(aux->cec.adap, connector->dev->dev)) {
>> cec_delete_adapter(aux->cec.adap);
>> aux->cec.adap = NULL;
>> } else {
>> @@ -406,22 +415,20 @@ EXPORT_SYMBOL(drm_dp_cec_unset_edid);
>> /**
>> * drm_dp_cec_register_connector() - register a new connector
>> * @aux: DisplayPort AUX channel
>> - * @name: name of the CEC device
>> - * @parent: parent device
>> + * @connector: drm connector
>> *
>> * A new connector was registered with associated CEC adapter name and
>> * CEC adapter parent device. After registering the name and parent
>> * drm_dp_cec_set_edid() is called to check if the connector supports
>> * CEC and to register a CEC adapter if that is the case.
>> */
>> -void drm_dp_cec_register_connector(struct drm_dp_aux *aux, const char *name,
>> - struct device *parent)
>> +void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
>> + struct drm_connector *connector)
>> {
>> WARN_ON(aux->cec.adap);
>> if (WARN_ON(!aux->transfer))
>> return;
>> - aux->cec.name = name;
>> - aux->cec.parent = parent;
>> + aux->cec.connector = connector;
>> INIT_DELAYED_WORK(&aux->cec.unregister_work,
>> drm_dp_cec_unregister_work);
>> }
>> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
>> index 1092499115760..de2486fe7bf2d 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
>> @@ -5497,7 +5497,6 @@ static int
>> intel_dp_connector_register(struct drm_connector *connector)
>> {
>> struct intel_dp *intel_dp = intel_attached_dp(connector);
>> - struct drm_device *dev = connector->dev;
>> int ret;
>>
>> ret = intel_connector_register(connector);
>> @@ -5512,8 +5511,7 @@ intel_dp_connector_register(struct drm_connector *connector)
>> intel_dp->aux.dev = connector->kdev;
>> ret = drm_dp_aux_register(&intel_dp->aux);
>> if (!ret)
>> - drm_dp_cec_register_connector(&intel_dp->aux,
>> - connector->name, dev->dev);
>> + drm_dp_cec_register_connector(&intel_dp->aux, connector);
>> return ret;
>> }
>>
>> diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
>> index 330d7d29a6e34..8aa703347eb54 100644
>> --- a/drivers/gpu/drm/nouveau/nouveau_connector.c
>> +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
>> @@ -1416,8 +1416,7 @@ nouveau_connector_create(struct drm_device *dev,
>> switch (type) {
>> case DRM_MODE_CONNECTOR_DisplayPort:
>> case DRM_MODE_CONNECTOR_eDP:
>> - drm_dp_cec_register_connector(&nv_connector->aux,
>> - connector->name, dev->dev);
>> + drm_dp_cec_register_connector(&nv_connector->aux, connector);
>> break;
>> }
>>
>> diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
>> index 8364502f92cfe..7972b925a952b 100644
>> --- a/include/drm/drm_dp_helper.h
>> +++ b/include/drm/drm_dp_helper.h
>> @@ -1230,20 +1230,19 @@ struct drm_dp_aux_msg {
>>
>> struct cec_adapter;
>> struct edid;
>> +struct drm_connector;
>>
>> /**
>> * struct drm_dp_aux_cec - DisplayPort CEC-Tunneling-over-AUX
>> * @lock: mutex protecting this struct
>> * @adap: the CEC adapter for CEC-Tunneling-over-AUX support.
>> - * @name: name of the CEC adapter
>> - * @parent: parent device of the CEC adapter
>> + * @connector: the connector this CEC adapter is associated with
>> * @unregister_work: unregister the CEC adapter
>> */
>> struct drm_dp_aux_cec {
>> struct mutex lock;
>> struct cec_adapter *adap;
>> - const char *name;
>> - struct device *parent;
>> + struct drm_connector *connector;
>> struct delayed_work unregister_work;
>> };
>>
>> @@ -1451,8 +1450,8 @@ drm_dp_has_quirk(const struct drm_dp_desc *desc, enum drm_dp_quirk quirk)
>>
>> #ifdef CONFIG_DRM_DP_CEC
>> void drm_dp_cec_irq(struct drm_dp_aux *aux);
>> -void drm_dp_cec_register_connector(struct drm_dp_aux *aux, const char *name,
>> - struct device *parent);
>> +void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
>> + struct drm_connector *connector);
>> void drm_dp_cec_unregister_connector(struct drm_dp_aux *aux);
>> void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid);
>> void drm_dp_cec_unset_edid(struct drm_dp_aux *aux);
>> @@ -1461,9 +1460,9 @@ static inline void drm_dp_cec_irq(struct drm_dp_aux *aux)
>> {
>> }
>>
>> -static inline void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
>> - const char *name,
>> - struct device *parent)
>> +static inline void
>> +drm_dp_cec_register_connector(struct drm_dp_aux *aux,
>> + struct drm_connector *connector)
>> {
>> }
>>
>>
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v7 1/9] drm_dp_cec: add connector info support.
2019-08-15 18:10 ` Lyude Paul
@ 2019-08-26 9:05 ` Ben Skeggs
0 siblings, 0 replies; 17+ messages in thread
From: Ben Skeggs @ 2019-08-26 9:05 UTC (permalink / raw)
To: Lyude Paul
Cc: Dariusz Marcinkiewicz, dri-devel, linux-media, hverkuil-cisco,
Harry Wentland, Leo Li, Alex Deucher, Christian König,
David (ChunMing) Zhou, David Airlie, Daniel Vetter,
Maarten Lankhorst, Maxime Ripard, Sean Paul, Jani Nikula,
Joonas Lahtinen, Rodrigo Vivi, Jerry (Fangzhi) Zuo, Anthony Koo
On Fri, Aug 16, 2019 at 4:10 AM Lyude Paul <lyude@redhat.com> wrote:
>
> Reviewed-by: Lyude Paul <lyude@redhat.com>
Reviewed-by: Ben Skeggs <bskeggs@redhat.com>
>
> On Wed, 2019-08-14 at 12:44 +0200, Dariusz Marcinkiewicz wrote:
> > Pass the connector info to the CEC adapter. This makes it possible
> > to associate the CEC adapter with the corresponding drm connector.
> >
> > Signed-off-by: Dariusz Marcinkiewicz <darekm@google.com>
> > Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
> > Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
> > ---
> > .../display/amdgpu_dm/amdgpu_dm_mst_types.c | 2 +-
> > drivers/gpu/drm/drm_dp_cec.c | 25 ++++++++++++-------
> > drivers/gpu/drm/i915/display/intel_dp.c | 4 +--
> > drivers/gpu/drm/nouveau/nouveau_connector.c | 3 +--
> > include/drm/drm_dp_helper.h | 17 ++++++-------
> > 5 files changed, 27 insertions(+), 24 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> > b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> > index 16218a202b591..5ec14efd4d8cb 100644
> > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> > @@ -416,7 +416,7 @@ void amdgpu_dm_initialize_dp_connector(struct
> > amdgpu_display_manager *dm,
> >
> > drm_dp_aux_register(&aconnector->dm_dp_aux.aux);
> > drm_dp_cec_register_connector(&aconnector->dm_dp_aux.aux,
> > - aconnector->base.name, dm->adev->dev);
> > + &aconnector->base);
> > aconnector->mst_mgr.cbs = &dm_mst_cbs;
> > drm_dp_mst_topology_mgr_init(
> > &aconnector->mst_mgr,
> > diff --git a/drivers/gpu/drm/drm_dp_cec.c b/drivers/gpu/drm/drm_dp_cec.c
> > index b15cee85b702b..b457c16c3a8bb 100644
> > --- a/drivers/gpu/drm/drm_dp_cec.c
> > +++ b/drivers/gpu/drm/drm_dp_cec.c
> > @@ -8,7 +8,9 @@
> > #include <linux/kernel.h>
> > #include <linux/module.h>
> > #include <linux/slab.h>
> > +#include <drm/drm_connector.h>
> > #include <drm/drm_dp_helper.h>
> > +#include <drm/drmP.h>
> > #include <media/cec.h>
> >
> > /*
> > @@ -295,7 +297,10 @@ static void drm_dp_cec_unregister_work(struct work_struct
> > *work)
> > */
> > void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid)
> > {
> > - u32 cec_caps = CEC_CAP_DEFAULTS | CEC_CAP_NEEDS_HPD;
> > + struct drm_connector *connector = aux->cec.connector;
> > + u32 cec_caps = CEC_CAP_DEFAULTS | CEC_CAP_NEEDS_HPD |
> > + CEC_CAP_CONNECTOR_INFO;
> > + struct cec_connector_info conn_info;
> > unsigned int num_las = 1;
> > u8 cap;
> >
> > @@ -344,13 +349,17 @@ void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const
> > struct edid *edid)
> >
> > /* Create a new adapter */
> > aux->cec.adap = cec_allocate_adapter(&drm_dp_cec_adap_ops,
> > - aux, aux->cec.name, cec_caps,
> > + aux, connector->name, cec_caps,
> > num_las);
> > if (IS_ERR(aux->cec.adap)) {
> > aux->cec.adap = NULL;
> > goto unlock;
> > }
> > - if (cec_register_adapter(aux->cec.adap, aux->cec.parent)) {
> > +
> > + cec_fill_conn_info_from_drm(&conn_info, connector);
> > + cec_s_conn_info(aux->cec.adap, &conn_info);
> > +
> > + if (cec_register_adapter(aux->cec.adap, connector->dev->dev)) {
> > cec_delete_adapter(aux->cec.adap);
> > aux->cec.adap = NULL;
> > } else {
> > @@ -406,22 +415,20 @@ EXPORT_SYMBOL(drm_dp_cec_unset_edid);
> > /**
> > * drm_dp_cec_register_connector() - register a new connector
> > * @aux: DisplayPort AUX channel
> > - * @name: name of the CEC device
> > - * @parent: parent device
> > + * @connector: drm connector
> > *
> > * A new connector was registered with associated CEC adapter name and
> > * CEC adapter parent device. After registering the name and parent
> > * drm_dp_cec_set_edid() is called to check if the connector supports
> > * CEC and to register a CEC adapter if that is the case.
> > */
> > -void drm_dp_cec_register_connector(struct drm_dp_aux *aux, const char *name,
> > - struct device *parent)
> > +void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
> > + struct drm_connector *connector)
> > {
> > WARN_ON(aux->cec.adap);
> > if (WARN_ON(!aux->transfer))
> > return;
> > - aux->cec.name = name;
> > - aux->cec.parent = parent;
> > + aux->cec.connector = connector;
> > INIT_DELAYED_WORK(&aux->cec.unregister_work,
> > drm_dp_cec_unregister_work);
> > }
> > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> > b/drivers/gpu/drm/i915/display/intel_dp.c
> > index 1092499115760..de2486fe7bf2d 100644
> > --- a/drivers/gpu/drm/i915/display/intel_dp.c
> > +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> > @@ -5497,7 +5497,6 @@ static int
> > intel_dp_connector_register(struct drm_connector *connector)
> > {
> > struct intel_dp *intel_dp = intel_attached_dp(connector);
> > - struct drm_device *dev = connector->dev;
> > int ret;
> >
> > ret = intel_connector_register(connector);
> > @@ -5512,8 +5511,7 @@ intel_dp_connector_register(struct drm_connector
> > *connector)
> > intel_dp->aux.dev = connector->kdev;
> > ret = drm_dp_aux_register(&intel_dp->aux);
> > if (!ret)
> > - drm_dp_cec_register_connector(&intel_dp->aux,
> > - connector->name, dev->dev);
> > + drm_dp_cec_register_connector(&intel_dp->aux, connector);
> > return ret;
> > }
> >
> > diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c
> > b/drivers/gpu/drm/nouveau/nouveau_connector.c
> > index 330d7d29a6e34..8aa703347eb54 100644
> > --- a/drivers/gpu/drm/nouveau/nouveau_connector.c
> > +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
> > @@ -1416,8 +1416,7 @@ nouveau_connector_create(struct drm_device *dev,
> > switch (type) {
> > case DRM_MODE_CONNECTOR_DisplayPort:
> > case DRM_MODE_CONNECTOR_eDP:
> > - drm_dp_cec_register_connector(&nv_connector->aux,
> > - connector->name, dev->dev);
> > + drm_dp_cec_register_connector(&nv_connector->aux, connector);
> > break;
> > }
> >
> > diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
> > index 8364502f92cfe..7972b925a952b 100644
> > --- a/include/drm/drm_dp_helper.h
> > +++ b/include/drm/drm_dp_helper.h
> > @@ -1230,20 +1230,19 @@ struct drm_dp_aux_msg {
> >
> > struct cec_adapter;
> > struct edid;
> > +struct drm_connector;
> >
> > /**
> > * struct drm_dp_aux_cec - DisplayPort CEC-Tunneling-over-AUX
> > * @lock: mutex protecting this struct
> > * @adap: the CEC adapter for CEC-Tunneling-over-AUX support.
> > - * @name: name of the CEC adapter
> > - * @parent: parent device of the CEC adapter
> > + * @connector: the connector this CEC adapter is associated with
> > * @unregister_work: unregister the CEC adapter
> > */
> > struct drm_dp_aux_cec {
> > struct mutex lock;
> > struct cec_adapter *adap;
> > - const char *name;
> > - struct device *parent;
> > + struct drm_connector *connector;
> > struct delayed_work unregister_work;
> > };
> >
> > @@ -1451,8 +1450,8 @@ drm_dp_has_quirk(const struct drm_dp_desc *desc, enum
> > drm_dp_quirk quirk)
> >
> > #ifdef CONFIG_DRM_DP_CEC
> > void drm_dp_cec_irq(struct drm_dp_aux *aux);
> > -void drm_dp_cec_register_connector(struct drm_dp_aux *aux, const char *name,
> > - struct device *parent);
> > +void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
> > + struct drm_connector *connector);
> > void drm_dp_cec_unregister_connector(struct drm_dp_aux *aux);
> > void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid);
> > void drm_dp_cec_unset_edid(struct drm_dp_aux *aux);
> > @@ -1461,9 +1460,9 @@ static inline void drm_dp_cec_irq(struct drm_dp_aux
> > *aux)
> > {
> > }
> >
> > -static inline void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
> > - const char *name,
> > - struct device *parent)
> > +static inline void
> > +drm_dp_cec_register_connector(struct drm_dp_aux *aux,
> > + struct drm_connector *connector)
> > {
> > }
> >
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v7 2/9] drm/i915/intel_hdmi: use cec_notifier_conn_(un)register
2019-08-14 10:45 ` [PATCH v7 2/9] drm/i915/intel_hdmi: use cec_notifier_conn_(un)register Dariusz Marcinkiewicz
2019-08-22 8:03 ` Hans Verkuil
@ 2019-08-26 12:08 ` Ville Syrjälä
1 sibling, 0 replies; 17+ messages in thread
From: Ville Syrjälä @ 2019-08-26 12:08 UTC (permalink / raw)
To: Dariusz Marcinkiewicz
Cc: David Airlie, intel-gfx, linux-kernel, dri-devel, Rodrigo Vivi,
hverkuil-cisco, linux-media
On Wed, Aug 14, 2019 at 12:45:00PM +0200, Dariusz Marcinkiewicz wrote:
> Use the new cec_notifier_conn_(un)register() functions to
> (un)register the notifier for the HDMI connector, and fill in
> the cec_connector_info.
>
> Signed-off-by: Dariusz Marcinkiewicz <darekm@google.com>
> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
> Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_hdmi.c | 13 +++++++++----
> 1 file changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
> index b1ca8e5bdb56d..9fcf2c58c29c5 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
> @@ -2752,8 +2752,9 @@ intel_hdmi_connector_register(struct drm_connector *connector)
>
> static void intel_hdmi_destroy(struct drm_connector *connector)
> {
> - if (intel_attached_hdmi(connector)->cec_notifier)
> - cec_notifier_put(intel_attached_hdmi(connector)->cec_notifier);
> + struct cec_notifier *n = intel_attached_hdmi(connector)->cec_notifier;
> +
> + cec_notifier_conn_unregister(n);
>
> intel_connector_destroy(connector);
> }
> @@ -3068,6 +3069,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
> struct drm_device *dev = intel_encoder->base.dev;
> struct drm_i915_private *dev_priv = to_i915(dev);
> enum port port = intel_encoder->port;
> + struct cec_connector_info conn_info;
>
> DRM_DEBUG_KMS("Adding HDMI connector on port %c\n",
> port_name(port));
> @@ -3120,8 +3122,11 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
> I915_WRITE(PEG_BAND_GAP_DATA, (temp & ~0xf) | 0xd);
> }
>
> - intel_hdmi->cec_notifier = cec_notifier_get_conn(dev->dev,
> - port_identifier(port));
> + cec_fill_conn_info_from_drm(&conn_info, connector);
> +
> + intel_hdmi->cec_notifier =
> + cec_notifier_conn_register(dev->dev, port_identifier(port),
> + &conn_info);
> if (!intel_hdmi->cec_notifier)
> DRM_DEBUG_KMS("CEC notifier get failed\n");
> }
> --
> 2.23.0.rc1.153.gdeed80330f-goog
--
Ville Syrjälä
Intel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH v7 1/9] drm_dp_cec: add connector info support.
2019-08-14 10:44 ` [PATCH v7 1/9] drm_dp_cec: add connector info support Dariusz Marcinkiewicz
2019-08-15 18:10 ` Lyude Paul
2019-08-22 8:08 ` Hans Verkuil
@ 2019-08-28 15:05 ` Ville Syrjälä
2 siblings, 0 replies; 17+ messages in thread
From: Ville Syrjälä @ 2019-08-28 15:05 UTC (permalink / raw)
To: Dariusz Marcinkiewicz
Cc: dri-devel, linux-media, hverkuil-cisco, Harry Wentland, Leo Li,
Alex Deucher, Christian König, David (ChunMing) Zhou,
David Airlie, Daniel Vetter, Maarten Lankhorst, Maxime Ripard,
Sean Paul, Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, Ben Skeggs,
Lyude Paul, Jerry (Fangzhi) Zuo, Anthony Koo
On Wed, Aug 14, 2019 at 12:44:59PM +0200, Dariusz Marcinkiewicz wrote:
> Pass the connector info to the CEC adapter. This makes it possible
> to associate the CEC adapter with the corresponding drm connector.
>
> Signed-off-by: Dariusz Marcinkiewicz <darekm@google.com>
> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
> Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
> ---
> .../display/amdgpu_dm/amdgpu_dm_mst_types.c | 2 +-
> drivers/gpu/drm/drm_dp_cec.c | 25 ++++++++++++-------
> drivers/gpu/drm/i915/display/intel_dp.c | 4 +--
> drivers/gpu/drm/nouveau/nouveau_connector.c | 3 +--
> include/drm/drm_dp_helper.h | 17 ++++++-------
> 5 files changed, 27 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> index 16218a202b591..5ec14efd4d8cb 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
> @@ -416,7 +416,7 @@ void amdgpu_dm_initialize_dp_connector(struct amdgpu_display_manager *dm,
>
> drm_dp_aux_register(&aconnector->dm_dp_aux.aux);
> drm_dp_cec_register_connector(&aconnector->dm_dp_aux.aux,
> - aconnector->base.name, dm->adev->dev);
> + &aconnector->base);
> aconnector->mst_mgr.cbs = &dm_mst_cbs;
> drm_dp_mst_topology_mgr_init(
> &aconnector->mst_mgr,
> diff --git a/drivers/gpu/drm/drm_dp_cec.c b/drivers/gpu/drm/drm_dp_cec.c
> index b15cee85b702b..b457c16c3a8bb 100644
> --- a/drivers/gpu/drm/drm_dp_cec.c
> +++ b/drivers/gpu/drm/drm_dp_cec.c
> @@ -8,7 +8,9 @@
> #include <linux/kernel.h>
> #include <linux/module.h>
> #include <linux/slab.h>
> +#include <drm/drm_connector.h>
> #include <drm/drm_dp_helper.h>
> +#include <drm/drmP.h>
> #include <media/cec.h>
>
> /*
> @@ -295,7 +297,10 @@ static void drm_dp_cec_unregister_work(struct work_struct *work)
> */
> void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid)
> {
> - u32 cec_caps = CEC_CAP_DEFAULTS | CEC_CAP_NEEDS_HPD;
> + struct drm_connector *connector = aux->cec.connector;
> + u32 cec_caps = CEC_CAP_DEFAULTS | CEC_CAP_NEEDS_HPD |
> + CEC_CAP_CONNECTOR_INFO;
> + struct cec_connector_info conn_info;
> unsigned int num_las = 1;
> u8 cap;
>
> @@ -344,13 +349,17 @@ void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid)
>
> /* Create a new adapter */
> aux->cec.adap = cec_allocate_adapter(&drm_dp_cec_adap_ops,
> - aux, aux->cec.name, cec_caps,
> + aux, connector->name, cec_caps,
> num_las);
> if (IS_ERR(aux->cec.adap)) {
> aux->cec.adap = NULL;
> goto unlock;
> }
> - if (cec_register_adapter(aux->cec.adap, aux->cec.parent)) {
> +
> + cec_fill_conn_info_from_drm(&conn_info, connector);
> + cec_s_conn_info(aux->cec.adap, &conn_info);
> +
> + if (cec_register_adapter(aux->cec.adap, connector->dev->dev)) {
> cec_delete_adapter(aux->cec.adap);
> aux->cec.adap = NULL;
> } else {
> @@ -406,22 +415,20 @@ EXPORT_SYMBOL(drm_dp_cec_unset_edid);
> /**
> * drm_dp_cec_register_connector() - register a new connector
> * @aux: DisplayPort AUX channel
> - * @name: name of the CEC device
> - * @parent: parent device
> + * @connector: drm connector
> *
> * A new connector was registered with associated CEC adapter name and
> * CEC adapter parent device. After registering the name and parent
> * drm_dp_cec_set_edid() is called to check if the connector supports
> * CEC and to register a CEC adapter if that is the case.
> */
> -void drm_dp_cec_register_connector(struct drm_dp_aux *aux, const char *name,
> - struct device *parent)
> +void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
> + struct drm_connector *connector)
> {
> WARN_ON(aux->cec.adap);
> if (WARN_ON(!aux->transfer))
> return;
> - aux->cec.name = name;
> - aux->cec.parent = parent;
> + aux->cec.connector = connector;
> INIT_DELAYED_WORK(&aux->cec.unregister_work,
> drm_dp_cec_unregister_work);
> }
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 1092499115760..de2486fe7bf2d 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -5497,7 +5497,6 @@ static int
> intel_dp_connector_register(struct drm_connector *connector)
> {
> struct intel_dp *intel_dp = intel_attached_dp(connector);
> - struct drm_device *dev = connector->dev;
> int ret;
>
> ret = intel_connector_register(connector);
> @@ -5512,8 +5511,7 @@ intel_dp_connector_register(struct drm_connector *connector)
> intel_dp->aux.dev = connector->kdev;
> ret = drm_dp_aux_register(&intel_dp->aux);
> if (!ret)
> - drm_dp_cec_register_connector(&intel_dp->aux,
> - connector->name, dev->dev);
> + drm_dp_cec_register_connector(&intel_dp->aux, connector);
> return ret;
> }
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
> index 330d7d29a6e34..8aa703347eb54 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_connector.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
> @@ -1416,8 +1416,7 @@ nouveau_connector_create(struct drm_device *dev,
> switch (type) {
> case DRM_MODE_CONNECTOR_DisplayPort:
> case DRM_MODE_CONNECTOR_eDP:
> - drm_dp_cec_register_connector(&nv_connector->aux,
> - connector->name, dev->dev);
> + drm_dp_cec_register_connector(&nv_connector->aux, connector);
> break;
> }
>
> diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
> index 8364502f92cfe..7972b925a952b 100644
> --- a/include/drm/drm_dp_helper.h
> +++ b/include/drm/drm_dp_helper.h
> @@ -1230,20 +1230,19 @@ struct drm_dp_aux_msg {
>
> struct cec_adapter;
> struct edid;
> +struct drm_connector;
>
> /**
> * struct drm_dp_aux_cec - DisplayPort CEC-Tunneling-over-AUX
> * @lock: mutex protecting this struct
> * @adap: the CEC adapter for CEC-Tunneling-over-AUX support.
> - * @name: name of the CEC adapter
> - * @parent: parent device of the CEC adapter
> + * @connector: the connector this CEC adapter is associated with
> * @unregister_work: unregister the CEC adapter
> */
> struct drm_dp_aux_cec {
> struct mutex lock;
> struct cec_adapter *adap;
> - const char *name;
> - struct device *parent;
> + struct drm_connector *connector;
I think all current users could just pass the connector to
cec_set_edid(). So could save a pointer here.
Anyways
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> struct delayed_work unregister_work;
> };
>
> @@ -1451,8 +1450,8 @@ drm_dp_has_quirk(const struct drm_dp_desc *desc, enum drm_dp_quirk quirk)
>
> #ifdef CONFIG_DRM_DP_CEC
> void drm_dp_cec_irq(struct drm_dp_aux *aux);
> -void drm_dp_cec_register_connector(struct drm_dp_aux *aux, const char *name,
> - struct device *parent);
> +void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
> + struct drm_connector *connector);
> void drm_dp_cec_unregister_connector(struct drm_dp_aux *aux);
> void drm_dp_cec_set_edid(struct drm_dp_aux *aux, const struct edid *edid);
> void drm_dp_cec_unset_edid(struct drm_dp_aux *aux);
> @@ -1461,9 +1460,9 @@ static inline void drm_dp_cec_irq(struct drm_dp_aux *aux)
> {
> }
>
> -static inline void drm_dp_cec_register_connector(struct drm_dp_aux *aux,
> - const char *name,
> - struct device *parent)
> +static inline void
> +drm_dp_cec_register_connector(struct drm_dp_aux *aux,
> + struct drm_connector *connector)
> {
> }
>
> --
> 2.23.0.rc1.153.gdeed80330f-goog
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2019-08-28 15:05 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-08-14 10:44 [PATCH v7 0/9] drm: cec: convert DRM drivers to the new notifier API Dariusz Marcinkiewicz
2019-08-14 10:44 ` [PATCH v7 1/9] drm_dp_cec: add connector info support Dariusz Marcinkiewicz
2019-08-15 18:10 ` Lyude Paul
2019-08-26 9:05 ` Ben Skeggs
2019-08-22 8:08 ` Hans Verkuil
[not found] ` <38cda4f5-3299-2bd4-65f5-9a0f948902c6-qWit8jRvyhVmR6Xm/wNWPw@public.gmane.org>
2019-08-22 12:40 ` Deucher, Alexander
2019-08-26 9:00 ` Hans Verkuil
2019-08-28 15:05 ` Ville Syrjälä
2019-08-14 10:45 ` [PATCH v7 2/9] drm/i915/intel_hdmi: use cec_notifier_conn_(un)register Dariusz Marcinkiewicz
2019-08-22 8:03 ` Hans Verkuil
2019-08-26 8:59 ` Hans Verkuil
2019-08-26 12:08 ` Ville Syrjälä
2019-08-19 9:38 ` [PATCH v7 0/9] drm: cec: convert DRM drivers to the new notifier API Hans Verkuil
2019-08-19 11:28 ` Dariusz Marcinkiewicz
2019-08-19 12:00 ` Hans Verkuil
2019-08-19 14:48 ` Neil Armstrong
2019-08-19 14:55 ` Hans Verkuil
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox