mirror of
https://github.com/Heleguo/lede.git
synced 2025-12-16 10:51:12 +00:00
kernel: bump 6.x to latest HEAD
This commit is contained in:
parent
3bd4d058ca
commit
4f1774d9f9
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -1,48 +0,0 @@
|
||||
From 8680ecfcb4570e5f68a7b1bc237dfdfcf65b389e Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
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 <dave.stevenson@raspberrypi.com>
|
||||
---
|
||||
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;
|
||||
@ -1,98 +0,0 @@
|
||||
From 7e58b9c99676d641ef76edd9c097f1c3c4e6c464 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
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 <dave.stevenson@raspberrypi.com>
|
||||
---
|
||||
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);
|
||||
@ -1,125 +0,0 @@
|
||||
From 9989fcd49c52500a2bf1f6d49411690dec45d2dc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= <marko.makela@iki.fi>
|
||||
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 <shi05275@163.com>.
|
||||
|
||||
Link: https://lore.kernel.org/all/20231220221724.3822-4-ansuelsmth@gmail.com/
|
||||
Signed-off-by: Marko Mäkelä <marko.makela@iki.fi>
|
||||
Tested-by: Marko Mäkelä <marko.makela@iki.fi>
|
||||
---
|
||||
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,
|
||||
},
|
||||
};
|
||||
|
||||
Loading…
Reference in New Issue
Block a user