diff --git a/include/kernel-6.12 b/include/kernel-6.12 index a55d78ec6..920ea0645 100644 --- a/include/kernel-6.12 +++ b/include/kernel-6.12 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.12 = .56 -LINUX_KERNEL_HASH-6.12.56 = 55432b2af352f7bf3053c348d8549df2f2deeaa4a361c65d638c2f3b2ca7ec96 +LINUX_VERSION-6.12 = .58 +LINUX_KERNEL_HASH-6.12.58 = 5f1c4c546660a6a81046fdfa6195306bad2c8d17c0d69876dc100a85ad4613ac diff --git a/include/kernel-6.6 b/include/kernel-6.6 index 706c50ef7..6bedc4009 100644 --- a/include/kernel-6.6 +++ b/include/kernel-6.6 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.6 = .115 -LINUX_KERNEL_HASH-6.6.115 = 0a98c05e8d0f6b49fad71b8d779410a0811ea5ae17d81744fe30718633fd9047 +LINUX_VERSION-6.6 = .116 +LINUX_KERNEL_HASH-6.6.116 = a9a59742c29be284c205dc87cbe9b065f9688488132c8f5a6057a5539230a51d diff --git a/target/linux/bcm27xx/patches-6.12/950-0409-media-i2c-adv7180-Use-MEDIA_BUS_FMT_UYVY8_1X16-for-C.patch b/target/linux/bcm27xx/patches-6.12/950-0409-media-i2c-adv7180-Use-MEDIA_BUS_FMT_UYVY8_1X16-for-C.patch deleted file mode 100644 index 5790d79ad..000000000 --- a/target/linux/bcm27xx/patches-6.12/950-0409-media-i2c-adv7180-Use-MEDIA_BUS_FMT_UYVY8_1X16-for-C.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 8680ecfcb4570e5f68a7b1bc237dfdfcf65b389e Mon Sep 17 00:00:00 2001 -From: Dave Stevenson -Date: Thu, 21 Dec 2023 18:01:59 +0000 -Subject: [PATCH] media: i2c: adv7180: Use MEDIA_BUS_FMT_UYVY8_1X16 for CSI2 - output - -CSI2 devices are meant to use the 1Xnn formats rather than 2Xnn -such as MEDIA_BUS_FMT_UYVY8_2X8. - -For devices with ADV7180_FLAG_MIPI_CSI2 set, use -MEDIA_BUS_FMT_UYVY8_1X16. - -Signed-off-by: Dave Stevenson ---- - drivers/media/i2c/adv7180.c | 12 ++++++++++-- - 1 file changed, 10 insertions(+), 2 deletions(-) - ---- a/drivers/media/i2c/adv7180.c -+++ b/drivers/media/i2c/adv7180.c -@@ -737,10 +737,15 @@ static int adv7180_enum_mbus_code(struct - struct v4l2_subdev_state *sd_state, - struct v4l2_subdev_mbus_code_enum *code) - { -+ struct adv7180_state *state = to_state(sd); -+ - if (code->index != 0) - return -EINVAL; - -- code->code = MEDIA_BUS_FMT_UYVY8_2X8; -+ if (state->chip_info->flags & ADV7180_FLAG_MIPI_CSI2) -+ code->code = MEDIA_BUS_FMT_UYVY8_1X16; -+ else -+ code->code = MEDIA_BUS_FMT_UYVY8_2X8; - - return 0; - } -@@ -750,7 +755,10 @@ static int adv7180_mbus_fmt(struct v4l2_ - { - struct adv7180_state *state = to_state(sd); - -- fmt->code = MEDIA_BUS_FMT_UYVY8_2X8; -+ if (state->chip_info->flags & ADV7180_FLAG_MIPI_CSI2) -+ fmt->code = MEDIA_BUS_FMT_UYVY8_1X16; -+ else -+ fmt->code = MEDIA_BUS_FMT_UYVY8_2X8; - fmt->colorspace = V4L2_COLORSPACE_SMPTE170M; - fmt->width = 720; - fmt->height = state->curr_norm & V4L2_STD_525_60 ? 480 : 576; diff --git a/target/linux/bcm27xx/patches-6.12/950-0410-media-i2c-adv7180-Add-support-for-V4L2_CID_LINK_FREQ.patch b/target/linux/bcm27xx/patches-6.12/950-0410-media-i2c-adv7180-Add-support-for-V4L2_CID_LINK_FREQ.patch deleted file mode 100644 index 4bc7a684e..000000000 --- a/target/linux/bcm27xx/patches-6.12/950-0410-media-i2c-adv7180-Add-support-for-V4L2_CID_LINK_FREQ.patch +++ /dev/null @@ -1,98 +0,0 @@ -From 7e58b9c99676d641ef76edd9c097f1c3c4e6c464 Mon Sep 17 00:00:00 2001 -From: Dave Stevenson -Date: Thu, 21 Dec 2023 18:03:34 +0000 -Subject: [PATCH] media: i2c: adv7180: Add support for V4L2_CID_LINK_FREQ - -For CSI2 receivers that need to know the link frequency, -add it as a control to the driver. -Interlaced modes are 216Mbp/s or 108MHz, whilst going through -the I2P to deinterlace gives 432Mb/s or 216MHz. - -Signed-off-by: Dave Stevenson ---- - drivers/media/i2c/adv7180.c | 32 +++++++++++++++++++++++++++++++- - 1 file changed, 31 insertions(+), 1 deletion(-) - ---- a/drivers/media/i2c/adv7180.c -+++ b/drivers/media/i2c/adv7180.c -@@ -189,6 +189,16 @@ - /* Initial number of frames to skip to avoid possible garbage */ - #define ADV7180_NUM_OF_SKIP_FRAMES 2 - -+enum adv7180_link_freq_idx { -+ INTERLACED_IDX, -+ I2P_IDX, -+}; -+ -+static const s64 adv7180_link_freqs[] = { -+ [INTERLACED_IDX] = 108000000, -+ [I2P_IDX] = 216000000, -+}; -+ - static int dbg_input; - module_param(dbg_input, int, 0644); - MODULE_PARM_DESC(dbg_input, "Input number (0-31)"); -@@ -229,6 +239,7 @@ struct adv7180_state { - const struct adv7180_chip_info *chip_info; - enum v4l2_field field; - bool force_bt656_4; -+ struct v4l2_ctrl *link_freq; - }; - #define to_adv7180_sd(_ctrl) (&container_of(_ctrl->handler, \ - struct adv7180_state, \ -@@ -630,6 +641,9 @@ static int adv7180_s_ctrl(struct v4l2_ct - - if (ret) - return ret; -+ if (ctrl->flags & V4L2_CTRL_FLAG_READ_ONLY) -+ goto unlock; -+ - val = ctrl->val; - switch (ctrl->id) { - case V4L2_CID_BRIGHTNESS: -@@ -671,6 +685,7 @@ static int adv7180_s_ctrl(struct v4l2_ct - ret = -EINVAL; - } - -+unlock: - mutex_unlock(&state->mutex); - return ret; - } -@@ -691,7 +706,7 @@ static const struct v4l2_ctrl_config adv - - static int adv7180_init_controls(struct adv7180_state *state) - { -- v4l2_ctrl_handler_init(&state->ctrl_hdl, 4); -+ v4l2_ctrl_handler_init(&state->ctrl_hdl, 5); - - v4l2_ctrl_new_std(&state->ctrl_hdl, &adv7180_ctrl_ops, - V4L2_CID_BRIGHTNESS, ADV7180_BRI_MIN, -@@ -717,6 +732,17 @@ static int adv7180_init_controls(struct - test_pattern_menu); - } - -+ if (state->chip_info->flags & ADV7180_FLAG_MIPI_CSI2) { -+ state->link_freq = -+ v4l2_ctrl_new_int_menu(&state->ctrl_hdl, -+ &adv7180_ctrl_ops, -+ V4L2_CID_LINK_FREQ, -+ ARRAY_SIZE(adv7180_link_freqs) - 1, -+ 0, adv7180_link_freqs); -+ if (state->link_freq) -+ state->link_freq->flags |= V4L2_CTRL_FLAG_READ_ONLY; -+ } -+ - state->sd.ctrl_handler = &state->ctrl_hdl; - if (state->ctrl_hdl.error) { - int err = state->ctrl_hdl.error; -@@ -849,6 +875,10 @@ static int adv7180_set_pad_format(struct - adv7180_set_power(state, false); - adv7180_set_field_mode(state); - adv7180_set_power(state, true); -+ if (state->chip_info->flags & ADV7180_FLAG_MIPI_CSI2) -+ __v4l2_ctrl_s_ctrl(state->link_freq, -+ (state->field == V4L2_FIELD_NONE) ? -+ I2P_IDX : INTERLACED_IDX); - } - } else { - framefmt = v4l2_subdev_state_get_format(sd_state, 0); diff --git a/target/linux/qualcommax/patches-6.12/0151-arm64-qcom-ipq6018-nss_port5.patch b/target/linux/qualcommax/patches-6.12/0151-arm64-qcom-ipq6018-nss_port5.patch deleted file mode 100644 index 9e4372a87..000000000 --- a/target/linux/qualcommax/patches-6.12/0151-arm64-qcom-ipq6018-nss_port5.patch +++ /dev/null @@ -1,125 +0,0 @@ -From 9989fcd49c52500a2bf1f6d49411690dec45d2dc Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= -Date: Sat, 2 Aug 2025 12:47:08 +0300 -Subject: [PATCH] clk: qcom: gcc-ipq6018: rework nss_port5 clock to multiple - conf - -Rework nss_port5 to use the new multiple configuration implementation -and correctly fix the clocks for this port under some corner case. - -In OpenWrt, this patch avoids intermittent dmesg errors of the form -nss_port5_rx_clk_src: rcg didn't update its configuration. - -This is a mechanical, straightforward port of -commit e88f03230dc07aa3293b6aeb078bd27370bb2594 -("clk: qcom: gcc-ipq8074: rework nss_port5/6 clock to multiple conf") -to gcc-ipq6018, with two conflicts resolved: different frequency of the -P_XO clock source, and only 5 Ethernet ports. - -This was originally developed by JiaY-shi . - -Link: https://lore.kernel.org/all/20231220221724.3822-4-ansuelsmth@gmail.com/ -Signed-off-by: Marko Mäkelä -Tested-by: Marko Mäkelä ---- - drivers/clk/qcom/gcc-ipq6018.c | 60 +++++++++++++++++++++------------- - 1 file changed, 38 insertions(+), 22 deletions(-) - ---- a/drivers/clk/qcom/gcc-ipq6018.c -+++ b/drivers/clk/qcom/gcc-ipq6018.c -@@ -511,15 +511,23 @@ static struct clk_rcg2 apss_ahb_clk_src - }, - }; - --static const struct freq_tbl ftbl_nss_port5_rx_clk_src[] = { -- F(24000000, P_XO, 1, 0, 0), -- F(25000000, P_UNIPHY1_RX, 12.5, 0, 0), -- F(25000000, P_UNIPHY0_RX, 5, 0, 0), -- F(78125000, P_UNIPHY1_RX, 4, 0, 0), -- F(125000000, P_UNIPHY1_RX, 2.5, 0, 0), -- F(125000000, P_UNIPHY0_RX, 1, 0, 0), -- F(156250000, P_UNIPHY1_RX, 2, 0, 0), -- F(312500000, P_UNIPHY1_RX, 1, 0, 0), -+static const struct freq_conf ftbl_nss_port5_rx_clk_src_25[] = { -+ C(P_UNIPHY1_RX, 12.5, 0, 0), -+ C(P_UNIPHY0_RX, 5, 0, 0), -+}; -+ -+static const struct freq_conf ftbl_nss_port5_rx_clk_src_125[] = { -+ C(P_UNIPHY1_RX, 2.5, 0, 0), -+ C(P_UNIPHY0_RX, 1, 0, 0), -+}; -+ -+static const struct freq_multi_tbl ftbl_nss_port5_rx_clk_src[] = { -+ FMS(24000000, P_XO, 1, 0, 0), -+ FM(25000000, ftbl_nss_port5_rx_clk_src_25), -+ FMS(78125000, P_UNIPHY1_RX, 4, 0, 0), -+ FM(125000000, ftbl_nss_port5_rx_clk_src_125), -+ FMS(156250000, P_UNIPHY1_RX, 2, 0, 0), -+ FMS(312500000, P_UNIPHY1_RX, 1, 0, 0), - { } - }; - -@@ -547,26 +555,34 @@ gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32 - - static struct clk_rcg2 nss_port5_rx_clk_src = { - .cmd_rcgr = 0x68060, -- .freq_tbl = ftbl_nss_port5_rx_clk_src, -+ .freq_multi_tbl = ftbl_nss_port5_rx_clk_src, - .hid_width = 5, - .parent_map = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias_map, - .clkr.hw.init = &(struct clk_init_data){ - .name = "nss_port5_rx_clk_src", - .parent_data = gcc_xo_uniphy0_rx_tx_uniphy1_rx_tx_ubi32_bias, - .num_parents = 7, -- .ops = &clk_rcg2_ops, -+ .ops = &clk_rcg2_fm_ops, - }, - }; - --static const struct freq_tbl ftbl_nss_port5_tx_clk_src[] = { -- F(24000000, P_XO, 1, 0, 0), -- F(25000000, P_UNIPHY1_TX, 12.5, 0, 0), -- F(25000000, P_UNIPHY0_TX, 5, 0, 0), -- F(78125000, P_UNIPHY1_TX, 4, 0, 0), -- F(125000000, P_UNIPHY1_TX, 2.5, 0, 0), -- F(125000000, P_UNIPHY0_TX, 1, 0, 0), -- F(156250000, P_UNIPHY1_TX, 2, 0, 0), -- F(312500000, P_UNIPHY1_TX, 1, 0, 0), -+static const struct freq_conf ftbl_nss_port5_tx_clk_src_25[] = { -+ C(P_UNIPHY1_TX, 12.5, 0, 0), -+ C(P_UNIPHY0_TX, 5, 0, 0), -+}; -+ -+static const struct freq_conf ftbl_nss_port5_tx_clk_src_125[] = { -+ C(P_UNIPHY1_TX, 2.5, 0, 0), -+ C(P_UNIPHY0_TX, 1, 0, 0), -+}; -+ -+static const struct freq_multi_tbl ftbl_nss_port5_tx_clk_src[] = { -+ FMS(24000000, P_XO, 1, 0, 0), -+ FM(25000000, ftbl_nss_port5_tx_clk_src_25), -+ FMS(78125000, P_UNIPHY1_TX, 4, 0, 0), -+ FM(125000000, ftbl_nss_port5_tx_clk_src_125), -+ FMS(156250000, P_UNIPHY1_TX, 2, 0, 0), -+ FMS(312500000, P_UNIPHY1_TX, 1, 0, 0), - { } - }; - -@@ -594,14 +610,14 @@ gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32 - - static struct clk_rcg2 nss_port5_tx_clk_src = { - .cmd_rcgr = 0x68068, -- .freq_tbl = ftbl_nss_port5_tx_clk_src, -+ .freq_multi_tbl = ftbl_nss_port5_tx_clk_src, - .hid_width = 5, - .parent_map = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias_map, - .clkr.hw.init = &(struct clk_init_data){ - .name = "nss_port5_tx_clk_src", - .parent_data = gcc_xo_uniphy0_tx_rx_uniphy1_tx_rx_ubi32_bias, - .num_parents = 7, -- .ops = &clk_rcg2_ops, -+ .ops = &clk_rcg2_fm_ops, - }, - }; -