Re: puc treiber

From: Bernd Walter <ticso(at)cicely12.cicely.de>
Date: Wed, 16 Mar 2005 18:21:03 +0100

On Wed, Mar 16, 2005 at 11:43:58AM +0100, Jan Winter wrote:
> wenn mein liebes bsd, die Karte dann richtig erkennt, muss man dann mit
> "./MAKEDEV cuaX*".
> Die Devices selber erstellen ?

Ja.

> mein auszug vom Kernel:
>
OK - hier ist die Karte:
> found-> vendor=0x1415, dev=0x9501, revid=0x00
> class=07-00-06, hdrtype=0x00, mfdev=1
> subordinatebus=0 secondarybus=0
> intpin=a, irq=10
> map[10]: type 1, range 32, base 0000b000, size 5
> map[14]: type 1, range 32, base ee000000, size 12
> map[18]: type 1, range 32, base 0000a800, size 5
> map[1c]: type 1, range 32, base ed800000, size 12
> found-> vendor=0x1415, dev=0x9511, revid=0x00
> class=06-80-00, hdrtype=0x00, mfdev=1
> subordinatebus=0 secondarybus=0
> intpin=b, irq=6
> map[10]: type 1, range 32, base 0000a400, size 5
> map[14]: type 1, range 32, base ed000000, size 12
> map[18]: type 1, range 32, base 0000a000, size 5
> map[1c]: type 1, range 32, base ec800000, size 12

Die Einträge aus der pucdata sollten greifen:
        { "Oxford Semiconductor OX16PCI954 UARTs",
            { 0x1415, 0x9501, 0, 0 },
            { 0xffff, 0xffff, 0, 0 },
            {
                { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
                { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
                { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
                { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
            },
        },
        { "Oxford Semiconductor OX9160/OX16PCI954 UARTs (function 1)",
            { 0x1415, 0x9511, 0, 0 },
            { 0xffff, 0xffff, 0, 0 },
            {
                { PUC_PORT_TYPE_COM, 0x10, 0x00, COM_FREQ },
                { PUC_PORT_TYPE_COM, 0x10, 0x08, COM_FREQ },
                { PUC_PORT_TYPE_COM, 0x10, 0x10, COM_FREQ },
                { PUC_PORT_TYPE_COM, 0x10, 0x18, COM_FREQ },
            },
        },

Wichtig sind die beiden hex Zahlen in der Mitte der einzelnen Serielen.
Die erste gibt den bar (die map Zeile aus den pci Meldungen) an und die
zweite den offset innerhalb der bar.
Die size Angabe vom PCI probing ist in bits angegeben.
5 sind dabei 2^5 Bytes, also 32 und 12 = 4096 Bytes.
Prinzipiel könnten also die Werte stimmen, da die 0x10 bar jeweils
groß genug ist.
Keine Ahnung wofür die Karte die anderen maps braucht, aber du hast
ja ein Problem.
Wenn die Specs für eine seriele falsch sind, dann stellt sich die
Frage welche, deshalb solltest du die Serielen alle rauswerfen, bis
auf die erste vom Hauptchip auf 0x10/0x00.
Wenn das läuft kannst du nach und nach die Serielen wieder reinnehmen
und schauen welche Ärger macht.
Für die die Ärger machen musst du die richtigen Werte letzlich durch
probieren ermitteln - gute Ansätze wären auf bar 0x18 und allen n*0x8
Offsets zu versuchen.
Was mich nur wundert ist, dass du keine externen Serielen Chips hast.
Die Serielen müssten dann ja eigendlich in den PCI chips drin sein und
dann sollte das Mapping nicht mehr Kartenspezifisch sein.

-- 
B.Walter                   BWCT                http://www.bwct.de
bernd(at)bwct.de                                  info(at)bwct.de
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 16 Mar 2005 - 18:23:43 CET

search this site