Skip to content
Snippets Groups Projects
Forked from Reform / reform-boundary-uboot
Loading
  • Linus Walleij's avatar
    fca94c3f
    integrator: remove fragile delay loop from PCI code · fca94c3f
    Linus Walleij authored
    
    The reference implementation of the PCI initialization code almost
    everywhere contain this fragile loop of "a few usecs", and its
    use of volatile variables to delay a number of bus cycles is indeed
    uncertain.
    
    Reading the manual "Integrator/AP Users Guide", page 5-15 it is
    clearly stated:
    
    "Wait until 230ms after the end of the reset period before
    accessing V360EPC internal registers. The V360EPC supports the
    use of a serial configuration PROM and the software must wait for
    the device to detect the absence of this PROM before accessing any
    registers. The required delay is a function of the PCI Clock, but
    at the lower frequency (25MHz) is 230ms".
    
    So let's simply wait 230ms per the spec.
    
    This solves the compilation error that looked like this:
    pci.c: In function ‘pci_init_board’:
    pci.c:286:18: warning: variable ‘j’ set but not used
    
    Reported-by: default avatarWolfgang Denk <wd@denx.de>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    fca94c3f
    History
    integrator: remove fragile delay loop from PCI code
    Linus Walleij authored
    
    The reference implementation of the PCI initialization code almost
    everywhere contain this fragile loop of "a few usecs", and its
    use of volatile variables to delay a number of bus cycles is indeed
    uncertain.
    
    Reading the manual "Integrator/AP Users Guide", page 5-15 it is
    clearly stated:
    
    "Wait until 230ms after the end of the reset period before
    accessing V360EPC internal registers. The V360EPC supports the
    use of a serial configuration PROM and the software must wait for
    the device to detect the absence of this PROM before accessing any
    registers. The required delay is a function of the PCI Clock, but
    at the lower frequency (25MHz) is 230ms".
    
    So let's simply wait 230ms per the spec.
    
    This solves the compilation error that looked like this:
    pci.c: In function ‘pci_init_board’:
    pci.c:286:18: warning: variable ‘j’ set but not used
    
    Reported-by: default avatarWolfgang Denk <wd@denx.de>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>