* [PATCH 01/11] si2157: Analog format fixes
2026-03-12 21:35 [PATCH 00/11] Assorted DVB and TV patches Bradford Love
@ 2026-03-12 21:35 ` Bradford Love
2026-03-12 21:35 ` [PATCH 02/11] cx25840: Fix NTSC-J, PAL-N, and SECAM standards Bradford Love
` (10 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: Bradford Love @ 2026-03-12 21:35 UTC (permalink / raw)
To: linux-media; +Cc: Bradford Love
Updates to support PAL-N and PAL-Nc
Verifies PAL-I and PAL-DK standards are working
Fixes and verifies SECAM-L now works
Signed-off-by: Bradford Love <brad@nextdimension.cc>
---
drivers/media/tuners/si2157.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/drivers/media/tuners/si2157.c b/drivers/media/tuners/si2157.c
index 4ca42114da8a..b041cd854732 100644
--- a/drivers/media/tuners/si2157.c
+++ b/drivers/media/tuners/si2157.c
@@ -638,20 +638,27 @@ static int si2157_set_analog_params(struct dvb_frontend *fe,
color = 0x10;
}
}
- } else if (params->std & V4L2_STD_MN) {
+ } else if (params->std & (V4L2_STD_MN | V4L2_STD_NTSC_443)) {
std = "MN";
bandwidth = 6000000;
if_frequency = 5400000;
system = 2;
+ if (params->std & V4L2_STD_PAL_N) {
+ std = "palN";
+ color = 0x10;
+ } else if (params->std & V4L2_STD_PAL_Nc) {
+ std = "palNc";
+ color = 0x10;
+ }
} else if (params->std & V4L2_STD_PAL_I) {
std = "palI";
bandwidth = 8000000;
- if_frequency = 7250000; /* TODO: does not work yet */
+ if_frequency = 7250000;
system = 4;
} else if (params->std & V4L2_STD_DK) {
std = "palDK";
bandwidth = 8000000;
- if_frequency = 6900000; /* TODO: does not work yet */
+ if_frequency = 6900000;
system = 5;
if (params->std & V4L2_STD_SECAM_DK) {
std = "secamDK";
@@ -660,7 +667,7 @@ static int si2157_set_analog_params(struct dvb_frontend *fe,
} else if (params->std & V4L2_STD_SECAM_L) {
std = "secamL";
bandwidth = 8000000;
- if_frequency = 6750000; /* TODO: untested */
+ if_frequency = 6900000;
system = 6;
color = 0x10;
} else if (params->std & V4L2_STD_SECAM_LC) {
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* [PATCH 02/11] cx25840: Fix NTSC-J, PAL-N, and SECAM standards
2026-03-12 21:35 [PATCH 00/11] Assorted DVB and TV patches Bradford Love
2026-03-12 21:35 ` [PATCH 01/11] si2157: Analog format fixes Bradford Love
@ 2026-03-12 21:35 ` Bradford Love
2026-03-12 21:35 ` [PATCH 03/11] xc5000: Add rf strength function Bradford Love
` (9 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: Bradford Love @ 2026-03-12 21:35 UTC (permalink / raw)
To: linux-media; +Cc: Bradford Love
Formats did not correctly decode prior.
Modifications are based off cx25840 datasheet.
Signed-off-by: Bradford Love <brad@nextdimension.cc>
---
drivers/media/i2c/cx25840/cx25840-core.c | 29 ++++++++++++++++++++++--
1 file changed, 27 insertions(+), 2 deletions(-)
diff --git a/drivers/media/i2c/cx25840/cx25840-core.c b/drivers/media/i2c/cx25840/cx25840-core.c
index a86306304330..69d5cc648c0f 100644
--- a/drivers/media/i2c/cx25840/cx25840-core.c
+++ b/drivers/media/i2c/cx25840/cx25840-core.c
@@ -1652,10 +1652,14 @@ static int set_v4lstd(struct i2c_client *client)
struct cx25840_state *state = to_state(i2c_get_clientdata(client));
u8 fmt = 0; /* zero is autodetect */
u8 pal_m = 0;
+ u8 pal_n = 0;
+ u8 ntsc_j = 0;
+ u8 tmp_reg = 0;
/* First tests should be against specific std */
if (state->std == V4L2_STD_NTSC_M_JP) {
fmt = 0x2;
+ ntsc_j = 0x80;
} else if (state->std == V4L2_STD_NTSC_443) {
fmt = 0x3;
} else if (state->std == V4L2_STD_PAL_M) {
@@ -1663,6 +1667,7 @@ static int set_v4lstd(struct i2c_client *client)
fmt = 0x5;
} else if (state->std == V4L2_STD_PAL_N) {
fmt = 0x6;
+ pal_n = 0x40;
} else if (state->std == V4L2_STD_PAL_Nc) {
fmt = 0x7;
} else if (state->std == V4L2_STD_PAL_60) {
@@ -1689,10 +1694,30 @@ static int set_v4lstd(struct i2c_client *client)
/* Set format to NTSC-M */
cx25840_and_or(client, 0x400, ~0xf, 1);
/* Turn off LCOMB */
- cx25840_and_or(client, 0x47b, ~6, 0);
+ cx25840_and_or(client, 0x47b, ~0x6, 0);
+ } else if (fmt == 0xc) { /* SECAM - Step 9c - toggle CKILLEN */
+ tmp_reg = cx25840_read(client, 0x401);
+ cx25840_and_or(client, 0x401, ~0x20, tmp_reg & 0x20 ? 0x00 : 0x20);
+ cx25840_and_or(client, 0x401, ~0x20, tmp_reg & 0x20 ? 0x20 : 0x00);
}
+
cx25840_and_or(client, 0x400, ~0xf, fmt);
- cx25840_and_or(client, 0x403, ~0x3, pal_m);
+
+ if (fmt >= 4 && fmt < 8) {
+ tmp_reg = cx25840_read(client, 0x401);
+ cx25840_and_or(client, 0x401, ~0x40, tmp_reg & 0x40 ? 0x00 : 0x40); /* CAGCEN */
+ cx25840_and_or(client, 0x401, ~0x40, tmp_reg & 0x40 ? 0x40 : 0x00);
+ cx25840_and_or(client, 0x401, ~0x20, tmp_reg & 0x20 ? 0x00 : 0x20); /* CKILLEN */
+ cx25840_and_or(client, 0x401, ~0x20, tmp_reg & 0x20 ? 0x20 : 0x00);
+ }
+
+ if (pal_m)
+ cx25840_and_or(client, 0x403, ~0x3, pal_m);
+ else if (pal_n) /* cx25840 datasheet table 3-19 */
+ cx25840_and_or(client, 0x403, ~0x40, pal_n);
+ else if (ntsc_j) /* cx25840 datasheet table 3-19 */
+ cx25840_and_or(client, 0x403, ~0x80, ntsc_j);
+
if (is_cx23888(state))
cx23888_std_setup(client);
else
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* [PATCH 03/11] xc5000: Add rf strength function
2026-03-12 21:35 [PATCH 00/11] Assorted DVB and TV patches Bradford Love
2026-03-12 21:35 ` [PATCH 01/11] si2157: Analog format fixes Bradford Love
2026-03-12 21:35 ` [PATCH 02/11] cx25840: Fix NTSC-J, PAL-N, and SECAM standards Bradford Love
@ 2026-03-12 21:35 ` Bradford Love
2026-03-12 21:35 ` [PATCH 04/11] cx231xx: Fix AGC levels for NTSC-M Bradford Love
` (8 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: Bradford Love @ 2026-03-12 21:35 UTC (permalink / raw)
To: linux-media; +Cc: Bradford Love
Without a rf strength function implemented, analog lock
cannot be detected by standardized command line tools.
Signed-off-by: Bradford Love <brad@nextdimension.cc>
---
drivers/media/tuners/xc5000.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/drivers/media/tuners/xc5000.c b/drivers/media/tuners/xc5000.c
index a28481edd22e..d3eb7e19bf2c 100644
--- a/drivers/media/tuners/xc5000.c
+++ b/drivers/media/tuners/xc5000.c
@@ -1333,6 +1333,16 @@ static int xc5000_set_config(struct dvb_frontend *fe, void *priv_cfg)
}
+static int xc5000_get_rf_strength(struct dvb_frontend *fe, u16 *rssi)
+{
+ struct xc5000_priv *priv = fe->tuner_priv;
+
+ dprintk(1, "%s()\n", __func__);
+
+ return xc_get_lock_status(priv, rssi);
+}
+
+
static const struct dvb_tuner_ops xc5000_tuner_ops = {
.info = {
.name = "Xceive XC5000",
@@ -1353,7 +1363,8 @@ static const struct dvb_tuner_ops xc5000_tuner_ops = {
.get_frequency = xc5000_get_frequency,
.get_if_frequency = xc5000_get_if_frequency,
.get_bandwidth = xc5000_get_bandwidth,
- .get_status = xc5000_get_status
+ .get_status = xc5000_get_status,
+ .get_rf_strength = xc5000_get_rf_strength,
};
struct dvb_frontend *xc5000_attach(struct dvb_frontend *fe,
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* [PATCH 04/11] cx231xx: Fix AGC levels for NTSC-M
2026-03-12 21:35 [PATCH 00/11] Assorted DVB and TV patches Bradford Love
` (2 preceding siblings ...)
2026-03-12 21:35 ` [PATCH 03/11] xc5000: Add rf strength function Bradford Love
@ 2026-03-12 21:35 ` Bradford Love
2026-03-12 21:35 ` [PATCH 05/11] au0828: Fix green screen in analog Bradford Love
` (7 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: Bradford Love @ 2026-03-12 21:35 UTC (permalink / raw)
To: linux-media; +Cc: Bradford Love
Windows uses the implemented command sequence to set AGC for NTSC-M.
The previous Linux values work, mostly, but on some embedded
platforms NTSC-M is very unstable. The Windows default values
completely fix any signal stability issues and produce clear iamge.
Signed-off-by: Bradford Love <brad@nextdimension.cc>
---
drivers/media/usb/cx231xx/cx231xx-avcore.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/media/usb/cx231xx/cx231xx-avcore.c b/drivers/media/usb/cx231xx/cx231xx-avcore.c
index 1cfec76b72f3..0a5c635da040 100644
--- a/drivers/media/usb/cx231xx/cx231xx-avcore.c
+++ b/drivers/media/usb/cx231xx/cx231xx-avcore.c
@@ -2027,10 +2027,9 @@ int cx231xx_dif_set_standard(struct cx231xx *dev, u32 standard)
status = vid_blk_write_word(dev, DIF_SRC_GAIN_CONTROL,
0x000035e8);
- status = vid_blk_write_word(dev, DIF_AGC_CTRL_IF, 0xC2262600);
- status = vid_blk_write_word(dev, DIF_AGC_CTRL_INT,
- 0xC2262600);
- status = vid_blk_write_word(dev, DIF_AGC_CTRL_RF, 0xC2262600);
+ status = vid_blk_write_word(dev, DIF_AGC_CTRL_IF, 0xC2262600);
+ status = vid_blk_write_word(dev, DIF_AGC_CTRL_INT, 0xC2260000);
+ status = vid_blk_write_word(dev, DIF_AGC_CTRL_RF, 0xC2260000);
/* Save the Spec Inversion value */
dif_misc_ctrl_value &= FLD_DIF_SPEC_INV;
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* [PATCH 05/11] au0828: Fix green screen in analog
2026-03-12 21:35 [PATCH 00/11] Assorted DVB and TV patches Bradford Love
` (3 preceding siblings ...)
2026-03-12 21:35 ` [PATCH 04/11] cx231xx: Fix AGC levels for NTSC-M Bradford Love
@ 2026-03-12 21:35 ` Bradford Love
2026-03-17 9:25 ` Hans Verkuil
2026-03-17 17:28 ` [PATCH v2] media: " Bradford Love
2026-03-12 21:35 ` [PATCH 06/11] si2168: Fix i2c command timeout on embedded platforms Bradford Love
` (6 subsequent siblings)
11 siblings, 2 replies; 19+ messages in thread
From: Bradford Love @ 2026-03-12 21:35 UTC (permalink / raw)
To: linux-media; +Cc: Bradford Love
When the driver was converted to VB2 the original function to fix
green frame detection was removed and a default vb2 dqbuf function
was used instead. This vb2 dqbuf function leads to green frames not
being detected and correupting stream captures.
The vidioc_dqbuf function checks the greenscreen flag, and, if set
resets the stream to discard the green frame and decode a real frame.
Signed-off-by: Bradford Love <brad@nextdimension.cc>
---
drivers/media/usb/au0828/au0828-video.c | 30 +++++++++++++++++++++++--
1 file changed, 28 insertions(+), 2 deletions(-)
diff --git a/drivers/media/usb/au0828/au0828-video.c b/drivers/media/usb/au0828/au0828-video.c
index fbaa542c8259..f65f15b1d92a 100644
--- a/drivers/media/usb/au0828/au0828-video.c
+++ b/drivers/media/usb/au0828/au0828-video.c
@@ -1671,6 +1671,32 @@ static int vidioc_log_status(struct file *file, void *fh)
return 0;
}
+static int vidioc_dqbuf(struct file *file, void *priv, struct v4l2_buffer *b)
+{
+ struct video_device *vdev = video_devdata(file);
+ struct au0828_dev *dev = video_drvdata(file);
+ int rc;
+
+ rc = check_dev(dev);
+ if (rc < 0)
+ return rc;
+
+ /* Workaround for a bug in the au0828 hardware design that
+ * sometimes results in the colorspace being inverted
+ */
+ if (dev->greenscreen_detected == 1) {
+ dprintk(1, "Detected green frame. Resetting stream...\n");
+ au0828_analog_stream_reset(dev);
+ dev->greenscreen_detected = 0;
+ }
+
+ if (vdev->queue->owner && vdev->queue->owner != file->private_data)
+ return -EBUSY;
+
+ return vb2_dqbuf(vdev->queue, b, file->f_flags & O_NONBLOCK);
+}
+
+
void au0828_v4l2_suspend(struct au0828_dev *dev)
{
struct urb *urb;
@@ -1764,8 +1790,8 @@ static const struct v4l2_ioctl_ops video_ioctl_ops = {
.vidioc_prepare_buf = vb2_ioctl_prepare_buf,
.vidioc_querybuf = vb2_ioctl_querybuf,
.vidioc_qbuf = vb2_ioctl_qbuf,
- .vidioc_dqbuf = vb2_ioctl_dqbuf,
- .vidioc_expbuf = vb2_ioctl_expbuf,
+ .vidioc_dqbuf = vidioc_dqbuf,
+ .vidioc_expbuf = vb2_ioctl_expbuf,
.vidioc_s_std = vidioc_s_std,
.vidioc_g_std = vidioc_g_std,
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* Re: [PATCH 05/11] au0828: Fix green screen in analog
2026-03-12 21:35 ` [PATCH 05/11] au0828: Fix green screen in analog Bradford Love
@ 2026-03-17 9:25 ` Hans Verkuil
2026-03-17 17:28 ` [PATCH v2] media: " Bradford Love
1 sibling, 0 replies; 19+ messages in thread
From: Hans Verkuil @ 2026-03-17 9:25 UTC (permalink / raw)
To: Bradford Love, linux-media
On 12/03/2026 22:35, Bradford Love wrote:
> When the driver was converted to VB2 the original function to fix
> green frame detection was removed and a default vb2 dqbuf function
> was used instead. This vb2 dqbuf function leads to green frames not
> being detected and correupting stream captures.
>
> The vidioc_dqbuf function checks the greenscreen flag, and, if set
> resets the stream to discard the green frame and decode a real frame.
>
> Signed-off-by: Bradford Love <brad@nextdimension.cc>
> ---
> drivers/media/usb/au0828/au0828-video.c | 30 +++++++++++++++++++++++--
> 1 file changed, 28 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/media/usb/au0828/au0828-video.c b/drivers/media/usb/au0828/au0828-video.c
> index fbaa542c8259..f65f15b1d92a 100644
> --- a/drivers/media/usb/au0828/au0828-video.c
> +++ b/drivers/media/usb/au0828/au0828-video.c
> @@ -1671,6 +1671,32 @@ static int vidioc_log_status(struct file *file, void *fh)
> return 0;
> }
>
> +static int vidioc_dqbuf(struct file *file, void *priv, struct v4l2_buffer *b)
> +{
> + struct video_device *vdev = video_devdata(file);
> + struct au0828_dev *dev = video_drvdata(file);
> + int rc;
> +
> + rc = check_dev(dev);
> + if (rc < 0)
> + return rc;
> +
> + /* Workaround for a bug in the au0828 hardware design that
> + * sometimes results in the colorspace being inverted
> + */
> + if (dev->greenscreen_detected == 1) {
> + dprintk(1, "Detected green frame. Resetting stream...\n");
> + au0828_analog_stream_reset(dev);
> + dev->greenscreen_detected = 0;
> + }
> +
> + if (vdev->queue->owner && vdev->queue->owner != file->private_data)
> + return -EBUSY;
> +
> + return vb2_dqbuf(vdev->queue, b, file->f_flags & O_NONBLOCK);
Please replace those last 4 lines with:
return vb2_ioctl_dqbuf(file, priv, b);
It's cleaner that way.
Regards,
Hans
> +}
> +
> +
> void au0828_v4l2_suspend(struct au0828_dev *dev)
> {
> struct urb *urb;
> @@ -1764,8 +1790,8 @@ static const struct v4l2_ioctl_ops video_ioctl_ops = {
> .vidioc_prepare_buf = vb2_ioctl_prepare_buf,
> .vidioc_querybuf = vb2_ioctl_querybuf,
> .vidioc_qbuf = vb2_ioctl_qbuf,
> - .vidioc_dqbuf = vb2_ioctl_dqbuf,
> - .vidioc_expbuf = vb2_ioctl_expbuf,
> + .vidioc_dqbuf = vidioc_dqbuf,
> + .vidioc_expbuf = vb2_ioctl_expbuf,
>
> .vidioc_s_std = vidioc_s_std,
> .vidioc_g_std = vidioc_g_std,
^ permalink raw reply [flat|nested] 19+ messages in thread* [PATCH v2] media: au0828: Fix green screen in analog
2026-03-12 21:35 ` [PATCH 05/11] au0828: Fix green screen in analog Bradford Love
2026-03-17 9:25 ` Hans Verkuil
@ 2026-03-17 17:28 ` Bradford Love
2026-03-17 21:07 ` [PATCH v3] " Bradford Love
2026-03-19 7:34 ` [PATCH v2] " kernel test robot
1 sibling, 2 replies; 19+ messages in thread
From: Bradford Love @ 2026-03-17 17:28 UTC (permalink / raw)
To: linux-media, hverkuil+cisco; +Cc: Bradford Love
When the driver was converted to VB2 the original function to fix
green frame detection was removed and a default vb2 dqbuf function
was used instead. This vb2 dqbuf function leads to green frames not
being detected and correupting stream captures.
The vidioc_dqbuf function checks the greenscreen flag, and, if set
resets the stream to discard the green frame and decode a real frame.
Signed-off-by: Bradford Love <brad@nextdimension.cc>
---
Changes since v1:
- swtiched to called vb2_ioctl_dqbuf directly after checking green screen
drivers/media/usb/au0828/au0828-video.c | 27 +++++++++++++++++++++++--
1 file changed, 25 insertions(+), 2 deletions(-)
diff --git a/drivers/media/usb/au0828/au0828-video.c b/drivers/media/usb/au0828/au0828-video.c
index fbaa542c8259..35cb97cac91f 100644
--- a/drivers/media/usb/au0828/au0828-video.c
+++ b/drivers/media/usb/au0828/au0828-video.c
@@ -1671,6 +1671,29 @@ static int vidioc_log_status(struct file *file, void *fh)
return 0;
}
+static int vidioc_dqbuf(struct file *file, void *priv, struct v4l2_buffer *b)
+{
+ struct video_device *vdev = video_devdata(file);
+ struct au0828_dev *dev = video_drvdata(file);
+ int rc;
+
+ rc = check_dev(dev);
+ if (rc < 0)
+ return rc;
+
+ /* Workaround for a bug in the au0828 hardware design that
+ * sometimes results in the colorspace being inverted
+ */
+ if (dev->greenscreen_detected == 1) {
+ dprintk(1, "Detected green frame. Resetting stream...\n");
+ au0828_analog_stream_reset(dev);
+ dev->greenscreen_detected = 0;
+ }
+
+ return vb2_ioctl_dqbuf(file, priv, b);
+}
+
+
void au0828_v4l2_suspend(struct au0828_dev *dev)
{
struct urb *urb;
@@ -1764,8 +1787,8 @@ static const struct v4l2_ioctl_ops video_ioctl_ops = {
.vidioc_prepare_buf = vb2_ioctl_prepare_buf,
.vidioc_querybuf = vb2_ioctl_querybuf,
.vidioc_qbuf = vb2_ioctl_qbuf,
- .vidioc_dqbuf = vb2_ioctl_dqbuf,
- .vidioc_expbuf = vb2_ioctl_expbuf,
+ .vidioc_dqbuf = vidioc_dqbuf,
+ .vidioc_expbuf = vb2_ioctl_expbuf,
.vidioc_s_std = vidioc_s_std,
.vidioc_g_std = vidioc_g_std,
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* [PATCH v3] media: au0828: Fix green screen in analog
2026-03-17 17:28 ` [PATCH v2] media: " Bradford Love
@ 2026-03-17 21:07 ` Bradford Love
2026-03-19 7:34 ` [PATCH v2] " kernel test robot
1 sibling, 0 replies; 19+ messages in thread
From: Bradford Love @ 2026-03-17 21:07 UTC (permalink / raw)
To: linux-media, hverkuil+cisco; +Cc: Bradford Love
When the driver was converted to VB2 the original function to fix
green frame detection was removed and a default vb2 dqbuf function
was used instead. This vb2 dqbuf function leads to green frames not
being detected and correupting stream captures.
The vidioc_dqbuf function checks the greenscreen flag, and, if set
resets the stream to discard the green frame and decode a real frame.
Signed-off-by: Bradford Love <brad@nextdimension.cc>
---
Changes since v2:
- Fixed extra blank line
- removed now unused variable
Changes since v1:
- swtiched to called vb2_ioctl_dqbuf directly after checking green screen
drivers/media/usb/au0828/au0828-video.c | 25 +++++++++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
diff --git a/drivers/media/usb/au0828/au0828-video.c b/drivers/media/usb/au0828/au0828-video.c
index fbaa542c8259..3c53105f3d2b 100644
--- a/drivers/media/usb/au0828/au0828-video.c
+++ b/drivers/media/usb/au0828/au0828-video.c
@@ -1671,6 +1671,27 @@ static int vidioc_log_status(struct file *file, void *fh)
return 0;
}
+static int vidioc_dqbuf(struct file *file, void *priv, struct v4l2_buffer *b)
+{
+ struct au0828_dev *dev = video_drvdata(file);
+ int rc;
+
+ rc = check_dev(dev);
+ if (rc < 0)
+ return rc;
+
+ /* Workaround for a bug in the au0828 hardware design that
+ * sometimes results in the colorspace being inverted
+ */
+ if (dev->greenscreen_detected == 1) {
+ dprintk(1, "Detected green frame. Resetting stream...\n");
+ au0828_analog_stream_reset(dev);
+ dev->greenscreen_detected = 0;
+ }
+
+ return vb2_ioctl_dqbuf(file, priv, b);
+}
+
void au0828_v4l2_suspend(struct au0828_dev *dev)
{
struct urb *urb;
@@ -1764,8 +1785,8 @@ static const struct v4l2_ioctl_ops video_ioctl_ops = {
.vidioc_prepare_buf = vb2_ioctl_prepare_buf,
.vidioc_querybuf = vb2_ioctl_querybuf,
.vidioc_qbuf = vb2_ioctl_qbuf,
- .vidioc_dqbuf = vb2_ioctl_dqbuf,
- .vidioc_expbuf = vb2_ioctl_expbuf,
+ .vidioc_dqbuf = vidioc_dqbuf,
+ .vidioc_expbuf = vb2_ioctl_expbuf,
.vidioc_s_std = vidioc_s_std,
.vidioc_g_std = vidioc_g_std,
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* Re: [PATCH v2] media: au0828: Fix green screen in analog
2026-03-17 17:28 ` [PATCH v2] media: " Bradford Love
2026-03-17 21:07 ` [PATCH v3] " Bradford Love
@ 2026-03-19 7:34 ` kernel test robot
1 sibling, 0 replies; 19+ messages in thread
From: kernel test robot @ 2026-03-19 7:34 UTC (permalink / raw)
To: Bradford Love, linux-media, hverkuil+cisco
Cc: llvm, oe-kbuild-all, Bradford Love
Hi Bradford,
kernel test robot noticed the following build warnings:
url: https://github.com/intel-lab-lkp/linux/commits/UPDATE-20260318-180458/Bradford-Love/si2157-Analog-format-fixes/20260314-162352
base: the 5th patch of https://lore.kernel.org/r/20260312213532.2907276-6-brad%40nextdimension.cc
patch link: https://lore.kernel.org/r/20260317172820.2959499-1-brad%40nextdimension.cc
patch subject: [PATCH v2] media: au0828: Fix green screen in analog
config: hexagon-randconfig-001-20260319 (https://download.01.org/0day-ci/archive/20260319/202603191517.dqbfX1as-lkp@intel.com/config)
compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project 4abb927bacf37f18f6359a41639a6d1b3bffffb5)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260319/202603191517.dqbfX1as-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603191517.dqbfX1as-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/media/usb/au0828/au0828-video.c:1676:23: warning: unused variable 'vdev' [-Wunused-variable]
1676 | struct video_device *vdev = video_devdata(file);
| ^~~~
1 warning generated.
vim +/vdev +1676 drivers/media/usb/au0828/au0828-video.c
1673
1674 static int vidioc_dqbuf(struct file *file, void *priv, struct v4l2_buffer *b)
1675 {
> 1676 struct video_device *vdev = video_devdata(file);
1677 struct au0828_dev *dev = video_drvdata(file);
1678 int rc;
1679
1680 rc = check_dev(dev);
1681 if (rc < 0)
1682 return rc;
1683
1684 /* Workaround for a bug in the au0828 hardware design that
1685 * sometimes results in the colorspace being inverted
1686 */
1687 if (dev->greenscreen_detected == 1) {
1688 dprintk(1, "Detected green frame. Resetting stream...\n");
1689 au0828_analog_stream_reset(dev);
1690 dev->greenscreen_detected = 0;
1691 }
1692
1693 return vb2_ioctl_dqbuf(file, priv, b);
1694 }
1695
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 06/11] si2168: Fix i2c command timeout on embedded platforms
2026-03-12 21:35 [PATCH 00/11] Assorted DVB and TV patches Bradford Love
` (4 preceding siblings ...)
2026-03-12 21:35 ` [PATCH 05/11] au0828: Fix green screen in analog Bradford Love
@ 2026-03-12 21:35 ` Bradford Love
2026-03-12 21:35 ` [PATCH 07/11] si2168: fw 4.0-11 loses warm state during sleep Bradford Love
` (5 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: Bradford Love @ 2026-03-12 21:35 UTC (permalink / raw)
To: linux-media; +Cc: Bradford Love
On many embedded platforms i2c responses through USB are not returned
as quickly, plus constantly banging on the i2c master receive essentially
deadlocks the driver. Inserting a 3ms delay between i2c receive calls
and extending the timeout fixes all tested platforms.
Signed-off-by: Bradford Love <brad@nextdimension.cc>
---
drivers/media/dvb-frontends/si2168.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/media/dvb-frontends/si2168.c b/drivers/media/dvb-frontends/si2168.c
index c4bbcd127cac..9f2c503ec331 100644
--- a/drivers/media/dvb-frontends/si2168.c
+++ b/drivers/media/dvb-frontends/si2168.c
@@ -40,7 +40,7 @@ static int si2168_cmd_execute(struct i2c_client *client, struct si2168_cmd *cmd)
if (cmd->rlen) {
/* wait cmd execution terminate */
- #define TIMEOUT 70
+ #define TIMEOUT 140
timeout = jiffies + msecs_to_jiffies(TIMEOUT);
while (!time_after(jiffies, timeout)) {
ret = i2c_master_recv(client, cmd->args, cmd->rlen);
@@ -54,6 +54,8 @@ static int si2168_cmd_execute(struct i2c_client *client, struct si2168_cmd *cmd)
/* firmware ready? */
if ((cmd->args[0] >> 7) & 0x01)
break;
+
+ usleep_range(2500, 3500);
}
dev_dbg(&client->dev, "cmd execution took %d ms\n",
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* [PATCH 07/11] si2168: fw 4.0-11 loses warm state during sleep
2026-03-12 21:35 [PATCH 00/11] Assorted DVB and TV patches Bradford Love
` (5 preceding siblings ...)
2026-03-12 21:35 ` [PATCH 06/11] si2168: Fix i2c command timeout on embedded platforms Bradford Love
@ 2026-03-12 21:35 ` Bradford Love
2026-03-12 21:35 ` [PATCH 08/11] saa7164: Fix REV2 firmware filename Bradford Love
` (4 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: Bradford Love @ 2026-03-12 21:35 UTC (permalink / raw)
To: linux-media; +Cc: Bradford Love
Ignoring version 4.0-11 firmware leads to non functional devices
after sleep on all Hauppauge DVB devices containing the si2168 and
firwmare version 4.0-11.
Signed-off-by: Bradford Love <brad@nextdimension.cc>
---
drivers/media/dvb-frontends/si2168.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/media/dvb-frontends/si2168.c b/drivers/media/dvb-frontends/si2168.c
index 9f2c503ec331..91d959dddcb5 100644
--- a/drivers/media/dvb-frontends/si2168.c
+++ b/drivers/media/dvb-frontends/si2168.c
@@ -574,8 +574,8 @@ static int si2168_sleep(struct dvb_frontend *fe)
if (ret)
goto err;
- /* Firmware later than B 4.0-11 loses warm state during sleep */
- if (dev->version > ('B' << 24 | 4 << 16 | 0 << 8 | 11 << 0))
+ /* Firmware B 4.0-11 and later lose warm state during sleep */
+ if (dev->version >= ('B' << 24 | 4 << 16 | 0 << 8 | 11 << 0))
dev->warm = false;
cmd_init(&cmd, "\x13", 1, 0);
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* [PATCH 08/11] saa7164: Fix REV2 firmware filename
2026-03-12 21:35 [PATCH 00/11] Assorted DVB and TV patches Bradford Love
` (6 preceding siblings ...)
2026-03-12 21:35 ` [PATCH 07/11] si2168: fw 4.0-11 loses warm state during sleep Bradford Love
@ 2026-03-12 21:35 ` Bradford Love
2026-03-12 21:35 ` [PATCH 09/11] au0828: Add new Hauppauge HVR1265 and ImpactVCB-e Bradford Love
` (3 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: Bradford Love @ 2026-03-12 21:35 UTC (permalink / raw)
To: linux-media; +Cc: Bradford Love
The wrong firmware file is listed, leading to non functional devices
on REV2 models.
Signed-off-by: Bradford Love <brad@nextdimension.cc>
---
drivers/media/pci/saa7164/saa7164-fw.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/media/pci/saa7164/saa7164-fw.c b/drivers/media/pci/saa7164/saa7164-fw.c
index cc9f384f7f1e..341cef62452f 100644
--- a/drivers/media/pci/saa7164/saa7164-fw.c
+++ b/drivers/media/pci/saa7164/saa7164-fw.c
@@ -10,8 +10,8 @@
#include "saa7164.h"
-#define SAA7164_REV2_FIRMWARE "NXP7164-2010-03-10.1.fw"
-#define SAA7164_REV2_FIRMWARE_SIZE 4019072
+#define SAA7164_REV2_FIRMWARE "v4l-saa7164-1.0.2-3.fw"
+#define SAA7164_REV2_FIRMWARE_SIZE 4038864
#define SAA7164_REV3_FIRMWARE "NXP7164-2010-03-10.1.fw"
#define SAA7164_REV3_FIRMWARE_SIZE 4019072
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* [PATCH 09/11] au0828: Add new Hauppauge HVR1265 and ImpactVCB-e
2026-03-12 21:35 [PATCH 00/11] Assorted DVB and TV patches Bradford Love
` (7 preceding siblings ...)
2026-03-12 21:35 ` [PATCH 08/11] saa7164: Fix REV2 firmware filename Bradford Love
@ 2026-03-12 21:35 ` Bradford Love
2026-03-12 21:35 ` [PATCH 10/11] em28xx: Add a variety of DualHD usb id Bradford Love
` (2 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: Bradford Love @ 2026-03-12 21:35 UTC (permalink / raw)
To: linux-media; +Cc: Bradford Love
New HVR1265 and ImpactVCB-e devices are PCIe baords
with USB controller and essentially embedded
Hauppauge 950Q.
HVR1265 - digital+analog TV, S-Video, and audio inputs
ImpactVCB-e - Composite, S-Video, and audio inputs
This also fixes AU8522_COMPOSITE_CH4, which was missing
from video routing.
Signed-off-by: Bradford Love <brad@nextdimension.cc>
---
drivers/media/dvb-frontends/au8522_decoder.c | 1 +
drivers/media/usb/au0828/au0828-cards.c | 50 ++++++++++++++++++++
drivers/media/usb/au0828/au0828-cards.h | 2 +
drivers/media/usb/au0828/au0828-dvb.c | 1 +
drivers/media/usb/au0828/au0828-input.c | 1 +
5 files changed, 55 insertions(+)
diff --git a/drivers/media/dvb-frontends/au8522_decoder.c b/drivers/media/dvb-frontends/au8522_decoder.c
index 58c4c489bf97..58b959b272c6 100644
--- a/drivers/media/dvb-frontends/au8522_decoder.c
+++ b/drivers/media/dvb-frontends/au8522_decoder.c
@@ -567,6 +567,7 @@ static int au8522_s_video_routing(struct v4l2_subdev *sd,
case AU8522_COMPOSITE_CH1:
case AU8522_SVIDEO_CH13:
case AU8522_COMPOSITE_CH4_SIF:
+ case AU8522_COMPOSITE_CH4:
state->vid_input = input;
break;
default:
diff --git a/drivers/media/usb/au0828/au0828-cards.c b/drivers/media/usb/au0828/au0828-cards.c
index 9ee21f8bf6fa..9929ce5dcdcd 100644
--- a/drivers/media/usb/au0828/au0828-cards.c
+++ b/drivers/media/usb/au0828/au0828-cards.c
@@ -105,6 +105,46 @@ struct au0828_board au0828_boards[] = {
.tuner_addr = 0x60,
.i2c_clk_divider = AU0828_I2C_CLK_250KHZ,
},
+ [AU0828_BOARD_HAUPPAUGE_IMPACTVCBE] = {
+ .name = "Hauppauge Impact VCB-e",
+ .tuner_type = TUNER_ABSENT,
+ .i2c_clk_divider = AU0828_I2C_CLK_250KHZ,
+ .input = {
+ {
+ .type = AU0828_VMUX_COMPOSITE,
+ .vmux = AU8522_COMPOSITE_CH4,
+ .amux = AU8522_AUDIO_NONE,
+ .audio_setup = hvr950q_cs5340_audio,
+ },
+ {
+ .type = AU0828_VMUX_SVIDEO,
+ .vmux = AU8522_SVIDEO_CH13,
+ .amux = AU8522_AUDIO_NONE,
+ .audio_setup = hvr950q_cs5340_audio,
+ },
+ },
+ },
+ [AU0828_BOARD_HAUPPAUGE_HVR1265] = {
+ .name = "Hauppauge HVR1265",
+ .tuner_type = TUNER_XC5000,
+ .tuner_addr = 0x61,
+ .has_ir_i2c = 1,
+ .has_analog = 1,
+ .i2c_clk_divider = AU0828_I2C_CLK_250KHZ,
+ .input = {
+ {
+ .type = AU0828_VMUX_TELEVISION,
+ .vmux = AU8522_COMPOSITE_CH4_SIF,
+ .amux = AU8522_AUDIO_SIF,
+ },
+ {
+ .type = AU0828_VMUX_SVIDEO,
+ .vmux = AU8522_SVIDEO_CH13,
+ .amux = AU8522_AUDIO_NONE,
+ .audio_setup = hvr950q_cs5340_audio,
+ },
+ },
+ },
};
/* Tuner callback function for au0828 boards. Currently only needed
@@ -120,6 +160,8 @@ int au0828_tuner_callback(void *priv, int component, int command, int arg)
case AU0828_BOARD_HAUPPAUGE_HVR850:
case AU0828_BOARD_HAUPPAUGE_HVR950Q:
case AU0828_BOARD_HAUPPAUGE_HVR950Q_MXL:
+ case AU0828_BOARD_HAUPPAUGE_HVR1265:
+ case AU0828_BOARD_HAUPPAUGE_IMPACTVCBE:
case AU0828_BOARD_DVICO_FUSIONHDTV7:
if (command == 0) {
/* Tuner Reset Command from xc5000 */
@@ -190,6 +232,8 @@ void au0828_card_setup(struct au0828_dev *dev)
case AU0828_BOARD_HAUPPAUGE_HVR850:
case AU0828_BOARD_HAUPPAUGE_HVR950Q:
case AU0828_BOARD_HAUPPAUGE_HVR950Q_MXL:
+ case AU0828_BOARD_HAUPPAUGE_HVR1265:
+ case AU0828_BOARD_HAUPPAUGE_IMPACTVCBE:
case AU0828_BOARD_HAUPPAUGE_WOODBURY:
if (dev->i2c_rc == 0)
hauppauge_eeprom(dev, eeprom+0xa0);
@@ -248,6 +292,8 @@ void au0828_gpio_setup(struct au0828_dev *dev)
case AU0828_BOARD_HAUPPAUGE_HVR950Q:
case AU0828_BOARD_HAUPPAUGE_HVR950Q_MXL:
case AU0828_BOARD_HAUPPAUGE_WOODBURY:
+ case AU0828_BOARD_HAUPPAUGE_HVR1265:
+ case AU0828_BOARD_HAUPPAUGE_IMPACTVCBE:
/* GPIO's
* 4 - CS5340
* 5 - AU8522 Demodulator
@@ -340,6 +386,10 @@ struct usb_device_id au0828_usb_id_table[] = {
.driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q },
{ USB_DEVICE(0x2040, 0x7270),
.driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q },
+ { USB_DEVICE(0x2040, 0x72b0),
+ .driver_info = AU0828_BOARD_HAUPPAUGE_IMPACTVCBE },
+ { USB_DEVICE(0x2040, 0x72a0),
+ .driver_info = AU0828_BOARD_HAUPPAUGE_HVR1265 },
{ },
};
diff --git a/drivers/media/usb/au0828/au0828-cards.h b/drivers/media/usb/au0828/au0828-cards.h
index a9cdf85f98f5..a438aeb334a0 100644
--- a/drivers/media/usb/au0828/au0828-cards.h
+++ b/drivers/media/usb/au0828/au0828-cards.h
@@ -11,3 +11,5 @@
#define AU0828_BOARD_DVICO_FUSIONHDTV7 3
#define AU0828_BOARD_HAUPPAUGE_HVR950Q_MXL 4
#define AU0828_BOARD_HAUPPAUGE_WOODBURY 5
+#define AU0828_BOARD_HAUPPAUGE_IMPACTVCBE 6
+#define AU0828_BOARD_HAUPPAUGE_HVR1265 7
diff --git a/drivers/media/usb/au0828/au0828-dvb.c b/drivers/media/usb/au0828/au0828-dvb.c
index 5d0447ff7d06..31123e6f9fc3 100644
--- a/drivers/media/usb/au0828/au0828-dvb.c
+++ b/drivers/media/usb/au0828/au0828-dvb.c
@@ -571,6 +571,7 @@ int au0828_dvb_register(struct au0828_dev *dev)
switch (dev->boardnr) {
case AU0828_BOARD_HAUPPAUGE_HVR850:
case AU0828_BOARD_HAUPPAUGE_HVR950Q:
+ case AU0828_BOARD_HAUPPAUGE_HVR1265:
dvb->frontend = dvb_attach(au8522_attach,
&hauppauge_hvr950q_config,
&dev->i2c_adap);
diff --git a/drivers/media/usb/au0828/au0828-input.c b/drivers/media/usb/au0828/au0828-input.c
index 7dec1a360da6..319be7509c82 100644
--- a/drivers/media/usb/au0828/au0828-input.c
+++ b/drivers/media/usb/au0828/au0828-input.c
@@ -300,6 +300,7 @@ int au0828_rc_register(struct au0828_dev *dev)
if (dev->board.has_ir_i2c) { /* external i2c device */
switch (dev->boardnr) {
case AU0828_BOARD_HAUPPAUGE_HVR950Q:
+ case AU0828_BOARD_HAUPPAUGE_HVR1265:
rc->map_name = RC_MAP_HAUPPAUGE;
ir->get_key_i2c = au0828_get_key_au8522;
break;
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* [PATCH 10/11] em28xx: Add a variety of DualHD usb id
2026-03-12 21:35 [PATCH 00/11] Assorted DVB and TV patches Bradford Love
` (8 preceding siblings ...)
2026-03-12 21:35 ` [PATCH 09/11] au0828: Add new Hauppauge HVR1265 and ImpactVCB-e Bradford Love
@ 2026-03-12 21:35 ` Bradford Love
2026-03-12 21:35 ` [PATCH 11/11] em28xx: remove tuner type from Hauppauge DVB DualHD Bradford Love
2026-03-17 9:52 ` [PATCH 00/11] Assorted DVB and TV patches Hans Verkuil
11 siblings, 0 replies; 19+ messages in thread
From: Bradford Love @ 2026-03-12 21:35 UTC (permalink / raw)
To: linux-media; +Cc: Bradford Love
Include possible vid:pid combination of DualHD models
that are in the wild.
Signed-off-by: Bradford Love <brad@nextdimension.cc>
---
drivers/media/usb/em28xx/em28xx-cards.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/media/usb/em28xx/em28xx-cards.c b/drivers/media/usb/em28xx/em28xx-cards.c
index 59a2e4db75b7..2d19f8ecd685 100644
--- a/drivers/media/usb/em28xx/em28xx-cards.c
+++ b/drivers/media/usb/em28xx/em28xx-cards.c
@@ -2757,10 +2757,22 @@ struct usb_device_id em28xx_id_table[] = {
.driver_info = EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_DVB },
{ USB_DEVICE(0x2040, 0x8265),
.driver_info = EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_DVB },
+ { USB_DEVICE(0x2040, 0x8269),
+ .driver_info = EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_DVB },
+ { USB_DEVICE(0x2040, 0x8278),
+ .driver_info = EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_DVB },
{ USB_DEVICE(0x2040, 0x026d),
.driver_info = EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_01595 },
{ USB_DEVICE(0x2040, 0x826d),
.driver_info = EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_01595 },
+ { USB_DEVICE(0x2040, 0x826e),
+ .driver_info = EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_01595 },
+ { USB_DEVICE(0x2040, 0x826f),
+ .driver_info = EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_01595 },
+ { USB_DEVICE(0x2040, 0x8270),
+ .driver_info = EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_01595 },
+ { USB_DEVICE(0x2040, 0x8271),
+ .driver_info = EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_01595 },
{ USB_DEVICE(0x2040, 0x846d),
.driver_info = EM2874_BOARD_HAUPPAUGE_USB_QUADHD },
{ USB_DEVICE(0x0438, 0xb002),
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* [PATCH 11/11] em28xx: remove tuner type from Hauppauge DVB DualHD
2026-03-12 21:35 [PATCH 00/11] Assorted DVB and TV patches Bradford Love
` (9 preceding siblings ...)
2026-03-12 21:35 ` [PATCH 10/11] em28xx: Add a variety of DualHD usb id Bradford Love
@ 2026-03-12 21:35 ` Bradford Love
2026-03-17 9:52 ` [PATCH 00/11] Assorted DVB and TV patches Hans Verkuil
11 siblings, 0 replies; 19+ messages in thread
From: Bradford Love @ 2026-03-12 21:35 UTC (permalink / raw)
To: linux-media; +Cc: Bradford Love
This reverts a patch which was perhaps inadvertently added.
This was changed during the 5.15-rc4 merge. The faulty commit appears
lost in the pull request somehow, I cannot find it to check the
explanation.
commit c52e7b855b33 ("Merge tag 'v5.15-rc4' into media_tree")
There was nothing wrong with this device and no reason to moodify the
board profile. The DVB capabilities are added via dvb_module_probe.
Additionally, the device contains *zero* analog inputs, so I'm not
sure why one was added.
Signed-off-by: Bradford Love <brad@nextdimension.cc>
---
drivers/media/usb/em28xx/em28xx-cards.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/drivers/media/usb/em28xx/em28xx-cards.c b/drivers/media/usb/em28xx/em28xx-cards.c
index 2d19f8ecd685..d7075ebabceb 100644
--- a/drivers/media/usb/em28xx/em28xx-cards.c
+++ b/drivers/media/usb/em28xx/em28xx-cards.c
@@ -2522,17 +2522,12 @@ const struct em28xx_board em28xx_boards[] = {
.def_i2c_bus = 1,
.i2c_speed = EM28XX_I2C_CLK_WAIT_ENABLE |
EM28XX_I2C_FREQ_400_KHZ,
- .tuner_type = TUNER_SI2157,
+ .tuner_type = TUNER_ABSENT,
.tuner_gpio = hauppauge_dualhd_dvb,
.has_dvb = 1,
.has_dual_ts = 1,
.ir_codes = RC_MAP_HAUPPAUGE,
.leds = hauppauge_dualhd_leds,
- .input = { {
- .type = EM28XX_VMUX_COMPOSITE,
- .vmux = TVP5150_COMPOSITE1,
- .amux = EM28XX_AMUX_LINE_IN,
- } },
},
/*
* 2040:026d Hauppauge WinTV-dualHD (model 01595 - ATSC/QAM) Isoc.
--
2.35.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* Re: [PATCH 00/11] Assorted DVB and TV patches
2026-03-12 21:35 [PATCH 00/11] Assorted DVB and TV patches Bradford Love
` (10 preceding siblings ...)
2026-03-12 21:35 ` [PATCH 11/11] em28xx: remove tuner type from Hauppauge DVB DualHD Bradford Love
@ 2026-03-17 9:52 ` Hans Verkuil
2026-03-17 13:13 ` Hans Verkuil
11 siblings, 1 reply; 19+ messages in thread
From: Hans Verkuil @ 2026-03-17 9:52 UTC (permalink / raw)
To: Bradford Love, linux-media
Hi Brad,
Thank you for this cleanup series!
I'll take them all, except for the "au0828: Fix green screen in analog" patch,
which needs a v2. So no need to post a v2 of the whole series, just post a v2
of that au0828 patch.
Regards,
Hans
On 12/03/2026 22:35, Bradford Love wrote:
> Hello,
>
> Attached here is a series of accumlated fixes from integrations
> and deployments.
>
> The first five patches are related to fixing issues with a
> variety of analog video formats.
>
> The si2168 i2c timeout patch is something that has been found
> to be critical on a variety of ARM platforms and Nvidia SOC.
> Something in these platforms has USB i2c not consistently responding
> within the embedded deadline in the driver.
>
> There are two firmware fixes. With Hauppauge hardware fw 4.0-11 si2168
> devices definitely lose warm state and cannot function after sleep.
> The saa7164 REV2 firmware had an incorrect filename and has been fixed.
>
> Last up is adding some new Hauppauge USB id's and removing an invalid
> analog input from the Hauppauge DVB DualHD.
>
> Addressing checkpatch warnings:
> - 0001 palN is not misspelled
> - 0003 adding dprintk like driver already does
>
>
>
> Regards,
>
> Bradford
>
>
>
> Bradford Love (11):
> si2157: Analog format fixes
> cx25840: Fix NTSC-J, PAL-N, and SECAM standards
> xc5000: Add rf strength function
> cx231xx: Fix AGC levels for NTSC-M
> au0828: Fix green screen in analog
> si2168: Fix i2c command timeout on embedded platforms
> si2168: fw 4.0-11 loses warm state during sleep
> saa7164: Fix REV2 firmware filename
> au0828: Add new Hauppauge HVR1265 and ImpactVCB-e
> em28xx: Add a variety of DualHD usb id
> em28xx: remove tuner type from Hauppauge DVB DualHD
>
> drivers/media/dvb-frontends/au8522_decoder.c | 1 +
> drivers/media/dvb-frontends/si2168.c | 8 ++--
> drivers/media/i2c/cx25840/cx25840-core.c | 29 +++++++++++-
> drivers/media/pci/saa7164/saa7164-fw.c | 4 +-
> drivers/media/tuners/si2157.c | 15 ++++--
> drivers/media/tuners/xc5000.c | 13 ++++-
> drivers/media/usb/au0828/au0828-cards.c | 50 ++++++++++++++++++++
> drivers/media/usb/au0828/au0828-cards.h | 2 +
> drivers/media/usb/au0828/au0828-dvb.c | 1 +
> drivers/media/usb/au0828/au0828-input.c | 1 +
> drivers/media/usb/au0828/au0828-video.c | 30 +++++++++++-
> drivers/media/usb/cx231xx/cx231xx-avcore.c | 7 ++-
> drivers/media/usb/em28xx/em28xx-cards.c | 19 +++++---
> 13 files changed, 156 insertions(+), 24 deletions(-)
>
^ permalink raw reply [flat|nested] 19+ messages in thread* Re: [PATCH 00/11] Assorted DVB and TV patches
2026-03-17 9:52 ` [PATCH 00/11] Assorted DVB and TV patches Hans Verkuil
@ 2026-03-17 13:13 ` Hans Verkuil
2026-03-17 17:20 ` Bradford Love
0 siblings, 1 reply; 19+ messages in thread
From: Hans Verkuil @ 2026-03-17 13:13 UTC (permalink / raw)
To: Bradford Love, linux-media
On 17/03/2026 10:52, Hans Verkuil wrote:
> Hi Brad,
>
> Thank you for this cleanup series!
>
> I'll take them all, except for the "au0828: Fix green screen in analog" patch,
> which needs a v2. So no need to post a v2 of the whole series, just post a v2
> of that au0828 patch.
BTW, for future reference, please prefix media patches with "media: " in the Subject
line. I added it manually for these patches.
Regards,
Hans
>
> Regards,
>
> Hans
>
> On 12/03/2026 22:35, Bradford Love wrote:
>> Hello,
>>
>> Attached here is a series of accumlated fixes from integrations
>> and deployments.
>>
>> The first five patches are related to fixing issues with a
>> variety of analog video formats.
>>
>> The si2168 i2c timeout patch is something that has been found
>> to be critical on a variety of ARM platforms and Nvidia SOC.
>> Something in these platforms has USB i2c not consistently responding
>> within the embedded deadline in the driver.
>>
>> There are two firmware fixes. With Hauppauge hardware fw 4.0-11 si2168
>> devices definitely lose warm state and cannot function after sleep.
>> The saa7164 REV2 firmware had an incorrect filename and has been fixed.
>>
>> Last up is adding some new Hauppauge USB id's and removing an invalid
>> analog input from the Hauppauge DVB DualHD.
>>
>> Addressing checkpatch warnings:
>> - 0001 palN is not misspelled
>> - 0003 adding dprintk like driver already does
>>
>>
>>
>> Regards,
>>
>> Bradford
>>
>>
>>
>> Bradford Love (11):
>> si2157: Analog format fixes
>> cx25840: Fix NTSC-J, PAL-N, and SECAM standards
>> xc5000: Add rf strength function
>> cx231xx: Fix AGC levels for NTSC-M
>> au0828: Fix green screen in analog
>> si2168: Fix i2c command timeout on embedded platforms
>> si2168: fw 4.0-11 loses warm state during sleep
>> saa7164: Fix REV2 firmware filename
>> au0828: Add new Hauppauge HVR1265 and ImpactVCB-e
>> em28xx: Add a variety of DualHD usb id
>> em28xx: remove tuner type from Hauppauge DVB DualHD
>>
>> drivers/media/dvb-frontends/au8522_decoder.c | 1 +
>> drivers/media/dvb-frontends/si2168.c | 8 ++--
>> drivers/media/i2c/cx25840/cx25840-core.c | 29 +++++++++++-
>> drivers/media/pci/saa7164/saa7164-fw.c | 4 +-
>> drivers/media/tuners/si2157.c | 15 ++++--
>> drivers/media/tuners/xc5000.c | 13 ++++-
>> drivers/media/usb/au0828/au0828-cards.c | 50 ++++++++++++++++++++
>> drivers/media/usb/au0828/au0828-cards.h | 2 +
>> drivers/media/usb/au0828/au0828-dvb.c | 1 +
>> drivers/media/usb/au0828/au0828-input.c | 1 +
>> drivers/media/usb/au0828/au0828-video.c | 30 +++++++++++-
>> drivers/media/usb/cx231xx/cx231xx-avcore.c | 7 ++-
>> drivers/media/usb/em28xx/em28xx-cards.c | 19 +++++---
>> 13 files changed, 156 insertions(+), 24 deletions(-)
>>
>
>
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 00/11] Assorted DVB and TV patches
2026-03-17 13:13 ` Hans Verkuil
@ 2026-03-17 17:20 ` Bradford Love
0 siblings, 0 replies; 19+ messages in thread
From: Bradford Love @ 2026-03-17 17:20 UTC (permalink / raw)
To: Hans Verkuil; +Cc: linux-media
Hi Hans,
Thank you for grabbing these patches. I will generate a new au0828
patch and get that v2 sent out. I noticed the media: subject issue too
late for the first couple series I mailed in, but will add from now
on.
Regards,
Bradford
On Tue, Mar 17, 2026 at 8:14 AM Hans Verkuil <hverkuil+cisco@kernel.org> wrote:
>
> On 17/03/2026 10:52, Hans Verkuil wrote:
> > Hi Brad,
> >
> > Thank you for this cleanup series!
> >
> > I'll take them all, except for the "au0828: Fix green screen in analog" patch,
> > which needs a v2. So no need to post a v2 of the whole series, just post a v2
> > of that au0828 patch.
>
> BTW, for future reference, please prefix media patches with "media: " in the Subject
> line. I added it manually for these patches.
>
> Regards,
>
> Hans
>
> >
> > Regards,
> >
> > Hans
> >
> > On 12/03/2026 22:35, Bradford Love wrote:
> >> Hello,
> >>
> >> Attached here is a series of accumlated fixes from integrations
> >> and deployments.
> >>
> >> The first five patches are related to fixing issues with a
> >> variety of analog video formats.
> >>
> >> The si2168 i2c timeout patch is something that has been found
> >> to be critical on a variety of ARM platforms and Nvidia SOC.
> >> Something in these platforms has USB i2c not consistently responding
> >> within the embedded deadline in the driver.
> >>
> >> There are two firmware fixes. With Hauppauge hardware fw 4.0-11 si2168
> >> devices definitely lose warm state and cannot function after sleep.
> >> The saa7164 REV2 firmware had an incorrect filename and has been fixed.
> >>
> >> Last up is adding some new Hauppauge USB id's and removing an invalid
> >> analog input from the Hauppauge DVB DualHD.
> >>
> >> Addressing checkpatch warnings:
> >> - 0001 palN is not misspelled
> >> - 0003 adding dprintk like driver already does
> >>
> >>
> >>
> >> Regards,
> >>
> >> Bradford
> >>
> >>
> >>
> >> Bradford Love (11):
> >> si2157: Analog format fixes
> >> cx25840: Fix NTSC-J, PAL-N, and SECAM standards
> >> xc5000: Add rf strength function
> >> cx231xx: Fix AGC levels for NTSC-M
> >> au0828: Fix green screen in analog
> >> si2168: Fix i2c command timeout on embedded platforms
> >> si2168: fw 4.0-11 loses warm state during sleep
> >> saa7164: Fix REV2 firmware filename
> >> au0828: Add new Hauppauge HVR1265 and ImpactVCB-e
> >> em28xx: Add a variety of DualHD usb id
> >> em28xx: remove tuner type from Hauppauge DVB DualHD
> >>
> >> drivers/media/dvb-frontends/au8522_decoder.c | 1 +
> >> drivers/media/dvb-frontends/si2168.c | 8 ++--
> >> drivers/media/i2c/cx25840/cx25840-core.c | 29 +++++++++++-
> >> drivers/media/pci/saa7164/saa7164-fw.c | 4 +-
> >> drivers/media/tuners/si2157.c | 15 ++++--
> >> drivers/media/tuners/xc5000.c | 13 ++++-
> >> drivers/media/usb/au0828/au0828-cards.c | 50 ++++++++++++++++++++
> >> drivers/media/usb/au0828/au0828-cards.h | 2 +
> >> drivers/media/usb/au0828/au0828-dvb.c | 1 +
> >> drivers/media/usb/au0828/au0828-input.c | 1 +
> >> drivers/media/usb/au0828/au0828-video.c | 30 +++++++++++-
> >> drivers/media/usb/cx231xx/cx231xx-avcore.c | 7 ++-
> >> drivers/media/usb/em28xx/em28xx-cards.c | 19 +++++---
> >> 13 files changed, 156 insertions(+), 24 deletions(-)
> >>
> >
> >
>
^ permalink raw reply [flat|nested] 19+ messages in thread