Re: Q: PCI Driver ioremap

From: Jeff Garzik (jgarzik@mandrakesoft.com)
Date: Wed Feb 20 2002 - 17:03:09 EST


David Stroupe wrote:
>
> I am creating a PCI driver for a custom card and want to write 0xffff to
> a location offset from the base by 0x48 and
> have the following code:
>
> <snip>
> unsigned int io_addr;
> unsigned int io_size;
> void* base;
> pci_enable_device (pdev)
> io_addr = pci_resource_start(pdev, 0);
> io_size = pci_resource_len(pdev, 0);
> if ((pci_resource_flags(pdev, 0) & IORESOURCE_MEM)){
> if(check_mem_region(io_addr, io_size))
> DBG("Already In Use");//this is never reached
> request_mem_region(io_addr, io_size , "Card Driver");

In 2.4 and later, check request_mem_region return value, and never call
check_mem_region.

> base=ioremap(io_addr, io_size);
> if(base==0)
> DBG("memory mapped wrong\n");//this is never reached
> writew(0xffff, base + 0x48);
> <snip>
>
> The card is found, io_addr = 0xe9011000 and io_size = 0x200.
>
> The write is unsuccessful or at least the data never reaches the card.
> What am I doing incorrectly?

Looks correct to me... maybe you need to do
        readw(base + 0x48)
to flush the transaction?

-- 
Jeff Garzik      | "Why is it that attractive girls like you
Building 1024    |  always seem to have a boyfriend?"
MandrakeSoft     | "Because I'm a nympho that owns a brewery?"
                 |             - BBC TV show "Coupling"
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sat Feb 23 2002 - 21:00:28 EST