kern/69127: [patch] EtherLink III LAN PC Card 3C589D not detected
Andrew Belashov
bel at orel.ru
Thu Jul 15 13:30:45 PDT 2004
>Number: 69127
>Category: kern
>Synopsis: [patch] EtherLink III LAN PC Card 3C589D not detected
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Jul 15 20:30:33 GMT 2004
>Closed-Date:
>Last-Modified:
>Originator: Andrew Belashov
>Release: FreeBSD 5.2-CURRENT i386
>Organization:
ORIS
>Environment:
System: FreeBSD belnb.localdomain 5.2-CURRENT FreeBSD 5.2-CURRENT #12: Thu Jul 15 22:54:29 MSD 2004 bel at belnb.localdomain:/usr/obj/usr/src/sys/BELNBO i386
Machine: Fujitsu FMV-BIBLIO NU13 Notebook (Pentium I @133MHz),
TI1131 CardBus controller.
>Description:
Some PCMCIA (PC Card) does not detected in NEWCARD code.
>How-To-Repeat:
Insert card. Card does not detected. Messages on console:
----------------------------------------------------
pccard0: read_cis
exca_mem_map window 0 bus 88010000+1000 card addr 0
common memory
exca_do_mem_map window 0: 0010 8010 0000 88 (88010000+00001000.00001000*00000000
)
attribtue memory
exca_do_mem_map window 0: 0010 8010 4000 88 (88010000+00001000.00001000*00000000
)
[...]
pccard0: CIS tuple chain:
unhandled CISTPL 40
40 00
CISTPL_NONE
00
CISTPL_NONE
00
[...]
pccard0: Card has no functions!
cbb0: PC Card card activation failed
----------------------------------------------------
>Fix:
This patch correct?
--- exca.c.diff begins here ---
--- sys/dev/exca/exca.c.orig Tue Oct 7 08:29:04 2003
+++ sys/dev/exca/exca.c Thu Jul 15 22:51:02 2004
@@ -180,9 +180,12 @@
{
struct mem_map_index_st *map;
struct pccard_mem_handle *mem;
+ uint32_t offset;
map = &mem_map_index[win];
mem = &sc->mem[win];
+ offset = ((mem->cardaddr >> EXCA_CARDMEM_ADDRX_SHIFT) -
+ (mem->addr >> EXCA_SYSMEM_ADDRX_SHIFT)) & 0x3fff;
exca_putb(sc, map->sysmem_start_lsb,
(mem->addr >> EXCA_SYSMEM_ADDRX_SHIFT) & 0xff);
exca_putb(sc, map->sysmem_start_msb,
@@ -201,9 +204,9 @@
(mem->addr >> EXCA_MEMREG_WIN_SHIFT) & 0xff);
exca_putb(sc, map->cardmem_lsb,
- (mem->cardaddr >> EXCA_CARDMEM_ADDRX_SHIFT) & 0xff);
+ offset & 0xff);
exca_putb(sc, map->cardmem_msb,
- ((mem->cardaddr >> (EXCA_CARDMEM_ADDRX_SHIFT + 8)) &
+ ((offset >> 8) &
EXCA_CARDMEM_ADDRX_MSB_ADDR_MASK) |
((mem->kind == PCCARD_A_MEM_ATTR) ?
EXCA_CARDMEM_ADDRX_MSB_REGACTIVE_ATTR : 0));
--- exca.c.diff ends here ---
With best regards,
Andrew Belashov.
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list