diff options
author | Álvaro Fernández Rojas <noltari@gmail.com> | 2021-08-21 10:54:34 +0200 |
---|---|---|
committer | Álvaro Fernández Rojas <noltari@gmail.com> | 2021-08-21 19:07:07 +0200 |
commit | 8299d1f057439f94c6a4412e2e5c5082b82a30c9 (patch) | |
tree | 1bf678d61f11f7394493be464c7876e496f7faed /target/linux/bcm27xx/patches-5.10/950-0416-drm-vc4-hdmi-Use-the-connector-state-pixel-rate-for-.patch | |
parent | 33b6885975ce376ff075362b7f0890326043111b (diff) | |
download | upstream-8299d1f057439f94c6a4412e2e5c5082b82a30c9.tar.gz upstream-8299d1f057439f94c6a4412e2e5c5082b82a30c9.tar.bz2 upstream-8299d1f057439f94c6a4412e2e5c5082b82a30c9.zip |
bcm27xx: add kernel 5.10 support
Rebased RPi foundation patches on linux 5.10.59, removed applied and reverted
patches, wireless patches and defconfig patches.
bcm2708: boot tested on RPi B+ v1.2
bcm2709: boot tested on RPi 4B v1.1 4G
bcm2711: boot tested on RPi 4B v1.1 4G
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Diffstat (limited to 'target/linux/bcm27xx/patches-5.10/950-0416-drm-vc4-hdmi-Use-the-connector-state-pixel-rate-for-.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.10/950-0416-drm-vc4-hdmi-Use-the-connector-state-pixel-rate-for-.patch | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.10/950-0416-drm-vc4-hdmi-Use-the-connector-state-pixel-rate-for-.patch b/target/linux/bcm27xx/patches-5.10/950-0416-drm-vc4-hdmi-Use-the-connector-state-pixel-rate-for-.patch new file mode 100644 index 0000000000..b1de0c29ee --- /dev/null +++ b/target/linux/bcm27xx/patches-5.10/950-0416-drm-vc4-hdmi-Use-the-connector-state-pixel-rate-for-.patch @@ -0,0 +1,102 @@ +From 6d15419acb9914041e90bc88044d87bbcdcfec00 Mon Sep 17 00:00:00 2001 +From: Maxime Ripard <maxime@cerno.tech> +Date: Tue, 15 Dec 2020 16:42:41 +0100 +Subject: [PATCH] drm/vc4: hdmi: Use the connector state pixel rate for + the PHY + +The PHY initialisation parameters are not based on the pixel clock but +the TMDS clock rate which can be the pixel clock in the standard case, +but could be adjusted based on some parameters like the bits per color. + +Since the TMDS clock rate is stored in our custom connector state +already, let's reuse it from there instead of computing it again. + +Acked-by: Thomas Zimmermann <tzimmermann@suse.de> +Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com> +Signed-off-by: Maxime Ripard <maxime@cerno.tech> +--- + drivers/gpu/drm/vc4/vc4_hdmi.c | 2 +- + drivers/gpu/drm/vc4/vc4_hdmi.h | 11 +++++------ + drivers/gpu/drm/vc4/vc4_hdmi_phy.c | 8 +++++--- + 3 files changed, 11 insertions(+), 10 deletions(-) + +--- a/drivers/gpu/drm/vc4/vc4_hdmi.c ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.c +@@ -761,7 +761,7 @@ static void vc4_hdmi_encoder_pre_crtc_co + } + + if (vc4_hdmi->variant->phy_init) +- vc4_hdmi->variant->phy_init(vc4_hdmi, mode); ++ vc4_hdmi->variant->phy_init(vc4_hdmi, vc4_conn_state); + + HDMI_WRITE(HDMI_SCHEDULER_CONTROL, + HDMI_READ(HDMI_SCHEDULER_CONTROL) | +--- a/drivers/gpu/drm/vc4/vc4_hdmi.h ++++ b/drivers/gpu/drm/vc4/vc4_hdmi.h +@@ -21,10 +21,9 @@ to_vc4_hdmi_encoder(struct drm_encoder * + return container_of(encoder, struct vc4_hdmi_encoder, base.base); + } + +-struct drm_display_mode; +- + struct vc4_hdmi; + struct vc4_hdmi_register; ++struct vc4_hdmi_connector_state; + + enum vc4_hdmi_phy_channel { + PHY_LANE_0 = 0, +@@ -77,9 +76,9 @@ struct vc4_hdmi_variant { + void (*set_timings)(struct vc4_hdmi *vc4_hdmi, + struct drm_display_mode *mode); + +- /* Callback to initialize the PHY according to the mode */ ++ /* Callback to initialize the PHY according to the connector state */ + void (*phy_init)(struct vc4_hdmi *vc4_hdmi, +- struct drm_display_mode *mode); ++ struct vc4_hdmi_connector_state *vc4_conn_state); + + /* Callback to disable the PHY */ + void (*phy_disable)(struct vc4_hdmi *vc4_hdmi); +@@ -199,13 +198,13 @@ conn_state_to_vc4_hdmi_conn_state(struct + } + + void vc4_hdmi_phy_init(struct vc4_hdmi *vc4_hdmi, +- struct drm_display_mode *mode); ++ struct vc4_hdmi_connector_state *vc4_conn_state); + void vc4_hdmi_phy_disable(struct vc4_hdmi *vc4_hdmi); + void vc4_hdmi_phy_rng_enable(struct vc4_hdmi *vc4_hdmi); + void vc4_hdmi_phy_rng_disable(struct vc4_hdmi *vc4_hdmi); + + void vc5_hdmi_phy_init(struct vc4_hdmi *vc4_hdmi, +- struct drm_display_mode *mode); ++ struct vc4_hdmi_connector_state *vc4_conn_state); + void vc5_hdmi_phy_disable(struct vc4_hdmi *vc4_hdmi); + void vc5_hdmi_phy_rng_enable(struct vc4_hdmi *vc4_hdmi); + void vc5_hdmi_phy_rng_disable(struct vc4_hdmi *vc4_hdmi); +--- a/drivers/gpu/drm/vc4/vc4_hdmi_phy.c ++++ b/drivers/gpu/drm/vc4/vc4_hdmi_phy.c +@@ -127,7 +127,8 @@ + + #define OSCILLATOR_FREQUENCY 54000000 + +-void vc4_hdmi_phy_init(struct vc4_hdmi *vc4_hdmi, struct drm_display_mode *mode) ++void vc4_hdmi_phy_init(struct vc4_hdmi *vc4_hdmi, ++ struct vc4_hdmi_connector_state *conn_state) + { + /* PHY should be in reset, like + * vc4_hdmi_encoder_disable() does. +@@ -339,11 +340,12 @@ static void vc5_hdmi_reset_phy(struct vc + HDMI_WRITE(HDMI_TX_PHY_POWERDOWN_CTL, BIT(10)); + } + +-void vc5_hdmi_phy_init(struct vc4_hdmi *vc4_hdmi, struct drm_display_mode *mode) ++void vc5_hdmi_phy_init(struct vc4_hdmi *vc4_hdmi, ++ struct vc4_hdmi_connector_state *conn_state) + { + const struct phy_lane_settings *chan0_settings, *chan1_settings, *chan2_settings, *clock_settings; + const struct vc4_hdmi_variant *variant = vc4_hdmi->variant; +- unsigned long long pixel_freq = mode->clock * 1000; ++ unsigned long long pixel_freq = conn_state->pixel_rate; + unsigned long long vco_freq; + unsigned char word_sel; + u8 vco_sel, vco_div; |