PCMCIA support for 860

Shuangjun Zhu r44089 at email.sps.mot.com
Tue May 23 19:58:13 EST 2000


In arch/ppc/kernel/m8xx_setup.c:m8xx_ide_init_hwif_ports()
==============================================================
 base = (unsigned long) ioremap(PCMCIA_MEM_ADDR, 0x200);

 /* For the M-Systems ATA card, the first 8 registers map 1:1.
  * The following register, control/Altstatus, is located at 0x0e.
  * Following that, the irq offset, is not used, so we place it in
  * an unused location, 0x0a.
  */
 *p++ = base + 8;
=================================================================
This code means that ide_ioreg_t save the value as VMA, such 0xCxxxxxxx,
but in include/asm/io.h, it defined

#define outb(val, port)  out_8((unsigned char *)((port)+_IO_BASE), (val))

it uses the port as register offset, such as 0x10.

So, code access illegal address in macro
 SELECT_DRIVE in drivers/block/ide-probe.c: do_probe()



>
>In arch/ppc/mm/init.c, I have iorempa(_IO_BASE,_IO_BASE_SIZE),
>which _IO_BASE = 0x80000000,
>
>in macro SELECT_DRIVE in drivers/block/ide-probe.c: do_probe()
>OUT_BYTE((drive)->select.all, hwif->io_ports[IDE_SELECT_OFFSET])
>equal to OUT_BYTE((drive)->select.all, 0x80000000),
>then system illegal access, so what's wrong?
>
>Thanks in advanced!
>
>>
>>Hi,
>>
>>
>>
>>I recompiled the kernel (2.2.13, including fpu, damm, bossek patches) and
>>restarted it.
>>Then I used the rc.pcmcia to set the modules up. It fails because of...
>>
>>I found that system acess the illegal address 0x80000000,
>>in macro SELECT_DRIVE in drivers/block/ide-probe.c: do_probe()
>>
>>--------------------------------------------------------------------------
>>bash# ./rc.pcmcia start
>>Starting PCMCIA services: modulesLinux PCMCIA Card Services 3.1.10
>>  kernel build: 2.2.13 #496 Fri May 19 11:14:29 CST 2000
>>  options:  none
>>m8xx_pcmcia: Version 0.03, 14-Feb-2000, Magnus Damm
>>m8xx_pcmcia: FADS using SLOT_B with IRQ 13.
>> cardmgr.
>>H<30>Jan  1 00:35:21 cardmgr[131]: starting, version is 3.1.10
>>bash# A<30>Jan  1 00:35:22 cardmgr[131]: watching 1 sockets
>>A<30>Jan  1 00:35:22 cardmgr[131]: initializing socket 0
>>I<30>Jan  1 00:35:22 cardmgr[131]: socket 0: ATA/IDE Fixed Disk
>>a<30>Jan  1 00:35:22 cardmgr[131]: executing: 'insmod
>>/lib/modules/2.2.13/pcmci'
>>probing for hda: present=0, media=32, probetype=ATA
>>
>>
>>
>>
>
>
>
>


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





More information about the Linuxppc-embedded mailing list