[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [rtl] ioremap problem
Frederic,
I am not sure if I can help, but I can suggest a few things to try:
> ... description of problem deleted...
> ... Code which obviously finds the PCI device deleted...
>
> pci_read_config_dword (dev,0x20,&val);
> LOOKUP = ioremap(val,(u32)0x40000);
> #ifdef DEBUG
> printk("@LOOKUP = 0x%x %x\n",LOOKUP,val);
> #endif
> if(check_region(*LOOKUP,0x40000)) {
> printk("Piraq Lookup Table is locked by someone else\n");
> }
> request_region(*LOOKUP,0x40000,"PII_lookup");
Have you tried check_mem_region and request_mem_region? They would
seem to be the appropriate incantations here. Alternatively, if you know
that you are the only one using the board you can just ignore the
check/request mechanisms entirely. I know that this is bad form, but I am a
fan of expedience over form in such cases.
I would also use the mnemonics for the PCI config words, rather than
the explicit numbers, e.g., PCI_BASE_ADDRESS_4 for 0x20. These are defined
in <linux/pci.h>. Who knows what you may find on other architectures.
> Under /proc/ioports I can see all my request except the one for the
> LOOKUP.
I believe that your request_regions for the other areas are just
getting lucky. /proc/ioports dutifully reports whatever has been requested
and approved (I expect). Try the check_mem_region / request_mem_region and
see if that does not provide a more satisfactory result.
Regards,
Steve