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

Reply via email to