[PATCH] Add remote control support for mantis

2011-06-01 Thread Christoph Pinkl
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

2011-06-01 Thread 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/drivers/media/dvb/mantis/mantis_common.h
@@ -23,6 +23,

[PATCH] Add remote control support for mantis

2011-05-26 Thread Christoph Pinkl
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

2011-05-25 Thread Christoph Pinkl

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

2011-05-25 Thread Bjørn Mork
"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

2011-05-25 Thread Christoph Pinkl
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