|
Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com |
Re: Novatel Wireless, Merlin UMTS Modem, NRM6831 - WORKS
From: Bolke de Bruin (bdbruin
aub.nl)
Date: Tue Aug 02 2005 - 05:28:34 CDT
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
I do not see any reason why not. See (inline) attachments. Apply both.
And maybe reply to the list if it is working (or not)?
regards,
Bolke
Mark Redding wrote:
>Hi,
>
>would it be possible to share these patches. I've been having similar
>problems with the U530 on generic kernels ( 3.5, 3.6 ). I would love
>patches that work against release if possible.
>
>Regards,
>
>Mark
>
>
>
>>-----Original Message-----
>>From: owner-misc
openbsd.org [mailto:owner-misc
openbsd.org]
>>On Behalf Of Bolke de Bruin
>>Sent: 02 August 2005 09:44
>>To: Federico G. Schwindt
>>Cc: Theo de Raadt; fgsch
cvs.openbsd.org; misc
openbsd.org
>>Subject: Re: Novatel Wireless, Merlin UMTS Modem, NRM6831 - WORKS
>>
>>
>>Federico,
>>
>>The combined patch works. The single patch (eg the second you
>>sent) did
>>not by itself. I have attached the dmesg of both. Please note
>>that the
>>patches have been applied to 3.6 en the kernel is not Generic as I do
>>not have a system currently around with 3.7/current and a
>>cardbus slot.
>>If still necessary I'll take some time to set it up though.
>>
>>Il try to test a little further to see if I can setup a PPP link.
>>
>>Very kind regards,
>>
>>Bolke
>>OpenBSD 3.6 (NET4511) #5: Tue Aug 2 11:33:51 CEST 2005
>> root
mordor.aub.nl:/usr/src/sys/arch/i386/compile/NET4511
>>cpu0: AMD Am486DX4 W/B or Am5x86 W/B 150 ("AuthenticAMD" 486-class)
>>cpu0: FPU
>>real mem = 66691072 (65128K)
>>avail mem = 57421824 (56076K)
>>using 839 buffers containing 3436544 bytes (3356K) of memory
>>mainbus0 (root) bios0 at mainbus0: AT/286+(00) BIOS, date
>>20/40/11, BIOS32 rev. 0
0xf7840 pcibios0 at bios0: rev 2.0
>>
0xf0000/0x10000
>>pcibios0: pcibios_get_intr_routing - function not supported
>>pcibios0: PCI IRQ Routing information unavailable.
>>pcibios0: PCI bus #1 is the last bus
>>bios0: ROM list: 0xc8000/0xa000
>>cpu0 at mainbus0
>>pci0 at mainbus0 bus 0: configuration mode 1 (no bios)
>>pchb0 at pci0 dev 0 function 0 "AMD ElanSC520 PCI" rev 0x00
>>cbb0 at pci0 dev 9 function 0 "Texas Instruments PCI1410
>>CardBus" rev 0x02: irq 10 sis0 at pci0 dev 18 function 0 "NS
>>DP83815 10/100" rev 0x00: DP83816A, irq 11, address
>>00:00:24:c2:0a:14 nsphyter0 at sis0 phy 0: DP83815 10/100
>>integrated, rev. 1 sis1 at pci0 dev 19 function 0 "NS DP83815
>>10/100" rev 0x00: DP83816A, irq 5, address 00:00:24:c2:0a:15
>>nsphyter1 at sis1 phy 0: DP83815 10/100 integrated, rev. 1
>>cardslot0 at cbb0 slot 0 flags 0 cardbus0 at cardslot0: bus 1
>>device 0 cacheline 0x10, lattimer 0x3f pcmcia0 at cardslot0
>>isa0 at mainbus0 isadma0 at isa0 pckbc0 at isa0 port 0x60/5
>>pckbd0 at pckbc0 (kbd slot)
>>pckbc0: using irq 1 for kbd slot
>>wskbd0 at pckbd0: console keyboard
>>wdc0 at isa0 port 0x1f0/8 irq 14
>>wd0 at wdc0 channel 0 drive 0: <SanDisk SDCFB-64>
>>wd0: 1-sector PIO, LBA, 61MB, 125440 sectors
>>wd0(wdc0:0:0): using BIOS timings
>>npx0 at isa0 port 0xf0/16: using exception 16
>>pccom0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
>>pccom0: console
>>pccom1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo
>>biomask f7c5 netmask ffe5 ttymask ffe7
>>dkcsum: wd0 matched BIOS disk 80
>>root on wd0a
>>rootdev=0x0 rrootdev=0x300 rawdev=0x302
>>cis mem map d6257000
>>pcmcia0: CIS tuple chain:
>>CISTPL_DEVICE type=null speed=null
>> 01 03 00 00 ff
>>CISTPL_DEVICE_A type=null speed=null
>> 17 03 00 00 ff
>>CISTPL_LONGLINK_MFC 2 attr:4f attr:ce
>> 06 0b 02 00 4f 00 00 00 00 ce 00 00 00
>>CISTPL_MANFID
>> 20 04 a4 00 af 1a
>>CISTPL_VERS_1
>> 15 2f 06 01 4e 6f 76 61 74 65 6c 20 57 69 72 65
>> 6c 65 73 73 00 4d 65 72 6c 69 6e 20 55 4d 54 53
>> 20 4d 6f 64 65 6d 00 4e 52 4d 36 38 33 31 00 00
>> ff
>>CISTPL_END
>> ff
>>cis mem map d6257000
>>CISTPL_LINKTARGET expected, code ff observed
>>cis mem map d6257000
>>CISTPL_FUNCID
>> 21 02 02 01
>>unhandled CISTPL 22
>> 22 04 00 02 0f 7f
>>CISTPL_CONFIG
>> 1a 06 05 05 00 04 63 02
>>CISTPL_CFTABLE_ENTRY
>> 1b 19 c7 01 99 69 55 1d f6 32 2d a3 60 f8 03 07
>> 50 ff ff 48 c1 05 43 4f 4d 31 00
>>CISTPL_CFTABLE_ENTRY
>> 1b 12 0f 98 a3 60 f8 02 07 50 ff ff 48 c1 05 43
>> 4f 4d 32 00
>>CISTPL_CFTABLE_ENTRY
>> 1b 12 17 98 a3 60 e8 03 07 50 ff ff 48 c1 05 43
>> 4f 4d 33 00
>>CISTPL_CFTABLE_ENTRY
>> 1b 12 1f 98 a3 60 e8 02 07 50 ff ff 48 c1 05 43
>> 4f 4d 34 00
>>CISTPL_CFTABLE_ENTRY
>> 1b 0e 27 98 23 50 ff ff 48 c1 05 43 4f 4d 78 00
>>CISTPL_END
>> ff
>>cis mem map d6257000
>>CISTPL_FUNCID
>> 21 02 02 01
>>unhandled CISTPL 22
>> 22 04 00 02 0f 7f
>>CISTPL_CONFIG
>> 1a 06 05 0a 20 04 63 02
>>CISTPL_CFTABLE_ENTRY
>> 1b 19 c7 01 99 69 55 1d f6 32 2d a3 60 f8 02 07
>> 50 ff ff 48 c1 05 43 4f 4d 36 00
>>CISTPL_CFTABLE_ENTRY
>> 1b 12 0f 98 a3 60 f8 03 07 50 ff ff 48 c1 05 43
>> 4f 4d 37 00
>>CISTPL_CFTABLE_ENTRY
>> 1b 12 17 98 a3 60 e8 02 07 50 ff ff 48 c1 05 43
>> 4f 4d 38 00
>>CISTPL_CFTABLE_ENTRY
>> 1b 12 1f 98 a3 60 e8 03 07 50 ff ff 48 c1 05 43
>> 4f 4d 39 00
>>CISTPL_CFTABLE_ENTRY
>> 1b 0e 27 98 23 50 ff ff 48 c1 05 43 4f 4d 79 00
>>CISTPL_END
>> ff
>>pcmcia0: CIS version PC Card Standard 6.1
>>pcmcia0: CIS info: Novatel Wireless, Merlin UMTS Modem, NRM6831,
>>pcmcia0: Manufacturer code 0xa4, product 0x1aaf
>>pcmcia0: function 0: serial port, ccr addr 400 mask 263
>>pcmcia0: function 0, config table entry 7: I/O card; irq mask
>>ffff; iomask 3, iospace 3f8-3ff; io8 irqpulse audio
>>pcmcia0: function 0, config table entry 15: I/O card; irq
>>mask ffff; iomask 3, iospace 2f8-2ff; io8 irqpulse audio
>>pcmcia0: function 0, config table entry 23: I/O card; irq
>>mask ffff; iomask 3, iospace 3e8-3ef; io8 irqpulse audio
>>pcmcia0: function 0, config table entry 31: I/O card; irq
>>mask ffff; iomask 3, iospace 2e8-2ef; io8 irqpulse audio
>>pcmcia0: function 0, config table entry 39: I/O card; irq
>>mask ffff; iomask 3, iospace 0-7; io8 irqpulse audio
>>pcmcia0: function 1: serial port, ccr addr 420 mask 263
>>pcmcia0: function 1, config table entry 7: I/O card; irq mask
>>ffff; iomask 3, iospace 2f8-2ff; io8 irqpulse audio
>>pcmcia0: function 1, config table entry 15: I/O card; irq
>>mask ffff; iomask 3, iospace 3f8-3ff; io8 irqpulse audio
>>pcmcia0: function 1, config table entry 23: I/O card; irq
>>mask ffff; iomask 3, iospace 2e8-2ef; io8 irqpulse audio
>>pcmcia0: function 1, config table entry 31: I/O card; irq
>>mask ffff; iomask 3, iospace 3e8-3ef; io8 irqpulse audio
>>pcmcia0: function 1, config table entry 39: I/O card; irq
>>mask ffff; iomask 3, iospace 0-7; io8 irqpulse audio pccom2
>>at pcmcia0 function 0 "Novatel Wireless, Merlin UMTS Modem,
>>NRM6831" port 0xa3f8/8: ns16550a, 16 byte fifo pccom3 at
>>pcmcia0 function 1 "Novatel Wireless, Merlin UMTS Modem,
>>NRM6831" port 0xa2f8/8: ns16550a, 16 byte fifo OpenBSD 3.6
>>(NET4511) #4: Tue Aug 2 11:24:27 CEST 2005
>> root
mordor.aub.nl:/usr/src/sys/arch/i386/compile/NET4511
>>cpu0: AMD Am486DX4 W/B or Am5x86 W/B 150 ("AuthenticAMD" 486-class)
>>cpu0: FPU
>>real mem = 66691072 (65128K)
>>avail mem = 57421824 (56076K)
>>using 839 buffers containing 3436544 bytes (3356K) of memory
>>mainbus0 (root) bios0 at mainbus0: AT/286+(00) BIOS, date
>>20/40/11, BIOS32 rev. 0
0xf7840 pcibios0 at bios0: rev 2.0
>>
0xf0000/0x10000
>>pcibios0: pcibios_get_intr_routing - function not supported
>>pcibios0: PCI IRQ Routing information unavailable.
>>pcibios0: PCI bus #1 is the last bus
>>bios0: ROM list: 0xc8000/0xa000
>>cpu0 at mainbus0
>>pci0 at mainbus0 bus 0: configuration mode 1 (no bios)
>>pchb0 at pci0 dev 0 function 0 "AMD ElanSC520 PCI" rev 0x00
>>cbb0 at pci0 dev 9 function 0 "Texas Instruments PCI1410
>>CardBus" rev 0x02: irq 10 sis0 at pci0 dev 18 function 0 "NS
>>DP83815 10/100" rev 0x00: DP83816A, irq 11, address
>>00:00:24:c2:0a:14 nsphyter0 at sis0 phy 0: DP83815 10/100
>>integrated, rev. 1 sis1 at pci0 dev 19 function 0 "NS DP83815
>>10/100" rev 0x00: DP83816A, irq 5, address 00:00:24:c2:0a:15
>>nsphyter1 at sis1 phy 0: DP83815 10/100 integrated, rev. 1
>>cardslot0 at cbb0 slot 0 flags 0 cardbus0 at cardslot0: bus 1
>>device 0 cacheline 0x10, lattimer 0x3f pcmcia0 at cardslot0
>>isa0 at mainbus0 isadma0 at isa0 pckbc0 at isa0 port 0x60/5
>>pckbd0 at pckbc0 (kbd slot)
>>pckbc0: using irq 1 for kbd slot
>>wskbd0 at pckbd0: console keyboard
>>wdc0 at isa0 port 0x1f0/8 irq 14
>>wd0 at wdc0 channel 0 drive 0: <SanDisk SDCFB-64>
>>wd0: 1-sector PIO, LBA, 61MB, 125440 sectors
>>wd0(wdc0:0:0): using BIOS timings
>>npx0 at isa0 port 0xf0/16: using exception 16
>>pccom0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
>>pccom0: console
>>pccom1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo
>>biomask f7c5 netmask ffe5 ttymask ffe7
>>dkcsum: wd0 matched BIOS disk 80
>>root on wd0a
>>rootdev=0x0 rrootdev=0x300 rawdev=0x302
>>cis mem map d6257000
>>pcmcia0: CIS tuple chain:
>>CISTPL_DEVICE type=null speed=null
>> 01 03 00 00 ff
>>CISTPL_DEVICE_A type=null speed=null
>> 17 03 00 00 ff
>>CISTPL_LONGLINK_MFC 2 attr:4f attr:ce
>> 06 0b 02 00 4f 00 00 00 00 ce 00 00 00
>>CISTPL_MANFID
>> 20 04 a4 00 af 1a
>>CISTPL_VERS_1
>> 15 2f 06 01 4e 6f 76 61 74 65 6c 20 57 69 72 65
>> 6c 65 73 73 00 4d 65 72 6c 69 6e 20 55 4d 54 53
>> 20 4d 6f 64 65 6d 00 4e 52 4d 36 38 33 31 00 00
>> ff
>>CISTPL_END
>> ff
>>cis mem map d6257000
>>CISTPL_LINKTARGET expected, code ff observed
>>cis mem map d6257000
>>CISTPL_FUNCID
>> 21 02 02 01
>>unhandled CISTPL 22
>> 22 04 00 02 0f 7f
>>CISTPL_CONFIG
>> 1a 06 05 05 00 04 63 02
>>CISTPL_CFTABLE_ENTRY
>> 1b 19 c7 01 99 69 55 1d f6 32 2d a3 60 f8 03 07
>> 50 ff ff 48 c1 05 43 4f 4d 31 00
>>CISTPL_CFTABLE_ENTRY
>> 1b 12 0f 98 a3 60 f8 02 07 50 ff ff 48 c1 05 43
>> 4f 4d 32 00
>>CISTPL_CFTABLE_ENTRY
>> 1b 12 17 98 a3 60 e8 03 07 50 ff ff 48 c1 05 43
>> 4f 4d 33 00
>>CISTPL_CFTABLE_ENTRY
>> 1b 12 1f 98 a3 60 e8 02 07 50 ff ff 48 c1 05 43
>> 4f 4d 34 00
>>CISTPL_CFTABLE_ENTRY
>> 1b 0e 27 98 23 50 ff ff 48 c1 05 43 4f 4d 78 00
>>CISTPL_END
>> ff
>>cis mem map d6257000
>>CISTPL_FUNCID
>> 21 02 02 01
>>unhandled CISTPL 22
>> 22 04 00 02 0f 7f
>>CISTPL_CONFIG
>> 1a 06 05 0a 20 04 63 02
>>CISTPL_CFTABLE_ENTRY
>> 1b 19 c7 01 99 69 55 1d f6 32 2d a3 60 f8 02 07
>> 50 ff ff 48 c1 05 43 4f 4d 36 00
>>CISTPL_CFTABLE_ENTRY
>> 1b 12 0f 98 a3 60 f8 03 07 50 ff ff 48 c1 05 43
>> 4f 4d 37 00
>>CISTPL_CFTABLE_ENTRY
>> 1b 12 17 98 a3 60 e8 02 07 50 ff ff 48 c1 05 43
>> 4f 4d 38 00
>>CISTPL_CFTABLE_ENTRY
>> 1b 12 1f 98 a3 60 e8 03 07 50 ff ff 48 c1 05 43
>> 4f 4d 39 00
>>CISTPL_CFTABLE_ENTRY
>> 1b 0e 27 98 23 50 ff ff 48 c1 05 43 4f 4d 79 00
>>CISTPL_END
>> ff
>>pcmcia0: CIS version PC Card Standard 6.1
>>pcmcia0: CIS info: Novatel Wireless, Merlin UMTS Modem, NRM6831,
>>pcmcia0: Manufacturer code 0xa4, product 0x1aaf
>>pcmcia0: function 0: serial port, ccr addr 400 mask 263
>>pcmcia0: function 0, config table entry 7: I/O card; irq mask
>>ffff; iomask 3, iospace 3f8-3ff; io8 irqpulse audio
>>pcmcia0: function 0, config table entry 15: I/O card; irq
>>mask ffff; iomask 3, iospace 2f8-2ff; io8 irqpulse audio
>>pcmcia0: function 0, config table entry 23: I/O card; irq
>>mask ffff; iomask 3, iospace 3e8-3ef; io8 irqpulse audio
>>pcmcia0: function 0, config table entry 31: I/O card; irq
>>mask ffff; iomask 3, iospace 2e8-2ef; io8 irqpulse audio
>>pcmcia0: function 0, config table entry 39: I/O card; irq
>>mask ffff; iomask 3, iospace 0-7; io8 irqpulse audio
>>pcmcia0: function 1: serial port, ccr addr 420 mask 263
>>pcmcia0: function 1, config table entry 7: I/O card; irq mask
>>ffff; iomask 3, iospace 2f8-2ff; io8 irqpulse audio
>>pcmcia0: function 1, config table entry 15: I/O card; irq
>>mask ffff; iomask 3, iospace 3f8-3ff; io8 irqpulse audio
>>pcmcia0: function 1, config table entry 23: I/O card; irq
>>mask ffff; iomask 3, iospace 2e8-2ef; io8 irqpulse audio
>>pcmcia0: function 1, config table entry 31: I/O card; irq
>>mask ffff; iomask 3, iospace 3e8-3ef; io8 irqpulse audio
>>pcmcia0: function 1, config table entry 39: I/O card; irq
>>mask ffff; iomask 3, iospace 0-7; io8 irqpulse audio pccom2
>>at pcmcia0 function 0 "Novatel Wireless, Merlin UMTS Modem,
>>NRM6831" port 0xa3f8/8: ns16550a, 16 byte fifo pccom3 at
>>pcmcia0 function 1 "Novatel Wireless, Merlin UMTS Modem,
>>NRM6831" port 0xa2f8/8: ns16550a, 16 byte fifo
Index: sys/dev/pcmcia/pcmcia.c
===================================================================
RCS file: /cvs/src/sys/dev/pcmcia/pcmcia.c,v
retrieving revision 1.34
diff -u -p -r1.34 pcmcia.c
--- sys/dev/pcmcia/pcmcia.c 2005/01/27 17:03:23 1.34
+++ sys/dev/pcmcia/pcmcia.c 2005/08/01 23:07:45

-512,22 +512,16 
pcmcia_function_enable(pf)
pcmcia_ccr_write(pf, PCMCIA_CCR_SOCKETCOPY, 0);
if (pcmcia_mfc(pf->sc)) {
- long tmp, iosize;
-
- tmp = pf->pf_mfc_iomax - pf->pf_mfc_iobase;
- /* round up to nearest (2^n)-1 */
- for (iosize = 1; iosize < tmp; iosize <<= 1)
- ;
- iosize--;
-
pcmcia_ccr_write(pf, PCMCIA_CCR_IOBASE0,
- pf->pf_mfc_iobase & 0xff);
+ (pf->pf_mfc_iobase >> 0) & 0xff);
pcmcia_ccr_write(pf, PCMCIA_CCR_IOBASE1,
- (pf->pf_mfc_iobase >> 8) & 0xff);
- pcmcia_ccr_write(pf, PCMCIA_CCR_IOBASE2, 0);
- pcmcia_ccr_write(pf, PCMCIA_CCR_IOBASE3, 0);
-
- pcmcia_ccr_write(pf, PCMCIA_CCR_IOSIZE, iosize);
+ (pf->pf_mfc_iobase >> 8) & 0xff);
+ pcmcia_ccr_write(pf, PCMCIA_CCR_IOBASE2,
+ (pf->pf_mfc_iobase >> 16) & 0xff);
+ pcmcia_ccr_write(pf, PCMCIA_CCR_IOBASE3,
+ (pf->pf_mfc_iobase >> 24) & 0xff);
+ pcmcia_ccr_write(pf, PCMCIA_CCR_IOSIZE,
+ pf->pf_mfc_iomax - pf->pf_mfc_iobase);
}
#ifdef PCMCIADEBUG

-644,33 +638,29 
pcmcia_io_map(pf, width, offset, size, p
*/
if (pcmcia_mfc(pf->sc)) {
- long tmp, iosize;
+ bus_addr_t iobase = pcihp->addr;
+ bus_addr_t iomax = pcihp->addr + pcihp->size - 1;
if (pf->pf_mfc_iomax == 0) {
- pf->pf_mfc_iobase = pcihp->addr + offset;
- pf->pf_mfc_iomax = pf->pf_mfc_iobase + size;
+ pf->pf_mfc_iobase = iobase;
+ pf->pf_mfc_iomax = iomax;
} else {
- /* This makes the assumption that nothing overlaps. */
- if (pf->pf_mfc_iobase > pcihp->addr + offset)
- pf->pf_mfc_iobase = pcihp->addr + offset;
- if (pf->pf_mfc_iomax < pcihp->addr + offset + size)
- pf->pf_mfc_iomax = pcihp->addr + offset + size;
+ if (iobase < pf->pf_mfc_iobase)
+ pf->pf_mfc_iobase = iobase;
+ if (iomax > pf->pf_mfc_iomax)
+ pf->pf_mfc_iomax = iomax;
}
- tmp = pf->pf_mfc_iomax - pf->pf_mfc_iobase;
- /* round up to nearest (2^n)-1 */
- for (iosize = 1; iosize >= tmp; iosize <<= 1)
- ;
- iosize--;
-
pcmcia_ccr_write(pf, PCMCIA_CCR_IOBASE0,
- pf->pf_mfc_iobase & 0xff);
+ (pf->pf_mfc_iobase >> 0) & 0xff);
pcmcia_ccr_write(pf, PCMCIA_CCR_IOBASE1,
- (pf->pf_mfc_iobase >> 8) & 0xff);
- pcmcia_ccr_write(pf, PCMCIA_CCR_IOBASE2, 0);
- pcmcia_ccr_write(pf, PCMCIA_CCR_IOBASE3, 0);
-
- pcmcia_ccr_write(pf, PCMCIA_CCR_IOSIZE, iosize);
+ (pf->pf_mfc_iobase >> 8) & 0xff);
+ pcmcia_ccr_write(pf, PCMCIA_CCR_IOBASE2,
+ (pf->pf_mfc_iobase >> 16) & 0xff);
+ pcmcia_ccr_write(pf, PCMCIA_CCR_IOBASE3,
+ (pf->pf_mfc_iobase >> 24) & 0xff);
+ pcmcia_ccr_write(pf, PCMCIA_CCR_IOSIZE,
+ pf->pf_mfc_iomax - pf->pf_mfc_iobase);
reg = pcmcia_ccr_read(pf, PCMCIA_CCR_OPTION);
reg |= PCMCIA_CCR_OPTION_ADDR_DECODE;
Index: sys/dev/pcmcia/pcmciavar.h
===================================================================
RCS file: /cvs/src/sys/dev/pcmcia/pcmciavar.h,v
retrieving revision 1.18
diff -u -p -r1.18 pcmciavar.h
--- sys/dev/pcmcia/pcmciavar.h 2005/01/27 17:03:23 1.18
+++ sys/dev/pcmcia/pcmciavar.h 2005/08/01 23:07:45

-124,10 +124,10 
struct pcmcia_function {
#define pf_ccrh pf_pcmh.memh
#define pf_ccr_mhandle pf_pcmh.mhandle
#define pf_ccr_realsize pf_pcmh.realsize
- bus_addr_t pf_ccr_offset;
+ bus_size_t pf_ccr_offset;
int pf_ccr_window;
- long pf_mfc_iobase;
- long pf_mfc_iomax;
+ bus_addr_t pf_mfc_iobase;
+ bus_addr_t pf_mfc_iomax;
int (*ih_fct)(void *);
void *ih_arg;
int ih_ipl;
Index: sys/dev/pci/pccbb.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/pccbb.c,v
retrieving revision 1.35
diff -u -p -r1.35 pccbb.c
--- sys/dev/pci/pccbb.c 2005/01/27 17:03:23 1.35
+++ sys/dev/pci/pccbb.c 2005/08/01 23:54:40

-1958,6 +1958,7 
pccbb_pcmcia_io_alloc(pch, start, size,
int flags = 0;
bus_space_tag_t iot;
bus_space_handle_t ioh;
+ bus_addr_t mask;
#if rbus
rbus_tag_t rb;
#endif

-1965,6 +1966,34 
pccbb_pcmcia_io_alloc(pch, start, size,
align = size; /* XXX: funny??? */
}
+ if (start != 0) {
+ /* XXX: assume all card decode lower 10 bits by its hardware */
+ mask = 0x3ff;
+ /* enforce to use only masked address */
+ start &= mask;
+ } else {
+ /*
+ * calculate mask:
+ * 1. get the most significant bit of size (call it msb).
+ * 2. compare msb with the value of size.
+ * 3. if size is larger, shift msb left once.
+ * 4. obtain mask value to decrement msb.
+ */
+ bus_size_t size_tmp = size;
+ int shifts = 0;
+
+ mask = 1;
+ while (size_tmp) {
+ ++shifts;
+ size_tmp >>= 1;
+ }
+ mask = (1 << shifts);
+ if (mask < size) {
+ mask <<= 1;
+ }
+ mask--;
+ }
+
/*
* Allocate some arbitrary I/O space.
*/

-1973,8 +2002,7 
pccbb_pcmcia_io_alloc(pch, start, size,
#if rbus
rb = ((struct pccbb_softc *)(ph->ph_parent))->sc_rbus_iot;
- /* XXX: I assume all card decode lower 10 bits by its hardware */
- if (rbus_space_alloc(rb, start, size, 0x3ff, align, 0, &ioaddr, &ioh)) {
+ if (rbus_space_alloc(rb, start, size, mask, align, 0, &ioaddr, &ioh)) {
return 1;
}
#else

-1983,7 +2011,7 
pccbb_pcmcia_io_alloc(pch, start, size,
if (bus_space_map(iot, start, size, 0, &ioh)) {
return 1;
}
- DPRINTF(("pccbb_pcmcia_io_alloc map port %lx+%lx\n",
+ DPRINTF(("pccbb_pcmcia_io_alloc map port 0x%lx+0x%lx\n",
(u_long) ioaddr, (u_long) size));
} else {
flags |= PCMCIA_IO_ALLOCATED;
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]