2.6.x kernels & PCI-to-PCMCIA bridges [again]
komurojun at mbn.nifty.com
Wed Jun 30 08:31:56 EDT 2004
>> >Actually, its right. You've programmed the memory start/stop registers
>> >with sys_start and sys_stop. Since card_start = 0, you want accesses
>> >to physical address "sys_start" to correspond with card address
>> >"card_start". So, if card_start = 0, you need to program the offset
>> >register (I365_W_OFF) with -sys_start to achieve the required address
>> >on the PCMCIA bus.
See the following example, please.
We assume that mem->sys_start is 0x0a0000000
and we want mem->card_start = 0.
Note that 0x0a0000000 is 32bit number.
((mem->card_start - mem->sys_start) >> 12) & 0x3fff
= ((0 - 0x0a0000000) >> 12 ) & 0x3fff
= (0x60000000 >> 12) & 0x3fff
= 0x60000 & 0x3fff
strange and wrong!
More information about the linux-pcmcia