On Thu Mar 12 16:35:30 2026 -0500, Bradford Love wrote:
> 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 <[email protected]>
> Signed-off-by: Hans Verkuil <[email protected]>

Patch committed.

Thanks,
Hans Verkuil

 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;
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to