aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2008-03-20 17:20:32 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2008-03-20 17:20:32 +0000
commit065b711cbc139cf1de47705e8df56b5bc04e2418 (patch)
treea5ee992bb19696f2bdcec762077bd14ef53ec158
parent582dd432626828f91c3ebce75c60e7be39be8eb8 (diff)
downloadenigma2-065b711cbc139cf1de47705e8df56b5bc04e2418.tar.gz
enigma2-065b711cbc139cf1de47705e8df56b5bc04e2418.zip
add support for dm8000 onboard tuner linking
-rw-r--r--lib/dvb/frontend.h1
-rw-r--r--lib/dvb/sec.cpp23
-rw-r--r--lib/python/Components/NimManager.py10
3 files changed, 29 insertions, 5 deletions
diff --git a/lib/dvb/frontend.h b/lib/dvb/frontend.h
index 41de874b..6055da0b 100644
--- a/lib/dvb/frontend.h
+++ b/lib/dvb/frontend.h
@@ -132,6 +132,7 @@ public:
int openFrontend();
int closeFrontend();
+ const char *getDescription() const { return m_description; }
};
#endif // SWIG
diff --git a/lib/dvb/sec.cpp b/lib/dvb/sec.cpp
index ff3f9bd0..5db56b6a 100644
--- a/lib/dvb/sec.cpp
+++ b/lib/dvb/sec.cpp
@@ -814,6 +814,18 @@ RESULT eDVBSatelliteEquipmentControl::clear()
//reset some tuner configuration
for (eSmartPtrList<eDVBRegisteredFrontend>::iterator it(m_avail_frontends.begin()); it != m_avail_frontends.end(); ++it)
{
+ int tmp;
+ if (!strcmp(it->m_frontend->getDescription(), "BCM4501 (internal)") && !it->m_frontend->getData(eDVBFrontend::LINKED_PREV_PTR, tmp) && tmp != -1)
+ {
+ FILE *f=fopen("/proc/stb/tsmux/lnb_b_input", "w");
+ if (!f || fwrite("B", 1, 1, f) != 1)
+ eDebug("set /proc/stb/tsmux/lnb_b_input to B failed!! (%m)");
+ else
+ {
+ eDebug("set /proc/stb/tsmux/lnb_b_input to B OK");
+ fclose(f);
+ }
+ }
it->m_frontend->setData(eDVBFrontend::SATPOS_DEPENDS_PTR, -1);
it->m_frontend->setData(eDVBFrontend::LINKED_PREV_PTR, -1);
it->m_frontend->setData(eDVBFrontend::LINKED_NEXT_PTR, -1);
@@ -1257,6 +1269,17 @@ RESULT eDVBSatelliteEquipmentControl::setTunerLinked(int tu1, int tu2)
{
p1->m_frontend->setData(eDVBFrontend::LINKED_PREV_PTR, (int)p2);
p2->m_frontend->setData(eDVBFrontend::LINKED_NEXT_PTR, (int)p1);
+ if (!strcmp(p1->m_frontend->getDescription(), p2->m_frontend->getDescription()) && !strcmp(p1->m_frontend->getDescription(), "BCM4501 (internal)"))
+ {
+ FILE *f=fopen("/proc/stb/tsmux/lnb_b_input", "w");
+ if (!f || fwrite("A", 1, 1, f) != 1)
+ eDebug("set /proc/stb/tsmux/lnb_b_input to A failed!! (%m)");
+ else
+ {
+ eDebug("set /proc/stb/tsmux/lnb_b_input to A OK");
+ fclose(f);
+ }
+ }
return 0;
}
}
diff --git a/lib/python/Components/NimManager.py b/lib/python/Components/NimManager.py
index 5920166d..ec7d46fe 100644
--- a/lib/python/Components/NimManager.py
+++ b/lib/python/Components/NimManager.py
@@ -105,6 +105,11 @@ class SecConfigure:
used_nim_slots = [ ]
for slot in nim_slots:
+ if slot.type is not None:
+ used_nim_slots.append((slot.slot, slot.description, slot.config.configMode.value != "nothing" and True or False))
+ eDVBResourceManager.getInstance().setFrontendSlotInformations(used_nim_slots)
+
+ for slot in nim_slots:
x = slot.slot
nim = slot.config
if slot.isCompatible("DVB-S"):
@@ -119,11 +124,6 @@ class SecConfigure:
self.setSatposDepends(sec, x, int(nim.satposDependsTo.value))
self.satposdepends[int(nim.satposDependsTo.value)]=x
- if slot.type is not None:
- used_nim_slots.append((slot.slot, slot.description, nim.configMode.value != "nothing" and True or False))
-
- eDVBResourceManager.getInstance().setFrontendSlotInformations(used_nim_slots)
-
for slot in nim_slots:
x = slot.slot
nim = slot.config