handled += cx23885_video_irq(dev, vida_status);
 
        if (pci_status & PCI_MSK_IR) {
-               v4l2_subdev_call(dev->sd_ir, ir, interrupt_service_routine,
+               v4l2_subdev_call(dev->sd_ir, core, interrupt_service_routine,
                                 pci_status, &ir_handled);
                if (ir_handled)
                        handled++;
 
        .g_register = cx23888_ir_g_register,
        .s_register = cx23888_ir_s_register,
 #endif
+       .interrupt_service_routine = cx23888_ir_irq_handler,
 };
 
 static const struct v4l2_subdev_ir_ops cx23888_ir_ir_ops = {
-       .interrupt_service_routine = cx23888_ir_irq_handler,
-
        .rx_read = cx23888_ir_rx_read,
        .rx_g_parameters = cx23888_ir_rx_g_parameters,
        .rx_s_parameters = cx23888_ir_rx_s_parameters,
 
 
    s_power: puts subdevice in power saving mode (on == 0) or normal operation
        mode (on == 1).
+
+   interrupt_service_routine: Called by the bridge chip's interrupt service
+       handler, when an interrupt status has be raised due to this subdev,
+       so that this subdev can handle the details.  It may schedule work to be
+       performed later.  It must not sleep.  *Called from an IRQ context*.
  */
 struct v4l2_subdev_core_ops {
        int (*g_chip_ident)(struct v4l2_subdev *sd, struct v4l2_dbg_chip_ident *chip);
        int (*s_register)(struct v4l2_subdev *sd, struct v4l2_dbg_register *reg);
 #endif
        int (*s_power)(struct v4l2_subdev *sd, int on);
+       int (*interrupt_service_routine)(struct v4l2_subdev *sd,
+                                               u32 status, bool *handled);
 };
 
 /* s_mode: switch the tuner to a specific tuner mode. Replacement of s_radio.
 };
 
 /*
-   interrupt_service_routine: Called by the bridge chip's interrupt service
-       handler, when an IR interrupt status has be raised due to this subdev,
-       so that this subdev can handle the details.  It may schedule work to be
-       performed later.  It must not sleep.  *Called from an IRQ context*.
-
    [rt]x_g_parameters: Get the current operating parameters and state of the
        the IR receiver or transmitter.
 
 };
 
 struct v4l2_subdev_ir_ops {
-       /* Common to receiver and transmitter */
-       int (*interrupt_service_routine)(struct v4l2_subdev *sd,
-                                               u32 status, bool *handled);
-
        /* Receiver */
        int (*rx_read)(struct v4l2_subdev *sd, u8 *buf, size_t count,
                                ssize_t *num);