diff mbox series

[v3,6/6] drm/vc4: hdmi: Set default state margin at reset

Message ID acfa6ef9cb155622dc72d5f7a7dbeae57022bdca.1555591281.git-series.maxime.ripard@bootlin.com (mailing list archive)
State New, archived
Headers show
Series drm/vc4: Allow for more boot-time configuration | expand

Commit Message

Maxime Ripard April 18, 2019, 12:41 p.m. UTC
Now that the TV margins are properly parsed and filled into
drm_cmdline_mode, we just need to initialise the first state at reset to
get those values and start using them.

Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
---
 drivers/gpu/drm/vc4/vc4_hdmi.c | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

Comments

Noralf Trønnes April 18, 2019, 4:59 p.m. UTC | #1
Den 18.04.2019 14.41, skrev Maxime Ripard:
> Now that the TV margins are properly parsed and filled into
> drm_cmdline_mode, we just need to initialise the first state at reset to
> get those values and start using them.
> 
> Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
> ---
>  drivers/gpu/drm/vc4/vc4_hdmi.c | 16 +++++++++++++++-
>  1 file changed, 15 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
> index 99fc8569e0f5..d86f154138f5 100644
> --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
> +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
> @@ -255,11 +255,25 @@ static int vc4_hdmi_connector_get_modes(struct drm_connector *connector)
>  	return ret;
>  }
>  
> +static void vc4_hdmi_connector_reset(struct drm_connector *connector)
> +{
> +	struct drm_cmdline_mode *cmdline = &connector->cmdline_mode;
> +	struct drm_connector_state *state;
> +
> +	drm_atomic_helper_connector_reset(connector);

Initially I wondered why not do this in the helper, but ofc that would
apply the values to all the connectors. I know too little about this
subject to argue for having it in the helper, and it can be changed
later if deemed convinient, so:

Acked-by: Noralf Trønnes <noralf@tronnes.org>

> +
> +	state = connector->state;
> +	state->tv.margins.left = cmdline->tv_margins.left;
> +	state->tv.margins.right = cmdline->tv_margins.right;
> +	state->tv.margins.top = cmdline->tv_margins.top;
> +	state->tv.margins.bottom = cmdline->tv_margins.bottom;
> +}
> +
>  static const struct drm_connector_funcs vc4_hdmi_connector_funcs = {
>  	.detect = vc4_hdmi_connector_detect,
>  	.fill_modes = drm_helper_probe_single_connector_modes,
>  	.destroy = vc4_hdmi_connector_destroy,
> -	.reset = drm_atomic_helper_connector_reset,
> +	.reset = vc4_hdmi_connector_reset,
>  	.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
>  	.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
>  };
>
Noralf Trønnes April 19, 2019, 6:50 p.m. UTC | #2
Den 18.04.2019 18.59, skrev Noralf Trønnes:
> 
> 
> Den 18.04.2019 14.41, skrev Maxime Ripard:
>> Now that the TV margins are properly parsed and filled into
>> drm_cmdline_mode, we just need to initialise the first state at reset to
>> get those values and start using them.
>>
>> Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
>> ---
>>  drivers/gpu/drm/vc4/vc4_hdmi.c | 16 +++++++++++++++-
>>  1 file changed, 15 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
>> index 99fc8569e0f5..d86f154138f5 100644
>> --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
>> +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
>> @@ -255,11 +255,25 @@ static int vc4_hdmi_connector_get_modes(struct drm_connector *connector)
>>  	return ret;
>>  }
>>  
>> +static void vc4_hdmi_connector_reset(struct drm_connector *connector)

You could turn this function into a helper
drm_atomic_helper_connector_tv_reset() or something.

>> +{
>> +	struct drm_cmdline_mode *cmdline = &connector->cmdline_mode;
>> +	struct drm_connector_state *state;
>> +
>> +	drm_atomic_helper_connector_reset(connector);
> 
> Initially I wondered why not do this in the helper, but ofc that would
> apply the values to all the connectors. I know too little about this
> subject to argue for having it in the helper, and it can be changed
> later if deemed convinient, so:
> 
> Acked-by: Noralf Trønnes <noralf@tronnes.org>
> 
>> +
>> +	state = connector->state;
>> +	state->tv.margins.left = cmdline->tv_margins.left;
>> +	state->tv.margins.right = cmdline->tv_margins.right;
>> +	state->tv.margins.top = cmdline->tv_margins.top;
>> +	state->tv.margins.bottom = cmdline->tv_margins.bottom;
>> +}
>> +
>>  static const struct drm_connector_funcs vc4_hdmi_connector_funcs = {
>>  	.detect = vc4_hdmi_connector_detect,
>>  	.fill_modes = drm_helper_probe_single_connector_modes,
>>  	.destroy = vc4_hdmi_connector_destroy,
>> -	.reset = drm_atomic_helper_connector_reset,
>> +	.reset = vc4_hdmi_connector_reset,
>>  	.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
>>  	.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
>>  };
>>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index 99fc8569e0f5..d86f154138f5 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -255,11 +255,25 @@  static int vc4_hdmi_connector_get_modes(struct drm_connector *connector)
 	return ret;
 }
 
+static void vc4_hdmi_connector_reset(struct drm_connector *connector)
+{
+	struct drm_cmdline_mode *cmdline = &connector->cmdline_mode;
+	struct drm_connector_state *state;
+
+	drm_atomic_helper_connector_reset(connector);
+
+	state = connector->state;
+	state->tv.margins.left = cmdline->tv_margins.left;
+	state->tv.margins.right = cmdline->tv_margins.right;
+	state->tv.margins.top = cmdline->tv_margins.top;
+	state->tv.margins.bottom = cmdline->tv_margins.bottom;
+}
+
 static const struct drm_connector_funcs vc4_hdmi_connector_funcs = {
 	.detect = vc4_hdmi_connector_detect,
 	.fill_modes = drm_helper_probe_single_connector_modes,
 	.destroy = vc4_hdmi_connector_destroy,
-	.reset = drm_atomic_helper_connector_reset,
+	.reset = vc4_hdmi_connector_reset,
 	.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
 	.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
 };