* [RESEND 1/6] drm/bridge/analogix/anx6345: switch to struct drm_edid
2024-05-10 13:26 [RESEND 0/6] drm: struct drm_edid conversions Jani Nikula
@ 2024-05-10 13:26 ` Jani Nikula
2024-05-13 17:08 ` Robert Foss
2024-05-10 13:26 ` [RESEND 2/6] drm/bridge/analogix/anx78xx: " Jani Nikula
` (5 subsequent siblings)
6 siblings, 1 reply; 14+ messages in thread
From: Jani Nikula @ 2024-05-10 13:26 UTC (permalink / raw)
To: dri-devel
Cc: jani.nikula, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Prefer struct drm_edid based functions over struct edid.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
Cc: Andrzej Hajda <andrzej.hajda@intel.com>
Cc: Neil Armstrong <neil.armstrong@linaro.org>
Cc: Robert Foss <rfoss@kernel.org>
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
Cc: Jonas Karlman <jonas@kwiboo.se>
Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
---
.../gpu/drm/bridge/analogix/analogix-anx6345.c | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
index c9e35731e6a1..42ab6014fe12 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
@@ -47,7 +47,7 @@ struct anx6345 {
struct drm_dp_aux aux;
struct drm_bridge bridge;
struct i2c_client *client;
- struct edid *edid;
+ const struct drm_edid *drm_edid;
struct drm_connector connector;
struct drm_panel *panel;
struct regulator *dvdd12;
@@ -458,7 +458,7 @@ static int anx6345_get_modes(struct drm_connector *connector)
mutex_lock(&anx6345->lock);
- if (!anx6345->edid) {
+ if (!anx6345->drm_edid) {
if (!anx6345->powered) {
anx6345_poweron(anx6345);
power_off = true;
@@ -470,19 +470,18 @@ static int anx6345_get_modes(struct drm_connector *connector)
goto unlock;
}
- anx6345->edid = drm_get_edid(connector, &anx6345->aux.ddc);
- if (!anx6345->edid)
+ anx6345->drm_edid = drm_edid_read_ddc(connector, &anx6345->aux.ddc);
+ if (!anx6345->drm_edid)
DRM_ERROR("Failed to read EDID from panel\n");
- err = drm_connector_update_edid_property(connector,
- anx6345->edid);
+ err = drm_edid_connector_update(connector, anx6345->drm_edid);
if (err) {
DRM_ERROR("Failed to update EDID property: %d\n", err);
goto unlock;
}
}
- num_modes += drm_add_edid_modes(connector, anx6345->edid);
+ num_modes += drm_edid_connector_add_modes(connector);
/* Driver currently supports only 6bpc */
connector->display_info.bpc = 6;
@@ -793,7 +792,7 @@ static void anx6345_i2c_remove(struct i2c_client *client)
unregister_i2c_dummy_clients(anx6345);
- kfree(anx6345->edid);
+ drm_edid_free(anx6345->drm_edid);
mutex_destroy(&anx6345->lock);
}
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [RESEND 1/6] drm/bridge/analogix/anx6345: switch to struct drm_edid
2024-05-10 13:26 ` [RESEND 1/6] drm/bridge/analogix/anx6345: switch to struct drm_edid Jani Nikula
@ 2024-05-13 17:08 ` Robert Foss
0 siblings, 0 replies; 14+ messages in thread
From: Robert Foss @ 2024-05-13 17:08 UTC (permalink / raw)
To: Jani Nikula
Cc: dri-devel, Andrzej Hajda, Neil Armstrong, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec
On Fri, May 10, 2024 at 3:26 PM Jani Nikula <jani.nikula@intel.com> wrote:
>
> Prefer struct drm_edid based functions over struct edid.
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>
> ---
>
> Cc: Andrzej Hajda <andrzej.hajda@intel.com>
> Cc: Neil Armstrong <neil.armstrong@linaro.org>
> Cc: Robert Foss <rfoss@kernel.org>
> Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
> Cc: Jonas Karlman <jonas@kwiboo.se>
> Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
> ---
> .../gpu/drm/bridge/analogix/analogix-anx6345.c | 15 +++++++--------
> 1 file changed, 7 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
> index c9e35731e6a1..42ab6014fe12 100644
> --- a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
> +++ b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c
> @@ -47,7 +47,7 @@ struct anx6345 {
> struct drm_dp_aux aux;
> struct drm_bridge bridge;
> struct i2c_client *client;
> - struct edid *edid;
> + const struct drm_edid *drm_edid;
> struct drm_connector connector;
> struct drm_panel *panel;
> struct regulator *dvdd12;
> @@ -458,7 +458,7 @@ static int anx6345_get_modes(struct drm_connector *connector)
>
> mutex_lock(&anx6345->lock);
>
> - if (!anx6345->edid) {
> + if (!anx6345->drm_edid) {
> if (!anx6345->powered) {
> anx6345_poweron(anx6345);
> power_off = true;
> @@ -470,19 +470,18 @@ static int anx6345_get_modes(struct drm_connector *connector)
> goto unlock;
> }
>
> - anx6345->edid = drm_get_edid(connector, &anx6345->aux.ddc);
> - if (!anx6345->edid)
> + anx6345->drm_edid = drm_edid_read_ddc(connector, &anx6345->aux.ddc);
> + if (!anx6345->drm_edid)
> DRM_ERROR("Failed to read EDID from panel\n");
>
> - err = drm_connector_update_edid_property(connector,
> - anx6345->edid);
> + err = drm_edid_connector_update(connector, anx6345->drm_edid);
> if (err) {
> DRM_ERROR("Failed to update EDID property: %d\n", err);
> goto unlock;
> }
> }
>
> - num_modes += drm_add_edid_modes(connector, anx6345->edid);
> + num_modes += drm_edid_connector_add_modes(connector);
>
> /* Driver currently supports only 6bpc */
> connector->display_info.bpc = 6;
> @@ -793,7 +792,7 @@ static void anx6345_i2c_remove(struct i2c_client *client)
>
> unregister_i2c_dummy_clients(anx6345);
>
> - kfree(anx6345->edid);
> + drm_edid_free(anx6345->drm_edid);
>
> mutex_destroy(&anx6345->lock);
> }
> --
> 2.39.2
>
Reviewed-by: Robert Foss <rfoss@kernel.org>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [RESEND 2/6] drm/bridge/analogix/anx78xx: switch to struct drm_edid
2024-05-10 13:26 [RESEND 0/6] drm: struct drm_edid conversions Jani Nikula
2024-05-10 13:26 ` [RESEND 1/6] drm/bridge/analogix/anx6345: switch to struct drm_edid Jani Nikula
@ 2024-05-10 13:26 ` Jani Nikula
2024-05-13 17:09 ` Robert Foss
2024-05-10 13:26 ` [RESEND 3/6] drm/bridge: anx7625: use struct drm_edid more Jani Nikula
` (4 subsequent siblings)
6 siblings, 1 reply; 14+ messages in thread
From: Jani Nikula @ 2024-05-10 13:26 UTC (permalink / raw)
To: dri-devel
Cc: jani.nikula, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Prefer struct drm_edid based functions over struct edid.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
Cc: Andrzej Hajda <andrzej.hajda@intel.com>
Cc: Neil Armstrong <neil.armstrong@linaro.org>
Cc: Robert Foss <rfoss@kernel.org>
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
Cc: Jonas Karlman <jonas@kwiboo.se>
Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
---
.../drm/bridge/analogix/analogix-anx78xx.c | 23 ++++++++++---------
1 file changed, 12 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
index 5748a8581af4..ae79bcd8fa55 100644
--- a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
+++ b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
@@ -67,7 +67,7 @@ struct anx78xx {
struct drm_dp_aux aux;
struct drm_bridge bridge;
struct i2c_client *client;
- struct edid *edid;
+ const struct drm_edid *drm_edid;
struct drm_connector connector;
struct anx78xx_platform_data pdata;
struct mutex lock;
@@ -830,8 +830,8 @@ static int anx78xx_get_modes(struct drm_connector *connector)
if (WARN_ON(!anx78xx->powered))
return 0;
- if (anx78xx->edid)
- return drm_add_edid_modes(connector, anx78xx->edid);
+ if (anx78xx->drm_edid)
+ return drm_edid_connector_add_modes(connector);
mutex_lock(&anx78xx->lock);
@@ -841,20 +841,21 @@ static int anx78xx_get_modes(struct drm_connector *connector)
goto unlock;
}
- anx78xx->edid = drm_get_edid(connector, &anx78xx->aux.ddc);
- if (!anx78xx->edid) {
+ anx78xx->drm_edid = drm_edid_read_ddc(connector, &anx78xx->aux.ddc);
+
+ err = drm_edid_connector_update(connector, anx78xx->drm_edid);
+
+ if (!anx78xx->drm_edid) {
DRM_ERROR("Failed to read EDID\n");
goto unlock;
}
- err = drm_connector_update_edid_property(connector,
- anx78xx->edid);
if (err) {
DRM_ERROR("Failed to update EDID property: %d\n", err);
goto unlock;
}
- num_modes = drm_add_edid_modes(connector, anx78xx->edid);
+ num_modes = drm_edid_connector_add_modes(connector);
unlock:
mutex_unlock(&anx78xx->lock);
@@ -1091,8 +1092,8 @@ static bool anx78xx_handle_common_int_4(struct anx78xx *anx78xx, u8 irq)
event = true;
anx78xx_poweroff(anx78xx);
/* Free cached EDID */
- kfree(anx78xx->edid);
- anx78xx->edid = NULL;
+ drm_edid_free(anx78xx->drm_edid);
+ anx78xx->drm_edid = NULL;
} else if (irq & SP_HPD_PLUG) {
DRM_DEBUG_KMS("IRQ: Hot plug detect - cable plug\n");
event = true;
@@ -1363,7 +1364,7 @@ static void anx78xx_i2c_remove(struct i2c_client *client)
unregister_i2c_dummy_clients(anx78xx);
- kfree(anx78xx->edid);
+ drm_edid_free(anx78xx->drm_edid);
}
static const struct of_device_id anx78xx_match_table[] = {
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [RESEND 2/6] drm/bridge/analogix/anx78xx: switch to struct drm_edid
2024-05-10 13:26 ` [RESEND 2/6] drm/bridge/analogix/anx78xx: " Jani Nikula
@ 2024-05-13 17:09 ` Robert Foss
0 siblings, 0 replies; 14+ messages in thread
From: Robert Foss @ 2024-05-13 17:09 UTC (permalink / raw)
To: Jani Nikula
Cc: dri-devel, Andrzej Hajda, Neil Armstrong, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec
On Fri, May 10, 2024 at 3:26 PM Jani Nikula <jani.nikula@intel.com> wrote:
>
> Prefer struct drm_edid based functions over struct edid.
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>
> ---
>
> Cc: Andrzej Hajda <andrzej.hajda@intel.com>
> Cc: Neil Armstrong <neil.armstrong@linaro.org>
> Cc: Robert Foss <rfoss@kernel.org>
> Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
> Cc: Jonas Karlman <jonas@kwiboo.se>
> Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
> ---
> .../drm/bridge/analogix/analogix-anx78xx.c | 23 ++++++++++---------
> 1 file changed, 12 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
> index 5748a8581af4..ae79bcd8fa55 100644
> --- a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
> +++ b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c
> @@ -67,7 +67,7 @@ struct anx78xx {
> struct drm_dp_aux aux;
> struct drm_bridge bridge;
> struct i2c_client *client;
> - struct edid *edid;
> + const struct drm_edid *drm_edid;
> struct drm_connector connector;
> struct anx78xx_platform_data pdata;
> struct mutex lock;
> @@ -830,8 +830,8 @@ static int anx78xx_get_modes(struct drm_connector *connector)
> if (WARN_ON(!anx78xx->powered))
> return 0;
>
> - if (anx78xx->edid)
> - return drm_add_edid_modes(connector, anx78xx->edid);
> + if (anx78xx->drm_edid)
> + return drm_edid_connector_add_modes(connector);
>
> mutex_lock(&anx78xx->lock);
>
> @@ -841,20 +841,21 @@ static int anx78xx_get_modes(struct drm_connector *connector)
> goto unlock;
> }
>
> - anx78xx->edid = drm_get_edid(connector, &anx78xx->aux.ddc);
> - if (!anx78xx->edid) {
> + anx78xx->drm_edid = drm_edid_read_ddc(connector, &anx78xx->aux.ddc);
> +
> + err = drm_edid_connector_update(connector, anx78xx->drm_edid);
> +
> + if (!anx78xx->drm_edid) {
> DRM_ERROR("Failed to read EDID\n");
> goto unlock;
> }
>
> - err = drm_connector_update_edid_property(connector,
> - anx78xx->edid);
> if (err) {
> DRM_ERROR("Failed to update EDID property: %d\n", err);
> goto unlock;
> }
>
> - num_modes = drm_add_edid_modes(connector, anx78xx->edid);
> + num_modes = drm_edid_connector_add_modes(connector);
>
> unlock:
> mutex_unlock(&anx78xx->lock);
> @@ -1091,8 +1092,8 @@ static bool anx78xx_handle_common_int_4(struct anx78xx *anx78xx, u8 irq)
> event = true;
> anx78xx_poweroff(anx78xx);
> /* Free cached EDID */
> - kfree(anx78xx->edid);
> - anx78xx->edid = NULL;
> + drm_edid_free(anx78xx->drm_edid);
> + anx78xx->drm_edid = NULL;
> } else if (irq & SP_HPD_PLUG) {
> DRM_DEBUG_KMS("IRQ: Hot plug detect - cable plug\n");
> event = true;
> @@ -1363,7 +1364,7 @@ static void anx78xx_i2c_remove(struct i2c_client *client)
>
> unregister_i2c_dummy_clients(anx78xx);
>
> - kfree(anx78xx->edid);
> + drm_edid_free(anx78xx->drm_edid);
> }
>
> static const struct of_device_id anx78xx_match_table[] = {
> --
> 2.39.2
>
Reviewed-by: Robert Foss <rfoss@kernel.org>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [RESEND 3/6] drm/bridge: anx7625: use struct drm_edid more
2024-05-10 13:26 [RESEND 0/6] drm: struct drm_edid conversions Jani Nikula
2024-05-10 13:26 ` [RESEND 1/6] drm/bridge/analogix/anx6345: switch to struct drm_edid Jani Nikula
2024-05-10 13:26 ` [RESEND 2/6] drm/bridge/analogix/anx78xx: " Jani Nikula
@ 2024-05-10 13:26 ` Jani Nikula
2024-05-13 17:10 ` Robert Foss
2024-05-10 13:26 ` [RESEND 4/6] drm/i2c: tda998x: switch to struct drm_edid Jani Nikula
` (3 subsequent siblings)
6 siblings, 1 reply; 14+ messages in thread
From: Jani Nikula @ 2024-05-10 13:26 UTC (permalink / raw)
To: dri-devel
Cc: jani.nikula, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec
Prefer struct drm_edid based functions over struct edid.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
Cc: Andrzej Hajda <andrzej.hajda@intel.com>
Cc: Neil Armstrong <neil.armstrong@linaro.org>
Cc: Robert Foss <rfoss@kernel.org>
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
Cc: Jonas Karlman <jonas@kwiboo.se>
Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
---
drivers/gpu/drm/bridge/analogix/anx7625.c | 26 +++++++++++++++--------
drivers/gpu/drm/bridge/analogix/anx7625.h | 10 ++-------
2 files changed, 19 insertions(+), 17 deletions(-)
diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
index 59e9ad349969..d19975c5e5e5 100644
--- a/drivers/gpu/drm/bridge/analogix/anx7625.c
+++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
@@ -464,9 +464,11 @@ static int anx7625_odfc_config(struct anx7625_data *ctx,
*/
static int anx7625_set_k_value(struct anx7625_data *ctx)
{
- struct edid *edid = (struct edid *)ctx->slimport_edid_p.edid_raw_data;
+ struct drm_edid_product_id id;
- if (edid->mfg_id[0] == IVO_MID0 && edid->mfg_id[1] == IVO_MID1)
+ drm_edid_get_product_id(ctx->cached_drm_edid, &id);
+
+ if (be16_to_cpu(id.manufacturer_name) == IVO_MID)
return anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
MIPI_DIGITAL_ADJ_1, 0x3B);
@@ -1526,7 +1528,8 @@ static int anx7625_wait_hpd_asserted(struct drm_dp_aux *aux,
static void anx7625_remove_edid(struct anx7625_data *ctx)
{
- ctx->slimport_edid_p.edid_block_num = -1;
+ drm_edid_free(ctx->cached_drm_edid);
+ ctx->cached_drm_edid = NULL;
}
static void anx7625_dp_adjust_swing(struct anx7625_data *ctx)
@@ -1787,27 +1790,32 @@ static ssize_t anx7625_aux_transfer(struct drm_dp_aux *aux,
static const struct drm_edid *anx7625_edid_read(struct anx7625_data *ctx)
{
struct device *dev = ctx->dev;
- struct s_edid_data *p_edid = &ctx->slimport_edid_p;
+ u8 *edid_buf;
int edid_num;
- if (ctx->slimport_edid_p.edid_block_num > 0)
+ if (ctx->cached_drm_edid)
goto out;
+ edid_buf = kmalloc(FOUR_BLOCK_SIZE, GFP_KERNEL);
+ if (!edid_buf)
+ return NULL;
+
pm_runtime_get_sync(dev);
_anx7625_hpd_polling(ctx, 5000 * 100);
- edid_num = sp_tx_edid_read(ctx, p_edid->edid_raw_data);
+ edid_num = sp_tx_edid_read(ctx, edid_buf);
pm_runtime_put_sync(dev);
if (edid_num < 1) {
DRM_DEV_ERROR(dev, "Fail to read EDID: %d\n", edid_num);
+ kfree(edid_buf);
return NULL;
}
- p_edid->edid_block_num = edid_num;
+ ctx->cached_drm_edid = drm_edid_alloc(edid_buf, FOUR_BLOCK_SIZE);
+ kfree(edid_buf);
out:
- return drm_edid_alloc(ctx->slimport_edid_p.edid_raw_data,
- FOUR_BLOCK_SIZE);
+ return drm_edid_dup(ctx->cached_drm_edid);
}
static enum drm_connector_status anx7625_sink_detect(struct anx7625_data *ctx)
diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.h b/drivers/gpu/drm/bridge/analogix/anx7625.h
index 39ed35d33836..eb5580f1ab2f 100644
--- a/drivers/gpu/drm/bridge/analogix/anx7625.h
+++ b/drivers/gpu/drm/bridge/analogix/anx7625.h
@@ -286,8 +286,7 @@
#define MIPI_LANE_CTRL_10 0x0F
#define MIPI_DIGITAL_ADJ_1 0x1B
-#define IVO_MID0 0x26
-#define IVO_MID1 0xCF
+#define IVO_MID 0x26CF
#define MIPI_PLL_M_NUM_23_16 0x1E
#define MIPI_PLL_M_NUM_15_8 0x1F
@@ -417,11 +416,6 @@ enum audio_wd_len {
#define EDID_TRY_CNT 3
#define SUPPORT_PIXEL_CLOCK 300000
-struct s_edid_data {
- int edid_block_num;
- u8 edid_raw_data[FOUR_BLOCK_SIZE];
-};
-
/***************** Display End *****************/
#define MAX_LANES_SUPPORT 4
@@ -466,7 +460,7 @@ struct anx7625_data {
struct anx7625_i2c_client i2c;
struct i2c_client *last_client;
struct timer_list hdcp_timer;
- struct s_edid_data slimport_edid_p;
+ const struct drm_edid *cached_drm_edid;
struct device *codec_dev;
hdmi_codec_plugged_cb plugged_cb;
struct work_struct work;
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [RESEND 3/6] drm/bridge: anx7625: use struct drm_edid more
2024-05-10 13:26 ` [RESEND 3/6] drm/bridge: anx7625: use struct drm_edid more Jani Nikula
@ 2024-05-13 17:10 ` Robert Foss
0 siblings, 0 replies; 14+ messages in thread
From: Robert Foss @ 2024-05-13 17:10 UTC (permalink / raw)
To: Jani Nikula
Cc: dri-devel, Andrzej Hajda, Neil Armstrong, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec
On Fri, May 10, 2024 at 3:26 PM Jani Nikula <jani.nikula@intel.com> wrote:
>
> Prefer struct drm_edid based functions over struct edid.
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>
> ---
>
> Cc: Andrzej Hajda <andrzej.hajda@intel.com>
> Cc: Neil Armstrong <neil.armstrong@linaro.org>
> Cc: Robert Foss <rfoss@kernel.org>
> Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
> Cc: Jonas Karlman <jonas@kwiboo.se>
> Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
> ---
> drivers/gpu/drm/bridge/analogix/anx7625.c | 26 +++++++++++++++--------
> drivers/gpu/drm/bridge/analogix/anx7625.h | 10 ++-------
> 2 files changed, 19 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
> index 59e9ad349969..d19975c5e5e5 100644
> --- a/drivers/gpu/drm/bridge/analogix/anx7625.c
> +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
> @@ -464,9 +464,11 @@ static int anx7625_odfc_config(struct anx7625_data *ctx,
> */
> static int anx7625_set_k_value(struct anx7625_data *ctx)
> {
> - struct edid *edid = (struct edid *)ctx->slimport_edid_p.edid_raw_data;
> + struct drm_edid_product_id id;
>
> - if (edid->mfg_id[0] == IVO_MID0 && edid->mfg_id[1] == IVO_MID1)
> + drm_edid_get_product_id(ctx->cached_drm_edid, &id);
> +
> + if (be16_to_cpu(id.manufacturer_name) == IVO_MID)
> return anx7625_reg_write(ctx, ctx->i2c.rx_p1_client,
> MIPI_DIGITAL_ADJ_1, 0x3B);
>
> @@ -1526,7 +1528,8 @@ static int anx7625_wait_hpd_asserted(struct drm_dp_aux *aux,
>
> static void anx7625_remove_edid(struct anx7625_data *ctx)
> {
> - ctx->slimport_edid_p.edid_block_num = -1;
> + drm_edid_free(ctx->cached_drm_edid);
> + ctx->cached_drm_edid = NULL;
> }
>
> static void anx7625_dp_adjust_swing(struct anx7625_data *ctx)
> @@ -1787,27 +1790,32 @@ static ssize_t anx7625_aux_transfer(struct drm_dp_aux *aux,
> static const struct drm_edid *anx7625_edid_read(struct anx7625_data *ctx)
> {
> struct device *dev = ctx->dev;
> - struct s_edid_data *p_edid = &ctx->slimport_edid_p;
> + u8 *edid_buf;
> int edid_num;
>
> - if (ctx->slimport_edid_p.edid_block_num > 0)
> + if (ctx->cached_drm_edid)
> goto out;
>
> + edid_buf = kmalloc(FOUR_BLOCK_SIZE, GFP_KERNEL);
> + if (!edid_buf)
> + return NULL;
> +
> pm_runtime_get_sync(dev);
> _anx7625_hpd_polling(ctx, 5000 * 100);
> - edid_num = sp_tx_edid_read(ctx, p_edid->edid_raw_data);
> + edid_num = sp_tx_edid_read(ctx, edid_buf);
> pm_runtime_put_sync(dev);
>
> if (edid_num < 1) {
> DRM_DEV_ERROR(dev, "Fail to read EDID: %d\n", edid_num);
> + kfree(edid_buf);
> return NULL;
> }
>
> - p_edid->edid_block_num = edid_num;
> + ctx->cached_drm_edid = drm_edid_alloc(edid_buf, FOUR_BLOCK_SIZE);
> + kfree(edid_buf);
>
> out:
> - return drm_edid_alloc(ctx->slimport_edid_p.edid_raw_data,
> - FOUR_BLOCK_SIZE);
> + return drm_edid_dup(ctx->cached_drm_edid);
> }
>
> static enum drm_connector_status anx7625_sink_detect(struct anx7625_data *ctx)
> diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.h b/drivers/gpu/drm/bridge/analogix/anx7625.h
> index 39ed35d33836..eb5580f1ab2f 100644
> --- a/drivers/gpu/drm/bridge/analogix/anx7625.h
> +++ b/drivers/gpu/drm/bridge/analogix/anx7625.h
> @@ -286,8 +286,7 @@
>
> #define MIPI_LANE_CTRL_10 0x0F
> #define MIPI_DIGITAL_ADJ_1 0x1B
> -#define IVO_MID0 0x26
> -#define IVO_MID1 0xCF
> +#define IVO_MID 0x26CF
>
> #define MIPI_PLL_M_NUM_23_16 0x1E
> #define MIPI_PLL_M_NUM_15_8 0x1F
> @@ -417,11 +416,6 @@ enum audio_wd_len {
> #define EDID_TRY_CNT 3
> #define SUPPORT_PIXEL_CLOCK 300000
>
> -struct s_edid_data {
> - int edid_block_num;
> - u8 edid_raw_data[FOUR_BLOCK_SIZE];
> -};
> -
> /***************** Display End *****************/
>
> #define MAX_LANES_SUPPORT 4
> @@ -466,7 +460,7 @@ struct anx7625_data {
> struct anx7625_i2c_client i2c;
> struct i2c_client *last_client;
> struct timer_list hdcp_timer;
> - struct s_edid_data slimport_edid_p;
> + const struct drm_edid *cached_drm_edid;
> struct device *codec_dev;
> hdmi_codec_plugged_cb plugged_cb;
> struct work_struct work;
> --
> 2.39.2
>
Reviewed-by: Robert Foss <rfoss@kernel.org>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [RESEND 4/6] drm/i2c: tda998x: switch to struct drm_edid
2024-05-10 13:26 [RESEND 0/6] drm: struct drm_edid conversions Jani Nikula
` (2 preceding siblings ...)
2024-05-10 13:26 ` [RESEND 3/6] drm/bridge: anx7625: use struct drm_edid more Jani Nikula
@ 2024-05-10 13:26 ` Jani Nikula
2024-05-13 17:07 ` Robert Foss
2024-05-10 13:26 ` [RESEND 5/6] drm/bochs: " Jani Nikula
` (2 subsequent siblings)
6 siblings, 1 reply; 14+ messages in thread
From: Jani Nikula @ 2024-05-10 13:26 UTC (permalink / raw)
To: dri-devel; +Cc: jani.nikula, Russell King
Prefer struct drm_edid based functions over struct edid.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
Cc: Russell King <linux@armlinux.org.uk>
---
drivers/gpu/drm/i2c/tda998x_drv.c | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c
index d8d7de18dd65..2160f05bbd16 100644
--- a/drivers/gpu/drm/i2c/tda998x_drv.c
+++ b/drivers/gpu/drm/i2c/tda998x_drv.c
@@ -1283,7 +1283,7 @@ static int read_edid_block(void *data, u8 *buf, unsigned int blk, size_t length)
static int tda998x_connector_get_modes(struct drm_connector *connector)
{
struct tda998x_priv *priv = conn_to_tda998x_priv(connector);
- struct edid *edid;
+ const struct drm_edid *drm_edid;
int n;
/*
@@ -1297,25 +1297,26 @@ static int tda998x_connector_get_modes(struct drm_connector *connector)
if (priv->rev == TDA19988)
reg_clear(priv, REG_TX4, TX4_PD_RAM);
- edid = drm_do_get_edid(connector, read_edid_block, priv);
+ drm_edid = drm_edid_read_custom(connector, read_edid_block, priv);
if (priv->rev == TDA19988)
reg_set(priv, REG_TX4, TX4_PD_RAM);
- if (!edid) {
+ drm_edid_connector_update(connector, drm_edid);
+ cec_notifier_set_phys_addr(priv->cec_notify,
+ connector->display_info.source_physical_address);
+
+ if (!drm_edid) {
dev_warn(&priv->hdmi->dev, "failed to read EDID\n");
return 0;
}
- drm_connector_update_edid_property(connector, edid);
- cec_notifier_set_phys_addr_from_edid(priv->cec_notify, edid);
-
mutex_lock(&priv->audio_mutex);
- n = drm_add_edid_modes(connector, edid);
- priv->sink_has_audio = drm_detect_monitor_audio(edid);
+ n = drm_edid_connector_add_modes(connector);
+ priv->sink_has_audio = connector->display_info.has_audio;
mutex_unlock(&priv->audio_mutex);
- kfree(edid);
+ drm_edid_free(drm_edid);
return n;
}
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [RESEND 4/6] drm/i2c: tda998x: switch to struct drm_edid
2024-05-10 13:26 ` [RESEND 4/6] drm/i2c: tda998x: switch to struct drm_edid Jani Nikula
@ 2024-05-13 17:07 ` Robert Foss
0 siblings, 0 replies; 14+ messages in thread
From: Robert Foss @ 2024-05-13 17:07 UTC (permalink / raw)
To: Jani Nikula; +Cc: dri-devel, Russell King
On Fri, May 10, 2024 at 3:26 PM Jani Nikula <jani.nikula@intel.com> wrote:
>
> Prefer struct drm_edid based functions over struct edid.
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>
> ---
>
> Cc: Russell King <linux@armlinux.org.uk>
> ---
> drivers/gpu/drm/i2c/tda998x_drv.c | 19 ++++++++++---------
> 1 file changed, 10 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c
> index d8d7de18dd65..2160f05bbd16 100644
> --- a/drivers/gpu/drm/i2c/tda998x_drv.c
> +++ b/drivers/gpu/drm/i2c/tda998x_drv.c
> @@ -1283,7 +1283,7 @@ static int read_edid_block(void *data, u8 *buf, unsigned int blk, size_t length)
> static int tda998x_connector_get_modes(struct drm_connector *connector)
> {
> struct tda998x_priv *priv = conn_to_tda998x_priv(connector);
> - struct edid *edid;
> + const struct drm_edid *drm_edid;
> int n;
>
> /*
> @@ -1297,25 +1297,26 @@ static int tda998x_connector_get_modes(struct drm_connector *connector)
> if (priv->rev == TDA19988)
> reg_clear(priv, REG_TX4, TX4_PD_RAM);
>
> - edid = drm_do_get_edid(connector, read_edid_block, priv);
> + drm_edid = drm_edid_read_custom(connector, read_edid_block, priv);
>
> if (priv->rev == TDA19988)
> reg_set(priv, REG_TX4, TX4_PD_RAM);
>
> - if (!edid) {
> + drm_edid_connector_update(connector, drm_edid);
> + cec_notifier_set_phys_addr(priv->cec_notify,
> + connector->display_info.source_physical_address);
> +
> + if (!drm_edid) {
> dev_warn(&priv->hdmi->dev, "failed to read EDID\n");
> return 0;
> }
>
> - drm_connector_update_edid_property(connector, edid);
> - cec_notifier_set_phys_addr_from_edid(priv->cec_notify, edid);
> -
> mutex_lock(&priv->audio_mutex);
> - n = drm_add_edid_modes(connector, edid);
> - priv->sink_has_audio = drm_detect_monitor_audio(edid);
> + n = drm_edid_connector_add_modes(connector);
> + priv->sink_has_audio = connector->display_info.has_audio;
> mutex_unlock(&priv->audio_mutex);
>
> - kfree(edid);
> + drm_edid_free(drm_edid);
>
> return n;
> }
> --
> 2.39.2
>
Reviewed-by: Robert Foss <rfoss@kernel.org>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [RESEND 5/6] drm/bochs: switch to struct drm_edid
2024-05-10 13:26 [RESEND 0/6] drm: struct drm_edid conversions Jani Nikula
` (3 preceding siblings ...)
2024-05-10 13:26 ` [RESEND 4/6] drm/i2c: tda998x: switch to struct drm_edid Jani Nikula
@ 2024-05-10 13:26 ` Jani Nikula
2024-05-13 17:04 ` Robert Foss
2024-05-10 13:26 ` [RESEND 6/6] drm/virtio: " Jani Nikula
2024-05-13 17:16 ` [RESEND 0/6] drm: struct drm_edid conversions Robert Foss
6 siblings, 1 reply; 14+ messages in thread
From: Jani Nikula @ 2024-05-10 13:26 UTC (permalink / raw)
To: dri-devel; +Cc: jani.nikula, Gerd Hoffmann, virtualization
Prefer struct drm_edid based functions over struct edid.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: virtualization@lists.linux.dev
---
drivers/gpu/drm/tiny/bochs.c | 23 ++++++++++-------------
1 file changed, 10 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/tiny/bochs.c b/drivers/gpu/drm/tiny/bochs.c
index 2d7ad808cc0e..d12d6e0bf3df 100644
--- a/drivers/gpu/drm/tiny/bochs.c
+++ b/drivers/gpu/drm/tiny/bochs.c
@@ -85,7 +85,7 @@ struct bochs_device {
u16 yres_virtual;
u32 stride;
u32 bpp;
- struct edid *edid;
+ const struct drm_edid *drm_edid;
/* drm */
struct drm_device *dev;
@@ -199,10 +199,10 @@ static int bochs_hw_load_edid(struct bochs_device *bochs)
if (drm_edid_header_is_valid(header) != 8)
return -1;
- kfree(bochs->edid);
- bochs->edid = drm_do_get_edid(&bochs->connector,
- bochs_get_edid_block, bochs);
- if (bochs->edid == NULL)
+ drm_edid_free(bochs->drm_edid);
+ bochs->drm_edid = drm_edid_read_custom(&bochs->connector,
+ bochs_get_edid_block, bochs);
+ if (bochs->drm_edid == NULL)
return -1;
return 0;
@@ -303,7 +303,7 @@ static void bochs_hw_fini(struct drm_device *dev)
if (bochs->fb_map)
iounmap(bochs->fb_map);
pci_release_regions(to_pci_dev(dev->dev));
- kfree(bochs->edid);
+ drm_edid_free(bochs->drm_edid);
}
static void bochs_hw_blank(struct bochs_device *bochs, bool blank)
@@ -471,12 +471,9 @@ static const struct drm_simple_display_pipe_funcs bochs_pipe_funcs = {
static int bochs_connector_get_modes(struct drm_connector *connector)
{
- struct bochs_device *bochs =
- container_of(connector, struct bochs_device, connector);
- int count = 0;
+ int count;
- if (bochs->edid)
- count = drm_add_edid_modes(connector, bochs->edid);
+ count = drm_edid_connector_add_modes(connector);
if (!count) {
count = drm_add_modes_noedid(connector, 8192, 8192);
@@ -507,10 +504,10 @@ static void bochs_connector_init(struct drm_device *dev)
drm_connector_helper_add(connector, &bochs_connector_connector_helper_funcs);
bochs_hw_load_edid(bochs);
- if (bochs->edid) {
+ if (bochs->drm_edid) {
DRM_INFO("Found EDID data blob.\n");
drm_connector_attach_edid_property(connector);
- drm_connector_update_edid_property(connector, bochs->edid);
+ drm_edid_connector_update(&bochs->connector, bochs->drm_edid);
}
}
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [RESEND 5/6] drm/bochs: switch to struct drm_edid
2024-05-10 13:26 ` [RESEND 5/6] drm/bochs: " Jani Nikula
@ 2024-05-13 17:04 ` Robert Foss
0 siblings, 0 replies; 14+ messages in thread
From: Robert Foss @ 2024-05-13 17:04 UTC (permalink / raw)
To: Jani Nikula; +Cc: dri-devel, Gerd Hoffmann, virtualization
On Fri, May 10, 2024 at 3:27 PM Jani Nikula <jani.nikula@intel.com> wrote:
>
> Prefer struct drm_edid based functions over struct edid.
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>
> ---
>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: virtualization@lists.linux.dev
> ---
> drivers/gpu/drm/tiny/bochs.c | 23 ++++++++++-------------
> 1 file changed, 10 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/tiny/bochs.c b/drivers/gpu/drm/tiny/bochs.c
> index 2d7ad808cc0e..d12d6e0bf3df 100644
> --- a/drivers/gpu/drm/tiny/bochs.c
> +++ b/drivers/gpu/drm/tiny/bochs.c
> @@ -85,7 +85,7 @@ struct bochs_device {
> u16 yres_virtual;
> u32 stride;
> u32 bpp;
> - struct edid *edid;
> + const struct drm_edid *drm_edid;
>
> /* drm */
> struct drm_device *dev;
> @@ -199,10 +199,10 @@ static int bochs_hw_load_edid(struct bochs_device *bochs)
> if (drm_edid_header_is_valid(header) != 8)
> return -1;
>
> - kfree(bochs->edid);
> - bochs->edid = drm_do_get_edid(&bochs->connector,
> - bochs_get_edid_block, bochs);
> - if (bochs->edid == NULL)
> + drm_edid_free(bochs->drm_edid);
> + bochs->drm_edid = drm_edid_read_custom(&bochs->connector,
> + bochs_get_edid_block, bochs);
> + if (bochs->drm_edid == NULL)
> return -1;
>
> return 0;
> @@ -303,7 +303,7 @@ static void bochs_hw_fini(struct drm_device *dev)
> if (bochs->fb_map)
> iounmap(bochs->fb_map);
> pci_release_regions(to_pci_dev(dev->dev));
> - kfree(bochs->edid);
> + drm_edid_free(bochs->drm_edid);
> }
>
> static void bochs_hw_blank(struct bochs_device *bochs, bool blank)
> @@ -471,12 +471,9 @@ static const struct drm_simple_display_pipe_funcs bochs_pipe_funcs = {
>
> static int bochs_connector_get_modes(struct drm_connector *connector)
> {
> - struct bochs_device *bochs =
> - container_of(connector, struct bochs_device, connector);
> - int count = 0;
> + int count;
>
> - if (bochs->edid)
> - count = drm_add_edid_modes(connector, bochs->edid);
> + count = drm_edid_connector_add_modes(connector);
>
> if (!count) {
> count = drm_add_modes_noedid(connector, 8192, 8192);
> @@ -507,10 +504,10 @@ static void bochs_connector_init(struct drm_device *dev)
> drm_connector_helper_add(connector, &bochs_connector_connector_helper_funcs);
>
> bochs_hw_load_edid(bochs);
> - if (bochs->edid) {
> + if (bochs->drm_edid) {
> DRM_INFO("Found EDID data blob.\n");
> drm_connector_attach_edid_property(connector);
> - drm_connector_update_edid_property(connector, bochs->edid);
> + drm_edid_connector_update(&bochs->connector, bochs->drm_edid);
> }
> }
>
> --
> 2.39.2
>
Reviewed-by: Robert Foss <rfoss@kernel.org>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [RESEND 6/6] drm/virtio: switch to struct drm_edid
2024-05-10 13:26 [RESEND 0/6] drm: struct drm_edid conversions Jani Nikula
` (4 preceding siblings ...)
2024-05-10 13:26 ` [RESEND 5/6] drm/bochs: " Jani Nikula
@ 2024-05-10 13:26 ` Jani Nikula
2024-05-13 17:03 ` Robert Foss
2024-05-13 17:16 ` [RESEND 0/6] drm: struct drm_edid conversions Robert Foss
6 siblings, 1 reply; 14+ messages in thread
From: Jani Nikula @ 2024-05-10 13:26 UTC (permalink / raw)
To: dri-devel
Cc: jani.nikula, David Airlie, Gerd Hoffmann, Gurchetan Singh,
Chia-I Wu, virtualization
Prefer struct drm_edid based functions over struct edid.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
Cc: David Airlie <airlied@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Gurchetan Singh <gurchetansingh@chromium.org>
Cc: Chia-I Wu <olvaffe@gmail.com>
Cc: virtualization@lists.linux.dev
---
drivers/gpu/drm/virtio/virtgpu_display.c | 10 ++++------
drivers/gpu/drm/virtio/virtgpu_drv.h | 2 +-
drivers/gpu/drm/virtio/virtgpu_vq.c | 12 ++++++------
3 files changed, 11 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c b/drivers/gpu/drm/virtio/virtgpu_display.c
index ad924a8502e9..64baf2f22d9f 100644
--- a/drivers/gpu/drm/virtio/virtgpu_display.c
+++ b/drivers/gpu/drm/virtio/virtgpu_display.c
@@ -164,11 +164,9 @@ static int virtio_gpu_conn_get_modes(struct drm_connector *connector)
struct drm_display_mode *mode = NULL;
int count, width, height;
- if (output->edid) {
- count = drm_add_edid_modes(connector, output->edid);
- if (count)
- return count;
- }
+ count = drm_edid_connector_add_modes(connector);
+ if (count)
+ return count;
width = le32_to_cpu(output->info.r.width);
height = le32_to_cpu(output->info.r.height);
@@ -369,5 +367,5 @@ void virtio_gpu_modeset_fini(struct virtio_gpu_device *vgdev)
return;
for (i = 0 ; i < vgdev->num_scanouts; ++i)
- kfree(vgdev->outputs[i].edid);
+ drm_edid_free(vgdev->outputs[i].drm_edid);
}
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h
index bb7d86a0c6a1..64c236169db8 100644
--- a/drivers/gpu/drm/virtio/virtgpu_drv.h
+++ b/drivers/gpu/drm/virtio/virtgpu_drv.h
@@ -179,7 +179,7 @@ struct virtio_gpu_output {
struct drm_encoder enc;
struct virtio_gpu_display_one info;
struct virtio_gpu_update_cursor cursor;
- struct edid *edid;
+ const struct drm_edid *drm_edid;
int cur_x;
int cur_y;
bool needs_modeset;
diff --git a/drivers/gpu/drm/virtio/virtgpu_vq.c b/drivers/gpu/drm/virtio/virtgpu_vq.c
index b1a00c0c25a7..0d3d0d09f39b 100644
--- a/drivers/gpu/drm/virtio/virtgpu_vq.c
+++ b/drivers/gpu/drm/virtio/virtgpu_vq.c
@@ -741,21 +741,21 @@ static void virtio_gpu_cmd_get_edid_cb(struct virtio_gpu_device *vgdev,
(struct virtio_gpu_resp_edid *)vbuf->resp_buf;
uint32_t scanout = le32_to_cpu(cmd->scanout);
struct virtio_gpu_output *output;
- struct edid *new_edid, *old_edid;
+ const struct drm_edid *new_edid, *old_edid;
if (scanout >= vgdev->num_scanouts)
return;
output = vgdev->outputs + scanout;
- new_edid = drm_do_get_edid(&output->conn, virtio_get_edid_block, resp);
- drm_connector_update_edid_property(&output->conn, new_edid);
+ new_edid = drm_edid_read_custom(&output->conn, virtio_get_edid_block, resp);
+ drm_edid_connector_update(&output->conn, new_edid);
spin_lock(&vgdev->display_info_lock);
- old_edid = output->edid;
- output->edid = new_edid;
+ old_edid = output->drm_edid;
+ output->drm_edid = new_edid;
spin_unlock(&vgdev->display_info_lock);
- kfree(old_edid);
+ drm_edid_free(old_edid);
wake_up(&vgdev->resp_wq);
}
--
2.39.2
^ permalink raw reply related [flat|nested] 14+ messages in thread* Re: [RESEND 6/6] drm/virtio: switch to struct drm_edid
2024-05-10 13:26 ` [RESEND 6/6] drm/virtio: " Jani Nikula
@ 2024-05-13 17:03 ` Robert Foss
0 siblings, 0 replies; 14+ messages in thread
From: Robert Foss @ 2024-05-13 17:03 UTC (permalink / raw)
To: Jani Nikula
Cc: dri-devel, David Airlie, Gerd Hoffmann, Gurchetan Singh,
Chia-I Wu, virtualization
On Fri, May 10, 2024 at 3:34 PM Jani Nikula <jani.nikula@intel.com> wrote:
>
> Prefer struct drm_edid based functions over struct edid.
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>
> ---
>
> Cc: David Airlie <airlied@redhat.com>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: Gurchetan Singh <gurchetansingh@chromium.org>
> Cc: Chia-I Wu <olvaffe@gmail.com>
> Cc: virtualization@lists.linux.dev
> ---
> drivers/gpu/drm/virtio/virtgpu_display.c | 10 ++++------
> drivers/gpu/drm/virtio/virtgpu_drv.h | 2 +-
> drivers/gpu/drm/virtio/virtgpu_vq.c | 12 ++++++------
> 3 files changed, 11 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c b/drivers/gpu/drm/virtio/virtgpu_display.c
> index ad924a8502e9..64baf2f22d9f 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_display.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_display.c
> @@ -164,11 +164,9 @@ static int virtio_gpu_conn_get_modes(struct drm_connector *connector)
> struct drm_display_mode *mode = NULL;
> int count, width, height;
>
> - if (output->edid) {
> - count = drm_add_edid_modes(connector, output->edid);
> - if (count)
> - return count;
> - }
> + count = drm_edid_connector_add_modes(connector);
> + if (count)
> + return count;
>
> width = le32_to_cpu(output->info.r.width);
> height = le32_to_cpu(output->info.r.height);
> @@ -369,5 +367,5 @@ void virtio_gpu_modeset_fini(struct virtio_gpu_device *vgdev)
> return;
>
> for (i = 0 ; i < vgdev->num_scanouts; ++i)
> - kfree(vgdev->outputs[i].edid);
> + drm_edid_free(vgdev->outputs[i].drm_edid);
> }
> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h
> index bb7d86a0c6a1..64c236169db8 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_drv.h
> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.h
> @@ -179,7 +179,7 @@ struct virtio_gpu_output {
> struct drm_encoder enc;
> struct virtio_gpu_display_one info;
> struct virtio_gpu_update_cursor cursor;
> - struct edid *edid;
> + const struct drm_edid *drm_edid;
> int cur_x;
> int cur_y;
> bool needs_modeset;
> diff --git a/drivers/gpu/drm/virtio/virtgpu_vq.c b/drivers/gpu/drm/virtio/virtgpu_vq.c
> index b1a00c0c25a7..0d3d0d09f39b 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_vq.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_vq.c
> @@ -741,21 +741,21 @@ static void virtio_gpu_cmd_get_edid_cb(struct virtio_gpu_device *vgdev,
> (struct virtio_gpu_resp_edid *)vbuf->resp_buf;
> uint32_t scanout = le32_to_cpu(cmd->scanout);
> struct virtio_gpu_output *output;
> - struct edid *new_edid, *old_edid;
> + const struct drm_edid *new_edid, *old_edid;
>
> if (scanout >= vgdev->num_scanouts)
> return;
> output = vgdev->outputs + scanout;
>
> - new_edid = drm_do_get_edid(&output->conn, virtio_get_edid_block, resp);
> - drm_connector_update_edid_property(&output->conn, new_edid);
> + new_edid = drm_edid_read_custom(&output->conn, virtio_get_edid_block, resp);
> + drm_edid_connector_update(&output->conn, new_edid);
>
> spin_lock(&vgdev->display_info_lock);
> - old_edid = output->edid;
> - output->edid = new_edid;
> + old_edid = output->drm_edid;
> + output->drm_edid = new_edid;
> spin_unlock(&vgdev->display_info_lock);
>
> - kfree(old_edid);
> + drm_edid_free(old_edid);
> wake_up(&vgdev->resp_wq);
> }
>
> --
> 2.39.2
>
Reviewed-by: Robert Foss <rfoss@kernel.org>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [RESEND 0/6] drm: struct drm_edid conversions
2024-05-10 13:26 [RESEND 0/6] drm: struct drm_edid conversions Jani Nikula
` (5 preceding siblings ...)
2024-05-10 13:26 ` [RESEND 6/6] drm/virtio: " Jani Nikula
@ 2024-05-13 17:16 ` Robert Foss
6 siblings, 0 replies; 14+ messages in thread
From: Robert Foss @ 2024-05-13 17:16 UTC (permalink / raw)
To: dri-devel, Jani Nikula; +Cc: Robert Foss
On Fri, 10 May 2024 16:26:03 +0300, Jani Nikula wrote:
> Resend of the remaining patches from [1].
>
> BR,
> Jani.
>
> [1] https://lore.kernel.org/r/cover.1713273659.git.jani.nikula@intel.com
>
> [...]
Fixed checkpatch issue in "drm/bochs: switch to struct drm_edid"
Applied, thanks!
[1/6] drm/bridge/analogix/anx6345: switch to struct drm_edid
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=37f3821c7cc8
[2/6] drm/bridge/analogix/anx78xx: switch to struct drm_edid
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=8aa8781ba3c1
[3/6] drm/bridge: anx7625: use struct drm_edid more
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=7c585f9a71aa
[4/6] drm/i2c: tda998x: switch to struct drm_edid
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=78e90e003b96
[5/6] drm/bochs: switch to struct drm_edid
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=5c465601d423
[6/6] drm/virtio: switch to struct drm_edid
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=ac15c653fb09
Rob
^ permalink raw reply [flat|nested] 14+ messages in thread