diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0604-drm-vc4-Add-audio-initialisation-for-Pi4.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.4/950-0604-drm-vc4-Add-audio-initialisation-for-Pi4.patch | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0604-drm-vc4-Add-audio-initialisation-for-Pi4.patch b/target/linux/bcm27xx/patches-5.4/950-0604-drm-vc4-Add-audio-initialisation-for-Pi4.patch deleted file mode 100644 index 4388099671..0000000000 --- a/target/linux/bcm27xx/patches-5.4/950-0604-drm-vc4-Add-audio-initialisation-for-Pi4.patch +++ /dev/null @@ -1,127 +0,0 @@ -From 727b5180ec09faab313d7e2517e225001c967bb0 Mon Sep 17 00:00:00 2001 -From: Dave Stevenson <dave.stevenson@raspberrypi.com> -Date: Wed, 25 Mar 2020 18:16:14 +0000 -Subject: [PATCH] drm/vc4: Add audio initialisation for Pi4. - -The audio configuration has changed for Pi4, so support the -configuration functions via the variant tables. - -Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com> ---- - drivers/gpu/drm/vc4/vc4_hdmi.c | 51 ++++++++++++++++++++++++++++------ - drivers/gpu/drm/vc4/vc4_hdmi.h | 6 ++++ - 2 files changed, 49 insertions(+), 8 deletions(-) - ---- a/drivers/gpu/drm/vc4/vc4_hdmi.c -+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c -@@ -742,10 +742,44 @@ static const struct drm_encoder_helper_f - .enable = vc4_hdmi_encoder_enable, - }; - -+static u32 vc4_hdmi_get_hsm_clock(struct vc4_hdmi *vc4_hdmi) -+{ -+ return clk_get_rate(vc4_hdmi->hsm_clock); -+} -+ -+static u32 vc5_hdmi_get_hsm_clock(struct vc4_hdmi *vc4_hdmi) -+{ -+ return 108000000; -+} -+ -+static u32 vc4_hdmi_channel_map(struct vc4_hdmi *vc4_hdmi, u32 channel_mask) -+{ -+ int i; -+ u32 channel_map = 0; -+ -+ for (i = 0; i < 8; i++) { -+ if (channel_mask & BIT(i)) -+ channel_map |= i << (3 * i); -+ } -+ return channel_map; -+} -+ -+static u32 vc5_hdmi_channel_map(struct vc4_hdmi *vc4_hdmi, u32 channel_mask) -+{ -+ int i; -+ u32 channel_map = 0; -+ -+ for (i = 0; i < 8; i++) { -+ if (channel_mask & BIT(i)) -+ channel_map |= i << (4 * i); -+ } -+ return channel_map; -+} -+ - /* HDMI audio codec callbacks */ - static void vc4_hdmi_audio_set_mai_clock(struct vc4_hdmi *vc4_hdmi) - { -- u32 hsm_clock = clk_get_rate(vc4_hdmi->hsm_clock); -+ u32 hsm_clock = vc4_hdmi->variant->get_hsm_clock(vc4_hdmi); - unsigned long n, m; - - rational_best_approximation(hsm_clock, vc4_hdmi->audio.samplerate, -@@ -864,7 +898,7 @@ static int vc4_hdmi_audio_hw_params(stru - struct vc4_hdmi *vc4_hdmi = dai_to_hdmi(dai); - struct device *dev = &vc4_hdmi->pdev->dev; - u32 audio_packet_config, channel_mask; -- u32 channel_map, i; -+ u32 channel_map; - - if (substream != vc4_hdmi->audio.substream) - return -EINVAL; -@@ -916,12 +950,7 @@ static int vc4_hdmi_audio_hw_params(stru - VC4_HDMI_MAI_CONFIG_BIT_REVERSE | - VC4_SET_FIELD(channel_mask, VC4_HDMI_MAI_CHANNEL_MASK)); - -- channel_map = 0; -- for (i = 0; i < 8; i++) { -- if (channel_mask & BIT(i)) -- channel_map |= i << (3 * i); -- } -- -+ channel_map = vc4_hdmi->variant->channel_map(vc4_hdmi, channel_mask); - HDMI_WRITE(HDMI_MAI_CHANNEL_MAP, channel_map); - HDMI_WRITE(HDMI_AUDIO_PACKET_CONFIG, audio_packet_config); - vc4_hdmi_set_n_cts(vc4_hdmi); -@@ -1716,6 +1745,8 @@ static const struct vc4_hdmi_variant bcm - .phy_disable = vc4_hdmi_phy_disable, - .phy_rng_enable = vc4_hdmi_phy_rng_enable, - .phy_rng_disable = vc4_hdmi_phy_rng_disable, -+ .get_hsm_clock = vc4_hdmi_get_hsm_clock, -+ .channel_map = vc4_hdmi_channel_map, - }; - - static const struct vc4_hdmi_variant bcm2711_hdmi0_variant = { -@@ -1737,6 +1768,8 @@ static const struct vc4_hdmi_variant bcm - .phy_init = vc5_hdmi_phy_init, - .phy_rng_enable = vc5_hdmi_phy_rng_enable, - .phy_rng_disable = vc5_hdmi_phy_rng_disable, -+ .get_hsm_clock = vc5_hdmi_get_hsm_clock, -+ .channel_map = vc5_hdmi_channel_map, - }; - - static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = { -@@ -1758,6 +1791,8 @@ static const struct vc4_hdmi_variant bcm - .phy_init = vc5_hdmi_phy_init, - .phy_rng_enable = vc5_hdmi_phy_rng_enable, - .phy_rng_disable = vc5_hdmi_phy_rng_disable, -+ .get_hsm_clock = vc5_hdmi_get_hsm_clock, -+ .channel_map = vc5_hdmi_channel_map, - }; - - static const struct of_device_id vc4_hdmi_dt_match[] = { ---- a/drivers/gpu/drm/vc4/vc4_hdmi.h -+++ b/drivers/gpu/drm/vc4/vc4_hdmi.h -@@ -88,6 +88,12 @@ struct vc4_hdmi_variant { - - /* Callback to disable the RNG in the PHY */ - void (*phy_rng_disable)(struct vc4_hdmi *vc4_hdmi); -+ -+ /* Callback to get hsm clock */ -+ u32 (*get_hsm_clock)(struct vc4_hdmi *vc4_hdmi); -+ -+ /* Callback to get channel map */ -+ u32 (*channel_map)(struct vc4_hdmi *vc4_hdmi, u32 channel_mask); - }; - - /* HDMI audio information */ |