 |
Open SuSE Capi Forum Alles rund um Linux und AVM Capi
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
dimamizou
Anmeldedatum: 11.02.2010 Beiträge: 5
|
Verfasst am: 12.02.2010, 00:17 Titel: Suse 11.2 Treiber für Fritz!X USB (fxusb) |
|
|
AVM hat uns Käufer zwar mit neueren Linux-Systemen hängen lassen, es gibt aber eine Lösung für Suse 11.2 und Fritz!X: man lade die Treiberquellen für das neueste System aus den verfügbaren hier (Suse 10.3: http://opensuse.foehr-it.de/rpms/10_3/src/) runter und wende den folgenden Patch nach allen ander darauf an.
firtz-a.patch
| Code: |
diff -rupN fritz/src//driver.c fritz-a/src//driver.c
--- fritz/src//driver.c 2010-02-11 19:40:42.000000000 +0100
+++ fritz-a/src//driver.c 2010-02-11 19:45:18.000000000 +0100
@@ -92,8 +92,8 @@ static DECLARE_WAIT_QUEUE_HEAD(wait);
static DECLARE_WAIT_QUEUE_HEAD(capi_wait);
static DECLARE_WAIT_QUEUE_HEAD(tx_wait);
static DECLARE_WAIT_QUEUE_HEAD(rx_wait);
-static DECLARE_MUTEX_LOCKED(hotplug);
-static DECLARE_MUTEX_LOCKED(notify);
+static DECLARE_COMPLETION(hotplug);
+static DECLARE_COMPLETION(notify);
#define SCHED_WAKEUP_CAPI { atomic_set (&thread_capi_flag, 1); wake_up_interruptible (&capi_wait); }
#define SCHED_WAKEUP { atomic_set (&got_kicked, 1); wake_up_interruptible (&wait); }
@@ -787,7 +787,7 @@ void start_closing_worker (void (* func)
close_func = func;
close_data = data;
- INIT_WORK (&closing_work, closing_worker);
+ INIT_WORK (&closing_work, (work_func_t)closing_worker);
schedule_work (&closing_work);
LOG("Worker scheduled.\n");
} /* start_closing_worker */
@@ -1211,7 +1211,8 @@ static int scheduler (void * arg) {
}
}
LOG("Scheduler thread stopped.\n");
- up (&hotplug);
+ complete(&hotplug);
+ //up (&hotplug);
return 0;
} /* scheduler */
@@ -1237,7 +1238,7 @@ void kill_thread (void) {
if (thread_pid != -1) {
atomic_set (&thread_run_flag, 0);
- if (NULL == find_task_by_pid (thread_pid)) {
+ if (NULL == find_pid_ns(thread_pid, 0)) {
LOG("Thread[%d] has died before!\n", thread_pid);
} else {
if (!atomic_read (&thread_capi_flag)) {
@@ -1246,7 +1247,8 @@ void kill_thread (void) {
SCHED_WAKEUP;
}
LOG("Scheduler thread signalled, waiting...\n");
- down (&hotplug);
+ wait_for_completion(&hotplug);
+ //down (&hotplug);
LOG("Scheduler thread[%d] terminated.\n", thread_pid);
}
thread_pid = -1;
diff -rupN fritz/src//driver.h fritz-a/src//driver.h
--- fritz/src//driver.h 2010-02-11 19:40:42.000000000 +0100
+++ fritz-a/src//driver.h 2010-02-11 19:45:09.000000000 +0100
@@ -23,7 +23,7 @@
#ifndef __have_driver_h__
#define __have_driver_h__
-#include <asm>
+#include <linux>
#include <asm>
#include <linux>
#include <linux>
diff -rupN fritz/src//main.c fritz-a/src//main.c
--- fritz/src//main.c 2010-02-11 19:40:42.000000000 +0100
+++ fritz-a/src//main.c 2010-02-11 19:45:18.000000000 +0100
@@ -61,7 +61,7 @@
/*---------------------------------------------------------------------------*\
\*---------------------------------------------------------------------------*/
-MODULE_LICENSE ("Proprietary");
+MODULE_LICENSE ("GPL");
MODULE_DESCRIPTION ("CAPI4Linux: Driver for " PRODUCT_LOGO);
/*---------------------------------------------------------------------------*\
diff -rupN fritz/src//tools.h fritz-a/src//tools.h
--- fritz/src//tools.h 2010-02-11 19:40:42.000000000 +0100
+++ fritz-a/src//tools.h 2010-02-11 19:45:09.000000000 +0100
@@ -69,18 +69,6 @@ extern void message (const char *, ...);
extern void lprintf (const char *, const char *, ...);
extern void vlprintf (const char *, const char *, va_list);
-/*---------------------------------------------------------------------------*\
-\*---------------------------------------------------------------------------*/
-#ifndef atomic_xchg
-static inline unsigned long atomic_xchg (
- volatile atomic_t * v,
- unsigned value
-) {
- return __xchg (value, &v->counter, sizeof (unsigned));
-} /* atomic_xchg */
-#endif
-/*---------------------------------------------------------------------------*\
-\*---------------------------------------------------------------------------*/
#ifndef NDEBUG
extern unsigned hallocated (void);
extern int hvalid (void *);
|
Danach kompilieren die Quelle auch unter 2.6.31 Kernel und der Treiber (fxusb) läuft anstandslos. Andere AVM Treiber, die nicht mehr aktualisiert werden, lassen sich bestimmt ähnlich einfach anpassen.
Warnung
Ein so gebauter Treiber verstößt gegen Lizenzbestimmungen von Linux-Kernel! Man sollte ihn daher auf keinen Fall veröffentlichen oder auf einem Produktivsystem im Arbeitsumfeld installieren, dies könnte unter anderem zur Erloschung evtl. bestehender Support-Verträge führen. |
|
| Nach oben |
|
 |
bastibasti
Anmeldedatum: 29.12.2009 Beiträge: 2
|
Verfasst am: 10.03.2010, 09:58 Titel: |
|
|
| funktioniert dieser patch auch für 2.6.33 kernel? |
|
| Nach oben |
|
 |
dimamizou
Anmeldedatum: 11.02.2010 Beiträge: 5
|
Verfasst am: 10.03.2010, 14:07 Titel: |
|
|
| bastibasti hat Folgendes geschrieben: | | funktioniert dieser patch auch für 2.6.33 kernel? |
Keine Ahnung, ich nehme es schon an - der sollte eigentlich mit allen 2.6.3x gehen.
Aber probiere es doch aus und sag bescheid, es würde mich auch interessieren. |
|
| Nach oben |
|
 |
bastibasti
Anmeldedatum: 29.12.2009 Beiträge: 2
|
Verfasst am: 11.03.2010, 10:09 Titel: |
|
|
Das Patch funktioniert nicht
| Code: |
server fcusb-0.1-0 # patch -p0 <fritzpatch
patching file fritz/src//driver.c
Hunk #1 succeeded at 92 with fuzz 2.
Hunk #2 FAILED at 789.
Hunk #3 FAILED at 1211.
Hunk #4 FAILED at 1238.
Hunk #5 FAILED at 1247.
4 out of 5 hunks FAILED -- saving rejects to file fritz/src//driver.c.rej
patching file fritz/src//driver.h
Hunk #1 FAILED at 23.
1 out of 1 hunk FAILED -- saving rejects to file fritz/src//driver.h.rej
patching file fritz/src//main.c
patching file fritz/src//tools.h
Reversed (or previously applied) patch detected! Assume -R? [n] ^C
|
haben sich sie sources geändert, oder hast du das patch mit geänderten sources erstellt? |
|
| Nach oben |
|
 |
dimamizou
Anmeldedatum: 11.02.2010 Beiträge: 5
|
Verfasst am: 11.03.2010, 18:15 Titel: |
|
|
| bastibasti hat Folgendes geschrieben: | Das Patch funktioniert nicht
haben sich sie sources geändert, oder hast du das patch mit geänderten sources erstellt? |
Nein, der Patch ist wie beschrieben für das Suse 10.3 SRC-RPM und muss als letztes nach allen in der RPM-Spec bereits aufgeführten Patches angewandt werden. Allein oder an einer anderen Stelle in der Prepare-Reihenfolge wird er nicht funktionieren.
Am einfachsten, Du installierst das SRC-RPM, fügst meinen Patch der Spec zu und machst dann RPM-Build. |
|
| Nach oben |
|
 |
adda
Anmeldedatum: 24.07.2007 Beiträge: 63
|
Verfasst am: 12.03.2010, 20:39 Titel: |
|
|
Wer an einem Treiber interessiert ist, kann mir eine Email schreiben: b.adda@gmx.net
Ich kann den Treiber nicht zum Download stellen.
Deshalb der Abruf. Ist auch fürs Forum zu groß.
Also einfach Email mit Hinweis auf fxusb.
adda |
|
| Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|