sdhci_dumpregs(host);
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
-@@ -296,6 +296,7 @@ struct mmc_card {
- #define MMC_QUIRK_BROKEN_CACHE_FLUSH (1<<16) /* Don't flush cache until the write has occurred */
+@@ -297,6 +297,7 @@ struct mmc_card {
#define MMC_QUIRK_BROKEN_SD_POWEROFF_NOTIFY (1<<17) /* Disable broken SD poweroff notify support */
#define MMC_QUIRK_NO_UHS_DDR50_TUNING (1<<18) /* Disable DDR50 tuning */
+ #define MMC_QUIRK_FIXED_SECURE_ERASE_TRIM_TIME (1<<20) /* Secure erase/trim time is fixed regardless of size */
+#define MMC_QUIRK_ERASE_BROKEN (1<<31) /* Skip erase */
bool written_flag; /* Indicates eMMC has been written since power on */
--- a/drivers/video/fbdev/core/fb_defio.c
+++ b/drivers/video/fbdev/core/fb_defio.c
-@@ -346,7 +346,8 @@ static void fb_deferred_io_lastclose(str
+@@ -444,7 +444,8 @@ static void fb_deferred_io_lastclose(str
{
unsigned long i;
* @fb_info: frame buffer info structure
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
-@@ -511,6 +511,7 @@ struct fb_info {
+@@ -513,6 +513,7 @@ struct fb_info {
bool skip_vt_switch; /* no VT switch on suspend/resume required */
bool skip_panic; /* Do not write to the fb after a panic */
};
/* This will go away
-@@ -600,6 +601,7 @@ extern ssize_t fb_sys_write(struct fb_in
+@@ -602,6 +603,7 @@ extern ssize_t fb_sys_write(struct fb_in
.fb_imageblit = sys_imageblit
/* fbmem.c */
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
-@@ -321,6 +321,7 @@ struct mmc_card {
+@@ -322,6 +322,7 @@ struct mmc_card {
struct sd_switch_caps sw_caps; /* switch (CMD6) caps */
struct sd_ext_reg ext_power; /* SD extension reg for PM */
struct sd_ext_reg ext_perf; /* SD extension reg for PERF */
--- a/drivers/mmc/core/queue.c
+++ b/drivers/mmc/core/queue.c
-@@ -266,6 +266,11 @@ static blk_status_t mmc_mq_queue_rq(stru
+@@ -271,6 +271,11 @@ static blk_status_t mmc_mq_queue_rq(stru
spin_unlock_irq(&mq->lock);
return BLK_STS_RESOURCE;
}
break;
default:
/*
-@@ -282,6 +287,8 @@ static blk_status_t mmc_mq_queue_rq(stru
+@@ -287,6 +292,8 @@ static blk_status_t mmc_mq_queue_rq(stru
/* Parallel dispatch of requests is not supported at the moment */
mq->busy = true;
mq->in_flight[issue_type] += 1;
get_card = (mmc_tot_in_flight(mq) == 1);
cqe_retune_ok = (mmc_cqe_qcnt(mq) == 1);
-@@ -321,6 +328,8 @@ static blk_status_t mmc_mq_queue_rq(stru
+@@ -326,6 +333,8 @@ static blk_status_t mmc_mq_queue_rq(stru
bool put_card = false;
spin_lock_irq(&mq->lock);
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
-@@ -344,6 +344,8 @@ struct mmc_card {
+@@ -345,6 +345,8 @@ struct mmc_card {
unsigned int nr_parts;
struct workqueue_struct *complete_wq; /* Private workqueue */
--- a/drivers/mmc/core/quirks.h
+++ b/drivers/mmc/core/quirks.h
-@@ -181,6 +181,15 @@ static const struct mmc_fixup __maybe_un
- MMC_FIXUP("M62704", CID_MANFID_KINGSTON, 0x0100, add_quirk_mmc,
- MMC_QUIRK_TRIM_BROKEN),
+@@ -190,6 +190,15 @@ static const struct mmc_fixup __maybe_un
+ MMC_FIXUP("IB2932", CID_MANFID_KINGSTON, 0x0100, add_quirk_mmc,
+ MMC_QUIRK_FIXED_SECURE_ERASE_TRIM_TIME),
+ /*
+ * Larger Integral SD cards using rebranded Phison controllers trash
--- a/drivers/mmc/core/card.h
+++ b/drivers/mmc/core/card.h
-@@ -301,4 +301,9 @@ static inline int mmc_card_no_uhs_ddr50_
- return c->quirks & MMC_QUIRK_NO_UHS_DDR50_TUNING;
+@@ -306,4 +306,9 @@ static inline int mmc_card_fixed_secure_
+ return c->quirks & MMC_QUIRK_FIXED_SECURE_ERASE_TRIM_TIME;
}
+static inline int mmc_card_working_sd_cq(const struct mmc_card *c)
/*
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
-@@ -296,6 +296,7 @@ struct mmc_card {
- #define MMC_QUIRK_BROKEN_CACHE_FLUSH (1<<16) /* Don't flush cache until the write has occurred */
- #define MMC_QUIRK_BROKEN_SD_POWEROFF_NOTIFY (1<<17) /* Disable broken SD poweroff notify support */
+@@ -298,6 +298,7 @@ struct mmc_card {
#define MMC_QUIRK_NO_UHS_DDR50_TUNING (1<<18) /* Disable DDR50 tuning */
-+#define MMC_QUIRK_WORKING_SD_CQ (1<<30) /* SD card has known-good CQ implementation */
+ #define MMC_QUIRK_FIXED_SECURE_ERASE_TRIM_TIME (1<<20) /* Secure erase/trim time is fixed regardless of size */
#define MMC_QUIRK_ERASE_BROKEN (1<<31) /* Skip erase */
++#define MMC_QUIRK_WORKING_SD_CQ (1<<30) /* SD card has known-good CQ implementation */
bool written_flag; /* Indicates eMMC has been written since power on */
+ bool reenable_cmdq; /* Re-enable Command Queue */
--- a/block/blk.h
+++ b/block/blk.h
-@@ -593,6 +593,7 @@ void blk_free_ext_minor(unsigned int min
+@@ -595,6 +595,7 @@ void blk_free_ext_minor(unsigned int min
#define ADDPART_FLAG_NONE 0
#define ADDPART_FLAG_RAID 1
#define ADDPART_FLAG_WHOLEDISK 2
#include "gpiolib.h"
#include "gpiolib-of.h"
-@@ -1198,3 +1200,73 @@ void of_gpiochip_remove(struct gpio_chip
- {
- of_node_put(dev_of_node(&chip->gpiodev->dev));
+@@ -1205,3 +1207,73 @@ void of_gpiochip_remove(struct gpio_chip
+
+ of_node_put(np);
}
+
+#ifdef CONFIG_GPIO_SYSFS
-LINUX_VERSION-6.12 = .87
-LINUX_KERNEL_HASH-6.12.87 = cc12a7644b4cef9e06627b29de8753e22b3d076703a9b52be84263e05c8b9830
+LINUX_VERSION-6.12 = .88
+LINUX_KERNEL_HASH-6.12.88 = 4b32f508911ad9c5df46b68e0b6fdd51014081e6b14088e409bc3f43a4315de8
struct rtnl_link {
rtnl_doit_func doit;
-@@ -5012,7 +5012,9 @@ int ndo_dflt_bridge_getlink(struct sk_bu
+@@ -5013,7 +5013,9 @@ int ndo_dflt_bridge_getlink(struct sk_bu
brport_nla_put_flag(skb, flags, mask,
IFLA_BRPORT_MCAST_FLOOD, BR_MCAST_FLOOD) ||
brport_nla_put_flag(skb, flags, mask,
--- a/drivers/net/pcs/Kconfig
+++ b/drivers/net/pcs/Kconfig
-@@ -36,6 +36,15 @@ config PCS_MTK_USXGMII
+@@ -43,6 +43,15 @@ config PCS_MTK_USXGMII
1000Base-X, 2500Base-X and Cisco SGMII are supported on the same
differential pairs via an embedded LynxI PHY.
depends on OF && (ARCH_RZN1 || COMPILE_TEST)
--- a/drivers/net/pcs/Makefile
+++ b/drivers/net/pcs/Makefile
-@@ -7,5 +7,6 @@ pcs_xpcs-$(CONFIG_PCS_XPCS) := pcs-xpcs.
+@@ -8,5 +8,6 @@ pcs_xpcs-$(CONFIG_PCS_XPCS) := pcs-xpcs.
obj-$(CONFIG_PCS_XPCS) += pcs_xpcs.o
obj-$(CONFIG_PCS_LYNX) += pcs-lynx.o
obj-$(CONFIG_PCS_MTK_LYNXI) += pcs-mtk-lynxi.o