2.6.x kernels & PCI-to-PCMCIA bridges [again]
Russell King
rmk+pcmcia at arm.linux.org.uk
Wed Jun 30 08:45:27 EDT 2004
On Wed, Jun 30, 2004 at 09:31:56PM +0900, Komuro wrote:
> 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
> = 0
> strange and wrong!
strange and correct. Work it back to the original relationship given
in the data sheet.
26-bit card address = memory address + 26-bit offset address
which is:
= 0xa0000000 + 0x00000000
And 0xa0000000 as a 26-bit address is 0x00000000. This happens to
be your card_start.
Therefore, your example _is_ correct.
--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of: 2.6 PCMCIA - http://pcmcia.arm.linux.org.uk/
2.6 Serial core
More information about the linux-pcmcia
mailing list