mirror of
https://git.openwrt.org/openwrt/openwrt.git/
synced 2025-10-06 02:22:43 +02:00
kernel: bump 6.12 to 6.12.43
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.43 Removed upstreamed: generic/backport-6.12/612-07-v6.17-net-dsa-b53-prevent-SWITCH_CTRL-access-on-BCM5325.patch[1] generic-backport/612-08-v6.17-net-dsa-b53-fix-IP_MULTICAST_CTRL-on-BCM5325.patch[2] generic-backport/612-09-v6.17-net-dsa-b53-prevent-DIS_LEARNING-access-on-BCM5325.patch[3] generic-backport/612-11-v6.17-net-dsa-b53-prevent-GMII_PORT_OVERRIDE_CTRL-access-on-BCM5325.patch[4] generic-backport/612-14-v6.17-net-dsa-b53-ensure-BCM5325-PHYs-are-enabled.patch[5] generic-backport/830-v6.17-Revert-leds-trigger-netdev-Configure-LED-blink-inter.patch[6] bcm27xx/patches-6.12/950-0100-media-tc358743-Increase-FIFO-level-to-374.patch[7] bcm27xx/patches-6.12/950-0102-media-tc358743-Check-I2C-succeeded-during-probe.patch[8] bcm27xx/patches-6.12/950-0107-media-tc358743-Return-an-appropriate-colorspace-from.patch[9] bcm27xx/patches-6.12/950-0341-Allow-RESET_BRCMSTB-on-ARCH_BCM2835.patch[10] lantiq/patches-6.12/102-11-v6.17-MIPS-lantiq-falcon-sysctrl-fix-request-memory-check-.patch[11] lantiq/patches-6.12/102-12-v6.17-MIPS-vpe-mt-add-missing-prototypes-for-vpe_-alloc-st.patch[12] qualcommax/patches-6.12/0170-clk-qcom-gcc-ipq8074-fix-broken-freq-table-for-nss_port6_tx_clk_src.patch[13] generic/backport-6.12/612-13-v6.17-net-dsa-b53-fix-b53_imp_vlan_setup-for-BCM5325.patch[14] All other patches automatically rebased. 1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=f16f96ccfe56ef2d627c20ba47f6d9d7dea40f5b 2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=394bd12d1f93ed2fa0fa1d8f31ffd3c344681e85 3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=9f45e4858f8096bb27f9a2c75fc24a538dffad67 4. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=15cf46cc6ecc7a54b397294675d11c379ddf69ef 5. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=0d250ad617a035904744cef74a5d5dc43d0199b9 6. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=cb9bb872366e10fa42e1e0200a0c2e5d05a27bec 7. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=f25d566c5674decd0051a3e624805fc1524729bf 8. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=3e03ee3b65baeac4c253b30650492ffffad9b608 9. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=b42b107293b52ac8d46238815b1071138a47a7e4 10. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=e285cdb9d2e4ba2e4515ae898f92e9f38be64eb3 11. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=1e9079ff83eac962bc3b1e2fbad73b2f7d5256f4 12. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=8520c843d9a2770012f23da08e4e2ccf1bb05ba6 13. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=f1c5c55fb6cda312f5ed15505588caaf05a69043 14. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.43&id=757955c80663ac3df7053abaf6fcc75051ef7a7c Build system: x86/64 (Intel N150 based) Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc Signed-off-by: John Audia <therealgraysky@proton.me> Link: https://github.com/openwrt/openwrt/pull/19618 Signed-off-by: Robert Marko <robimarko@gmail.com>
This commit is contained in:
@@ -784,7 +784,7 @@ SVN-Revision: 35130
|
||||
|
||||
--- a/include/net/neighbour.h
|
||||
+++ b/include/net/neighbour.h
|
||||
@@ -286,8 +286,10 @@ static inline bool neigh_key_eq128(const
|
||||
@@ -287,8 +287,10 @@ static inline bool neigh_key_eq128(const
|
||||
const u32 *n32 = (const u32 *)n->primary_key;
|
||||
const u32 *p32 = pkey;
|
||||
|
||||
|
@@ -18589,7 +18589,7 @@ Signed-off-by: j-schambacher <joerg@hifiberry.com>
|
||||
u32 xfer_resolution;
|
||||
--- a/sound/soc/soc-core.c
|
||||
+++ b/sound/soc/soc-core.c
|
||||
@@ -1434,7 +1434,15 @@ int snd_soc_runtime_set_dai_fmt(struct s
|
||||
@@ -1437,7 +1437,15 @@ int snd_soc_runtime_set_dai_fmt(struct s
|
||||
return 0;
|
||||
|
||||
for_each_rtd_codec_dais(rtd, i, codec_dai) {
|
||||
|
@@ -1,31 +0,0 @@
|
||||
From 6fd71667a133560b84946a5008e3c9375b5115b7 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
Date: Wed, 31 Oct 2018 14:56:59 +0000
|
||||
Subject: [PATCH] media: tc358743: Increase FIFO level to 374.
|
||||
|
||||
The existing fixed value of 16 worked for UYVY 720P60 over
|
||||
2 lanes at 594MHz, or UYVY 1080P60 over 4 lanes. (RGB888
|
||||
1080P60 needs 6 lanes at 594MHz).
|
||||
It doesn't allow for lower resolutions to work as the FIFO
|
||||
underflows.
|
||||
|
||||
374 is required for 1080P24-30 UYVY over 2 lanes @ 972Mbit/s, but
|
||||
>374 means that the FIFO underflows on 1080P50 UYVY over 2 lanes
|
||||
@ 972Mbit/s.
|
||||
|
||||
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
---
|
||||
drivers/media/i2c/tc358743.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/media/i2c/tc358743.c
|
||||
+++ b/drivers/media/i2c/tc358743.c
|
||||
@@ -1942,7 +1942,7 @@ static int tc358743_probe_of(struct tc35
|
||||
state->pdata.ddc5v_delay = DDC5V_DELAY_100_MS;
|
||||
state->pdata.enable_hdcp = false;
|
||||
/* A FIFO level of 16 should be enough for 2-lane 720p60 at 594 MHz. */
|
||||
- state->pdata.fifo_level = 16;
|
||||
+ state->pdata.fifo_level = 374;
|
||||
/*
|
||||
* The PLL input clock is obtained by dividing refclk by pll_prd.
|
||||
* It must be between 6 MHz and 40 MHz, lower frequency is better.
|
@@ -24,7 +24,7 @@ Signed-off-by: Jacko Dirks <jdirks.linuxdev@gmail.com>
|
||||
|
||||
--- a/drivers/media/i2c/tc358743.c
|
||||
+++ b/drivers/media/i2c/tc358743.c
|
||||
@@ -1962,6 +1962,7 @@ static int tc358743_probe_of(struct tc35
|
||||
@@ -1980,6 +1980,7 @@ static int tc358743_probe_of(struct tc35
|
||||
/*
|
||||
* The CSI bps per lane must be between 62.5 Mbps and 1 Gbps.
|
||||
* The default is 594 Mbps for 4-lane 1080p60 or 2-lane 720p60.
|
||||
@@ -32,7 +32,7 @@ Signed-off-by: Jacko Dirks <jdirks.linuxdev@gmail.com>
|
||||
*/
|
||||
bps_pr_lane = 2 * endpoint.link_frequencies[0];
|
||||
if (bps_pr_lane < 62500000U || bps_pr_lane > 1000000000U) {
|
||||
@@ -1975,23 +1976,42 @@ static int tc358743_probe_of(struct tc35
|
||||
@@ -1993,23 +1994,42 @@ static int tc358743_probe_of(struct tc35
|
||||
state->pdata.refclk_hz * state->pdata.pll_prd;
|
||||
|
||||
/*
|
||||
|
@@ -1,98 +0,0 @@
|
||||
From 307615221ab3249fcfdd21b81a8aca138ed7a1ed Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
Date: Wed, 31 Oct 2018 14:57:34 +0000
|
||||
Subject: [PATCH] media: tc358743: Check I2C succeeded during probe.
|
||||
|
||||
The probe for the TC358743 reads the CHIPID register from
|
||||
the device and compares it to the expected value of 0.
|
||||
If the I2C request fails then that also returns 0, so
|
||||
the driver loads thinking that the device is there.
|
||||
|
||||
Generally I2C communications are reliable so there is
|
||||
limited need to check the return value on every transfer,
|
||||
therefore only amend the one read during probe to check
|
||||
for I2C errors.
|
||||
|
||||
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
---
|
||||
drivers/media/i2c/tc358743.c | 27 +++++++++++++++++++++++----
|
||||
1 file changed, 23 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/drivers/media/i2c/tc358743.c
|
||||
+++ b/drivers/media/i2c/tc358743.c
|
||||
@@ -110,7 +110,7 @@ static inline struct tc358743_state *to_
|
||||
|
||||
/* --------------- I2C --------------- */
|
||||
|
||||
-static void i2c_rd(struct v4l2_subdev *sd, u16 reg, u8 *values, u32 n)
|
||||
+static int i2c_rd(struct v4l2_subdev *sd, u16 reg, u8 *values, u32 n)
|
||||
{
|
||||
struct tc358743_state *state = to_state(sd);
|
||||
struct i2c_client *client = state->i2c_client;
|
||||
@@ -136,6 +136,7 @@ static void i2c_rd(struct v4l2_subdev *s
|
||||
v4l2_err(sd, "%s: reading register 0x%x from 0x%x failed: %d\n",
|
||||
__func__, reg, client->addr, err);
|
||||
}
|
||||
+ return err != ARRAY_SIZE(msgs);
|
||||
}
|
||||
|
||||
static void i2c_wr(struct v4l2_subdev *sd, u16 reg, u8 *values, u32 n)
|
||||
@@ -192,15 +193,24 @@ static void i2c_wr(struct v4l2_subdev *s
|
||||
}
|
||||
}
|
||||
|
||||
-static noinline u32 i2c_rdreg(struct v4l2_subdev *sd, u16 reg, u32 n)
|
||||
+static noinline u32 i2c_rdreg_err(struct v4l2_subdev *sd, u16 reg, u32 n,
|
||||
+ int *err)
|
||||
{
|
||||
+ int error;
|
||||
__le32 val = 0;
|
||||
|
||||
- i2c_rd(sd, reg, (u8 __force *)&val, n);
|
||||
+ error = i2c_rd(sd, reg, (u8 __force *)&val, n);
|
||||
+ if (err)
|
||||
+ *err = error;
|
||||
|
||||
return le32_to_cpu(val);
|
||||
}
|
||||
|
||||
+static inline u32 i2c_rdreg(struct v4l2_subdev *sd, u16 reg, u32 n)
|
||||
+{
|
||||
+ return i2c_rdreg_err(sd, reg, n, NULL);
|
||||
+}
|
||||
+
|
||||
static noinline void i2c_wrreg(struct v4l2_subdev *sd, u16 reg, u32 val, u32 n)
|
||||
{
|
||||
__le32 raw = cpu_to_le32(val);
|
||||
@@ -229,6 +239,13 @@ static u16 i2c_rd16(struct v4l2_subdev *
|
||||
return i2c_rdreg(sd, reg, 2);
|
||||
}
|
||||
|
||||
+static int i2c_rd16_err(struct v4l2_subdev *sd, u16 reg, u16 *value)
|
||||
+{
|
||||
+ int err;
|
||||
+ *value = i2c_rdreg_err(sd, reg, 2, &err);
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
static void i2c_wr16(struct v4l2_subdev *sd, u16 reg, u16 val)
|
||||
{
|
||||
i2c_wrreg(sd, reg, val, 2);
|
||||
@@ -2050,6 +2067,7 @@ static int tc358743_probe(struct i2c_cli
|
||||
struct tc358743_platform_data *pdata = client->dev.platform_data;
|
||||
struct v4l2_subdev *sd;
|
||||
u16 irq_mask = MASK_HDMI_MSK | MASK_CSI_MSK;
|
||||
+ u16 chipid;
|
||||
int err;
|
||||
|
||||
if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE_DATA))
|
||||
@@ -2081,7 +2099,8 @@ static int tc358743_probe(struct i2c_cli
|
||||
sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE | V4L2_SUBDEV_FL_HAS_EVENTS;
|
||||
|
||||
/* i2c access */
|
||||
- if ((i2c_rd16(sd, CHIPID) & MASK_CHIPID) != 0) {
|
||||
+ if (i2c_rd16_err(sd, CHIPID, &chipid) ||
|
||||
+ (chipid & MASK_CHIPID) != 0) {
|
||||
v4l2_info(sd, "not a TC358743 on address 0x%x\n",
|
||||
client->addr << 1);
|
||||
return -ENODEV;
|
@@ -1,110 +0,0 @@
|
||||
From 1745cb8447123a894db6c0b579259ec5d976808f Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
Date: Thu, 22 Nov 2018 17:31:06 +0000
|
||||
Subject: [PATCH] media: tc358743: Return an appropriate colorspace from
|
||||
tc358743_set_fmt
|
||||
|
||||
When calling tc358743_set_fmt, the code was calling tc358743_get_fmt
|
||||
to choose a valid format. However that sets the colorspace
|
||||
based on what was read back from the chip. When you set the format,
|
||||
then the driver would choose and program the colorspace based
|
||||
on the format code.
|
||||
|
||||
The result was that if you called try or set format for UYVY
|
||||
when the current format was RGB3 then you would get told sRGB,
|
||||
and try RGB3 when current was UYVY and you would get told
|
||||
SMPTE170M.
|
||||
|
||||
The value programmed into the chip is determined by this driver,
|
||||
therefore there is no need to read back the value. Return the
|
||||
colorspace based on the format set/tried instead.
|
||||
|
||||
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
|
||||
media: i2c: tc358743: Only allow supported pixel fmts in set_fmt
|
||||
|
||||
Fix commit "media: tc358743: Return an appropriate colorspace from
|
||||
tc358743_set_fmt" to ensure that the format passed in to set_fmt
|
||||
is checked to be valid, and reset to the current format if not.
|
||||
|
||||
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
---
|
||||
drivers/media/i2c/tc358743.c | 44 ++++++++++++++----------------------
|
||||
1 file changed, 17 insertions(+), 27 deletions(-)
|
||||
|
||||
--- a/drivers/media/i2c/tc358743.c
|
||||
+++ b/drivers/media/i2c/tc358743.c
|
||||
@@ -1677,12 +1677,23 @@ static int tc358743_enum_mbus_code(struc
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static u32 tc358743_g_colorspace(u32 code)
|
||||
+{
|
||||
+ switch (code) {
|
||||
+ case MEDIA_BUS_FMT_RGB888_1X24:
|
||||
+ return V4L2_COLORSPACE_SRGB;
|
||||
+ case MEDIA_BUS_FMT_UYVY8_1X16:
|
||||
+ return V4L2_COLORSPACE_SMPTE170M;
|
||||
+ default:
|
||||
+ return 0;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static int tc358743_get_fmt(struct v4l2_subdev *sd,
|
||||
struct v4l2_subdev_state *sd_state,
|
||||
struct v4l2_subdev_format *format)
|
||||
{
|
||||
struct tc358743_state *state = to_state(sd);
|
||||
- u8 vi_rep = i2c_rd8(sd, VI_REP);
|
||||
|
||||
if (format->pad != 0)
|
||||
return -EINVAL;
|
||||
@@ -1692,23 +1703,7 @@ static int tc358743_get_fmt(struct v4l2_
|
||||
format->format.height = state->timings.bt.height;
|
||||
format->format.field = V4L2_FIELD_NONE;
|
||||
|
||||
- switch (vi_rep & MASK_VOUT_COLOR_SEL) {
|
||||
- case MASK_VOUT_COLOR_RGB_FULL:
|
||||
- case MASK_VOUT_COLOR_RGB_LIMITED:
|
||||
- format->format.colorspace = V4L2_COLORSPACE_SRGB;
|
||||
- break;
|
||||
- case MASK_VOUT_COLOR_601_YCBCR_LIMITED:
|
||||
- case MASK_VOUT_COLOR_601_YCBCR_FULL:
|
||||
- format->format.colorspace = V4L2_COLORSPACE_SMPTE170M;
|
||||
- break;
|
||||
- case MASK_VOUT_COLOR_709_YCBCR_FULL:
|
||||
- case MASK_VOUT_COLOR_709_YCBCR_LIMITED:
|
||||
- format->format.colorspace = V4L2_COLORSPACE_REC709;
|
||||
- break;
|
||||
- default:
|
||||
- format->format.colorspace = 0;
|
||||
- break;
|
||||
- }
|
||||
+ format->format.colorspace = tc358743_g_colorspace(format->format.code);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1722,19 +1717,14 @@ static int tc358743_set_fmt(struct v4l2_
|
||||
u32 code = format->format.code; /* is overwritten by get_fmt */
|
||||
int ret = tc358743_get_fmt(sd, sd_state, format);
|
||||
|
||||
- format->format.code = code;
|
||||
+ if (code == MEDIA_BUS_FMT_RGB888_1X24 ||
|
||||
+ code == MEDIA_BUS_FMT_UYVY8_1X16)
|
||||
+ format->format.code = code;
|
||||
+ format->format.colorspace = tc358743_g_colorspace(format->format.code);
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
- switch (code) {
|
||||
- case MEDIA_BUS_FMT_RGB888_1X24:
|
||||
- case MEDIA_BUS_FMT_UYVY8_1X16:
|
||||
- break;
|
||||
- default:
|
||||
- return -EINVAL;
|
||||
- }
|
||||
-
|
||||
if (format->which == V4L2_SUBDEV_FORMAT_TRY)
|
||||
return 0;
|
||||
|
@@ -14,7 +14,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
|
||||
--- a/drivers/usb/host/xhci.c
|
||||
+++ b/drivers/usb/host/xhci.c
|
||||
@@ -1517,6 +1517,109 @@ static int xhci_check_ep0_maxpacket(stru
|
||||
@@ -1519,6 +1519,109 @@ static int xhci_check_ep0_maxpacket(stru
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -124,7 +124,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
* non-error returns are a promise to giveback() the urb later
|
||||
* we drop ownership so next owner (or urb unlink) can get it
|
||||
*/
|
||||
@@ -5381,6 +5484,7 @@ static const struct hc_driver xhci_hc_dr
|
||||
@@ -5383,6 +5486,7 @@ static const struct hc_driver xhci_hc_dr
|
||||
.endpoint_reset = xhci_endpoint_reset,
|
||||
.check_bandwidth = xhci_check_bandwidth,
|
||||
.reset_bandwidth = xhci_reset_bandwidth,
|
||||
|
@@ -19,7 +19,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
|
||||
--- a/drivers/usb/host/xhci.c
|
||||
+++ b/drivers/usb/host/xhci.c
|
||||
@@ -1606,7 +1606,7 @@ static void xhci_fixup_endpoint(struct u
|
||||
@@ -1608,7 +1608,7 @@ static void xhci_fixup_endpoint(struct u
|
||||
return;
|
||||
}
|
||||
ctrl_ctx->add_flags = xhci_get_endpoint_flag_from_index(ep_index);
|
||||
|
@@ -26,7 +26,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
return;
|
||||
|
||||
val = bcm_phy_read_shadow(phydev, BCM54XX_SHD_SCR3);
|
||||
@@ -1444,7 +1445,7 @@ static struct phy_driver broadcom_driver
|
||||
@@ -1461,7 +1462,7 @@ static struct phy_driver broadcom_driver
|
||||
.link_change_notify = bcm54xx_link_change_notify,
|
||||
}, {
|
||||
.phy_id = PHY_ID_BCM54210E,
|
||||
@@ -35,7 +35,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
.name = "Broadcom BCM54210E",
|
||||
/* PHY_GBIT_FEATURES */
|
||||
.flags = PHY_ALWAYS_CALL_SUSPEND,
|
||||
@@ -1462,6 +1463,13 @@ static struct phy_driver broadcom_driver
|
||||
@@ -1479,6 +1480,13 @@ static struct phy_driver broadcom_driver
|
||||
.set_wol = bcm54xx_phy_set_wol,
|
||||
.led_brightness_set = bcm_phy_led_brightness_set,
|
||||
}, {
|
||||
@@ -49,7 +49,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
.phy_id = PHY_ID_BCM5461,
|
||||
.phy_id_mask = 0xfffffff0,
|
||||
.name = "Broadcom BCM5461",
|
||||
@@ -1728,7 +1736,8 @@ module_phy_driver(broadcom_drivers);
|
||||
@@ -1745,7 +1753,8 @@ module_phy_driver(broadcom_drivers);
|
||||
static const struct mdio_device_id __maybe_unused broadcom_tbl[] = {
|
||||
{ PHY_ID_BCM5411, 0xfffffff0 },
|
||||
{ PHY_ID_BCM5421, 0xfffffff0 },
|
||||
|
@@ -165,7 +165,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
if (IS_ERR(data->cdev_data[cdev_idx].cdev)) {
|
||||
dev_err(dev, "Failed to register cooling device %s\n", emc2305_fan_name[idx]);
|
||||
@@ -347,9 +410,11 @@ static void emc2305_unset_tz(struct devi
|
||||
@@ -353,9 +416,11 @@ static void emc2305_unset_tz(struct devi
|
||||
int i;
|
||||
|
||||
/* Unregister cooling device. */
|
||||
@@ -180,7 +180,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
}
|
||||
|
||||
static umode_t
|
||||
@@ -571,11 +636,18 @@ static int emc2305_probe(struct i2c_clie
|
||||
@@ -577,11 +642,18 @@ static int emc2305_probe(struct i2c_clie
|
||||
data->pwm_separate = pdata->pwm_separate;
|
||||
for (i = 0; i < EMC2305_PWM_MAX; i++)
|
||||
data->pwm_min[i] = pdata->pwm_min[i];
|
||||
@@ -199,7 +199,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
}
|
||||
|
||||
data->hwmon_dev = devm_hwmon_device_register_with_info(dev, "emc2305", data,
|
||||
@@ -596,6 +668,12 @@ static int emc2305_probe(struct i2c_clie
|
||||
@@ -602,6 +674,12 @@ static int emc2305_probe(struct i2c_clie
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -212,7 +212,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -610,6 +688,7 @@ static void emc2305_remove(struct i2c_cl
|
||||
@@ -616,6 +694,7 @@ static void emc2305_remove(struct i2c_cl
|
||||
static struct i2c_driver emc2305_driver = {
|
||||
.driver = {
|
||||
.name = "emc2305",
|
||||
|
@@ -16,7 +16,7 @@ Signed-off-by: Jonathan Lemon <jonathan.lemon@gmail.com>
|
||||
|
||||
--- a/drivers/net/phy/broadcom.c
|
||||
+++ b/drivers/net/phy/broadcom.c
|
||||
@@ -1478,8 +1478,14 @@ static struct phy_driver broadcom_driver
|
||||
@@ -1495,8 +1495,14 @@ static struct phy_driver broadcom_driver
|
||||
.phy_id_mask = 0xffffffff,
|
||||
.name = "Broadcom BCM54213PE",
|
||||
/* PHY_GBIT_FEATURES */
|
||||
|
@@ -34,7 +34,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
|
||||
--- a/drivers/usb/host/xhci-mem.c
|
||||
+++ b/drivers/usb/host/xhci-mem.c
|
||||
@@ -1395,6 +1395,7 @@ int xhci_endpoint_init(struct xhci_hcd *
|
||||
@@ -1397,6 +1397,7 @@ int xhci_endpoint_init(struct xhci_hcd *
|
||||
unsigned int ep_index;
|
||||
struct xhci_ep_ctx *ep_ctx;
|
||||
struct xhci_ring *ep_ring;
|
||||
@@ -42,7 +42,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
unsigned int max_packet;
|
||||
enum xhci_ring_type ring_type;
|
||||
u32 max_esit_payload;
|
||||
@@ -1404,6 +1405,8 @@ int xhci_endpoint_init(struct xhci_hcd *
|
||||
@@ -1406,6 +1407,8 @@ int xhci_endpoint_init(struct xhci_hcd *
|
||||
unsigned int mult;
|
||||
unsigned int avg_trb_len;
|
||||
unsigned int err_count = 0;
|
||||
@@ -51,7 +51,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
|
||||
ep_index = xhci_get_endpoint_index(&ep->desc);
|
||||
ep_ctx = xhci_get_ep_ctx(xhci, virt_dev->in_ctx, ep_index);
|
||||
@@ -1439,9 +1442,35 @@ int xhci_endpoint_init(struct xhci_hcd *
|
||||
@@ -1441,9 +1444,35 @@ int xhci_endpoint_init(struct xhci_hcd *
|
||||
|
||||
mult = xhci_get_endpoint_mult(udev, ep);
|
||||
max_packet = usb_endpoint_maxp(&ep->desc);
|
||||
|
@@ -75,7 +75,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
|
||||
--- a/drivers/usb/host/xhci-ring.c
|
||||
+++ b/drivers/usb/host/xhci-ring.c
|
||||
@@ -3656,6 +3656,48 @@ static int xhci_align_td(struct xhci_hcd
|
||||
@@ -3659,6 +3659,48 @@ static int xhci_align_td(struct xhci_hcd
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -124,7 +124,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
/* This is very similar to what ehci-q.c qtd_fill() does */
|
||||
int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
|
||||
struct urb *urb, int slot_id, unsigned int ep_index)
|
||||
@@ -3810,6 +3852,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||
@@ -3813,6 +3855,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
|
||||
}
|
||||
|
||||
check_trb_math(urb, enqd_len);
|
||||
@@ -133,7 +133,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
giveback_first_trb(xhci, slot_id, ep_index, urb->stream_id,
|
||||
start_cycle, start_trb);
|
||||
return 0;
|
||||
@@ -3958,6 +4002,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
|
||||
@@ -3961,6 +4005,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
|
||||
/* Event on completion */
|
||||
field | TRB_IOC | TRB_TYPE(TRB_STATUS) | ep_ring->cycle_state);
|
||||
|
||||
|
@@ -1,20 +0,0 @@
|
||||
From c921a4d6cfed23d22f583dd18a25f61fdde3735a Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.com>
|
||||
Date: Thu, 27 May 2021 11:46:30 +0100
|
||||
Subject: [PATCH] Allow RESET_BRCMSTB on ARCH_BCM2835
|
||||
|
||||
---
|
||||
drivers/reset/Kconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/reset/Kconfig
|
||||
+++ b/drivers/reset/Kconfig
|
||||
@@ -51,7 +51,7 @@ config RESET_BERLIN
|
||||
|
||||
config RESET_BRCMSTB
|
||||
tristate "Broadcom STB reset controller"
|
||||
- depends on ARCH_BRCMSTB || COMPILE_TEST
|
||||
+ depends on ARCH_BRCMSTB || ARCH_BCM2835 || COMPILE_TEST
|
||||
default ARCH_BRCMSTB
|
||||
help
|
||||
This enables the reset controller driver for Broadcom STB SoCs using
|
@@ -36,9 +36,9 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
+ fb_info->node = i;
|
||||
+ }
|
||||
|
||||
if (!fb_info->modelist.prev || !fb_info->modelist.next)
|
||||
INIT_LIST_HEAD(&fb_info->modelist);
|
||||
@@ -411,7 +415,6 @@ static int do_register_framebuffer(struc
|
||||
if (i >= FB_MAX)
|
||||
return -ENXIO;
|
||||
@@ -414,7 +418,6 @@ static int do_register_framebuffer(struc
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
@@ -46,7 +46,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
refcount_set(&fb_info->count, 1);
|
||||
mutex_init(&fb_info->lock);
|
||||
mutex_init(&fb_info->mm_lock);
|
||||
@@ -442,7 +445,7 @@ static int do_register_framebuffer(struc
|
||||
@@ -445,7 +448,7 @@ static int do_register_framebuffer(struc
|
||||
pm_vt_switch_required(fb_info->device, true);
|
||||
|
||||
num_registered_fb++;
|
||||
@@ -55,7 +55,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
#ifdef CONFIG_GUMSTIX_AM200EPD
|
||||
{
|
||||
@@ -503,6 +506,12 @@ static void do_unregister_framebuffer(st
|
||||
@@ -506,6 +509,12 @@ static void do_unregister_framebuffer(st
|
||||
put_fb_info(fb_info);
|
||||
}
|
||||
|
||||
|
@@ -18,7 +18,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
|
||||
--- a/drivers/nvme/host/pci.c
|
||||
+++ b/drivers/nvme/host/pci.c
|
||||
@@ -2083,6 +2083,7 @@ static void nvme_free_host_mem(struct nv
|
||||
@@ -2103,6 +2103,7 @@ static void nvme_free_host_mem(struct nv
|
||||
dev->nr_host_mem_descs = 0;
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
static int __nvme_alloc_host_mem(struct nvme_dev *dev, u64 preferred,
|
||||
u32 chunk_size)
|
||||
{
|
||||
@@ -2151,9 +2152,11 @@ out:
|
||||
@@ -2171,9 +2172,11 @@ out:
|
||||
dev->host_mem_descs = NULL;
|
||||
return -ENOMEM;
|
||||
}
|
||||
@@ -38,7 +38,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
u64 min_chunk = min_t(u64, preferred, PAGE_SIZE * MAX_ORDER_NR_PAGES);
|
||||
u64 hmminds = max_t(u32, dev->ctrl.hmminds * 4096, PAGE_SIZE * 2);
|
||||
u64 chunk_size;
|
||||
@@ -2166,6 +2169,7 @@ static int nvme_alloc_host_mem(struct nv
|
||||
@@ -2186,6 +2189,7 @@ static int nvme_alloc_host_mem(struct nv
|
||||
nvme_free_host_mem(dev);
|
||||
}
|
||||
}
|
||||
|
@@ -40,7 +40,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
static bool td_on_ring(struct xhci_td *td, struct xhci_ring *ring)
|
||||
{
|
||||
struct xhci_segment *seg = ring->first_seg;
|
||||
@@ -4786,7 +4790,7 @@ static u16 xhci_calculate_u1_timeout(str
|
||||
@@ -4788,7 +4792,7 @@ static u16 xhci_calculate_u1_timeout(str
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
timeout_ns = xhci_calculate_intel_u1_timeout(udev, desc);
|
||||
else
|
||||
timeout_ns = udev->u1_params.sel;
|
||||
@@ -4850,7 +4854,7 @@ static u16 xhci_calculate_u2_timeout(str
|
||||
@@ -4852,7 +4856,7 @@ static u16 xhci_calculate_u2_timeout(str
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -82,7 +82,7 @@ Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
||||
static void blk_report_disk_dead(struct gendisk *disk, bool surprise)
|
||||
--- a/include/linux/blkdev.h
|
||||
+++ b/include/linux/blkdev.h
|
||||
@@ -734,6 +734,9 @@ static inline unsigned int blk_queue_dep
|
||||
@@ -789,6 +789,9 @@ static inline unsigned int blk_queue_dep
|
||||
#define for_each_bio(_bio) \
|
||||
for (; _bio; _bio = _bio->bi_next)
|
||||
|
||||
|
@@ -18,7 +18,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
--- a/drivers/net/dsa/b53/b53_common.c
|
||||
+++ b/drivers/net/dsa/b53/b53_common.c
|
||||
@@ -1061,8 +1061,7 @@ void b53_get_strings(struct dsa_switch *
|
||||
@@ -1086,8 +1086,7 @@ void b53_get_strings(struct dsa_switch *
|
||||
|
||||
if (stringset == ETH_SS_STATS) {
|
||||
for (i = 0; i < mib_size; i++)
|
||||
|
@@ -19,7 +19,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
--- a/drivers/net/dsa/b53/b53_common.c
|
||||
+++ b/drivers/net/dsa/b53/b53_common.c
|
||||
@@ -2343,13 +2343,16 @@ int b53_eee_init(struct dsa_switch *ds,
|
||||
@@ -2387,13 +2387,16 @@ int b53_eee_init(struct dsa_switch *ds,
|
||||
}
|
||||
EXPORT_SYMBOL(b53_eee_init);
|
||||
|
||||
@@ -39,7 +39,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(b53_get_mac_eee);
|
||||
@@ -2359,9 +2362,6 @@ int b53_set_mac_eee(struct dsa_switch *d
|
||||
@@ -2403,9 +2406,6 @@ int b53_set_mac_eee(struct dsa_switch *d
|
||||
struct b53_device *dev = ds->priv;
|
||||
struct ethtool_keee *p = &dev->ports[port].eee;
|
||||
|
||||
@@ -49,7 +49,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
p->eee_enabled = e->eee_enabled;
|
||||
b53_eee_enable_set(ds, port, e->eee_enabled);
|
||||
|
||||
@@ -2418,6 +2418,7 @@ static const struct dsa_switch_ops b53_s
|
||||
@@ -2462,6 +2462,7 @@ static const struct dsa_switch_ops b53_s
|
||||
.port_setup = b53_setup_port,
|
||||
.port_enable = b53_enable_port,
|
||||
.port_disable = b53_disable_port,
|
||||
|
@@ -18,7 +18,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
--- a/drivers/net/dsa/b53/b53_common.c
|
||||
+++ b/drivers/net/dsa/b53/b53_common.c
|
||||
@@ -2537,6 +2537,19 @@ static const struct b53_chip_data b53_sw
|
||||
@@ -2581,6 +2581,19 @@ static const struct b53_chip_data b53_sw
|
||||
.jumbo_size_reg = B53_JUMBO_MAX_SIZE,
|
||||
},
|
||||
{
|
||||
@@ -38,7 +38,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
.chip_id = BCM53115_DEVICE_ID,
|
||||
.dev_name = "BCM53115",
|
||||
.vlans = 4096,
|
||||
@@ -2917,6 +2930,7 @@ int b53_switch_detect(struct b53_device
|
||||
@@ -2961,6 +2974,7 @@ int b53_switch_detect(struct b53_device
|
||||
return ret;
|
||||
|
||||
switch (id32) {
|
||||
|
@@ -29,7 +29,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_data/b53.h>
|
||||
#include <linux/phy.h>
|
||||
@@ -1202,6 +1203,10 @@ static int b53_setup(struct dsa_switch *
|
||||
@@ -1227,6 +1228,10 @@ static int b53_setup(struct dsa_switch *
|
||||
*/
|
||||
ds->untag_vlan_aware_bridge_pvid = true;
|
||||
|
||||
@@ -40,7 +40,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
ret = b53_reset_switch(dev);
|
||||
if (ret) {
|
||||
dev_err(ds->dev, "failed to reset switch\n");
|
||||
@@ -2397,6 +2402,28 @@ static int b53_get_max_mtu(struct dsa_sw
|
||||
@@ -2441,6 +2446,28 @@ static int b53_get_max_mtu(struct dsa_sw
|
||||
return B53_MAX_MTU;
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
static const struct phylink_mac_ops b53_phylink_mac_ops = {
|
||||
.mac_select_pcs = b53_phylink_mac_select_pcs,
|
||||
.mac_config = b53_phylink_mac_config,
|
||||
@@ -2421,6 +2448,7 @@ static const struct dsa_switch_ops b53_s
|
||||
@@ -2465,6 +2492,7 @@ static const struct dsa_switch_ops b53_s
|
||||
.support_eee = b53_support_eee,
|
||||
.get_mac_eee = b53_get_mac_eee,
|
||||
.set_mac_eee = b53_set_mac_eee,
|
||||
@@ -89,7 +89,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
void b53_br_leave(struct dsa_switch *ds, int port, struct dsa_bridge bridge);
|
||||
--- a/drivers/net/dsa/b53/b53_regs.h
|
||||
+++ b/drivers/net/dsa/b53/b53_regs.h
|
||||
@@ -220,6 +220,13 @@
|
||||
@@ -225,6 +225,13 @@
|
||||
#define BRCM_HDR_P5_EN BIT(1) /* Enable tagging on port 5 */
|
||||
#define BRCM_HDR_P7_EN BIT(2) /* Enable tagging on port 7 */
|
||||
|
||||
|
@@ -26,7 +26,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
|
||||
--- a/drivers/net/dsa/b53/b53_common.c
|
||||
+++ b/drivers/net/dsa/b53/b53_common.c
|
||||
@@ -2338,6 +2338,9 @@ int b53_eee_init(struct dsa_switch *ds,
|
||||
@@ -2382,6 +2382,9 @@ int b53_eee_init(struct dsa_switch *ds,
|
||||
{
|
||||
int ret;
|
||||
|
||||
@@ -36,7 +36,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
ret = phy_init_eee(phy, false);
|
||||
if (ret)
|
||||
return 0;
|
||||
@@ -2352,7 +2355,7 @@ bool b53_support_eee(struct dsa_switch *
|
||||
@@ -2396,7 +2399,7 @@ bool b53_support_eee(struct dsa_switch *
|
||||
{
|
||||
struct b53_device *dev = ds->priv;
|
||||
|
||||
|
@@ -28,7 +28,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_data/b53.h>
|
||||
#include <linux/phy.h>
|
||||
@@ -1322,24 +1323,17 @@ static void b53_adjust_63xx_rgmii(struct
|
||||
@@ -1360,24 +1361,17 @@ static void b53_adjust_63xx_rgmii(struct
|
||||
phy_interface_t interface)
|
||||
{
|
||||
struct b53_device *dev = ds->priv;
|
||||
@@ -59,7 +59,7 @@ Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
|
||||
dev_dbg(ds->dev, "Configured port %d for %s\n", port,
|
||||
phy_modes(interface));
|
||||
@@ -1490,7 +1484,7 @@ static void b53_phylink_mac_config(struc
|
||||
@@ -1528,7 +1522,7 @@ static void b53_phylink_mac_config(struc
|
||||
struct b53_device *dev = ds->priv;
|
||||
int port = dp->index;
|
||||
|
||||
|
@@ -32,7 +32,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
This driver adds support for Broadcom managed switch chips. It supports
|
||||
--- a/drivers/net/dsa/b53/b53_common.c
|
||||
+++ b/drivers/net/dsa/b53/b53_common.c
|
||||
@@ -2241,8 +2241,11 @@ enum dsa_tag_protocol b53_get_tag_protoc
|
||||
@@ -2285,8 +2285,11 @@ enum dsa_tag_protocol b53_get_tag_protoc
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@@ -21,7 +21,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
--- a/drivers/net/dsa/b53/b53_common.c
|
||||
+++ b/drivers/net/dsa/b53/b53_common.c
|
||||
@@ -1778,7 +1778,8 @@ static int b53_arl_op(struct b53_device
|
||||
@@ -1816,7 +1816,8 @@ static int b53_arl_op(struct b53_device
|
||||
|
||||
/* Perform a read for the given MAC and VID */
|
||||
b53_write48(dev, B53_ARLIO_PAGE, B53_MAC_ADDR_IDX, mac);
|
||||
@@ -31,7 +31,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
/* Issue a read operation for this MAC */
|
||||
ret = b53_arl_rw_op(dev, 1);
|
||||
@@ -2840,6 +2841,9 @@ static int b53_switch_init(struct b53_de
|
||||
@@ -2884,6 +2885,9 @@ static int b53_switch_init(struct b53_de
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
dev->num_ports = fls(dev->enabled_ports);
|
||||
|
||||
dev->ds->num_ports = min_t(unsigned int, dev->num_ports, DSA_MAX_PORTS);
|
||||
@@ -2941,10 +2945,24 @@ int b53_switch_detect(struct b53_device
|
||||
@@ -2985,10 +2989,24 @@ int b53_switch_detect(struct b53_device
|
||||
b53_write16(dev, B53_VLAN_PAGE, B53_VLAN_TABLE_ACCESS_25, 0xf);
|
||||
b53_read16(dev, B53_VLAN_PAGE, B53_VLAN_TABLE_ACCESS_25, &tmp);
|
||||
|
||||
|
@@ -24,7 +24,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
--- a/drivers/net/dsa/b53/b53_common.c
|
||||
+++ b/drivers/net/dsa/b53/b53_common.c
|
||||
@@ -1764,6 +1764,45 @@ static int b53_arl_read(struct b53_devic
|
||||
@@ -1802,6 +1802,45 @@ static int b53_arl_read(struct b53_devic
|
||||
return *idx >= dev->num_arl_bins ? -ENOSPC : -ENOENT;
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
static int b53_arl_op(struct b53_device *dev, int op, int port,
|
||||
const unsigned char *addr, u16 vid, bool is_valid)
|
||||
{
|
||||
@@ -1786,7 +1825,10 @@ static int b53_arl_op(struct b53_device
|
||||
@@ -1824,7 +1863,10 @@ static int b53_arl_op(struct b53_device
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@@ -82,7 +82,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
/* If this is a read, just finish now */
|
||||
if (op)
|
||||
@@ -1830,12 +1872,17 @@ static int b53_arl_op(struct b53_device
|
||||
@@ -1868,12 +1910,17 @@ static int b53_arl_op(struct b53_device
|
||||
ent.is_static = true;
|
||||
ent.is_age = false;
|
||||
memcpy(ent.mac, addr, ETH_ALEN);
|
||||
@@ -103,7 +103,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
return b53_arl_rw_op(dev, 0);
|
||||
}
|
||||
@@ -1847,12 +1894,6 @@ int b53_fdb_add(struct dsa_switch *ds, i
|
||||
@@ -1885,12 +1932,6 @@ int b53_fdb_add(struct dsa_switch *ds, i
|
||||
struct b53_device *priv = ds->priv;
|
||||
int ret;
|
||||
|
||||
@@ -116,7 +116,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
mutex_lock(&priv->arl_mutex);
|
||||
ret = b53_arl_op(priv, 0, port, addr, vid, true);
|
||||
mutex_unlock(&priv->arl_mutex);
|
||||
@@ -1879,10 +1920,15 @@ EXPORT_SYMBOL(b53_fdb_del);
|
||||
@@ -1917,10 +1958,15 @@ EXPORT_SYMBOL(b53_fdb_del);
|
||||
static int b53_arl_search_wait(struct b53_device *dev)
|
||||
{
|
||||
unsigned int timeout = 1000;
|
||||
@@ -134,7 +134,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
if (!(reg & ARL_SRCH_STDN))
|
||||
return 0;
|
||||
|
||||
@@ -1899,13 +1945,24 @@ static void b53_arl_search_rd(struct b53
|
||||
@@ -1937,13 +1983,24 @@ static void b53_arl_search_rd(struct b53
|
||||
struct b53_arl_entry *ent)
|
||||
{
|
||||
u64 mac_vid;
|
||||
@@ -165,7 +165,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
}
|
||||
|
||||
static int b53_fdb_copy(int port, const struct b53_arl_entry *ent,
|
||||
@@ -1926,14 +1983,20 @@ int b53_fdb_dump(struct dsa_switch *ds,
|
||||
@@ -1964,14 +2021,20 @@ int b53_fdb_dump(struct dsa_switch *ds,
|
||||
struct b53_device *priv = ds->priv;
|
||||
struct b53_arl_entry results[2];
|
||||
unsigned int count = 0;
|
||||
@@ -234,7 +234,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
#include <linux/bcm47xx_nvram.h>
|
||||
--- a/drivers/net/dsa/b53/b53_regs.h
|
||||
+++ b/drivers/net/dsa/b53/b53_regs.h
|
||||
@@ -324,9 +324,10 @@
|
||||
@@ -329,9 +329,10 @@
|
||||
#define ARLTBL_VID_MASK 0xfff
|
||||
#define ARLTBL_DATA_PORT_ID_S_25 48
|
||||
#define ARLTBL_DATA_PORT_ID_MASK_25 0xf
|
||||
|
@@ -19,7 +19,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
--- a/drivers/net/dsa/b53/b53_common.c
|
||||
+++ b/drivers/net/dsa/b53/b53_common.c
|
||||
@@ -487,6 +487,9 @@ static int b53_flush_arl(struct b53_devi
|
||||
@@ -492,6 +492,9 @@ static int b53_flush_arl(struct b53_devi
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
@@ -29,7 +29,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
b53_write8(dev, B53_CTRL_PAGE, B53_FAST_AGE_CTRL,
|
||||
FAST_AGE_DONE | FAST_AGE_DYNAMIC | mask);
|
||||
|
||||
@@ -511,6 +514,9 @@ out:
|
||||
@@ -516,6 +519,9 @@ out:
|
||||
|
||||
static int b53_fast_age_port(struct b53_device *dev, int port)
|
||||
{
|
||||
@@ -39,7 +39,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
b53_write8(dev, B53_CTRL_PAGE, B53_FAST_AGE_PORT_CTRL, port);
|
||||
|
||||
return b53_flush_arl(dev, FAST_AGE_PORT);
|
||||
@@ -518,6 +524,9 @@ static int b53_fast_age_port(struct b53_
|
||||
@@ -523,6 +529,9 @@ static int b53_fast_age_port(struct b53_
|
||||
|
||||
static int b53_fast_age_vlan(struct b53_device *dev, u16 vid)
|
||||
{
|
||||
|
@@ -1,39 +0,0 @@
|
||||
From 22ccaaca43440e90a3b68d2183045b42247dc4be Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Sat, 14 Jun 2025 09:59:53 +0200
|
||||
Subject: [PATCH] net: dsa: b53: prevent SWITCH_CTRL access on BCM5325
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
BCM5325 doesn't implement SWITCH_CTRL register so we should avoid reading
|
||||
or writing it.
|
||||
|
||||
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
Link: https://patch.msgid.link/20250614080000.1884236-8-noltari@gmail.com
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/dsa/b53/b53_common.c | 11 ++++++-----
|
||||
1 file changed, 6 insertions(+), 5 deletions(-)
|
||||
|
||||
--- a/drivers/net/dsa/b53/b53_common.c
|
||||
+++ b/drivers/net/dsa/b53/b53_common.c
|
||||
@@ -361,11 +361,12 @@ static void b53_set_forwarding(struct b5
|
||||
|
||||
b53_write8(dev, B53_CTRL_PAGE, B53_SWITCH_MODE, mgmt);
|
||||
|
||||
- /* Include IMP port in dumb forwarding mode
|
||||
- */
|
||||
- b53_read8(dev, B53_CTRL_PAGE, B53_SWITCH_CTRL, &mgmt);
|
||||
- mgmt |= B53_MII_DUMB_FWDG_EN;
|
||||
- b53_write8(dev, B53_CTRL_PAGE, B53_SWITCH_CTRL, mgmt);
|
||||
+ if (!is5325(dev)) {
|
||||
+ /* Include IMP port in dumb forwarding mode */
|
||||
+ b53_read8(dev, B53_CTRL_PAGE, B53_SWITCH_CTRL, &mgmt);
|
||||
+ mgmt |= B53_MII_DUMB_FWDG_EN;
|
||||
+ b53_write8(dev, B53_CTRL_PAGE, B53_SWITCH_CTRL, mgmt);
|
||||
+ }
|
||||
|
||||
/* Look at B53_UC_FWD_EN and B53_MC_FWD_EN to decide whether
|
||||
* frames should be flooded or not.
|
@@ -1,57 +0,0 @@
|
||||
From 044d5ce2788b165798bfd173548e61bf7b6baf4d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Sat, 14 Jun 2025 09:59:54 +0200
|
||||
Subject: [PATCH] net: dsa: b53: fix IP_MULTICAST_CTRL on BCM5325
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
BCM5325 doesn't implement B53_UC_FWD_EN, B53_MC_FWD_EN or B53_IPMC_FWD_EN.
|
||||
|
||||
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
Link: https://patch.msgid.link/20250614080000.1884236-9-noltari@gmail.com
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/dsa/b53/b53_common.c | 18 +++++++++++-------
|
||||
drivers/net/dsa/b53/b53_regs.h | 1 +
|
||||
2 files changed, 12 insertions(+), 7 deletions(-)
|
||||
|
||||
--- a/drivers/net/dsa/b53/b53_common.c
|
||||
+++ b/drivers/net/dsa/b53/b53_common.c
|
||||
@@ -366,14 +366,18 @@ static void b53_set_forwarding(struct b5
|
||||
b53_read8(dev, B53_CTRL_PAGE, B53_SWITCH_CTRL, &mgmt);
|
||||
mgmt |= B53_MII_DUMB_FWDG_EN;
|
||||
b53_write8(dev, B53_CTRL_PAGE, B53_SWITCH_CTRL, mgmt);
|
||||
- }
|
||||
|
||||
- /* Look at B53_UC_FWD_EN and B53_MC_FWD_EN to decide whether
|
||||
- * frames should be flooded or not.
|
||||
- */
|
||||
- b53_read8(dev, B53_CTRL_PAGE, B53_IP_MULTICAST_CTRL, &mgmt);
|
||||
- mgmt |= B53_UC_FWD_EN | B53_MC_FWD_EN | B53_IPMC_FWD_EN;
|
||||
- b53_write8(dev, B53_CTRL_PAGE, B53_IP_MULTICAST_CTRL, mgmt);
|
||||
+ /* Look at B53_UC_FWD_EN and B53_MC_FWD_EN to decide whether
|
||||
+ * frames should be flooded or not.
|
||||
+ */
|
||||
+ b53_read8(dev, B53_CTRL_PAGE, B53_IP_MULTICAST_CTRL, &mgmt);
|
||||
+ mgmt |= B53_UC_FWD_EN | B53_MC_FWD_EN | B53_IPMC_FWD_EN;
|
||||
+ b53_write8(dev, B53_CTRL_PAGE, B53_IP_MULTICAST_CTRL, mgmt);
|
||||
+ } else {
|
||||
+ b53_read8(dev, B53_CTRL_PAGE, B53_IP_MULTICAST_CTRL, &mgmt);
|
||||
+ mgmt |= B53_IP_MCAST_25;
|
||||
+ b53_write8(dev, B53_CTRL_PAGE, B53_IP_MULTICAST_CTRL, mgmt);
|
||||
+ }
|
||||
}
|
||||
|
||||
static void b53_enable_vlan(struct b53_device *dev, int port, bool enable,
|
||||
--- a/drivers/net/dsa/b53/b53_regs.h
|
||||
+++ b/drivers/net/dsa/b53/b53_regs.h
|
||||
@@ -106,6 +106,7 @@
|
||||
|
||||
/* IP Multicast control (8 bit) */
|
||||
#define B53_IP_MULTICAST_CTRL 0x21
|
||||
+#define B53_IP_MCAST_25 BIT(0)
|
||||
#define B53_IPMC_FWD_EN BIT(1)
|
||||
#define B53_UC_FWD_EN BIT(6)
|
||||
#define B53_MC_FWD_EN BIT(7)
|
@@ -1,46 +0,0 @@
|
||||
From 800728abd9f83bda4de62a30ce62a8b41c242020 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Sat, 14 Jun 2025 09:59:55 +0200
|
||||
Subject: [PATCH] net: dsa: b53: prevent DIS_LEARNING access on BCM5325
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
BCM5325 doesn't implement DIS_LEARNING register so we should avoid reading
|
||||
or writing it.
|
||||
|
||||
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
Link: https://patch.msgid.link/20250614080000.1884236-10-noltari@gmail.com
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/dsa/b53/b53_common.c | 11 ++++++++++-
|
||||
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/dsa/b53/b53_common.c
|
||||
+++ b/drivers/net/dsa/b53/b53_common.c
|
||||
@@ -593,6 +593,9 @@ static void b53_port_set_learning(struct
|
||||
{
|
||||
u16 reg;
|
||||
|
||||
+ if (is5325(dev))
|
||||
+ return;
|
||||
+
|
||||
b53_read16(dev, B53_CTRL_PAGE, B53_DIS_LEARNING, ®);
|
||||
if (learning)
|
||||
reg &= ~BIT(port);
|
||||
@@ -2243,7 +2246,13 @@ int b53_br_flags_pre(struct dsa_switch *
|
||||
struct switchdev_brport_flags flags,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
- if (flags.mask & ~(BR_FLOOD | BR_MCAST_FLOOD | BR_LEARNING))
|
||||
+ struct b53_device *dev = ds->priv;
|
||||
+ unsigned long mask = (BR_FLOOD | BR_MCAST_FLOOD);
|
||||
+
|
||||
+ if (!is5325(dev))
|
||||
+ mask |= BR_LEARNING;
|
||||
+
|
||||
+ if (flags.mask & ~mask)
|
||||
return -EINVAL;
|
||||
|
||||
return 0;
|
@@ -19,7 +19,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
--- a/drivers/net/dsa/b53/b53_common.c
|
||||
+++ b/drivers/net/dsa/b53/b53_common.c
|
||||
@@ -730,6 +730,11 @@ void b53_brcm_hdr_setup(struct dsa_switc
|
||||
@@ -747,6 +747,11 @@ void b53_brcm_hdr_setup(struct dsa_switc
|
||||
hdr_ctl |= GC_FRM_MGMT_PORT_M;
|
||||
b53_write8(dev, B53_MGMT_PAGE, B53_GLOBAL_CONFIG, hdr_ctl);
|
||||
|
||||
|
@@ -1,77 +0,0 @@
|
||||
From 37883bbc45a8555d6eca88d3a9730504d2dac86c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Sat, 14 Jun 2025 09:59:57 +0200
|
||||
Subject: [PATCH] net: dsa: b53: prevent GMII_PORT_OVERRIDE_CTRL access on
|
||||
BCM5325
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
BCM5325 doesn't implement GMII_PORT_OVERRIDE_CTRL register so we should
|
||||
avoid reading or writing it.
|
||||
PORT_OVERRIDE_RX_FLOW and PORT_OVERRIDE_TX_FLOW aren't defined on BCM5325
|
||||
and we should use PORT_OVERRIDE_LP_FLOW_25 instead.
|
||||
|
||||
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
Link: https://patch.msgid.link/20250614080000.1884236-12-noltari@gmail.com
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/dsa/b53/b53_common.c | 21 +++++++++++++++++----
|
||||
drivers/net/dsa/b53/b53_regs.h | 1 +
|
||||
2 files changed, 18 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/drivers/net/dsa/b53/b53_common.c
|
||||
+++ b/drivers/net/dsa/b53/b53_common.c
|
||||
@@ -1279,6 +1279,8 @@ static void b53_force_link(struct b53_de
|
||||
if (port == dev->imp_port) {
|
||||
off = B53_PORT_OVERRIDE_CTRL;
|
||||
val = PORT_OVERRIDE_EN;
|
||||
+ } else if (is5325(dev)) {
|
||||
+ return;
|
||||
} else {
|
||||
off = B53_GMII_PORT_OVERRIDE_CTRL(port);
|
||||
val = GMII_PO_EN;
|
||||
@@ -1303,6 +1305,8 @@ static void b53_force_port_config(struct
|
||||
if (port == dev->imp_port) {
|
||||
off = B53_PORT_OVERRIDE_CTRL;
|
||||
val = PORT_OVERRIDE_EN;
|
||||
+ } else if (is5325(dev)) {
|
||||
+ return;
|
||||
} else {
|
||||
off = B53_GMII_PORT_OVERRIDE_CTRL(port);
|
||||
val = GMII_PO_EN;
|
||||
@@ -1333,10 +1337,19 @@ static void b53_force_port_config(struct
|
||||
return;
|
||||
}
|
||||
|
||||
- if (rx_pause)
|
||||
- reg |= PORT_OVERRIDE_RX_FLOW;
|
||||
- if (tx_pause)
|
||||
- reg |= PORT_OVERRIDE_TX_FLOW;
|
||||
+ if (rx_pause) {
|
||||
+ if (is5325(dev))
|
||||
+ reg |= PORT_OVERRIDE_LP_FLOW_25;
|
||||
+ else
|
||||
+ reg |= PORT_OVERRIDE_RX_FLOW;
|
||||
+ }
|
||||
+
|
||||
+ if (tx_pause) {
|
||||
+ if (is5325(dev))
|
||||
+ reg |= PORT_OVERRIDE_LP_FLOW_25;
|
||||
+ else
|
||||
+ reg |= PORT_OVERRIDE_TX_FLOW;
|
||||
+ }
|
||||
|
||||
b53_write8(dev, B53_CTRL_PAGE, off, reg);
|
||||
}
|
||||
--- a/drivers/net/dsa/b53/b53_regs.h
|
||||
+++ b/drivers/net/dsa/b53/b53_regs.h
|
||||
@@ -95,6 +95,7 @@
|
||||
#define PORT_OVERRIDE_SPEED_10M (0 << PORT_OVERRIDE_SPEED_S)
|
||||
#define PORT_OVERRIDE_SPEED_100M (1 << PORT_OVERRIDE_SPEED_S)
|
||||
#define PORT_OVERRIDE_SPEED_1000M (2 << PORT_OVERRIDE_SPEED_S)
|
||||
+#define PORT_OVERRIDE_LP_FLOW_25 BIT(3) /* BCM5325 only */
|
||||
#define PORT_OVERRIDE_RV_MII_25 BIT(4) /* BCM5325 only */
|
||||
#define PORT_OVERRIDE_RX_FLOW BIT(4)
|
||||
#define PORT_OVERRIDE_TX_FLOW BIT(5)
|
@@ -1,32 +0,0 @@
|
||||
From c00df1018791185ea398f78af415a2a0aaa0c79c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Sat, 14 Jun 2025 09:59:59 +0200
|
||||
Subject: [PATCH] net: dsa: b53: fix b53_imp_vlan_setup for BCM5325
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
CPU port should be B53_CPU_PORT instead of B53_CPU_PORT_25 for
|
||||
B53_PVLAN_PORT_MASK register.
|
||||
|
||||
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
Link: https://patch.msgid.link/20250614080000.1884236-14-noltari@gmail.com
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/dsa/b53/b53_common.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
--- a/drivers/net/dsa/b53/b53_common.c
|
||||
+++ b/drivers/net/dsa/b53/b53_common.c
|
||||
@@ -543,6 +543,10 @@ void b53_imp_vlan_setup(struct dsa_switc
|
||||
unsigned int i;
|
||||
u16 pvlan;
|
||||
|
||||
+ /* BCM5325 CPU port is at 8 */
|
||||
+ if ((is5325(dev) || is5365(dev)) && cpu_port == B53_CPU_PORT_25)
|
||||
+ cpu_port = B53_CPU_PORT;
|
||||
+
|
||||
/* Enable the IMP port to be in the same VLAN as the other ports
|
||||
* on a per-port basis such that we only have Port i and IMP in
|
||||
* the same VLAN.
|
@@ -1,59 +0,0 @@
|
||||
From 966a83df36c6f27476ac3501771422e7852098bc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com>
|
||||
Date: Sat, 14 Jun 2025 10:00:00 +0200
|
||||
Subject: [PATCH] net: dsa: b53: ensure BCM5325 PHYs are enabled
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
According to the datasheet, BCM5325 uses B53_PD_MODE_CTRL_25 register to
|
||||
disable clocking to individual PHYs.
|
||||
Only ports 1-4 can be enabled or disabled and the datasheet is explicit
|
||||
about not toggling BIT(0) since it disables the PLL power and the switch.
|
||||
|
||||
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
|
||||
Link: https://patch.msgid.link/20250614080000.1884236-15-noltari@gmail.com
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
---
|
||||
drivers/net/dsa/b53/b53_common.c | 13 +++++++++++++
|
||||
drivers/net/dsa/b53/b53_regs.h | 5 ++++-
|
||||
2 files changed, 17 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/dsa/b53/b53_common.c
|
||||
+++ b/drivers/net/dsa/b53/b53_common.c
|
||||
@@ -660,6 +660,19 @@ int b53_setup_port(struct dsa_switch *ds
|
||||
if (dsa_is_user_port(ds, port))
|
||||
b53_set_eap_mode(dev, port, EAP_MODE_SIMPLIFIED);
|
||||
|
||||
+ if (is5325(dev) &&
|
||||
+ in_range(port, 1, 4)) {
|
||||
+ u8 reg;
|
||||
+
|
||||
+ b53_read8(dev, B53_CTRL_PAGE, B53_PD_MODE_CTRL_25, ®);
|
||||
+ reg &= ~PD_MODE_POWER_DOWN_PORT(0);
|
||||
+ if (dsa_is_unused_port(ds, port))
|
||||
+ reg |= PD_MODE_POWER_DOWN_PORT(port);
|
||||
+ else
|
||||
+ reg &= ~PD_MODE_POWER_DOWN_PORT(port);
|
||||
+ b53_write8(dev, B53_CTRL_PAGE, B53_PD_MODE_CTRL_25, reg);
|
||||
+ }
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(b53_setup_port);
|
||||
--- a/drivers/net/dsa/b53/b53_regs.h
|
||||
+++ b/drivers/net/dsa/b53/b53_regs.h
|
||||
@@ -103,8 +103,11 @@
|
||||
#define PORT_OVERRIDE_SPEED_2000M BIT(6) /* BCM5301X only, requires setting 1000M */
|
||||
#define PORT_OVERRIDE_EN BIT(7) /* Use the register contents */
|
||||
|
||||
-/* Power-down mode control */
|
||||
+/* Power-down mode control (8 bit) */
|
||||
#define B53_PD_MODE_CTRL_25 0x0f
|
||||
+#define PD_MODE_PORT_MASK 0x1f
|
||||
+/* Bit 0 also powers down the switch. */
|
||||
+#define PD_MODE_POWER_DOWN_PORT(i) BIT(i)
|
||||
|
||||
/* IP Multicast control (8 bit) */
|
||||
#define B53_IP_MULTICAST_CTRL 0x21
|
@@ -205,7 +205,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
};
|
||||
--- a/drivers/net/phy/broadcom.c
|
||||
+++ b/drivers/net/phy/broadcom.c
|
||||
@@ -1717,7 +1717,7 @@ static struct phy_driver broadcom_driver
|
||||
@@ -1734,7 +1734,7 @@ static struct phy_driver broadcom_driver
|
||||
|
||||
module_phy_driver(broadcom_drivers);
|
||||
|
||||
@@ -458,7 +458,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
{ }
|
||||
--- a/drivers/net/phy/micrel.c
|
||||
+++ b/drivers/net/phy/micrel.c
|
||||
@@ -5691,7 +5691,7 @@ MODULE_DESCRIPTION("Micrel PHY driver");
|
||||
@@ -5701,7 +5701,7 @@ MODULE_DESCRIPTION("Micrel PHY driver");
|
||||
MODULE_AUTHOR("David J. Choi");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
@@ -645,7 +645,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
};
|
||||
--- a/drivers/net/phy/smsc.c
|
||||
+++ b/drivers/net/phy/smsc.c
|
||||
@@ -884,7 +884,7 @@ MODULE_DESCRIPTION("SMSC PHY driver");
|
||||
@@ -885,7 +885,7 @@ MODULE_DESCRIPTION("SMSC PHY driver");
|
||||
MODULE_AUTHOR("Herbert Valerio Riedel");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
|
@@ -1,81 +0,0 @@
|
||||
From 26f732791f2bcab18f59c61915bbe35225f30136 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Golle <daniel@makrotopia.org>
|
||||
Date: Sat, 12 Jul 2025 16:39:21 +0100
|
||||
Subject: [PATCH] Revert "leds: trigger: netdev: Configure LED blink interval
|
||||
for HW offload"
|
||||
|
||||
This reverts commit c629c972b310af41e9e072febb6dae9a299edde6.
|
||||
|
||||
While .led_blink_set() would previously put an LED into an unconditional
|
||||
permanently blinking state, the offending commit now uses same operation
|
||||
to (also?) set the blink timing of the netdev trigger when offloading.
|
||||
|
||||
This breaks many if not all of the existing PHY drivers which offer
|
||||
offloading LED operations, as those drivers would just put the LED into
|
||||
blinking state after .led_blink_set() has been called.
|
||||
|
||||
Unfortunately the change even made it into stable kernels for unknown
|
||||
reasons, so it should be reverted there as well.
|
||||
|
||||
Fixes: c629c972b310a ("leds: trigger: netdev: Configure LED blink interval for HW offload")
|
||||
Link: https://lore.kernel.org/linux-leds/c6134e26-2e45-4121-aa15-58aaef327201@lunn.ch/T/#m9d6fe81bbcb273e59f12bbedbd633edd32118387
|
||||
Suggested-by: Andrew Lunn <andrew@lunn.ch>
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||||
Link: https://lore.kernel.org/r/6dcc77ee1c9676891d6250d8994850f521426a0f.1752334655.git.daniel@makrotopia.org
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
---
|
||||
drivers/leds/trigger/ledtrig-netdev.c | 16 +++-------------
|
||||
1 file changed, 3 insertions(+), 13 deletions(-)
|
||||
|
||||
--- a/drivers/leds/trigger/ledtrig-netdev.c
|
||||
+++ b/drivers/leds/trigger/ledtrig-netdev.c
|
||||
@@ -68,7 +68,6 @@ struct led_netdev_data {
|
||||
unsigned int last_activity;
|
||||
|
||||
unsigned long mode;
|
||||
- unsigned long blink_delay;
|
||||
int link_speed;
|
||||
__ETHTOOL_DECLARE_LINK_MODE_MASK(supported_link_modes);
|
||||
u8 duplex;
|
||||
@@ -87,10 +86,6 @@ static void set_baseline_state(struct le
|
||||
/* Already validated, hw control is possible with the requested mode */
|
||||
if (trigger_data->hw_control) {
|
||||
led_cdev->hw_control_set(led_cdev, trigger_data->mode);
|
||||
- if (led_cdev->blink_set) {
|
||||
- led_cdev->blink_set(led_cdev, &trigger_data->blink_delay,
|
||||
- &trigger_data->blink_delay);
|
||||
- }
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -459,11 +454,10 @@ static ssize_t interval_store(struct dev
|
||||
size_t size)
|
||||
{
|
||||
struct led_netdev_data *trigger_data = led_trigger_get_drvdata(dev);
|
||||
- struct led_classdev *led_cdev = trigger_data->led_cdev;
|
||||
unsigned long value;
|
||||
int ret;
|
||||
|
||||
- if (trigger_data->hw_control && !led_cdev->blink_set)
|
||||
+ if (trigger_data->hw_control)
|
||||
return -EINVAL;
|
||||
|
||||
ret = kstrtoul(buf, 0, &value);
|
||||
@@ -472,13 +466,9 @@ static ssize_t interval_store(struct dev
|
||||
|
||||
/* impose some basic bounds on the timer interval */
|
||||
if (value >= 5 && value <= 10000) {
|
||||
- if (trigger_data->hw_control) {
|
||||
- trigger_data->blink_delay = value;
|
||||
- } else {
|
||||
- cancel_delayed_work_sync(&trigger_data->work);
|
||||
+ cancel_delayed_work_sync(&trigger_data->work);
|
||||
|
||||
- atomic_set(&trigger_data->interval, msecs_to_jiffies(value));
|
||||
- }
|
||||
+ atomic_set(&trigger_data->interval, msecs_to_jiffies(value));
|
||||
set_baseline_state(trigger_data); /* resets timer */
|
||||
}
|
||||
|
@@ -102,7 +102,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
endif # MODULES
|
||||
--- a/kernel/module/main.c
|
||||
+++ b/kernel/module/main.c
|
||||
@@ -999,6 +999,7 @@ size_t modinfo_attrs_count = ARRAY_SIZE(
|
||||
@@ -1001,6 +1001,7 @@ size_t modinfo_attrs_count = ARRAY_SIZE(
|
||||
|
||||
static const char vermagic[] = VERMAGIC_STRING;
|
||||
|
||||
@@ -110,7 +110,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
int try_to_force_load(struct module *mod, const char *reason)
|
||||
{
|
||||
#ifdef CONFIG_MODULE_FORCE_LOAD
|
||||
@@ -1010,6 +1011,7 @@ int try_to_force_load(struct module *mod
|
||||
@@ -1012,6 +1013,7 @@ int try_to_force_load(struct module *mod
|
||||
return -ENOEXEC;
|
||||
#endif
|
||||
}
|
||||
@@ -118,7 +118,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
/* Parse tag=value strings from .modinfo section */
|
||||
char *module_next_tag_pair(char *string, unsigned long *secsize)
|
||||
@@ -2093,9 +2095,11 @@ static void module_augment_kernel_taints
|
||||
@@ -2095,9 +2097,11 @@ static void module_augment_kernel_taints
|
||||
|
||||
static int check_modinfo(struct module *mod, struct load_info *info, int flags)
|
||||
{
|
||||
@@ -131,7 +131,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (flags & MODULE_INIT_IGNORE_VERMAGIC)
|
||||
modmagic = NULL;
|
||||
|
||||
@@ -2109,6 +2113,7 @@ static int check_modinfo(struct module *
|
||||
@@ -2111,6 +2115,7 @@ static int check_modinfo(struct module *
|
||||
info->name, modmagic, vermagic);
|
||||
return -ENOEXEC;
|
||||
}
|
||||
|
@@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
INDIRECT_CALLABLE_DECLARE(struct dst_entry *ip6_dst_check(struct dst_entry *,
|
||||
u32));
|
||||
INDIRECT_CALLABLE_DECLARE(struct dst_entry *ipv4_dst_check(struct dst_entry *,
|
||||
@@ -2326,9 +2343,11 @@ static void __sk_free(struct sock *sk)
|
||||
@@ -2342,9 +2359,11 @@ static void __sk_free(struct sock *sk)
|
||||
if (likely(sk->sk_net_refcnt))
|
||||
sock_inuse_add(sock_net(sk), -1);
|
||||
|
||||
|
@@ -331,7 +331,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/core/sock.c
|
||||
+++ b/net/core/sock.c
|
||||
@@ -4256,6 +4256,8 @@ static __net_initdata struct pernet_oper
|
||||
@@ -4273,6 +4273,8 @@ static __net_initdata struct pernet_oper
|
||||
|
||||
static int __init proto_init(void)
|
||||
{
|
||||
|
@@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-6.12 = .42
|
||||
LINUX_KERNEL_HASH-6.12.42 = 4804528a29cd20309a0b41c30e5aeffc35fa21ee3358f4a706d4586d003bc1fb
|
||||
LINUX_VERSION-6.12 = .43
|
||||
LINUX_KERNEL_HASH-6.12.43 = 0fcbbbbcd456e87bbbfc8bf37af541fda62ccfcce76903503424fd101ef7bdee
|
||||
|
@@ -149,7 +149,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
+device_initcall(blk_notifications_init);
|
||||
--- a/include/linux/blkdev.h
|
||||
+++ b/include/linux/blkdev.h
|
||||
@@ -1696,4 +1696,12 @@ static inline bool bdev_can_atomic_write
|
||||
@@ -1751,4 +1751,12 @@ static inline bool bdev_can_atomic_write
|
||||
|
||||
#define DEFINE_IO_COMP_BATCH(name) struct io_comp_batch name = { }
|
||||
|
||||
|
@@ -96,7 +96,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
}
|
||||
--- a/net/core/sock.c
|
||||
+++ b/net/core/sock.c
|
||||
@@ -2533,7 +2533,7 @@ void sk_setup_caps(struct sock *sk, stru
|
||||
@@ -2550,7 +2550,7 @@ void sk_setup_caps(struct sock *sk, stru
|
||||
if (sk_is_tcp(sk))
|
||||
sk->sk_route_caps |= NETIF_F_GSO;
|
||||
if (sk->sk_route_caps & NETIF_F_GSO)
|
||||
|
@@ -132,7 +132,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
|
||||
/*
|
||||
* Define if arch has non-standard setup. This is a _PCI_ standard
|
||||
@@ -934,6 +937,10 @@ struct ata_port {
|
||||
@@ -935,6 +938,10 @@ struct ata_port {
|
||||
#ifdef CONFIG_ATA_ACPI
|
||||
struct ata_acpi_gtm __acpi_init_gtm; /* use ata_acpi_init_gtm() */
|
||||
#endif
|
||||
|
@@ -13,7 +13,7 @@ Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
||||
|
||||
--- a/drivers/mmc/host/sdhci-msm.c
|
||||
+++ b/drivers/mmc/host/sdhci-msm.c
|
||||
@@ -2369,7 +2369,7 @@ MODULE_DEVICE_TABLE(of, sdhci_msm_dt_mat
|
||||
@@ -2383,7 +2383,7 @@ MODULE_DEVICE_TABLE(of, sdhci_msm_dt_mat
|
||||
|
||||
static const struct sdhci_ops sdhci_msm_ops = {
|
||||
.reset = sdhci_and_cqhci_reset,
|
||||
|
@@ -13,7 +13,7 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||
|
||||
--- a/drivers/mmc/host/sdhci-msm.c
|
||||
+++ b/drivers/mmc/host/sdhci-msm.c
|
||||
@@ -1804,49 +1804,49 @@ static unsigned int sdhci_msm_get_min_cl
|
||||
@@ -1818,49 +1818,49 @@ static unsigned int sdhci_msm_get_min_cl
|
||||
return SDHCI_MSM_MIN_CLOCK;
|
||||
}
|
||||
|
||||
|
@@ -93,7 +93,7 @@ Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
|
||||
+#endif
|
||||
--- a/include/linux/skbuff.h
|
||||
+++ b/include/linux/skbuff.h
|
||||
@@ -4792,6 +4792,9 @@ enum skb_ext_id {
|
||||
@@ -4798,6 +4798,9 @@ enum skb_ext_id {
|
||||
#if IS_ENABLED(CONFIG_MCTP_FLOWS)
|
||||
SKB_EXT_MCTP,
|
||||
#endif
|
||||
|
@@ -5518,7 +5518,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
(transaction layer end-to-end CRC checking).
|
||||
--- a/include/linux/pci.h
|
||||
+++ b/include/linux/pci.h
|
||||
@@ -1629,6 +1629,8 @@ void pci_walk_bus_locked(struct pci_bus
|
||||
@@ -1643,6 +1643,8 @@ void pci_walk_bus_locked(struct pci_bus
|
||||
void *userdata);
|
||||
int pci_cfg_space_size(struct pci_dev *dev);
|
||||
unsigned char pci_bus_max_busnr(struct pci_bus *bus);
|
||||
|
@@ -1,65 +0,0 @@
|
||||
From 9c9a7ff9882fc6ba7d2f4050697e8bb80383e8dc Mon Sep 17 00:00:00 2001
|
||||
From: Shiji Yang <yangshiji66@outlook.com>
|
||||
Date: Wed, 18 Jun 2025 22:53:23 +0800
|
||||
Subject: [PATCH 11/11] MIPS: lantiq: falcon: sysctrl: fix request memory check
|
||||
logic
|
||||
|
||||
request_mem_region() will return NULL instead of error code
|
||||
when the memory request fails. Therefore, we should check if
|
||||
the return value is non-zero instead of less than zero. In
|
||||
this way, this patch also fixes the build warnings:
|
||||
|
||||
arch/mips/lantiq/falcon/sysctrl.c:214:50: error: ordered comparison of pointer with integer zero [-Werror=extra]
|
||||
214 | res_status.name) < 0) ||
|
||||
| ^
|
||||
arch/mips/lantiq/falcon/sysctrl.c:216:47: error: ordered comparison of pointer with integer zero [-Werror=extra]
|
||||
216 | res_ebu.name) < 0) ||
|
||||
| ^
|
||||
arch/mips/lantiq/falcon/sysctrl.c:219:50: error: ordered comparison of pointer with integer zero [-Werror=extra]
|
||||
219 | res_sys[0].name) < 0) ||
|
||||
| ^
|
||||
arch/mips/lantiq/falcon/sysctrl.c:222:50: error: ordered comparison of pointer with integer zero [-Werror=extra]
|
||||
222 | res_sys[1].name) < 0) ||
|
||||
| ^
|
||||
arch/mips/lantiq/falcon/sysctrl.c:225:50: error: ordered comparison of pointer with integer zero [-Werror=extra]
|
||||
225 | res_sys[2].name) < 0))
|
||||
|
|
||||
|
||||
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
|
||||
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
|
||||
---
|
||||
arch/mips/lantiq/falcon/sysctrl.c | 23 ++++++++++-------------
|
||||
1 file changed, 10 insertions(+), 13 deletions(-)
|
||||
|
||||
--- a/arch/mips/lantiq/falcon/sysctrl.c
|
||||
+++ b/arch/mips/lantiq/falcon/sysctrl.c
|
||||
@@ -210,19 +210,16 @@ void __init ltq_soc_init(void)
|
||||
of_node_put(np_syseth);
|
||||
of_node_put(np_sysgpe);
|
||||
|
||||
- if ((request_mem_region(res_status.start, resource_size(&res_status),
|
||||
- res_status.name) < 0) ||
|
||||
- (request_mem_region(res_ebu.start, resource_size(&res_ebu),
|
||||
- res_ebu.name) < 0) ||
|
||||
- (request_mem_region(res_sys[0].start,
|
||||
- resource_size(&res_sys[0]),
|
||||
- res_sys[0].name) < 0) ||
|
||||
- (request_mem_region(res_sys[1].start,
|
||||
- resource_size(&res_sys[1]),
|
||||
- res_sys[1].name) < 0) ||
|
||||
- (request_mem_region(res_sys[2].start,
|
||||
- resource_size(&res_sys[2]),
|
||||
- res_sys[2].name) < 0))
|
||||
+ if ((!request_mem_region(res_status.start, resource_size(&res_status),
|
||||
+ res_status.name)) ||
|
||||
+ (!request_mem_region(res_ebu.start, resource_size(&res_ebu),
|
||||
+ res_ebu.name)) ||
|
||||
+ (!request_mem_region(res_sys[0].start, resource_size(&res_sys[0]),
|
||||
+ res_sys[0].name)) ||
|
||||
+ (!request_mem_region(res_sys[1].start, resource_size(&res_sys[1]),
|
||||
+ res_sys[1].name)) ||
|
||||
+ (!request_mem_region(res_sys[2].start, resource_size(&res_sys[2]),
|
||||
+ res_sys[2].name)))
|
||||
pr_err("Failed to request core resources");
|
||||
|
||||
status_membase = ioremap(res_status.start,
|
@@ -1,44 +0,0 @@
|
||||
From 844615dd0f2d95c018ec66b943e08af22b62aff3 Mon Sep 17 00:00:00 2001
|
||||
From: Shiji Yang <yangshiji66@outlook.com>
|
||||
Date: Thu, 3 Jul 2025 21:06:32 +0800
|
||||
Subject: [PATCH] MIPS: vpe-mt: add missing prototypes for
|
||||
vpe_{alloc,start,stop,free}
|
||||
|
||||
These functions are exported but their prototypes are not defined.
|
||||
This patch adds the missing function prototypes to fix the following
|
||||
compilation warnings:
|
||||
|
||||
arch/mips/kernel/vpe-mt.c:180:7: error: no previous prototype for 'vpe_alloc' [-Werror=missing-prototypes]
|
||||
180 | void *vpe_alloc(void)
|
||||
| ^~~~~~~~~
|
||||
arch/mips/kernel/vpe-mt.c:198:5: error: no previous prototype for 'vpe_start' [-Werror=missing-prototypes]
|
||||
198 | int vpe_start(void *vpe, unsigned long start)
|
||||
| ^~~~~~~~~
|
||||
arch/mips/kernel/vpe-mt.c:208:5: error: no previous prototype for 'vpe_stop' [-Werror=missing-prototypes]
|
||||
208 | int vpe_stop(void *vpe)
|
||||
| ^~~~~~~~
|
||||
arch/mips/kernel/vpe-mt.c:229:5: error: no previous prototype for 'vpe_free' [-Werror=missing-prototypes]
|
||||
229 | int vpe_free(void *vpe)
|
||||
| ^~~~~~~~
|
||||
|
||||
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
|
||||
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
|
||||
---
|
||||
arch/mips/include/asm/vpe.h | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
--- a/arch/mips/include/asm/vpe.h
|
||||
+++ b/arch/mips/include/asm/vpe.h
|
||||
@@ -119,4 +119,12 @@ void cleanup_tc(struct tc *tc);
|
||||
|
||||
int __init vpe_module_init(void);
|
||||
void __exit vpe_module_exit(void);
|
||||
+
|
||||
+#ifdef CONFIG_MIPS_VPE_LOADER_MT
|
||||
+void *vpe_alloc(void);
|
||||
+int vpe_start(void *vpe, unsigned long start);
|
||||
+int vpe_stop(void *vpe);
|
||||
+int vpe_free(void *vpe);
|
||||
+#endif /* CONFIG_MIPS_VPE_LOADER_MT */
|
||||
+
|
||||
#endif /* _ASM_VPE_H */
|
@@ -15,7 +15,7 @@ Signed-off-by: Kuldeep Singh <kuldeep.singh@nxp.com>
|
||||
|
||||
--- a/drivers/mtd/spi-nor/spansion.c
|
||||
+++ b/drivers/mtd/spi-nor/spansion.c
|
||||
@@ -828,9 +828,9 @@ static const struct flash_info spansion_
|
||||
@@ -859,9 +859,9 @@ static const struct flash_info spansion_
|
||||
.name = "s25fs512s",
|
||||
.size = SZ_64M,
|
||||
.sector_size = SZ_256K,
|
||||
|
@@ -1,143 +0,0 @@
|
||||
From patchwork Thu May 22 20:25:55 2025
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
X-Patchwork-Submitter: Christian Marangi <ansuelsmth@gmail.com>
|
||||
X-Patchwork-Id: 14097271
|
||||
Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com
|
||||
[209.85.221.50])
|
||||
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
|
||||
(No client certificate requested)
|
||||
by smtp.subspace.kernel.org (Postfix) with ESMTPS id BE1BF2B9A9;
|
||||
Thu, 22 May 2025 20:26:28 +0000 (UTC)
|
||||
Authentication-Results: smtp.subspace.kernel.org;
|
||||
arc=none smtp.client-ip=209.85.221.50
|
||||
ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
|
||||
t=1747945590; cv=none;
|
||||
b=SJyQKJEIm31L7OgiCxpH5eSDCvy3pwWfc5Tm5ylnbA62aIfHLr9TAaJ3qgIEhatEmg1tASNg/kuDmfqVkvTcCgfN89i5AC/I6gvQRguLThtK4NHh5SuCKdUd49BWXk1X+Ma5cEIKEKY+Me0pO1q2XeLvwuWTFN3RHUkygO2Cias=
|
||||
ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org;
|
||||
s=arc-20240116; t=1747945590; c=relaxed/simple;
|
||||
bh=RcOtjmSun1IwEL5Wb3PSql0fo4oAT/kf0BO04Ne0FWo=;
|
||||
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version;
|
||||
b=lOheyUFV/bVQ1HRRivMF7JOVhTelzBEnWB7rGJmANrNWl2gcgEf+xEHi3nWPULWal/ppIdrVL9LjC0v7KEKoHe6XJ/WmqmhJgrNKiUSUJQbnmUZgaser6iyO9XJUCjR3TlgdSnZ2A8dsLXVbiK2UPLe+GUdb0V5O5ZChOm6rVAM=
|
||||
ARC-Authentication-Results: i=1; smtp.subspace.kernel.org;
|
||||
dmarc=pass (p=none dis=none) header.from=gmail.com;
|
||||
spf=pass smtp.mailfrom=gmail.com;
|
||||
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com
|
||||
header.b=U3Ibckvp; arc=none smtp.client-ip=209.85.221.50
|
||||
Authentication-Results: smtp.subspace.kernel.org;
|
||||
dmarc=pass (p=none dis=none) header.from=gmail.com
|
||||
Authentication-Results: smtp.subspace.kernel.org;
|
||||
spf=pass smtp.mailfrom=gmail.com
|
||||
Authentication-Results: smtp.subspace.kernel.org;
|
||||
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com
|
||||
header.b="U3Ibckvp"
|
||||
Received: by mail-wr1-f50.google.com with SMTP id
|
||||
ffacd0b85a97d-3a367ec7840so3966539f8f.2;
|
||||
Thu, 22 May 2025 13:26:28 -0700 (PDT)
|
||||
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
||||
d=gmail.com; s=20230601; t=1747945587; x=1748550387;
|
||||
darn=vger.kernel.org;
|
||||
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
|
||||
:to:from:from:to:cc:subject:date:message-id:reply-to;
|
||||
bh=xgvKtt5DybnIrKc6mWPJ7EZTeS6I4nUMUzu2bm2zMtQ=;
|
||||
b=U3IbckvpuScfyKSdVLd02B1axIbs/9630TXWceGPzDNFU/YHi8PIALyMXNVBZ5/DGb
|
||||
fSlmQmam2bC0j5pk1bg2xqWs7I9sCteTah3Ygxo9X1vXhD9PnqbhJfgvQJp3KrNoLwC4
|
||||
JdRzdVi/vjJIEEuMlveXpcanmLLn+BjOEYYMs8x3EZ3yLYQr7KkHtJ+V6HTWPsE47qA8
|
||||
mOdp/ysLZ2jLPihravIjN6BlUSGMz5EkdYudIljy3wYNiga385aw4aQsa79gd/J7RxjD
|
||||
o9GAIcFAtoRp4Co7G632DYC+zoYQw1G10ZfIzT7kOCPRZxoevlaGeRVxsgh9bCnsQ9LT
|
||||
3aog==
|
||||
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
||||
d=1e100.net; s=20230601; t=1747945587; x=1748550387;
|
||||
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
|
||||
:to:from:x-gm-message-state:from:to:cc:subject:date:message-id
|
||||
:reply-to;
|
||||
bh=xgvKtt5DybnIrKc6mWPJ7EZTeS6I4nUMUzu2bm2zMtQ=;
|
||||
b=Fdp0DTSGLe7u0fvh/rW+co2BBsFkL9sH5Y4cVO/uEyWrOuDZY4wEIY3k7tT9z/qusu
|
||||
qsBqrFaiXgv99S3sOK6e4buTvnX+yvbk5hBq7kKb+WUSdLnvo7am0NzjlVz3/8ksSosU
|
||||
g/6WFJbxG/UEf7eQS5ze9cOtfag1nj3qpj/wf1od2RAE8KLaGt1yT2RKXrxvWswjVtWc
|
||||
TVKIc5mEANR4fTG4AwfOVG6QBU1JfLpTBS41O9THoy/vk3BI9id6by4w3zsD8BSc4Z6W
|
||||
njvleK+s7I7draMy3YYcYM3etzGD2P5AiJj0NxoyEZ8hCSswjCDIcfQniPRhfblicRBT
|
||||
Bi+Q==
|
||||
X-Forwarded-Encrypted: i=1;
|
||||
AJvYcCU//xD5uHyFhB4sHqPQHkUS/SeqLIOqpGrEMtx0zyh2/T2x39VopI/PnTpe2ESaMCDbmRl8MurqOBOJ@vger.kernel.org,
|
||||
AJvYcCWlko+5ICQgXGZZ6qZxD3WWDXE1EmkOd7Tw+6qOZDni1suR0Um5tG1VcHHtIJIp034hXQ7Tj5WK3veOVQgD@vger.kernel.org,
|
||||
AJvYcCXnJcB9/SJexBqJAU7vPtjnJ2eKMHLPx+eHgLCSNvPKpkH7r5TU+eAOzfjqSPvmxKNRZXM/L/CxkyxDzp+n@vger.kernel.org
|
||||
X-Gm-Message-State: AOJu0Ywgx5kKVjnck8zcNF5jiJmr1aap8FGVVIFxqqFyLqAdMsRpJ5RM
|
||||
YGVflzDLCHubLU2D5IwFoaoiTDyGi/eHphmIPndSUeFP8moWY/T6O3Pd
|
||||
X-Gm-Gg: ASbGncunHQP8921RyvQsddVmY7ua8h+QTVvMvQHB4kaRgHeeD58OPdZJCqc3cNVNIP1
|
||||
X/LZAzqXAmd7j1ls65igxC/kCtPSyDnS4zh1hu6AFlttxuOfgdWgiXbFyqdozanfhYDRhD11FD6
|
||||
aAseq7i2gRb72LDgkGGmwREbBnHgtugTuSboaAJnCaoVVhU53SdpG0XfrAJBxVVHKFRv+WLtktr
|
||||
o0itJiaG5BklL3SQ7I36EqdExH7yo3mPByvwYI5zarwBqgENcIqxoMbum72iweT8YSB7p6h0iMo
|
||||
/dPKuoYps8Nt9k6kkL6oF2SkVLjTvYDQ4kna9JVBqwP0UdjBgTo+FMZBNy6UNnEnJC+4gKrLnE+
|
||||
I1asottOJwbm+C7Ke4/O9
|
||||
X-Google-Smtp-Source:
|
||||
AGHT+IE/fBAh0wuvEHRV8Pp3re+RzxCwE85Zo4u5IxHZMcKKHBmdPi+/PvNmPZSoI/27B1urc+XZXg==
|
||||
X-Received: by 2002:a05:6000:2281:b0:3a3:7be3:cba9 with SMTP id
|
||||
ffacd0b85a97d-3a37be3cebdmr9761395f8f.18.1747945586791;
|
||||
Thu, 22 May 2025 13:26:26 -0700 (PDT)
|
||||
Received: from localhost.localdomain (93-34-88-225.ip49.fastwebnet.it.
|
||||
[93.34.88.225])
|
||||
by smtp.googlemail.com with ESMTPSA id
|
||||
ffacd0b85a97d-3a35ca5a03fsm23883073f8f.22.2025.05.22.13.26.25
|
||||
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
|
||||
Thu, 22 May 2025 13:26:25 -0700 (PDT)
|
||||
From: Christian Marangi <ansuelsmth@gmail.com>
|
||||
To: Bjorn Andersson <andersson@kernel.org>,
|
||||
Michael Turquette <mturquette@baylibre.com>,
|
||||
Stephen Boyd <sboyd@kernel.org>,
|
||||
Christian Marangi <ansuelsmth@gmail.com>,
|
||||
linux-arm-msm@vger.kernel.org,
|
||||
linux-clk@vger.kernel.org,
|
||||
linux-kernel@vger.kernel.org
|
||||
Cc: stable@vger.kernel.org
|
||||
Subject: [PATCH] clk: qcom: gcc-ipq8074: fix broken freq table for
|
||||
nss_port6_tx_clk_src
|
||||
Date: Thu, 22 May 2025 22:25:55 +0200
|
||||
Message-ID: <20250522202600.4028-1-ansuelsmth@gmail.com>
|
||||
X-Mailer: git-send-email 2.48.1
|
||||
Precedence: bulk
|
||||
X-Mailing-List: linux-arm-msm@vger.kernel.org
|
||||
List-Id: <linux-arm-msm.vger.kernel.org>
|
||||
List-Subscribe: <mailto:linux-arm-msm+subscribe@vger.kernel.org>
|
||||
List-Unsubscribe: <mailto:linux-arm-msm+unsubscribe@vger.kernel.org>
|
||||
MIME-Version: 1.0
|
||||
|
||||
With the conversion done by commit e88f03230dc0 ("clk: qcom: gcc-ipq8074:
|
||||
rework nss_port5/6 clock to multiple conf") a Copy-Paste error was made
|
||||
for the nss_port6_tx_clk_src frequency table.
|
||||
|
||||
This was caused by the wrong setting of the parent in
|
||||
ftbl_nss_port6_tx_clk_src that was wrongly set to P_UNIPHY1_RX instead
|
||||
of P_UNIPHY2_TX.
|
||||
|
||||
This cause the UNIPHY2 port to malfunction when it needs to be scaled to
|
||||
higher clock. The malfunction was observed with the example scenario
|
||||
with an Aquantia 10G PHY connected and a speed higher than 1G (example
|
||||
2.5G)
|
||||
|
||||
Fix the broken frequency table to restore original functionality.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Fixes: e88f03230dc0 ("clk: qcom: gcc-ipq8074: rework nss_port5/6 clock to multiple conf")
|
||||
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||||
---
|
||||
drivers/clk/qcom/gcc-ipq8074.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/clk/qcom/gcc-ipq8074.c
|
||||
+++ b/drivers/clk/qcom/gcc-ipq8074.c
|
||||
@@ -1895,10 +1895,10 @@ static const struct freq_conf ftbl_nss_p
|
||||
static const struct freq_multi_tbl ftbl_nss_port6_tx_clk_src[] = {
|
||||
FMS(19200000, P_XO, 1, 0, 0),
|
||||
FM(25000000, ftbl_nss_port6_tx_clk_src_25),
|
||||
- FMS(78125000, P_UNIPHY1_RX, 4, 0, 0),
|
||||
+ FMS(78125000, P_UNIPHY2_TX, 4, 0, 0),
|
||||
FM(125000000, ftbl_nss_port6_tx_clk_src_125),
|
||||
- FMS(156250000, P_UNIPHY1_RX, 2, 0, 0),
|
||||
- FMS(312500000, P_UNIPHY1_RX, 1, 0, 0),
|
||||
+ FMS(156250000, P_UNIPHY2_TX, 2, 0, 0),
|
||||
+ FMS(312500000, P_UNIPHY2_TX, 1, 0, 0),
|
||||
{ }
|
||||
};
|
||||
|
@@ -13,7 +13,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
--- a/drivers/media/usb/uvc/uvc_driver.c
|
||||
+++ b/drivers/media/usb/uvc/uvc_driver.c
|
||||
@@ -3185,6 +3185,18 @@ static const struct usb_device_id uvc_id
|
||||
@@ -3197,6 +3197,18 @@ static const struct usb_device_id uvc_id
|
||||
.bInterfaceSubClass = 1,
|
||||
.bInterfaceProtocol = 0,
|
||||
.driver_info = UVC_INFO_META(V4L2_META_FMT_D4XX) },
|
||||
@@ -64,7 +64,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
#include <media/jpeg.h>
|
||||
#include <media/v4l2-common.h>
|
||||
@@ -1344,9 +1349,149 @@ static void uvc_video_decode_data(struct
|
||||
@@ -1353,9 +1358,149 @@ static void uvc_video_decode_data(struct
|
||||
uvc_urb->async_operations++;
|
||||
}
|
||||
|
||||
@@ -214,7 +214,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
/* Mark the buffer as done if the EOF marker is set. */
|
||||
if (data[1] & UVC_STREAM_EOF && buf->bytesused != 0) {
|
||||
uvc_dbg(stream->dev, FRAME, "Frame complete (EOF found)\n");
|
||||
@@ -1928,6 +2073,8 @@ static int uvc_init_video_isoc(struct uv
|
||||
@@ -1937,6 +2082,8 @@ static int uvc_init_video_isoc(struct uv
|
||||
if (npackets == 0)
|
||||
return -ENOMEM;
|
||||
|
||||
|
Reference in New Issue
Block a user