mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 04:13:31 +00:00
kernel: bump 5.10 to 5.10.101
Removed upstreamed: pending-5.10/841-USB-serial-option-add-ZTE-MF286D-modem.patch[1] bcm27xx/950-0592-drm-vc4-Allow-DBLCLK-modes-even-if-horz-timing-is-od.patch[2] All other patches automatically rebased. 1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.10.101&id=7113440a36c741efd7c76e3d70b3634100120cdb 2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.10.101&id=21c890ca8eaecea06cabb92be2a53a6f26f56383 Build system: x86_64 Build-tested: bcm2711/RPi4B, mt7622/RT3200 Run-tested: bcm2711/RPi4B, mt7622/RT3200 Signed-off-by: John Audia <graysky@archlinux.us>
This commit is contained in:
parent
4d5770a6cf
commit
fbd027c5da
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-5.10 = .100
|
||||
LINUX_KERNEL_HASH-5.10.100 = d56965afc9b6a3d26d53db40ccd37fd9d15f2ca6bfd54ef6f0f8b6e92c170999
|
||||
LINUX_VERSION-5.10 = .101
|
||||
LINUX_KERNEL_HASH-5.10.101 = 0749258cb7ee47c478dfc34857e8930d41bfe0b074e80e9f57cbfa56d0ba1c8e
|
||||
|
@ -12,7 +12,7 @@ Signed-off-by: Dom Cobley <popcornmix@gmail.com>
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
@@ -1491,9 +1491,6 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
@@ -1493,9 +1493,6 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
u32 value;
|
||||
int ret;
|
||||
|
||||
@ -22,7 +22,7 @@ Signed-off-by: Dom Cobley <popcornmix@gmail.com>
|
||||
vc4_hdmi->cec_adap = cec_allocate_adapter(&vc4_hdmi_cec_adap_ops,
|
||||
vc4_hdmi, "vc4",
|
||||
CEC_CAP_DEFAULTS |
|
||||
@@ -1926,7 +1923,6 @@ static const struct vc4_hdmi_variant bcm
|
||||
@@ -1928,7 +1925,6 @@ static const struct vc4_hdmi_variant bcm
|
||||
.debugfs_name = "hdmi_regs",
|
||||
.card_name = "vc4-hdmi",
|
||||
.max_pixel_clock = 162000000,
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Dom Cobley <popcornmix@gmail.com>
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
@@ -989,6 +989,44 @@ static void vc4_hdmi_audio_shutdown(stru
|
||||
@@ -991,6 +991,44 @@ static void vc4_hdmi_audio_shutdown(stru
|
||||
vc4_hdmi->audio.substream = NULL;
|
||||
}
|
||||
|
||||
@ -59,7 +59,7 @@ Signed-off-by: Dom Cobley <popcornmix@gmail.com>
|
||||
/* HDMI audio codec callbacks */
|
||||
static int vc4_hdmi_audio_hw_params(struct snd_pcm_substream *substream,
|
||||
struct snd_pcm_hw_params *params,
|
||||
@@ -999,6 +1037,8 @@ static int vc4_hdmi_audio_hw_params(stru
|
||||
@@ -1001,6 +1039,8 @@ static int vc4_hdmi_audio_hw_params(stru
|
||||
struct device *dev = &vc4_hdmi->pdev->dev;
|
||||
u32 audio_packet_config, channel_mask;
|
||||
u32 channel_map;
|
||||
@ -68,7 +68,7 @@ Signed-off-by: Dom Cobley <popcornmix@gmail.com>
|
||||
|
||||
if (substream != vc4_hdmi->audio.substream)
|
||||
return -EINVAL;
|
||||
@@ -1019,6 +1059,14 @@ static int vc4_hdmi_audio_hw_params(stru
|
||||
@@ -1021,6 +1061,14 @@ static int vc4_hdmi_audio_hw_params(stru
|
||||
|
||||
vc4_hdmi_audio_set_mai_clock(vc4_hdmi);
|
||||
|
||||
|
@ -26,7 +26,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
#include <sound/dmaengine_pcm.h>
|
||||
#include <sound/pcm_drm_eld.h>
|
||||
#include <sound/pcm_params.h>
|
||||
@@ -1180,6 +1181,47 @@ static int vc4_hdmi_audio_eld_ctl_get(st
|
||||
@@ -1182,6 +1183,47 @@ static int vc4_hdmi_audio_eld_ctl_get(st
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -74,7 +74,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
static const struct snd_kcontrol_new vc4_hdmi_audio_controls[] = {
|
||||
{
|
||||
.access = SNDRV_CTL_ELEM_ACCESS_READ |
|
||||
@@ -1189,6 +1231,19 @@ static const struct snd_kcontrol_new vc4
|
||||
@@ -1191,6 +1233,19 @@ static const struct snd_kcontrol_new vc4
|
||||
.info = vc4_hdmi_audio_eld_ctl_info,
|
||||
.get = vc4_hdmi_audio_eld_ctl_get,
|
||||
},
|
||||
@ -94,7 +94,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
};
|
||||
|
||||
static const struct snd_soc_dapm_widget vc4_hdmi_audio_widgets[] = {
|
||||
@@ -1309,6 +1364,11 @@ static int vc4_hdmi_audio_init(struct vc
|
||||
@@ -1311,6 +1366,11 @@ static int vc4_hdmi_audio_init(struct vc
|
||||
vc4_hdmi->audio.dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
|
||||
vc4_hdmi->audio.dma_data.maxburst = 2;
|
||||
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
@@ -1029,9 +1029,8 @@ static int sample_rate_to_mai_fmt(int sa
|
||||
@@ -1031,9 +1031,8 @@ static int sample_rate_to_mai_fmt(int sa
|
||||
}
|
||||
|
||||
/* HDMI audio codec callbacks */
|
||||
@ -26,7 +26,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
{
|
||||
struct vc4_hdmi *vc4_hdmi = dai_to_hdmi(dai);
|
||||
struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base;
|
||||
@@ -1044,12 +1043,15 @@ static int vc4_hdmi_audio_hw_params(stru
|
||||
@@ -1046,12 +1045,15 @@ static int vc4_hdmi_audio_hw_params(stru
|
||||
if (substream != vc4_hdmi->audio.substream)
|
||||
return -EINVAL;
|
||||
|
||||
@ -47,7 +47,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
|
||||
HDMI_WRITE(HDMI_MAI_CTL,
|
||||
VC4_HD_MAI_CTL_RESET |
|
||||
@@ -1271,7 +1273,7 @@ static const struct snd_soc_component_dr
|
||||
@@ -1273,7 +1275,7 @@ static const struct snd_soc_component_dr
|
||||
static const struct snd_soc_dai_ops vc4_hdmi_audio_dai_ops = {
|
||||
.startup = vc4_hdmi_audio_startup,
|
||||
.shutdown = vc4_hdmi_audio_shutdown,
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: Matthias Reichl <hias@horus.com>
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
@@ -1063,7 +1063,11 @@ static int vc4_hdmi_audio_prepare(struct
|
||||
@@ -1065,7 +1065,11 @@ static int vc4_hdmi_audio_prepare(struct
|
||||
vc4_hdmi_audio_set_mai_clock(vc4_hdmi);
|
||||
|
||||
mai_sample_rate = sample_rate_to_mai_fmt(vc4_hdmi->audio.samplerate);
|
||||
|
@ -16,7 +16,7 @@ Signed-off-by: Dom Cobley <popcornmix@gmail.com>
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
@@ -1084,22 +1084,12 @@ static int vc4_hdmi_audio_prepare(struct
|
||||
@@ -1086,22 +1086,12 @@ static int vc4_hdmi_audio_prepare(struct
|
||||
audio_packet_config |= VC4_SET_FIELD(channel_mask,
|
||||
VC4_HDMI_AUDIO_PACKET_CEA_MASK);
|
||||
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Dom Cobley <popcornmix@gmail.com>
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
@@ -1093,6 +1093,7 @@ static int vc4_hdmi_audio_prepare(struct
|
||||
@@ -1095,6 +1095,7 @@ static int vc4_hdmi_audio_prepare(struct
|
||||
|
||||
HDMI_WRITE(HDMI_MAI_CONFIG,
|
||||
VC4_HDMI_MAI_CONFIG_BIT_REVERSE |
|
||||
|
@ -191,7 +191,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
{}, \
|
||||
}; \
|
||||
\
|
||||
@@ -344,6 +355,11 @@ static void __exit fbtft_driver_module_e
|
||||
@@ -347,6 +358,11 @@ static void __exit fbtft_driver_module_e
|
||||
module_init(fbtft_driver_module_init); \
|
||||
module_exit(fbtft_driver_module_exit);
|
||||
|
||||
|
@ -16,7 +16,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
@@ -1331,10 +1331,12 @@ static int vc4_hdmi_audio_init(struct vc
|
||||
@@ -1333,10 +1333,12 @@ static int vc4_hdmi_audio_init(struct vc
|
||||
const __be32 *addr;
|
||||
int index;
|
||||
int ret;
|
||||
|
@ -29,7 +29,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1732,6 +1738,7 @@ static int vc5_hdmi_init_resources(struc
|
||||
@@ -1734,6 +1740,7 @@ static int vc5_hdmi_init_resources(struc
|
||||
struct platform_device *pdev = vc4_hdmi->pdev;
|
||||
struct device *dev = &pdev->dev;
|
||||
struct resource *res;
|
||||
@ -37,7 +37,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "hdmi");
|
||||
if (!res)
|
||||
@@ -1822,6 +1829,38 @@ static int vc5_hdmi_init_resources(struc
|
||||
@@ -1824,6 +1831,38 @@ static int vc5_hdmi_init_resources(struc
|
||||
return PTR_ERR(vc4_hdmi->reset);
|
||||
}
|
||||
|
||||
|
@ -76,7 +76,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
struct drm_display_mode *mode = &crtc_state->adjusted_mode;
|
||||
struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
|
||||
unsigned long long pixel_rate = mode->clock * 1000;
|
||||
@@ -875,6 +897,8 @@ static int vc4_hdmi_encoder_atomic_check
|
||||
@@ -876,6 +898,8 @@ static int vc4_hdmi_encoder_atomic_check
|
||||
if (pixel_rate > vc4_hdmi->variant->max_pixel_clock)
|
||||
return -EINVAL;
|
||||
|
||||
|
@ -141,7 +141,7 @@ Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
}
|
||||
|
||||
static void vc4_hdmi_encoder_pre_crtc_enable(struct drm_encoder *encoder,
|
||||
@@ -891,6 +951,14 @@ static int vc4_hdmi_encoder_atomic_check
|
||||
@@ -892,6 +952,14 @@ static int vc4_hdmi_encoder_atomic_check
|
||||
pixel_rate = mode->clock * 1000;
|
||||
}
|
||||
|
||||
|
@ -27,7 +27,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
value |= clk_cnt << VC4_HDMI_CEC_DIV_CLK_CNT_SHIFT;
|
||||
HDMI_WRITE(HDMI_CEC_CNTRL_1, value);
|
||||
}
|
||||
@@ -1867,6 +1867,7 @@ static int vc4_hdmi_init_resources(struc
|
||||
@@ -1869,6 +1869,7 @@ static int vc4_hdmi_init_resources(struc
|
||||
return PTR_ERR(vc4_hdmi->hsm_clock);
|
||||
}
|
||||
vc4_hdmi->audio_clock = vc4_hdmi->hsm_clock;
|
||||
@ -35,7 +35,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1961,6 +1962,12 @@ static int vc5_hdmi_init_resources(struc
|
||||
@@ -1963,6 +1964,12 @@ static int vc5_hdmi_init_resources(struc
|
||||
return PTR_ERR(vc4_hdmi->audio_clock);
|
||||
}
|
||||
|
||||
|
@ -19,7 +19,7 @@ Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
@@ -1572,15 +1572,22 @@ static int vc4_hdmi_audio_init(struct vc
|
||||
@@ -1574,15 +1574,22 @@ static int vc4_hdmi_audio_init(struct vc
|
||||
}
|
||||
|
||||
#ifdef CONFIG_DRM_VC4_HDMI_CEC
|
||||
@ -48,7 +48,7 @@ Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
cec_transmit_done(vc4_hdmi->cec_adap, CEC_TX_STATUS_OK,
|
||||
0, 0, 0, 0);
|
||||
} else {
|
||||
@@ -1594,6 +1601,19 @@ static irqreturn_t vc4_cec_irq_handler_t
|
||||
@@ -1596,6 +1603,19 @@ static irqreturn_t vc4_cec_irq_handler_t
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
@ -68,7 +68,7 @@ Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
static void vc4_cec_read_msg(struct vc4_hdmi *vc4_hdmi, u32 cntrl1)
|
||||
{
|
||||
struct drm_device *dev = vc4_hdmi->connector.dev;
|
||||
@@ -1618,31 +1638,55 @@ static void vc4_cec_read_msg(struct vc4_
|
||||
@@ -1620,31 +1640,55 @@ static void vc4_cec_read_msg(struct vc4_
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -20,7 +20,7 @@ Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
@@ -1723,9 +1723,11 @@ static int vc4_hdmi_cec_adap_enable(stru
|
||||
@@ -1725,9 +1725,11 @@ static int vc4_hdmi_cec_adap_enable(stru
|
||||
((3600 / usecs) << VC4_HDMI_CEC_CNT_TO_3600_US_SHIFT) |
|
||||
((3500 / usecs) << VC4_HDMI_CEC_CNT_TO_3500_US_SHIFT));
|
||||
|
||||
@ -34,7 +34,7 @@ Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
HDMI_WRITE(HDMI_CEC_CNTRL_5, val |
|
||||
VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET);
|
||||
}
|
||||
@@ -1797,8 +1799,6 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
@@ -1799,8 +1801,6 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
cec_fill_conn_info_from_drm(&conn_info, &vc4_hdmi->connector);
|
||||
cec_s_conn_info(vc4_hdmi->cec_adap, &conn_info);
|
||||
|
||||
@ -43,7 +43,7 @@ Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
value = HDMI_READ(HDMI_CEC_CNTRL_1);
|
||||
/* Set the logical address to Unregistered */
|
||||
value |= VC4_HDMI_CEC_ADDR_MASK;
|
||||
@@ -1806,12 +1806,32 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
@@ -1808,12 +1808,32 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
|
||||
vc4_hdmi_cec_update_clk_div(vc4_hdmi);
|
||||
|
||||
@ -82,7 +82,7 @@ Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
ret = cec_register_adapter(vc4_hdmi->cec_adap, &pdev->dev);
|
||||
if (ret < 0)
|
||||
@@ -2286,6 +2306,7 @@ static const struct vc4_hdmi_variant bcm
|
||||
@@ -2288,6 +2308,7 @@ static const struct vc4_hdmi_variant bcm
|
||||
PHY_LANE_CK,
|
||||
},
|
||||
.unsupported_odd_h_timings = true,
|
||||
@ -90,7 +90,7 @@ Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
.init_resources = vc5_hdmi_init_resources,
|
||||
.csc_setup = vc5_hdmi_csc_setup,
|
||||
@@ -2312,6 +2333,7 @@ static const struct vc4_hdmi_variant bcm
|
||||
@@ -2314,6 +2335,7 @@ static const struct vc4_hdmi_variant bcm
|
||||
PHY_LANE_2,
|
||||
},
|
||||
.unsupported_odd_h_timings = true,
|
||||
|
@ -19,7 +19,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
@@ -1785,9 +1785,15 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
@@ -1787,9 +1787,15 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
{
|
||||
struct cec_connector_info conn_info;
|
||||
struct platform_device *pdev = vc4_hdmi->pdev;
|
||||
|
@ -61,7 +61,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
}
|
||||
|
||||
static void vc4_hdmi_encoder_post_crtc_disable(struct drm_encoder *encoder,
|
||||
@@ -2296,6 +2321,7 @@ static const struct vc4_hdmi_variant bcm
|
||||
@@ -2298,6 +2323,7 @@ static const struct vc4_hdmi_variant bcm
|
||||
.phy_rng_enable = vc4_hdmi_phy_rng_enable,
|
||||
.phy_rng_disable = vc4_hdmi_phy_rng_disable,
|
||||
.channel_map = vc4_hdmi_channel_map,
|
||||
@ -69,7 +69,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
};
|
||||
|
||||
static const struct vc4_hdmi_variant bcm2711_hdmi0_variant = {
|
||||
@@ -2323,6 +2349,7 @@ static const struct vc4_hdmi_variant bcm
|
||||
@@ -2325,6 +2351,7 @@ static const struct vc4_hdmi_variant bcm
|
||||
.phy_rng_enable = vc5_hdmi_phy_rng_enable,
|
||||
.phy_rng_disable = vc5_hdmi_phy_rng_disable,
|
||||
.channel_map = vc5_hdmi_channel_map,
|
||||
@ -77,7 +77,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
};
|
||||
|
||||
static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = {
|
||||
@@ -2350,6 +2377,7 @@ static const struct vc4_hdmi_variant bcm
|
||||
@@ -2352,6 +2379,7 @@ static const struct vc4_hdmi_variant bcm
|
||||
.phy_rng_enable = vc5_hdmi_phy_rng_enable,
|
||||
.phy_rng_disable = vc5_hdmi_phy_rng_disable,
|
||||
.channel_map = vc5_hdmi_channel_map,
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Dom Cobley <popcornmix@gmail.com>
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
@@ -1295,10 +1295,10 @@ static int vc4_hdmi_audio_prepare(struct
|
||||
@@ -1297,10 +1297,10 @@ static int vc4_hdmi_audio_prepare(struct
|
||||
|
||||
/* Set the MAI threshold */
|
||||
HDMI_WRITE(HDMI_MAI_THR,
|
||||
|
@ -19,7 +19,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
@@ -2432,7 +2432,7 @@ static const struct vc4_hdmi_variant bcm
|
||||
@@ -2434,7 +2434,7 @@ static const struct vc4_hdmi_variant bcm
|
||||
.encoder_type = VC4_ENCODER_TYPE_HDMI0,
|
||||
.debugfs_name = "hdmi0_regs",
|
||||
.card_name = "vc4-hdmi-0",
|
||||
|
@ -1,42 +0,0 @@
|
||||
From 9f7c0728efb0036f6f197126aa62da40cdf4713a Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
Date: Wed, 28 Apr 2021 16:14:21 +0100
|
||||
Subject: [PATCH] drm/vc4: Allow DBLCLK modes even if horz timing is
|
||||
odd.
|
||||
|
||||
The 2711 pixel valve can't produce odd horizontal timings, and
|
||||
checks were added to vc4_hdmi_encoder_atomic_check and
|
||||
vc4_hdmi_encoder_mode_valid to filter out/block selection of
|
||||
such modes.
|
||||
|
||||
Modes with DRM_MODE_FLAG_DBLCLK double all the horizontal timing
|
||||
values before programming them into the PV. The PV values,
|
||||
therefore, can not be odd, and so the modes can be supported.
|
||||
|
||||
Amend the filtering appropriately.
|
||||
|
||||
See https://github.com/raspberrypi/linux/issues/4307
|
||||
|
||||
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
---
|
||||
drivers/gpu/drm/vc4/vc4_hdmi.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
@@ -1067,6 +1067,7 @@ static int vc4_hdmi_encoder_atomic_check
|
||||
unsigned long long tmds_rate;
|
||||
|
||||
if (vc4_hdmi->variant->unsupported_odd_h_timings &&
|
||||
+ !(mode->flags & DRM_MODE_FLAG_DBLCLK) &&
|
||||
((mode->hdisplay % 2) || (mode->hsync_start % 2) ||
|
||||
(mode->hsync_end % 2) || (mode->htotal % 2)))
|
||||
return -EINVAL;
|
||||
@@ -1111,6 +1112,7 @@ vc4_hdmi_encoder_mode_valid(struct drm_e
|
||||
struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
|
||||
|
||||
if (vc4_hdmi->variant->unsupported_odd_h_timings &&
|
||||
+ !(mode->flags & DRM_MODE_FLAG_DBLCLK) &&
|
||||
((mode->hdisplay % 2) || (mode->hsync_start % 2) ||
|
||||
(mode->hsync_end % 2) || (mode->htotal % 2)))
|
||||
return MODE_H_ILLEGAL;
|
@ -118,7 +118,7 @@ Signed-off-by: Joerg Quinten <aBUGSworstnightmare@gmail.com>
|
||||
- MEDIA_BUS_FMT_RGB666_1X24_CPADHI
|
||||
--- a/drivers/gpu/drm/panel/panel-simple.c
|
||||
+++ b/drivers/gpu/drm/panel/panel-simple.c
|
||||
@@ -2093,6 +2093,38 @@ static const struct panel_desc innolux_a
|
||||
@@ -2094,6 +2094,38 @@ static const struct panel_desc innolux_a
|
||||
.bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE,
|
||||
};
|
||||
|
||||
@ -157,7 +157,7 @@ Signed-off-by: Joerg Quinten <aBUGSworstnightmare@gmail.com>
|
||||
static const struct drm_display_mode innolux_at070tn92_mode = {
|
||||
.clock = 33333,
|
||||
.hdisplay = 800,
|
||||
@@ -4076,6 +4108,9 @@ static const struct of_device_id platfor
|
||||
@@ -4077,6 +4109,9 @@ static const struct of_device_id platfor
|
||||
.compatible = "innolux,at043tn24",
|
||||
.data = &innolux_at043tn24,
|
||||
}, {
|
||||
|
@ -17,7 +17,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
|
||||
--- a/arch/arm/boot/dts/Makefile
|
||||
+++ b/arch/arm/boot/dts/Makefile
|
||||
@@ -1432,5 +1432,5 @@ subdir-y := overlays
|
||||
@@ -1433,5 +1433,5 @@ subdir-y := overlays
|
||||
|
||||
# Enable fixups to support overlays on BCM2835 platforms
|
||||
ifeq ($(CONFIG_ARCH_BCM2835),y)
|
||||
|
@ -17,7 +17,7 @@ Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
|
||||
--- a/drivers/net/dsa/mv88e6xxx/chip.c
|
||||
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
|
||||
@@ -5431,6 +5431,7 @@ static int mv88e6xxx_register_switch(str
|
||||
@@ -5436,6 +5436,7 @@ static int mv88e6xxx_register_switch(str
|
||||
ds->ops = &mv88e6xxx_switch_ops;
|
||||
ds->ageing_time_min = chip->info->age_time_coeff;
|
||||
ds->ageing_time_max = chip->info->age_time_coeff * U8_MAX;
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
|
||||
--- a/arch/arm/boot/dts/Makefile
|
||||
+++ b/arch/arm/boot/dts/Makefile
|
||||
@@ -907,8 +907,33 @@ dtb-$(CONFIG_ARCH_QCOM) += \
|
||||
@@ -908,8 +908,29 @@ dtb-$(CONFIG_ARCH_QCOM) += \
|
||||
qcom-ipq4019-ap.dk04.1-c3.dtb \
|
||||
qcom-ipq4019-ap.dk07.1-c1.dtb \
|
||||
qcom-ipq4019-ap.dk07.1-c2.dtb \
|
||||
|
Loading…
Reference in New Issue
Block a user