jornada 568 port

Olivier Houchard mlfbsd at ci0.org
Tue Sep 11 16:43:20 PDT 2007


On Wed, Sep 12, 2007 at 12:42:34AM +0400, Mikhael Skvortsov wrote:
> I'm trying to port FreeBSD to HP Jornada 568 PDA (http://en.wikipedia.org/wiki/Jornada_560_series). Boot process freezes almost just after enabling MMU: while sending something to UART
> 
>         cpufunc_control(0x337f, 0x107d);
>         arm_vector_init(ARM_VECTORS_LOW, ARM_VEC_ALL);
> +       printf("MMU, I-cache, D-cache, WB enabled.\n");
> 
> minicom receives only first nine chars plus a random one, i. e. "MMU, I-cae".
> What can make this happening? I'm stuck without any ability to debug code.
> 
> --
> Regards, Mikhael

Hi Mikhael,

Your problem is likely related to the fact the sa11x0 serial driver is
poorly written. The standard 16550 driver should work fine, however.
Could you try the (untested, because I can't anymore) attached patch, which
just switches the driver, to see if it makes a difference ?

Thanks,

Olivier 
-------------- next part --------------
Index: arm/sa11x0/files.sa11x0
===================================================================
RCS file: /cognet/ncvs/src/sys/arm/sa11x0/files.sa11x0,v
retrieving revision 1.2
diff -u -p -r1.2 files.sa11x0
--- arm/sa11x0/files.sa11x0	14 May 2004 13:26:52 -0000	1.2
+++ arm/sa11x0/files.sa11x0	11 Sep 2007 23:37:49 -0000
@@ -7,5 +7,5 @@ arm/sa11x0/sa11x0_io_asm.S 	optional	sai
 arm/sa11x0/sa11x0_irq.S		optional	saip
 arm/sa11x0/sa11x0_irqhandler.c 	optional	saip
 arm/sa11x0/uart_cpu_sa1110.c 	optional	uart saip
-arm/sa11x0/uart_dev_sa1110.c	optional	uart saip
 arm/sa11x0/uart_bus_sa1110.c	optional	uart saip
+dev/uart/uart_dev_ns8250.c	optional	uart
Index: arm/sa11x0/uart_bus_sa1110.c
===================================================================
RCS file: /cognet/ncvs/src/sys/arm/sa11x0/uart_bus_sa1110.c,v
retrieving revision 1.3
diff -u -p -r1.3 uart_bus_sa1110.c
--- arm/sa11x0/uart_bus_sa1110.c	5 Jan 2005 21:58:48 -0000	1.3
+++ arm/sa11x0/uart_bus_sa1110.c	11 Sep 2007 23:36:50 -0000
@@ -70,7 +70,7 @@ uart_sa1110_probe(device_t dev)
 
 	sc = device_get_softc(dev);
 	sc->sc_sysdev = SLIST_FIRST(&uart_sysdevs);
-	sc->sc_class = &uart_sa1110_class;
+	sc->sc_class = &uart_ns8250_class;
 	bcopy(&sc->sc_sysdev->bas, &sc->sc_bas, sizeof(sc->sc_bas));
 	return(uart_bus_probe(dev, 0, 0, 0, 0));
 	return (0);
Index: arm/sa11x0/uart_cpu_sa1110.c
===================================================================
RCS file: /cognet/ncvs/src/sys/arm/sa11x0/uart_cpu_sa1110.c,v
retrieving revision 1.7
diff -u -p -r1.7 uart_cpu_sa1110.c
--- arm/sa11x0/uart_cpu_sa1110.c	2 Apr 2007 22:00:21 -0000	1.7
+++ arm/sa11x0/uart_cpu_sa1110.c	11 Sep 2007 23:27:08 -0000
@@ -56,7 +56,7 @@ int
 uart_cpu_getdev(int devtype, struct uart_devinfo *di)
 {
 
-	di->ops = uart_getops(&uart_sa1110_class);
+	di->ops = uart_getops(&uart_ns8250_class);
 	di->bas.chan = 0;
 	di->bas.bst = &sa11x0_bs_tag;
 	di->bas.bsh = sa1110_uart_vaddr;


More information about the freebsd-arm mailing list