Skip to contentSkip to conversation

DiSEqC handling in S2API

linux-dvb Klaus Schmidinger 4 participants 7 messages Dec 13, 2008 – Dec 15, 2008 Media (V4L/DVB)

lore
Share & tools
lore
#0 lore raw

While adapting VDR to the S2API driver, I saw that there are also facilities to handle DiSEqC via the new API, like DTV_VOLTAGE and DTV_TONE. However, I can't seem to find out how the "legacy" FE_DISEQC_SEND_BURST and FE_DISEQC_SEND_MASTER_CMD could be handled with S2API.
Is this not implemented?

Klaus

_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

#1 lore raw
Quoted 6 lines · Klaus Schmidinger

While adapting VDR to the S2API driver, I saw that there are also facilities to handle DiSEqC via the new API, like DTV_VOLTAGE and DTV_TONE. However, I can't seem to find out how the "legacy" FE_DISEQC_SEND_BURST and FE_DISEQC_SEND_MASTER_CMD could be handled with S2API.
Is this not implemented?

LNB control works perfectly with the old api.
Imho DTV_VOLTAGE and DTV_TONE should be removed.
They duplicate existing functions and do not offer any advantage. Just my 2 cents.

Oliver

Signature · 8 lines
----------------------------------------------------------------
VDR Remote Plugin 0.4.0: http://www.escape-edv.de/endriss/vdr/
----------------------------------------------------------------

_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
#2 lore raw
Quoted 11 lines · Oliver Endriss
Quoted 6 lines · Klaus Schmidinger

While adapting VDR to the S2API driver, I saw that there are also facilities to handle DiSEqC via the new API, like DTV_VOLTAGE and DTV_TONE. However, I can't seem to find out how the "legacy" FE_DISEQC_SEND_BURST and FE_DISEQC_SEND_MASTER_CMD could be handled with S2API.
Is this not implemented?

LNB control works perfectly with the old api.
Imho DTV_VOLTAGE and DTV_TONE should be removed.
They duplicate existing functions and do not offer any advantage.

Thanks, so I'll leave this with the "old" API.

Klaus

_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

#3 lore raw

[linux-dvb] Terratec Cinergy S2 PCI HD S2API ( Liplianin's tree ) fixes

In reply to Oliver Endriss

Hi,

attached there are 2 patches. One which corrects MANTIS_VP_1041_DVB_S2 and the second one solves the following bug :

memory: 0xdffff000, mmio: 0xffffc2000035a000
found a VP-1041 PCI DSS/DVB-S/DVB-S2 device on (01:06.0),

    Mantis Rev 1 [153b:1179], irq: 16, latency: 64
    memory: 0xdffff000, mmio: 0xffffc2000035a000
    MAC Address=[00:08:ca:1c:d5:e6]

mantis_alloc_buffers (0): DMA=0x6d810000 cpu=0xffff88006d810000 size=65536 mantis_alloc_buffers (0): RISC=0x6e8fa000 cpu=0xffff88006e8fa000 size=1000
DVB: registering new adapter (Mantis dvb adapter)
stb0899_attach: Attaching STB0899
mantis_frontend_init (0): found STB0899 DVB-S/DVB-S2 frontend @0x68
stb6100_attach: Attaching STB6100
DVB: registering adapter 0 frontend 0 (STB0899 Multistandard)... mantis_ca_init (0): Registering EN50221 device
mantis_ca_init (0): Registered EN50221 device

BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
IP: [<ffffffff80231ca0>] 0xffffffff80231ca0
PGD 6d805067 PUD 6d8f1067 PMD 0
Oops: 0000 [1] PREEMPT SMP
CPU 1
Modules linked in: mantis(+) lnbp21 mb86a16 stb6100 tda10021 tda10023

stb0899 stv0299 dvb_core autofs4 container pci_slot sbs video output battery sbshc af_packet ac it87 hwmon_vid powernow_k8 cpufreq_userspace cpufreq_powersave cpufreq_ondemand freq_table arc4 ecb snd_hda_intel snd_pcm_oss snd_mixer_oss snd_pcm snd_page_alloc snd_hwdep snd_seq_dummy snd_seq_oss zd1211rw psmouse snd_seq_midi snd_rawmidi evdev serio_raw mac80211 k8temp snd_seq_midi_event shpchp usbhid snd_seq pci_hotplug cfg80211 hid snd_timer snd_seq_device i2c_core snd soundcore wmi parport_pc parport button ohci1394 ieee1394 forcedeth ehci_hcd ohci_hcd usbcore thermal processor fan
Pid: 9, comm: events/1 Not tainted 2.6.27 #1

RIP: 0010:[<ffffffff80231ca0>]  [<ffffffff80231ca0>] 0xffffffff80231ca0
RSP: 0018:ffff88006fbbfe20  EFLAGS: 00010082
RAX: 0000000000000000 RBX: ffff88006d31c058 RCX: 0000000000000000
RDX: 0000000000000001 RSI: 0000000000000003 RDI: ffff88006d31c058
RBP: ffff88006fbbfe50 R08: ffffffffffffffe8 R09: ffff88000102ce00
R10: 0000004a93e37af4 R11: ffffffff804e8fa7 R12: 0000000000000001
R13: 0000000000000001 R14: ffff88006d31c060 R15: 0000000000000000
FS:  00007f8874a416e0(0000) GS:ffff88006f802780(0000) knlGS:0000000000000000
CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
CR2: 0000000000000000 CR3: 000000006e8d5000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process events/1 (pid: 9, threadinfo ffff88006fbbe000, task ffff88006fb73600)
Stack:  0000000300000000 ffff88006d31c058 0000000000000000 0000000000000001
 0000000000000286 0000000000000003 ffff88006fbbfe90 ffffffff802324ce
 ffff88006f802908 ffff88006d31c038 ffff88006d31c030 ffffffffa0262fc3
Call Trace:
 [<ffffffff802324ce>] 0xffffffff802324ce
 [<ffffffffa0262fc3>] ? 0xffffffffa0262fc3
 [<ffffffff8024ab06>] 0xffffffff8024ab06
 [<ffffffff8024ac82>] ? 0xffffffff8024ac82
 [<ffffffff8024e082>] ? 0xffffffff8024e082
 [<ffffffff8024ab92>] ? 0xffffffff8024ab92
 [<ffffffff8024dd3f>] ? 0xffffffff8024dd3f
 [<ffffffff802397ba>] ? 0xffffffff802397ba
 [<ffffffff802125e9>] ? 0xffffffff802125e9
 [<ffffffff8024dcf8>] ? 0xffffffff8024dcf8
 [<ffffffff802125df>] ? 0xffffffff802125df


Code: c9 c3 55 48 89 e5 41 57 4d 89 c7 41 56 4c 8d 77 08

<3>mantis_hif_init (0): Adapter(0) Initializing Mantis Host Interface 41 55 41 54 41 89 d4 53 48 83 ec 08 89 75 d4 89 4d d0 48 8b 47 08 4c 8d 40 e8 <49> 8b 40 18 48 8d 58 e8 eb 2d 45 8b 28 4c 89 f9 8b 55 d0 8b 75 RIP [<ffffffff80231ca0>] 0xffffffff80231ca0
RSP <ffff88006fbbfe20>
CR2: 0000000000000000

---[ end trace e8c4dfd3500996f1 ]---

note: events/1[9] exited with preempt_count 1

Both patches are taken from Manu Abraham's multiproto mantis tree and just aplied to Igor Liplianin's S2API tree.

mfg

Edgar (gimli) Hucek

linux/drivers/media/dvb/mantis/mantis_vp1041.h +1 -1
diff -uNr s2-liplianin/linux/drivers/media/dvb/mantis/mantis_vp1041.h s2-liplianin.cinergy/linux/drivers/media/dvb/mantis/mantis_vp1041.h
@@ -27,7 +27,7 @@
 #include "stb6100.h"
 #include "lnbp21.h"
 
-#define MANTIS_VP_1041_DVB_S2	0x0031
+#define MANTIS_VP_1041_DVB_S2	0x1179
 #define TECHNISAT_SKYSTAR_HD2_1	0x0001
 // Subsystem: Device 1ae4:0003
 #define TECHNISAT_SKYSTAR_HD2_2 0x0003
linux/drivers/media/dvb/mantis/mantis_ca.c +6 -0
@@ -160,6 +160,12 @@
 	ca->en50221.poll_slot_status	= mantis_slot_status;
 	ca->en50221.data		= ca;
 
+	mutex_init(&ca->ca_lock);
+
+	init_waitqueue_head(&ca->hif_data_wq);
+	init_waitqueue_head(&ca->hif_opdone_wq);
+	init_waitqueue_head(&ca->hif_write_wq);
+
 	dprintk(verbose, MANTIS_ERROR, 1, "Registering EN50221 device");
 	if ((result = dvb_ca_en50221_init(dvb_adapter, &ca->en50221, ca_flags, 1)) != 0) {
 		dprintk(verbose, MANTIS_ERROR, 1, "EN50221: Initialization failed");
linux/drivers/media/dvb/mantis/mantis_hif.c +16 -3
@@ -75,6 +92,7 @@
 	u32 hif_addr = 0, data, count = 4;
 
 	dprintk(verbose, MANTIS_DEBUG, 1, "Adapter(%d) Slot(0): Request HIF Mem Read", mantis->num);
+	mutex_lock(&ca->ca_lock);
 	hif_addr &= ~MANTIS_GPIF_PCMCIAREG;
 	hif_addr &= ~MANTIS_GPIF_PCMCIAIOM;
 	hif_addr |=  MANTIS_HIF_STATUS;
@@ -87,9 +105,11 @@
 
 	if (mantis_hif_sbuf_opdone_wait(ca) != 0) {
 		dprintk(verbose, MANTIS_ERROR, 1, "Adapter(%d) Slot(0): GPIF Smart Buffer operation failed", mantis->num);
+		mutex_unlock(&ca->ca_lock);
 		return -EREMOTEIO;
 	}
 	data = mmread(MANTIS_GPIF_DIN);
+	mutex_unlock(&ca->ca_lock);
 	dprintk(verbose, MANTIS_DEBUG, 1, "Mem Read: 0x%02x", data);
 	return (data >> 24) & 0xff;
 }
@@ -101,6 +121,7 @@
 	u32 hif_addr = 0;
 
 	dprintk(verbose, MANTIS_DEBUG, 1, "Adapter(%d) Slot(0): Request HIF Mem Write", mantis->num);
+	mutex_lock(&ca->ca_lock);
 	hif_addr &= ~MANTIS_GPIF_HIFRDWRN;
 	hif_addr &= ~MANTIS_GPIF_PCMCIAREG;
 	hif_addr &= ~MANTIS_GPIF_PCMCIAIOM;
@@ -113,9 +134,11 @@
 
 	if (mantis_hif_write_wait(ca) != 0) {
 		dprintk(verbose, MANTIS_ERROR, 1, "Adapter(%d) Slot(0): HIF Smart Buffer operation failed", mantis->num);
+		mutex_unlock(&ca->ca_lock);
 		return -EREMOTEIO;
 	}
 	dprintk(verbose, MANTIS_DEBUG, 1, "Mem Write: (0x%02x to 0x%02x)", data, addr);
+	mutex_unlock(&ca->ca_lock);
 
 	return 0;
 }
@@ -126,6 +149,7 @@
 	u32 data, hif_addr = 0;
 
 	dprintk(verbose, MANTIS_DEBUG, 1, "Adapter(%d) Slot(0): Request HIF I/O Read", mantis->num);
+	mutex_lock(&ca->ca_lock);
 	hif_addr &= ~MANTIS_GPIF_PCMCIAREG;
 	hif_addr |=  MANTIS_GPIF_PCMCIAIOM;
 	hif_addr |=  MANTIS_HIF_STATUS;
@@ -138,11 +162,13 @@
 
 	if (mantis_hif_sbuf_opdone_wait(ca) != 0) {
 		dprintk(verbose, MANTIS_ERROR, 1, "Adapter(%d) Slot(0): HIF Smart Buffer operation failed", mantis->num);
+		mutex_unlock(&ca->ca_lock);
 		return -EREMOTEIO;
 	}
 	data = mmread(MANTIS_GPIF_DIN);
 	dprintk(verbose, MANTIS_DEBUG, 1, "I/O Read: 0x%02x", data);
 	udelay(50);
+	mutex_unlock(&ca->ca_lock);
 
 	return (u8) data;
 }
@@ -153,6 +179,7 @@
 	u32 hif_addr = 0;
 
 	dprintk(verbose, MANTIS_DEBUG, 1, "Adapter(%d) Slot(0): Request HIF I/O Write", mantis->num);
+	mutex_lock(&ca->ca_lock);
 	hif_addr &= ~MANTIS_GPIF_PCMCIAREG;
 	hif_addr &= ~MANTIS_GPIF_HIFRDWRN;
 	hif_addr |=  MANTIS_GPIF_PCMCIAIOM;
@@ -164,9 +191,11 @@
 	
 	if (mantis_hif_write_wait(ca) != 0) {
 		dprintk(verbose, MANTIS_ERROR, 1, "Adapter(%d) Slot(0): HIF Smart Buffer operation failed", mantis->num);
+		mutex_unlock(&ca->ca_lock);
 		return -EREMOTEIO;
 	}
 	dprintk(verbose, MANTIS_DEBUG, 1, "I/O Write: (0x%02x to 0x%02x)", data, addr);
+	mutex_unlock(&ca->ca_lock);
 	udelay(50);
 
 	return 0;
@@ -180,10 +209,8 @@
 
 	slot[0].slave_cfg = 0x70773028;
 	dprintk(verbose, MANTIS_ERROR, 1, "Adapter(%d) Initializing Mantis Host Interface", mantis->num);
-	init_waitqueue_head(&ca->hif_data_wq);
-	init_waitqueue_head(&ca->hif_opdone_wq);
-	init_waitqueue_head(&ca->hif_write_wq);
 
+	mutex_lock(&ca->ca_lock);
 	irqcfg = mmread(MANTIS_GPIF_IRQCFG);
 	irqcfg = MANTIS_MASK_BRRDY	|
 		 MANTIS_MASK_WRACK	|
@@ -193,6 +220,7 @@
 		 MANTIS_MASK_OVFLW;
 
 	mmwrite(irqcfg, MANTIS_GPIF_IRQCFG);
+	mutex_unlock(&ca->ca_lock);
 
 	return 0;
 }
@@ -203,7 +231,9 @@
 	u32 irqcfg;
 
 	dprintk(verbose, MANTIS_ERROR, 1, "Adapter(%d) Exiting Mantis Host Interface", mantis->num);
+	mutex_lock(&ca->ca_lock);
 	irqcfg = mmread(MANTIS_GPIF_IRQCFG);
 	irqcfg &= ~MANTIS_MASK_BRRDY;
 	mmwrite(irqcfg, MANTIS_GPIF_IRQCFG);
+	mutex_unlock(&ca->ca_lock);
 }
linux/drivers/media/dvb/mantis/mantis_link.h +2 -0
@@ -21,6 +21,7 @@
 #ifndef __MANTIS_LINK_H
 #define __MANTIS_LINK_H
 
+#include <linux/mutex.h>
 #include <linux/workqueue.h>
 #include "dvb_ca_en50221.h"
 
@@ -61,6 +62,7 @@
 	void				*ca_priv;
 
 	struct dvb_ca_en50221		en50221;
+	struct mutex			ca_lock;
 };
 
 /* CA */

_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

#4 lore raw

Re: [linux-dvb] Terratec Cinergy S2 PCI HD S2API ( Liplianin's tree ) fixes

Quoted 3 lines

Hi,

attached there are 2 patches. One which corrects MANTIS_VP_1041_DVB_S2

No, MANTIS_VP_1041_DVB_S2 = 0x0031 was correct already for the Azurewave AD-SP400 so your first patch breaks the driver for that card. You need to create another define for the Terratec Cinergy S2 because it has a different subsystem id.

Quoted 3 lines

and
the second one solves the following bug :

.....

Quoted 3 lines

Both patches are taken from Manu Abraham's multiproto mantis tree and just aplied to Igor Liplianin's S2API tree.

The second one only I think.

Quoted 4 lines

mfg

Edgar (gimli) Hucek

Hans

Signature · 8 lines
Release early, release often.

Psssst! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger

_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb
#5 lore raw

Re: [linux-dvb] Terratec Cinergy S2 PCI HD S2API ( Liplianin's tree ) fixes

Hi,

sorry to break it. Attached is a corrected patch which adds support for the Terratec card and corrects MANTIS_VP_1041_DVB_S2.

cu

Edgar (gimli) Hucek

Quoted 30 lines
Quoted 3 lines

Hi,

attached there are 2 patches. One which corrects MANTIS_VP_1041_DVB_S2

No, MANTIS_VP_1041_DVB_S2 = 0x0031 was correct already for the Azurewave AD-SP400
so your first patch breaks the driver for that card. You need to create another define for the
Terratec Cinergy S2 because it has a different subsystem id.

Quoted 3 lines

and
the second one solves the following bug :

.....

Quoted 4 lines

Both patches are taken from Manu Abraham's multiproto mantis tree and just
aplied to Igor Liplianin's S2API tree.

The second one only I think.

Quoted 4 lines

mfg

Edgar (gimli) Hucek

Hans
--
Release early, release often.

Quoted 10 lines

Psssst! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit allen:
http://www.gmx.net/de/go/multimessenger

_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

linux/drivers/media/dvb/mantis/mantis_core.c +1 -0
diff -uNr s2-liplianin/linux/drivers/media/dvb/mantis/mantis_core.c s2-liplianin.cinergy/linux/drivers/media/dvb/mantis/mantis_core.c
@@ -91,6 +91,7 @@
 		mantis->hwconfig = &vp1034_mantis_config;
 		break;
 	case MANTIS_VP_1041_DVB_S2:	// VP-1041
+	case TERRATEC_CINERGY_PCI_HD:
 	case TECHNISAT_SKYSTAR_HD2_1:
 	case TECHNISAT_SKYSTAR_HD2_2:
 		mantis->hwconfig = &vp1041_mantis_config;
linux/drivers/media/dvb/mantis/mantis_dvb.c +1 -0
diff -uNr s2-liplianin/linux/drivers/media/dvb/mantis/mantis_dvb.c s2-liplianin.cinergy/linux/drivers/media/dvb/mantis/mantis_dvb.c
@@ -229,6 +229,7 @@
 		}
 		break;
 	case MANTIS_VP_1041_DVB_S2:
+	case TERRATEC_CINERGY_PCI_HD:
 	case TECHNISAT_SKYSTAR_HD2_1:
 	case TECHNISAT_SKYSTAR_HD2_2:
 		mantis->fe = stb0899_attach(&vp1041_config, &mantis->adapter);
linux/drivers/media/dvb/mantis/mantis_vp1041.h +2 -1
diff -uNr s2-liplianin/linux/drivers/media/dvb/mantis/mantis_vp1041.h s2-liplianin.cinergy/linux/drivers/media/dvb/mantis/mantis_vp1041.h
@@ -27,7 +27,8 @@
 #include "stb6100.h"
 #include "lnbp21.h"
 
-#define MANTIS_VP_1041_DVB_S2	0x1179
+#define MANTIS_VP_1041_DVB_S2	0x0031
+#define TERRATEC_CINERGY_PCI_HD	0x1179
 #define TECHNISAT_SKYSTAR_HD2_1	0x0001
 // Subsystem: Device 1ae4:0003
 #define TECHNISAT_SKYSTAR_HD2_2 0x0003

_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

#6 lore raw

Re: [linux-dvb] Terratec Cinergy S2 PCI HD S2API ( Liplianin's tree ) fixes

Quoted 10 lines
Quoted 10 lines
Quoted 3 lines

Hi,

attached there are 2 patches. One which corrects MANTIS_VP_1041_DVB_S2

No, MANTIS_VP_1041_DVB_S2 = 0x0031 was correct already for the Azurewave AD-SP400
so your first patch breaks the driver for that card. You need to create another define for the
Terratec Cinergy S2 because it has a different subsystem id.

Quoted 8 lines

Hi,

sorry to break it. Attached is a corrected patch which adds support for the Terratec card and corrects MANTIS_VP_1041_DVB_S2.

cu

Edgar (gimli) Hucek

Thanks for the quick update. That's better -- I checked and it works again with the Azurewave AD-SP400.
Hans

Signature · 9 lines
Release early, release often.

Sensationsangebot verlängert: GMX FreeDSL - Telefonanschluss + DSL 
für nur 16,37 Euro/mtl.!* http://dsl.gmx.de/?ac=OM.AD.PD003K1308T4569a

_______________________________________________
linux-dvb mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb