-LINUX_VERSION-6.6 = .53
-LINUX_KERNEL_HASH-6.6.53 = 285d181d1b252b0bf905f040d094215cf183ac98c31a17f9cce9f3537ef4d779
+LINUX_VERSION-6.6 = .54
+LINUX_KERNEL_HASH-6.6.54 = 5fae869d6a24055c16ffc2d92669e3fb2b258e34d36c850bb8cf9def417ecfa0
static const char * const output_format_str[] = {
[VC4_HDMI_OUTPUT_RGB] = "RGB",
[VC4_HDMI_OUTPUT_YUV420] = "YUV 4:2:0",
-@@ -472,7 +478,9 @@ static int vc4_hdmi_connector_detect_ctx
-
- WARN_ON(pm_runtime_resume_and_get(&vc4_hdmi->pdev->dev));
+@@ -478,7 +484,9 @@ static int vc4_hdmi_connector_detect_ctx
+ return connector_status_unknown;
+ }
- if (vc4_hdmi->hpd_gpio) {
+ if (force_hotplug & BIT(vc4_hdmi->encoder.type - VC4_ENCODER_TYPE_HDMI0))
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2394,7 +2394,7 @@ static int vc4_hdmi_audio_startup(struct
+@@ -2400,7 +2400,7 @@ static int vc4_hdmi_audio_startup(struct
}
if (!vc4_hdmi_audio_can_stream(vc4_hdmi)) {
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2126,7 +2126,7 @@ vc4_hdmi_encoder_compute_config(const st
+@@ -2132,7 +2132,7 @@ vc4_hdmi_encoder_compute_config(const st
{
struct drm_device *dev = vc4_hdmi->connector.dev;
struct drm_connector_state *conn_state = &vc4_state->base;
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1952,9 +1952,6 @@ vc4_hdmi_sink_supports_format_bpc(const
+@@ -1958,9 +1958,6 @@ vc4_hdmi_sink_supports_format_bpc(const
case VC4_HDMI_OUTPUT_RGB:
drm_dbg(dev, "RGB Format, checking the constraints.\n");
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -756,7 +756,6 @@ static int vc4_hdmi_connector_init(struc
+@@ -762,7 +762,6 @@ static int vc4_hdmi_connector_init(struc
drm_connector_attach_colorspace_property(connector);
drm_connector_attach_tv_margin_properties(connector);
connector->polled = (DRM_CONNECTOR_POLL_CONNECT |
DRM_CONNECTOR_POLL_DISCONNECT);
-@@ -765,8 +764,12 @@ static int vc4_hdmi_connector_init(struc
+@@ -771,8 +770,12 @@ static int vc4_hdmi_connector_init(struc
connector->doublescan_allowed = 0;
connector->stereo_allowed = 1;
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
-@@ -486,8 +486,10 @@ static void xhci_pci_quirks(struct devic
+@@ -489,8 +489,10 @@ static void xhci_pci_quirks(struct devic
pdev->device == 0x3432)
xhci->quirks |= XHCI_BROKEN_STREAMS;
--- a/drivers/char/hw_random/bcm2835-rng.c
+++ b/drivers/char/hw_random/bcm2835-rng.c
-@@ -105,8 +105,10 @@ static int bcm2835_rng_init(struct hwrng
+@@ -107,8 +107,10 @@ static int bcm2835_rng_init(struct hwrng
}
/* set warm-up count & enable */
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2521,6 +2521,7 @@ static int vc4_hdmi_audio_prepare(struct
+@@ -2527,6 +2527,7 @@ static int vc4_hdmi_audio_prepare(struct
{
struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
struct drm_device *drm = vc4_hdmi->connector.dev;
struct drm_encoder *encoder = &vc4_hdmi->encoder.base;
unsigned int sample_rate = params->sample_rate;
unsigned int channels = params->channels;
-@@ -2579,11 +2580,18 @@ static int vc4_hdmi_audio_prepare(struct
+@@ -2585,11 +2586,18 @@ static int vc4_hdmi_audio_prepare(struct
VC4_HDMI_AUDIO_PACKET_CEA_MASK);
/* Set the MAI threshold */
erst_base = xhci_read_64(xhci, &ir->ir_set->erst_base);
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
-@@ -1680,8 +1680,9 @@ struct urb_priv {
+@@ -1681,8 +1681,9 @@ struct urb_priv {
* Each segment table entry is 4*32bits long. 1K seems like an ok size:
* (1K bytes * 8bytes/bit) / (4*32 bits) = 64 segment entries in the table,
* meaning 64 ring segments.
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
-@@ -489,6 +489,7 @@ static void xhci_pci_quirks(struct devic
+@@ -492,6 +492,7 @@ static void xhci_pci_quirks(struct devic
if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483) {
xhci->quirks |= XHCI_LPM_SUPPORT;
xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
addr = xhci_trb_virt_to_dma(new_seg, new_deq);
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
-@@ -1915,6 +1915,9 @@ struct xhci_hcd {
- #define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
- #define XHCI_ZHAOXIN_HOST BIT_ULL(46)
+@@ -1918,6 +1918,9 @@ struct xhci_hcd {
+ #define XHCI_WRITE_64_HI_LO BIT_ULL(47)
+ #define XHCI_CDNS_SCTX_QUIRK BIT_ULL(48)
+/* Downstream VLI fixes */
+#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(56)
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
-@@ -490,6 +490,7 @@ static void xhci_pci_quirks(struct devic
+@@ -493,6 +493,7 @@ static void xhci_pci_quirks(struct devic
xhci->quirks |= XHCI_LPM_SUPPORT;
xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
xhci->quirks |= XHCI_AVOID_DQ_ON_LINK;
/* Allow 3 retries for everything but isoc, set CErr = 3 */
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
-@@ -491,6 +491,7 @@ static void xhci_pci_quirks(struct devic
+@@ -494,6 +494,7 @@ static void xhci_pci_quirks(struct devic
xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
xhci->quirks |= XHCI_AVOID_DQ_ON_LINK;
xhci->quirks |= XHCI_ZHAOXIN_TRB_FETCH;
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
-@@ -1917,6 +1917,7 @@ struct xhci_hcd {
+@@ -1920,6 +1920,7 @@ struct xhci_hcd {
/* Downstream VLI fixes */
#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(56)
/* Device for a quirk */
#define PCI_VENDOR_ID_FRESCO_LOGIC 0x1b73
#define PCI_DEVICE_ID_FRESCO_LOGIC_PDK 0x1000
-@@ -291,6 +293,16 @@ static int xhci_pci_reinit(struct xhci_h
+@@ -294,6 +296,16 @@ static int xhci_pci_reinit(struct xhci_h
return 0;
}
static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
{
struct pci_dev *pdev = to_pci_dev(dev);
-@@ -492,6 +504,8 @@ static void xhci_pci_quirks(struct devic
+@@ -495,6 +507,8 @@ static void xhci_pci_quirks(struct devic
xhci->quirks |= XHCI_AVOID_DQ_ON_LINK;
xhci->quirks |= XHCI_ZHAOXIN_TRB_FETCH;
xhci->quirks |= XHCI_VLI_SS_BULK_OUT_BUG;
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
-@@ -3657,6 +3657,48 @@ static int xhci_align_td(struct xhci_hcd
+@@ -3671,6 +3671,48 @@ static int xhci_align_td(struct xhci_hcd
return 1;
}
/* This is very similar to what ehci-q.c qtd_fill() does */
int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
struct urb *urb, int slot_id, unsigned int ep_index)
-@@ -3813,6 +3855,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3827,6 +3869,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
}
check_trb_math(urb, enqd_len);
giveback_first_trb(xhci, slot_id, ep_index, urb->stream_id,
start_cycle, start_trb);
return 0;
-@@ -3948,6 +3992,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
+@@ -3962,6 +4006,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
/* Event on completion */
field | TRB_IOC | TRB_TYPE(TRB_STATUS) | ep_ring->cycle_state);
return 0;
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
-@@ -1918,6 +1918,7 @@ struct xhci_hcd {
+@@ -1921,6 +1921,7 @@ struct xhci_hcd {
/* Downstream VLI fixes */
#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(56)
#define XHCI_VLI_SS_BULK_OUT_BUG BIT_ULL(57)
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -3589,6 +3589,7 @@ static int vc4_hdmi_runtime_suspend(stru
+@@ -3595,6 +3595,7 @@ static int vc4_hdmi_runtime_suspend(stru
{
struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
clk_disable_unprepare(vc4_hdmi->hsm_clock);
return 0;
-@@ -3621,6 +3622,10 @@ static int vc4_hdmi_runtime_resume(struc
+@@ -3627,6 +3628,10 @@ static int vc4_hdmi_runtime_resume(struc
goto err_disable_clk;
}
switch (args->madv) {
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2580,7 +2580,7 @@ static int vc4_hdmi_audio_prepare(struct
+@@ -2586,7 +2586,7 @@ static int vc4_hdmi_audio_prepare(struct
VC4_HDMI_AUDIO_PACKET_CEA_MASK);
/* Set the MAI threshold */
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1862,6 +1862,7 @@ static void vc4_hdmi_encoder_post_crtc_e
+@@ -1868,6 +1868,7 @@ static void vc4_hdmi_encoder_post_crtc_e
VC4_HD_VID_CTL_CLRRGB |
VC4_HD_VID_CTL_UNDERFLOW_ENABLE |
VC4_HD_VID_CTL_FRAME_COUNTER_RESET |
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1102,6 +1102,7 @@ static void vc4_hdmi_encoder_post_crtc_d
+@@ -1108,6 +1108,7 @@ static void vc4_hdmi_encoder_post_crtc_d
{
struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
struct drm_device *drm = vc4_hdmi->connector.dev;
unsigned long flags;
int idx;
-@@ -1118,14 +1119,25 @@ static void vc4_hdmi_encoder_post_crtc_d
+@@ -1124,14 +1125,25 @@ static void vc4_hdmi_encoder_post_crtc_d
HDMI_WRITE(HDMI_VID_CTL, HDMI_READ(HDMI_VID_CTL) | VC4_HD_VID_CTL_CLRRGB);
vc4_hdmi_disable_scrambling(encoder);
-@@ -1753,7 +1765,6 @@ static void vc4_hdmi_encoder_pre_crtc_co
+@@ -1759,7 +1771,6 @@ static void vc4_hdmi_encoder_pre_crtc_co
goto err_put_runtime_pm;
}
vc4_hdmi_cec_update_clk_div(vc4_hdmi);
if (tmds_char_rate > 297000000)
-@@ -1858,6 +1869,7 @@ static void vc4_hdmi_encoder_post_crtc_e
+@@ -1864,6 +1875,7 @@ static void vc4_hdmi_encoder_post_crtc_e
spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
HDMI_WRITE(HDMI_VID_CTL,
VC4_HD_VID_CTL_ENABLE |
VC4_HD_VID_CTL_CLRRGB |
VC4_HD_VID_CTL_UNDERFLOW_ENABLE |
-@@ -3751,7 +3763,9 @@ static int vc4_hdmi_bind(struct device *
+@@ -3757,7 +3769,9 @@ static int vc4_hdmi_bind(struct device *
return ret;
if ((of_device_is_compatible(dev->of_node, "brcm,bcm2711-hdmi0") ||
HDMI_READ(HDMI_VID_CTL) & VC4_HD_VID_CTL_ENABLE) {
clk_prepare_enable(vc4_hdmi->pixel_clock);
clk_prepare_enable(vc4_hdmi->hsm_clock);
-@@ -3885,10 +3899,66 @@ static const struct vc4_hdmi_variant bcm
+@@ -3891,10 +3905,66 @@ static const struct vc4_hdmi_variant bcm
.hp_detect = vc5_hdmi_hp_detect,
};
},
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -3912,7 +3912,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -3918,7 +3918,7 @@ static const struct vc4_hdmi_variant bcm
PHY_LANE_2,
PHY_LANE_CK,
},
.external_irq_controller = true,
.init_resources = vc5_hdmi_init_resources,
-@@ -3939,7 +3939,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -3945,7 +3945,7 @@ static const struct vc4_hdmi_variant bcm
PHY_LANE_2,
PHY_LANE_CK,
},
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2597,7 +2597,13 @@ static int vc4_hdmi_audio_prepare(struct
+@@ -2603,7 +2603,13 @@ static int vc4_hdmi_audio_prepare(struct
VC4_HDMI_AUDIO_PACKET_CEA_MASK);
/* Set the MAI threshold */
if (!edid)
return;
-@@ -2691,8 +2705,23 @@ static int vc4_hdmi_audio_get_eld(struct
+@@ -2697,8 +2711,23 @@ static int vc4_hdmi_audio_get_eld(struct
return 0;
}
.prepare = vc4_hdmi_audio_prepare,
.audio_shutdown = vc4_hdmi_audio_shutdown,
.audio_startup = vc4_hdmi_audio_startup,
-@@ -2712,6 +2741,22 @@ static void vc4_hdmi_audio_codec_release
+@@ -2718,6 +2747,22 @@ static void vc4_hdmi_audio_codec_release
vc4_hdmi->audio.codec_pdev = NULL;
}
static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi)
{
const struct vc4_hdmi_register *mai_data =
-@@ -2841,6 +2886,8 @@ static int vc4_hdmi_audio_init(struct vc
+@@ -2847,6 +2892,8 @@ static int vc4_hdmi_audio_init(struct vc
dai_link->codecs->name = dev_name(&codec_pdev->dev);
dai_link->platforms->name = dev_name(dev);
card->dai_link = dai_link;
card->num_links = 1;
card->name = vc4_hdmi->variant->card_name;
-@@ -3701,6 +3748,8 @@ static int vc4_hdmi_bind(struct device *
+@@ -3707,6 +3754,8 @@ static int vc4_hdmi_bind(struct device *
if (ret)
return ret;
spin_lock_init(&vc4_hdmi->hw_lock);
INIT_DELAYED_WORK(&vc4_hdmi->scrambling_work, vc4_hdmi_scrambling_wq);
-@@ -3813,8 +3862,16 @@ err_put_runtime_pm:
+@@ -3819,8 +3868,16 @@ err_put_runtime_pm:
return ret;
}
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2917,7 +2917,7 @@ static irqreturn_t vc4_hdmi_hpd_irq_thre
+@@ -2923,7 +2923,7 @@ static irqreturn_t vc4_hdmi_hpd_irq_thre
struct drm_connector *connector = &vc4_hdmi->connector;
struct drm_device *dev = connector->dev;
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1883,14 +1883,15 @@ static void vc4_hdmi_encoder_post_crtc_e
+@@ -1889,14 +1889,15 @@ static void vc4_hdmi_encoder_post_crtc_e
spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
HDMI_WRITE(HDMI_VID_CTL,
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -599,6 +599,7 @@ static int vc4_hdmi_connector_atomic_che
+@@ -605,6 +605,7 @@ static int vc4_hdmi_connector_atomic_che
if (old_state->colorspace != new_state->colorspace ||
old_vc4_state->broadcast_rgb != new_vc4_state->broadcast_rgb ||
!drm_connector_atomic_hdr_metadata_equal(old_state, new_state)) {
struct drm_crtc_state *crtc_state;
-@@ -625,6 +626,8 @@ static int vc4_hdmi_connector_get_proper
+@@ -631,6 +632,8 @@ static int vc4_hdmi_connector_get_proper
if (property == vc4_hdmi->broadcast_rgb_property) {
*val = vc4_conn_state->broadcast_rgb;
} else {
drm_dbg(drm, "Unknown property [PROP:%d:%s]\n",
property->base.id, property->name);
-@@ -648,6 +651,9 @@ static int vc4_hdmi_connector_set_proper
+@@ -654,6 +657,9 @@ static int vc4_hdmi_connector_set_proper
if (property == vc4_hdmi->broadcast_rgb_property) {
vc4_conn_state->broadcast_rgb = val;
return 0;
}
drm_dbg(drm, "Unknown property [PROP:%d:%s]\n",
-@@ -692,6 +698,7 @@ vc4_hdmi_connector_duplicate_state(struc
+@@ -698,6 +704,7 @@ vc4_hdmi_connector_duplicate_state(struc
new_state->tmds_char_rate = vc4_state->tmds_char_rate;
new_state->output_bpc = vc4_state->output_bpc;
new_state->output_format = vc4_state->output_format;
new_state->broadcast_rgb = vc4_state->broadcast_rgb;
__drm_atomic_helper_connector_duplicate_state(connector, &new_state->base);
-@@ -740,6 +747,33 @@ vc4_hdmi_attach_broadcast_rgb_property(s
+@@ -746,6 +753,33 @@ vc4_hdmi_attach_broadcast_rgb_property(s
VC4_HDMI_BROADCAST_RGB_AUTO);
}
static int vc4_hdmi_connector_init(struct drm_device *dev,
struct vc4_hdmi *vc4_hdmi)
{
-@@ -790,6 +824,7 @@ static int vc4_hdmi_connector_init(struc
+@@ -796,6 +830,7 @@ static int vc4_hdmi_connector_init(struc
}
vc4_hdmi_attach_broadcast_rgb_property(dev, vc4_hdmi);
drm_connector_attach_encoder(connector, encoder);
-@@ -1960,6 +1995,10 @@ static void vc4_hdmi_encoder_atomic_mode
+@@ -1966,6 +2001,10 @@ static void vc4_hdmi_encoder_atomic_mode
&crtc_state->adjusted_mode);
vc4_hdmi->output_bpc = vc4_state->output_bpc;
vc4_hdmi->output_format = vc4_state->output_format;
mutex_unlock(&vc4_hdmi->mutex);
}
-@@ -2118,6 +2157,26 @@ vc4_hdmi_encoder_compute_format(const st
+@@ -2124,6 +2163,26 @@ vc4_hdmi_encoder_compute_format(const st
const struct drm_display_info *info = &connector->display_info;
unsigned int format;
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2825,7 +2825,7 @@ static int vc4_hdmi_audio_init(struct vc
+@@ -2831,7 +2831,7 @@ static int vc4_hdmi_audio_init(struct vc
struct snd_soc_card *card = &vc4_hdmi->audio.card;
struct device *dev = &vc4_hdmi->pdev->dev;
struct platform_device *codec_pdev;
int index, len;
int ret;
-@@ -2861,22 +2861,18 @@ static int vc4_hdmi_audio_init(struct vc
+@@ -2867,22 +2867,18 @@ static int vc4_hdmi_audio_init(struct vc
}
/*
};
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2263,7 +2263,9 @@ static int vc4_hdmi_encoder_atomic_check
+@@ -2269,7 +2269,9 @@ static int vc4_hdmi_encoder_atomic_check
unsigned long long tmds_bit_rate;
int ret;
if (mode->flags & DRM_MODE_FLAG_DBLCLK) {
/* Only try to fixup DBLCLK modes to get 480i and 576i
* working.
-@@ -3974,6 +3976,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -3980,6 +3982,7 @@ static const struct vc4_hdmi_variant bcm
PHY_LANE_CK,
},
.unsupported_odd_h_timings = true,
.external_irq_controller = true,
.init_resources = vc5_hdmi_init_resources,
-@@ -4003,6 +4006,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -4009,6 +4012,7 @@ static const struct vc4_hdmi_variant bcm
PHY_LANE_2,
},
.unsupported_odd_h_timings = true,
.external_irq_controller = true,
.init_resources = vc5_hdmi_init_resources,
-@@ -4032,6 +4036,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -4038,6 +4042,7 @@ static const struct vc4_hdmi_variant bcm
PHY_LANE_CK,
},
.unsupported_odd_h_timings = false,
.external_irq_controller = true,
.init_resources = vc5_hdmi_init_resources,
-@@ -4059,6 +4064,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -4065,6 +4070,7 @@ static const struct vc4_hdmi_variant bcm
PHY_LANE_CK,
},
.unsupported_odd_h_timings = false,
if (xhci->quirks & XHCI_NEC_HOST)
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
-@@ -1913,6 +1913,7 @@ struct xhci_hcd {
- #define XHCI_RESET_TO_DEFAULT BIT_ULL(44)
- #define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
+@@ -1916,6 +1916,7 @@ struct xhci_hcd {
#define XHCI_ZHAOXIN_HOST BIT_ULL(46)
-+#define XHCI_FAKE_DOORBELL BIT_ULL(47)
+ #define XHCI_WRITE_64_HI_LO BIT_ULL(47)
+ #define XHCI_CDNS_SCTX_QUIRK BIT_ULL(48)
++#define XHCI_FAKE_DOORBELL BIT_ULL(49)
unsigned int num_active_eps;
unsigned int limit_active_eps;
default:
--- a/drivers/net/ethernet/realtek/r8169_phy_config.c
+++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
-@@ -1102,6 +1102,12 @@ static void rtl8125b_hw_phy_config(struc
+@@ -1104,6 +1104,12 @@ static void rtl8125b_hw_phy_config(struc
rtl8125b_config_eee_phy(phydev);
}
void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,
enum mac_version ver)
{
-@@ -1152,6 +1158,7 @@ void r8169_hw_phy_config(struct rtl8169_
+@@ -1154,6 +1160,7 @@ void r8169_hw_phy_config(struct rtl8169_
[RTL_GIGA_MAC_VER_53] = rtl8117_hw_phy_config,
[RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
[RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
default:
--- a/drivers/net/ethernet/realtek/r8169_phy_config.c
+++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
-@@ -1159,6 +1159,7 @@ void r8169_hw_phy_config(struct rtl8169_
+@@ -1161,6 +1161,7 @@ void r8169_hw_phy_config(struct rtl8169_
[RTL_GIGA_MAC_VER_61] = rtl8125a_2_hw_phy_config,
[RTL_GIGA_MAC_VER_63] = rtl8125b_hw_phy_config,
[RTL_GIGA_MAC_VER_65] = rtl8126a_hw_phy_config,
+++ /dev/null
-From b9c7ac4fe22c608acf6153a3329df2b6b6cd416c Mon Sep 17 00:00:00 2001
-From: Heiner Kallweit <hkallweit1@gmail.com>
-Date: Wed, 11 Sep 2024 15:51:11 +0200
-Subject: [PATCH 45/47] r8169: disable ALDPS per default for RTL8125
-
-En-Wei reported that traffic breaks if cable is unplugged for more
-than 3s and then re-plugged. This was supposed to be fixed by
-621735f59064 ("r8169: fix rare issue with broken rx after link-down on
-RTL8125"). But apparently this didn't fix the issue for everybody.
-The 3s threshold rang a bell, as this is the delay after which ALDPS
-kicks in. And indeed disabling ALDPS fixes the issue for this user.
-Maybe this fixes the issue in general. In a follow-up step we could
-remove the first fix attempt and see whether anybody complains.
-
-Fixes: f1bce4ad2f1c ("r8169: add support for RTL8125")
-Tested-by: En-Wei WU <en-wei.wu@canonical.com>
-Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
-Link: https://patch.msgid.link/778b9d86-05c4-4856-be59-cde4487b9e52@gmail.com
-Signed-off-by: Jakub Kicinski <kuba@kernel.org>
----
- drivers/net/ethernet/realtek/r8169_phy_config.c | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/drivers/net/ethernet/realtek/r8169_phy_config.c
-+++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
-@@ -1060,6 +1060,7 @@ static void rtl8125a_2_hw_phy_config(str
- phy_modify_paged(phydev, 0xa86, 0x15, 0x0001, 0x0000);
- rtl8168g_enable_gphy_10m(phydev);
-
-+ rtl8168g_disable_aldps(phydev);
- rtl8125a_config_eee_phy(phydev);
- }
-
-@@ -1099,6 +1100,7 @@ static void rtl8125b_hw_phy_config(struc
- phy_modify_paged(phydev, 0xbf8, 0x12, 0xe000, 0xa000);
-
- rtl8125_legacy_force_mode(phydev);
-+ rtl8168g_disable_aldps(phydev);
- rtl8125b_config_eee_phy(phydev);
- }
-
static const struct mhi_pci_dev_info mhi_qcom_sdx65_info = {
.name = "qcom-sdx65m",
.fw = "qcom/sdx65m/xbl.elf",
-@@ -600,6 +620,8 @@ static const struct pci_device_id mhi_pc
- .driver_data = (kernel_ulong_t) &mhi_telit_fn990_info },
+@@ -609,6 +629,8 @@ static const struct pci_device_id mhi_pc
+ .driver_data = (kernel_ulong_t) &mhi_telit_fe990a_info },
{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0308),
.driver_data = (kernel_ulong_t) &mhi_qcom_sdx65_info },
+ { PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0309),
+++ /dev/null
-From ecb8f9a7d69698ce20fc6f4d107718d56fa861df Mon Sep 17 00:00:00 2001
-From: Tony Ambardar <Tony.Ambardar@gmail.com>
-Date: Sat, 9 Mar 2024 16:44:53 -0800
-Subject: [PATCH] selftests/bpf: Improve portability of unprivileged tests
-
-The addition of general support for unprivileged tests in test_loader.c
-breaks building test_verifier on non-glibc (e.g. musl) systems, due to the
-inclusion of glibc extension '<error.h>' in 'unpriv_helpers.c'. However,
-the header is actually not needed, so remove it to restore building.
-
-Fixes: 1d56ade032a4 ("selftests/bpf: Unprivileged tests for test_loader.c")
-Signed-off-by: Tony Ambardar <Tony.Ambardar@gmail.com>
----
- tools/testing/selftests/bpf/unpriv_helpers.c | 1 -
- 1 file changed, 1 deletion(-)
-
---- a/tools/testing/selftests/bpf/unpriv_helpers.c
-+++ b/tools/testing/selftests/bpf/unpriv_helpers.c
-@@ -2,7 +2,6 @@
-
- #include <stdbool.h>
- #include <stdlib.h>
--#include <error.h>
- #include <stdio.h>
-
- #include "unpriv_helpers.h"
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
-@@ -8327,7 +8327,7 @@ static int nft_register_flowtable_net_ho
+@@ -8333,7 +8333,7 @@ static int nft_register_flowtable_net_ho
err = flowtable->data.type->setup(&flowtable->data,
hook->ops.dev,
FLOW_BLOCK_BIND);
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
-@@ -300,6 +300,7 @@ static void quirk_mmio_always_on(struct
+@@ -313,6 +313,7 @@ static void quirk_mmio_always_on(struct
DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_ANY_ID, PCI_ANY_ID,
PCI_CLASS_BRIDGE_HOST, 8, quirk_mmio_always_on);
/*
* The Mellanox Tavor device gives false positive parity errors. Disable
* parity error reporting.
-@@ -3488,6 +3489,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
+@@ -3501,6 +3502,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
/*
* Ivytown NTB BAR sizes are misreported by the hardware due to an erratum.
* To work around this, query the size it should be configured to by the
-@@ -3513,6 +3516,8 @@ static void quirk_intel_ntb(struct pci_d
+@@ -3526,6 +3529,8 @@ static void quirk_intel_ntb(struct pci_d
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e08, quirk_intel_ntb);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0e0d, quirk_intel_ntb);
/*
* Some BIOS implementations leave the Intel GPU interrupts enabled, even
* though no one is handling them (e.g., if the i915 driver is never
-@@ -3551,6 +3556,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
+@@ -3564,6 +3569,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
--- a/drivers/char/hw_random/bcm2835-rng.c
+++ b/drivers/char/hw_random/bcm2835-rng.c
-@@ -169,6 +169,7 @@ static int bcm2835_rng_probe(struct plat
+@@ -171,6 +171,7 @@ static int bcm2835_rng_probe(struct plat
priv->rng.init = bcm2835_rng_init;
priv->rng.read = bcm2835_rng_read;
priv->rng.cleanup = bcm2835_rng_cleanup;
if (xhci->dcbaa)
dma_free_coherent(dev, sizeof(*xhci->dcbaa),
xhci->dcbaa, xhci->dcbaa->dma);
-@@ -2297,6 +2306,55 @@ xhci_add_interrupter(struct xhci_hcd *xh
+@@ -2300,6 +2309,55 @@ xhci_add_interrupter(struct xhci_hcd *xh
return 0;
}
int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags)
{
dma_addr_t dma;
-@@ -2433,6 +2491,12 @@ int xhci_mem_init(struct xhci_hcd *xhci,
+@@ -2436,6 +2494,12 @@ int xhci_mem_init(struct xhci_hcd *xhci,
xhci->isoc_bei_interval = AVOID_BEI_INTERVAL_MAX;
}
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
-@@ -3650,7 +3650,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3664,7 +3664,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
full_len = urb->transfer_buffer_length;
/* If we have scatter/gather list, we use it. */
/**
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
-@@ -1763,6 +1763,13 @@ struct xhci_hub {
+@@ -1764,6 +1764,13 @@ struct xhci_hub {
u8 min_rev;
};
/* There is one xhci_hcd structure per controller */
struct xhci_hcd {
struct usb_hcd *main_hcd;
-@@ -1914,6 +1921,8 @@ struct xhci_hcd {
- #define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
- #define XHCI_ZHAOXIN_HOST BIT_ULL(46)
+@@ -1917,6 +1924,8 @@ struct xhci_hcd {
+ #define XHCI_WRITE_64_HI_LO BIT_ULL(47)
+ #define XHCI_CDNS_SCTX_QUIRK BIT_ULL(48)
+#define XHCI_LOCAL_BUFFER BIT_ULL(63)
+
unsigned int num_active_eps;
unsigned int limit_active_eps;
struct xhci_port *hw_ports;
-@@ -1943,6 +1952,8 @@ struct xhci_hcd {
+@@ -1946,6 +1955,8 @@ struct xhci_hcd {
struct list_head regset_list;
void *dbc;
gen_pool_destroy(pool->pool);
pool->pool = NULL;
}
-@@ -2317,15 +2318,15 @@ int xhci_setup_local_lowmem(struct xhci_
+@@ -2320,15 +2321,15 @@ int xhci_setup_local_lowmem(struct xhci_
if (!pool->pool) {
/* minimal alloc one page */
pool->pool = gen_pool_create(PAGE_SHIFT, dev_to_node(hcd->self.sysdev));
goto destroy_pool;
}
-@@ -2335,11 +2336,11 @@ int xhci_setup_local_lowmem(struct xhci_
+@@ -2338,11 +2339,11 @@ int xhci_setup_local_lowmem(struct xhci_
* for it.
*/
err = gen_pool_add_virt(pool->pool, (unsigned long)buffer,
goto destroy_pool;
}
-@@ -2362,7 +2363,7 @@ int xhci_mem_init(struct xhci_hcd *xhci,
+@@ -2365,7 +2366,7 @@ int xhci_mem_init(struct xhci_hcd *xhci,
unsigned int val, val2;
u64 val_64;
u32 page_size, temp;
INIT_LIST_HEAD(&xhci->cmd_list);
-@@ -2492,9 +2493,11 @@ int xhci_mem_init(struct xhci_hcd *xhci,
+@@ -2495,9 +2496,11 @@ int xhci_mem_init(struct xhci_hcd *xhci,
xhci->isoc_bei_interval = AVOID_BEI_INTERVAL_MAX;
if (xhci->quirks & XHCI_LOCAL_BUFFER) {