cf wlan card initialization

bernhard distl distlb at student.ethz.ch
Wed Jan 18 10:33:46 EST 2006


hello

i am working with a hp ipaq hx2410 which has a built-in wireless lan
module connected to the processors pcmcia/cf interface.
I want to try and write a driver for it. I took the airo_cs module as
reference. In the first step i tried to register the card with the
pcmcia system. The code for my module only does pcmcia handling without
connecting the card to any other driver functionality yet. When i load
the module some card settings seem to get messed up. I hope that you can
help me to figure out what i am doing wrong.

before i load my module the cardctl config command gives the following:

Socket 0:
  Vcc 3.3V  Vpp1 3.3V  Vpp2 3.3V
Socket 1:
  not configured

and dump_cisreg:

Socket 0 function 0:
  Config register base = 0x0200, mask = 0x0007
  read config register: No such device

when i the module i added some debug output:

acxcs_attach()
acxcs_event(0x000004)
acxcs_config(0xc3f493a0)
link->conf.configbase> 0x0200
link->conf.present> 0x7
acxcs_config(0xc3f493a0) parsing tuple
acxcs_config(0xc3f493a0) checking audio output
acxcs_config(0xc3f493a0) checking power settings
acxcs_config(0xc3f493a0) cfg->vcc.present = 7
acxcs_config(0xc3f493a0) cfg->vcc.param[CISTPL_POWER_VNOM] = 330000
acxcs_config(0xc3f493a0) dflt.vcc.param[CISTPL_POWER_VNOM] = 330000
acxcs_config(0xc3f493a0) cfg->vpp1.present = 0
acxcs_config(0xc3f493a0) cfg->vpp2.present = 0
acxcs_config(0xc3f493a0) link->conf.Vcc = 33
acxcs_config(0xc3f493a0) checking interrupt
acxcs_config(0xc3f493a0) checking io ports
cxcs_config(0xc3f493a0) cfg->io.nwin 0x0000 , dflt.io.nwin 0x0000
acxcs_config(0xc3f493a0) check setting up memory window
acxcs_config(0xc3f493a0): cfg->mem.nwin> 0x0001, dflt.mem.nwin: 0x0001
acxcs_config() in setting up memory window
acxcs_config(0xc3f493a0) mem->win[0].host_addr= 0x0,
acxcs_config(0xc3f493a0) dflt.mem->win[0].host_addr= 0x0,
acxcs_config(0xc3f493a0) mem->win[0].len= 0x2048,
acxcs_config(0xc3f493a0) dflt.mem->win[0].len= 0x2048,
acxcs_config(0xc3f493a0) mem->win[0].card_addr= 0x0,
acxcs_config(0xc3f493a0) dflt.mem->win[0].card_addr= 0x0,
acxcs_config(0xc3f493a0) req.Base= 0x0, req.Size= 2048
acxcs_config() pcmcia_request_window != 0 but skipping goto next_entry
acxcs_config(( pcmcia_map_mem_page != 0) but skipping goto next_entry
acxcs_config(0xc3f493a0) requesting irq
acxcs_config(0xc3f493a0) requesting configuration
acx_cs(0xc3f493a0): index 0x01: Vcc 3.3, irq 86

and after that cardctl config and dump_cisreg have different output:

cardctl config:
Socket 0:
  Vcc 0.2V  Vpp1 51.2V  Vpp2 109051904.0V
  interface type is   irq 86 [exclusive] [level]
  function 0:
    config base 0x0007
      option 0x00 status 0x07 pin 0x00
Socket 1:
  not configured

dump_cisreg:
Socket 0 function 0:
  Config register base = 0x0200, mask = 0x0007
  Configuration option register = 0x41
    [level_req] [index = 0x01]
  Card configuration and status register = 00

  Pin replacement register = 0x02
    [ready]


the voltage readings seem to be incorrect, but if i use another
(working) cf card the voltage readings are the same and the card works fine.
as you can see pcmcia_request_window fails (and there are no io ports
allocated).
also the config base in cardctl config is now 0x0007 and dump_cisreg
does not say "no such device" any more.

for more information (cardctl ident,info.status and dmesg) please see
http://nw.distl.net/hx2410/pre-modprobe-acx.txt
http://nw.distl.net/hx2410/post-modprobe-acx.txt
and the module source for the module (currently built for the 2.5.15-rc2
kernel) is at
http://nw.distl.net/hx2410/acx.c

can you give me any hints on how to get this card set up properly?

thank you
bernhard distl





More information about the linux-pcmcia mailing list