-LINUX_VERSION-6.6 = .35
-LINUX_KERNEL_HASH-6.6.35 = fce3ee728712ed063aa8c14a8756c8ff8c7a46ba3827f61d2b04a73c7cf5dd9e
+LINUX_VERSION-6.6 = .36
+LINUX_KERNEL_HASH-6.6.36 = b9676828b737e8fb8eaa5198303d35d35e8df019550be153c8a42c99afe0cdd5
#define USB_VENDOR_ID_BELKIN 0x050d
#define USB_DEVICE_ID_FLIP_KVM 0x3201
-@@ -1404,6 +1407,9 @@
+@@ -1405,6 +1408,9 @@
#define USB_VENDOR_ID_XIAOMI 0x2717
#define USB_DEVICE_ID_MI_SILENT_MOUSE 0x5014
for (i = 0; i < chip->dw->hdata->nr_channels; i++) {
axi_chan_irq_disable(&chip->dw->chan[i], DWAXIDMAC_IRQ_ALL);
axi_chan_disable(&chip->dw->chan[i]);
-@@ -282,7 +305,7 @@ static struct axi_dma_lli *axi_desc_get(
+@@ -283,7 +306,7 @@ static struct axi_dma_lli *axi_desc_get(
static void axi_desc_put(struct axi_dma_desc *desc)
{
struct axi_dma_chan *chan = desc->chan;
-- int count = atomic_read(&chan->descs_allocated);
+- int count = desc->nr_hw_descs;
+ u32 count = desc->hw_desc_count;
struct axi_dma_hw_desc *hw_desc;
int descs_put;
-@@ -304,6 +327,48 @@ static void vchan_desc_put(struct virt_d
+@@ -305,6 +328,48 @@ static void vchan_desc_put(struct virt_d
axi_desc_put(vd_to_axi_desc(vdesc));
}
static enum dma_status
dma_chan_tx_status(struct dma_chan *dchan, dma_cookie_t cookie,
struct dma_tx_state *txstate)
-@@ -313,10 +378,7 @@ dma_chan_tx_status(struct dma_chan *dcha
+@@ -314,10 +379,7 @@ dma_chan_tx_status(struct dma_chan *dcha
enum dma_status status;
u32 completed_length;
unsigned long flags;
status = dma_cookie_status(dchan, cookie, txstate);
if (status == DMA_COMPLETE || !txstate)
-@@ -325,16 +387,31 @@ dma_chan_tx_status(struct dma_chan *dcha
+@@ -326,16 +388,31 @@ dma_chan_tx_status(struct dma_chan *dcha
spin_lock_irqsave(&chan->vc.lock, flags);
vdesc = vchan_find_desc(&chan->vc, cookie);
return status;
}
-@@ -522,7 +599,7 @@ static void dw_axi_dma_set_hw_channel(st
+@@ -523,7 +600,7 @@ static void dw_axi_dma_set_hw_channel(st
unsigned long reg_value, val;
if (!chip->apb_regs) {
return;
}
-@@ -626,18 +703,25 @@ static int dw_axi_dma_set_hw_desc(struct
+@@ -627,18 +704,25 @@ static int dw_axi_dma_set_hw_desc(struct
switch (chan->direction) {
case DMA_MEM_TO_DEV:
reg_width = __ffs(chan->config.dst_addr_width);
DWAXIDMAC_CH_CTL_L_INC << CH_CTL_L_DST_INC_POS |
DWAXIDMAC_CH_CTL_L_NOINC << CH_CTL_L_SRC_INC_POS;
block_ts = len >> reg_width;
-@@ -673,9 +757,6 @@ static int dw_axi_dma_set_hw_desc(struct
+@@ -674,9 +758,6 @@ static int dw_axi_dma_set_hw_desc(struct
}
hw_desc->lli->block_ts_lo = cpu_to_le32(block_ts - 1);
hw_desc->lli->ctl_lo = cpu_to_le32(ctllo);
set_desc_src_master(hw_desc);
-@@ -770,6 +851,8 @@ dw_axi_dma_chan_prep_cyclic(struct dma_c
+@@ -771,6 +852,8 @@ dw_axi_dma_chan_prep_cyclic(struct dma_c
src_addr += segment_len;
}
llp = desc->hw_desc[0].llp;
/* Managed transfer list */
-@@ -849,6 +932,8 @@ dw_axi_dma_chan_prep_slave_sg(struct dma
+@@ -850,6 +933,8 @@ dw_axi_dma_chan_prep_slave_sg(struct dma
} while (len >= segment_len);
}
/* Set end-of-link to the last link descriptor of list */
set_desc_last(&desc->hw_desc[num_sgs - 1]);
-@@ -956,6 +1041,8 @@ dma_chan_prep_dma_memcpy(struct dma_chan
+@@ -957,6 +1042,8 @@ dma_chan_prep_dma_memcpy(struct dma_chan
num++;
}
/* Set end-of-link to the last link descriptor of list */
set_desc_last(&desc->hw_desc[num - 1]);
/* Managed transfer list */
-@@ -1004,7 +1091,7 @@ static void axi_chan_dump_lli(struct axi
+@@ -1005,7 +1092,7 @@ static void axi_chan_dump_lli(struct axi
static void axi_chan_list_dump_lli(struct axi_dma_chan *chan,
struct axi_dma_desc *desc_head)
{
int i;
for (i = 0; i < count; i++)
-@@ -1047,11 +1134,11 @@ out:
+@@ -1048,11 +1135,11 @@ out:
static void axi_chan_block_xfer_complete(struct axi_dma_chan *chan)
{
u64 llp;
int i;
-@@ -1073,6 +1160,7 @@ static void axi_chan_block_xfer_complete
+@@ -1074,6 +1161,7 @@ static void axi_chan_block_xfer_complete
if (chan->cyclic) {
desc = vd_to_axi_desc(vd);
if (desc) {
llp = lo_hi_readq(chan->chan_regs + CH_LLP);
for (i = 0; i < count; i++) {
hw_desc = &desc->hw_desc[i];
-@@ -1325,6 +1413,10 @@ static int parse_device_properties(struc
+@@ -1323,6 +1411,10 @@ static int parse_device_properties(struc
chip->dw->hdata->nr_masters = tmp;
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-@@ -465,8 +465,6 @@ static void axi_chan_block_xfer_start(st
+@@ -466,8 +466,6 @@ static void axi_chan_block_xfer_start(st
return;
}
--- a/drivers/net/usb/ax88179_178a.c
+++ b/drivers/net/usb/ax88179_178a.c
-@@ -1320,6 +1320,8 @@ static int ax88179_bind(struct usbnet *d
+@@ -1319,6 +1319,8 @@ static int ax88179_bind(struct usbnet *d
ax88179_reset(dev);
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-@@ -916,6 +916,9 @@ dw_axi_dma_chan_prep_slave_sg(struct dma
+@@ -917,6 +917,9 @@ dw_axi_dma_chan_prep_slave_sg(struct dma
mem = sg_dma_address(sg);
len = sg_dma_len(sg);
num_segments = DIV_ROUND_UP(sg_dma_len(sg), axi_block_len);
+++ /dev/null
-From ce5cdd3b05216b704a704f466fb4c2dff3778caf Mon Sep 17 00:00:00 2001
-From: Christian Marangi <ansuelsmth@gmail.com>
-Date: Tue, 11 Jun 2024 13:35:33 +0200
-Subject: [PATCH] mips: bmips: BCM6358: make sure CBR is correctly set
-
-It was discovered that some device have CBR address set to 0 causing
-kernel panic when arch_sync_dma_for_cpu_all is called.
-
-This was notice in situation where the system is booted from TP1 and
-BMIPS_GET_CBR() returns 0 instead of a valid address and
-!!(read_c0_brcm_cmt_local() & (1 << 31)); not failing.
-
-The current check whether RAC flush should be disabled or not are not
-enough hence lets check if CBR is a valid address or not.
-
-Fixes: ab327f8acdf8 ("mips: bmips: BCM6358: disable RAC flush for TP1")
-Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
-Acked-by: Florian Fainelli <florian.fainelli@broadcom.com>
-Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
----
- arch/mips/bmips/setup.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
---- a/arch/mips/bmips/setup.c
-+++ b/arch/mips/bmips/setup.c
-@@ -110,7 +110,8 @@ static void bcm6358_quirks(void)
- * RAC flush causes kernel panics on BCM6358 when booting from TP1
- * because the bootloader is not initializing it properly.
- */
-- bmips_rac_flush_disable = !!(read_c0_brcm_cmt_local() & (1 << 31));
-+ bmips_rac_flush_disable = !!(read_c0_brcm_cmt_local() & (1 << 31)) ||
-+ !!BMIPS_GET_CBR();
- }
-
- static void bcm6368_quirks(void)
#define PHY_PMA_MGBT_POLARITY 0x82
#define PHY_MDI_MDI_X_MASK GENMASK(1, 0)
#define PHY_MDI_MDI_X_NORMAL 0x3
-@@ -260,6 +267,35 @@ out:
+@@ -270,10 +277,39 @@ out:
return ret;
}
+
static int gpy_config_init(struct phy_device *phydev)
{
- int ret;
-@@ -271,7 +307,10 @@ static int gpy_config_init(struct phy_de
-
- /* Clear all pending interrupts */
- ret = phy_read(phydev, PHY_ISTAT);
-- return ret < 0 ? ret : 0;
-+ if (ret < 0)
-+ return ret;
-+
+ /* Nothing to configure. Configuration Requirement Placeholder */
+- return 0;
+ return gpy_led_write(phydev);
}
// Lantech 8330-262D-E can operate at 2500base-X, but incorrectly report
// 2500MBd NRZ in their EEPROM
SFP_QUIRK_M("Lantech", "8330-262D-E", sfp_quirk_2500basex),
-@@ -2586,7 +2589,8 @@ static void sfp_sm_main(struct sfp *sfp,
+@@ -2589,7 +2592,8 @@ static void sfp_sm_main(struct sfp *sfp,
* or t_start_up, so assume there is a fault.
*/
sfp_sm_fault(sfp, SFP_S_INIT_TX_FAULT,
} else if (event == SFP_E_TIMEOUT || event == SFP_E_TX_CLEAR) {
init_done:
/* Create mdiobus and start trying for PHY */
-@@ -2840,10 +2844,12 @@ static void sfp_check_state(struct sfp *
+@@ -2843,10 +2847,12 @@ static void sfp_check_state(struct sfp *
mutex_lock(&sfp->st_mutex);
state = sfp_get_state(sfp);
changed = state ^ sfp->state;
# host support
--- a/drivers/ssb/main.c
+++ b/drivers/ssb/main.c
-@@ -1287,6 +1287,14 @@ static int __init ssb_modinit(void)
+@@ -1289,6 +1289,14 @@ static int __init ssb_modinit(void)
{
int err;
--- a/net/core/sock.c
+++ b/net/core/sock.c
-@@ -4145,6 +4145,8 @@ static __net_initdata struct pernet_oper
+@@ -4148,6 +4148,8 @@ static __net_initdata struct pernet_oper
static int __init proto_init(void)
{
#include <net/net_namespace.h>
#ifdef CONFIG_SYSCTL
#include <linux/sysctl.h>
-@@ -461,6 +462,58 @@ static int ct_cpu_seq_show(struct seq_fi
+@@ -458,6 +459,58 @@ static int ct_cpu_seq_show(struct seq_fi
return 0;
}
static const struct seq_operations ct_cpu_seq_ops = {
.start = ct_cpu_seq_start,
.next = ct_cpu_seq_next,
-@@ -474,8 +527,9 @@ static int nf_conntrack_standalone_init_
+@@ -471,8 +524,9 @@ static int nf_conntrack_standalone_init_
kuid_t root_uid;
kgid_t root_gid;
if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt;
-@@ -4034,6 +4037,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -4036,6 +4039,16 @@ packet_setsockopt(struct socket *sock, i
packet_sock_flag_set(po, PACKET_SOCK_QDISC_BYPASS, val);
return 0;
}
default:
return -ENOPROTOOPT;
}
-@@ -4093,6 +4106,13 @@ static int packet_getsockopt(struct sock
+@@ -4095,6 +4108,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR_SZ:
val = READ_ONCE(po->vnet_hdr_sz);
break;
static const struct rt6_info ip6_blk_hole_entry_template = {
.dst = {
.__rcuref = RCUREF_INIT(1),
-@@ -1038,6 +1052,7 @@ static const int fib6_prop[RTN_MAX + 1]
+@@ -1040,6 +1054,7 @@ static const int fib6_prop[RTN_MAX + 1]
[RTN_BLACKHOLE] = -EINVAL,
[RTN_UNREACHABLE] = -EHOSTUNREACH,
[RTN_PROHIBIT] = -EACCES,
[RTN_THROW] = -EAGAIN,
[RTN_NAT] = -EINVAL,
[RTN_XRESOLVE] = -EINVAL,
-@@ -1073,6 +1088,10 @@ static void ip6_rt_init_dst_reject(struc
+@@ -1075,6 +1090,10 @@ static void ip6_rt_init_dst_reject(struc
rt->dst.output = ip6_pkt_prohibit_out;
rt->dst.input = ip6_pkt_prohibit;
break;
case RTN_THROW:
case RTN_UNREACHABLE:
default:
-@@ -4544,6 +4563,17 @@ static int ip6_pkt_prohibit_out(struct n
+@@ -4546,6 +4565,17 @@ static int ip6_pkt_prohibit_out(struct n
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
}
/*
* Allocate a dst for local (unicast / anycast) address.
*/
-@@ -5035,7 +5065,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -5037,7 +5067,8 @@ static int rtm_to_fib6_config(struct sk_
if (rtm->rtm_type == RTN_UNREACHABLE ||
rtm->rtm_type == RTN_BLACKHOLE ||
rtm->rtm_type == RTN_PROHIBIT ||
cfg->fc_flags |= RTF_REJECT;
if (rtm->rtm_type == RTN_LOCAL)
-@@ -6282,6 +6313,8 @@ static int ip6_route_dev_notify(struct n
+@@ -6284,6 +6315,8 @@ static int ip6_route_dev_notify(struct n
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
#endif
-@@ -6293,6 +6326,7 @@ static int ip6_route_dev_notify(struct n
+@@ -6295,6 +6328,7 @@ static int ip6_route_dev_notify(struct n
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
#endif
}
-@@ -6493,6 +6527,8 @@ static int __net_init ip6_route_net_init
+@@ -6495,6 +6529,8 @@ static int __net_init ip6_route_net_init
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.fib6_has_custom_rules = false;
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
sizeof(*net->ipv6.ip6_prohibit_entry),
GFP_KERNEL);
-@@ -6503,11 +6539,21 @@ static int __net_init ip6_route_net_init
+@@ -6505,11 +6541,21 @@ static int __net_init ip6_route_net_init
ip6_template_metrics, true);
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->dst.rt_uncached);
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
ip6_template_metrics, true);
-@@ -6534,6 +6580,8 @@ out:
+@@ -6536,6 +6582,8 @@ out:
return ret;
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
out_ip6_prohibit_entry:
kfree(net->ipv6.ip6_prohibit_entry);
out_ip6_null_entry:
-@@ -6553,6 +6601,7 @@ static void __net_exit ip6_route_net_exi
+@@ -6555,6 +6603,7 @@ static void __net_exit ip6_route_net_exi
kfree(net->ipv6.ip6_null_entry);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
kfree(net->ipv6.ip6_prohibit_entry);
kfree(net->ipv6.ip6_blk_hole_entry);
#endif
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
-@@ -6636,6 +6685,9 @@ void __init ip6_route_init_special_entri
+@@ -6638,6 +6687,9 @@ void __init ip6_route_init_special_entri
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
--- a/drivers/net/phy/mxl-gpy.c
+++ b/drivers/net/phy/mxl-gpy.c
-@@ -386,8 +386,11 @@ static bool gpy_2500basex_chk(struct phy
+@@ -385,8 +385,11 @@ static bool gpy_2500basex_chk(struct phy
phydev->speed = SPEED_2500;
phydev->interface = PHY_INTERFACE_MODE_2500BASEX;
return true;
}
-@@ -438,6 +441,14 @@ static int gpy_config_aneg(struct phy_de
+@@ -437,6 +440,14 @@ static int gpy_config_aneg(struct phy_de
u32 adv;
int ret;
if (phydev->autoneg == AUTONEG_DISABLE) {
/* Configure half duplex with genphy_setup_forced,
* because genphy_c45_pma_setup_forced does not support.
-@@ -560,6 +571,8 @@ static int gpy_update_interface(struct p
+@@ -559,6 +570,8 @@ static int gpy_update_interface(struct p
switch (phydev->speed) {
case SPEED_2500:
phydev->interface = PHY_INTERFACE_MODE_2500BASEX;
ret = phy_modify_mmd(phydev, MDIO_MMD_VEND1, VSPEC1_SGMII_CTRL,
VSPEC1_SGMII_CTRL_ANEN, 0);
if (ret < 0) {
-@@ -573,7 +586,7 @@ static int gpy_update_interface(struct p
+@@ -572,7 +585,7 @@ static int gpy_update_interface(struct p
case SPEED_100:
case SPEED_10:
phydev->interface = PHY_INTERFACE_MODE_SGMII;
--- a/drivers/thermal/mediatek/lvts_thermal.c
+++ b/drivers/thermal/mediatek/lvts_thermal.c
-@@ -1243,7 +1243,7 @@ static int lvts_probe(struct platform_de
+@@ -1247,7 +1247,7 @@ static int lvts_probe(struct platform_de
return 0;
}
{
struct lvts_domain *lvts_td;
int i;
-@@ -1254,8 +1254,6 @@ static int lvts_remove(struct platform_d
+@@ -1258,8 +1258,6 @@ static int lvts_remove(struct platform_d
lvts_ctrl_set_enable(&lvts_td->lvts_ctrl[i], false);
lvts_debugfs_exit(lvts_td);
}
static const struct lvts_ctrl_data mt8195_lvts_mcu_data_ctrl[] = {
-@@ -1356,7 +1354,7 @@ MODULE_DEVICE_TABLE(of, lvts_of_match);
+@@ -1360,7 +1358,7 @@ MODULE_DEVICE_TABLE(of, lvts_of_match);
static struct platform_driver lvts_driver = {
.probe = lvts_probe,
{
u32 gt;
-@@ -703,7 +712,7 @@ static int lvts_golden_temp_init(struct
- if (gt && gt < LVTS_GOLDEN_TEMP_MAX)
+@@ -707,7 +716,7 @@ static int lvts_golden_temp_init(struct
+ if (gt < LVTS_GOLDEN_TEMP_MAX)
golden_temp = gt;
- coeff_b = golden_temp * 500 + LVTS_COEFF_B;
return 0;
}
-@@ -726,7 +735,7 @@ static int lvts_ctrl_init(struct device
+@@ -730,7 +739,7 @@ static int lvts_ctrl_init(struct device
* The golden temp information is contained in the first chunk
* of efuse data.
*/
if (ret)
return ret;
-@@ -737,6 +746,7 @@ static int lvts_ctrl_init(struct device
+@@ -741,6 +750,7 @@ static int lvts_ctrl_init(struct device
for (i = 0; i < lvts_data->num_lvts_ctrl; i++) {
lvts_ctrl[i].base = lvts_td->base + lvts_data->lvts_ctrl[i].offset;
ret = lvts_sensor_init(dev, &lvts_ctrl[i],
&lvts_data->lvts_ctrl[i]);
-@@ -760,7 +770,8 @@ static int lvts_ctrl_init(struct device
+@@ -764,7 +774,8 @@ static int lvts_ctrl_init(struct device
* after initializing the calibration.
*/
lvts_ctrl[i].hw_tshut_raw_temp =
lvts_ctrl[i].low_thresh = INT_MIN;
lvts_ctrl[i].high_thresh = INT_MIN;
-@@ -1225,6 +1236,8 @@ static int lvts_probe(struct platform_de
+@@ -1229,6 +1240,8 @@ static int lvts_probe(struct platform_de
if (irq < 0)
return irq;
ret = lvts_domain_init(dev, lvts_td, lvts_data);
if (ret)
return dev_err_probe(dev, ret, "Failed to initialize the lvts domain\n");
-@@ -1338,11 +1351,15 @@ static const struct lvts_ctrl_data mt819
+@@ -1342,11 +1355,15 @@ static const struct lvts_ctrl_data mt819
static const struct lvts_data mt8195_lvts_mcu_data = {
.lvts_ctrl = mt8195_lvts_mcu_data_ctrl,
.num_lvts_ctrl = ARRAY_SIZE(mt8195_lvts_mcu_data_ctrl),
#define LVTS_HW_SHUTDOWN_MT8195 105000
#define LVTS_MINIMUM_THRESHOLD 20000
-@@ -1269,6 +1272,33 @@ static void lvts_remove(struct platform_
+@@ -1273,6 +1276,33 @@ static void lvts_remove(struct platform_
lvts_debugfs_exit(lvts_td);
}
static const struct lvts_ctrl_data mt8195_lvts_mcu_data_ctrl[] = {
{
.cal_offset = { 0x04, 0x07 },
-@@ -1348,6 +1378,13 @@ static const struct lvts_ctrl_data mt819
+@@ -1352,6 +1382,13 @@ static const struct lvts_ctrl_data mt819
}
};
static const struct lvts_data mt8195_lvts_mcu_data = {
.lvts_ctrl = mt8195_lvts_mcu_data_ctrl,
.num_lvts_ctrl = ARRAY_SIZE(mt8195_lvts_mcu_data_ctrl),
-@@ -1363,6 +1400,7 @@ static const struct lvts_data mt8195_lvt
+@@ -1367,6 +1404,7 @@ static const struct lvts_data mt8195_lvt
};
static const struct of_device_id lvts_of_match[] = {
--- a/drivers/thermal/mediatek/lvts_thermal.c
+++ b/drivers/thermal/mediatek/lvts_thermal.c
-@@ -1299,6 +1299,38 @@ static const struct lvts_ctrl_data mt798
+@@ -1303,6 +1303,38 @@ static const struct lvts_ctrl_data mt798
}
};
static const struct lvts_ctrl_data mt8195_lvts_mcu_data_ctrl[] = {
{
.cal_offset = { 0x04, 0x07 },
-@@ -1407,12 +1439,17 @@ static const struct of_device_id lvts_of
+@@ -1411,12 +1443,17 @@ static const struct of_device_id lvts_of
};
MODULE_DEVICE_TABLE(of, lvts_of_match);
#define LVTS_HW_SHUTDOWN_MT8195 105000
#define LVTS_MINIMUM_THRESHOLD 20000
-@@ -1331,6 +1332,88 @@ static int lvts_resume(struct device *de
+@@ -1335,6 +1336,88 @@ static int lvts_resume(struct device *de
return 0;
}
static const struct lvts_ctrl_data mt8195_lvts_mcu_data_ctrl[] = {
{
.cal_offset = { 0x04, 0x07 },
-@@ -1417,6 +1500,16 @@ static const struct lvts_data mt7988_lvt
+@@ -1421,6 +1504,16 @@ static const struct lvts_data mt7988_lvt
.temp_offset = LVTS_COEFF_B_MT7988,
};
static const struct lvts_data mt8195_lvts_mcu_data = {
.lvts_ctrl = mt8195_lvts_mcu_data_ctrl,
.num_lvts_ctrl = ARRAY_SIZE(mt8195_lvts_mcu_data_ctrl),
-@@ -1433,6 +1526,8 @@ static const struct lvts_data mt8195_lvt
+@@ -1437,6 +1530,8 @@ static const struct lvts_data mt8195_lvt
static const struct of_device_id lvts_of_match[] = {
{ .compatible = "mediatek,mt7988-lvts-ap", .data = &mt7988_lvts_ap_data },
---
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
-@@ -6153,6 +6153,12 @@ static int mvpp2_port_copy_mac_addr(stru
+@@ -6156,6 +6156,12 @@ static int mvpp2_port_copy_mac_addr(stru
return 0;
}