Воскресенье, 27 декабря 2009 г.

sis 190/191

Просмотров: 1741 | Подписаться на комментарии по RSS |

Скачиваем драйвер:

%wget -c http://pohoyda.gmxhome.de/sis190-freebsd-7.tar.gz
%tar xzf sis190-freebsd-7.tar.gz

Под FreeBSD 7 не пробовал, но под FreeBSD 8 пришлось сделать патчь:

--- if_sis19x.c.orig	2008-04-23 11:53:14.000000000 +0800
+++ if_sis19x.c	2010-01-24 00:06:43.000000000 +0700
@@ -92,13 +92,14 @@ MODULE_DEPEND(sis, miibus, 1, 1, 1);
  */
 static struct sis_type sis19x_devs[] = {
 	{ SIS_VENDORID, SIS_DEVICEID_190, "SiS 190 10/100BaseTX" },
+	{ SIS_VENDORID, SIS_DEVICEID_191, "SiS 190 10/100BaseTX" },
 	{ 0, 0, NULL }
 };
 
 static int sis_probe		(device_t);
 static int sis_attach		(device_t);
 static int sis_detach		(device_t);
-static void sis_shutdown	(device_t);
+static int sis_shutdown		(device_t);
 
 static int sis_miibus_readreg	(device_t, int, int);
 static int sis_miibus_writereg	(device_t, int, int, int);
@@ -621,12 +622,14 @@ sis_attach(dev)
 	    MTX_DEF | MTX_RECURSE);
         callout_init_mtx(&sc->sis_stat_ch, &sc->sis_mtx, 0);
 
-	if (pci_get_device(dev) != SIS_DEVICEID_190) {
-		error = ENXIO;
+	if (pci_get_device(dev) == SIS_DEVICEID_190)
+		sc->sis_type = SIS_TYPE_190;
+	else if (pci_get_device(dev) == SIS_DEVICEID_191)
+		sc->sis_type = SIS_TYPE_190;
+	else {
+		error =ENXIO;
 		goto fail;
 	}
-
-	sc->sis_type = SIS_TYPE_190;
 	sc->sis_rev = pci_read_config(dev, PCIR_REVID, 1);
 
 	/*
@@ -885,8 +888,9 @@ sis_detach(dev)
 /*
  * Stop all chip I/O so that the kernel's probe routines don't
  * get confused by errant DMAs when rebooting.
- */
-static void
+*/
+
+static int
 sis_shutdown(dev)
 	device_t		dev;
 {
@@ -898,6 +902,7 @@ sis_shutdown(dev)
 	sis_reset(sc);
 	sis_stop(sc);
 	SIS_UNLOCK(sc);
+	return (0);
 }

Сохраним его в file.patch и поропатчим исходники:

%cd sis190-freebsd-7;patch -p0 < ../file.patch

PS: Этот патчь УГ. Я не программист, и за этого получилось криво. Причем постоянно задержки.

В messages летит куча хлама такого вида:

sis19x0: watchdog timeout
sis19x0: watchdog timeout
sis19x0: error_bits=0x40020001
sis19x0: watchdog timeout
sis19x0: watchdog timeout
sis19x0: watchdog timeout
sis19x0: watchdog timeout
sis19x0: watchdog timeout

Метки: | | |

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

(обязательно)