[PATCH] Add remote control support for mantis
Sorry forgot signoff Signed-off-by: Christoph Pinkl --- drivers/media/dvb/mantis/hopper_cards.c|2 +- drivers/media/dvb/mantis/mantis_cards.c| 27 +++- drivers/media/dvb/mantis/mantis_common.h | 23 ++- drivers/media/dvb/mantis/mantis_input.c| 169 +++ drivers/media/dvb/mantis/mantis_input.h| 28 drivers/media/dvb/mantis/mantis_uart.c | 18 +-- drivers/media/dvb/mantis/mantis_vp1041.c | 20 +++ drivers/media/dvb/mantis/mantis_vp2033.c |4 + drivers/media/dvb/mantis/mantis_vp2040.c |4 + drivers/media/rc/keymaps/Makefile |3 + .../media/rc/keymaps/rc-terratec-cinergy-c-pci.c | 85 ++ .../media/rc/keymaps/rc-terratec-cinergy-s2-hd.c | 85 ++ drivers/media/rc/keymaps/rc-twinhan-dtv-cab-ci.c | 95 +++ include/media/rc-map.h |3 + 14 files changed, 439 insertions(+), 127 deletions(-) create mode 100644 drivers/media/dvb/mantis/mantis_input.h create mode 100644 drivers/media/rc/keymaps/rc-terratec-cinergy-c-pci.c create mode 100644 drivers/media/rc/keymaps/rc-terratec-cinergy-s2-hd.c create mode 100644 drivers/media/rc/keymaps/rc-twinhan-dtv-cab-ci.c diff --git a/drivers/media/dvb/mantis/hopper_cards.c b/drivers/media/dvb/mantis/hopper_cards.c index 1402062..0b76664 100644 --- a/drivers/media/dvb/mantis/hopper_cards.c +++ b/drivers/media/dvb/mantis/hopper_cards.c @@ -107,7 +107,7 @@ static irqreturn_t hopper_irq_handler(int irq, void *dev_id) } if (stat & MANTIS_INT_IRQ1) { dprintk(MANTIS_DEBUG, 0, "<%s>", label[2]); - schedule_work(&mantis->uart_work); + tasklet_schedule(&mantis->uart_tasklet); } if (stat & MANTIS_INT_OCERR) { dprintk(MANTIS_DEBUG, 0, "<%s>", label[3]); diff --git a/drivers/media/dvb/mantis/mantis_cards.c b/drivers/media/dvb/mantis/mantis_cards.c index 05cbb9d..8eca749 100644 --- a/drivers/media/dvb/mantis/mantis_cards.c +++ b/drivers/media/dvb/mantis/mantis_cards.c @@ -49,6 +49,7 @@ #include "mantis_pci.h" #include "mantis_i2c.h" #include "mantis_reg.h" +#include "mantis_input.h" static unsigned int verbose; module_param(verbose, int, 0644); @@ -115,7 +116,7 @@ static irqreturn_t mantis_irq_handler(int irq, void *dev_id) } if (stat & MANTIS_INT_IRQ1) { dprintk(MANTIS_DEBUG, 0, "<%s>", label[2]); - schedule_work(&mantis->uart_work); + tasklet_schedule(&mantis->uart_tasklet); } if (stat & MANTIS_INT_OCERR) { dprintk(MANTIS_DEBUG, 0, "<%s>", label[3]); @@ -180,6 +181,14 @@ static int __devinit mantis_pci_probe(struct pci_dev *pdev, const struct pci_dev config->irq_handler = &mantis_irq_handler; mantis->hwconfig= config; + if (mantis->hwconfig->config_init != NULL) { + dprintk(MANTIS_ERROR, 1, + "Mantis-subsystem: vendor:0x%04x, device:0x%04x\n", + mantis->pdev->subsystem_vendor, + mantis->pdev->subsystem_device); + mantis->hwconfig->config_init(mantis); + } + err = mantis_pci_init(mantis); if (err) { dprintk(MANTIS_ERROR, 1, "ERROR: Mantis PCI initialization failed <%d>", err); @@ -215,21 +224,32 @@ static int __devinit mantis_pci_probe(struct pci_dev *pdev, const struct pci_dev dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DVB initialization failed <%d>", err); goto fail4; } + + err = mantis_input_init(mantis); + if (err < 0) { + dprintk(MANTIS_ERROR, 1, "ERROR: Mantis INPUT initialization failed <%d>", err); + goto fail6; + } + + err = mantis_uart_init(mantis); if (err < 0) { dprintk(MANTIS_ERROR, 1, "ERROR: Mantis UART initialization failed <%d>", err); - goto fail6; + goto fail7; } devs++; return err; - +fail7: dprintk(MANTIS_ERROR, 1, "ERROR: Mantis UART exit! <%d>", err); mantis_uart_exit(mantis); fail6: + dprintk(MANTIS_ERROR, 1, "ERROR: Mantis INPUT exit! <%d>", err); + mantis_input_exit(mantis); + fail4: dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DMA exit! <%d>", err); mantis_dma_exit(mantis); @@ -257,6 +277,7 @@ static void __devexit mantis_pci_remove(struct pci_dev *pdev) if (mantis) { mantis_uart_exit(mantis); + mantis_input_exit(mantis); mantis_dvb_exit(mantis); mantis_dma_exit(mantis); mantis_i2c_exit(mantis); diff --git a/drivers/media/dvb/mantis/mantis_common.h b/drivers/media/dvb/mantis/mantis_common.h index bd400d2..a61046d 100644 --- a/drivers/media/dvb/mantis/mantis_common.h +++ b/d
[PATCH] Add remote control support for mantis
--- drivers/media/dvb/mantis/hopper_cards.c|2 +- drivers/media/dvb/mantis/mantis_cards.c| 27 +++- drivers/media/dvb/mantis/mantis_common.h | 23 ++- drivers/media/dvb/mantis/mantis_input.c| 169 +++ drivers/media/dvb/mantis/mantis_input.h| 28 drivers/media/dvb/mantis/mantis_uart.c | 18 +-- drivers/media/dvb/mantis/mantis_vp1041.c | 20 +++ drivers/media/dvb/mantis/mantis_vp2033.c |4 + drivers/media/dvb/mantis/mantis_vp2040.c |4 + drivers/media/rc/keymaps/Makefile |3 + .../media/rc/keymaps/rc-terratec-cinergy-c-pci.c | 85 ++ .../media/rc/keymaps/rc-terratec-cinergy-s2-hd.c | 85 ++ drivers/media/rc/keymaps/rc-twinhan-dtv-cab-ci.c | 95 +++ include/media/rc-map.h |3 + 14 files changed, 439 insertions(+), 127 deletions(-) create mode 100644 drivers/media/dvb/mantis/mantis_input.h create mode 100644 drivers/media/rc/keymaps/rc-terratec-cinergy-c-pci.c create mode 100644 drivers/media/rc/keymaps/rc-terratec-cinergy-s2-hd.c create mode 100644 drivers/media/rc/keymaps/rc-twinhan-dtv-cab-ci.c diff --git a/drivers/media/dvb/mantis/hopper_cards.c b/drivers/media/dvb/mantis/hopper_cards.c index 1402062..0b76664 100644 --- a/drivers/media/dvb/mantis/hopper_cards.c +++ b/drivers/media/dvb/mantis/hopper_cards.c @@ -107,7 +107,7 @@ static irqreturn_t hopper_irq_handler(int irq, void *dev_id) } if (stat & MANTIS_INT_IRQ1) { dprintk(MANTIS_DEBUG, 0, "<%s>", label[2]); - schedule_work(&mantis->uart_work); + tasklet_schedule(&mantis->uart_tasklet); } if (stat & MANTIS_INT_OCERR) { dprintk(MANTIS_DEBUG, 0, "<%s>", label[3]); diff --git a/drivers/media/dvb/mantis/mantis_cards.c b/drivers/media/dvb/mantis/mantis_cards.c index 05cbb9d..8eca749 100644 --- a/drivers/media/dvb/mantis/mantis_cards.c +++ b/drivers/media/dvb/mantis/mantis_cards.c @@ -49,6 +49,7 @@ #include "mantis_pci.h" #include "mantis_i2c.h" #include "mantis_reg.h" +#include "mantis_input.h" static unsigned int verbose; module_param(verbose, int, 0644); @@ -115,7 +116,7 @@ static irqreturn_t mantis_irq_handler(int irq, void *dev_id) } if (stat & MANTIS_INT_IRQ1) { dprintk(MANTIS_DEBUG, 0, "<%s>", label[2]); - schedule_work(&mantis->uart_work); + tasklet_schedule(&mantis->uart_tasklet); } if (stat & MANTIS_INT_OCERR) { dprintk(MANTIS_DEBUG, 0, "<%s>", label[3]); @@ -180,6 +181,14 @@ static int __devinit mantis_pci_probe(struct pci_dev *pdev, const struct pci_dev config->irq_handler = &mantis_irq_handler; mantis->hwconfig= config; + if (mantis->hwconfig->config_init != NULL) { + dprintk(MANTIS_ERROR, 1, + "Mantis-subsystem: vendor:0x%04x, device:0x%04x\n", + mantis->pdev->subsystem_vendor, + mantis->pdev->subsystem_device); + mantis->hwconfig->config_init(mantis); + } + err = mantis_pci_init(mantis); if (err) { dprintk(MANTIS_ERROR, 1, "ERROR: Mantis PCI initialization failed <%d>", err); @@ -215,21 +224,32 @@ static int __devinit mantis_pci_probe(struct pci_dev *pdev, const struct pci_dev dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DVB initialization failed <%d>", err); goto fail4; } + + err = mantis_input_init(mantis); + if (err < 0) { + dprintk(MANTIS_ERROR, 1, "ERROR: Mantis INPUT initialization failed <%d>", err); + goto fail6; + } + + err = mantis_uart_init(mantis); if (err < 0) { dprintk(MANTIS_ERROR, 1, "ERROR: Mantis UART initialization failed <%d>", err); - goto fail6; + goto fail7; } devs++; return err; - +fail7: dprintk(MANTIS_ERROR, 1, "ERROR: Mantis UART exit! <%d>", err); mantis_uart_exit(mantis); fail6: + dprintk(MANTIS_ERROR, 1, "ERROR: Mantis INPUT exit! <%d>", err); + mantis_input_exit(mantis); + fail4: dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DMA exit! <%d>", err); mantis_dma_exit(mantis); @@ -257,6 +277,7 @@ static void __devexit mantis_pci_remove(struct pci_dev *pdev) if (mantis) { mantis_uart_exit(mantis); + mantis_input_exit(mantis); mantis_dvb_exit(mantis); mantis_dma_exit(mantis); mantis_i2c_exit(mantis); diff --git a/drivers/media/dvb/mantis/mantis_common.h b/drivers/media/dvb/mantis/mantis_common.h index bd400d2..a61046d 100644 --- a/drivers/media/dvb/mantis/mantis_common.h +++ b/drivers/media/dvb/mantis/mantis_common.h @@ -23,6 +23,
[PATCH] Add remote control support for mantis
This patch replaces my previous patch https://patchwork.kernel.org/patch/816592/ It adds the rc_dev->dev.parent definition missing in the previous version. --- drivers/media/dvb/mantis/hopper_cards.c|2 +- drivers/media/dvb/mantis/mantis_cards.c| 27 +++- drivers/media/dvb/mantis/mantis_common.h | 23 ++- drivers/media/dvb/mantis/mantis_input.c| 169 +++ drivers/media/dvb/mantis/mantis_input.h| 28 drivers/media/dvb/mantis/mantis_uart.c | 18 +-- drivers/media/dvb/mantis/mantis_vp1041.c | 20 +++ drivers/media/dvb/mantis/mantis_vp2033.c |4 + drivers/media/dvb/mantis/mantis_vp2040.c |4 + drivers/media/rc/keymaps/Makefile |3 + .../media/rc/keymaps/rc-terratec-cinergy-c-pci.c | 85 ++ .../media/rc/keymaps/rc-terratec-cinergy-s2-hd.c | 85 ++ drivers/media/rc/keymaps/rc-twinhan-dtv-cab-ci.c | 95 +++ include/media/rc-map.h |3 + 14 files changed, 439 insertions(+), 127 deletions(-) create mode 100644 drivers/media/dvb/mantis/mantis_input.h create mode 100644 drivers/media/rc/keymaps/rc-terratec-cinergy-c-pci.c create mode 100644 drivers/media/rc/keymaps/rc-terratec-cinergy-s2-hd.c create mode 100644 drivers/media/rc/keymaps/rc-twinhan-dtv-cab-ci.c diff --git a/drivers/media/dvb/mantis/hopper_cards.c b/drivers/media/dvb/mantis/hopper_cards.c index 1402062..0b76664 100644 --- a/drivers/media/dvb/mantis/hopper_cards.c +++ b/drivers/media/dvb/mantis/hopper_cards.c @@ -107,7 +107,7 @@ static irqreturn_t hopper_irq_handler(int irq, void *dev_id) } if (stat & MANTIS_INT_IRQ1) { dprintk(MANTIS_DEBUG, 0, "<%s>", label[2]); - schedule_work(&mantis->uart_work); + tasklet_schedule(&mantis->uart_tasklet); } if (stat & MANTIS_INT_OCERR) { dprintk(MANTIS_DEBUG, 0, "<%s>", label[3]); diff --git a/drivers/media/dvb/mantis/mantis_cards.c b/drivers/media/dvb/mantis/mantis_cards.c index 05cbb9d..8eca749 100644 --- a/drivers/media/dvb/mantis/mantis_cards.c +++ b/drivers/media/dvb/mantis/mantis_cards.c @@ -49,6 +49,7 @@ #include "mantis_pci.h" #include "mantis_i2c.h" #include "mantis_reg.h" +#include "mantis_input.h" static unsigned int verbose; module_param(verbose, int, 0644); @@ -115,7 +116,7 @@ static irqreturn_t mantis_irq_handler(int irq, void *dev_id) } if (stat & MANTIS_INT_IRQ1) { dprintk(MANTIS_DEBUG, 0, "<%s>", label[2]); - schedule_work(&mantis->uart_work); + tasklet_schedule(&mantis->uart_tasklet); } if (stat & MANTIS_INT_OCERR) { dprintk(MANTIS_DEBUG, 0, "<%s>", label[3]); @@ -180,6 +181,14 @@ static int __devinit mantis_pci_probe(struct pci_dev *pdev, const struct pci_dev config->irq_handler = &mantis_irq_handler; mantis->hwconfig= config; + if (mantis->hwconfig->config_init != NULL) { + dprintk(MANTIS_ERROR, 1, + "Mantis-subsystem: vendor:0x%04x, device:0x%04x\n", + mantis->pdev->subsystem_vendor, + mantis->pdev->subsystem_device); + mantis->hwconfig->config_init(mantis); + } + err = mantis_pci_init(mantis); if (err) { dprintk(MANTIS_ERROR, 1, "ERROR: Mantis PCI initialization failed <%d>", err); @@ -215,21 +224,32 @@ static int __devinit mantis_pci_probe(struct pci_dev *pdev, const struct pci_dev dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DVB initialization failed <%d>", err); goto fail4; } + + err = mantis_input_init(mantis); + if (err < 0) { + dprintk(MANTIS_ERROR, 1, "ERROR: Mantis INPUT initialization failed <%d>", err); + goto fail6; + } + + err = mantis_uart_init(mantis); if (err < 0) { dprintk(MANTIS_ERROR, 1, "ERROR: Mantis UART initialization failed <%d>", err); - goto fail6; + goto fail7; } devs++; return err; - +fail7: dprintk(MANTIS_ERROR, 1, "ERROR: Mantis UART exit! <%d>", err); mantis_uart_exit(mantis); fail6: + dprintk(MANTIS_ERROR, 1, "ERROR: Mantis INPUT exit! <%d>", err); + mantis_input_exit(mantis); + fail4: dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DMA exit! <%d>", err); mantis_dma_exit(mantis); @@ -257,6 +277,7 @@ static void __devexit mantis_pci_remove(struct pci_dev *pdev) if (mantis) { mantis_uart_exit(mantis); + mantis_input_exit(mantis); mantis_dvb_exit(mantis); mantis_dma_exit(mantis); mantis_i2c_exit(mantis); diff --git a/drivers/media/dvb/mantis/mantis_common.h b/drivers/media/dvb/mant
[PATCH] Add remote control support for mantis
Signed-off-by: Christoph Pinkl --- drivers/media/dvb/mantis/hopper_cards.c|2 +- drivers/media/dvb/mantis/mantis_cards.c| 27 +++- drivers/media/dvb/mantis/mantis_common.h | 23 ++- drivers/media/dvb/mantis/mantis_input.c| 168 +++- drivers/media/dvb/mantis/mantis_input.h| 28 drivers/media/dvb/mantis/mantis_uart.c | 18 +-- drivers/media/dvb/mantis/mantis_vp1041.c | 20 +++ drivers/media/dvb/mantis/mantis_vp2033.c |4 + drivers/media/dvb/mantis/mantis_vp2040.c |4 + drivers/media/rc/keymaps/Makefile |3 + .../media/rc/keymaps/rc-terratec-cinergy-c-pci.c | 85 ++ .../media/rc/keymaps/rc-terratec-cinergy-s2-hd.c | 85 ++ drivers/media/rc/keymaps/rc-twinhan-dtv-cab-ci.c | 95 +++ include/media/rc-map.h |3 + 14 files changed, 438 insertions(+), 127 deletions(-) create mode 100644 drivers/media/dvb/mantis/mantis_input.h create mode 100644 drivers/media/rc/keymaps/rc-terratec-cinergy-c-pci.c create mode 100644 drivers/media/rc/keymaps/rc-terratec-cinergy-s2-hd.c create mode 100644 drivers/media/rc/keymaps/rc-twinhan-dtv-cab-ci.c diff --git a/drivers/media/dvb/mantis/hopper_cards.c b/drivers/media/dvb/mantis/hopper_cards.c index 1402062..0b76664 100644 --- a/drivers/media/dvb/mantis/hopper_cards.c +++ b/drivers/media/dvb/mantis/hopper_cards.c @@ -107,7 +107,7 @@ static irqreturn_t hopper_irq_handler(int irq, void *dev_id) } if (stat & MANTIS_INT_IRQ1) { dprintk(MANTIS_DEBUG, 0, "<%s>", label[2]); - schedule_work(&mantis->uart_work); + tasklet_schedule(&mantis->uart_tasklet); } if (stat & MANTIS_INT_OCERR) { dprintk(MANTIS_DEBUG, 0, "<%s>", label[3]); diff --git a/drivers/media/dvb/mantis/mantis_cards.c b/drivers/media/dvb/mantis/mantis_cards.c index 05cbb9d..8eca749 100644 --- a/drivers/media/dvb/mantis/mantis_cards.c +++ b/drivers/media/dvb/mantis/mantis_cards.c @@ -49,6 +49,7 @@ #include "mantis_pci.h" #include "mantis_i2c.h" #include "mantis_reg.h" +#include "mantis_input.h" static unsigned int verbose; module_param(verbose, int, 0644); @@ -115,7 +116,7 @@ static irqreturn_t mantis_irq_handler(int irq, void *dev_id) } if (stat & MANTIS_INT_IRQ1) { dprintk(MANTIS_DEBUG, 0, "<%s>", label[2]); - schedule_work(&mantis->uart_work); + tasklet_schedule(&mantis->uart_tasklet); } if (stat & MANTIS_INT_OCERR) { dprintk(MANTIS_DEBUG, 0, "<%s>", label[3]); @@ -180,6 +181,14 @@ static int __devinit mantis_pci_probe(struct pci_dev *pdev, const struct pci_dev config->irq_handler = &mantis_irq_handler; mantis->hwconfig= config; + if (mantis->hwconfig->config_init != NULL) { + dprintk(MANTIS_ERROR, 1, + "Mantis-subsystem: vendor:0x%04x, device:0x%04x\n", + mantis->pdev->subsystem_vendor, + mantis->pdev->subsystem_device); + mantis->hwconfig->config_init(mantis); + } + err = mantis_pci_init(mantis); if (err) { dprintk(MANTIS_ERROR, 1, "ERROR: Mantis PCI initialization failed <%d>", err); @@ -215,21 +224,32 @@ static int __devinit mantis_pci_probe(struct pci_dev *pdev, const struct pci_dev dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DVB initialization failed <%d>", err); goto fail4; } + + err = mantis_input_init(mantis); + if (err < 0) { + dprintk(MANTIS_ERROR, 1, "ERROR: Mantis INPUT initialization failed <%d>", err); + goto fail6; + } + + err = mantis_uart_init(mantis); if (err < 0) { dprintk(MANTIS_ERROR, 1, "ERROR: Mantis UART initialization failed <%d>", err); - goto fail6; + goto fail7; } devs++; return err; - +fail7: dprintk(MANTIS_ERROR, 1, "ERROR: Mantis UART exit! <%d>", err); mantis_uart_exit(mantis); fail6: + dprintk(MANTIS_ERROR, 1, "ERROR: Mantis INPUT exit! <%d>", err); + mantis_input_exit(mantis); + fail4: dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DMA exit! <%d>", err); mantis_dma_exit(mantis); @@ -257,6 +277,7 @@ static void __devexit mantis_pci_remove(struct pci_dev *pdev) if (mantis) { mantis_uart_exit(mantis); + mantis_input_exit(mantis); mantis_dvb_exit(mantis); mantis_dma_exit(mantis); mantis_i2c_exit(mantis); diff --git a/drivers/media/dvb/mantis/mantis_common.h b/drivers/media/dvb/mantis/mantis_common.h index bd400d2..a61046d 100644 --- a/drivers/media/dvb/mantis/mantis_common.h +++ b/drivers/media/dvb/ma
Re: [PATCH] Add remote control support for mantis
"Christoph Pinkl" writes: > X-Mailer: Microsoft Office Outlook 12.0 This will not work. Use git-send-email or a working email client. See http://www.kernel.org/doc/Documentation/email-clients.txt for further hints. Bjørn -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] Add remote control support for mantis
Add remote control support for mantis driver Signed-off-by: Christoph Pinkl --- drivers/media/dvb/mantis/hopper_cards.c|2 +- drivers/media/dvb/mantis/mantis_cards.c| 27 +++- drivers/media/dvb/mantis/mantis_common.h | 23 ++- drivers/media/dvb/mantis/mantis_input.c| 168 +++- drivers/media/dvb/mantis/mantis_input.h| 28 drivers/media/dvb/mantis/mantis_uart.c | 18 +-- drivers/media/dvb/mantis/mantis_vp1041.c | 20 +++ drivers/media/dvb/mantis/mantis_vp2033.c |4 + drivers/media/dvb/mantis/mantis_vp2040.c |4 + drivers/media/rc/keymaps/Makefile |3 + .../media/rc/keymaps/rc-terratec-cinergy-c-pci.c | 85 ++ .../media/rc/keymaps/rc-terratec-cinergy-s2-hd.c | 85 ++ drivers/media/rc/keymaps/rc-twinhan-dtv-cab-ci.c | 95 +++ include/media/rc-map.h |3 + 14 files changed, 438 insertions(+), 127 deletions(-) create mode 100644 drivers/media/dvb/mantis/mantis_input.h create mode 100644 drivers/media/rc/keymaps/rc-terratec-cinergy-c-pci.c create mode 100644 drivers/media/rc/keymaps/rc-terratec-cinergy-s2-hd.c create mode 100644 drivers/media/rc/keymaps/rc-twinhan-dtv-cab-ci.c diff --git a/drivers/media/dvb/mantis/hopper_cards.c b/drivers/media/dvb/mantis/hopper_cards.c index 1402062..0b76664 100644 --- a/drivers/media/dvb/mantis/hopper_cards.c +++ b/drivers/media/dvb/mantis/hopper_cards.c @@ -107,7 +107,7 @@ static irqreturn_t hopper_irq_handler(int irq, void *dev_id) } if (stat & MANTIS_INT_IRQ1) { dprintk(MANTIS_DEBUG, 0, "<%s>", label[2]); - schedule_work(&mantis->uart_work); + tasklet_schedule(&mantis->uart_tasklet); } if (stat & MANTIS_INT_OCERR) { dprintk(MANTIS_DEBUG, 0, "<%s>", label[3]); diff --git a/drivers/media/dvb/mantis/mantis_cards.c b/drivers/media/dvb/mantis/mantis_cards.c index 05cbb9d..8eca749 100644 --- a/drivers/media/dvb/mantis/mantis_cards.c +++ b/drivers/media/dvb/mantis/mantis_cards.c @@ -49,6 +49,7 @@ #include "mantis_pci.h" #include "mantis_i2c.h" #include "mantis_reg.h" +#include "mantis_input.h" static unsigned int verbose; module_param(verbose, int, 0644); @@ -115,7 +116,7 @@ static irqreturn_t mantis_irq_handler(int irq, void *dev_id) } if (stat & MANTIS_INT_IRQ1) { dprintk(MANTIS_DEBUG, 0, "<%s>", label[2]); - schedule_work(&mantis->uart_work); + tasklet_schedule(&mantis->uart_tasklet); } if (stat & MANTIS_INT_OCERR) { dprintk(MANTIS_DEBUG, 0, "<%s>", label[3]); @@ -180,6 +181,14 @@ static int __devinit mantis_pci_probe(struct pci_dev *pdev, const struct pci_dev config->irq_handler = &mantis_irq_handler; mantis->hwconfig= config; + if (mantis->hwconfig->config_init != NULL) { + dprintk(MANTIS_ERROR, 1, + "Mantis-subsystem: vendor:0x%04x, device:0x%04x\n", + mantis->pdev->subsystem_vendor, + mantis->pdev->subsystem_device); + mantis->hwconfig->config_init(mantis); + } + err = mantis_pci_init(mantis); if (err) { dprintk(MANTIS_ERROR, 1, "ERROR: Mantis PCI initialization failed <%d>", err); @@ -215,21 +224,32 @@ static int __devinit mantis_pci_probe(struct pci_dev *pdev, const struct pci_dev dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DVB initialization failed <%d>", err); goto fail4; } + + err = mantis_input_init(mantis); + if (err < 0) { + dprintk(MANTIS_ERROR, 1, "ERROR: Mantis INPUT initialization failed <%d>", err); + goto fail6; + } + + err = mantis_uart_init(mantis); if (err < 0) { dprintk(MANTIS_ERROR, 1, "ERROR: Mantis UART initialization failed <%d>", err); - goto fail6; + goto fail7; } devs++; return err; - +fail7: dprintk(MANTIS_ERROR, 1, "ERROR: Mantis UART exit! <%d>", err); mantis_uart_exit(mantis); fail6: + dprintk(MANTIS_ERROR, 1, "ERROR: Mantis INPUT exit! <%d>", err); + mantis_input_exit(mantis); + fail4: dprintk(MANTIS_ERROR, 1, "ERROR: Mantis DMA exit! <%d>", err); mantis_dma_exit(mantis); @@ -257,6 +277,7 @@ static void __devexit mantis_pci_remove(struct pci_dev *pdev) if (mantis) { mantis_uart_exit(mantis); + mantis_input_exit(mantis); mantis_dvb_exit(mantis); mantis_dma_exit(mantis); mantis_i2c_exit(mantis); diff --git a/drivers/media/dvb/mantis/mantis_common.h b/drivers/media/dvb/mantis/mantis_common.h index bd400d2..a61046d 100644 --- a/drivers/media/dvb/mantis/mantis