Tuple and base-address question

Matthias Wenzel linux-pcmcia at mazzoo.de
Thu Nov 9 07:15:19 EST 2006


as a pcmcia-newbie I try to write a driver for a DECT-basestation.
It is based on an ISA-bus-design, and interfaced to PCMCIA through a
National Semiconductor PCM16C010 [0].

So far the driver only dumps what is in the tuples. Following tuples are
         *  0x01 - CISTPL_DEVICE
         *  0x14 - CISTPL_NO_LINK
         *  0x15 - CISTPL_VERS_1
         *  0x1a - CISTPL_CONFIG
         *  0x1b - CISTPL_CFTABLE_ENTRY
         *  0x21 - CISTPL_FUNCID

Tuple contents, see [1]
I am trying to read more tuples with pcmcia_get_next_tuple() but
seemingly there's only one tuple for each entry, and I believe I dump

How do I derive a memory baseaddress from the values in [1]. Does
cftable_entry[0].mem.win[*] make any sense? Two areas of 0x1000 _both_
starting at 0x0000... but the datasheet [0] has two areas 0x0000-0x0800
and 0x1000-0x1060.

How would I calculate a 32-(or 64-)bit address for accessing that mem?
Or should I plainly use config.base (0x1020) as 32 bit base address

thanks for any help,


[0] http://eshop.engineering.uiowa.edu/NI/pdfs/01/21/DS012147.pdf
com_on_air_cs: card in slot        pcmcia0.0
com_on_air_cs: prod_id[0]          DECTDataDevice
com_on_air_cs: prod_id[1]          PCMCIA
com_on_air_cs: device.ndev         0x1
com_on_air_cs: device.dev[0].type  0x0d
com_on_air_cs: device.dev[0].wp    0x00
com_on_air_cs: device.dev[0].speed 0x01f4
com_on_air_cs: device.dev[0].size  0x0400
com_on_air_cs: version_1.major     0x4
com_on_air_cs: version_1.minor     0x1
com_on_air_cs: version_1.ns        0x2
com_on_air_cs: version_1.ofs[0]    0x0
com_on_air_cs: version_1.ofs[1]    0xf
com_on_air_cs: version_1.ofs[2]    0x0
com_on_air_cs: version_1.ofs[3]    0xe3
com_on_air_cs: version_1.str       DECTDataDevice
com_on_air_cs: config.last_idx     0x5
com_on_air_cs: config.base         0x1020
com_on_air_cs: config.rmask[0]     0x1
com_on_air_cs: config.rmask[1]     0x0
com_on_air_cs: config.rmask[2]     0x0
com_on_air_cs: config.rmask[3]     0x0
com_on_air_cs: config.subtuples    0x0
com_on_air_cs: cftable_entry[0].index        0x5
com_on_air_cs: cftable_entry[0].flags        0x19
com_on_air_cs: cftable_entry[0].interface    0x1
com_on_air_cs: cftable_entry[0].vcc.present  0x37
com_on_air_cs: cftable_entry[0].vpp1.present 0x0
com_on_air_cs: cftable_entry[0].vpp2.present 0x0
com_on_air_cs: cftable_entry[0].timing.wait  0x2710
com_on_air_cs: cftable_entry[0].timing.ready 0x989680
com_on_air_cs: cftable_entry[0].io.flags     0x4
com_on_air_cs: cftable_entry[0].io.nwin      0x0
com_on_air_cs: cftable_entry[0].irq.IRQInfo1 0x70
com_on_air_cs: cftable_entry[0].irq.IRQInfo2 0xffff
com_on_air_cs: cftable_entry[0].mem.flags    0xc9
com_on_air_cs: cftable_entry[0].mem.nwin     0x2
com_on_air_cs: cftable_entry[0].mem.win[0].len       0x1000
com_on_air_cs: cftable_entry[0].mem.win[0].card_addr 0x0
com_on_air_cs: cftable_entry[0].mem.win[0].host_addr 0x0
com_on_air_cs: cftable_entry[0].mem.win[1].len       0x1000
com_on_air_cs: cftable_entry[0].mem.win[1].card_addr 0x0
com_on_air_cs: cftable_entry[0].mem.win[1].host_addr 0x0
com_on_air_cs: cftable_entry done after 1 tuples
com_on_air_cs: funcid.func         0xfe
com_on_air_cs: funcid.sysinit      0x0

More information about the linux-pcmcia mailing list