Re: ppc fails to attach to puc on 9.1-STABLE, 7.4-STABLE works

John Baldwin <[email protected]>
Newsgroups gmane.os.freebsd.devel.hardware
Message-ID <[email protected]>
On Thursday, January 10, 2013 2:40:52 am Andre Albsmeier wrote:
> [Retrying here, maybe anyone can help...}
> 
> I want my printer port back on 9.1 ;-(
> 
> I have this card:
> 
> puc0@pci0:4:1:0:        class=0x078000 card=0x00121000 chip=0x98359710 
rev=0x01 hdr=0x00
>     vendor     = 'NetMos Technology'
>     device     = 'PCI 9835 Multi-I/O Controller'
>     class      = simple comms
> 
> It attached and worked under 7.4-STABLE (as long as I disabled
> the interrupt using hint.ppc.0.irq=""):
> 
> puc0: <NetMos NM9835 Dual UART and 1284 Printer port> port 
0xdf00-0xdf07,0xde00-0xde07,0xdd00-0xdd07
> ,0xdc00-0xdc07,0xdb00-0xdb07,0xda00-0xda0f irq 17 at device 1.0 on pci4
> puc0: [FILTER]
> uart0: <Non-standard ns8250 class UART with FIFOs> on puc0
> uart0: [FILTER]
> uart1: <Non-standard ns8250 class UART with FIFOs> on puc0
> uart1: [FILTER]
> ppc0: <Parallel port> on puc0
> ppc0: Generic chipset (ECP/EPP/PS2/NIBBLE) in ECP+EPP mode (EPP 1.9)
> ppbus0: <Parallel port bus> on ppc0
> lpt0: <Printer> on ppbus0
> lpt0: Polled port
> 
> 
> Under 9.1 the card does not attach the ppc anymore. The hint entries
> 
> hint.ppc.0.at=puc0
> hint.ppc.0.irq=""
> hint.ppc.0.flags=0x2F
> 
> get ignored and so it probes as ppc1 (failing due to the interrupt
> problem as it was in 7.4 without hints):
> 
> puc0: <NetMos NM9835 Dual UART and 1284 Printer port> port 
0xdf00-0xdf07,0xde00-0xde07,0xdd00-0xdd07
> ,0xdc00-0xdc07,0xdb00-0xdb07,0xda00-0xda0f irq 17 at device 1.0 on pci4
> uart2: <Non-standard ns8250 class UART with FIFOs> at port 1 on puc0
> uart3: <16550 or compatible> at port 2 on puc0
> ppc1: <Parallel port> at port 3 on puc0
> ppc1: Generic chipset (EPP/NIBBLE) in COMPATIBLE mode
> ppc1: failed to register interrupt handler: 6
> device_attach: ppc1 attach returned 6
> 
> Any ideas? How do I construct the hint entries under 9.1 so that
> 
> 1. it does not want to use the interrupt (which made it attach under 7.4)
> 2. it takes the flags 0x2F as it did before.
> 
> I have also never understood if ppc itself needs to attach to
> the irq as well (I thought this all would be handled by puc).

Well, ppc wants to use puc's interrupt, and it should be finding puc's 
interrupt.  Ah, I think I found the bug.  Try this patch to sys/dev/puc/puc.c:

Index: puc.c
===================================================================
--- puc.c	(revision 245225)
+++ puc.c	(working copy)
@@ -622,7 +628,7 @@ puc_bus_setup_intr(device_t dev, device_t child, s
 	if (cookiep == NULL || res != port->p_ires)
 		return (EINVAL);
 	/* We demand that serdev devices use filter_only interrupts. */
-	if (ihand != NULL)
+	if (port->p_type == PUC_TYPE_SERIAL && ihand != NULL)
 		return (ENXIO);
 	if (rman_get_device(port->p_ires) != originator)
 		return (ENXIO);

This should let your ppc device re-use IRQ 17 from your puc device.

-- 
John Baldwin
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hardware
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.