LINUX.ORG.RU

Винмомед Zyxel Omni 56k PCI в Мандриве/2007 Free


0

0

Единственное, что мешает полностью перейти на Линух - это невозможность заставить работать эту железяку. Пробовал pctel-0.9.7-9 с экспериментальной поддержкой ядра 2.6 ставить - не хочет компилить модули (к сожалению, лог выложить не могу, поскольку Линукс пока снес), даунгрэйд до ядра 2.4 тоже не хочется делать. Может быть у кого-нибудь найдется rpm пакет с этими злосчастными модулями (эх, а в АСП линухе он уже в самом дистре есть. Ну никак не хочет Мандрива упрощать жизнь юзерам) Просьба не отправлять на линмопедс.орг - плавали, знаем.

anonymous

Была такая же фигня, но на FC5/FC6. Сделал патчик, который фиксит сборку дров под 2.6.18/19. Отправил мейнтенеру - может включат в дерево.

Вот патчик:

--- src/configure.orig 2006-05-25 16:25:09.000000000 +0400 +++ src/configure 2007-01-26 13:17:02.000000000 +0300 @@ -433,8 +433,20 @@ fi # -# find out exact kernel version from version.h file +# find out exact kernel version from version.h or utsrelease.h file # +if [ -f $kernel_inc/linux/utsrelease.h ] +then +echo -n "checking for kernel version in utsrelease.h..." +cat >t.c <<EOF +#include <stdio.h> +#include "$kernel_inc/linux/utsrelease.h" +int main() { + printf("%s\n", UTS_RELEASE); + return 0; +} +EOF +else echo -n "checking for kernel version in version.h..." cat >t.c <<EOF #include <stdio.h> @@ -444,6 +456,7 @@ return 0; } EOF +fi gcc -I${kernel_inc} -o t t.c uts_release=`./t` rm ./t ./t.c --- src/Makefile-2.6.in.orig 2006-04-02 19:41:18.000000000 +0400 +++ src/Makefile-2.6.in 2007-01-26 13:32:59.000000000 +0300 @@ -56,7 +56,7 @@ clean: rm -f vuart.o i8xxhal.o binary.a built-in.o - rm -f linmodem-2.6.o ptserial-2.6.o ptserial_hw-2.6.o + rm -f linmodem-2.6.o ptserial-2.6.o ptserial_hw-2.6.o ptserial_pci-2.6.o rm -f linmodem.o pctel.o pctel_hw.o rm -f linmodem.ko pctel.ko pctel_hw.ko rm -f linmodem.mod.c pctel.mod.c pctel_hw.mod.c @@ -68,6 +68,7 @@ rm -f .linmodem-2.6.o.cmd .ptserial-2.6.o.cmd .ptserial_hw-2.6.o.cmd rm -f .ptserial_pci-2.6.o.cmd rm -rf .tmp_versions + rm -f Module.symvers binary.a: $(BIN_OBJS) @echo " LD binary.a" --- src/linmodem-2.6.c.orig 2006-05-25 16:12:36.000000000 +0400 +++ src/linmodem-2.6.c 2007-01-26 12:57:19.000000000 +0300 @@ -21,9 +21,12 @@ * mapbase is the physical address of the IO port. * membase is an 'ioremapped' cookie. */ -#include <linux/config.h> #include <linux/version.h> - +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)) +#include <linux/autoconf.h> +#else +#include <linux/config.h> +#endif #include <linux/module.h> #include <linux/ioport.h> #include <linux/init.h> @@ -453,7 +456,11 @@ else if (lsr & UART_LSR_FE) flag = TTY_FRAME; } +#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19)) + if (uart_handle_sysrq_char(&p->port, ch)) +#else if (uart_handle_sysrq_char(&p->port, ch, regs)) +#endif goto ignore_char; #if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13) ) @@ -599,7 +606,7 @@ i->head = &p->list; spin_unlock_irq(&i->lock); - ret = request_irq(p->port.irq, p->ops->interrupt, + ret = request_irq(p->port.irq,(irq_handler_t) p->ops->interrupt, irq_flags, "serial", i); if (ret < 0) serial_do_unlink(i, p); --- src/ptserial-2.6.c.orig 2006-05-25 16:12:36.000000000 +0400 +++ src/ptserial-2.6.c 2007-01-26 12:53:00.000000000 +0300 @@ -4,9 +4,12 @@ * 04/05: Added AC97 Codec ID reporting. * Robert Thornburrow <robert.thornburrow@tsac.fsnet.co.uk> */ -#include <linux/config.h> #include <linux/version.h> - +#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)) +#include <linux/autoconf.h> +#else +#include <linux/config.h> +#endif #include <linux/module.h> #include <linux/ioport.h> #include <linux/init.h> @@ -183,8 +186,12 @@ else if (lsr & UART_LSR_FE) flag = TTY_FRAME; } +#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19)) + if (uart_handle_sysrq_char(&p->port, ch)) +#else if (uart_handle_sysrq_char(&p->port, ch, regs)) - goto ignore_char; +#endif + goto ignore_char; /* this next part changes sometime before 2.6.13 in 8250.c */ #if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13) ) if ((lsr & p->port.ignore_status_mask) == 0) { @@ -654,7 +661,9 @@ .reg = { .owner = THIS_MODULE, .driver_name = "pctel", +#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)) .devfs_name = "ttpctel/", +#endif .dev_name = "ttyS_PCTEL", .major = PCTEL_MAJOR, .minor = PCTEL_MINOR, --- src/ptmodule.c.orig 2005-04-07 11:02:15.000000000 +0400 +++ src/ptmodule.c 2007-01-26 12:41:29.000000000 +0300 @@ -5,8 +5,12 @@ * $Id: ptmodule.c,v 1.5 2005/04/07 07:02:15 robert Exp $ */ -#include <linux/config.h> #include <linux/version.h> +#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)) +#include <linux/autoconf.h> +#else +#include <linux/config.h> +#endif #include <linux/module.h> #include <linux/kernel.h> #include <linux/types.h> --- src/ptserial_hw-2.6.c.orig 2005-09-17 20:54:18.000000000 +0400 +++ src/ptserial_hw-2.6.c 2007-01-26 12:41:55.000000000 +0300 @@ -6,8 +6,12 @@ * $Id: ptserial_hw-2.6.c,v 1.3 2005/09/17 16:54:18 robert Exp $ */ -#include <linux/config.h> #include <linux/version.h> +#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)) +#include <linux/autoconf.h> +#else +#include <linux/config.h> +#endif #include <linux/module.h> #include <linux/kernel.h> #include <linux/types.h> --- src/ptserial-2.6.h.orig 2005-08-02 14:03:00.000000000 +0400 +++ src/ptserial-2.6.h 2007-01-26 12:42:54.000000000 +0300 @@ -21,9 +21,12 @@ #ifndef __PTSERIAL_2_6_H #define __PTSERIAL_2_6_H - +#include <linux/version.h> +#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)) +#include <linux/autoconf.h> +#else #include <linux/config.h> - +#endif /* Fix by Jeff Trull for Debian Sarge (Kernel 2.6.8) - 20/07/2005 * __iomem is used in kernels 2.6.9 onwards, so need to remove it */ #if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,9) ) --- src/ptserial_pci-2.6.c.orig 2006-05-25 16:12:36.000000000 +0400 +++ src/ptserial_pci-2.6.c 2007-01-26 12:46:27.000000000 +0300 @@ -177,7 +177,7 @@ else offset += idx * board->uart_offset; - maxnr = (pci_resource_len(dev, bar) - board->first_offset) / + maxnr = (unsigned long)(pci_resource_len(dev, bar) - board->first_offset) / (8 << board->reg_shift); if (board->flags & FL_REGION_SZ_CAP && idx >= maxnr)

Если соберется - отпишись сюда, плиз.

еще сделал SRPM, для сборки RPM под FC5/6. Если нужно, готов кинуть в почту.

maxoid
()
Ответ на: комментарий от maxoid

еще раз тот же патч

--- src/configure.orig 2006-05-25 16:25:09.000000000 +0400
+++ src/configure 2007-01-26 13:17:02.000000000 +0300
@@ -433,8 +433,20 @@
fi

#
-# find out exact kernel version from version.h file
+# find out exact kernel version from version.h or utsrelease.h file
#
+if [ -f $kernel_inc/linux/utsrelease.h ]
+then
+echo -n "checking for kernel version in utsrelease.h..."
+cat >t.c <<EOF
+#include <stdio.h>
+#include "$kernel_inc/linux/utsrelease.h"
+int main() {
+ printf("%s\n", UTS_RELEASE);
+ return 0;
+}
+EOF
+else
echo -n "checking for kernel version in version.h..."
cat >t.c <<EOF
#include <stdio.h>
@@ -444,6 +456,7 @@
return 0;
}
EOF
+fi
gcc -I${kernel_inc} -o t t.c
uts_release=`./t`
rm ./t ./t.c
--- src/Makefile-2.6.in.orig 2006-04-02 19:41:18.000000000 +0400
+++ src/Makefile-2.6.in 2007-01-26 13:32:59.000000000 +0300
@@ -56,7 +56,7 @@

clean:
rm -f vuart.o i8xxhal.o binary.a built-in.o
- rm -f linmodem-2.6.o ptserial-2.6.o ptserial_hw-2.6.o
+ rm -f linmodem-2.6.o ptserial-2.6.o ptserial_hw-2.6.o ptserial_pci-2.6.o
rm -f linmodem.o pctel.o pctel_hw.o
rm -f linmodem.ko pctel.ko pctel_hw.ko
rm -f linmodem.mod.c pctel.mod.c pctel_hw.mod.c
@@ -68,6 +68,7 @@
rm -f .linmodem-2.6.o.cmd .ptserial-2.6.o.cmd .ptserial_hw-2.6.o.cmd
rm -f .ptserial_pci-2.6.o.cmd
rm -rf .tmp_versions
+ rm -f Module.symvers

binary.a: $(BIN_OBJS)
@echo " LD binary.a"
--- src/linmodem-2.6.c.orig 2006-05-25 16:12:36.000000000 +0400
+++ src/linmodem-2.6.c 2007-01-26 12:57:19.000000000 +0300
@@ -21,9 +21,12 @@
* mapbase is the physical address of the IO port.
* membase is an 'ioremapped' cookie.
*/
-#include <linux/config.h>
#include <linux/version.h>
-
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18))
+#include <linux/autoconf.h>
+#else
+#include <linux/config.h>
+#endif
#include <linux/module.h>
#include <linux/ioport.h>
#include <linux/init.h>
@@ -453,7 +456,11 @@
else if (lsr & UART_LSR_FE)
flag = TTY_FRAME;
}
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
+ if (uart_handle_sysrq_char(&p->port, ch))
+#else
if (uart_handle_sysrq_char(&p->port, ch, regs))
+#endif
goto ignore_char;

#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13) )
@@ -599,7 +606,7 @@
i->head = &p->list;
spin_unlock_irq(&i->lock);

- ret = request_irq(p->port.irq, p->ops->interrupt,
+ ret = request_irq(p->port.irq,(irq_handler_t) p->ops->interrupt,
irq_flags, "serial", i);
if (ret < 0)
serial_do_unlink(i, p);
--- src/ptserial-2.6.c.orig 2006-05-25 16:12:36.000000000 +0400
+++ src/ptserial-2.6.c 2007-01-26 12:53:00.000000000 +0300
@@ -4,9 +4,12 @@
* 04/05: Added AC97 Codec ID reporting.
* Robert Thornburrow <robert.thornburrow@tsac.fsnet.co.uk>
*/
-#include <linux/config.h>
#include <linux/version.h>
-
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18))
+#include <linux/autoconf.h>
+#else
+#include <linux/config.h>
+#endif
#include <linux/module.h>
#include <linux/ioport.h>
#include <linux/init.h>
@@ -183,8 +186,12 @@
else if (lsr & UART_LSR_FE)
flag = TTY_FRAME;
}
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
+ if (uart_handle_sysrq_char(&p->port, ch))
+#else
if (uart_handle_sysrq_char(&p->port, ch, regs))
- goto ignore_char;
+#endif
+ goto ignore_char;
/* this next part changes sometime before 2.6.13 in 8250.c */
#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13) )
if ((lsr & p->port.ignore_status_mask) == 0) {
@@ -654,7 +661,9 @@
.reg = {
.owner = THIS_MODULE,
.driver_name = "pctel",
+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18))
.devfs_name = "ttpctel/",
+#endif
.dev_name = "ttyS_PCTEL",
.major = PCTEL_MAJOR,
.minor = PCTEL_MINOR,
--- src/ptmodule.c.orig 2005-04-07 11:02:15.000000000 +0400
+++ src/ptmodule.c 2007-01-26 12:41:29.000000000 +0300
@@ -5,8 +5,12 @@
* $Id: ptmodule.c,v 1.5 2005/04/07 07:02:15 robert Exp $
*/

-#include <linux/config.h>
#include <linux/version.h>
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18))
+#include <linux/autoconf.h>
+#else
+#include <linux/config.h>
+#endif
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/types.h>
--- src/ptserial_hw-2.6.c.orig 2005-09-17 20:54:18.000000000 +0400
+++ src/ptserial_hw-2.6.c 2007-01-26 12:41:55.000000000 +0300
@@ -6,8 +6,12 @@
* $Id: ptserial_hw-2.6.c,v 1.3 2005/09/17 16:54:18 robert Exp $
*/

-#include <linux/config.h>
#include <linux/version.h>
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18))
+#include <linux/autoconf.h>
+#else
+#include <linux/config.h>
+#endif
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/types.h>
--- src/ptserial-2.6.h.orig 2005-08-02 14:03:00.000000000 +0400
+++ src/ptserial-2.6.h 2007-01-26 12:42:54.000000000 +0300
@@ -21,9 +21,12 @@

#ifndef __PTSERIAL_2_6_H
#define __PTSERIAL_2_6_H
-
+#include <linux/version.h>
+#if ( LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18))
+#include <linux/autoconf.h>
+#else
#include <linux/config.h>
-
+#endif
/* Fix by Jeff Trull for Debian Sarge (Kernel 2.6.8) - 20/07/2005
* __iomem is used in kernels 2.6.9 onwards, so need to remove it */
#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,9) )
--- src/ptserial_pci-2.6.c.orig 2006-05-25 16:12:36.000000000 +0400
+++ src/ptserial_pci-2.6.c 2007-01-26 12:46:27.000000000 +0300
@@ -177,7 +177,7 @@
else
offset += idx * board->uart_offset;

- maxnr = (pci_resource_len(dev, bar) - board->first_offset) /
+ maxnr = (unsigned long)(pci_resource_len(dev, bar) - board->first_offset) /
(8 << board->reg_shift);

if (board->flags & FL_REGION_SZ_CAP && idx >= maxnr)

maxoid
()
Ответ на: комментарий от anonymous

Вовсе нет.
Для модемов на cm8738 и pct789 (последний как раз соответствует ZyXEL Omni 56K PCI) давно есть дрова под 2.6
Смотреть вот сдесь http://linmodems.technion.ac.il/pctel-linux/welcome.html

вот этот релиз http://linmodems.technion.ac.il/pctel-linux/pctel-0.9.7-9-rht-6.tar.gz поддерживает ядра до 2.6.16 включительно

С патчем, который я запостил выше собирается и работает на вплоть до 2.6.19

maxoid
()
Ответ на: комментарий от maxoid

Не работает все равно. Указываю исходники в /usr - там он автоматически находит все файлы в /usr/include/linux, а после запуска make выдает ошибку "entering /usr dir. Не найдены цели и не задан make файл". Вообще бред какой-то. Что make искать в /usr, когда он должен собирать из /pctel*/src ?

anonymous
()
Ответ на: комментарий от anonymous

Хм...что то ты не совсем то делаешь.
Вот поледовательность действий:
1) убедиться, что стоят пакеты kernel-source, make и gcc
2) проверить, что есть ссылка /lib/modules/версия_ядра/build на сырцы ядра (/usr/src/linux-версия_ядра). Если нет - создать.
3) pctel-0.9.7-9-rht-6.tar.gz скинуть туда, где собираешься это дело компилять
3) развернуть пакет: tar zxvf ./pctel-0.9.7-9-rht-6.tar.gz
4) взять патч из моего поста выше, сохранить его в файле (например pctel.patch) в директории pctel-0.9.7-9-rht-6
5) пропатчить дрова patch -p0 <pctel.patch
6) под рутом запусть скрипт setup в директории pctel-0.9.7-9-rht-6

если не получится - пиши в асю: 167201974

maxoid
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.