All patches automatically rebased.
Build system: x86_64
Build-tested: bcm2711/RPi4B, filogic/xiaomi_redmi-router-ax6000-ubootmod
Run-tested: bcm2711/RPi4B, filogic/xiaomi_redmi-router-ax6000-ubootmod
Signed-off-by: John Audia <therealgraysky@proton.me>
-LINUX_VERSION-5.15 = .92
-LINUX_KERNEL_HASH-5.15.92 = 9f420451db99a31a4aade9a46487b39318340d228f5c87c6dc56d83477e6ef91
+LINUX_VERSION-5.15 = .93
+LINUX_KERNEL_HASH-5.15.93 = e7ed24f2690bf0e11158ccfa8ddc5c0e8a4816d83c4055d205218853da9c5dad
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2385,7 +2385,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -2386,7 +2386,7 @@ static const struct vc4_hdmi_variant bcm
.encoder_type = VC4_ENCODER_TYPE_HDMI0,
.debugfs_name = "hdmi0_regs",
.card_name = "vc4-hdmi-0",
u32 value;
int ret;
-@@ -1885,10 +2062,12 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -1886,10 +2063,12 @@ 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);
vc4_hdmi_cec_update_clk_div(vc4_hdmi);
-@@ -1907,7 +2086,9 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -1908,7 +2087,9 @@ static int vc4_hdmi_cec_init(struct vc4_
if (ret)
goto err_remove_cec_rx_handler;
} else {
ret = request_threaded_irq(platform_get_irq(pdev, 0),
vc4_cec_irq_handler,
-@@ -2177,6 +2358,7 @@ static int vc4_hdmi_bind(struct device *
+@@ -2178,6 +2359,7 @@ static int vc4_hdmi_bind(struct device *
vc4_hdmi = devm_kzalloc(dev, sizeof(*vc4_hdmi), GFP_KERNEL);
if (!vc4_hdmi)
return -ENOMEM;
if (msg->len > 16) {
drm_err(dev, "Attempting to transmit too much data (%d)\n", msg->len);
return -ENOMEM;
-@@ -2358,6 +2463,7 @@ static int vc4_hdmi_bind(struct device *
+@@ -2359,6 +2464,7 @@ static int vc4_hdmi_bind(struct device *
vc4_hdmi = devm_kzalloc(dev, sizeof(*vc4_hdmi), GFP_KERNEL);
if (!vc4_hdmi)
return -ENOMEM;
if (delayed_work_pending(&vc4_hdmi->scrambling_work))
cancel_delayed_work_sync(&vc4_hdmi->scrambling_work);
-@@ -2521,6 +2515,14 @@ static int vc4_hdmi_bind(struct device *
+@@ -2522,6 +2516,14 @@ static int vc4_hdmi_bind(struct device *
vc4_hdmi->pdev = pdev;
vc4_hdmi->variant = variant;
return 0;
}
-@@ -2368,6 +2374,7 @@ static int vc5_hdmi_init_resources(struc
+@@ -2369,6 +2375,7 @@ static int vc5_hdmi_init_resources(struc
struct platform_device *pdev = vc4_hdmi->pdev;
struct device *dev = &pdev->dev;
struct resource *res;
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "hdmi");
if (!res)
-@@ -2464,6 +2471,38 @@ static int vc5_hdmi_init_resources(struc
+@@ -2465,6 +2472,38 @@ static int vc5_hdmi_init_resources(struc
return PTR_ERR(vc4_hdmi->reset);
}
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2556,7 +2556,8 @@ static int vc4_hdmi_bind(struct device *
+@@ -2557,7 +2557,8 @@ static int vc4_hdmi_bind(struct device *
* vc4_hdmi_disable_scrambling() will thus run at boot, make
* sure it's disabled, and avoid any inconsistency.
*/
/* HDMI audio codec callbacks */
static void vc4_hdmi_audio_set_mai_clock(struct vc4_hdmi *vc4_hdmi,
unsigned int samplerate)
-@@ -2776,6 +2782,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -2777,6 +2783,7 @@ static const struct vc4_hdmi_variant bcm
.phy_rng_disable = vc5_hdmi_phy_rng_disable,
.channel_map = vc5_hdmi_channel_map,
.supports_hdr = true,
};
static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = {
-@@ -2804,6 +2811,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -2805,6 +2812,7 @@ static const struct vc4_hdmi_variant bcm
.phy_rng_disable = vc5_hdmi_phy_rng_disable,
.channel_map = vc5_hdmi_channel_map,
.supports_hdr = true,
int ret;
if (!of_find_property(dev->of_node, "interrupts", NULL)) {
-@@ -2212,15 +2211,6 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -2213,15 +2212,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);
if (vc4_hdmi->variant->external_irq_controller) {
ret = request_threaded_irq(platform_get_irq_byname(pdev, "cec-rx"),
vc4_cec_irq_handler_rx_bare,
-@@ -2283,6 +2273,29 @@ static void vc4_hdmi_cec_exit(struct vc4
+@@ -2284,6 +2274,29 @@ static void vc4_hdmi_cec_exit(struct vc4
cec_unregister_adapter(vc4_hdmi->cec_adap);
}
#else
static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi)
{
-@@ -2291,6 +2304,10 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -2292,6 +2305,10 @@ static int vc4_hdmi_cec_init(struct vc4_
static void vc4_hdmi_cec_exit(struct vc4_hdmi *vc4_hdmi) {};
#endif
static int vc4_hdmi_build_regset(struct vc4_hdmi *vc4_hdmi,
-@@ -2525,6 +2542,15 @@ static int vc4_hdmi_runtime_resume(struc
+@@ -2526,6 +2543,15 @@ static int vc4_hdmi_runtime_resume(struc
if (ret)
return ret;
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2279,7 +2279,7 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -2280,7 +2280,7 @@ static int vc4_hdmi_cec_init(struct vc4_
static void vc4_hdmi_cec_exit(struct vc4_hdmi *vc4_hdmi) {};
return MODE_CLOCK_HIGH;
if (info->max_tmds_clock && clock > (info->max_tmds_clock * 1000))
-@@ -3156,14 +3158,6 @@ static int vc4_hdmi_bind(struct device *
+@@ -3157,14 +3159,6 @@ static int vc4_hdmi_bind(struct device *
vc4_hdmi->disable_wifi_frequencies =
of_property_read_bool(dev->of_node, "wifi-2.4ghz-coexistence");
local_lock(&lru_pvecs.lock);
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
-@@ -2688,6 +2688,7 @@ SYSCALL_DEFINE1(swapoff, const char __us
+@@ -2689,6 +2689,7 @@ SYSCALL_DEFINE1(swapoff, const char __us
err = 0;
atomic_inc(&proc_poll_event);
wake_up_interruptible(&proc_poll_wait);
out_dput:
filp_close(victim, NULL);
-@@ -3349,6 +3350,7 @@ SYSCALL_DEFINE2(swapon, const char __use
+@@ -3350,6 +3351,7 @@ SYSCALL_DEFINE2(swapon, const char __use
mutex_unlock(&swapon_mutex);
atomic_inc(&proc_poll_event);
wake_up_interruptible(&proc_poll_wait);
}
return 0;
-@@ -1141,9 +1143,33 @@ struct nvmem_device *devm_nvmem_device_g
+@@ -1139,9 +1141,33 @@ struct nvmem_device *devm_nvmem_device_g
}
EXPORT_SYMBOL_GPL(devm_nvmem_device_get);
struct nvmem_cell *cell = ERR_PTR(-ENOENT);
struct nvmem_cell_lookup *lookup;
struct nvmem_device *nvmem;
-@@ -1168,11 +1194,15 @@ nvmem_cell_get_from_lookup(struct device
+@@ -1166,11 +1192,15 @@ nvmem_cell_get_from_lookup(struct device
break;
}
}
break;
}
-@@ -1183,10 +1213,10 @@ nvmem_cell_get_from_lookup(struct device
+@@ -1181,10 +1211,10 @@ nvmem_cell_get_from_lookup(struct device
}
#if IS_ENABLED(CONFIG_OF)
mutex_lock(&nvmem_mutex);
list_for_each_entry(iter, &nvmem->cells, node) {
-@@ -1216,6 +1246,7 @@ struct nvmem_cell *of_nvmem_cell_get(str
+@@ -1214,6 +1244,7 @@ struct nvmem_cell *of_nvmem_cell_get(str
{
struct device_node *cell_np, *nvmem_np;
struct nvmem_device *nvmem;
struct nvmem_cell *cell;
int index = 0;
-@@ -1236,12 +1267,16 @@ struct nvmem_cell *of_nvmem_cell_get(str
+@@ -1234,12 +1265,16 @@ struct nvmem_cell *of_nvmem_cell_get(str
if (IS_ERR(nvmem))
return ERR_CAST(nvmem);
return cell;
}
EXPORT_SYMBOL_GPL(of_nvmem_cell_get);
-@@ -1347,13 +1382,17 @@ EXPORT_SYMBOL(devm_nvmem_cell_put);
+@@ -1345,13 +1380,17 @@ EXPORT_SYMBOL(devm_nvmem_cell_put);
*/
void nvmem_cell_put(struct nvmem_cell *cell)
{
{
u8 *p, *b;
int i, extra, bit_offset = cell->bit_offset;
-@@ -1387,8 +1426,8 @@ static void nvmem_shift_read_buffer_in_p
+@@ -1385,8 +1424,8 @@ static void nvmem_shift_read_buffer_in_p
}
static int __nvmem_cell_read(struct nvmem_device *nvmem,
{
int rc;
-@@ -1419,18 +1458,18 @@ static int __nvmem_cell_read(struct nvme
+@@ -1417,18 +1456,18 @@ static int __nvmem_cell_read(struct nvme
*/
void *nvmem_cell_read(struct nvmem_cell *cell, size_t *len)
{
if (rc) {
kfree(buf);
return ERR_PTR(rc);
-@@ -1440,7 +1479,7 @@ void *nvmem_cell_read(struct nvmem_cell
+@@ -1438,7 +1477,7 @@ void *nvmem_cell_read(struct nvmem_cell
}
EXPORT_SYMBOL_GPL(nvmem_cell_read);
u8 *_buf, int len)
{
struct nvmem_device *nvmem = cell->nvmem;
-@@ -1493,16 +1532,7 @@ err:
+@@ -1491,16 +1530,7 @@ err:
return ERR_PTR(rc);
}
{
struct nvmem_device *nvmem = cell->nvmem;
int rc;
-@@ -1528,6 +1558,21 @@ int nvmem_cell_write(struct nvmem_cell *
+@@ -1526,6 +1556,21 @@ int nvmem_cell_write(struct nvmem_cell *
return len;
}
EXPORT_SYMBOL_GPL(nvmem_cell_write);
static int nvmem_cell_read_common(struct device *dev, const char *cell_id,
-@@ -1630,7 +1675,7 @@ static const void *nvmem_cell_read_varia
+@@ -1628,7 +1673,7 @@ static const void *nvmem_cell_read_varia
if (IS_ERR(cell))
return cell;
buf = nvmem_cell_read(cell, len);
nvmem_cell_put(cell);
if (IS_ERR(buf))
-@@ -1726,18 +1771,18 @@ EXPORT_SYMBOL_GPL(nvmem_cell_read_variab
+@@ -1724,18 +1769,18 @@ EXPORT_SYMBOL_GPL(nvmem_cell_read_variab
ssize_t nvmem_device_cell_read(struct nvmem_device *nvmem,
struct nvmem_cell_info *info, void *buf)
{
if (rc)
return rc;
-@@ -1757,17 +1802,17 @@ EXPORT_SYMBOL_GPL(nvmem_device_cell_read
+@@ -1755,17 +1800,17 @@ EXPORT_SYMBOL_GPL(nvmem_device_cell_read
int nvmem_device_cell_write(struct nvmem_device *nvmem,
struct nvmem_cell_info *info, void *buf)
{
struct gpio_desc *wp_gpio;
void *priv;
};
-@@ -798,6 +799,7 @@ struct nvmem_device *nvmem_register(cons
+@@ -797,6 +798,7 @@ struct nvmem_device *nvmem_register(cons
nvmem->type = config->type;
nvmem->reg_read = config->reg_read;
nvmem->reg_write = config->reg_write;
nvmem->keepout = config->keepout;
nvmem->nkeepout = config->nkeepout;
if (config->of_node)
-@@ -1440,6 +1442,13 @@ static int __nvmem_cell_read(struct nvme
+@@ -1438,6 +1440,13 @@ static int __nvmem_cell_read(struct nvme
if (cell->bit_offset || cell->nbits)
nvmem_shift_read_buffer_in_place(cell, buf);
* @size: Device size.
* @word_size: Minimum read/write access granularity.
* @stride: Minimum read/write access stride.
-@@ -94,6 +98,7 @@ struct nvmem_config {
+@@ -92,6 +96,7 @@ struct nvmem_config {
bool no_of_node;
nvmem_reg_read_t reg_read;
nvmem_reg_write_t reg_write;
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
-@@ -942,28 +942,6 @@ struct nvmem_device *devm_nvmem_register
+@@ -940,28 +940,6 @@ struct nvmem_device *devm_nvmem_register
}
EXPORT_SYMBOL_GPL(devm_nvmem_register);
{
--- a/include/linux/nvmem-provider.h
+++ b/include/linux/nvmem-provider.h
-@@ -135,8 +135,6 @@ void nvmem_unregister(struct nvmem_devic
+@@ -133,8 +133,6 @@ void nvmem_unregister(struct nvmem_devic
struct nvmem_device *devm_nvmem_register(struct device *dev,
const struct nvmem_config *cfg);
void nvmem_add_cell_table(struct nvmem_cell_table *table);
void nvmem_del_cell_table(struct nvmem_cell_table *table);
-@@ -155,12 +153,6 @@ devm_nvmem_register(struct device *dev,
+@@ -153,12 +151,6 @@ devm_nvmem_register(struct device *dev,
return nvmem_register(c);
}
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
-@@ -904,9 +904,9 @@ void nvmem_unregister(struct nvmem_devic
+@@ -902,9 +902,9 @@ void nvmem_unregister(struct nvmem_devic
}
EXPORT_SYMBOL_GPL(nvmem_unregister);
}
/**
-@@ -923,20 +923,16 @@ static void devm_nvmem_release(struct de
+@@ -921,20 +921,16 @@ static void devm_nvmem_release(struct de
struct nvmem_device *devm_nvmem_register(struct device *dev,
const struct nvmem_config *config)
{
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
-@@ -900,7 +900,8 @@ static void nvmem_device_release(struct
+@@ -898,7 +898,8 @@ static void nvmem_device_release(struct
*/
void nvmem_unregister(struct nvmem_device *nvmem)
{
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
-@@ -810,18 +810,24 @@ struct nvmem_device *nvmem_register(cons
+@@ -809,18 +809,24 @@ struct nvmem_device *nvmem_register(cons
switch (config->id) {
case NVMEM_DEVID_NONE:
/* true, if PCS block has no separate SW_RESET register */
bool no_pcs_sw_reset;
};
-@@ -5138,8 +5141,15 @@ static int phy_pipe_clk_register(struct
+@@ -5139,8 +5142,15 @@ static int phy_pipe_clk_register(struct
init.ops = &clk_fixed_rate_ops;
static const struct qmp_phy_init_tbl sdm845_qmp_pcie_serdes_tbl[] = {
QMP_PHY_INIT_CFG(QSERDES_V3_COM_BIAS_EN_CLKBUFLR_EN, 0x14),
QMP_PHY_INIT_CFG(QSERDES_V3_COM_CLK_SELECT, 0x30),
-@@ -3167,6 +3294,36 @@ static const struct qmp_phy_cfg ipq8074_
+@@ -3168,6 +3295,36 @@ static const struct qmp_phy_cfg ipq8074_
.pwrdn_delay_max = 1005, /* us */
};
static const struct qmp_phy_cfg ipq6018_pciephy_cfg = {
.type = PHY_TYPE_PCIE,
.nlanes = 1,
-@@ -5543,6 +5700,9 @@ static const struct of_device_id qcom_qm
+@@ -5571,6 +5728,9 @@ static const struct of_device_id qcom_qm
.compatible = "qcom,ipq8074-qmp-pcie-phy",
.data = &ipq8074_pciephy_cfg,
}, {