diff options
-rw-r--r-- | drivers/media/video/cx23885/cx23885-core.c | 2 | ||||
-rw-r--r-- | drivers/media/video/cx23885/cx23888-ir.c | 3 | ||||
-rw-r--r-- | include/media/v4l2-subdev.h | 16 |
3 files changed, 9 insertions, 12 deletions
diff --git a/drivers/media/video/cx23885/cx23885-core.c b/drivers/media/video/cx23885/cx23885-core.c index ff76f64edac1..a74c0ab859ed 100644 --- a/drivers/media/video/cx23885/cx23885-core.c +++ b/drivers/media/video/cx23885/cx23885-core.c | |||
@@ -1765,7 +1765,7 @@ static irqreturn_t cx23885_irq(int irq, void *dev_id) | |||
1765 | handled += cx23885_video_irq(dev, vida_status); | 1765 | handled += cx23885_video_irq(dev, vida_status); |
1766 | 1766 | ||
1767 | if (pci_status & PCI_MSK_IR) { | 1767 | if (pci_status & PCI_MSK_IR) { |
1768 | v4l2_subdev_call(dev->sd_ir, ir, interrupt_service_routine, | 1768 | v4l2_subdev_call(dev->sd_ir, core, interrupt_service_routine, |
1769 | pci_status, &ir_handled); | 1769 | pci_status, &ir_handled); |
1770 | if (ir_handled) | 1770 | if (ir_handled) |
1771 | handled++; | 1771 | handled++; |
diff --git a/drivers/media/video/cx23885/cx23888-ir.c b/drivers/media/video/cx23885/cx23888-ir.c index 28ca90ff223c..51f21636e639 100644 --- a/drivers/media/video/cx23885/cx23888-ir.c +++ b/drivers/media/video/cx23885/cx23888-ir.c | |||
@@ -1126,11 +1126,10 @@ static const struct v4l2_subdev_core_ops cx23888_ir_core_ops = { | |||
1126 | .g_register = cx23888_ir_g_register, | 1126 | .g_register = cx23888_ir_g_register, |
1127 | .s_register = cx23888_ir_s_register, | 1127 | .s_register = cx23888_ir_s_register, |
1128 | #endif | 1128 | #endif |
1129 | .interrupt_service_routine = cx23888_ir_irq_handler, | ||
1129 | }; | 1130 | }; |
1130 | 1131 | ||
1131 | static const struct v4l2_subdev_ir_ops cx23888_ir_ir_ops = { | 1132 | static const struct v4l2_subdev_ir_ops cx23888_ir_ir_ops = { |
1132 | .interrupt_service_routine = cx23888_ir_irq_handler, | ||
1133 | |||
1134 | .rx_read = cx23888_ir_rx_read, | 1133 | .rx_read = cx23888_ir_rx_read, |
1135 | .rx_g_parameters = cx23888_ir_rx_g_parameters, | 1134 | .rx_g_parameters = cx23888_ir_rx_g_parameters, |
1136 | .rx_s_parameters = cx23888_ir_rx_s_parameters, | 1135 | .rx_s_parameters = cx23888_ir_rx_s_parameters, |
diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h index a780cca185fd..bacd52568ef9 100644 --- a/include/media/v4l2-subdev.h +++ b/include/media/v4l2-subdev.h | |||
@@ -131,6 +131,11 @@ struct v4l2_subdev_io_pin_config { | |||
131 | 131 | ||
132 | s_power: puts subdevice in power saving mode (on == 0) or normal operation | 132 | s_power: puts subdevice in power saving mode (on == 0) or normal operation |
133 | mode (on == 1). | 133 | mode (on == 1). |
134 | |||
135 | interrupt_service_routine: Called by the bridge chip's interrupt service | ||
136 | handler, when an interrupt status has be raised due to this subdev, | ||
137 | so that this subdev can handle the details. It may schedule work to be | ||
138 | performed later. It must not sleep. *Called from an IRQ context*. | ||
134 | */ | 139 | */ |
135 | struct v4l2_subdev_core_ops { | 140 | struct v4l2_subdev_core_ops { |
136 | int (*g_chip_ident)(struct v4l2_subdev *sd, struct v4l2_dbg_chip_ident *chip); | 141 | int (*g_chip_ident)(struct v4l2_subdev *sd, struct v4l2_dbg_chip_ident *chip); |
@@ -156,6 +161,8 @@ struct v4l2_subdev_core_ops { | |||
156 | int (*s_register)(struct v4l2_subdev *sd, struct v4l2_dbg_register *reg); | 161 | int (*s_register)(struct v4l2_subdev *sd, struct v4l2_dbg_register *reg); |
157 | #endif | 162 | #endif |
158 | int (*s_power)(struct v4l2_subdev *sd, int on); | 163 | int (*s_power)(struct v4l2_subdev *sd, int on); |
164 | int (*interrupt_service_routine)(struct v4l2_subdev *sd, | ||
165 | u32 status, bool *handled); | ||
159 | }; | 166 | }; |
160 | 167 | ||
161 | /* s_mode: switch the tuner to a specific tuner mode. Replacement of s_radio. | 168 | /* s_mode: switch the tuner to a specific tuner mode. Replacement of s_radio. |
@@ -330,11 +337,6 @@ struct v4l2_subdev_sensor_ops { | |||
330 | }; | 337 | }; |
331 | 338 | ||
332 | /* | 339 | /* |
333 | interrupt_service_routine: Called by the bridge chip's interrupt service | ||
334 | handler, when an IR interrupt status has be raised due to this subdev, | ||
335 | so that this subdev can handle the details. It may schedule work to be | ||
336 | performed later. It must not sleep. *Called from an IRQ context*. | ||
337 | |||
338 | [rt]x_g_parameters: Get the current operating parameters and state of the | 340 | [rt]x_g_parameters: Get the current operating parameters and state of the |
339 | the IR receiver or transmitter. | 341 | the IR receiver or transmitter. |
340 | 342 | ||
@@ -392,10 +394,6 @@ struct v4l2_subdev_ir_parameters { | |||
392 | }; | 394 | }; |
393 | 395 | ||
394 | struct v4l2_subdev_ir_ops { | 396 | struct v4l2_subdev_ir_ops { |
395 | /* Common to receiver and transmitter */ | ||
396 | int (*interrupt_service_routine)(struct v4l2_subdev *sd, | ||
397 | u32 status, bool *handled); | ||
398 | |||
399 | /* Receiver */ | 397 | /* Receiver */ |
400 | int (*rx_read)(struct v4l2_subdev *sd, u8 *buf, size_t count, | 398 | int (*rx_read)(struct v4l2_subdev *sd, u8 *buf, size_t count, |
401 | ssize_t *num); | 399 | ssize_t *num); |