All patches automatically rebased.
Build system: x86_64
Build-tested: bcm2711/RPi4B, mt7622/RT3200
Run-tested: bcm2711/RPi4B, mt7622/RT3200
Signed-off-by: John Audia <therealgraysky@proton.me>
-LINUX_VERSION-5.15 = .75
-LINUX_KERNEL_HASH-5.15.75 = d9a65bdd3659ccf55acf42268a27f7989b1500815ae51223aadbad9aeec45fc6
+LINUX_VERSION-5.15 = .76
+LINUX_KERNEL_HASH-5.15.76 = 9007a020c419e3625b980e361be09f70ebd99e156ccb66129a981483d065d57f
static inline int mmc_blk_part_switch(struct mmc_card *card,
unsigned int part_type);
static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq,
-@@ -2923,6 +2930,8 @@ static int mmc_blk_probe(struct mmc_card
+@@ -2928,6 +2935,8 @@ static int mmc_blk_probe(struct mmc_card
{
struct mmc_blk_data *md;
int ret = 0;
/*
* Check that the card supports the command class(es) we need.
-@@ -2930,7 +2939,16 @@ static int mmc_blk_probe(struct mmc_card
+@@ -2935,7 +2944,16 @@ static int mmc_blk_probe(struct mmc_card
if (!(card->csd.cmdclass & CCC_BLOCK_READ))
return -ENODEV;
card->complete_wq = alloc_workqueue("mmc_complete",
WQ_MEM_RECLAIM | WQ_HIGHPRI, 0);
-@@ -2945,6 +2963,17 @@ static int mmc_blk_probe(struct mmc_card
+@@ -2950,6 +2968,17 @@ static int mmc_blk_probe(struct mmc_card
goto out_free;
}
}
--- a/drivers/mmc/core/quirks.h
+++ b/drivers/mmc/core/quirks.h
-@@ -99,6 +99,14 @@ static const struct mmc_fixup __maybe_un
- MMC_FIXUP("V10016", CID_MANFID_KINGSTON, CID_OEMID_ANY, add_quirk_mmc,
- MMC_QUIRK_TRIM_BROKEN),
+@@ -105,6 +105,14 @@ static const struct mmc_fixup __maybe_un
+ MMC_FIXUP(CID_NAME_ANY, CID_MANFID_SANDISK_SD, 0x5344, add_quirk_sd,
+ MMC_QUIRK_BROKEN_SD_DISCARD),
+ /*
+ * On some Kingston SD cards, multiple erases of less than 64
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
-@@ -293,6 +293,8 @@ struct mmc_card {
- #define MMC_QUIRK_TRIM_BROKEN (1<<12) /* Skip trim */
+@@ -294,6 +294,8 @@ struct mmc_card {
#define MMC_QUIRK_BROKEN_HPI (1<<13) /* Disable broken HPI support */
+ #define MMC_QUIRK_BROKEN_SD_DISCARD (1<<14) /* Disable broken SD discard support */
+#define MMC_QUIRK_ERASE_BROKEN (1<<31) /* Skip erase */
+
--- a/drivers/mmc/core/block.c
+++ b/drivers/mmc/core/block.c
-@@ -1870,7 +1870,11 @@ static void mmc_blk_mq_rw_recovery(struc
+@@ -1875,7 +1875,11 @@ static void mmc_blk_mq_rw_recovery(struc
return;
}
--- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c
-@@ -2187,6 +2187,16 @@ static const struct arm64_cpu_capabiliti
+@@ -2197,6 +2197,16 @@ static const struct arm64_cpu_capabiliti
.matches = has_hw_dbm,
.cpu_enable = cpu_enable_hw_dbm,
},
--- a/include/linux/phylink.h
+++ b/include/linux/phylink.h
-@@ -76,6 +76,7 @@ struct phylink_config {
+@@ -78,6 +78,7 @@ struct phylink_config {
bool ovr_an_inband;
void (*get_fixed_state)(struct phylink_config *config,
struct phylink_link_state *state);
return phylink_is_empty_linkmode(supported) ? -EINVAL : 0;
--- a/include/linux/phylink.h
+++ b/include/linux/phylink.h
-@@ -67,6 +67,8 @@ enum phylink_op_type {
+@@ -68,6 +68,8 @@ enum phylink_op_type {
* @ovr_an_inband: if true, override PCS to MLO_AN_INBAND
* @get_fixed_state: callback to execute to determine the fixed link state,
* if MAC link is at %MLO_AN_FIXED mode.
*/
struct phylink_config {
struct device *dev;
-@@ -134,8 +136,14 @@ struct phylink_mac_ops {
+@@ -136,8 +138,14 @@ struct phylink_mac_ops {
* based on @state->advertising and/or @state->speed and update
* @state->interface accordingly. See phylink_helper_basex_speed().
*
--- a/include/linux/phylink.h
+++ b/include/linux/phylink.h
-@@ -84,6 +84,7 @@ struct phylink_config {
+@@ -86,6 +86,7 @@ struct phylink_config {
/**
* struct phylink_mac_ops - MAC operations structure.
* @validate: Validate and update the link configuration.
* @mac_pcs_get_state: Read the current link state from the hardware.
* @mac_prepare: prepare for a major reconfiguration of the interface.
* @mac_config: configure the MAC for the selected mode and state.
-@@ -98,6 +99,8 @@ struct phylink_mac_ops {
+@@ -100,6 +101,8 @@ struct phylink_mac_ops {
void (*validate)(struct phylink_config *config,
unsigned long *supported,
struct phylink_link_state *state);
void (*mac_pcs_get_state)(struct phylink_config *config,
struct phylink_link_state *state);
int (*mac_prepare)(struct phylink_config *config, unsigned int mode,
-@@ -150,6 +153,21 @@ struct phylink_mac_ops {
+@@ -152,6 +155,21 @@ struct phylink_mac_ops {
*/
void validate(struct phylink_config *config, unsigned long *supported,
struct phylink_link_state *state);
};
static inline bool phylink_autoneg_inband(unsigned int mode)
-@@ -69,6 +92,7 @@ enum phylink_op_type {
+@@ -70,6 +93,7 @@ enum phylink_op_type {
* if MAC link is at %MLO_AN_FIXED mode.
* @supported_interfaces: bitmap describing which PHY_INTERFACE_MODE_xxx
* are supported by the MAC/PCS.
*/
struct phylink_config {
struct device *dev;
-@@ -79,6 +103,7 @@ struct phylink_config {
+@@ -81,6 +105,7 @@ struct phylink_config {
void (*get_fixed_state)(struct phylink_config *config,
struct phylink_link_state *state);
DECLARE_PHY_INTERFACE_MASK(supported_interfaces);
};
/**
-@@ -460,6 +485,12 @@ void pcs_link_up(struct phylink_pcs *pcs
+@@ -462,6 +487,12 @@ void pcs_link_up(struct phylink_pcs *pcs
phy_interface_t interface, int speed, int duplex);
#endif
return phylink_is_empty_linkmode(supported) ? -EINVAL : 0;
--- a/include/linux/phylink.h
+++ b/include/linux/phylink.h
-@@ -396,6 +396,7 @@ struct phylink_pcs {
+@@ -398,6 +398,7 @@ struct phylink_pcs {
/**
* struct phylink_pcs_ops - MAC PCS operations structure.
* @pcs_get_state: read the current MAC PCS link state from the hardware.
* @pcs_config: configure the MAC PCS for the selected mode and state.
* @pcs_an_restart: restart 802.3z BaseX autonegotiation.
-@@ -403,6 +404,8 @@ struct phylink_pcs {
+@@ -405,6 +406,8 @@ struct phylink_pcs {
* (where necessary).
*/
struct phylink_pcs_ops {
void (*pcs_get_state)(struct phylink_pcs *pcs,
struct phylink_link_state *state);
int (*pcs_config)(struct phylink_pcs *pcs, unsigned int mode,
-@@ -416,6 +419,23 @@ struct phylink_pcs_ops {
+@@ -418,6 +421,23 @@ struct phylink_pcs_ops {
#if 0 /* For kernel-doc purposes only. */
/**
* @pcs_poll: MAC PCS cannot provide link change interrupt
* @poll_fixed_state: if true, starts link_poll,
* if MAC link is at %MLO_AN_FIXED mode.
-@@ -97,6 +99,7 @@ enum phylink_op_type {
+@@ -98,6 +100,7 @@ enum phylink_op_type {
struct phylink_config {
struct device *dev;
enum phylink_op_type type;
+ bool legacy_pre_march2020;
bool pcs_poll;
bool poll_fixed_state;
- bool ovr_an_inband;
+ bool mac_managed_pm;
}
--- a/include/linux/phylink.h
+++ b/include/linux/phylink.h
-@@ -208,6 +208,10 @@ struct phylink_pcs *mac_select_pcs(struc
+@@ -210,6 +210,10 @@ struct phylink_pcs *mac_select_pcs(struc
* negotiation completion state in @state->an_complete, and link up state
* in @state->link. If possible, @state->lp_advertising should also be
* populated.
*/
void mac_pcs_get_state(struct phylink_config *config,
struct phylink_link_state *state);
-@@ -248,6 +252,15 @@ int mac_prepare(struct phylink_config *c
+@@ -250,6 +254,15 @@ int mac_prepare(struct phylink_config *c
* guaranteed to be correct, and so any mac_config() implementation must
* never reference these fields.
*
* (this requires a rewrite - please refer to mac_link_up() for situations
* where the PCS and MAC are not tightly integrated.)
*
-@@ -332,6 +345,10 @@ int mac_finish(struct phylink_config *co
+@@ -334,6 +347,10 @@ int mac_finish(struct phylink_config *co
/**
* mac_an_restart() - restart 802.3z BaseX autonegotiation
* @config: a pointer to a &struct phylink_config.
--- a/net/sched/sch_fq_codel.c
+++ b/net/sched/sch_fq_codel.c
-@@ -469,7 +469,11 @@ static int fq_codel_init(struct Qdisc *s
+@@ -467,7 +467,11 @@ static int fq_codel_init(struct Qdisc *s
sch->limit = 10*1024;
q->flows_cnt = 1024;
#include <linux/crc32.h>
#include <linux/if_vlan.h>
#include <linux/uaccess.h>
-@@ -6863,6 +6864,22 @@ static void rtl_tally_reset(struct r8152
+@@ -6864,6 +6865,22 @@ static void rtl_tally_reset(struct r8152
ocp_write_word(tp, MCU_TYPE_PLA, PLA_RSTTALLY, ocp_data);
}
static void r8152b_init(struct r8152 *tp)
{
u32 ocp_data;
-@@ -6904,6 +6921,8 @@ static void r8152b_init(struct r8152 *tp
+@@ -6905,6 +6922,8 @@ static void r8152b_init(struct r8152 *tp
ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_USB_CTRL);
ocp_data &= ~(RX_AGG_DISABLE | RX_ZERO_EN);
ocp_write_word(tp, MCU_TYPE_USB, USB_USB_CTRL, ocp_data);
}
static void r8153_init(struct r8152 *tp)
-@@ -7044,6 +7063,8 @@ static void r8153_init(struct r8152 *tp)
+@@ -7045,6 +7064,8 @@ static void r8153_init(struct r8152 *tp)
tp->coalesce = COALESCE_SLOW;
break;
}
}
static void r8153b_init(struct r8152 *tp)
-@@ -7126,6 +7147,8 @@ static void r8153b_init(struct r8152 *tp
+@@ -7127,6 +7148,8 @@ static void r8153b_init(struct r8152 *tp
rtl_tally_reset(tp);
tp->coalesce = 15000; /* 15 us */