-LINUX_VERSION-5.15 = .50
-LINUX_KERNEL_HASH-5.15.50 = 554d507d37a23810fe8c83912761e4a4f73c40794bc685ff7ca98042fe1bd70f
+LINUX_VERSION-5.15 = .51
+LINUX_KERNEL_HASH-5.15.51 = 1fba4878b27ef4fd9005e0870cb7aa7c4a051b66575cab102d36184b32a94988
+ "PWR_LED_OFF",
+ "GLOBAL_RESET",
+ "VDD_SD_IO_SEL",
-+ "CAM_GPIO",
++ "GLOBAL_SHUTDOWN",
+ "SD_PWR_ON",
-+ "SD_OC_N";
++ "SHUTDOWN_REQUEST";
+ status = "okay";
+ };
+
-&expgpio {
- gpio-line-names = "BT_ON",
- "WL_ON",
-- "",
+- "PWR_LED_OFF",
- "GLOBAL_RESET",
- "VDD_SD_IO_SEL",
-- "CAM_GPIO",
+- "GLOBAL_SHUTDOWN",
- "SD_PWR_ON",
-- "SD_OC_N";
+- "SHUTDOWN_REQUEST";
+&pwm1 {
+ status = "disabled";
+};
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -3552,6 +3552,13 @@ N: bcm113*
+@@ -3554,6 +3554,13 @@ N: bcm113*
N: bcm216*
N: kona
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
-@@ -1607,6 +1607,109 @@ command_cleanup:
+@@ -1618,6 +1618,109 @@ command_cleanup:
}
/*
* non-error returns are a promise to giveback() the urb later
* we drop ownership so next owner (or urb unlink) can get it
*/
-@@ -5432,6 +5535,7 @@ static const struct hc_driver xhci_hc_dr
+@@ -5443,6 +5546,7 @@ static const struct hc_driver xhci_hc_dr
.endpoint_reset = xhci_endpoint_reset,
.check_bandwidth = xhci_check_bandwidth,
.reset_bandwidth = xhci_reset_bandwidth,
+...
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -3552,6 +3552,13 @@ N: bcm113*
+@@ -3554,6 +3554,13 @@ N: bcm113*
N: bcm216*
N: kona
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -3560,7 +3560,7 @@ F: Documentation/devicetree/bindings/med
+@@ -3562,7 +3562,7 @@ F: Documentation/devicetree/bindings/med
F: drivers/staging/media/rpivid
BROADCOM BCM2835 CAMERA DRIVER
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -3564,7 +3564,7 @@ M: Raspberry Pi Kernel Maintenance <kern
+@@ -3566,7 +3566,7 @@ M: Raspberry Pi Kernel Maintenance <kern
L: linux-media@vger.kernel.org
S: Maintained
F: drivers/media/platform/bcm2835/
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -17516,6 +17516,14 @@ T: git git://linuxtv.org/media_tree.git
+@@ -17525,6 +17525,14 @@ T: git git://linuxtv.org/media_tree.git
F: Documentation/devicetree/bindings/media/i2c/sony,imx412.yaml
F: drivers/media/i2c/imx412.c
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -3566,6 +3566,15 @@ S: Maintained
+@@ -3568,6 +3568,15 @@ S: Maintained
F: drivers/media/platform/bcm2835/
F: Documentation/devicetree/bindings/media/brcm,bcm2835-unicam.yaml
+...
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -17530,6 +17530,7 @@ M: Raspberry Pi Kernel Maintenance <kern
+@@ -17539,6 +17539,7 @@ M: Raspberry Pi Kernel Maintenance <kern
L: linux-media@vger.kernel.org
S: Maintained
T: git git://linuxtv.org/media_tree.git
+...
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -17534,6 +17534,14 @@ F: Documentation/devicetree/bindings/med
+@@ -17543,6 +17543,14 @@ F: Documentation/devicetree/bindings/med
F: Documentation/devicetree/bindings/media/i2c/imx477.yaml
F: drivers/media/i2c/imx477.c
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
-@@ -300,6 +300,7 @@ static void xhci_pci_quirks(struct devic
+@@ -304,6 +304,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;
}
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
-@@ -866,8 +866,8 @@ static void xhci_clear_command_ring(stru
+@@ -877,8 +877,8 @@ static void xhci_clear_command_ring(stru
seg = ring->deq_seg;
do {
memset(seg->trbs, 0,
cpu_to_le32(~TRB_CYCLE);
seg = seg->next;
} while (seg != ring->deq_seg);
-@@ -878,7 +878,7 @@ static void xhci_clear_command_ring(stru
+@@ -889,7 +889,7 @@ static void xhci_clear_command_ring(stru
ring->enq_seg = ring->deq_seg;
ring->enqueue = ring->dequeue;
cycle_state, type, max_packet, flags);
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
-@@ -301,6 +301,7 @@ static void xhci_pci_quirks(struct devic
+@@ -305,6 +305,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;
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
-@@ -302,6 +302,7 @@ static void xhci_pci_quirks(struct devic
+@@ -306,6 +306,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_VLI_TRB_CACHE_BUG;
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -5976,6 +5976,14 @@ T: git git://anongit.freedesktop.org/drm
+@@ -5980,6 +5980,14 @@ T: git git://anongit.freedesktop.org/drm
F: Documentation/devicetree/bindings/display/multi-inno,mi0283qt.txt
F: drivers/gpu/drm/tiny/mi0283qt.c
+...
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -1386,6 +1386,14 @@ S: Maintained
+@@ -1388,6 +1388,14 @@ S: Maintained
F: drivers/net/arcnet/
F: include/uapi/linux/if_arcnet.h
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -3428,6 +3428,7 @@ S: Supported
+@@ -3430,6 +3430,7 @@ S: Supported
F: arch/arm64/net/
BPF JIT for MIPS (32-BIT AND 64-BIT)
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -761,6 +761,10 @@ int dev_fill_forward_path(const struct n
+@@ -763,6 +763,10 @@ int dev_fill_forward_path(const struct n
if (WARN_ON_ONCE(last_dev == ctx.dev))
return -1;
}
#define MDIO_PHYXS_VEND_IF_STATUS 0xe812
#define MDIO_PHYXS_VEND_IF_STATUS_TYPE_MASK GENMASK(7, 3)
-@@ -359,6 +361,49 @@ static int aqr107_read_rate(struct phy_d
+@@ -372,6 +374,49 @@ static int aqr107_read_rate(struct phy_d
return 0;
}
static int aqr107_read_status(struct phy_device *phydev)
{
int val, ret;
-@@ -489,7 +534,7 @@ static void aqr107_chip_info(struct phy_
+@@ -502,7 +547,7 @@ static void aqr107_chip_info(struct phy_
build_id = FIELD_GET(VEND1_GLOBAL_RSVD_STAT1_FW_BUILD_ID, val);
prov_id = FIELD_GET(VEND1_GLOBAL_RSVD_STAT1_PROV_ID, val);
fw_major, fw_minor, build_id, prov_id);
}
-@@ -661,6 +706,24 @@ static struct phy_driver aqr_driver[] =
+@@ -674,6 +719,24 @@ static struct phy_driver aqr_driver[] =
.link_change_notify = aqr107_link_change_notify,
},
{
PHY_ID_MATCH_MODEL(PHY_ID_AQCS109),
.name = "Aquantia AQCS109",
.probe = aqr107_probe,
-@@ -686,6 +749,24 @@ static struct phy_driver aqr_driver[] =
+@@ -699,6 +762,24 @@ static struct phy_driver aqr_driver[] =
.handle_interrupt = aqr_handle_interrupt,
.read_status = aqr_read_status,
},
};
module_phy_driver(aqr_driver);
-@@ -696,8 +777,10 @@ static struct mdio_device_id __maybe_unu
+@@ -709,8 +790,10 @@ static struct mdio_device_id __maybe_unu
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR105) },
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR106) },
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR107) },
help
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -3586,6 +3586,11 @@ static int xmit_one(struct sk_buff *skb,
+@@ -3588,6 +3588,11 @@ static int xmit_one(struct sk_buff *skb,
if (dev_nit_active(dev))
dev_queue_xmit_nit(skb, dev);
#define PHY_ID_AQR813 0x31c31cb2
#define MDIO_PHYXS_VEND_IF_STATUS 0xe812
-@@ -124,6 +126,29 @@
+@@ -126,6 +128,29 @@
#define VEND1_GLOBAL_INT_VEND_MASK_GLOBAL2 BIT(1)
#define VEND1_GLOBAL_INT_VEND_MASK_GLOBAL3 BIT(0)
struct aqr107_hw_stat {
const char *name;
int reg;
-@@ -244,6 +269,51 @@ static int aqr_config_aneg(struct phy_de
+@@ -257,6 +282,51 @@ static int aqr_config_aneg(struct phy_de
return genphy_c45_check_and_restart_aneg(phydev, changed);
}
static int aqr_config_intr(struct phy_device *phydev)
{
bool en = phydev->interrupts == PHY_INTERRUPT_ENABLED;
-@@ -767,6 +837,30 @@ static struct phy_driver aqr_driver[] =
+@@ -780,6 +850,30 @@ static struct phy_driver aqr_driver[] =
.get_stats = aqr107_get_stats,
.link_change_notify = aqr107_link_change_notify,
},
};
module_phy_driver(aqr_driver);
-@@ -777,9 +871,11 @@ static struct mdio_device_id __maybe_unu
+@@ -790,9 +884,11 @@ static struct mdio_device_id __maybe_unu
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR105) },
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR106) },
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR107) },
--- a/drivers/net/phy/aquantia_main.c
+++ b/drivers/net/phy/aquantia_main.c
-@@ -302,10 +302,16 @@ static int aqr_config_aneg_set_prot(stru
+@@ -315,10 +315,16 @@ static int aqr_config_aneg_set_prot(stru
phy_write_mmd(phydev, MDIO_MMD_VEND1, AQUANTIA_VND1_GSTART_RATE,
aquantia_syscfg[if_type].start_rate);
#define PHY_ID_AQR113C 0x31c31c12
#define PHY_ID_AQCS109 0x03a1b5c2
#define PHY_ID_AQR405 0x03a1b4b0
-@@ -856,6 +857,14 @@ static struct phy_driver aqr_driver[] =
+@@ -869,6 +870,14 @@ static struct phy_driver aqr_driver[] =
.get_stats = aqr107_get_stats,
},
{
PHY_ID_MATCH_MODEL(PHY_ID_AQR412),
.name = "Aquantia AQR412",
.probe = aqr107_probe,
-@@ -878,6 +887,7 @@ static struct mdio_device_id __maybe_unu
+@@ -891,6 +900,7 @@ static struct mdio_device_id __maybe_unu
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR106) },
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR107) },
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR112) },
#define PHY_ID_AQR113 0x31c31c40
#define PHY_ID_AQR113C 0x31c31c12
#define PHY_ID_AQCS109 0x03a1b5c2
-@@ -857,6 +859,30 @@ static struct phy_driver aqr_driver[] =
+@@ -870,6 +872,30 @@ static struct phy_driver aqr_driver[] =
.get_stats = aqr107_get_stats,
},
{
PHY_ID_MATCH_MODEL(PHY_ID_AQR113),
.name = "Aquantia AQR113",
.config_aneg = aqr_config_aneg,
-@@ -887,6 +913,8 @@ static struct mdio_device_id __maybe_unu
+@@ -900,6 +926,8 @@ static struct mdio_device_id __maybe_unu
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR106) },
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR107) },
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR112) },
#define QUECTEL_VENDOR_ID 0x2c7c
/* These Quectel products use Quectel's vendor ID */
-@@ -1131,6 +1133,11 @@ static const struct usb_device_id option
+@@ -1133,6 +1135,11 @@ static const struct usb_device_id option
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95, 0xff, 0, 0) },
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
.driver_info = RSVD(4) },
__u8 inner_protocol_type:1;
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -6059,6 +6059,9 @@ static enum gro_result dev_gro_receive(s
+@@ -6061,6 +6061,9 @@ static enum gro_result dev_gro_receive(s
int same_flow;
int grow;
if (netif_elide_gro(skb->dev))
goto normal;
-@@ -8073,6 +8076,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -8075,6 +8078,48 @@ static void __netdev_adjacent_dev_unlink
&upper_dev->adj_list.lower);
}
static int __netdev_upper_dev_link(struct net_device *dev,
struct net_device *upper_dev, bool master,
void *upper_priv, void *upper_info,
-@@ -8124,6 +8169,7 @@ static int __netdev_upper_dev_link(struc
+@@ -8126,6 +8171,7 @@ static int __netdev_upper_dev_link(struc
if (ret)
return ret;
ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
&changeupper_info.info);
ret = notifier_to_errno(ret);
-@@ -8220,6 +8266,7 @@ static void __netdev_upper_dev_unlink(st
+@@ -8222,6 +8268,7 @@ static void __netdev_upper_dev_unlink(st
__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
&changeupper_info.info);
-@@ -9039,6 +9086,7 @@ int dev_set_mac_address(struct net_devic
+@@ -9041,6 +9088,7 @@ int dev_set_mac_address(struct net_devic
if (err)
return err;
dev->addr_assign_type = NET_ADDR_SET;