[PATCH] [media] 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| 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);
[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(ma
[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);
[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); +
AW: AW: Remote control not working for Terratec Cinergy C (2.6.37 Mantis driver)
Hello, I've removed the rc_keyup call as the timeout release the key automatically. This seems to work better. I also added the possibility to define different keytables for boards with different subsystems as Lou mentioned. Regards Chris mantis_ir.patch Description: Binary data
AW: Remote control not working for Terratec Cinergy C (2.6.37 Mantis driver)
Hello, This patch is a rework of a old patch I've posted some time ago. It adds support for Remote-Control in the mantis driver and implements the new rc-API. The patch enables rc for the cards - vp1041 - vp2033 - vp2040 It's only tested with a Terratec Cinergy S2 HD. Would be nice to get some Feedback. Regards Chris mantis_ir.patch Description: Binary data
AW: Remote control not working for Terratec Cinergy C (2.6.37 Mantis driver)
Hello, I've decided to rework my patch once again and send it to the list. It adds support for Remote-Control in the mantis driver and implements the new rc-API. The patch enables rc for the cards - vp1041 - vp2033 - vp2040 It's only tested with a Terratec Cinergy S2 HD Regards Chris I've reworked my patch using at home for > -Ursprüngliche Nachricht- > Von: linux-media-ow...@vger.kernel.org [mailto:linux-media- > ow...@vger.kernel.org] Im Auftrag von Adrian C. > Gesendet: Dienstag, 10. Mai 2011 23:30 > An: linux-media@vger.kernel.org > Betreff: Re: Remote control not working for Terratec Cinergy C (2.6.37 > Mantis driver) > > On Fri, 6 May 2011, Marko Ristola wrote: > > > The hardware device is active (it is enabled, messages are sent from > > the remote to the Kernel Mantis software driver. The bytes can be > > logged into /var/log/messages file. > > > > That's all the driver is designed to do at this point. > > It doesn't sound promising. Thanks for the update Marko. > > -- > Adrian C. (anrxc) | anrxc..sysphere.org | PGP ID: D20A0618 > PGP FP: 02A5 628A D8EE 2A93 996E 929F D5CB 31B7 D20A 0618 > -- > 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 mantis_ir.patch Description: Binary data
IR Remote Support for Mantis VP-1041
Hello, Here is a patch against the s2-liplianin [1] repo to support ir remote for the mantis vp-1041 (TerraTec Cinergy S2 PCI HD) cards. This patch is based on the remote control patch from Pauli Borodulin [2] and adds support for the vp-1041 cards. The ir-keymap is based on the remote-control from the TerraTec Cinergy S2 PCI HD Card. [1] http://mercurial.intuxication.org/hg/s2-liplianin [2] http://pauli.borodulin.fi/blog/?p=8 chris mantis-rc-s2-liplianin.diff Description: Binary data