On 11/18/2009 08:54 AM, Peter Stuge wrote: > Oncaphillis wrote: > >> So as far as I understand both the early kernel as well as lspci >> think that the mmio area of the Broadcom chip is located at >> 57100000 only ssb gets the wrong address. It gets set in ssbioremap >> via pci_iomap. >> > After the call to pci_iomap, the physical address (57100000) gets > mapped into a virtual address within the process address space. > > So it's fine. >
Thanks for clarification. Based on the assumption that the IO mapping is correct I had a closer look at sprom_do_read: <snip> int i; for (i = 0; i < bus->sprom_size; i++) { printk(KERN_DEBUG "In sprom_do_read idx:%d\n",i); sprom[i] = ioread16(bus->mmio + SSB_SPROM_BASE + (i * 2)); } </snip> The first ioread16 actually succeeds, only the second one fails. My lspci -vnn tells me that the memory is: Memory at 57100000 (64-bit, non-prefetchable) [size=16K] Could it be that one has to make a ioread32 here since the memory is 64-bit ? I remember very very remotely that in older days it was impossible or even forbidden to read data from addresses which are not a multiple of 2/4/8 what so ever. But that was pre-PCI. Sebastian _______________________________________________ Bcm43xx-dev mailing list Bcm43xx-dev@lists.berlios.de https://lists.berlios.de/mailman/listinfo/bcm43xx-dev